[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 :=
<root>
<div>
<p>p1</p>
<p>p2</p>
</div>
<div>
<p>p3</p>
<p>p4</p>
</div>
</root>
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