Примерно так должно работать:
<?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 для более подробного объяснения различных вариантов.
Поскольку <xs:choice>
имеет атрибуты minOccurs="0"
и maxOccurs="unbounded"
, вы можете повторять этот сценарий «выбрать любой из содержащихся узлов» любое количество раз.
В конце концов, вы можете выбрать любое количество узлов, и каждый раз, вы можете выбрать либо узел 1, либо узел 2 (или более, если вы добавите дополнительные опции к <xs:choice>
)