Hi folks, When the xml:base support was added to the parser, a means for testing that support was found by integrating xml:base attributes into the personal-schema.xml sample. While this is good in itself (testing is always good :) ), the trouble is that personal.xsd wasn't modified to permit the presence of xml:base on elements.
Since the parser doesn't complain about this, it's not surprising that no one seems to have noticed this previously. The fact that the parser *should* complain about this is illustrated by (for example) section 2.12 of the XML 1.0 2nd edition [1] where xml:lang (xml:base is discussed elsewhere) is clearly required to be declared explicitly. In XML schema, the situation is also quite clear: although namespace declarations may not be declared in a schema (as discussed in section 3.2.1 [2]), the normative schema for schemas explicitly imports a schema defining the xml:* attributes, so that they may be used in the schema itself. The documentation of the relevant <import> states: "Get access to the xml: attribute groups for xml:lang as declared on 'schema' and 'documentation' below". So it seems there's no doubt that the parser's being more lax than it should be. I don't propose to fix that bug here, but I am attaching a patch for personal.xsd that enables it to properly validate personal-schema.xml. To avoid people having to be connected to the network whenever they play with this file, I've used the form of <xs:import/> that doesn't have a schemaLocation hint (in other words, the form that simply declares that components from that namespace will be expected in the schema); I've then used attribute wildcards on the elements in personal-schema.xml that make use of xml:base. It's rather a nice bi-product of this, I think, that we now have an <xs:annotation> in personal.xsd, as well as atttribute wildcards; so you could argue there's good didactic reasons to put this fix down as well as practical ones. :) Anyway, if someone wouldn't mind committing this, that would be wonderful. Thanks! Neil [1]: http://www.w3.org/TR/REC-xml#sec-lang-tag [2]: http://www.w3.org/TR/xmlschema-1/#Attribute_Declaration_details Index: personal.xsd =================================================================== RCS file: /home/cvs/xml-xerces/c/samples/data/personal.xsd,v retrieving revision 1.4 diff -u -r1.4 personal.xsd --- personal.xsd 6 Dec 2001 17:45:01 -0000 1.4 +++ personal.xsd 1 Apr 2003 22:27:59 -0000 @@ -1,6 +1,17 @@ <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'> + <xs:import namespace="http://www.w3.org/XML/1998/namespace"> + <xs:annotation> + <xs:documentation> + The schemaLocation of the relevant file is + "http://www.w3.org/2001/xml.xsd"; however, + we don't want to assume people are always + connected to the 'net when playing with this file. + </xs:documentation> + </xs:annotation> + </xs:import> + <xs:element name="personnel"> <xs:complexType> <xs:sequence> @@ -43,6 +54,7 @@ </xs:simpleType> </xs:attribute> <xs:attribute name="salary" type="xs:integer"/> + <xs:anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="skip"/> </xs:complexType> </xs:element> @@ -52,12 +64,29 @@ <xs:element ref="family"/> <xs:element ref="given"/> </xs:all> + <xs:anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="skip"/> </xs:complexType> </xs:element> - <xs:element name="family" type='xs:string'/> + <xs:element name="family"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base='xs:string'> + <xs:anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="skip"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> - <xs:element name="given" type='xs:string'/> + <xs:element name="given" > + <xs:complexType> + <xs:simpleContent> + <xs:extension base='xs:string'> + <xs:anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="skip"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> <xs:element name="email" type='xs:string'/> Neil Graham XML Parser Development IBM Toronto Lab Phone: 905-413-3519, T/L 969-3519 E-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
