XSD具有任何顺序的元素,并且可能具有有界的多重性

时间:2013-10-29 15:12:49

标签: xml xsd sequence xsd-validation choice

我想创建一个XSD序列,其中元素可以是无序的,但可能具有有界的多重性。 This question类似,但多样性不是我需要的。

<xs:complexType>
  <xs:sequence>
    <xs:choice>
      <xs:element name="a" minOccurs="0" />
      <xs:element name="b" maxOccurs="2" />
      <xs:element name="c" minOccurs="1" />
    </xs:choice>
  </xs:sequence>
</xs:complexType>

例如,我在这里想要任何顺序的a,b和c。但最后我需要最多2 b和最小1 c,并且可能有0或很多a。我怎样才能在XSD中写这个?

1 个答案:

答案 0 :(得分:2)

这可能无法在XSD 1.0中实现:你基本上需要一个xsd:all合成器(滚动到xsd:all示例),其中包含粒子可以有一个maxOccurs&gt; 1.

带有Schematron的XSD 1.0可以解决问题。

XSD 1.1放宽了这个限制;如果您对其中任何一种选择感兴趣,请适当标记问题,我会更新答案。