如何通过 xquery 中的变量 select 属性?

How to select an attribute by a variable in xquery?

我知道如何 select 像这样的属性:

$table/@id

但是,如果属性名称存储为变量,我该怎么做。例如:

let $x = "id"
$table/@[$x]

您可以使用函数 local-namenode-name 来捕获属性的值并将其与谓词匹配。 local-name 将简单地 return 一个匹配元素名称的字符串,而 node-name 将 return 一个完全限定的名称,这通常是推荐的,但实际上,只有在以下情况下才需要您正在处理命名空间。

let $x = "id"
return $table/@*[local-name(.) = $x]

let $x := xs:QName("id")
return $table/@*[node-name(.) = $x]