Return link 到存储在远程服务器上的 eXist 数据库中的文件

Return link to file stored in eXist db on remote server

我想知道如何 get/create 一个 url 到一个存储在 exist-db 中的文件。 如果我的本地主机上的 eXist-db 是 运行,我可以获得一个与此类似的 link 文件: http://localhost:8080/exist/rest/db/junitReports/Report1.xml

但是如果exist-db在远程主机上怎么办呢? 我可以在 xQuery 中对该主机的 IP 地址进行硬编码,但我不想这样做。 有没有函数可以 return 我在 xquery 中的远程主机名或 IP 地址?

谢谢。

试试这个功能 request:get-服务器名称()

还有一些其他功能可能有用 - 从您的仪表板浏览 XQuery 函数文档应用程序中的请求模块。

我可以构建一个 URL 我可以使用 curl 和以下表达式:

concat(request:get-scheme(), "://", request:get-server-name(), ":",
       request:get-server-port(), request:get-context-path(),
       request:get-servlet-path(), document-uri(root($m)))

$m 是来自某个文档的节点。

这是一个完整的查询示例:

xquery version "3.0";
declare namespace config='http://exist-db.org/collection-config/1.0';
for $m in //config:collection
return concat(request:get-scheme(), "://", request:get-server-name(),
              ":", request:get-server-port(), request:get-context-path(),
              request:get-servlet-path(), document-uri(root($m)))

在普通的 eXist 数据库上,上述查询将为数据库中存在的每个 .xconf 文件生成一个 URL。 (默认的 eXist 安装有很多。)这是我从中得到的 URL 的示例:

http://localhost:8080/exist/rest/db/system/config/db/collection.xconf

而且我可以直接在 URL 上使用 curl 来获取文档。或者我可以把它放在我的浏览器中。