Xquery 不获取对数据库中XML文档的修改

Xquery 不获取对数据库中XML文档的修改,xquery,marklogic,Xquery,Marklogic,我刚刚开始学习MarkLogic和XQuery。在修改我的一个XML文档的内容时,我遇到了一个非常困难的问题。我似乎无法改变一个元素。以下是我的过程(我必须尽可能地把事情恢复到最基本的状态,以便让它正常工作): Victoria Wilson </ppl_name> 在查询控制台中,我打开了一个选项卡,用于查询一个XML文档的内容: xquery version "1.0-ml"; declare namespace html = "http://www.w3.org/1999/

我刚刚开始学习MarkLogic和XQuery。在修改我的一个XML文档的内容时,我遇到了一个非常困难的问题。我似乎无法改变一个元素。以下是我的过程(我必须尽可能地把事情恢复到最基本的状态,以便让它正常工作):

Victoria Wilson 
</ppl_name>
在查询控制台中,我打开了一个选项卡,用于查询一个XML文档的内容:

xquery version "1.0-ml";
declare namespace html = "http://www.w3.org/1999/xhtml";
xdmp:document-get("C:/Users/Paul/Documents/MarkLogic/xml/ppl/ppl/jdbc_ppl_3790.xml")
Victoria Wilson 
</ppl_name>
这将返回文档,如下所示

Victoria Wilson 
</ppl_name>
假的 ... 3790

Victoria Wilson 
</ppl_name>
我基本上希望用源代码(3065)中的
ppl\u name
元素替换目标(3790)中的
ppl\u name
元素

Victoria Wilson 
</ppl_name>
我运行XQuery-它完成时没有错误(使我知道它已经工作了)-返回值读取
您的查询返回了一个空序列

Victoria Wilson 
</ppl_name>

然后我返回到步骤1中使用的同一选项卡,并重新运行步骤1中使用的XQuery。doc(3790)返回,但它仍然有Victoria Wilson作为
ppl_名称

xdmp:document get
返回的节点是文件系统上文档的内存中节点。它不是来自数据库。不能在内存节点上使用
xdmp:node replace
。这仅适用于驻留在数据库中的节点

Victoria Wilson 
</ppl_name>
您可以使用
xdmp:document insert
插入它。然后它在数据库中,您可以使用
doc
访问它,并使用
xdmp:node replace
更新它。或者,您可以使用内存中的操作来构造具有所需更改的新版本

Victoria Wilson 
</ppl_name>

有关类似问题的先前答案和更多提示,请参阅。

此处
xdmp:document get
返回的节点是内存中的
节点
Victoria Wilson 
</ppl_name>
如果使用
内存元素
导入以下模块

Victoria Wilson 
</ppl_name>
导入模块名称空间mem=”http://xqdev.com/in-mem-update“在mem update.xqy中的“/MarkLogic/appservices/utils/at”

Victoria Wilson 
</ppl_name>
您可以使用
mem:node replace(,)

Victoria Wilson 
</ppl_name>