- From: Chris Lilley <chris@w3.org>
- Date: Fri, 10 Jan 2003 16:13:04 +0100
- To: www-tag@w3.org, noah_mendelsohn@us.ibm.com
- CC: "Bullard, Claude L (Len)" <clbullar@ingr.com>, "'Elliotte Rusty Harold'" <elharo@metalab.unc.edu>
On Thursday, January 9, 2003, 2:40:27 AM, noah wrote:
nuic> I'm somewhat nervous about option 6, and perhaps some of the others, as
nuic> they relate to XML Schema.
I would certainly want any specification of these (as opposed to the
brief thumbnail sketches I gave) to say exactly how they relate to XML
Schema. Ideally, I would like XML Schema to treat such declarations as
contributing directly to the PSVI.
nuic> I think we have roughly the following situation. XML Schema takes an
nuic> Infoset as its input. That Infoset may be produced by a non-validating
nuic> XML processor, a DTD-validating XML processor, or might be a synthetic
nuic> Infoset.
Okay. So, in the case that xml:idAttr (option 6) were added to XML
then the input Infoset would already contain decorations on those
attributes saying that they were of type xsd:ID (assuming a suitable
declaration of the xsd prefix).
nuic> XML schema provides a built in datatype xsd:ID [1]. When used
nuic> in an XML schema as the type of an attribute XML Schema structures
nuic> provides constraint checking analgous to what would happen with DTDs [2].
Yes. So, as the input Infoset would be well formed but not validated,
it might well be that the Schama validation stage would find that
validation constraints were failed. For example
<?xml version="1.0" encoding="UTF-8"?>
<foo xml:idAttr="pling">
<toto pling="x1"/>
<tata pling="x1"/>
<titi pling="x1"/>
</foo>
is well formed, has attributes of type ID and will fail validation
because the value of the ID attribute is not unique.
nuic> As far as I know, this schema-level checking is independent of
nuic> any that might have been done per a DTD.
I believe so.
nuic> As a result of such a validation episode, the processor can
nuic> report in the PSVI that a given attribute has been determined to
nuic> be of type xsd:ID or xsd:IDREF. Furthermore, Schema introduces
nuic> the so-called identity constraint mechanism [3] (key/keyref)
nuic> which is more general than ID/IDREF; I think it's fair to say
nuic> that xsd:ID/xsd:IDREF is provided primarily for backwards
nuic> compatibility, in the sense of allowing reasonably
nuic> straightforward conversion of DTDs to schemas.
Yes; schema allows an element to have multiple keys and have the
identity checked on each of them separately.
nuic> So, schema largely reproduces XML 1.0 ID/IDREF, but it does so using an
nuic> Infoset (which may have already been the result of DTD-validation) as
nuic> input. Thus the notions of ID in XML 1.0 and ID in Schema are
nuic> intentionally similar, but in some sense duplicate each other.
I read this as meaning that, provided a spec for xml:id or xml:idAttr
were defined in terms of its effect on the Infoset, then W3C XML
Schema would be all set to handle such ID declarations without change.
nuic> Option 6 introduces:
nuic> xml:idAttr="name"
nuic> (where name is a sample value.) Question: how should this interact with
nuic> the mechanisms of XML schema. What if a name attribute is declared as
nuic> being of type xsd:Integer.
What happens today if a schema declares two different types for the
same attribute?
nuic> Keep in mind that schema takes Infoset as
nuic> input. Does the assigned ID type now show up in that input infoset?
That would seem to be the right approach.
nuic> What are the right rules for schema processing? Should the type
nuic> reported in the PSVI be xsd:ID (or is there a separate
nuic> xml:IDtype?) for the name attribute?
The former, I would imagine. I don't see any benefit in a separate
type. What happens now if an instance has already been DTD validated
and some of its attributes are IDs? Do they show up as dtd:ID or
xsd:ID?
nuic> This all strikes me as a mess.
I don't see it as a mess; specifically i see it as less of a mess than
the "live with this mess" option.
nuic> Whatever the other pros and cons of option
nuic> 6, I think these anomalies result in part from the fact that XML does not
nuic> really offer the pluggability that would allow schema to participate as a
nuic> first class replacement for DTDs.
I agree - its an optional, post-parsing, post-processing step.
nuic> Accordingly, schema does the best it can running at a separate
nuic> layer, but when we try to re-introduce typing at the XML level
nuic> as well we run the risk of complexity creeping in.
How is this different to the typing that can already occur during
parsing as part of DTD validation?
nuic> I could be
nuic> wrong, but if we go with option 6 I suspect we would probably
nuic> want to rev XML schema to take account of it (and there are all
nuic> sorts of deployement issues in reving XML schema, I would
nuic> think.)
As far as I read your arguments, if correctly specified in terms of
effect on the PPI (Post Parsing Infoset) option 6 would require zero
change to W3C XML Schema.
--
Chris mailto:chris@w3.org
Received on Friday, 10 January 2003 10:13:17 UTC