2013-10-23 33 views
2

我有很多XSLT轉換,我正在遷移到新系統。爲了便於迴歸測試,我已經通過這些轉換運行了多個示例輸入,並且保留了在JUnit測試中使用的輸入/輸出對。在Java中設置Saxon的當前日期時間

這工作了好幾天,直到突然,其中一些測試失敗。失敗的根源被追蹤到日期轉換 - 有時日期是以月份日期對的形式給出的,並且根據該日期與今天的日期的關係來假定年份。所以,如果給定的日期是Oct. 1,轉換突然返回Oct. 1, 2014,當2013最初預計。

雖然我在讀撒克遜文檔,我碰到這個偶然:http://saxonica.com/documentation9.4-demo/html/using-xsl/commandline.html

-now:YYYY-MM-DDTHH:MM:SS + HH:MM

設置的電流 - 值dateTime()(和隱式時區())。這是爲測試而設計的,以便獲得可重複的結果以與參考結果進行比較,或者測試樣式表是否可以處理重要的日期和時間,如年終處理。

這是正是我所需要的,但不幸的是,我跑這些變換(及其相關的單元測試)在Java中,而不是在命令行。我環顧四周尋找某種變壓器方法,可能是我可以設置的一個屬性,但目前爲止沒有看到任何變化。 I 可能會重寫所有轉換以接受當前日期參數並以編程方式進行設置,但不僅僅是爲了測試目的。

tl; dr是否有任何選項可以強制某個日期從位於爪哇撒克遜的current-datetime()返回?

回答

2

Saxon API中的相應選項是Controller.setCurrentDateTime()。控制器是Saxon的JAXP Transformer的實現,所以你可以下載Transformer,或者在s9api中,你可以從XsltTransformer對象中獲得它。

+0

我正在使用XsltTransformer,所以'transformer.getUnderlyingController()。setCurrentDateTime()'很好! – Klazen108

相關問題