[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