問題タブ [xquery]

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.

0 投票する
3 に答える
37753 参照

sql - XML query()は機能し、value()にはシングルトンが必要ですxdt:untypedAtomic

入力したxmlドキュメントをテキストとして保存しています。そこで、XMLメソッドを使用できるようにするために、共通テーブル式を使用してデータ型をxmlにCONVERTします。

クエリが機能し、要素が返されます。しかし、私は価値にのみ興味があります:

これにより、次のエラーが発生します。

'value()'にはシングルトン(または空のシーケンス)が必要で、タイプ'xdt:untypedAtomic*'のオペランドが見つかりました

私がグーグルで検索したところによると、XPATH / XQUERYは括弧内にある必要があるか、「[1]」が必要です。どちらも機能していません。スキーマにはもっと多くのことができると思いますが、xmlにはstudent-id要素が1つだけありますか?

さらに、取得したい要素値が多数あります-メソッド呼び出しごとではなく、名前空間を1回宣言する方法はありますか?

0 投票する
1 に答える
368 参照

sql-server - 特定のタグや属性の存在に基づいて行を含めたり除外したりする XQuery を作成するにはどうすればよいですか?

生の XML を使用してアプリケーションによって実行されるアクションを表す監査/ログ システムがあります。アプリケーションの SQL Server データベース内のテーブルで XML 列を使用して、このシステムを大幅に改善したいと考えています。

テーブルの各行には 1 つのログ エントリが含まれ、各エントリには 1 つ以上のタグが含まれている必要があります。これらのタグは、アプリケーションの監査のニーズに一致する方法で検索できるように、セマンティックな方法でアクションを記述するために使用されます。例:

