У меня есть две схемы.
Первая схема определяет тип BasicSequence
(файл Basic.xsd
).
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://basic-schema.com"
targetNamespace="http://basic-schema.com"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:complexType name="BasicSequence">
<xs:sequence>
<xs:element name="ElementA" type="xs:string"/>
<xs:any />
</xs:sequence>
</xs:complexType>
<xs:complexType name="MySequence1">
<xs:complexContent>
<xs:restriction base="BasicSequence">
<xs:sequence>
<xs:element name="ElementA" type="xs:string"/>
<xs:element name="ElementB" type="xs:string"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:schema>
Во второй схеме я пытаюсь определить тип на основе BasicSequence
:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:basic="http://basic-schema.com"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:import namespace="http://basic-schema.com" schemaLocation="Basic.xsd"/>
<xs:complexType name="MySequence2">
<xs:complexContent>
<xs:restriction base="basic:BasicSequence">
<xs:sequence>
<xs:element name="ElementA" type="xs:string"/>
<xs:element name="ElementB" type="xs:string"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:schema>
Но при разборе я получаю следующую ошибку:
Недопустимый вывод частиц по ограничению - «Производный элемент« ЭлементА »не является действительным ограничением базового элемента» http://basic -schema.com: ЭлементА 'в соответствии с Elt: Elt - NameAndTypeOK.
Как видите, MySequence1
и MySequence2
имеют одинаковую структуру. Но MySequence1
успешно проанализирован, а MySequence2
нет.
Пожалуйста, помогите понять, что не так.