I have two schemas.
The first schema defines the type BasicSequence
(file 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>
In the second schema I'm trying to define a type based on 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>
But during parsing I get the next error:
Invalid particle derivation by restriction - 'Derived element 'ElementA' is not a valid restriction of base element 'http://basic-schema.com:ElementA' according to Elt:Elt -- NameAndTypeOK.'
As you can see, MySequence1
and MySequence2
have the same structure. But MySequence1
is successfully parsed and MySequence2
is not.
Please, help to understand what is wrong.