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

Michael Rys mrys at microsoft.com
Fri Aug 19 14:27:37 PDT 2005


$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
> 
> 
> 
> _______________________________________________
> talk at xquery.com
> http://xquery.com/mailman/listinfo/talk
> 



More information about the talk mailing list