Hi Christian,

Thank you for this valuable reply!
The following query is really fast. Should I use it also for thousands of possible values instead of creating a temporal collection of the subset?

let $ids := (161,891)
for $x in collection("collection_name")
where db:node-id($x)=$ids
return ...


With kind regards,
Menashè
On 04/30/2015 04:55 PM, Christian Grün wrote:
Hi Menashé,

If you want to directly address XML nodes of a BaseX database, you can
use the db:node-pre/db:open-pre or db:node-id/db:open-id functions.
Please have a look at the Wiki for more information [1].

Hope this helps,
Christian

[1] http://docs.basex.org/wiki/Database_Module#Read_Operations



On Thu, Apr 30, 2015 at 2:49 PM, Menashè Eliezer
<meliezer@ogs.trieste.it> wrote:
Hello,
I'm using Java org.xmldb.api package for accessing the Basex server
(xmldb:basex://...)
After getting the resultSet I need to make further queries about the
requested subset (for reporting, etc.)
I have seen that getId() cannot be used since the Resource will be anonymous
if it is obtained as the result of a query.
Source: http://xmldb-org.sourceforge.net/xapi/api/index.html

The queries are not fixed and are based on end user selection.
I couldn't find a way to have a direct access/reference to a document. In my
case the ID is simply the filename, but it doesn't seem to be so efficient.
I wonder if creating a temporal collection for the subset would be faster
than making query/queries similar to the following example in which there
are only two ids, but I can have thousands of them:

let $ids := ('360836','300139')
for $x in collection("collection_name")
let $filename := substring-after(base-uri($x),'/')
let $id :=  substring-before($filename,'.')
where $id = $ids
return ...

--
With kind regards,
Menashè