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

Benedikt Linse linse at cip.ifi.lmu.de
Sat Aug 20 00:59:57 PDT 2005


I meant the ".". I should have tried it out with Galax first. Thanks anyway.

> $fs:dot should not be accessible in XQuery directly. It is a
> definitional construct of the formal semantics. You would write .
> Instead. Also, for-clauses do not bind the context item. So if your
> queries below work, your engine has a problem.
>
> Best regards
> Michael
>
>> -----Original Message-----
>> From: talk-bounces at xquery.com
>> [mailto:talk-bounces at xquery.com] On Behalf Of Benedikt Linse
>> Sent: Friday, August 19, 2005 12:22 PM
>> To: talk at xquery.com
>> Subject: [xquery-talk] some ... satisfies with positional variable
>>
>> Hello,
>>
>> 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,
>>
>> Benedikt
>>
>>
>>
>> _______________________________________________
>>%



More information about the talk mailing list