我的
let $doc :=
<Test>
<Abc>value of the element</Abc>
</Test>
代码-
for $i in $doc
let $x := 'Abc'
return $i/$x
预期结果“元素值”
请帮忙!!
TIA
最佳答案
在您的代码示例中,您为 $x
变量指定了一个字符串 'Abc'
。如果您想使用该字符串来查找具有该名称的元素,您可以调整 XPath 以选择子元素,然后在谓词过滤器中测试 name()
或 local-名称()
。如果您知道没有命名空间和命名空间前缀需要处理,则两者都可以工作,但最好使用 local-name()
。
$doc/*[local-name()=$x]
这将选择 Abc
元素,但如果您只想要值,则可以选择 text()
节点
for $i in $doc
let $x := 'Abc'
return $i/*[local-name()=$x]/text()
或应用string()
函数:
for $i in $doc
let $x := 'Abc'
return $i/*[local-name()=$x]/string()
如果您知道它将是 Abc
元素,那么您可以消除 $x
变量:
for $i in $doc/Abc
return $i/string()
您可以完全消除 for 循环,只使用如下 XPath 语句:
$doc/Abc/string()
关于xml - 如何在xpath marklogic中传递变量中的元素名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67213703/