我想更新我的 xml 数据库 (Marklogic) 中的 XML 文档。我有 xml 作为输入,并且想要替换目标 xml 中存在的每个节点。
如果节点不存在,添加它会很棒,但这可能是另一项任务。
我在数据库中的 XML:
<user>
<username>username</username>
<firstname>firstname</firstname>
<lastname>lastname</lastname>
<email>email@mail.de</email>
<comment>comment</comment>
</user>
$user_xml 的值:
<user>
<firstname>new firstname</firstname>
<lastname>new lastname</lastname>
</user>
到目前为止我的功能:
declare function update-user (
$username as xs:string,
$user_xml as node()) as empty-sequence()
{
let $uri := user-uri($username)
return
for $node in $user_xml/user
return
xdmp:node-replace(fn:doc($uri)/user/fn:node-name($node), $node)
};
首先我不能迭代$user_xml/user
。如果我尝试迭代$user_xml
我会得到异常
arg1 不是 node() 类型
但也许它是错误的方法?
有没有人可能有示例代码如何做到这一点?