我有以下节点,我想在其中添加属性到所有add
节点。如何将属性添加到节点的所有特定子节点
<test>
<add>x1</add>
<c><add>x2</add></c>
<b att1="x">x</b>
</test>
我试图
functx:add-attributes($test, xs:QName('att1'), 1)
它可以将属性添加到test
节点。但
当我试图
functx:add-attributes($test/add, xs:QName('att1'), 1)
它添加的属性到第一附加节点,但仅返回添加的属性添加节点。然后当我尝试$test//add
它会引发错误。
当我试图
for $add in $test//add
return functx:add-attributes($add, xs:QName('att1'), 1)
它返回两个单独添加节点。现在,如何重构原始节点以仅将属性添加到指定的节点。
我不想改变DB值。我想获得价值,我想用一些自定义属性重构它,并将其呈现给转换。我尝试了第二种方法,但是$ node/node()!本地:更改(。)抛出错误。我不确定操作符“!”的用法。这是错误“意外的标记语法错误,意外的垃圾_,期待Comma_或Rbrace_”。我试着用很多方式改变它,但它不起作用。请回复。我也会努力让它工作。 – Karthick
您使用的是什么版本的MarkLogic? “!”运营商相对较新。你可以在$ node/node()中用'for $ n替换那行。return local:change($ n)' –
非常感谢你,它工作正常。在办公室我们使用ML7。我在我家ML5的地方试过这个样品。在ML7中它正在工作。 – Karthick