May XPath section 3.2: / and //

  A "/" at the beginning of a path expression is an abbreviation for the
  initial step fn:root(self::node()). The effect of this initial step is
  to begin the path at the root node of the tree that contains the context
  node. If the context item is not a node, a type error is raised. 

Given this, shouldn't a leading / be considered part of Abreviated
syntax and expanded in 3.2.4. It was a primitive in Xpath 1, but Xpath 1
didn't have fn:root().

Also it wasn't clear to me from this description whether a leading / was
supposed to be fn:root(self::node()) or fn:root(self::node())/
in particular whether [] predicates are allowed.
XPath 1 didn't allow /[.....] but it would be useful.


  A "//" at the beginning of a path expression is an abbreviation for
  the initial steps
  fn:root(self::node())/descendant-or-self::node(). The effect of these
  initial steps is to establish an initial node sequence that contains
  all nodes in the same tree as the context node. This node sequence is
  then filtered by subsequent steps in the path expression. If the
  context item is not a node, a dynamic error is raised.

This is wrong. It doesn't select all nodes in the document, attribute
and namespace nodes are not selected.
This appears to be a separate definition of a leading // which is
an unnecessery risk of introducing inconsistencies into the document.
It should surely be the case that a leading // can be defined by
expanding a // as given 3.2.4 and then further expanding the resulting
leading /.





David

________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

Received on Tuesday, 6 May 2003 08:07:20 UTC