考虑我有两个xmls,xmlA
& xmlB
,我想更新文字内容' xmlA/abc
与xmlB/bcd
。
XMLA:
<root>
<abc>texas</abc>
</root>
xmlB:
<root>
<abc>kansas</abc>
</root>
如果我使用xdmp:node-replace(xmlA/abc/text(), xmlB/bcd/text())
,
节点正在变化,而不是节点内容。那是
XMLA:
<root>
<bcd>kansas</bcd>
</root>
但我想只更改节点的内容。所需的输出是: XMLA:
<root>
<abc>kansas</abc>
</root>
有人可以告诉我如何做到这一点(没有xpath 3.0)?谢谢(Ranjan)。
答案 0 :(得分:2)
您运行的是哪个版本的MarkLogic?我在版本6.0-1.1中测试了以下内容,这似乎按预期工作。当我在节点替换之后检索存储的文档时,我得到'堪萨斯'两次,但是'a.xml'的内部元素没有被触及:
xdmp:document-insert(
'a.xml',
<root>
<abc>texas</abc>
</root>
),
xdmp:document-insert(
'b.xml',
<root>
<bcd>kansas</bcd>
</root>
);
doc('a.xml'),
doc('b.xml');
xdmp:node-replace(
doc('a.xml')/root/abc/text(),
doc('b.xml')/root/bcd/text()
);
doc('a.xml'),
doc('b.xml')
如果您运行的是旧版本的MarkLogic,那么它可能是一个已经修复过的错误..
HTH!
答案 1 :(得分:1)
试试这个:
xdmp:node-replace(
xmlA/abc,
element { "abc" } { xmlB/bcd/text() }
)