[xquery-talk] Question on expected XQuery return per standards

David Sewell dsewell at virginia.edu
Fri Mar 27 14:31:41 PST 2009

Over on another list there has been a discussion of unexpected results
from an XQuery like the following. The issues are how the parser
interprets, in particular, the abbreviated syntax '//' and '[N]' as an
equivalent to '[position() eq N]'.

My belief is that the standard requires that two nodes (p2, p4) should
be returned for result sets 1-4 below, because the interpretation of the
XPath should in each case be identical. Set 5, on the other hand, should
return only p2.

We're seeing different behavior from a couple of XML parsers. Anyone
care to read from the stone tablets on this one?

(: begin query :)

let $xml :=

return (
  <set1>{ $xml/descendant-or-self::node()/p[position() eq 2] }</set1>,
  <set2>{ $xml//p[position() eq 2] }</set2>,
  <set3>{ $xml/descendant-or-self::node()/p[2] }</set3>,
  <set4>{ $xml//p[2] }</set4>,
  <set5>{ $xml/descendant::p[2] }</set5>

(: end query :)

David S.

David Sewell, Editorial and Technical Manager
ROTUNDA, The University of Virginia Press
PO Box 801079, Charlottesville, VA 22904-4318 USA
Courier: 310 Old Ivy Way, Suite 302, Charlottesville VA 22903
Email: dsewell at virginia.edu   Tel: +1 434 924 9973
Web: http://rotunda.upress.virginia.edu/

More information about the talk mailing list