我坚持创建一个只允许下一个元素序列的XSD架构:
<root>
<node />
<node />
...
<root>
或
<root>
<wrapper>
<node />
...
</wrapper>
<node />
...
<wrapper>
<node />
...
</wrapper>
<root>
即。一些节点,其中一些可能被包装,一些 - 不是。
这是我已经拥有的东西:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="node" minOccurs="0" maxOccurs="unbounded" type="NodeElement" />
</xs:sequence>
<xs:sequence>
<xs:element name="node" minOccurs="0" maxOccurs="unbounded" type="WrapperElement" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="NodeElement" ></xs:complexType>
<xs:complexType name="WrapperElement" ></xs:complexType>
</xs:schema>
答案 0 :(得分:1)
我错过了什么,或者只是简单的<xs:choice>
是合适的
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="wrapper" />
<xs:element ref="node" />
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="wrapper">
<xs:complexType>
<xs:sequence>
<xs:element ref="node" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="node" type="xs:string" />
</xs:schema>