1

繰り返されるノードの値を別の繰り返されるノードにコピーするための適切なアプローチを見つけることができませんでした。一般的なプログラミング言語では、ある配列の内容を別の配列にコピーすることを意味します。

            <xforms:instance id="main-instance">
                <contacts>
                    <contact>
                        <contact-id>111</contact-id>
                        <contact-name></contact-name>
                        <contact-location></contact-location>
                    </contact>
                    <contact>
                        <contact-id>222</contact-id>
                        <contact-name></contact-name>
                        <contact-location></contact-location>
                    </contact>
                    <contact>
                        <contact-id>333</contact-id>
                        <contact-name></contact-name>
                        <contact-location></contact-location>
                    </contact>
                </contacts>

                <alternate-contacts>
                    <contact>
                        <alt-contact-id></alt-contact-id>
                        <control-id></control-id>
                        <control-rules></control-rules>
                        <tranmission-method></tranmission-method>
                    </contact>
                    <contact>
                        <alt-contact-id></alt-contact-id>
                        <control-id></control-id>
                        <control-rules></control-rules>
                        <tranmission-method></tranmission-method>
                    </contact>
                    <contact>
                        <alt-contact-id></alt-contact-id>
                        <control-id></control-id>
                        <control-rules></control-rules>
                        <tranmission-method></tranmission-method>
                    </contact>
                </alternate-contacts>
            </xforms:instance>

チェックボックスがオンになっている場合(アクションを開始するイベント)、1番目のcontact-id値を1番目にコピーする必要がありますalt-contact-id

            <xforms:action ev:event="xforms-value-changed">
                //TO DO here
            </xforms:action>

あなたのアイデアを提供してください

編集:チェックボックスをオンにすると、<alternate-contacts>ノードは次のようになります。

                <alternate-contacts>
                    <contact>
                        <alt-contact-id>111</alt-contact-id>
                        <control-id></control-id>
                        <control-rules></control-rules>
                        <tranmission-method></tranmission-method>
                    </contact>
                    <contact>
                        <alt-contact-id>222</alt-contact-id>
                        <control-id></control-id>
                        <control-rules></control-rules>
                        <tranmission-method></tranmission-method>
                    </contact>
                    <contact>
                        <alt-contact-id>333</alt-contact-id>
                        <control-id></control-id>
                        <control-rules></control-rules>
                        <tranmission-method></tranmission-method>
                    </contact>
                </alternate-contacts>
4

1 に答える 1

2

iterateXForms 2.0で間もなく導入される属性1を探していますが、質問のタグに基づいて使用していると思われるOrbeonFormsですでにサポートされています。これを使用すると、次のように書くことができます。

<xforms:action iterate="/root/contacts/contact">
    <xforms:var name="position" value="position()"/>
    <xforms:var name="id" value="contact-id"/>
    <xforms:setvalue ref="/root/alternate-contacts/contact[$position]/alt-contact-id" value="$id"/>
</xforms:action>

このコードを使用した完全な例も参照してください。


1この機能は長い間サポートされており、xxforms:iterate="…"これが拡張機能であることを示すために使用する必要がありましたが、これはまもなく標準になるため、を使用するだけで済みますiterate="…"

于 2012-07-20T00:04:22.747 に答える