- From: Henry S. Thompson <ht@inf.ed.ac.uk>
- Date: Tue, 12 Jun 2007 10:10:05 +0100
- To: "Eliot Kimber" <ekimber@innodata-isogen.com>
- Cc: <xmlschema-dev@w3c.org>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Eliot Kimber writes:
> In XML DTDs, one can override the declaration of an attribute declared
> in an external declaration set by declaring the overriding version
> earlier, . . .
> I don't see an obvious way to do with with XSD using redefine.
Depends on the types of the attribute involved. If the new type is a
restriction of the old, then this is straightforward:
baseAR.xsd:
<xs:schema>
<xs:complexType name="b">
<xs:attribute name="a" type="xs:string"/>
</xs:complexType>
</xs:schema>
1AR.xsd:
<xs:schema>
<xs:redefine schemaLocation="baseAR.xsd">
<xs:complexType name="b">
<xs:complexContent>
<xs:restriction base="b">
<xs:attribute name="a" type="xs:token"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:redefine>
</xs:schema>
If the new type is _not_ a restriction of the old type, _and_ it's
optional in the base, you can cheat. This is against the spirit of
the REC, but in practice allowed (I believe):
First we get rid of the attribute:
2AR.xsd:
<xs:schema>
<xs:redefine schemaLocation="baseAR.xsd">
<xs:complexType name="b">
<xs:complexContent>
<xs:restriction base="b">
<xs:attribute name="a" use="prohibited"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:redefine>
</xs:schema>
Then we add it back with the desired type:
3AR.xsd:
<xs:schema>
<xs:redefine schemaLocation="2AR.xsd">
<xs:complexType name="b">
<xs:complexContent>
<xs:extension base="b">
<xs:attribute name="a" type="xs:integer"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:redefine>
</xs:schema>
If this helps, hold your nose and go for it!
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)
iD8DBQFGbmLtkjnJixAXWBoRAhgDAJ42zqyJXnxDDd563PERQF+OzuLYWwCdFHef
oObEhzbTgejT4ykMLo+a2fs=
=BG5E
-----END PGP SIGNATURE-----
Received on Tuesday, 12 June 2007 09:10:23 UTC