Next in thread → Next in month →

RE: [xml-dev] XML Schema: Chameleon Redefine Pervasiveness Puzzle

From
Michael Kay <>
To
'Paul Hermans' <>, 'xml-dev' <>
Date
2008-04-05T11:43:01Z
ID
<012401c89712$357b2ed0$e4f9a8c0@turtle>
Thread
RE: [xml-dev] XML Schema: Chameleon Redefine Pervasiveness Puzzle
The specification is hopelessly unclear about this kind of situation. My
belief is that a chameleon include creates a copy of the original
definition; your two redefinitions therefore apply to different types and
are therefore compatible with each other. Your schema has the "sought-after"
functionality. However, I think you are in territory where one cannot
criticize products that have interpreted the spec in a different way. I
think schemas that are built making heavy use of xs:redefine are likely to
be fragile and therefore best avoided.

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: Paul Hermans [mailto:] 
> Sent: 04 April 2008 17:12
> To: xml-dev
> Subject: [xml-dev] XML Schema: Chameleon Redefine Pervasiveness Puzzle
> 
> Start Situation
> ----------------
> Schema A: no target namespace
> 1 simpleType "T" being a union of a specific "enumeration of QNames"  
> and "QNames".
> Rationale: The enumeration must be restrictable and/or extensible.
> 
> Schema B: targetnamespace 'B'
> includes Schema A as a chameleon
> hence simpleType "T" becomes part of the namespace 'B': {B}:T 
> one element {B}:a has datatype simpleType {B}:T
> 
> Schema C: targetnamespace 'C'
> includes Schema A as a chameleon
> hence simpleType "T" becomes part of the namespace 'C': {C}:T 
> one element {C}:x has datatype simpleType {C}:T
> 
> Schema D: targetnamespace 'D'
> imports Schema B and Schema C.
> 
> Redefine with 2 schemafiles added
> ---------------------------------
> Schema BB: targetnamespace 'B'
> redefines Schema B
> by extending the enumeration in simpleType {B}:T
> 
> Schema CC: targetnamespace 'C'
> redefines Schema C
> by restricting the enumeration in simpleType {C}:T
> 
> Schema D: targetnamespace 'D'
> imports now schema 'BB' and schema 'CC'
> 
> Functionality sought-after:
> element {B}:a can use a value of the extended enumeration 
> element {C}:x can only use values from the restricted enumeration
> 
> Pervasive impact
> ----------------
> Redefinitions replace the original definitions.
> 
> My question is how far this impact goes.
> Possibility 1: Does the redefinition stop at the level of 
> {B}:T and {C}:T in the two schemas with the targetnamespaces?
> Possibility 2: Or goes it one step further by replacing the 
> chameleon datatype 'T', which leads to a conflict since one 
> redefinition is a restriction and the other is an extension.
> Is there one of the redefenitions that takes priority than?
> Anyhow, if possibility 2 is the case than I cannot achieve 
> with redefine the functionality sought-after (see above).
> 
> Is there another option to implement this feature:
> starting with one template enumeration (union) which can be 
> extended in one namespace and restricted in a second without 
> the use of xsi:type?
> 
> Thanks,
> 
> Paul
> 
> 
> 
> 
> 
> 
> ______________________________________________________________
> _________
> 
> XML-DEV is a publicly archived, unmoderated list hosted by 
> OASIS to support XML implementation and development. To 
> minimize spam in the archives, you must subscribe before posting.
> 
> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
> Or unsubscribe: 
> subscribe:  List archive: 
> http://lists.xml.org/archives/xml-dev/
> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php
>
Next in thread → Next in month →