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() 型ではありません
しかし、とにかく間違ったアプローチでしょうか?
これを行う方法のサンプルコードを持っている人はいますか?