我有大量的 XSLT 转换要迁移到新系统。为了便于回归测试,我通过这些转换运行了多个示例输入,并保留了输入/输出对以用于 JUnit 测试。
这工作了几天,直到突然间,其中一些测试失败了。故障的根源可追溯到日期转换 - 有时日期以月-日对的形式给出,并且根据该日期与今天日期的关系假设年份。因此,如果给定的日期是Oct. 1
,则转换会突然返回Oct. 1, 2014
,2013
这是最初预期的时间。
当我阅读撒克逊文档时,我偶然发现了这个:http ://saxonica.com/documentation9.4-demo/html/using-xsl/commandline.html
-现在:yyyy-mm-ddThh:mm:ss+hh:mm
为转换设置 current-dateTime()(和 implicit-timezone())的值。这是为测试而设计的,以便获得可重复的结果以与参考结果进行比较,或者测试样式表是否可以处理重要的日期和时间,例如年终处理。
这正是我所需要的,但不幸的是,我在 java 中运行这些转换(及其随附的单元测试),而不是从命令行。我环顾四周寻找某种转换器方法,也许是我可以设置的属性,但到目前为止什么也没看到。我可以重写所有转换以接受当前日期参数并以编程方式设置它,但不仅仅是为了测试目的。
tl; drcurrent-datetime()
是否有任何选项可以强制从Java 中的撒克逊返回某个日期?