[XQuery Talk Mailing List Archive Home] [By Date] [By Thread] [By Subject] [By Author] [Recent Entries] [Reply To This Message]

Get collection context in XQuery

Wolfgang wolfgang at exist-db.org
Fri Feb 6 12:53:27 PST 2009


  Get collection context in XQuery
> I have his XQuery file:
> 
> FOR $x in collection("A","B")
> WHERE ...
> RETURN ?
> 
> If, for example, only the 2.xml and 3.xml were evaluate for TRUE in the 
> WHERE clause, i want to obtain the following XML data:
> 
> <RESULTS>
> <A>2.xml<A>
> <B>3.xml</B>
> </RESULTS>
> 
> What should i put in the RETURN clause?

Function document-uri returns the URI of the document, which - for eXist 
- is the same as the collection path. Using standard xquery functions, 
you could extract the collection and document name as follows:

for $m in (collection('/db/A'), collection('/db/B'))/*
let $col := replace(document-uri(root($m)), '^.*/(.*)/[^/]+$', '$1')
let $doc := replace(document-uri(root($m)), '^.*/([^/]+$)', '$1')
return
   element { $col } { $doc }

Note that fn:collection does only allow one parameter (though older 
versions of eXist accepted more for historical reasons).

Wolfgang


PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2007 All Rights Reserved.