如何在带有html元素的xforms中使用'if'属性?

时间:2016-03-01 06:00:32

标签: xforms xsltforms xforms-betterform

我想根据xforms实例值使用<div>元素。

类似的东西:

    <xf:trigger appearance="minimal"  >
                <xf:label >
                  ..
                 <div  if="instance('scope')= 'user'">   <!-- I know this doesn't work -->
                 </div>
                  ..
                </xf:label>
                    ....      
     </xf:trigger>   

这是'if'属性,我们检查的实例值仅适用于<xf:action>,<xf:submission> etc。元素而不是常规的html元素?还是有一种方法我错过了?

2 个答案:

答案 0 :(得分:2)

对于条件HTML元素,XForms允许使用ref属性定义xf​​:group元素。

模拟“if”的技巧是使用谓词,如“。[instance('scope')='user']”:这样,上下文节点保持不变,但xf:group内容将如果谓词中的条件为false,则禁用。

答案 1 :(得分:1)

'if'属性仅对XForms操作元素(XForms 1.1)有效。但是,正如Alain指出的那样,您可以使用'ref'属性(为所有XForms控件定义)并使用相关性来实现您想要的(条件显示元素)。绑定表达式必须计算为布尔值“true”或“false”,这反过来使控件可见或不可见(相关)。

触发元素也可以用'ref'绑定。因此,对于您的示例,您可以:

<xf:trigger ref="someXPath[. eq 'fooValue']">...</xf:trigger>
...
<xf:trigger ref="someXPath[. eq 'barValue']">...</xf:trigger>

'fooValue'的值将显示第一个触发器。 值'barValue'将显示第二个触发器。

比你的伪代码更冗长,但有效。