[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
RE: [xml-dev] XML Schema: Chameleon Redefine Pervasiveness Puzzle
- From: "Michael Kay" <mike@saxonica.com>
- To: "'Paul Hermans'" <paul.hermans@amplexor.com>,"'xml-dev'" <xml-dev@lists.xml.org>
- Date: Sat, 5 Apr 2008 19:43:01 +0800
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:paul.hermans@amplexor.com]
> 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: xml-dev-unsubscribe@lists.xml.org
> subscribe: xml-dev-subscribe@lists.xml.org List archive:
> http://lists.xml.org/archives/xml-dev/
> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php
>
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]