用于限制子节点的XML模式

时间:2011-05-02 12:24:19

标签: xsd

我需要创建xml架构,其中所有节点<foo>必须只包含一个或多个<c1><c2>只有 <main> <foo> <a></a> <b></b> <c1></c1> </foo> <foo> <a></a> <b></b> <c1></c1> </foo> <foo> <a></a> <b></b> <c1></c1> </foo> </main> 出现,如下所示。

<main>
  <foo>
    <a></a>
    <b></b>
    <c2></c2>
  </foo>
  <foo>
    <a></a>
    <b></b>
    <c2></c2>
  </foo>
  <foo>
    <a></a>
    <b></b>
    <c2></c2>
  </foo>
</main>

{{1}}

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

当您遇到“或 - 或”情况时,您的解决方案通常为<xs:choice>。使用maxOccursminOccurs属性可限制元素出现的次数。这些属性的默认值为“1”,如果不添加这些属性,则使用该值。

<foo>元素定义的示例代码段。请注意<xs:choice>maxOccurs="unbounded"

的使用情况
<xs:element name="foo">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="a" type="xs:string />
            <xs:element name="b" type="xs:string />
            <xs:choice>
                <xs:element name="c1" maxOccurs="unbounded" type="xs:string />
                <xs:element name="c2" type="xs:string />
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
</xs:element>