У меня есть схема XSD, которую я использую для проверки файлов XML.
В схеме XSD я создал сложный тип, содержащий группу атрибутов и выбор, который сам содержит «_output», повторяющийся элемент.
Мой сложный тип:
<xs:complexType name="base_action">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="_output" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attributeGroup ref="action"/>
</xs:complexType>
У меня также есть другие элементы (с собственными дочерними элементами), наследующие от этого сложного типа.
Пример такого наследующего элемента:
<xs:element name="ex_elem" minOccurs="0">
<xs:complexType>
<xs:complexContent>
<xs:extension base="cockpit_base_action">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="to" minOccurs="0"/>
<xs:element name="from" minOccurs="0"/>
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
Теперь в XML это будет работать:
<ex_elem>
<_output/>
<from>0</from>
<to>1</to>
</ex_elem>
Но не это:
<ex_elem>
<from>0</from>
<_output/>
<to>1</to>
</ex_elem>
Или это :
<ex_elem>
<from>0</from>
<to>1</to>
<_output/>
</ex_elem>
Насколько я понимаю, выбор из сложного типа не может смешиваться с выбором наследуемого элемента. Это проблема для меня, потому что есть ситуации, когда я хотел бы поместить _output где-нибудь еще, кроме как вверху.
Я хотел бы иметь возможность использовать элемент, не беспокоясь о последовательности. Есть ли способ сделать это?