Orbeon表单模板参数中的数字格式化问题咨询
解决Orbeon表单模板参数中的数字格式不一致问题
问题根源
当你在单选复选框的模板参数中直接引用单元格值时,Orbeon会输出数字的原始字符串形式(点作小数分隔、无千位分隔),而原字段和PDF渲染时会应用表单配置的本地化数字格式规则,因此出现格式差异。
简便解决方案
1. 使用Orbeon扩展函数xxf:format-number()(推荐)
Orbeon提供的xxf:format-number()会自动读取表单配置的本地化数字格式(逗号小数、点千位分隔),无需手动编写格式模板。在模板参数中直接使用:
xxf:format-number(//cell)
这个函数会和原字段、PDF保持完全一致的数字格式,是最简便的方案。
2. 手动指定本地化格式
如果需要自定义格式,可结合本地化语言代码调用标准XPath的format-number(),确保格式规则匹配你的需求:
format-number(//cell, "#,##0.00", 'fr-FR')
这里'fr-FR'对应逗号作小数分隔、点作千位分隔的本地化规则,可根据你的表单实际配置调整(比如德语区用'de-DE')。
3. 复用全局数字格式配置
若表单已在全局配置(如properties-local.xml)中定义了数字格式,可直接引用该配置,避免重复设置:
xxf:format-number(//cell, xxf:property('oxf.fr.detail.format.number'))
关于你之前尝试的说明
你使用的format-number(//cell,"99.999,00")无效,是因为标准XPath的format-number()默认以点为小数分隔符、逗号为千位分隔符,你的格式模板写法不符合该规则,导致解析错误。而Orbeon的扩展函数xxf:format-number()会适配你的本地化设置,因此是更可靠的选择。
内容的提问来源于stack exchange,提问作者swordMan7000
相关产品推荐
相关产品推荐

