comments

Redefine

Redefine is a strange beast. It does not map easily to programming 
languages and the definition of how it is used is, at best, ambiguous. 
For example, if I have 2 schema definitions, the second of which 
redefines some of the contents of the first and have the targetNamespace 
"http://tempuri.org/xsd" and locations

    http://tempuri.org/original.xsd
    http://tempuri.org/redefined.xsd

and I have in another schema which contains

    <xsd:import namespace="http://tempuri.org/xsd" 
schemaLocation="http://tempuri.org/redefined.xsd"/>

then there is ambiguity in which schema will be loaded. The 
schemaLocation is only a hint so a processor that has already loaded the 
original schema for the given targetNS is free to use it from its cache. 
It doesn't have to follow the schemaLocation since it thinks it already 
has the required schema. The opposite could also happen which could lead 
to unexpected results when an application was written to specifically 
use the original schema and changes in redefined are not compatible for 
the application (this could happen where the 2 applications are loaded 
into the same JVM, perhaps an old version and a new version of the same 
application).

redefined has seen almost no support that I have seen because it is 
confusing as above and also because it maps poorly to use by programming 
language tools. I would like to see it dropped from the specification or 
at least flagged as optional.

Pete

Received on Wednesday, 17 December 2003 08:43:44 UTC