限制xquery中的结果数量

Ata*_*man 6 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>
Run Code Online (Sandbox Code Playgroud)

$words是一些出现(可能多次出现)的不同单词$corpus.$content2是另一袋话.变量和除法并不重要.

xquery列出了有序的单词的一些频率计算.

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

有帮助吗?

Chr*_*rün 17

结果的数量可以例如限制如下:

(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]
Run Code Online (Sandbox Code Playgroud)

  • 这仅适用于 MarkLogic(它不是官方规范的一部分)。 (2认同)

Jen*_*rat 5

使用subsequence($sequence, $start, $records)返回结果的一个子集,开始记录$start(从1感知的XQuery计数)返回records项目。查看“限制结果集”XQuery 维基教科书页面。如何应用从该页面复制的函数的示例:

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>
Run Code Online (Sandbox Code Playgroud)