Orbeon / XForms:根据其他输入控件更改下拉值

时间:2018-11-28 12:20:57

标签: forms orbeon xforms

我有一个文本控件my-text和一个下拉菜单my-dropdown。根据{{​​1}}的内容,my-text的项目集应更改。不幸的是,单个下拉菜单项没有my-dropdown属性,因此我想到了一个不同的解决方案。在我的Orbeon表单的visibility标签内,我定义了几个项目集:

<resource xml:lang="en">

现在,如果<first-itemset> <item> <label>AAA</label> <value>a</value> </item> <item> <label>BBB</label> <value>b</value> </item> </first-itemset> <second-itemset> <item> <label>XXX</label> <value>x</value> </item> <item> <label>YYY</label> <value>y</value> </item> </second-itemset> 的内容等于“第一个项目集”,则应使用第一个项目集,否则使用第二个。我怎样才能做到这一点? 在my-text内部,我需要

<fr:dropdown-select1 ...>

我需要写些什么而不是CONTENT_OF_MY-TEXT_HERE来获取实际内容,以便orbeon使用正确的项目集?

1 个答案:

答案 0 :(得分:1)

您问题的直接答案是:*[local-name() = xxf:value('choice-control')]。因此,您将拥有:

<xf:itemset 
    ref="
        $form-resources/
        *[local-name() = xxf:value('choice-control')]/
        item
    ">

这样,您将获得一个不同的项集,具体取决于在choice控件中键入的值:

Different itemset based on other control

但是,请记住,如果您在Form Builder中执行此操作,则对源所做的更改很容易丢失。例如,下次更改控件名称时,该ref表达式将被重置。因此,最好找到另一种方法来实现这一目标。例如,您可能有2个下拉菜单,根据另一个字段中的值输入器,在任何时间点只有一个下拉菜单可见。