2011-09-28 58 views
3

我有许多表单都引用了“Header”剖面模板。我想从表单中的另一个控件引用本节中的控件。 (使用此处所示的方法:Write constraint to validate a field based on the value entered in another field in Orbeon Form BuilderOrbeon Form Builder - 引用剖面模板内的控件

我收到以下错误,当我尝试引用一个名为的部分模板“部分的”控制:

在一个独立的表达未声明的变量:$部分

这里是我使用XPath表达式:

if($section = 'PKP' or $section = '') then true() else false() 

有一个在名为“部分的”控制章节模板,但它似乎无法从表单的其余部分访问。

有没有人知道是否有可能引用Orbeon表单构建器中'Section Template'中的控件?

回答

5

如您所注意到的,假设字段名称为gaga,则无法使用名为$gaga的该部分以外的部分模板字段的值访问该值。这是因为您的表单中可能有多个相同部分模板的“实例”。假设您有一个“地址”部分模板,并且您在“帐单地址”和“送货地址”的表单中插入了两次。然后,如果在这些部分模板之外使用$city,则不知道它是否指向帐单或送货地址中的城市字段。

相反,向表单添加节模板时,您需要为这些节指定名称(例如billing-address),并使用XPath表达式(如/form/billing-address/city)引用帐单地址中城市字段的值。

0

我不使用窗体生成器来开发窗体,但根据错误,看看是否有$节变量声明的代码。任何以$开头的变量都是变量,因此需要变量声明。如果声明一个变量对应行可能看起来这

<xxforms:variable name="section" select="<some_xpath_expression_here>" /> 

如果你不想使用一个变量,然后尝试使用节点集参考。假设“节”位于“my-instance”模型实例中,您可以像这样编写节点集。

if(instance('my-instance')/section = 'PKP' or instance('my-instance')/section = '') then true() else false()