我有许多表格都引用了“标题”部分模板。我想从表单中的另一个控件引用此部分模板中的控件。 (使用此处显示的方法:Write constraint to validate a field based on the value entered in another field in Orbeon Form Builder)
当我尝试在节模板中引用名为“section”的控件时出现以下错误:
独立表达式中的未声明变量:$ section
这是我正在使用的XPath表达式:
if($section = 'PKP' or $section = '') then true() else false()
在Section模板中有一个名为'section'的控件,但似乎无法从表单的其余部分访问它。
是否有人知道是否可以引用Orbeon表单构建器中“Section Template”中的控件?
答案 0 :(得分:5)
正如您所注意到的,假设字段名称为$gaga
,则无法使用命名gaga
访问该部分之外的部分模板字段的值。这是因为您可以在表单中拥有相同节模板的多个“实例”。想象一下,您有一个“地址”部分模板,并在“结算地址”和“送货地址”的表单中插入两次。然后,如果在这些部分模板之外使用$city
,您将不知道它是否引用了结算或送货地址中的“城市”字段。
相反,在将部分模板添加到表单时,您需要为这些部分指定名称(例如billing-address
)并使用XPath表达式(例如/form/billing-address/city
)来引用该值帐单邮寄地址中的城市字段。
答案 1 :(得分:0)
我不使用表单构建器来开发表单,但根据错误,查看是否有$ section的变量声明代码。任何以$开头的东西都是变量,因此需要变量声明。如果声明了变量,则相应的行可能看起来是
<xxforms:variable name="section" select="<some_xpath_expression_here>" />
如果您不想使用变量,请尝试使用nodeset引用。假设'section'在'my-instance'模型实例中,你可以像这样编写节点集。
if(instance('my-instance')/section = 'PKP' or instance('my-instance')/section = '') then true() else false()