Ошибка при определении ограничения complexContent - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть две схемы. Первая схема определяет тип 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 нет.

Пожалуйста, помогите понять, что не так.

1 Ответ

0 голосов
/ 18 ноября 2018

Мне кажется странным, что вы пытаетесь использовать xs:import вместо xs:include.

См. В чем разница между xsd: include и xsd: import? для получения подробной информации.

...