- From: Guillaume Lebleu <gl@brixlogic.com>
- Date: Tue, 11 Mar 2008 10:11:08 -0700
- To: xmlschema-dev@w3.org
I know techniques for extensible enumerations in W3C XML Schema 1.0 have
been discussed on this list before (extensively), but I didn't find the
exact technique below, so I thought I'd post it here to get
feedback/comment.
Enumeration types (say, Enumerated_Type) are defined as xs:union between
a Enumerated_Type_Base and Enumerated_Type_Ext in a base XSD file:
<xs:simpleType name="Enumerated_Type">
<xs:union memberTypes="Enumerated_Type_Base Enumerated_Type_Ext"/>
</xs:simpleType>
<xs:simpleType name="Enumerated_Type_Base">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="ExistingValue"/>
...
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Enumerated_Type_Ext">
<xs:restriction base="xs:NMTOKEN"/>
</xs:simpleType>
In the xs:redefine section of a separate extension XSD file redefines
the Enumerated_Type_Ext:
<xs:simpleType name="Enumerated_Type_Ext">
<xs:restriction base="Enumerated_Type_Ext">
<xs:enumeration value="ExtendedValue"/>
</xs:restriction>
</xs:simpleType>
XSLT stylesheets are then optionally used to remove xs:redefine and
xs:union given that many tools (particularly XML/OO language binders) do
not support these constructs.
Thanks in advance,
Guillaume
Received on Tuesday, 11 March 2008 17:11:26 UTC