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

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


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
>



More information about the talk mailing list