如何在 xQuery 中获取名称不是文字的属性的值?
例如:
let $targetAtt "= "att1";
let $doc := <Xml att1 = "la", att2 = "la la">
所以这可行:
return $doc/@*[(name(.) = $targetAtt)]
但是是否可以使用更简洁的语法?
例如:以下内容不起作用,
例如
return $doc/@$targetAtt.
谢谢!
For example:
let $targetAtt "= "att1";
let $doc := <Xml att1 = "la", att2 = "la la">
So this works:
return $doc/@*[(name(.) = $targetAtt)]
But is a more succinct syntax possible?
For example: the following Does not work
such as
return $doc/@$targetAtt.
Thanks !
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
简短的回答:不。
路径表达式需要文字 NameTest。这是没有办法解决的。某些实现可能会提供 eval 函数,例如 eval(concat("$doc/@", $targetAtt)) ,但一般来说,如果有帮助的话,应该避免这种情况。
在普通 XQuery 中整理语法的唯一方法是使用用户定义的函数:
Short answer: no.
A path expression requires a literal NameTest. There is no way around this. Some implementations may provide an eval function, eg
eval(concat("$doc/@", $targetAtt))
but in general this is to be avoided if it can be at all helped.The only way to tidy the syntax in vanilla XQuery is with a user defined function: