0

これが私がやりたいことです:

Javascript 変数の例に含まれる XQUERY を動的に実行する

var myxquery = For Channels.Channel

where Channel/availability = yes

And Channels.Channel/Label = 'CNN'

Return  EXIST(Channels.Channel/Id)';

var xmltoparse= '<channel>
<available>yes</available>
<label>CNN</label>
</channel>
<channel>
<available>yes</available>
<label>BBC</label>
</channel>'

これはmyxquery、var xmltoparse に対して var を実行し、xquery の結果を別の var に格納することを意味します。

出来ますか?

4

2 に答える 2

2

たとえば Web ブラウザで XQuery クライアント側を実行することを検討している場合は、XQIB (XQuery In the Browser) と呼ばれる mxquery ベースのソリューションを検討することをお勧めします。

http://www.xqib.org/

私の知る限りでは、XQuery から JavaScript 関数を呼び出すことができ、その逆も可能です。

ブラウザーで XML 標準のクライアント側を実行するというアイデアに魅力を感じる場合は、Saxon-CE にも興味があるかもしれません。

http://www.saxonica.com/ce/index.xml

また、実際に何を達成しようとしているのかにもよりますが、XForms の使用はあなたにとっても興味深いものになるかもしれません。ページ内に (XML) データ モデルを保持し、さまざまな動的評価を適用できます。クライアント側の実装がいくつかありますが、そのうち XSLTForms は非常に優れたものです。

http://www.agencexml.com/xsltforms

チッ!

于 2013-04-24T05:22:56.557 に答える
0

はいeval()。しかし、それは Web サービスをインジェクション攻撃にさらすことになります (そして、この特定のパターンはそれを非常に簡単にします)。これが、一般的に推奨されない理由です。

ただし、とにかくそれを行う必要がある場合は、文字列をパラメーターとして取り、その文字列の値を に渡す XQY エンドポイントを作成できますeval()。呼び出しの正確な方法eval()は、仕様で定義されていないため、XQuery プロセッサによって異なります。すなわち: eXist では、それはutil:eval(); MarkLogic ではxdmp:eval(); 等

このパターンを使用する必要がある場合は、それをロックダウンするために必要なすべての手段を使用してください: 強力な認証、を実行するユーザーの機能の制限、実行eval前に文字列の検査を行うこともできます。

于 2013-04-23T20:46:46.163 に答える