- 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