0

XQuery のテストを行うために、1 つの XML データベース eXist-db を使用しました。「media_data_101109.xml」という xml コレクションがあり、ディレクトリに配置しました

/db/wb/portfolio/media_data_101109.xml

次に、XQuery を実行するための GUI である eXist Sandbox に移動し、次の 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 が正常に動作していない可能性があります。よろしくお願いします。

4

2 に答える 2

0

変化する

let $mediaNodes := doc('db/wb/portfolio/media_data_101109.xml')

let $mediaNodes := doc('/db/wb/portfolio/media_data_101109.xml')

于 2011-01-20T08:44:43.447 に答える
0

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

XQuery に URI がない場合 (動的に構築されるため、GUI でリソースとしてジェットを保存しなかったためなど)、ベース 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";
于 2010-12-30T17:11:57.400 に答える