【问题标题】:How can i copy the repeated node values to another repeated nodes in Orbeon如何将重复的节点值复制到 Orbeon 中的另一个重复节点
【发布时间】:2012-07-05 07:01:38
【问题描述】:

我找不到将重复节点值复制到另一个重复节点的好方法。在通用编程语言中,我的意思是将一个数组的内容复制到另一个数组。

            <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>

当一个复选框被选中时(启动操作的事件),我应该将第一个 contact-id 值复制到第一个 alt-contact-id 等等。

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

请提供你的想法

编辑:所以当复选框被选中时,&lt;alternate-contacts&gt; 节点应该是这样的

                <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>

【问题讨论】:

  • 能否请您编辑问题并提供所需的确切结果?我怀疑使用 XSLT 这将是微不足道的。您会考虑 XSLT 解决方案吗?
  • @Dimitre:抱歉,我最初的 xml 节点名称错误,我现在更正了问题。谢谢
  • @DimitreNovaatchev:我不确定是否可以在 xforms 中使用 XSLT 解决方案
  • Kaipa M Sarma:好像可以用:copia.ogbuji.net/files/presentations/xslt-xforms.xhtml

标签: xpath orbeon xforms


【解决方案1】:

您正在寻找 XForms 2.0 即将推出的 iterate attribute1,但 Orbeon Forms 已经支持它,您似乎正在根据您问题上的标签使用它。有了它,你可以写:

<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>

还可以使用此代码查看full example


1 这个功能已经被支持很久了,你必须使用xxforms:iterate="…" 来表示这是一个扩展,但是由于这很快就会成为标准,你现在可以使用@ 987654326@.

【讨论】:

  • 太棒了.. 我快到了,但我没有像你一样使用变量。非常感谢提供的完整示例,因为它将对许多新手有用。谢谢!
  • 太好了,感谢您确认这对您有用,我很高兴这对您有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-21
  • 1970-01-01
  • 2017-05-15
  • 2017-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多