Orbeon Forms:如何在带type="xpath"的Action中使用IF/THEN/ELSE
Orbeon Forms带
type="xpath"的Action中IF/THEN/ELSE的实现示例 一、在Action头部使用IF/THEN/ELSE
Action头部的条件需返回布尔值,通过XPath的if-then-else结构直接返回true()或false(),控制Action是否触发。
示例:根据输入框my-input的值是否大于10决定是否执行Action
if (number(/form/my-input) > 10) then true() else false()
将这段代码填入Action的「Condition」字段(头部条件区域),并设置Action的type="xpath"。当输入值大于10时,Action触发执行;否则不执行。
二、在Action主体使用IF/THEN/ELSE
Action主体的if-then-else用于分支处理逻辑,比如给不同字段赋值、执行不同操作。
示例1:基础分支赋值
根据输入值给result-output字段设置不同文本:
if (number(/form/my-input) > 10) then /form/result-output := "数值过大" else /form/result-output := "数值正常"
将这段代码作为Action主体内容,设置type="xpath"后,会自动根据条件完成赋值操作。
示例2:多条件嵌套分支
处理多场景的分支逻辑:
if (number(/form/my-input) > 20) then /form/result-output := "超出上限" else if (number(/form/my-input) < 5) then /form/result-output := "低于下限" else /form/result-output := "数值符合要求"
嵌套的if-then-else可覆盖更多分支场景,同样放在Action主体并设置type="xpath"即可生效。
注意事项
- XPath的
if-then-else语法要求严格,then和else部分必须都有合法的XPath表达式,不能省略任意一方 - 表单输入值默认是字符串类型,数值比较时需用
number()函数转换,避免字符串比较导致的逻辑错误
内容的提问来源于stack exchange,提问作者Pete Atkin
相关产品推荐
相关产品推荐

