В 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 документов, появляющихся до и после конкретного документа (на основена буквенно-цифровую сортировку).Итак, мой «текущий документ» - 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 функция / метод для итерации списка документов один разони были найдены.Максимум, что мне удалось сделать, - это простой поиск названий документов из коллекции:
for $resource in collection("/db/apps/foo/resources/documents")
let $uri := base-uri($resource)
return util:unescape-uri(replace($uri, ".+/(.+)$","$1"), "UTF-8")
Но я не знаю, как выполнять итерацию вверх и вниз по списку из данного документа.
Возможно, записать список в узлы и применить формулу к порядковым номерам узлов?
Большое спасибо.