- From: Henry S. Thompson <ht@cogsci.ed.ac.uk>
- Date: 20 Feb 2001 17:43:50 +0000
- To: "Andy Clark" <andyclar@us.ibm.com>
- Cc: Jim Trezzo <jim.trezzo@oracle.com>, www-xml-schema-comments@w3.org, "Trezzo,Jim" <JTREZZO@US.ORACLE.COM>
"Andy Clark" <andyclar@us.ibm.com> writes:
> I guess the real problem is the terseness of the XPath subset
> description. It's unclear from the text whether the following
> would be allowed:
>
> x//y/z
> x//y//z
>
> In other words, is the descendant axis only allowed to be
> used before the last element step? If so, then I agree that
> the implementation is simplified.
SOrry for the confusion -- yes, the _only_ proposed allowed use is .//x
> >> The second problem relates to the fact that field values must be
> compared
> >> in the value space based on the attribute/element's datatype. However,
> the
> >> descendant axis introduces ambiguity. For example:
> >> [...]
> >
> > It matches both, that's the whole point of having a scoped selector.
> > And what's the problem, anyway? You've asserted by the above that
> > 'bar' elements are unique wrt their 'baz' attribute's value. So you
> > keep a table of bar attribute's 'baz' attribute's values, and throw an
> > error if you hit one twice. Seems straightforward to me.
>
> But they have different types and it's unclear which type
> should be used for the value space comparison. How can you
> keep a collection of values of different types and still
> perform the correct comparison to ensure uniqueness? I'm
> sorry to keep belaboring this point but it doesn't seem to
> make sense to me.
One implementation strategy would be to simply collect pairs of
[string,type], and to compare equal iff
1) type1=type2 or one is derived from the other;
and
2) the strings compare equal using type-appropriate comparison.
This approach intentionally avoids converting to values, which would
be a perfectly good alternative.
> And I have other questions regarding the subset...
>
> Regarding field examples:
>
> 1) Why is there a sample field specified as "ancestor::x/@"
> when text at the bottom of the subset states directly
> that the verbose form is not allowed and no reverse
> axes are allowed? Does the subset intend to allow
> people to specify fields outside of the element scope
> by using the ancestor axis?
> 2) If ancestor is allowed, why not ".." as long as it is
> followed only by "@" or "x/@"?
> 3) If ancestor is allowed, then we have another ambiguity
> because there may be multiple elements on the ancestor
> axis that match the path. Are all accepted (even if
> they have different types)? Is only the first matched
> value selected?
> 4) Why aren't predicates allowed for fields?
Same answer in virtually all cases -- the only use cases we had or
could envisage were restricted to the cases supported.
> Regarding selector examples:
>
> 5) Did the subset intentionally leave out "." as a valid
> selector expression?
Yes -- no plausible use case came to mind.
> 6) Why the explicit comment to "note only 1 level" for
> the "x/y" example?
> 7) Is there a good reason that "[y]" is allowed? The
> implementation is required to buffer the document in
> order to support this. Take the following example:
Yes, I think we should give that one up.
> 9) Is there any plan to expand the allowed predicates
> to include things like "[4]", "[position()<4]",
> "[@a='hello']", etc?
No -- use cases again.
> In general:
>
> 10) Is there any explicit limit to the length of XPath
> expression used for selectors and fields? It seems
> no but there are places where an explicit length is
> mentioned (e.g. "note only 1 level" comment).
Yes -- in all cases what you see is what you get -- no longer paths
are allowed.
> Is there a newer subset description available? If so, please
> send that to me so that I can direct my questions to the most
> recent document.
Will do.
ht
--
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 Tuesday, 20 February 2001 12:43:56 UTC