用于验证xml文档的无序元素的xml架构

时间:2012-01-19 12:42:06

标签: xsd xsd-validation

我正在编写一个用于验证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>

这不起作用。

提前谢谢

1 个答案:

答案 0 :(得分:0)

最简单的方法是将所有&lt; city /&gt;换行名为&lt; cities /&gt;的内容中的元素,最大出现次数为1.删除该组,并使用复杂类型描述&lt; state /&gt;的内容模型是&lt; xsd:all /&gt;。

您必须解决的限制是&lt; xsd:all /&gt;下的任何粒子合成器不得重复(maxOccurs =“1”)。