- From: Henry S. Thompson <ht@cogsci.ed.ac.uk>
- Date: Mon, 27 Oct 2003 10:24:30 +0000
- To: "Kirchheiner, RSys, DA" <T.Kirchheiner@deutschepost.de>
- Cc: "'www-xml-schema-comments@w3.org'" <www-xml-schema-comments@w3.org>
It is straightforward to do what you want, but it requires at least
two schema documents, as W3C XML Schema restricts each schema document
to a single namespace. I recommend that you read the XML Schema
Primer, particular chapter 5 [1].
Your particular problem is solved as follows:
v.xsd:
<xs:schema targetNamespace="http://www.example.org/ns-v">
<xs:element name="price" type="xs:decimal"/>
</xs:schema>
g.xsd:
<xs:schema targetNamespace="http://www.example.org/ns-g">
<xs:element name="price" type="xs:float"/>
</xs:schema>
master.xsd:
<xs:schema targetNamespace="http://www.example.org/ns-top" xmlns:v="http://www.example.org/ns-v" xmlns:g="http://www.example.org/ns-g">
<xs:import namespace="http://www.example.org/ns-v" schemaLocation="v.xsd"/>
<xs:import namespace="http://www.example.org/ns-g" schemaLocation="g.xsd"/>
<xs:element name="shop">
<xs:complexType>
<xs:sequence>
<xs:element ref="v:price"/>
<xs:element ref="g:price"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
I've used _three_ documents and three namespaces, because your example
didn't make it clear whether 'shop' was in the same namespace as
either of your 'price' elements -- you could combine master.xsd with
e.g. g.xsd if 'shop' is actually in that namespace, in which case only
the import for the 'ns-v' namespace would be required.
Hope this helps,
ht
[1] http://www.w3.org/TR/xmlschema-0/#quartelyReport
--
Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh
Half-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/
[mail really from me _always_ has this .sig -- mail without it is forged spam]
Received on Monday, 27 October 2003 05:24:32 UTC