xml - 如何在xpath marklogic中传递变量中的元素名称?

标签 xml xpath marklogic

我的

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/

相关文章:

marklogic - 使用 xquery 和 xdmp 更新 xml 中的多个节点 :node-replace

xml - BaseX数据库: How to specify namespace context for query using xpath?

xml - XSLT for-each 循环,其中每个节点都是不同的元素

java - 通过java中的标签拆分XML字符串

xml - 如何忽略 XPath 1.0 中的命名空间?

sql-server - 将 XML 从一种格式转换为另一种格式

javascript - 如何使用 forEach 遍历序列中的数组

xml - MarkLogic:使用 cts:search 查找没有文本的元素

python - Odoo 更改宽度弹出窗口

java - 解析包含嵌套标签的 xml