2013-04-30 53 views
0

我使用xslt转换通过Apache FOP库将Java对象格式化为pdf。 特别是我想格式化我的对象的一个​​字段,一个java.util.Date到DD/MM/YYYY格式。为了能够使用内置函数“format-dateTime”进行格式化,我将xslt版本设置为2.0,并将转换处理器切换到saxon-8.7,因为xalan不支持版本2.0,然后我在xslt中添加了日期格式指令,如下所示:通过xsl内置funciotn格式化java.util.Date“format-dateTime”显示语言

Value date: <xsl:value-of select="format-dateTime(valueDate, '[D01]/[M01]/[Y0001]') " /> 

启动改造前,我打印的日期字段到stdout,以确保它是在输入对象正确估价:

valueDate: Thu Jan 01 01:00:00 CET 1970 

这就是我所期待的。

但是在输出文本中,xsl转换之后,会在(正确格式化)日期之前出现不希望的“语言”信息。

[Language: en]01/01/1970 

有人知道为什么吗?

+0

--------------------------- – 2013-04-30 14:31:57

回答

0

为什么选择撒克逊8.7?这是一个非常老的版本,实际上早于2007年1月的XSLT 2.0建议。目前的版本是9.5。

我想你会发现这会消失,如果你使用更新的版本。但是,如果您的Java配置具有Saxon不支持的默认语言环境,它仍然可能发生。 (该消息表明Saxon选择用英语输出日期,尽管这不是您要求的语言,这隐含地是您的默认语言)。

如果转移到更新版本无法解决问题,请尝试将format-date的语言参数设置为字符串“en”。

+0

是的,这是语言回退,使不明确的字符串出现。将format-dateTime的语言参数设置为字符串“en”。由于项目依赖关系的原因,我无法切换到saxon 9.5。 非常感谢。 – avalori 2013-04-30 14:41:57