gpt4 book ai didi

xml - MarkLogic:使用 xquery 获取元素的 xpath

转载 作者:行者123 更新时间:2023-12-03 16:57:20 24 4
gpt4 key购买 nike

我试图找到 xml 中每个元素的 xpath 并将其作为元素值。
我的源文件看起来像:

<root>
<parent1>
<child1></child1>
<child2></child2>
</parent1>

<parent2>
<child1></child1>
</parent2>
</root>

我想要一个像这样的输出:
<root>
<parent1>
<child1> /root/parent1/child1 </child1>
<child2> /root/parent1/child2 </child2>
</parent1>

<parent2>
<child1> /root/parent2/child1 </child1>
</parent2>
</root>

我目前得到的输出为:
<root>
<parent1>
<child1> /root/parent1/child1 </child1>
<child2> /root/parent1/child2 </child2>
</parent1>"

<parent2>
<child1> /root/parent1/parent2/child1 </child1>
</parent2>
</root>

我无法正确遍历以找到 xpath。任何输入都是有值(value)的。

最佳答案

我建议使用 xdmp:path ,也许是这样的:

declare function local:add-paths($nodes) {
for $node in $nodes
return
typeswitch ($node)
case element()
return element { node-name($node) } {
$node/@*,
if ($node/node()) then
local:add-paths($node/node())
else
xdmp:path($node)
}
default
return $node
};

let $xml :=
<root>
<parent1>
<child1></child1>
<child2></child2>
</parent1>

<parent2>
<child1></child1>
</parent2>
</root>
return local:add-paths($xml)

!

关于xml - MarkLogic:使用 xquery 获取元素的 xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28430990/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com