返回存储在远程服务器上的eXist db中的文件的链接

时间:2016-06-08 19:54:13

标签: xquery exist-db

我想知道如何获取/创建存储在exists-db中的文件的URL。 如果eXist-db在我的localhost上运行,我可以获得一个类似于这个链接的文件: http://localhost:8080/exist/rest/db/junitReports/Report1.xml

但是如果它存在,我怎么能这样做-db在远程主机上? 我可以在xQuery中硬编码主机的IP地址,但我不想这样做。 是否有一个函数可以在xquery中返回远程主机名或ip地址?

谢谢。

2 个答案:

答案 0 :(得分:1)

试试这个功能 请求:GET-服务器名称()

还有一些其他可能有用的功能 - 从您的仪表板浏览XQuery Function Documentation应用程序中的Request模块。

答案 1 :(得分:1)

我可以使用以下表达式构建一个可以与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

我可以直接在该网址上使用curl来获取文档。或者我可以在浏览器中填写它。