我正在编写一个用于验证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>
这不起作用。
提前谢谢
答案 0 :(得分:0)
最简单的方法是将所有&lt; city /&gt;换行名为&lt; cities /&gt;的内容中的元素,最大出现次数为1.删除该组,并使用复杂类型描述&lt; state /&gt;的内容模型是&lt; xsd:all /&gt;。
您必须解决的限制是&lt; xsd:all /&gt;下的任何粒子合成器不得重复(maxOccurs =“1”)。