Qualifying global elements
Posted: Tue Oct 24, 2017 5:17 pm
Hello,
I have a question about qualifying elements in the instance that are globally declared in the schema.
I have the two following schemas:
and
When I create an instance based on Main.xsd schema, using element C as a child of element A (replacing the ##any placeholder), it is valid in Oxygen (and other tools for that matter) with or without the namespace prefix used for element C:
And this is valid as well:
Can you explain why? I always knew that if an element is declared globally in the schema and the namespace is explicit, it has to be qualified in the instance. Why then the <C> without namespace prefix is valid? I’m clearly missing something here.
Thank you for any help,
Ewa
I have a question about qualifying elements in the instance that are globally declared in the schema.
I have the two following schemas:
Code: Select all
<xs:schema xmlns:L="HKJ" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="HKJ" elementFormDefault="unqualified" attributeFormDefault="unqualified">
<xs:element name="Root">
<xs:complexType>
<xs:sequence>
<xs:element name="A">
<xs:complexType>
<xs:sequence>
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="B" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Code: Select all
<xs:schema xmlns:G="XYZ" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="XYZ" elementFormDefault="unqualified" attributeFormDefault="unqualified">
<xs:element name="C">
<xs:complexType>
<xs:sequence>
<xs:element name="D"/>
<xs:element name="E"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Code: Select all
<L:Root xmlns:L="HKJ" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="HKJ Main.xsd">
<A>
<G:C xmlns:G="XYZ" xsi:schemaLocation="XYZ Component.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<D/>
<E/>
</G:C>
</A>
<B>String</B>
</L:Root>
Code: Select all
<L:Root xmlns:L="HKJ" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="HKJ Main.xsd">
<A>
<C xmlns:G="XYZ" xsi:schemaLocation="XYZ Component.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<D/>
<E/>
</C>
</A>
<B>String</B>
</L:Root>
Thank you for any help,
Ewa