gpt4 book ai didi

java - 在 Java 中设置 Saxon 的当前日期时间

转载 作者:行者123 更新时间:2023-11-30 09:16:06 24 4
gpt4 key购买 nike

我有大量 XSLT 转换要迁移到新系统。为了便于回归测试,我通过这些转换运行了多个示例输入,并保留了输入/输出对以用于 JUnit 测试。

这几天效果很好,直到突然之间,其中一些测试失败了。失败的根源被追查到日期转换——有时日期以月-日对的形式给出,年份是根据该日期与今天日期的关系假定的。因此,如果给定日期是 Oct。 1,转换突然返回 Oct。 1、2014,原本预计是2013

当我阅读 Saxon 文档时,我偶然发现了这个:http://saxonica.com/documentation9.4-demo/html/using-xsl/commandline.html

-now:yyyy-mm-ddThh:mm:ss+hh:mm

Sets the value of current-dateTime() (and implicit-timezone()) for the transformation. This is designed for testing, to enable repeatable results to be obtained for comparison with reference results, or to test that stylesheets can handle significant dates and times such as end-of-year processing.

正是我需要的,但不幸的是,我在 java 中运行这些转换(及其伴随的单元测试),而不是从命令行运行。我四处寻找某种更改器(mutator)方法,也许是我可以设置的属性,但到目前为止什么也没看到。我可以重写所有转换以接受当前日期参数并以编程方式设置该参数,但不希望仅出于测试目的。

tl;dr 是否有任何选项可以强制从 Java 中的 Saxon 中的 current-datetime() 返回特定日期?

最佳答案

Saxon API 中对应的选项是 Controller.setCurrentDateTime()。 Controller 是 Saxon 对 JAXP Transformer 的实现,因此您可以向下转换 Transformer,或者在 s9api 中,您可以从 XsltTransformer 对象获取它。

关于java - 在 Java 中设置 Saxon 的当前日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19549445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com