2017-01-25 11 views
0

私はxmlで理解してkey:keyrefと驚いています。key-keyrefで苦労しています

私の構造ここで

<Regions> 
    <Region Name="Simple region name"> 
     <NumberOfWineries>3</NumberOfWineries> 
     <Winery Name="Simple winery"> 
      <City>Simple city</City> 
      <Owner>Simple owner</Owner> 
      <Image photo="img_winary"/> 
      <NumberOfDiffrentWines>2</NumberOfDiffrentWines> 
      <Wines> 
       <Wine Name="Cool wine" Vintage="2003"> 
        <Characteristics> 
         <Color>blue</Color> 
        </Characteristics> 
       </Wine> 
      </Wines> 
     </Winery> 
    </Region> 
    <Region....> 
     ..... 
    </Region> 
</Regions> 

私はワイナリーにワインからkey:keyrefを作ってstruglingています。

私はワイナリーのユニークなidを作って、すべてのワインについてそのIDを参照することを考えていました。それは私が間違った道につもりならば、誰かが私を導くことができ、私にはそれほど明確ではない

<winery id="1" /> 
<wine idref="1" /> 

よう

何か。

ありがとうございます。 exmapleは以下の通りです

+0

ワイン要素がワイナリー要素内にあるため、なぜキー/キーリファレンス関係が必要ですか?これは封じ込め関係とは異なる意味を持つでしょうか? –

+0

@MichaelKay私はちょうど勉強しています。私はkey:keyrefを達成し、それを理解できる限り構造を変更したいと思っています。 –

+0

しかし、 "key:keyrefを使う"は必須条件ではありません。私はそれを使用して達成したいことを理解する必要があります。 –

答えて

0

コード、いくつかの詳細が省略されています

<xs:element name="root" type="Root"> 
    <xs:key name="aKey"> 
     <xs:selector xpath=".//Winery"/> 
     <xs:field xpath="@id"/> 
    </xs:key> 
    <xs:keyref name="aKeyRef" refer="aKey"> 
     <xs:selector xpath=".//wine"/> 
     <xs:field xpath="@wineryRef"/> 
    </xs:keyref> 
</xs:element> 
<xs:complexType name="Root"> 
    <xs:sequence> 
     <xs:element ref="Winery"/> 
    </xs:sequence> 
</xs:complexType> 
<xs:element name="Winery"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="Wines" type="wines"/> 
     </xs:sequence> 
     <xs:attribute name="id" type="xs:string" use="required"/> 
    </xs:complexType> 
</xs:element> 
<xs:complexType name="wines"> 
    <xs:sequence> 
     <xs:element name="wine" type="wine" maxOccurs="unbounded"/> 
    </xs:sequence> 
</xs:complexType> 
<xs:complexType name="wine"> 
    <xs:sequence> 
     <xs:element name="chara" type="xs:string"/> 
    </xs:sequence> 
    <xs:attribute name="wineryRef" type="xs:string"/> 
</xs:complexType> 

いくつかの重要な注意事項:

  • はあなたを参照する要素
  • 使用に適したXPath構文のボディにkeykeyrefを定義しますノード

my xsd tutorialにもっと例と説明があります。