2013-04-30 51 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