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

Vyacheslav Sedov vyacheslav.sedov at gmail.com
Fri Mar 27 22:46:45 PST 2009


ML 4.0-4 in 3.2 compatibility mode? try (1,2,3,4,5)[2 to 3]
if no error and result is 2 3 then better not care about it - it in history.

On Fri, Mar 27, 2009 at 10:35 PM, David Sewell <dsewell at virginia.edu> wrote:
> For MarkLogic (4.0-4), sets 1 and 2 return the same as set 5 (only p2).
> In other words, [position() eq 2] is parsed differently from [2].
>
> Before filing a bug report I wanted more input, as this seems to be an
> area where informed people disagree about the standard. So I'm
> temporarily resisting my default behavior of assuming that whatever
> Michael Kay says must be true. :-)
>
> David
>
> On Fri, 27 Mar 2009, Vyacheslav Sedov wrote:
>
>> exist 1.2.5 - set 4 is same as set 5 :(
>> anybody can check 1.3?
>> i did not get yet latest 1.3 from svn
>> Also would be helpful same info about Marklogic.
>>
>> 2Ronald for your case you can use brackets <set4>{ ($xml//p)[2] }</set4>
>>
>> With best wishes,
>> Slav
>>
>> On Fri, Mar 27, 2009 at 10:06 PM, Ronald Bourret
>> <rpbourret at rpbourret.com> wrote:
>> > Hmmm. I would have thought that, in each case, only p2 is returned.
>> >
>> > According to the spec, "For each item in the input sequence, the predicate
>> > expression is evaluated using an inner focus, defined as follows: The
>> > context item is the item currently being tested against the predicate. The
>> > context size is the number of items in the input sequence. The context
>> > position is the position of the context item within the input sequence."
>> >
>> > In each case, the input sequence is the result of $xml//p, which is a
>> > sequence of four p elements. Since the position is the position within this
>> > sequence, only p2 is in the second position.
>> >
>> > But I'm sure I could be wrong...
>> >
>> > -- Ron
>> >
>> > David Sewell wrote:
>> >>
>> >> 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.
>> >>
>> >>
>> >>
>> >> ------------------------------------------------------------------------
>> >>
>> >>
>> >> No virus found in this incoming message.
>> >> Checked by AVG - www.avg.com Version: 8.0.238 / Virus Database:
>> >> 270.11.30/2026 - Release Date: 03/27/09 07:13:00
>> >>
>> > _______________________________________________
>> > talk at x-query.com
>> > http://x-query.com/mailman/listinfo/talk
>> >
>>
>
> --
> 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