0

バックエンドとして eXist を使用して Web アプリケーションを構築しています。xf:load 要素を使用して新しいリソースをロードしたいと考えています。

私がしたことはこれです:

<xf:trigger>
  <xf:label>Trigger</xf:label>
    <xf:action ev:event="DOMActivate">
     <xf:load>
       <xf:resource value="concat('start.xql?floor={$floor}&amp;room={$room}', '')" />
     </xf:load>
    </xf:action>
</xf:trigger>

しかし、トリガーをクリックすると、この URL が読み込まれます。

start.xql?floor=0&amp;room=E.01

これは明らかに望ましくありません。アンパサンドをエスケープしないと、解析エラーが発生します。

Invalid character in entity name (=) or missing ;

では、xf:load 要素を介して複数のパラメーターを渡す正しい方法は何でしょうか? アンパサンドを使用してこの問題を回避できますか、それとも何か不足していますか?

助けてくれてありがとう

敬具クリスチャン

4

2 に答える 2

0

これが送信されるURLであると確信していますか?

一般に、XMLドキュメントでは、URI値で使用されている場合でも&書き込む必要があり&amp;ますが、文字列値はそのまま&であり、要求を送信するソフトウェア(この場合はXFormsプロセッサ)を混同しないでください...

とにかく、XFormsでクエリ文字列を処理する別の方法があり、HTTPgetを介してクエリ文字列を使用してインスタンスを送信することもできます。次の提出:

これらのアンパサンドの「詳細」に注意する必要があります。あなたはそれを介して呼び出すことができます:

<xf:trigger>
  <xf:label>Trigger</xf:label>
  <xf:send ev:event="DOMActivate" submission="trigger-submission"/>
</xf:trigger>

もちろん、適切な値がインスタンスに配置されていると仮定します。

于 2012-05-22T17:53:32.410 に答える
0

AVT は実際には必要ないため、resource/@value の XPath 式を変更した後、XSLTForms で確認しました...そして XSLTForms はまだ変数をサポートしていないためです。

<xf:resource value="concat('start.xql?floor=',floor,'&amp;room=',room)"/>

FireBug ネットワーク プロファイラは次のように述べています。

http://localhost/xsltforms/trunk/src/testsuite/misc/start.xql?floor=FL&room=RM

したがって、この問題は、使用している XForms 実装のサポート リストに投稿することをお勧めします。

-アラン

于 2012-05-22T20:08:48.217 に答える