我有一个 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/