2011-09-28 57 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()