[xquery-talk] some ... satisfies with positional variable

Andrew Eisenberg andrew.eisenberg at us.ibm.com
Fri Aug 19 16:58:34 PDT 2005

Is this what you are looking for?

if (exists(child::tag0[position() > 3]))
then return $fs:dot
else ()

                                                -- Andrew

Andrew Eisenberg
4 Technology Park Drive
Westford, MA  01886

andrew.eisenberg at us.ibm.com
Phone: 978-399-5158    Fax: 978-399-7012

"Benedikt Linse" <linse at cip.ifi.lmu.de> 
Sent by: talk-bounces at xquery.com
08/19/2005 03:21 PM

talk at xquery.com

[xquery-talk] some ... satisfies with positional variable


Here's a question about an XQuery language construct I would appreciate.

in for-clauses it is possible to include a positional variable and return
the context node $fs:dot - or any other node - based on the position of
its child elements.

for $x at $pos in child::tag0 return
    if ($pos > 3) then return $fs:dot

If the context node has more than 4 children, the above expression will
return it more than once. This could be avoided by wrapping the result in
a distinct-doc-order function, but it wouldn't prevent the compiler from
executing extra work, does it?

Without positional variables extra work can be evaded by using the some
... satisfies ... clause:

if (some $x in child::* satisfies (fn:node-name($x) == "tag2")))
then $fs:dot
else ()

This works fine, but I cannot include a positional variable in the
conditional. What I need is a "some ... at ... in ... satisfies ... "
construct similar to the following:

epxr1 =

if (some $x at $pos in child::* satisfies ($pos > 3))
then $fs:dot
else ()

But this is not provided by XQuery. XPath expressions won't help since
they're normalized to for, if-clauses, etc.

Is there a special reason why a "some ... at ... in ... satisfies ..."
construct is not provided by XQuery?

Is there any possibility to express expr1 in a way that no duplicate
elements are returned?

Best regards,


talk at xquery.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://xquery.com/pipermail/talk/attachments/20050819/7c5aedd9/attachment.htm

More information about the talk mailing list