[xquery-talk] Using Union/Intersect to Combine Two User-Defined
Function Results
Jonathan Robie
jonathan.robie at redhat.com
Tue Mar 25 16:40:40 PST 2008
Wei, Alice J. wrote:
> To answer your question, each of my local:searchresult functions as something like local:searchresult((collection("my")//ad/p[contains(upper-case(.),$search)])
> is a self efficient XML document with several nodes within it. Each of the output is something like:
>
> <ad>
> <head type="main">
> <emph rend="red">FREE</emph>
> </head>
> <p>Thousands of users actual decals for a 2 deuce coupe! You'll receive free
> over 100 different. use on your bike, model car, van, plane, or on glass
> painted surfaces, metal, plastic, etc. </p> </ad>
>
Does local:searchresult() create new nodes? Each of these nodes will
have a new ideintity.
> What I am trying to do here is to combine both of the result sets into one.
> Therefore, if a user intends to see the output of a search term and another term, he would only see the combined result.
> Would you say this is possible?
>
You can certainly do something like this:
let $a := collection("my")//ad/p[contains(upper-case(.),$search,
$b := collection("your")//ad/p[contains(upper-case(.),$search,
$c := collection("my")//ad/p[contains(upper-case(.),$search2,
$d := collection("your")//ad/p[contains(upper-case(.),$search2
return
local:searchresult( $a intersect $b intersect $c intersect $c )
By separating search from construction, you can rely on the identity of
the original nodes.
Hope this helps!
Jonathan
More information about the talk
mailing list