私の意図は、タグと属性の組み合わせを指定して行を含めるか除外することにより、このテーブルから行セットを返すことです (たとえば、「タグですべての行を含めinvoice、属性で行を除外するuserId='7'」、または「タグですべての行を含め、行をinvoice除外する」タグ付きdelete

行を含めたり除外したりするタグと属性の組み合わせを表す単純なフィルター構造の組み合わせを使用して、プログラムでこれを行いたいと考えています。

私が使用する構造は次のようになります。

私の目標は、これらのセットを受け入れ、単一の除外フィルターに一致することなく、単一の包含フィルターに一致するすべての行を返すクエリを生成することです。

このブール論理を結果の XPath 自体にエンコードする必要がありますか?それとも、出力されたクエリに複数の SELECT ステートメントを含めることを検討していますか? 私は XQuery を初めて使用しますが、助けていただければ幸いです。ありがとう!

0 投票する
2 に答える
3029 参照

sql - 名前空間SQL2008なしのXQuery挿入

これが私のルート要素です。要素を挿入するためのストアドプロシージャを作成しました。ストアドプロシージャを要約すると、次のSQLがあります

これで、MSSQLが挿入を実行すると、空の名前空間も挿入されるため、結果は次のようになります。

今、私は両方を使ってみました

しかし、私はどこにでもプレフィックスと各要素の名前空間宣言を付けることになります。

MSSQLが挿入するプレフィックスを処理するロジックがないコードライブラリで問題が発生します。最終的には、xmlルートに新しい要素を挿入し、名前空間を空白のままにします(ルートのデフォルトを使用しますか?)。私はこれにまったく慣れていませんが、理解しているように、ルート要素に名前空間がある場合、すべての子ノードにルートのデフォルトの名前空間を含めるべきではありませんか?

0 投票する
3 に答える
33710 参照

sql-server-2005 - SQL Serverのvalue()を使用してxml列から複数のレコードを取得する

このSQLは、最初のActivity要素のみを返します。それらすべてを選択するにはどうすればよいですか?クエリで[1]を削除すると、「value()にはシングルトンが必要です」というエラーが表示されます。

0 投票する
1 に答える
353 参照

sql - テキスト属性とbase64xml属性を自動切り替えるUDF

私のアプリケーションは、データをさまざまなXML属性にシリアル化し、データに応じて、テキストまたはbase64として送信する場合があります。後者の場合、属性名は「attribute-base64」になります。したがって、SQLサーバー側では、次の規則を使用してXMLをデコードできます。

XMLと属性名を入力として受け入れ、文字列を出力するUDFを作成しようとしています。XQueryを生成するにはどうすればよいですか?これを試してみましたが、機能しません。

呼び出されたとき:

戻り結果は値ではありませんが、'root [1] / @ v'...どうやら、SQLサーバーはsql:variable( "@ xquery")をXQueryではなくXML値として理解しているようです。私は何をする必要がありますか?

0 投票する
2 に答える
146 参照

xpath - C# 2 つのブック ノードを引き出すルールで指定するクエリ言語

こんにちは、現在、私はルール ベースのシステムを使用しています。このシステムでは、着信 xml メッセージがルールと照合され、ルールが一致した場合にパケットが処理されます。一致を取得するために、xpath を使用して xml 内の個々の値を選択し、ルール内でこれらを結合された xpath:regexp 式として指定します。たとえば、次のようになります。

/bookstore/book[1]/ タイトル: (.+)

たとえば、上記は「Everyday Italian」と一致します。

しかし、ルールでクエリ式を指定すると、上記の古典的な msdn docs book.xml のすべてのブック ノードを選択できるクエリまたはおそらく新しいクエリ言語式を見つけようとしています。パーサーを使用してそれを持ち上げ、xml ファイルに対して直接使用して、books ノードを引き出します。

xpath でできるかどうかはわかりません。XQuery を見ていましたが、冗長に思えます。XSLT はおそらくそれを行うことができますが、それは冗長です。何か案は。

すべてのブックノードを持ち上げるか、1 と 2、または 1 と 3 と言うように式を指定する簡単な方法ですか。

ありがとう。ボブ。

0 投票する
4 に答える
2871 参照

java - CommonsDigesterを使用してHashMapに解析します

xmlをHashMapに解析する必要があります。ここで、「キー」は2つの要素属性の連結です。xmlは次のようになります:

マップの最初のエントリで、「p1.c1」をマップキーとして、「value1」をマップ値として配置します。それを達成する方法は?

0 投票する
2 に答える
4695 参照

xml - XQuery での CDATA の出力

XQuery を使用してどのように変換しますか

?

また、どのように変換しますか

?

問題があれば、私は XSLPalette.app を使用しています。

0 投票する
1 に答える
2381 参照

tsql - ワイルドカードを使用して Xquery で最初の値を取得する

スキーマが割り当てられていない SQL Server 2008 の XmlData 列で、特定のノード レベルの最初の項目を取得するにはどうすればよいですか? たとえば、私は持っています:

第2レベルに異なる名前のノードが複数ある場合、それらの最初のノードが返される可能性があるため、value()これは機能しないと思います(シングルトンを選択する必要があります。最初のノードが 2 番目のレベルにあるものを常に選択する方法はありますか?

0 投票する
3 に答える
35940 参照

sql - varcharフィールドでのSQL Server xml文字列の解析

xml データを格納するために使用されるテーブルに varchar 列があります。ええ、使用すべき xml データ型があることは知っていますが、これは xml データ型が利用可能になる前に設定されたと思うので、今のところ varchar を使用する必要があります。:)

格納されたデータは次のようになります。

ファイル名を解析して、2 つのアンダースコアの間の数字を取得する必要があります。この場合は「456」になります。ファイル名の最初の部分の長さは「変更すべきではありません」が、中間の数字は変更されます。最初の部分の長さが変わった場合に機能する解決策が必要です(「変更しないでください」は常に変更されることを意味しているように見えるため、変更されることはわかっています)。

今のところ、XQuery を使用してファイル名を取得しています。これはおそらく単純な文字列操作よりも優れていると考えたからです。これを行うために文字列を xml にキャストしましたが、私は XQuery の専門家ではないので、もちろん問題が発生しています。XQuery (substring-before) の関数を見つけましたが、機能させることができませんでした (その関数が SQL Server で機能するかどうかさえわかりません)。これを簡単に行うための XQuery 関数があるかもしれませんが、あるとしても私は知りません。

したがって、次のようなクエリを使用して、テーブルからファイル名を取得します。

これから、これを文字列にキャストしてから、 instring または charindex 関数を実行してアンダースコアがどこにあるかを把握し、そのすべてを部分文字列関数にカプセル化して部分を選択できると想定します私は欲しい。これに深く入り込まなくても、最終的にはこの方法で実行できると確信していますが、もっと簡単な方法が必要であることはわかっています。この方法では、SQL ステートメントに読み取り不可能な巨大なフィールドが作成され、それを関数に移動したとしても、何が起こっているのかを理解しようとすると混乱します。

単純な文字列操作のように見えるので、これよりも簡単な方法があると確信しています。おそらく、誰かが私を正しい方向に向けることができます。ありがとう