Hi Christian, This looks like a clean and sufficient solution to the problem. I will try it out and let you know how it goes. Thanks. /Andy
On Thu, Apr 19, 2012 at 4:37 PM, Christian Grün <christian.gr...@gmail.com>wrote: > Dear Andy, > > sorry for the frightening delay! We haven't been inactive, however: > you have warmed up a frequently discussed limitation of XQuery Update, > and after a longer discussion, we found a solution that complies to > the semantics of the XQuery Update spec., but still gives you a > solution to return results from an updating query. > > The solution is a new function db:output() [1], which caches its > argument at runtime and returns the result after all update operations > have been processed. If a node is passed on as argument, it is copied > in main memory to avoid that it will be modified or deleted in a > pending update operation. The db:output() function itself is marked > "updating", which means that it can only be used in combination with > other updating operations. > > Beside that, we have now defined all functions that return no value as > "vacuous", which means they can now be used along with other updating > operations. This way, you can e.g. perform update operations and call > file:append(...) to write information to a log file in a single query. > > I have just updated our snapshots; feedback is welcome. > Christian > > [1] http://docs.basex.org/wiki/Database_Module#db:output > [2] http://docs.basex.org/wiki/Releases#Stable_Snapshots > ___________________________ > > On Fri, Apr 13, 2012 at 2:54 PM, Andy Bunce <bunce.a...@gmail.com> wrote: > > Musing on the the usefulness of actions that update the database and > return > > something, specifically in a web server with Xforms context, and the > absence > > of XQuery scripting. I have been playing around with things like the > > following: > > > > let $s:=util:eval(' > > let $x:=copy $c:=db:open("listman","1.xml") > > modify (replace value of node $c/updated with current-dateTime()) > > return $c > > return db:replace("listman","1.xml",$x) > > ') > > return db:open("listman","1.xml") > > > > This works, but is it likely to stop working in the future? Is there a > > better way? > > > > /Andy > > > > _______________________________________________ > > BaseX-Talk mailing list > > BaseX-Talk@mailman.uni-konstanz.de > > https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk > > >
_______________________________________________ BaseX-Talk mailing list BaseX-Talk@mailman.uni-konstanz.de https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk