- From: Martin Gudgin <marting@develop.com>
- Date: Mon, 7 May 2001 19:26:23 +0100
- To: Grégoire Pau <gpau@acland.fr>, <www-xml-schema-comments@w3.org>
Comments inline ----- Original Message ----- From: "Grégoire Pau" <gpau@acland.fr> To: <www-xml-schema-comments@w3.org> Sent: Monday, May 07, 2001 6:51 PM Subject: Qualification, inheritance and import Dear all, I am currently having trouble with the combined use of inheritance and imports. Let's have an example : - In namespace ns1 : <schema xmlns="http://www.w3.org/2000/10/XMLSchema" xmlns:ns1="http://www.ns1.com" xmlns:ns2="http://www.ns2.com" targetNamespace="http://www.ns1.com"> <element name="A" type="USAddress"/> <complexType name="USAddress"> <complexContent> <sequence> <element name="name" type="string"/> <element name="street" type="string"/> </sequence> </complexContent> </complexType> </schema> - In namespace ns2 : <schema xmlns="http://www.w3.org/2000/10/XMLSchema" xmlns:ns1="http://www.ns1.com" xmlns:ns2="http://www.ns2.com" targetNamespace="http://www.ns2.com"> <import namespace="http://www.ns1.com" schemaLocation="http://www.ns1.com/ns1.xsd"/> <complexType name="Analyst"> <complexContent> <extension base="ns1:USAddress"> <sequence> <element name="phone" type="string"/> </sequence> </extension> </complexContent> </complexType> <!-- for later use --> <element name="email" type="string"/> </schema> Which one of the following document is valid ? - Document 1: <ns1:A xsi:type="ns2:Analyst" xmlns:xsi="http://www....." xmlns:ns1="http://www.ns1.com" xmlns:ns2="http://www.ns2.com"> <ns1:name>John doe</ns1:name> <ns1:street>Lacepede</ns1:street> <ns2:phone>...</ns2:phone> </ns1:A> - Document 2: <ns1:A xsi:type="ns2:Analyst" xmlns:xsi="http://www....." xmlns:ns1="http://www.ns1.com" xmlns:ns2="http://www.ns2.com"> <ns2:name>John doe</ns2:name> <ns2:street>Lacepede</ns2:street> <ns2:phone>...</ns2:phone> </ns1:A> <MJG> Neither! The following would be valid; <ns1:A xsi:type="ns2:Analyst" xmlns:xsi="http://www....." xmlns:ns1="http://www.ns1.com" xmlns:ns2="http://www.ns2.com"> <name>John doe</name> <street>Lacepede</street> <phone>...</phone> </ns1:A> Local element declarations are unqualified by default. Put elementFormDefault='qualified' on the schema element for ns1 and ns2 to make Document 1 valid. </MJG> Then, what about element ref ? Let's define a new schema in a new namespace : <schema xmlns="http://www.w3.org/2000/10/XMLSchema" xmlns:ns2="http://www.ns2.com" xmlns:ns3="http://www.ns3.com" targetNamespace="http://www.ns3.com"> <import namespace="http://www.ns2.com" schemaLocation="http://www.ns2.com/ns2.xsd"/> <complexType name="ModernAnalyst"> <complexContent> <extension base="ns2:Analyst"> <sequence> <element ref="ns2:email"/> </sequence> </extension> </complexContent> </complexType> </schema> Then which one of the following document is valid ? <ns1:A xsi:type="ns3:ModernAnalyst"> xmlns:xsi="http://www....." xmlns:ns1="http://www.ns1.com" xmlns:ns2="http://www.ns2.com" xmlns:ns3="http://www.ns3.com"> <??:name>John doe</??:name> <??:street>Lacepede</??:street> <??:phone>...</??:phone> <ns3:email>...</ns3:email> </ns1:A> <ns1:A xsi:type="ns3:ModernAnalyst"> xmlns:xsi="http://www....." xmlns:ns1="http://www.ns1.com" xmlns:ns2="http://www.ns2.com" xmlns:ns3="http://www.ns3.com"> <??:name>John doe</??:name> <??:street>Lacepede</??:street> <??:phone>...</??:phone> <ns2:email>...</ns2:email> </ns1:A> <MJG> Valid document would be <ns1:A xsi:type="ns3:ModernAnalyst"> xmlns:xsi="http://www....." xmlns:ns1="http://www.ns1.com" xmlns:ns2="http://www.ns2.com" xmlns:ns3="http://www.ns3.com"> <name>John doe</name> <street>Lacepede</street> <phone>...</phone> <ns2:email>...</ns2:email> </ns1:A> If you put elementFormDefault='qualified' on the schema element for ns1 and ns2 the following would be valid; <ns1:A xsi:type="ns3:ModernAnalyst"> xmlns:xsi="http://www....." xmlns:ns1="http://www.ns1.com" xmlns:ns2="http://www.ns2.com" xmlns:ns3="http://www.ns3.com"> <ns1:name>John doe</ns1:name> <ns1:street>Lacepede</ns1:street> <ns2:phone>...</ns2:phone> <ns2:email>...</ns2:email> </ns1:A> Hope this helps, Martin Gudgin DevelopMentor </MJG>
Received on Monday, 7 May 2001 14:27:57 UTC