1

我正在编写一个用于验证 xml 文档的 xml 模式。我坚持为 xml 数据的一些无序元素定义一些 complexType 内容。

xml 数据如下所示:

<country name="India">
    <state name="Karnataka">
        <!-- about state -->
        <capital>Bangalore</capital>
        <largestCity>Bangalore</largestCity>
        <districts>30</districts>
        <population>61130704</population>
        <language>Kannada</language>

        <!-- cities in state -->
        <city name="Bijapur">
            <talukas>30</talukas>
            <population>611307</population>
        </city>
        <city name="Belgaum">
                <talukas>30</talukas>
                <population>6113070</population>
        </city>

        <!-- cities will be listed here -->
    </state>

    <state name="Maharashtra">
        <!-- about state -->
        <largestCity>Mumbai</largestCity>
        <capital>Mumbai</capital>
        <population>112372972</population>
        <language>Marathi</language>
        <districts>35</districts>

        <!-- cities in state -->
        <!-- cities will be listed here -->

    </state>
</country>

如上面的 xml 数据所示,每个 'state' 标签下的前五个元素可以以任意顺序出现。

有人可以帮我为这种输入编写 xml 模式定义。我试着写一些这样的东西:

<xs:group name="stateElements">
      <xs:all>
         <xs:element name="capital" type="xs:string"/>
          ....
   <xs:all>
</xs:group>
<xs:element name="state">
   <xs:complexType>
      <xs:sequence>
         <xs:group ref="stateElements"/>
         <xs:element name="city" type="cityType" maxOccurs="unbound"/>
      </xs:sequence>
   <xs:complexType>
<xs:element>

这是行不通的。

先感谢您

4

1 回答 1

0

最简单的方法是将所有 <city/> 元素包装在名为 <cities/> 的东西中,最多出现 1 次。删除该组,并将描述 <state/> 的内容模型的复杂类型设为 < xsd:全部/>。

您必须解决的限制是 <xsd:all/> 合成器下的任何粒子不得重复(maxOccurs="1")。

于 2012-01-19T13:33:10.703 回答