1

私は eXist-db を使用しています。クエリを実行するときの eXist-db のバックエンドのプロセスは何ですか? たとえば、次のシナリオではクエリの実行方法がどのように異なるでしょうか?

  1. eXist Sandbox を介してクエリを実行中ですか?

  2. REST インターフェイス (つまり、Web ブラウザ) を介してクエリを実行している間は?

  3. また、CSV ファイルを同じコレクションにある XML ファイルに変換するとき、バックエンドで何が起こるのでしょうか? (つまり、ここで概説されている手順を使用します。私の場合、CSV ファイルをデータベースに保存しました。次のファイルはどうなりますか。

    • CSVファイル
    • XQuery ファイル
    • XQuery 変換によって CSV ファイルを実行した結果の XML ファイル
4

1 に答える 1

0
  1. eXist XQuery Sandboxは、テキストフィールドと送信ボタンを備えたWebページです。クエリを入力してクエリを送信すると、テキストフィールドの内容がAjaxを介してサーバー上のsandbox.xqlクエリに送信され、サーバーはクエリを動的に実行します(util:eval()を使用)。結果のシーケンスは、セッションに保存されます。結果シーケンスの最初の10項目は、結果ウィンドウに表示されます。一度に10件の結果をページングできます。結果をセッションに保存することにより、結果をページングする際にクエリを再送信する必要がなくなります。次にクエリを送信すると、古い結果がクリアされ、新しい結果がセッションに挿入されます。

  2. RESTインターフェースを介してクエリを実行する場合(つまり、Webブラウザーを直接クエリに向けることにより、.xq、.xqy、.xql、.xqueryファイルなどのクエリがデータベースに保存されます)。データベースはファイルを読み取り、クエリを実行して、すべての結果を直接ブラウザに返します。

クエリが複数の結果を返してもサンドボックスは文句を言いませんが、ブラウザはXMLドキュメントが整形式である、つまり単一のルート要素を持っていることを期待していることに注意してください。クエリをサンドボックスから保存された.xqファイルに移動するときに発生する一般的な間違いや誤解は、クエリ結果を単一のルート要素にラップするのを忘れることです。

たとえば、サンドボックスでは、これをクエリとして入力できます。

<x/>, <y/>, <z/>

送信すると、次の3つの結果が得られます。

  1. <x/>
  2. <y/>
  3. <z/>

ただし、これを.xqファイル(myquery.xqなど)として保存し、http:// localhost:8080 / exit / rest / db / myquery.xqを介して呼び出すと、ブラウザーでエラーが発生します。結果は整形式ではありません。解決策は、結果をルート要素でラップすることです。例:

<results><x/><y/><z/></results>

最後の質問は少し曖昧ですが、CSV変換を実行する方法についての以前の質問に対する私の答えを見ましたか?クエリを記述してCSVファイルをデータベースに保存し、CSVファイルをXMLに変換し、結果をXMLファイルとしてデータベースに保存する方法の概要を説明しました。

于 2012-04-19T21:08:39.297 に答える