Как я могу создать xsd для игнорирования последовательности элементов?
<root> <a/> <b/> </root>
<root> <b/> <a/> </root>
Мне нужно использовать extension
для причин генерации кода, поэтому я попробовал использовать all
:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.example.com/test"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:t="http://www.example.com/test" >
<xs:complexType name="BaseType">
<xs:all>
<xs:element name="a" type="xs:string" />
</xs:all>
</xs:complexType>
<xs:complexType name="ExtendedType">
<xs:complexContent>
<xs:extension base="t:BaseType">
<xs:all> <!-- ERROR -->
<xs:element name="b" type="xs:string" />
</xs:all>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="root" type="t:ExtendedType"></xs:element>
</xs:schema>
Этот xsd недействителен, хотя в <!-- ERROR -->
сообщается следующая ошибка:
cos-all-limited.1.2: вся модельная группа должна появиться в частице с {min встречается} = {max встречается} = 1, и эта частица должна быть частью пары, которая составляет {тип контента} определение сложного типа.
Документация cos-all-limited.1.2 гласит:
1.2 свойство {term} частицы с {max встречается} = 1, которое является частью пары, которая составляет {тип содержимого} определения сложного типа.
Я действительно не понимаю этого (ни xsd, ни английский носитель:)).
Я делаю не то, что я делаю неправильно, или нет способа добиться этого?