[xquery-talk] strange results sequence operators

Florent Georges lists at fgeorges.org
Mon Aug 13 06:08:31 PDT 2012


Robby Pelssers wrote:

  Hi,

>    let $number1 := <number>1</number>
>    let $number2 := <number>2</number>
>    let $number3 := <number>3</number>
>    let $seq1 :=  ($number1, $number2)
>    let $seq2 := ($number2, $number3)
>    return
>      <result>
>        <union>{$seq1 union $seq2}</union>
>        <intersection>{$seq1 intersect $seq2}</intersection>
>        <except>{$seq1 except $seq2}</except>
>      </result>

  Those operators return results in document order, and they come
from different documents, so it's undefined.  You should rather
try something like the following (not tested):

    let $doc :=
          <doc>
             <number>1</number>
             <number>2</number>
             <number>3</number>
          </doc>
    let $number1 := $doc/number[1]
    let $number2 := $doc/number[2]
    let $number3 := $doc/number[3]
    let $seq1 :=  ($number1, $number2)
    let $seq2 := ($number2, $number3)
    return
      <result>
        <union>{$seq1 union $seq2}</union>
        <intersection>{$seq1 intersect $seq2}</intersection>
        <except>{$seq1 except $seq2}</except>
      </result>

  Regards,

-- 
Florent Georges
http://fgeorges.org/
http://h2oconsulting.be/



More information about the talk mailing list