[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
Re: Redefine and Import used together - is this valid?
- From: ht@inf.ed.ac.uk (Henry S. Thompson)
- To: Danny Vint <dvint@sack.dreamhost.com>
- Date: Tue, 19 Sep 2006 17:19:07 +0100
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Danny Vint writes:
> [not happy depending on optionality of following 'schemaLocation' hint]
Let's go back to your requirements.
Here is a minimal example of your (1) -- (3):
(1) ACORD.xsd:
<xs:schema targetNamespace="http://www.example.com/ACORD">
<xs:complexType name="ACType">
<xs:sequence>
<xs:element name="AElt1"/>
<xs:element name="AElt2"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="ASType">
<xs:restriction base="xs:token">
<xs:enumeration value="red"/>
<xs:enumeration value="white"/>
<xs:enumeration value="blue"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
(2) ACME.xsd:
<xs:schema xmlns:ac="http://www.example.com/ACORD"
targetNamespace="http://www.example.com/ACME">
<xs:import namespace="http://www.example.com/ACORD"
schemaLocation="ACORD.xsd"/>
<xs:element name="MyE" type="ac:ASType"/>
</xs:schema>
(3) AA.xsd:
<xs:schema targetNamespace="http://www.example.com/ACORD"
xmlns:ac="http://www.example.com/ACORD"
xmlns:my="http://www.example.com/ACME">
<xs:import namespace="http://www.example.com/ACME"
schemaLocation="ACME.xsd"/>
<xs:redefine schemaLocation="ACORD.xsd">
<xs:complexType name="ACType">
<xs:complexContent>
<xs:extension base="ac:ACType">
<xs:sequence>
<xs:element ref="my:MyE"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:redefine>
</xs:schema>
So, as you already observed, this works with XSV, but not with all
tools.
The problem arises when ACORD.xsd is processed twice, producing two
conflicting definitions of ACType.
So, to fix this, we want to prevent the double processing. Proposed
solution (I don't have access to the tool you're having trouble with):
remove the offending hint.
That is, change ACME.xsd:
<xs:schema xmlns:ac="http://www.example.com/ACORD"
targetNamespace="http://www.example.com/ACME">
<xs:import namespace="http://www.example.com/ACORD"/>
<xs:element name="MyE" type="ac:ASType"/>
</xs:schema>
This is still a valid schema document. And now processing AA.xsd
should not provoke any conflicts, as only the redefined type
definition will be created.
Hope this helps,
ht
- --
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@inf.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]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.6 (GNU/Linux)
iD8DBQFFEBh8kjnJixAXWBoRAtPMAJ4yRcZAcS9gGluHBa1L2lvbpftpZQCfUB+H
uq5THzzXuL83hDTdyPv7lv4=
=trT+
-----END PGP SIGNATURE-----
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]