- From: <bugzilla@wiggum.w3.org>
- Date: Wed, 14 Sep 2005 18:54:20 +0000
- To: www-xml-schema-comments@w3.org
- Cc:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=2191
Summary: R-198: Problem with unions of unions
Product: XML Schema
Version: 1.0
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: XSD Part 2: Datatypes
AssignedTo: cmsmcq@w3.org
ReportedBy: sandygao@ca.ibm.com
QAContact: www-xml-schema-comments@w3.org
The Union SimpleType Definition Schema Component is defined with the followg
properties:
{member type definitions}
The appropriate case among the following:
1 If the <union> alternative is chosen, then [Definition:]define the explicit
members as the type definitions resolved to by the items in the actual value of
the memberTypes [attribute], if any, followed by the type definitions
corresponding to the <simpleType>s among the [children] of <union> if any. The
actual value is then formed by replacing any union type definition in the
explicit members with the members of their {member type definitions}, in order.
2 If the <restriction> option is chosen, then the {member type definitions} of
the {base type definition}.
{facets}
If the <restriction> alternative is chosen, a set of facet components
constituting a restriction of the {facets} of the {base type definition} with
respect to a set of facet components corresponding to the appropriate element
information items among the [children] of <restriction> (i.e. those which
specify facets, if any), as defined in Simple Type Restriction (Facets)
(3.14.3), otherwise the empty set.
I believe that it implies a loss of facet restrictions which is highlighted by
the following example:
<xsd:schema targetNamespace="http:///simple/MySchema.xsd"
xmlns:this="http:///simple/MySchema.xsd"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:simpleType name="mySimpleType1">
<xsd:union memberTypes="xsd:nonNegativeInteger xsd:boolean"/>
<xsd:simpleType>
<xsd:simpleType name="mySimpleType2">
<xsd:restriction base="this:mySimpleType1">
<xsd:enumeration value="true"/>
<xsd:enumeration value="0"/>
<xsd:restriction>
<xsd:simpleType>
<xsd:simpleType name="mySimpleType3">
<xsd:union memberTypes="xsd:negativeInteger this:mySimpleType2"/>
<xsd:simpleType>
<xsd:simpleType name="mySimpleType4">
<xsd:restriction base="this:mySimpleType3">
<xsd:enumeration value="-1"/>
<xsd:enumeration value="0"/>
<xsd:enumeration value="1"/>
<xsd:enumeration value="true"/>
<xsd:enumeration value="false"/>
<xsd:restriction>
<xsd:simpleType>
<xsd:schema>
Since the literal value "1" and the literal value "false" are not in the value
space of mySimpleType2 nor in the value space of negativeInteger, they would
appear to be in error. But a literal interpretation of the definition would
imply that mySimpleType3 is just a union of negativeInteger,
nonNegativeInteger, and boolean and hence "1" and "false" are valid literals.
Isn't this quiet loss of explicit facet restrictions a problem?
Received on Wednesday, 14 September 2005 18:54:55 UTC