0
let $targetAtt "= "att1";
let $doc := <Xml att1 = "la", att2 = "la la">
所以此工程:
return $doc/@*[(name(.) = $targetAtt)]
不过是一个更简洁的语法可能吗?
例如:下面请问不工作
如
return $doc/@$targetAtt.
谢谢!
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)