XSD接受一些孩子0或1次,有些孩子接受N次

时间:2014-12-16 03:53:31

标签: xml xsd xsd-validation

我一直在尝试验证具有以下内容的XML语法:

<Parent>
 <OptionalChild1/>
 <OptionalChild2/>
 <OptionalChild3/>
 <RepeatedChild/>
 <RepeatedChild/>
 <RepeatedChild/>
</Parent>

换句话说,有几个元素可能丢失或存在一次(OptionalChild1,2,3)和另一个可能丢失或存在一次或多次的元素。

所有子元素都应该能够以任何顺序出现。 (除非:如果它有助于使XSD更有可能,我们可以强制执行RepeatedChild元素在可选的元素之后)。

我看不到任何XSD架构来验证这一点。 xsd:all适用于第一组,第二组可能xsd:choice,但我无法找到在父母中执行这两条规则的组合。

1 个答案:

答案 0 :(得分:2)

您可以附加元素声明的最小和最大绑定。

例如,在您的父元素声明中,包含以下内容:

<xsd:sequence>
   <xsd:element name="OptionalChild1" minOccurs="0" />
   <xsd:element name="OptionalChild2" minOccurs="0" />
   <xsd:element name="OptionalChild3" minOccurs="0" />
   <xsd:element name="RepeatedChild" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>

注意:我现在无法访问架构验证程序,但这大概就是您想要的。