2010-12-30 15 views
0

XQueryのテストを行うために、XMLデータベースeXist-dbを使用しました。私は「media_data_101109.xml」 と呼ばれるXMLコレクションを持っている、と私はdirecotryに入れました/db/wb/portfolio/media_data_101109.xmlXQueryでeXist-dbに格納されたファイルを照会

は、それから私が存在してサンドボックスに行ってきましたこれはXQueryを実行するためのGUIであり、次のXQueryを入力します。

let $mediaNodes := doc('db/wb/portfolio/media_data_101109.xml') 
return $mediaNodes//media[contains(@product,"wb")] 

しかし、結果を戻すことができませんでした。私のようなURI文字列の前にサーバー名を付加した場合

しかし、:

let $mediaNodes := doc('http://localhost:8080/exist/rest/db/portfolio/media_data_101109.xml') 

はその後、それがうまく働いた(少し遅いが)。

私が思い出したように、最初のXQueryはこれまでどおり正常に動作しましたが、昨日からURI文字列にサーバー名を指定しない限り、何も取得できませんでした。

ここでどこが間違っているのか誰にでも教えていただけますか?私は私のポート設定にいくつかの問題があるかもしれないと思った?だから、eXist-dbは通常どおりに動作しないかもしれませんか?事前に感謝します。

+0

パスに "db"の前にスラッシュを追加してください: 'doc( '/ db/wb/portfolio/media_data_101109.xml')' –

+0

@DevNull:これを試しましたが、それでも動作しません。 – Kevin

答えて

0

静的コンテキストのベースURIは、相対URIの解決に使用されます。

XQueryにURIがない場合(GUIがリソースとしてjetを保存しなかったために動的に構築されているため)、明示的にベースURIを定義する必要があります。 http://www.w3.org/TR/2010/REC-xquery-20101214/#id-base-uri-decl

から

[定義:ベースURI 宣言が静的​​コンテキストのベースURI プロパティを指定します。 ベースURIプロパティは、 モジュール内の相対URIを解決する場合に使用されます。]たとえば、fn:doc 関数は、 を呼び出しモジュールのベースURIを使用して相対URIを解決します。

次は、ベース URI宣言の例です。

declare base-uri "http://example.org"; 
0

変更

$ mediaNodesてみましょう:= DOC( 'デシベル/ WB /ポートフォリオ/ media_data_101109.xml')

$ mediaNodesてみましょう:= DOC( '/ DB/WB /ポートフォリオ/ media_data_101109.xml')

関連する問題