問題タブ [exist-db]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
orbeon - OrbeonXformを外部の既存のDBに接続します
新しいOrbeonXFormを既存の既存のデータベースに接続しようとしています。私のコードは、そのデータベースに保存されるxmlドキュメントを送信する必要があります。
xmlファイルを送信しようとすると、ログに認証エラーが表示されます。
この接続を認証するにはどうすればよいですか?
xml - xquery 関数宣言に xpath を渡す方法
Apache Tomcat の Exist DB を XML データベースとして使用し、FLWOR の「let」句で定義された次の xpath を渡してシーケンスを構築しようとしています。
次のように、ローカルで定義された関数宣言に変換します。
もちろん、exist xquery サンドボックスにこれを入力すると、Type: xs:anyAtomicType is not defined が表示されます。代わりに何を使用する必要がありますか、またはこれを別の方法で行う必要がありますか?
ご提案いただきありがとうございます。
php - PHPでeXist XQueryレスポンスを解析するには?
サードパーティのクラスをインストールせずに、php でeXist 応答を解析する簡単な方法を見つけようとしています。
これは、解析したい応答のタイプです。
私はsimplexml_load_string php 関数を試していますが、空の SimpleXMLElement オブジェクトをエラーなしで返します。
この応答から XML ファイルのリストを取得したいと思います。
ありがとう
xml - XQuery を使用して eXist-db に格納されたファイルを照会する
XQuery のテストを行うために、1 つの XML データベース eXist-db を使用しました。「media_data_101109.xml」という xml コレクションがあり、ディレクトリに配置しました
/db/wb/portfolio/media_data_101109.xml
次に、XQuery を実行するための GUI である eXist Sandbox に移動し、次の XQuery を入力します。
しかし、結果を取得できませんでした。
ただし、URI文字列の前にサーバー名を追加すると、次のようになります。
その後、うまくいきました(少し遅いですが)。
思い出したように、最初の XQuery は以前は問題なく動作していましたが、昨日から、URI 文字列でサーバー名を指定しない限り、何も取得できませんでした。
ここでどこがうまくいかなかったのか、誰か教えてもらえますか? ポート設定に問題があるのではないかと思いましたか? そのため、eXist-db が正常に動作していない可能性があります。よろしくお願いします。
java - eXist-dbを使用した大文字と小文字を区別しない検索
クライアントから投稿された最終的な改良を行っています。大文字と小文字を区別しないクエリを実行する必要があります。基本的に、この単純なプログラムがどのように機能するかを説明します。
まず、Javaクラスで、かなり単純なWebページの解析を行いました。
このJavaステートメントは、ローカルホストに保存されているXQueryファイル「media_lookup.xql」を参照します。渡すパラメーターは、文字列「title」のみです。
次に、そのXQueryファイルを見てみましょう。
次に、そのクエリを評価します。このXQueryは、Javaクラスから渡される「title」パラメーターを取得し、データベースに格納されている「media_data」xmlファイルをクエリします。このファイルには、「title」要素ノードを持つ一連のメディアノードが含まれています。ご想像のとおり、この単純なクエリは、「title」要素に文字列「title」の値のサブストリングが含まれているメディアノードに一致します。したがって、「タイトル」が「Chi」の場合、タイトルが「Chicago」または「Chicken」のメディアノードが返されます。
クライアントによって投稿された改良要求は、大文字と小文字を区別してはならないというものです。非常に直感的な方法は、次のような小文字の関数を使用してXQueryステートメントを変更することです。
ただし、問題が発生します。この変更されたクエリは、私のマシンをメモリオーバーフローに陥らせます。私の「media_data.xml」は非常に巨大で、何千万ものメディアノードが含まれているため、各エントリで小文字()関数が実行され、マシンがクラッシュすると思います。
私は経験豊富なXQueryプログラマーと話をしましたが、彼らは私がこの問題を解決するためにインデックスを使用する必要があると考えています。私は間違いなくそれを調査します。しかしその前に、私はこの問題をここに投稿して、他のアイデアや提案を得ています。他の方法が役立つと思いますか?たとえば、Javaの解析ステートメントを微調整して、大文字と小文字を区別しないようにすることはできますか?「contains」を使って文字列を連結する人もいると思います。サーバーに渡す前にJavaで。
どんなアイデアや助けも歓迎します。
xforms - オプションの XML 要素に XForm コントロールを許可する
(eXist と XSLTForms を使用して) XML データベースへの XForm インターフェイスを設計する際に、オプション要素の入力コントロールを含めたいと思います。XML データ レコードは既に存在し、オプションの要素を含むものもあれば、含まないものもあります。レコードを更新するために、既存の XML レコードをモデル インスタンスとして使用しています。問題は、オプション要素が存在しない場合にフォーム コントロールが表示されないことです。これは論理的ですが、ユーザーがオプション要素にデータを追加したい場合に問題が発生します。
より明確にするために、データ レコードの例、data.xml を次に示します。
RNC スキーマを使用:
XForms モデル:
そして制御:
問題は、「メモ」入力コントロールが単に表示されないことです。
明らかな解決策は、ユーザーが必要に応じて要素を挿入できるようにトリガー ボタンを追加することですが、入力コントロールのみを表示し、空にすることをお勧めします。
私の質問は、コントロールが常に表示される原因となる、あまり知られていない属性/バインド/複数のインスタンス/xpath 式の微妙な組み合わせはありますか?
xquery-update - Xquery 更新のエラー ( eXistdb)
データをデータベースに更新しようとしているときに、「XQuery 更新式をインメモリ ノードに適用できません」というエラーが見つかりました。...これを解決するには、誰か助けてください....
module - eXist: XQuery モジュールを XML ファイルに格納することは可能ですか?
次のように、モジュールをeXistに保存できます/modules/my.xqm
。
次に、次のようなクエリにインポートします。
XQuery を「テキスト ファイル」に保存する代わりに、XQuery の単なるラッパーである XML ファイルに保存することは可能ですか? クエリを eXist ( <exist:query><exist:text>
) に POST するときに使用するものと同様のラッパーについて考えています。これにより、データベースに格納された XML データを想定するツールを使用して、XQuery モジュールを操作しやすくなります。
xquery - XQueryの更新:ノードが存在しないかどうかに応じて挿入または置換しますか?
単純なXMLデータベース(BaseXまたはeXist-db内)を構築しようとしていますが、ドキュメント内の値を変更する方法を理解するのに問題があります。
テスト用のコンテンツは次のように単純です。
要素が存在しない場合は要素を挿入するか、存在する<pl>
場合は要素を置き換える関数のようなものを構築しようとしています。しかし、XQueryはまだ私に問題を与えています:
if-then-elseロジックで正面から試してみると:
エラーが発生しますError: [XUDY0027] Replace target must not be empty
。明らかに私は混乱しています。なぜelse部分が両方の場合に評価されるのか、したがってエラーです。else部分を空にすると:
それから私は得るError: [XUST0001] If expression: no updating expression allowed
。
更新関数を宣言しようとすると、それでもエラーが報告されます:
Error: [XUST0001] If expression: no updating expression allowed.
BaseX6.5.1パッケージからこれらのエラーが発生しました。
では、可能であれば、簡単な方法で値を変更するにはどうすればよいですか?直接挿入と呼ぶと、同じ値の要素が複数存在する可能性があります。replaceを呼び出すと、ノードが存在しないときに失敗します。挿入/置換の前にノードを削除すると、不要なサブノードを破棄する可能性があります。
ほとんどのSQLデータベースでは、これらは非常に単純なタスクです(MYSQL'replace 'コマンドなど)。
database - file:serialize を使用して eXist db でファイルを書き込む
file:serialize 関数を使用して、eXist-db を使用してコンテンツをファイルに書き込もうとしています。
これが私が使用しているコードです。これは単なるログインとシリアライズ関数の呼び出しです。someFunction は、何らかのコンテンツを含むノードを返すだけです。
let $null := xdb:login("/db", " * ", " * "), $someBool := file:serialize(local:someFunction(),"test.txt","")
私が得ている非常に役立つエラーは次のとおりです。
エラーが見つかりました
メッセージ: エラー null
私は Ubuntu でバージョン 1.4.0 を使用しており、ファイル モジュールを有効にしました (そしてビルドしました)。ここで何が欠けていますか?
ありがとう!