Re: XPath 1.0 change proposal

On Mar 14, 2013, at 9:51 AM, James Clark wrote:

> On Thu, Mar 14, 2013 at 10:34 PM, C. M. Sperberg-McQueen <cmsmcq@blackmesatech.com> wrote:
> 
> If there was no intent to define the data model without dependencies on XML 1.0, then at least half the
> text in section 5 is pointless, unnecessary repetition of things that are obvious from the XML spec.
> 
> Please identify this half.  I just reread section 5, and I'm not seeing it.

If we assume (as some readers of the XPath 1.0 spec are inclined to
claim) 

  (a) that every occurrence of a string type that matches the element
      production of the XML 1.0 grammar (as modified by XML Names) is
      a distinct element;

  (b) that the data model is not intended to be independent of the
      serialized XML form;

  (c) that the statement "There is an ordering, document order,
      defined on all the nodes in the document corresponding to the
      order in which the first character of the XML representation of
      each node occurs in the XML representation of the document after
      expansion of general entities" is a normative statement about
      document order, and not a non-normative observation about
      document order as specified elsewhere;

then the following sentences seem to be either unnecessary repetitions
of simple facts that follow from the 1:1 relation between nodes in the
data model instance and constructs in the XML spec, or contradictions
of things normatively stated either in the XML spec, the namespaces
spec, or elsewhere in XPath 1.0 (especially assumption (c)). 

These probably (I haven't actually counted) constitute fewer than 50%
of the clauses in section 5, so I was probably guilty of exaggeration
when I said "half" the text of section 5 is pointless.

1 "Some types of nodes also have an expanded-name." Follows from XML
1.0 + Namespaces 1.0.

2 "an expanded-name ... is a pair consisting of a local part and a
namespace URI." Follows from Namespaces 1.0.

3 "The namespace URI specified in the XML document can be a URI
reference as defined in [RFC2396];" (original text), or "A namespace
name specified in a namespace declaration in an XML document is a URI
reference as defined in [RFC2396];" (erratum). Follows from Namespaces
1.0.

4 "this means it can have a fragment identifier and can be relative."
(original text), or "this implies it can have a fragment identifier
and can be relative." (erratum). Follows from RFC 2396 (but clearly
labeled as such, so it really doesn't count in this enumeration).

5 "Element nodes occur before their children."  Follows from XML 1.0
(together with the immediately preceding normative definition of
document order).

6 "The attribute nodes and namespace nodes of an element occur before
the children of the element."  Follows from XML 1.0 (together with the
normative definition of document grammar).

7 "The namespace nodes are defined to occur before the attribute
nodes."  Contradicts the normative statement of document order.

8 "The relative order of namespace nodes is implementation-dependent."
Contradicts the normative statement of document order.

9 "The relative order of attribute nodes is implementation-dependent."
Contradicts the normative statement of document order.

10 "Nodes never share children: if one node is not the same node as
another node, then none of the children of the one node will be the
same node as any of the children of another node."  Follows from
assumption (a).  

11 "Every node other than the root node has exactly one parent, which
is either an element node or the root node."  Follows from XML 1.0
(assuming the usual usage of the word "parent" in XML contexts).

12 "A root node or an element node is the parent of each of its child
nodes."  (Ditto.)

13 "The element node for the document element is a child of the root
node."  Follows from XML 1.0.

14 "The root node also has as children processing instruction and
comment nodes for processing instructions and comments that occur in
the prolog and after the end of the document element."  Follows from
XML 1.0.

15 "The root node does not have an expanded-name."  Follows from XML
1.0 + Namespaces 1.0.

At this point, this exercise is costing me more tedium than I have
patience for, so I am going to stop.  I will leave the rest of section 5
as an exercise for the reader.

I am sorry that we do not agree as to the quality of work in the XPath
1.0 spec.  I believe it is good work that includes a few simple errors
that are easily fixed, and that the basic structure of the work is
good enough to be worth fixing; you seem to be arguing that it's
shoddy work never intended to be correct or to make good on the
implications of the term "data model", and that any fix would
constitute a major renovation.

Some members of the XSLT WG, I regret to say, also seem to fear that
saying explicitly that the parent axis and sibling axes are acyclic
and that document order is total might introduce contradictions with
the rest of the specification.

Oh, well.


-- 
****************************************************************
* C. M. Sperberg-McQueen, Black Mesa Technologies LLC
* http://www.blackmesatech.com 
* http://cmsmcq.com/mib                 
* http://balisage.net
****************************************************************

Received on Thursday, 14 March 2013 17:56:15 UTC