2016-06-08 15 views
1

Ich würde gerne wissen, wie man eine URL zu einer Datei erhalten/erstellen, die in exist-db gespeichert ist. Ich kann eine Datei mit Link ähnlich wie diese, wenn eXist-db auf meinem localhost läuft: http://localhost:8080/exist/rest/db/junitReports/Report1.xmlZurück Link zu Datei in eXist db auf Remote-Server gespeichert

Aber wie kann ich es tun, wenn es vorhanden ist-db auf der Remote-Host ist? Ich kann die IP-Adresse des Hosts in xQuery fest codieren, aber ich möchte das nicht tun. Gibt es eine Funktion, die mir den Hostnamen oder die IP-Adresse von remote in xquery zurückgibt?

Vielen Dank.

Antwort

1

Ich bin in der Lage eine URL erstellen ich mit curl mit dem folgenden Ausdruck verwenden:

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 ein Knoten von einem Dokument. Hier

ist ein Beispiel für eine komplette Abfrage:

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))) 

An einer normalen eXist Datenbank der obige Abfrage eine URL pro .xconf Datei erzeugen würde, die in der Datenbank vorhanden ist. (A Standard eXist Installation ein paar von ihnen hat.) Hier ein Beispiel für eine URL ich von diesem erhalten:

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

Und kann ich curl verwenden, um direkt auf die URL, das Dokument zu erhalten. Oder ich kann es in meinem Browser plop machen.

1

Probieren Sie die Funktion Anfrage: get-server-name()

Es gibt ein paar andere Funktionen, die nützlich sein können - Durchsuchen des Request-Modul in der Dokumentation XQuery Funktion App von Ihrem Armaturenbrett.