我希望定义一个强制执行以下规则的 XSD(基于 v1.0)......
我有一个parent1元素,它可以有以下子元素child1 、child2和child3。
- parent1可以有child1的 0-1
- parent1可以有child2的0-1
- parent1可以有 0 - child3的无界
项目的顺序并不重要。例如
<parent1>
<child3/>
<child1/>
<child2/>
<child3/>
<child3/>
</parent1>
我已经接近了,但没有雪茄。我能得到的最接近的是执行最小值和最大值,但执行顺序。
<xsd:element name="parent1" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="child1" minOccurs="0" maxOccurs="1"/>
<xsd:element name="child2" minOccurs="0" maxOccurs="1" />
<xsd:element name="child3" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
我尝试过使用all
而不是sequence
,但子元素限制maxOccurs
为 1。我也尝试过使用selection和 amaxOccurs
来替换序列,但这并不限制您可以在下面拥有多少个元素child1
或元素。child2
parent1
编辑:这是针对 XSD v1.0
我找到了一个适用于 XSD 1.1的解决方案,但是当您看到它在 Eclipse 之类的支持中有多好时,我会尝试坚持使用1.0。