[英]How to get the value of an attribute whose name is not a literal in xQuery?
例如:
let $targetAtt "= "att1";
let $doc := <Xml att1 = "la", att2 = "la la">
所以这工作:
return $doc/@*[(name(.) = $targetAtt)]
但是更简洁的语法可能吗?
例如:下列不工作
如
return $doc/@$targetAtt.
谢谢 !
简短的回答:不。
路径表达式需要文字NameTest。 没有办法解决这个问题。 一些实现可能会提供一个eval函数,例如eval(concat("$doc/@", $targetAtt))
但是总的来说,如果有任何帮助,就应避免这样做。
在原始XQuery中整理语法的唯一方法是使用用户定义的函数:
declare function local:attribute($node as node(), $name as xs:QName)
{
$node/@*[name(.) = $name]
};
local:attribute($doc, $targetAtt)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.