如何在带有 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' 的值将显示第二个触发器。
比你的伪代码更冗长但有效。
我有一个 <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' 的值将显示第二个触发器。
比你的伪代码更冗长但有效。