- From: Henry S. Thompson <ht@cogsci.ed.ac.uk>
- Date: 03 Nov 2000 18:37:04 +0000
- To: <asirv@webmethods.com>
- Cc: "Www-Xml-Schema-Comments@W3. Org" <www-xml-schema-comments@w3.org>, "W3c-Xml-Schema-Ig" <w3c-xml-schema-ig@w3.org>, "Ningang chen" <nchen@webmethods.com>
"Asir S Vedamuthu" <asirv@webmethods.com> writes:
I'm finding the argument hard to follow, so will concentrate on the examples.
> [Example 1] This is a modified example ('cos the original example is
> incorrect, both syntactically and semantically) from Part 2,
Please give us a reference to the original broken example.
> <xsd:element name='size'>
> <xsd:simpleType>
> <xsd:union>
> <xsd:simpleType>
> <xsd:restriction base='xsd:integer'/>
> </xsd:simpleType>
> <xsd:simpleType>
> <xsd:restriction base='xsd:string'>
> <xsd:enumeration value='5'/>
> <xsd:enumeration value='6'/>
> </xsd:restriction>
> </xsd:simpleType>
> </xsd:union>
> </xsd:simpleType>
> </xsd:element>
>
> <size xsi:type='xsd:string'>1</size>
>
> In the above example, 'xsd:string' one of the primitive built-in type is NOT
> VALIDLY DERIVED from the defined union type. Defined union type contains two
> anonymous types. Instance can never NEVER identify one of the members using
> a QName.
Correct. What is the implementation problem -- note an error and move
on.
> <xsd:element name='size'>
> <xsd:simpleType>
> <xsd:union memberTypes='xsd:integer xsd:string'>
> <xsd:pattern value='1'/>
> <xsd:pattern value='(1|2)'/>
> <xsd:pattern value='(small|medium|large)'/>
> </xsd:union>
> </xsd:simpleType>
> </xsd:element>
>
> <size xsi:type='xsd:string'>small</size>
>
> In the above example, 'xsd:string' one of the primitive built-in type is NOT
> VALIDLY DERIVED from the defined union type. Defined union type contains two
> named built-in types. However the lexical space of the newly defined type is
> constrained by the patterns.
I'm not sure what you're getting at here. Stipulate that the
declaration above is corrected syntactically to
<xsd:element name='size'>
<xsd:simpleType>
<xsd:restriction>
<xsd:simpleType>
<xsd:union memberTypes='xsd:integer xsd:string'/>
</xsd:simpleType>
<xsd:pattern value='1'/>
<xsd:pattern value='(1|2)'/>
<xsd:pattern value='(small|medium|large)'/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<size xsi:type='xsd:string'>small</size>
Two things:
1) Your type is empty, I think -- that is, because multiple patterns
are conjoined, you require something impossible to satisfy.
2) Leaving that aside, according to the CR draft, the instance is
valid: 'small' is certainly a string, and 'xsd:string' can appear
because clause 1.2.2.4 of [1] says xsd:string (D) is validly derived
from union(xsd:string, xsd:integer) (B) if:
"1.2.2.4 B's {variety} is union and D is validly derived from a
type definition in B's {member type definitions} given the
subset, as defined by this constraint.
So the CR draft says this instance is OK. I'm not sure whether this
is a catastrophe or not, but if we think it is, the fix is obvious:
amend 1.2.2.4 to either
a) require that the union (B) have no constraining facets of its own;
b) require that the candidate (D) have facets at least as
constraining as the union (B)
I'm not sure which I'd prefer.
> Proposed solution
>
> Remove this xsi:type override from Union Type Definition. This will remove
> related inconsistencies.
That would work too -- it would mean removing 1.2.2.4 as well. I
would rather not do this.
ht
[1] http://www.w3.org/TR/2000/CR-xmlschema-1-20001024/#cos-st-derived-ok
--
Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh
W3C Fellow 1999--2001, part-time member of W3C Team
2 Buccleuch Place, Edinburgh EH8 9LW, SCOTLAND -- (44) 131 650-4440
Fax: (44) 131 650-4587, e-mail: ht@cogsci.ed.ac.uk
URL: http://www.ltg.ed.ac.uk/~ht/
Received on Friday, 3 November 2000 13:37:09 UTC