- From: Jeni Tennison <jeni@jenitennison.com>
- Date: Mon, 19 Aug 2002 23:41:50 +0100
- To: public-qt-comments@w3.org
Hi,
(I seem to comment on this appendix in every draft, sorry!)
There are a couple of problems with the schema in Appendix D of the
Data Model WD.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.com/PartSchema"
xmlns="http://www.example.com/PartSchema"
elementFormDefault="qualified">
<xs:element name="part" type="part-type"/>
<xs:complexType name="part-type">
<xs:sequence>
<xs:element name="mfg" type="xs:string"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
<xs:attribute name="name" type="part-name"/>
</xs:complexType>
<xs:simpleType name="part-name">
<xs:restriction base="xsd:string">
<xs:pattern value="[A-Z]{2}-\d{3}-[A-Z]*"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
First, in the part-name simple type definition, the xs:restriction
element has a base attribute with the value 'xsd:string'. That should
be 'xs:string', or you should add a namespace declaration associating
the prefix 'xsd' with the XML Schema namespace.
Second, I think that the pattern for the part-name type should be:
[A-Z]{2}-\d{3}-[a-z]*
At least, in the instance that you claim to be valid against this
schema, the part-name is "NB-401-nutbolt" which doesn't match the
pattern as currently specified.
If you make those changes it validates according to Xerces-J, and by
eye.
There are also a couple of problems in the description of the data
model generated from the instance and the schema.
First, dm:type(A1) (the type of the name attribute) should be
xf:QName-from-uri("http://www.example.com/PartSchema",
"part-name")
shouldn't it? Or was the invalidity on purpose? If it was, then
surely dm:typed-value(A1) should be:
dm:atomic-value("NB-401-nutbolt",
xf:QName-from-uri("http://www.w3.org/2001/XMLSchema",
"anySimpleType"))
and dm:type(A1) should be:
xf:QName-from-uri("http://www.w3.org/2001/XMLSchema",
"anySimpleType")
Second, dm:string-value(A2) (the string value of the
xsi:schemaLocation attribute) seems to have a '\' in it? I'm not sure
what that's doing there, or is it meant to indicate that there's an
insignificant line break?
Finally, in the picture, the schemaLocation attribute should probably
be called xsi:schemaLocation, since the other qualified nodes use the
prefix to indicate their namespace.
As it stands, this example is fairly straight-forward. It would be
great if this example could be turned into something that really
demonstrated some of the stickier features of the data model, such as:
- partial validity
- union types
- list types
- lists of unions
- unions of lists
- whitespace normalisation of values
- the effect of xml:base
- anonymous types
- a schema with more than one level in the type hierarchy
I think that such an example would greatly illuminate the spec.
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
Received on Monday, 19 August 2002 18:41:55 UTC