限制xquery中的结果数量

时间:2012-01-17 19:04:00

标签: xml xquery

我有以下Xquery代码:

for $w in $words
let $freq := (count($corpus[. eq $w]) div count($content2[text() eq $w])) 
order by $freq descending
return <tr><td>{$w}</td><td>{$freq}</td></tr>

$words$corpus中出现的一些不同的字词(可能会多次出现)。 $content2是另一个词。变量和除法并不重要。

这个xquery列出了一些单词的频率计算,有序。

我想要做的是将结果限制为10。 我试图使用位置值,但因为它给了我单词列表中单词的位置,它没有成功..

任何帮助?

2 个答案:

答案 0 :(得分:16)

结果数量可以是限制如下:

(for $w in $words
 let $freq := (count($corpus[. eq $w]) div count($content2[text() eq $w])) 
 order by $freq descending
 return <tr><td>{$w}</td><td>{$freq}</td></tr>
)[position() = 1 to 10]

答案 1 :(得分:4)

使用subsequence($sequence, $start, $records)返回结果的子集,从记录$start开始(请注意XQuery从1开始计数)返回records个项目。看看"Limiting Result Sets" XQuery Wikibooks Page。如何应用从此页面复制的功能的示例:

let $sorted-people :=
   for $person in collection($collection)/person
   order by $person/last-name/text()
   return $person

for $person at $count in subsequence($sorted-people, $start, $records)
return
   <li>{ $person/last-name/text() }</li>