2017-01-25 135 views
0

我在xml中瞭解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" /> 

也不是那麼清楚,我,可以有人指導我,如果我是一個錯誤的道路上會。

預先感謝您。

+0

由於wine元素位於酒廠元素內,爲什麼您需要key/keyref關係?這與遏制關係有不同的語義嗎? –

+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> 

一些重要注意事項:

  • 定義key和元素的身體keyref
  • 使用適當的XPath語法引用您的節點

你可以f在my xsd tutorial中有更多的例子和解釋。