<a>
{
for $o in doc("x.xml")/users/org
where fn:count($o/mem)
order by fn:count($o/mem) descending
return <org>
<b> {$o/@name/string()} </b>
<c> {$o/@ab/string()} </c>
<d> {fn:count($o/mem)} </d>
</org>
}
</a>
我已按降序排列结果,但我只需要前4个结果。我尝试在维基页面上使用子序列方法,并尝试使用[position()1,4]方法查找前4名但未成功。
答案 0 :(得分:0)
使用两个for
循环的一种可能方法,并限制内部for
仅返回前4个结果:
<a>
{
for $p in
(
for $o in doc("x.xml")/users/org
where fn:count($o/mem)
order by fn:count($o/mem) descending
return <org>
<b> {$o/@name/string()} </b>
<c> {$o/@ab/string()} </c>
<d> {fn:count($o/mem)} </d>
</org>
)[position() <= 4]
return $p
}
</a>
更新:
事实证明,我们实际上并不需要外部for
:
<a>
{
(
for $o in doc("x.xml")/users/org
where fn:count($o/mem)
order by fn:count($o/mem) descending
return <org>
<b> {$o/@name/string()} </b>
<c> {$o/@ab/string()} </c>
<d> {fn:count($o/mem)} </d>
</org>
)[position() <= 4]
}
</a>