【发布时间】:2012-12-12 20:38:14
【问题描述】:
我正在使用 Orbeon Form Builder 中的输入字段,如果用户未在 Form Runner 中填写表单数据,则当表单数据将作为 xml 发送到服务时,应填写文本“null”。假设我必须用 XPath 表达式定义计算值字段。我该怎么做? 因为我不想在结果 xml 数据文件中有一个空元素。
【问题讨论】:
标签: xml xslt xpath orbeon xforms
我正在使用 Orbeon Form Builder 中的输入字段,如果用户未在 Form Runner 中填写表单数据,则当表单数据将作为 xml 发送到服务时,应填写文本“null”。假设我必须用 XPath 表达式定义计算值字段。我该怎么做? 因为我不想在结果 xml 数据文件中有一个空元素。
【问题讨论】:
标签: xml xslt xpath orbeon xforms
在 XForms 中提供“null”作为默认值的最简单方法是将“null”写为开始加载的文档实例中相关元素或属性的值。如果您希望元素 shoesize 和 sockscolor 默认为 null,请相应地编写您的 XForms 实例:
<xforms:instance id="main" xmlns="">
<mydata>
<name></name>
<age></age>
<shoesize>null</shoesize>
<sockscolor>null</sockscolor>
</mydata>
</xforms:instance>
如果您从外部文档加载文档实例,您将需要做一些更复杂的事情,例如在用户单击提交按钮时将 shoesize 和 sockscolor 的值设置为操作的一部分。比如:
<xforms:trigger>
<xforms:label>Submit</xforms:label>
<xforms:action ev:event="DOMActivate">
<xforms:setvalue ref="shoesize"
if=".=''"
value="'null'"/>
<xforms:setvalue ref="sockscolor"
if=".=''"
value="'null'"/>
<xforms:send submission="go"/>
</xforms:action>
</xforms:trigger>
不过,这只是通用的 XForms,并没有利用 FormsRunner 可能需要的任何特殊功能来简化此操作。
【讨论】: