- From: Schwarzhoff, Kelly <kelly.schwarzhoff@commerceone.com>
- Date: Thu, 6 Sep 2001 07:15:07 -0700
- To: "'ht@cogsci.ed.ac.uk'" <ht@cogsci.ed.ac.uk>
- Cc: "'www-xml-schema-comments@w3.org'" <www-xml-schema-comments@w3.org>
Comments below in KLS tags... -----Original Message----- From: ht@cogsci.ed.ac.uk [mailto:ht@cogsci.ed.ac.uk] Sent: Thursday, September 06, 2001 1:35 AM To: Schwarzhoff, Kelly Cc: 'www-xml-schema-comments@w3.org' Subject: Re: Restrictions and element namespaces "Schwarzhoff, Kelly" <kelly.schwarzhoff@commerceone.com> writes: > I am writing a few schemas using restrictions features, and there seems to > be an ambiguity w.r.t. what the namespace is of local elements. Consider a > schema: > > =============================== > <?xml version="1.0"?> > <schema xmlns="http://www.w3.org/2001/XMLSchema" > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > targetNamespace="http://localhost/kelly" > xmlns:sns="http://localhost/kelly" > elementFormDefault="qualified" > > > > > <element name="RootTag" type="sns:MainType"/> > > <complexType name="MainType"> > <sequence> > <xsd:element name="shipTo" type="sns:ShipType" minOccurs="0" > maxOccurs="unbounded"/> > <xsd:element name="billTo" type="xsd:string" minOccurs="0"/> > </sequence> > <attribute name="currency" type="xsd:string"/> > </complexType> > > <complexType name="ShipType"> > <sequence> > <element name="Shipper" type="xsd:string"/> > </sequence> > </complexType> > > </schema> > ========================= > > Then, in a seperate namespace, we restrict the root type > > ========================= > <schema xmlns="http://www.w3.org/2001/XMLSchema" > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > targetNamespace="http://localhost/two" > xmlns:sns="http://localhost/kelly" > xmlns:tns="http://localhost/two" > elementFormDefault="qualified" > > > > > <complexType name="NewShipType"> > <complexContent> > <extension base="sns:ShipType"> > <sequence> > <element name="City" type="xsd:string"/> > </sequence> > </extension> > </complexContent> > </complexType> > > <complexType name="RMainType"> > <complexContent> > <restriction base="sns:MainType"> > <sequence> > <xsd:element name="shipTo" type="tns:NewShipType" minOccurs="0" > maxOccurs="unbounded"/> > <xsd:element name="billTo" type="xsd:string" minOccurs="0"/> > </sequence> > </restriction> > </complexContent> > </complexType> > </schema> > ========================= The tns:RMainType definition is broken, for two reasons: 1) The sns:MainType definition allows sequences (sns:shipTo*,sns:billTo?). The tns:RMainType definition allows sequences (tns:shipTo*,tns:billTo?). But renaming of elements is not an allowed part of restriction. <KLS> That assumes shipTo is now in the tns namespace (or more specifically, the namespace tns prefix is bound to). I don't see where the spec says that one way or another. Since I am using restriction, I am really restricting the way a previously defined (local) element is used. </KLS> 2) Even if you changed to form="unqualified", which would solve _that_ problem, tns:newShipType is not a restriction of sns:ShipType, it's an extension, which is not allowed. <KLS> Where does the spec say it is not allowed? When thinking about it, tns:newShipType is really a specific type of sns:ShipType. I.e. you can use tns:newShipType whereever sns:ShipType is defined, but you can't use sns:ShipType when tns:newShipType. So, in this sense the fact that the restriction uses the extension (tns:newShipType), not the base (sns:ShipType), is really restricting which types can be used. </KLS> > What is the namespace of the locally declared elements (ex, "billTo"), which > are used in elements of the runtime type {namespace="http://localhost/two", > localname="RMainType"}? The REC is perfectly clear: http://localhost/two. The element declaration is what it is, regardless of what its enclosing type definition may be based on. Consider the alternative -- you wouldn't know whether City was in sns or tns until you knew whether it was being used to extend or restrict. ht -- 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, 6 September 2001 10:13:22 UTC