使用MarkLogic'替换文本内容和属性;s修补程序功能

使用MarkLogic'替换文本内容和属性;s修补程序功能,marklogic,Marklogic,我试图使用Marklogic 8的部分更新(补丁)功能在同一请求中更改元素的属性和元素的文本内容 如果我有这样的文件: <root> <foo a1="1" a2="2" a3="3" a4="4">text content</foo> </root> xdmp:node-replace(fn:doc($uri)/root/foo/text() , text{ "new text" } ) 然而,我似乎无法用补丁做到这一点。使用/roo

我试图使用Marklogic 8的部分更新(补丁)功能在同一请求中更改元素的属性和元素的文本内容

如果我有这样的文件:

<root>
    <foo a1="1" a2="2" a3="3" a4="4">text content</foo>
</root>
xdmp:node-replace(fn:doc($uri)/root/foo/text() , text{ "new text" } )
然而,我似乎无法用补丁做到这一点。使用
/root/foo/text()
会导致关于无效路径的错误,因为修补程序需要可用于定义索引的路径表达式

有没有办法在同一个请求中更改这两个值?

因为(正如您所指出的)您不能专门引用文本元素,所以我认为您需要替换整个元素:

<rapi:patch xmlns:rapi="http://marklogic.com/rest-api">
  <rapi:replace select="/root/foo">
    <foo a1="1" a2="2" a3="new 3" a4="4">new text</foo>
  </rapi:replace>
</rapi:patch>

新文本

元素是属性的父级,因此无法逃避冲突更新

我很害怕。值得一试。。。谢谢
<rapi:patch xmlns:rapi="http://marklogic.com/rest-api">
  <rapi:replace select="/root/foo">
    <foo a1="1" a2="2" a3="new 3" a4="4">new text</foo>
  </rapi:replace>
</rapi:patch>