gpt4 book ai didi

xml - 给定一系列XML路径,生成XML树结构

转载 作者:行者123 更新时间:2023-12-03 17:02:43 29 4
gpt4 key购买 nike

我想解决一个问题-给定任意顺序的xml路径,我想生成xml树结构:

例如给定以下顺序:

"/person/name" "/person/address" "/person/age" "/person/parent/name" 


生成:

<person>
<name></name>
<address></address>
<parent>
<name></name>
</parent>
</person>


有谁知道如何在xquery和/或XSLT中执行此操作的好示例?

谢谢

最佳答案

这是递归问题。您想一次处理所有XPath,但要逐步使用它们。在每个步骤中,确定需要创建的不同元素,创建它们,然后在每个元素中,在通过该新元素的所有路径的尾部递归调用相同的函数。

declare function local:generate($paths) {
if(fn:empty($paths)) then () else

let $heads := $paths ! fn:subsequence(fn:tokenize(.,'/'),1,1)
let $tails := $paths ! fn:string-join(fn:subsequence(fn:tokenize(.,'/'),2),'/')

for $element in fn:distinct-values($heads)
return
if($element='') then local:generate($tails)
else element { xs:QName($element) } {
let $nextPaths := for $tail at $n in $tails where fn:starts-with($paths[$n],$element||'/') return $tail
return local:generate($nextPaths)
}
};

local:generate(("/person/name", "/person/address", "/person/age", "/person/parent/name"))

关于xml - 给定一系列XML路径,生成XML树结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40295933/

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