- From: Schwarzhoff, Kelly <kelly.schwarzhoff@commerceone.com>
- Date: Thu, 6 Sep 2001 09:08:19 -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>
More 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. 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> The spec seems to say otherwise. The rules for element restriction are under the section, "Schema Component Constraint: Particle Restriction OK (Elt:Elt -- NameAndTypeOK)". In particular, the rules for restraining types are: "R's {type definition} is validly derived given {extension, list, union} from B's {type definition} as defined by Type Derivation OK (Complex) (§3.4.6) or Type Derivation OK (Simple) (§3.14.6), as appropriate. " And, following the link for "Type Derivation OK (Complex)", we see it says, "2 One of the following must be true:"..."2.2 B must be D's {base type definition}. " So, in the case below, sns:ShipType is the basetype of tns:newShipType, so the "One of the following must be true" is fulfilled, which means the "Type Derivation OK" is fulfilled. </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 12:06:34 UTC