我想定义第一个元素是特定类型,后面的元素是任意顺序的一些元素。像这样:
<node>
<!-- always at first -->
<node-data>
...
</node-data>
<!-- other nodes in any order-->
<node3></node3>
<node1></node1>
<node2></node2>
</node>
我无法使用<xsd:sequence>
因为它会强制所有节点按顺序排列。
感谢您的帮助。抱歉我的英语不好。
最佳答案
一个好的起始布局可能如下所示:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="node">
<xs:complexType>
<xs:sequence>
<xs:element name="node-data"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="node3" />
<xs:element name="node1" />
<xs:element name="node2" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
然后,您可以细化类型,在选择下添加更多节点等。如果您想支持通配符,则需要使用 xs:any
。
关于xsd - XML 模式中的订单定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10016044/