[MarkLogic Dev General] update function
Eric Palmitesta
eric.palmitesta at utoronto.ca
Mon Sep 8 13:12:59 PDT 2008
I'm putting together a function which updates a single element in an xml
file, however I'm getting an error I'm not sure how to deal with.
(WARNING, INCOMING EVAL)
define function update($uri as xs:string, $path as xs:string, $value as
item())
{
let $old-node := xdmp:eval(concat('doc("', $uri, '")', $path))
let $new-node := element { tokenize($path, "/")[last()] } { text {
$value } }
return
xdmp:node-replace($new-node, $old-node)
}
When I run something like:
update('/path/to/file.xml', '/path/to/element', 'new value')
$old-node should be doc("/path/to/file.xml")/path/to/element
$new-node should be <element>new value</element>
I get:
XDMP-UPCONSTNODES: Cannot update constructed nodes
What's strange is if I replace the $new-node and $old-node variables
with their assigned values above, that same call gets me:
XDMP-UPEXTNODES: Cannot update external nodes
What am I missing here?
Eric
More information about the General
mailing list