- From: C. M. Sperberg-McQueen <cmsmcq@blackmesatech.com>
- Date: Tue, 12 May 2009 09:08:30 -0600
- To: "Costello, Roger L." <costello@mitre.org>
- Cc: "C. M. Sperberg-McQueen" <cmsmcq@blackmesatech.com>, "'xmlschema-dev@w3.org'" <xmlschema-dev@w3.org>
On 12 May 2009, at 06:29 , Costello, Roger L. wrote:
> ...
> Having "lived" for a while with the new <assert> and <alternative>
> elements, I recommend the working group consider the following
> changes to them.
>
> ...
>
> PHILOSOPHY (I DIGRESS)
>
> When I make a decision I typically take into account many factors,
> some of which are not local. For example, I decide whether or not to
> go to the beach based upon how I'm feeling (local factor), the
> weather (external factor) and the traffic conditions (again, an
> external factor).
>
> My point is that making an assertion based on the current element
> and its descendants (i.e. on local information) is not reflective of
> how decisions are made in the real world.
Quite true, though I'm not sure the application to validation is
completely
simple. Your final decision can depend on many factors, some local and
some non-local. Similarly, what your software does can depend on many
factors, some local and some non-local. Validity is just one factor to
consider, and will continue to be just one factor, whether it is
defined to
be local and relatively straightforward to calculate, or non-local and
Turing-complete.
My point is that life is sometimes complicated, and the fact that your
decisions may depend on non-local factors does not in itself seem to
provide
a prima facie argument that document validity must depend on non-local
factors.
>
> PREDICTION (UNINTENDED CONSEQUENCES)
>
> Due to the limitation on what XPath can reference, I predict that
> schema developers will put all assertions on the document's root
> element. In fact, that is what I currently recommend to people:
>
> Due to the limitation on what XPath
> can reference, I recommend all assertions
> be placed on the document's root element.
That seems unnecessarily restrictive, and seems to assume that we always
know in advance which element will serve as document root.
I suspect assertions will be easier to understand and use if the rule
is: place all assertions on the nearest common ancestor of the elements
and attributes referred to in the assertion; sometimes that will be the
outermost element, but not always.
>
> RECOMMENDATION
>
> I respectfully recommend the working group remove the restrictions
> on what XPath can reference in the <assert> and <alternative>
> elements. For the <assert> element I recommend the XPath be allowed
> to reference any part of the document (ancestors, cousins, siblings,
> descendents) as well as external documents using the doc() element.
> For the <alternative> element I recommend the XPath be allowed to
> reference any part of the document except descendents as well as
> external documents using the doc() element.
>
>
> Thank you for your time.
Thank you for your interest in XSD 1.1.
If you would like a formal response from the XML Schema working group,
you will
want to make your recommendation not in a post to xmlschema-dev but by
opening an
issue in the W3C's public instance of Bugzilla, as described in the
'status of
this document' sections of the XSD 1.1 specs:
Comments on this document should be made in W3C's public
installation of
Bugzilla, specifying "XML Schema" as the product. Instructions
can be found at
http://www.w3.org/XML/2006/01/public-bugzilla. If access to
Bugzilla is not
feasible, please send your comments to the W3C XML Schema
comments mailing
list, www-xml-schema-comments@w3.org (archive) Each Bugzilla
entry and
email message should contain only one comment.
That makes it easier for the WG to track comments that require a
formal response.
Speaking for myself, I have a great deal of sympathy for your view:
allowing
assertions to point outside the current element, or even outside the
current
document, can be somewhat more convenient for the schema author. I do
think
(as others have suggested) that you have overlooked the arguments on
the other
side relating to streamability, to implementability and implementation
cost,
and to the conceptual foundations of validity. The uptake of
Schematron shows
pretty clearly that in some situations, reference to arbitrary
locations in
or out of the document does not impose an unacceptable burden; the
lack of
uptake of Schematron in some application areas seems to show pretty
clearly that
there are situations where reference to arbitrary locations does
impose a
burden people are unwilling to accept. They may be right or wrong on
the
technical merits, but one idea behind consensus standards is that you
and
I do not get a chance to impose our views on them.
So far, I have not seen any assertion that requires upward or sideways
reference within the document that cannot be rewritten as a downward-
looking
assertion on an element nearer the root. I do not know if any of the
work
of recent years on XPath evaluation provides a proof that such a
rewrite is
always possible, although it seems intuitively plausible that it may be.
Even if it could be shown that the downward-only restriction on
assertions
caused a loss in expressive power, it might nevertheless be plausible to
argue that the cost in expressive power is outweighed by other factors.
In the absence of any demonstrable loss of expressive power, I predict
that
the compatibility issue for XPath 2.0 and related specs is a clinching
argument: on the one hand, we can be compatible with XPath 2.0 et al.,
or on the other, we can be incompatible in a way that provides, as far
as
we know, some greater convenience but no additional expressive power.
Even
if the incompatibility provided some gain in expressive power, many
people
would turn down that choice because the cost of incompatibility with
XPath
is very high. But without any gain in expressive power? I think the
inconvenience of downward-only assertions is minuscule compared to the
inconvenience of having to rewrite XPath 2.0 and the accompanying specs,
or of having an incompatibility that makes XSD 1.1 unusable for them.
All of the arguments you bring forward were considered by the WG in
the course of design; unless there is some new information to be
considered,
it seems likely that when the WG reexamines the problem area they will
reach the same evaluation of the tradeoffs here as they did the first
time, and each time the question has been re-opened since.
Michael Sperberg-McQueen
--
****************************************************************
* C. M. Sperberg-McQueen, Black Mesa Technologies LLC
* http://www.blackmesatech.com
* http://cmsmcq.com/mib
* http://balisage.net
****************************************************************
Received on Tuesday, 12 May 2009 15:24:32 UTC