Xquery/eXist-db - 从当前文档迭代一个集合 +/- 3 个位置

Xquery/eXist-db - iterating over a collection +/- 3 positions from current document

在 eXist-db 中,我在 /db/apps/foo/resources/documents 中有数百个文档,如下所示:

...
BNF9992-J305-1.xml
BNF9992-J305-5.xml
BNF9992-J308-9.xml
BNF9992-J310-8.xml
BNF9992-J311-1.xml
BNF9992-J312-6.xml
BNF9992-J312-7.xml
BNF9992-J315-9.xml
BNF9992-J316-2.xml
BNF9992-J317-2.xml
BNF9992-J319-3.xml
...

假设我想向用户显示出现在特定文档前后的 3 个文档的列表(基于字母数字排序)。所以,我的 'current document' 是 BNF9992-J312-7.xml,我想向用户显示如下内容:

BNF9992-J310-8.xml
BNF9992-J311-1.xml
BNF9992-J312-6.xml
BNF9992-J312-7.xml (current document)
BNF9992-J315-9.xml
BNF9992-J316-2.xml
BNF9992-J317-2.xml

Xquery 3.1 中是否有 function/method 用于在检索到文档后迭代 up/down 文档列表。我能做的最多的是从集合中简单检索文档名称:

 for $resource in collection("/db/apps/foo/resources/documents")
 let $uri := base-uri($resource)
 return util:unescape-uri(replace($uri, ".+/(.+)$",""), "UTF-8")

但我不知道如何从给定文档上下迭代列表。

也许将列表写入节点并将公式应用于节点序数?

非常感谢。

如果这是一个字符串列表 $list,并且 "current string" 是 $s,那么我会做

let $i := index-of($list, $s)
return subsequence($list, $i - 3, 7)

我不确定您拥有文档列表(而不是字符串)是否会改变这一点。