Скажите, пожалуйста, как я могу создать схему xsd, которая успешно проверит следующее xml: Действительный XML 1
<?xml version="1.0" encoding="UTF-8"?>
<start xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd">
<list>
<typeA>
<value>test string value 123</value>
</typeA>
<typeB>
<value>test string value 456</value>
</typeB>
<typeC>
<value>test string value 789</value>
</typeC>
</list>
</start>
Действительный XML 2
<?xml version="1.0" encoding="UTF-8"?>
<start xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd">
<list>
<typeB>
<value>test string value 456</value>
</typeB>
<typeC>
<value>test string value 789</value>
</typeC>
</list>
</start>
Действительный XML 3
<?xml version="1.0" encoding="UTF-8"?>
<start xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd">
<list>
<typeC>
<value>test string value 789</value>
</typeC>
<typeC>
<value>test string value 123</value>
</typeC>
</list>
</start>
Действительный XML 4
<?xml version="1.0" encoding="UTF-8"?>
<start xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd">
<list>
<typeC>
<value>test string value 789</value>
</typeC>
</list>
</start>
Недопустимый XML 5 с типами переупорядочения
<?xml version="1.0" encoding="UTF-8"?>
<start xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd">
<list>
<typeB>
<value>test string value 456</value>
</typeB>
<typeC>
<value>test string value 789</value>
</typeC>
<typeA>
<value>test string value 123</value>
</typeA>
</list>
</start>
Я написал XSD, но он не работает для XML с типами переупорядочения (XML 5):
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="typeC">
<xs:complexType>
<xs:sequence>
<xs:element name="value" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="typeB">
<xs:complexType>
<xs:sequence>
<xs:element name="value" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="typeA">
<xs:complexType>
<xs:sequence>
<xs:element name="value" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="start">
<xs:complexType>
<xs:sequence>
<xs:element ref="list"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="list">
<xs:complexType>
<xs:sequence>
<xs:element ref="typeA" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="typeB" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="typeC" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Есть ли другой способ добиться этого?Решение должно работать для 5 различных файлов XML, перечисленных выше.
Заранее спасибо!