不要返回输出

时间:2018-02-26 07:09:35

标签: xquery xquery-3.0

我是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>

有没有简单的方法可以做到这一点。

1 个答案:

答案 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