XSD with elements in any order and unbounded multiplicity

I have a requirement to produce an XSD. Under the root element there can be 0, 1 or multiple occurrences of any of 7 different elements, and these elements can occur in any order.

I can't use sequence, since the elements are not necessarily in a predefined order. This would be a valid schema, but it imposes too severe a restriction:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="data">
<xs:complexType>
<xs:sequence>

I can't use all, since it doesn't allow maxOccurs to be unbounded, so this is an invalid schema:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="data">
<xs:complexType>
<xs:all>
<xs:element name="address" minOccurs="0" maxOccurs="unbounded">

I have a feeling I've come up against another limitation of XSD, but I just thought I'd ask as I am new to XML Schemas.


Use a choice block with a maxOccurs="1" on each element. This will ensure there is at least one of either a, b, or c but no more than one from each.

<xs:choice minOccurs="1" maxOccurs="unbounded">
  <xs:element name="a" maxOccurs="1"/>
  <xs:element name="b" maxOccurs="1"/>
  <xs:element name="c" maxOccurs="1"/>
</xs:choice>

All of the following are valid under this schema:

<root>
    <a/>
</root>

<root>
    <a/>
    <b/>
</root>

<root>
    <b/>
    <a/>
</root>

<root>
    <c/>
    <a/>
</root>

<root>
    <a/>
    <c/>
    <b/>
</root>
链接地址: http://www.djcxy.com/p/34316.html

上一篇: c#根据xsd生成xml提要

下一篇: XSD包含任意顺序的元素和无限多重性