繁体   English   中英

如何在xQuery中获取名称不是文字的属性的值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM