[xquery-talk] restricting search to different nodes

Peter Mueller Peter.Mueller10 at gmx.de
Thu Jan 5 12:13:18 PST 2006


Hi Wolfgang (and all),

> > I am using the open source native xml database eXist which offers
> > index-based full text search.
> > 
> > My question is whether I can combine for instance the following two
> queries
> > into one or if I have to perform to queries and then merge the results?
> > 
> > for $doc in //text/body/abstract &= 'searchTerm' 
> > return $doc/../..
> > 
> > for $doc in //text/body/metadata1 &= 'searchTerm' 
> > return $doc/../..
> 
> The non-standard '&=' can be used like the standard '='. To query two 
> node sets, you may simply create a union. For example:
> 
> for $doc in //text/body/(abstract | metadata1)[. &= 'searchTerm']

Thank you very much for your quick response!

This works well if the node sets are lying on the same level in the xml
structure. But if I use something like this:

for $doc in //text/body/(abstract | level/metadata1)[. &= 'searchTerm']
return $doc/../..

... I either get the <text> or the <body> element as a result. But I always
need the <text> element. 
Is it somehow possible to adjust the return statements in that it treats the
results differently if they come from different node sets?

I know it's possible to use if - clauses in the return statement but how
would I specify the originating node sets?

Thank you again,
Peter

-- 
10 GB Mailbox, 100 FreeSMS/Monat http://www.gmx.net/de/go/topmail
+++ GMX - die erste Adresse für Mail, Message, More +++


More information about the talk mailing list