如何使用XQUERY传递参数的属性

时间:2017-05-26 12:44:54

标签: xpath xquery

嗨,团队,

<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]

我不知道如何在参数中传递属性名称,请你帮忙吗?

2 个答案:

答案 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]]