Hi Christian, Thanks for that. That's exactly what I was hoping for (and I thought I tried that, but must have done something wrong). Now for the trickier part of the problem: Let's say that I want to add a file to the database, but I want to do it through a server-side XQuery, so that it can validate, etc. Can I do this using the context of the call, or do I have to pass the name of the database as an argument? e.g. db:add("Test", <a/>, "doc.xml") (: Works, but has hardcoded the database :) ==8<========================= let $db := request:parameter('param1') return db:add($db, <a/>, "doc.xml") (: Works, but had to pass the database name as a parameter :) ==8<========================= db:add(., <a/>, "doc.xml") (: Doesn't work, and I didn't expect it to, but would be ideal :) Is there any way to achieve this? There isn't anyway of converting the current context into an expression containing the database (and path) is there? Thanks, Luke -----Original Message----- From: Christian GrĂ¼n <christian.gruen@gmail.com> Sent: Tuesday, 21 January 2020 6:38 PM To: ERRINGTON Luke <Luke.Errington@sydac.com> Cc: basex-talk@mailman.uni-konstanz.de Subject: Re: [basex-talk] Server-side XQuery scripts understanding their "context" Hi Luke,
However, when I execute an XQuery I would like it to run on a particular database. Is there anyway to achieve this without passing the database as an argument to the query?
If you address a database in your URL, it will be bound to the context of your query, which can be obtained via a simple dot (.). For example, run the following query to get the number of documents in your 'Test' database: http://localhost:8984/rest/Test?query=count(.) I have added another example in our documentation [1]. The given query can also be written to a file and evaluated with 'run'. Hope this helps, Christian [1] http://docs.basex.org/wiki/REST#GET_Method