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

How to use the 'if' attribute in xforms with html elements?

我有一个 <div> 元素,我想根据 xforms 实例值使用它。

类似于:

    <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 元素?或者有什么方法我想念的吗?

对于条件 HTML 元素,XForms 允许定义具有 ref 属性的 xf:group 元素。

模拟 "if" 的技巧是使用谓词,如“.[instance('scope') = 'user']”:这样,上下文节点仍然是相同,但如果谓词中的条件为假,xf:group 内容将被禁用。

'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' 的值将显示第二个触发器。

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