- From: <bugzilla@wiggum.w3.org>
- Date: Fri, 30 Nov 2007 04:26:17 +0000
- To: www-xml-schema-comments@w3.org
- CC:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=5297
Summary: Drop restriction of assertions to down-pointing XPaths?
Product: XML Schema
Version: 1.1 only
Platform: Macintosh
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: Structures: XSD Part 1
AssignedTo: cmsmcq@w3.org
ReportedBy: cmsmcq@w3.org
QAContact: www-xml-schema-comments@w3.org
In our design of assertions and conditional type assignment, we have
for some time taken the position that the XPath expressions used
should not point up or left (or right) from the element on which the
assertions are checked (or the type of which is being calculated).
This was not a unanimous decision, if I recall correctly, but one to
which some WG members assented reluctantly.
It seemed clear, when we reached agreement on this point, that the
prohibition was inconvenient, but as far as we could tell it did not
actually affect the expressive power of assertions.
One example used at the time (see
http://lists.w3.org/Archives/Member/w3c-xml-schema-ig/2006Mar/0041.html
for an appearance of this example in WG discussion) was that of the
HTML 'input' and 'form' elements: 'form' is legal only within an
'input' element. A natural way to express the constraint is to
write an assertion of the form
ancestor::html:form
or
count(ancestor::html:form) > 0
in the declaration of the type assigned to the input element. We came
to the conclusion that upward-pointing assertions were not essential
to this scenario, however, when we realized that one could place the
assertion on the HTML element, and formulate it as
count(.//input) = count(.//form//input)
Recently I have become aware of a fallacy in our reasoning, which
leads me to conclude that we reasoned our way to a false conclusion
and that we need to reconsider the decisions based in part on that
conclusion.
HTML is defined as a modular vocabulary, and the forms module is
intended to be usable in arbitrary XML vocabularies, not only in
(X)HTML itself. Placing the assertion on the HTML element does not
guarantee that it will be enforced wherever 'form' and 'input' are
used. There is no element on which the assertion can be placed so
that it reliably enforces the constraint. It appears, then, that we
were wrong to believe that the current form of assertions in XSDL 1.1
could be used to handle the HTML form/input use case.
Under the circumstances, I no longer believe it plausible to forbid
assertions to point upward in the tree, and believe that we should
drop the restriction (and with it, our mechanisms for 'tree trimming'
prior to XPath evaluation).
Received on Friday, 30 November 2007 04:26:26 UTC