gpt4 book ai didi

xpath - Xquery通过在运行时传递父值来获取子节点

转载 作者:行者123 更新时间:2023-12-03 17:34:01 24 4
gpt4 key购买 nike

我需要在运行时传递一个值,以获取所有子元素。

例如,这是我的XML:

<person>
<details1>
<name>jack</name>
<age>26</age>
</details1>
<details2>
<name>john</name>
<age>48</age>
</details2>
</person>


而我的查询:

let $y as xs:string := "details1"
let $x := fn:doc(cts:uri-match('*person.xml'))
return $x/$y


所以在这里我期望结果是

<details1>
<name>jack</name>
<age>26</age>
</details1>


但它返回的名称与$ y相同,即“ details1”
或者如果我这样查询

let $y as xs:string := "details1"
let $x := fn:doc(cts:uri-match('*person.xml'))
return $x//$y


结果将是12次的“ details1”

我是XQuery的新手,请帮助我解决问题

最佳答案

似乎您尝试使用字符串$y作为节点步骤。但是,在XPath / XQuery中,路径步骤不同于字符串,因此您不能简单地将字符串添加为路径步骤。相反,您可以查找所有后代元素,并要求它们具有相同的名称,即:

let $y as xs:string := "details1"
let $x := fn:doc(cts:uri-match('*person.xml'))
return $x/*[name(.) = $y]

关于xpath - Xquery通过在运行时传递父值来获取子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30883685/

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