我正在尝试创建一个XSD,并尝试使用以下要求编写定义:
Allow child elements specified to appear only once, but one elements to appear multiple times
Allow child elements to be in any order
示例:
<parent>
<child1/>
<child2/>
<child3/>
<child3/>
</parent>
child1和child2元素必须能够交换订单但不应重复。
答案 0 :(得分:0)
这个简单的v1.0,XSD将需要一个parent
,其中只有一个child1
和一个child2
,任意顺序,任意数量的child3
:< / p>
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="parent">
<xs:complexType>
<xs:sequence>
<xs:element name="child3" minOccurs="0" maxOccurs="unbounded"/>
<xs:choice>
<xs:sequence>
<xs:element name="child1"/>
<xs:element name="child3" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="child2"/>
<xs:element name="child3" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:sequence>
<xs:element name="child2"/>
<xs:element name="child3" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="child1"/>
<xs:element name="child3" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
答案 1 :(得分:0)
在XSD 1.0中一般不可能,除了列出@kjhughes已经完成的所有可能的排列,如果你有超过4个允许的元素子女,那就变得无法管理。
在XSD 1.1中你可以写
<xs:all>
<xs:element name="child1"/>
<xs:element name="child2"/>
<xs:element name="child3" minOccurs="0" maxOccurs="unbounded"/>
</xs:all>