3
我想更新我的xml數據庫(Marklogic)中的XML文檔。我有xml作爲輸入,並希望替換目標xml中存在的每個節點。使用xquery和xdmp更新xml中的多個節點:node-replace
如果一個節點不存在,它會很好,如果它被添加,但那可能是另一個任務。
我的數據庫中的XML:
<user>
<username>username</username>
<firstname>firstname</firstname>
<lastname>lastname</lastname>
<email>[email protected]</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不是類型的節點()
但也許它錯誤的做法反正?
有沒有人可能有示例代碼如何做到這一點?
如果您不打算使用標準XQuery更新,也不使用標準XQuery來獲取更新結果,但是您將使用某些MarkLogic的擴展函數,那麼這是一個`xqueryengines`問題 – 2010-12-22 15:27:35