嗨,团队,
<cars>
<car id="1">Ford</car>
<car num="2">Mazda</car>
<car vol="3">Toyota</car>
<car soid="4">Lexus</car>
</cars>
的XQuery:
let $val := 1
let $attr := id
return //car[$attr=$val]
我不知道如何在参数中传递属性名称,请你帮忙吗?
答案 0 :(得分:1)
XQuery非常静态,与动态路径组件不太相似。您可以利用local-name()
:
let $val := 1
let $attr := "id"
return //car[@*[local-name()=$attr and data(.)=$val]]
但这并不是特别有效。尽可能使用静态表达式,即使这意味着在这里和那里重复几个条件表达式。
答案 1 :(得分:1)
作为替代方案,从XQuery 3.0开始,您可以使用更高阶的函数:
let $val := 1
let $attr := function($x){$x!@id}
return //car[$attr(.)=$val]]