Xpath 将结果限制在xquery中的前四名 { 对于doc(“x.xml”)/users/org中的$o 式中fn:计数($o/mem) 按fn排序:计数($o/mem)递减 返回 {$o/@name/string()} {$o/@ab/string()} {fn:count($o/mem)} }
我已经按降序排列了结果,但我只需要从这个结果的前4名。我尝试在wiki页面上使用sub sequence方法和[position()1,4]方法来查找前4名,但没有成功。一种可能的方法是使用两个Xpath 将结果限制在xquery中的前四名 { 对于doc(“x.xml”)/users/org中的$o 式中fn:计数($o/mem) 按fn排序:计数($o/mem)递减 返回 {$o/@name/string()} {$o/@ab/string()} {fn:count($o/mem)} },xpath,xquery,zorba,Xpath,Xquery,Zorba,我已经按降序排列了结果,但我只需要从这个结果的前4名。我尝试在wiki页面上使用sub sequence方法和[position()1,4]方法来查找前4名,但没有成功。一种可能的方法是使用两个for循环,并限制内部for仅返回前4个结果: <a> { for $o in doc("x.xml")/users/org where fn:count($o/mem) order by fn:count($o/mem) descending return <org>
for
循环,并限制内部for
仅返回前4个结果:
<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>
更新后的一个不起作用(错误消息:静态错误[err:XPST0003]:无效表达式:语法错误,意外“=”),但第一个运行良好。@崩溃我的错误,需要
{}
包装整个查询以使其起作用。这里使用不同的XML结构测试:次要观察,其中fn:count($o/mem)
似乎有点反常。您可以在存在($o/mem)的地方编写,甚至在$o/mem的地方编写,或者只需在初始选择中添加条件:用于doc('x.xml')/users/org[mem]
<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>
<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>