我是xquery的新手,我正在尝试使用xquery检查元素是否存在,如果存在则返回,仅返回具有id的b元素。
我尝试了以下内容:
输入
<a>
<b id="id2">text</b>
<x id="id4">text</x>
<b>text</b>
<b id="id5">text</b>
</a>
的XQuery:
for $x in (*:a/*:b)
let $new:=
let $id := exists($x/@id)
let $c := if ($id = true()) then ($x/@id/string()) else()
return
<string key="id">{$c}</string>
return ($new)
但我也得到了不存在项的返回字符串。如何不返回没有id的元素。
输出:
<string key="id">id2</string>
<string key="id"/>
<string key="id">id5</string>
有没有简单的方法可以做到这一点。
答案 0 :(得分:3)
这是一个紧凑的解决方案:
a/b/@id/<string key="id">{ string(.) }</string>
这是一个更冗长的替代方案(还有很多其他方法):
for $b in *:a/*:b
let $new :=
let $id := $b/@id/string()
where exists($id)
return <string key="id">{ $id }</string>
return $new