- From: Henry S. Thompson <ht@cogsci.ed.ac.uk>
- Date: 14 Feb 2002 10:56:20 +0000
- To: "Jeffrey Stephenson" <Jeffrey.Stephenson@oracle.com>
- Cc: xmlschema-dev@w3.org, www-xml-schema-comments@w3.org
"Jeffrey Stephenson" <Jeffrey.Stephenson@oracle.com> writes:
Sorry for long delay in answering this. Answers at the end.
> I have a question about the semantics of extending a complexType
> imported from a schema for a different targetNamespace. Here is
> a simplified example of this situation, adapted from the familiar
> purchase order schema in the XML Schema Primer:
>
> Examine the existing schema which defines an "addressType",
> note that elementFormDefault="qualified" is specified :
>
> <schema targetNamespace="http://www.example.com/IPO"
> xmlns="http://www.w3.org/2000/10/XMLSchema"
> xmlns:ipo="http://www.example.com/IPO"
> elementFormDefault="qualified">
>
> <element name="address" type="ipo:addressType" />
>
> <complexType name="addressType">
> <sequence>
> <element name="name" type="string"/>
> <element name="street" type="string"/>
> <element name="city" type="string"/>
> </sequence>
> </complexType>
>
> </schema>
>
> Now examine the following schema in a new namespace
> which imports the address.xsd schema and defines a
> new "contactInfoType" that is an extension of
> "ipo:addressType":
>
> <schema targetNamespace="http://www.example.com/bug"
> xmlns="http://www.w3.org/2000/10/XMLSchema"
> xmlns:ipo="http://www.example.com/IPO"
> xmlns:bug="http://www.example.com/bug"
> elementFormDefault="qualified">
>
> <import namespace="http://www.example.com/IPO" schemaLocation="address.xsd" />
>
> <element name="contactInfo" type="bug:contactInfoType" />
>
> <complexType name="contactInfoType">
> <complexContent>
> <extension base="ipo:addressType">
> <sequence>
> <element name="workPhone" type="string"/>
> <element name="homePhone" type="string"/>
> </sequence>
> </extension>
> </complexContent>
> </complexType>
>
> </schema>
>
> Now the question is, if I use the contactInfo element in an instance
> document, what namespace will I have to specify for the locally
> declared elements? Would a valid instance document look like this:
>
> <contactInfo xmlns="http://www.example.com/bug" >
> <name></name>
> <street></street>
> <city></city>
> <workPhone></workPhone>
> <homePhone></homePhone>
> </contactInfo>
Nope.
> or this?
>
> <contactInfo xmlns="http://www.example.com/bug"
> xmlns:ipo="http://www.example.com/IPO" >
> <ipo:name></ipo:name>
> <ipo:street></ipo:street>
> <ipo:city></ipo:city>
> <workPhone></workPhone>
> <homePhone></homePhone>
> </contactInfo>
Yep.
> Some documentation, like the Hide vs. Expose Namespaces document on
> the XML Schemas: Best Practices page
> (http://www.xfront.com/BestPracticesHomepage.html) seem to indicate
> that the second instance document is correct (the namespaces of the
> local elements are split based upon where they were declared).
Yes.
> However, the XML Schema Primer Section 5.4 on importing types seems
> to indicate the opposite. If you examine the "Analyst" extension of
> the USAddress type, and the sample instance document below you will
> see that the sample instance document uses the default namespace of
> the extension schema, and the name, street, and city elements are
> shown as being in that namespace.
I think you're right, the instance example of <analyst> in
section 5.4 of the primer [1] is broken. Thanks.
ht
[1] http://www.w3.org/TR/xmlschema-0/#import
--
Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh
W3C Fellow 1999--2001, part-time member of W3C Team
2 Buccleuch Place, Edinburgh EH8 9LW, SCOTLAND -- (44) 131 650-4440
Fax: (44) 131 650-4587, e-mail: ht@cogsci.ed.ac.uk
URL: http://www.ltg.ed.ac.uk/~ht/
Received on Thursday, 14 February 2002 05:58:08 UTC