[xquery-talk] index-of() behavior

Joe Wicentowski joewiz at gmail.com
Thu Mar 19 11:28:19 PST 2009


Hi all,

Can anyone shed some light on the following question?  I'm trying to
use fn:index-of() to derive the sequential appearance of elements --
in this case, I have 2 <y> elements, and I want index-of() to return
the values 1 and 2:

<results>{
let $content :=
    <x>
        <y n="1">z</y>
        <y n="2">z</y>
    </x>
for $child in $content/y
let $index := fn:index-of($content/y, $child)
return
    <result>{$index}</result>
}</results>

I expected this to return:

<results>
   <result>1</result>
   <result>2</result>
</results>

but instead it returns:

<results>
   <result>1 2</result>
   <result>1 2</result>
</results>

If, on the other hand, I change $content to

    <x>
        <y n="1">z1</y>
        <y n="2">z2</y>
    </x>

Then I get my desired result.  Shouldn't fn:index-of() index against
the unique <y> nodes rather than their text content?  I've tested this
in eXist 1.3 and in oXygen (using Saxon 9).

Thanks,
Joe


More information about the talk mailing list