0

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

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

在开始转换之前,我将 Date 字段打印到 stdout 以确保它在输入对象中的值正确:

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

这就是我所期望的。

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

[Language: en]01/01/1970

有人知道为什么吗?

4

1 回答 1

0

为什么选择 Saxon 8.7?这是一个非常旧的版本,它实际上早于 2007 年 1 月的 XSLT 2.0 推荐。当前版本是 9.5。

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

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

于 2013-04-30T14:35:39.670 回答