元素的xml模式构造以任何顺序出现任意次数

时间:2010-07-31 11:04:42

标签: xml schema

我想编写一个xml架构,它可以接受任何可以按任何顺序出现任意次数的元素。像下面的例子。它应该满足所有类似的组合。租约帮助我,并提前谢谢。

示例1

<root>
    <node1> one   </node1>
    <node1> two   </node1>
    <node2> three </node2>
    <node1> four  </node1>
    <node2> five  </node2>
    <node2> six   </node2>
</root>

示例2

<root>    
    <node1> one   </node1>
    <node2> two   </node2>
    <node1> three </node1>
    <node2> four  </node2>
    <node2> five  </node2>
    <node1> six   </node1>
    <node1> seven </node1>
</root>

2 个答案:

答案 0 :(得分:4)

这样的事情应该有效:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="root" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="node1" nillable="true">
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="xs:string">
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
        <xs:element name="node2" nillable="true">
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="xs:string">
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>

基本上,<xs:choice>可让您选择任何一个包含的节点,例如<node1><node2>中的任何一个。有关各种选项的更多说明,请参阅W3Schools' article

由于<xs:choice>具有属性minOccurs="0"maxOccurs="unbounded",因此您可以多次重复“选择任何包含的节点”方案。

最后,您可以选择任意数量的节点,每次都可以选择node1或node2(或者更多,如果您向<xs:choice>添加更多选项)

答案 1 :(得分:1)

marc_s的回答正好击中头部。

当我编写模式时,我发现这个资源非常有用:http://www.w3schools.com/Schema/schema_elements_ref.asp