xpath - xQuery如何在路径表达式中使用变量

标签 xpath xquery xquery-3.0 xquery-3.1

我有一个 XML 文档:

<resultsets>
    <row>
        <emp_no>10001</emp_no>
        <first_name>Georgi</first_name>
        <last_name>Facello</last_name>
    </row>
    <row>
        <emp_no>10007</emp_no>
        <first_name>Bezalel</first_name>
        <last_name>Simmel</last_name>
    </row>
</resoutsets>

我有一个变量查询 emp_no 字段定义为:

let $emp_no := doc("employees.xml")//emp_no

我想在查询中使用 $emp_no 节点名称 (emp_no) 来执行相同的操作,例如:

doc("employees.xml")//$emp_no/name()

是否可以在表达式左侧的路径中包含变量?

最佳答案

Is it possible to involve a variable in the path on the left side of the expression?

这里的关键点是,用变量引用替换路径中的名称在语法上是合法的,但这并不意味着您可能认为它的含义。如果变量 $X 的值为“orders”,则

//customer/$X

并不意味着

//customer/orders

相反,这意味着

//customer/"orders"

它为文档中的每个客户元素返回字符串“orders”的一次出现。

如果要查找名称等于字符串 $X 的元素,请使用

//customer/*[name()=$X]

除非涉及命名空间,在这种情况下您需要比较命名空间 URI 和本地名称。

关于xpath - xQuery如何在路径表达式中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48844323/

相关文章:

xslt - 可以用 xsd :dayTimeDuration() 指定的最长持续时间

sql-server - 提取XML数据并加载到数据库中(可能的方法)

xquery - 如何在 xQuery 中组合Where 子句

sql - 使用xQuery提取SQL变量中也存在的属性值

xpath - 返回使用满足包含 XQuery 的类(class)数

xslt - 如何测试XSL中缺少的属性?

python - Scrapy合并到1个列表

XQuery - 递归函数问题

xpath - 有效地对Xquery中两个文档(内部联接)中存在的元素进行分组

xml - 返回表达式中的XQuery变量未解析其值