[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Schemas and namespaces
- From: ht@cogsci.ed.ac.uk (Henry S. Thompson)
- To: "Fabrice DESRE - FT.BD/FTRD/DMI/GRI" <fabrice.desre@francetelecom.com>
- Date: Fri, 07 Sep 2001 12:29:39 +0100
"Fabrice DESRE - FT.BD/FTRD/DMI/GRI" <fabrice.desre@francetelecom.com> writes:
> Hello,
>
> I need some clarification about the use of
> namespaces in schemas.
> Consider the following situation : my first
> schema is a type library; it looks like :
>
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> targetNamespace="http://foobar.com/UTIL/"
> elementFormDefault="qualified"
> attributeFormDefault="unqualified">
> <xsd:complexType name="choice.Type">
> <xsd:simpleContent>
> <xsd:restriction base="xsd:string">
> <xsd:attribute name="name" type="xsd:string" use="required"/>
> </xsd:restriction>
> </xsd:simpleContent>
> </xsd:complexType>
> </xsd:schema>
>
> Now I whant to use this type in another schema :
>
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> targetNamespace="http://foobar.com/APP/"
> elementFormDefault="qualified"
> attributeFormDefault="unqualified"
> xmlns:util="http://foobar.com/UTIL/">
> <xsd:import namespace="http://foobar.com/UTIL/"
> schemaLocation="util.xsd"/>
> <xsd:element name="root">
> <xsd:complexType>
> <xsd:sequence>
> <xsd:element name="info" type="xsd:string"/>
> <xsd:element name="choice" type="util:choice.Type"/>
> <xsd:sequence>
> </xsd:complexType>
> </xsd:element>
> </xsd:schema>
>
> What is the correct instance document ?
>
> This one :
>
> <?xml version="1.0" ?>
> <app:root xmlns:app="http://foobar.com/APP/"
> xmlns:util="http://foobar.com/UTIL/">
> <app:info>Info element</app:info>
> <app:choice name="foo"/>
> </root>
That one.
> Or this one :
>
> <?xml version="1.0" ?>
> <app:root xmlns:app="http://foobar.com/APP/"
> xmlns:util="http://foobar.com/UTIL/">
> <app:info>Info element</app:info>
> <util:choice name="foo"/>
> </root>
>
> What i need is to write a schema that allows the second instance
> to be valid, but I didn't find a clear answer on this subject in
> the spec.
If you want the element in the util namespace, declare it there and
reference it from the content model of app:root, as follows:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://foobar.com/UTIL/"
xmlns:u="http://foobar.com/UTIL/"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xsd:complexType name="choice.Type">
<xsd:simpleContent>
<xsd:restriction base="xsd:string">
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
<xsd:element name="choice" type="u:choice.Type"/>
</xsd:schema>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://foobar.com/APP/"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
xmlns:util="http://foobar.com/UTIL/">
<xsd:import namespace="http://foobar.com/UTIL/"
schemaLocation="util.xsd"/>
<xsd:element name="root">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="info" type="xsd:string"/>
<xsd:element ref="util:choice"/>
<xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
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/