[xquery-talk] Changing the content of an XML document
Piewald, Georg
georg.piewald at siemens.com
Tue Sep 2 13:58:24 PDT 2008
Wolfgang [mailto:wolfgang at exist-db.org] wrote:
>
>> The identity transform will work, and is essentially the
>> same as the
>> transformation function that Wolfgang suggests. However I think a
>> transform expression is easier to understand if eXist
>> supports XQuery
>> Update:
>>
>> copy $a := $tree
>> modify replace value of node $a//subnode with
>> if($condition) then "some text" else "some other text"
>> return $a
>
> Right now, updates are only supported on documents stored in
> the db (we
> directly modify the persistent dom). To use this approach,
> the document
> fragment would need to be saved first, which is probably too much
> overhead for a one-time use.
>
Ok, XQuery Update looks most convenient to me and I don't mind if I
actually do alter the files stored in the db. But I still can't get it
to work, as I don't really understand the required syntax (as described
at http://exist.sourceforge.net/update_ext.html).
I tried the following, which is obviously wrong:
declare function local:alter() {
let $myfile := doc('/db/myfile.xml')
return update value $myfile/subnode/text() with
'some other text'
};
I'm neither sure how to specify the document I want to alter (the doc()
function is surely wrong since it loads the file into memory) nor how to
select the textnode using XPath (is /text() required here?).
Thanks for all the good answers so far!
Georg
More information about the talk
mailing list