Arg ... so your saying index-of causes a string atomization ?
Ug.  I know it wants item*  and uses "eq" as the comparison but didn't realize 
that would stringify documents ... 


Do you know of a sequence function that uses document or node ID's ? 


----------------------------------------
David A. Lee
[email protected]
http://www.xmlsh.org


-----Original Message-----
From: Michael Kay [mailto:[email protected]] 
Sent: Sunday, January 05, 2014 4:21 PM
To: David Lee
Cc: [email protected]; [email protected]
Subject: Re: [xquery-talk] Collections - family relationships


On 5 Jan 2014, at 20:59, David Lee <[email protected]> wrote:

> Given those truths ...
> If you do have a sequence from fn:collection() or another function you *can* 
> find the position of a document in that collection and its 'sibling'
> 
> Note: this may be a horribly inefficient thing to do so buyer beware .... 
> 
> let $c := fn:collection(),
>     $doc := local:pick-a-random-doc( $c ),
>     $prev := $c[ fn:index-of( $c , $doc ) - 1 ]   (: Might be bad to do on 
> the first or  only document :)
>   return $c
> 
> 

This only works if all the documents have distinct string-values.

A more efficient and reliable approach would be

min(for $c at $i in collection() where $c is $doc return $i)

Michael Kay
Saxonica


_______________________________________________
[email protected]
http://x-query.com/mailman/listinfo/talk

Reply via email to