- From: <noah_mendelsohn@us.ibm.com>
- Date: Mon, 29 Mar 2004 11:27:37 -0500
- To: ht@inf.ed.ac.uk (Henry S. Thompson)
- Cc: "'James Taylor'" <JTaylor@nextance.com>, "Michael Kay" <mhk@mhk.me.uk>, xmlschema-dev@w3.org
On <import schemaLocation=".."> and for <xsi:schemaLocation> in an instance the schemalocations are definitely hints. For example, the definition of <import> says[1]: "The ·actual value· of the schemaLocation, if present, gives a hint as to where a serialization of a ·schema document· with declarations and definitions for that namespace (or none) may be found." Reason: there are a number of use cases in which it is important that processors be able to provide their own versions of schemas for particular namespaces, that the composition be controlled outside of the schema documents, or in the case of instances, that you don't trust the instance to name the schema (if you trusted the instance in an eCommerce scenario, why would you validate it?) We consciously made <include> different, on the assumption that breaking the definition of a particular namespace into multiple files was likely to be done by one person or organization which would want some reliability in bringing those pieces together. So, we don't say it's a hint. However, I am not too thrilled with what we do say for <include>, which is [2]: "The ·XML Schema· corresponding to <schema> contains not only the components corresponding to its definition and declaration [children], but also all the components of all the ·XML Schemas· corresponding to any <include>d schema documents. [...] It is not an error for the ·actual value· of the schemaLocation [attribute] to fail to resolve it all, in which case no corresponding inclusion is performed. It is an error for it to resolve but the rest of clause 1 above to fail to be satisfied. Failure to resolve may well cause less than complete ·assessment· outcomes, of course. " My reading is that this comes mighty close to being a roundabout way of saying it's a hint, as you can always claim that you were just sufficiently disconnected from the web that this or that URI didn't resolve. I would have preferred to say "it's an error for the schemaLocation of an include not to resolve." I am actually surprised to find that <redefine> is yet different, since I thought we had intended it to be completely parallel to include. It is in most respects, but the second part of the quote above is not repeated for redefine. Unless I'm missing something, we are silent on the implications of failure of schemaLocation to resolve for redefine. Since we went to such trouble to say that it's not an error for <include> and not to say for the very similar <redefine>, one can almost make the case that the URI MUST resolve for <redefine>. On the other hand, we don't quite say so. At the very least, I think we should clarify the rules for redefine. Henry, if you agree, I think one of us should send a note to the comments list openning an issue. Thank you. Noah [1] http://www.w3.org/TR/xmlschema-1/#composition-schemaImport -------------------------------------- Noah Mendelsohn IBM Corporation One Rogers Street Cambridge, MA 02142 1-617-693-4036 -------------------------------------- ht@inf.ed.ac.uk (Henry S. Thompson) Sent by: xmlschema-dev-request@w3.org 03/29/2004 07:46 AM To: "Michael Kay" <mhk@mhk.me.uk> cc: "'James Taylor'" <JTaylor@nextance.com>, <xmlschema-dev@w3.org>, (bcc: Noah Mendelsohn/Cambridge/IBM) Subject: Re: pervasiveness of a redefine "Michael Kay" <mhk@mhk.me.uk> writes: > # > # > Also, what is the "scope" of a redefine > # > # Unbounded. > # > > OK, so what about: > > <a xsi:noNamespaceSchemaLocation="some.uri"> > <b><c><d> > <a xsi:noNamespaceSchemaLocation="some.other.uri"> > > where some.other.uri references a schema document that contains > > <xs:redefine schemaLocation="some.uri"> > > Which definitions are used to validate each of the two <a> elements? > > I expect the answer will be that these schema locations are only hints, so > it's entirely implementation-defined: yes? Yes, but the interesting question then obviously is "What if the implementation respects the hints?". Answer -- it's an error! The REC protects you against this sort of thing, in section 4.3.2 _How schema definitions are located on the Web_ [1] "4. xsi:schemaLocation and xsi:noNamespaceSchemaLocation [attributes] can occur on any element. However, it is an error if such an attribute occurs after the first appearance of an element or attribute information item within an element information item initially *validated* whose [namespace name] it addresses." ht [1] http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures-with-errata.html#schema-loc -- Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh Half-time member of W3C Team 2 Buccleuch Place, Edinburgh EH8 9LW, SCOTLAND -- (44) 131 650-4440 Fax: (44) 131 650-4587, e-mail: ht@inf.ed.ac.uk URL: http://www.ltg.ed.ac.uk/~ht/ [mail really from me _always_ has this .sig -- mail without it is forged spam]
Received on Monday, 29 March 2004 11:34:52 UTC