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)
我不确定您拥有文档列表(而不是字符串)是否会改变这一点。
在 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)
我不确定您拥有文档列表(而不是字符串)是否会改变这一点。