[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