0

我正在努力理解key:keyrefxml。

我的结构

<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从葡萄酒到酿酒厂。

我正在考虑制作一个独特id的酒厂,并为每款酒引用该 ID。

就像是

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

我不太清楚,如果我走错了路,有人可以指导我。

先感谢您。

4

1 回答 1

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>

一些重要的注意事项:

  • 在元素的主体中定义keykeyref
  • 使用合适的 XPath 语法来引用您的节点

您可以在我的 xsd 教程中找到更多示例和说明。

于 2017-01-30T14:33:01.057 回答