/ /リピートでインスタンスに挿入 - orbeon

リピートまたはビーンでインスタンスに挿入する

じぶんの 状況 次のとおりです。

  1. 私はノード・セットを持っています。これを使って、データの一部を反復して表に挿入します
  2. フィールドの1つ、私は要約したい

問題: 残念ながら、ノードセットは他のフォームのデータにアクセスするカスタム関数なので、計算にはsumメソッドを使用できません。そして、それは事を台無しにするようです。

解決策の私の考え: 私は、インスタンスを作成し、各反復でそれに値を追加することができたと思った。それから、私は単にそのデータにアクセスし、必要な計算を実行するだけです。しかし、私はxformsを取得することはできません:挿入するために動作します。

簡略版は次のようになります:

            <xforms:repeat nodeset="(xxforms:si-source-forms("other_form"))">
<!-- table here -->
<xforms:insert
nodeset="instance("fr-form-instance")//positionen/position"
origin="instance("neue-position")"/>
</xforms:repeat>

"neue-position"インスタンスには、ソース形式の値へのバインディングが含まれます。

  <xforms:bind id="neue-position-binds" nodeset="instance("neue-position")">
<xforms:bind id="neue-position-bind" nodeset="position">
<xforms:bind id="neue-position-summe-bind" nodeset="summe" name="summe" type="xforms:string" required="true" xxforms:default="xxforms:si-source-forms("other_form")//gesamtbetrag_ausgabe" />
</xforms:bind>
</xforms:bind>

それは期待どおりに動作しませんので、明らかに何かが間違っています。私はどんなヒントも感謝しています。

回答:

回答№1は1

最初のコードスニペットについて:

きみの <xforms:insert> あなたがビューに入っていて、イベントリスナーにアタッチされている場合にのみアクションが実行されます。なし ev:listener 〜に <xforms:insert> (またはそのインサートの周りのアクション)、それはちょうど "実行されませんでした。

インスタンス内にないノード上で合計を実行することについて:

あなたのカスタム関数によって返されるデータの上にただ1つの "合計"があると仮定すると、それらの行に沿ってコードを書くことができます:

  1. 関数によって返されたノードのシーケンスを変数に格納する <xf:var name="others" ref="xxforms:si-source-forms("other_form")"/>
  2. その変数をリピートで使用します。 <xf:repeat ref="$others"> (今、XFormsは ref どこでも、 nodeset)。
  3. あなたの計算を行います: <xf:var name="my-sum" ref="sum($others/path/to/values)"/>.
  4. 最後に、あなたが何かをしたいと思っています。 $my-sumおそらく <xf:output>.