如何在XSLT Saxon模板中注入Java值?

时间:2018-12-13 11:17:20

标签: saxon

我正在使用Saxon-HE(免费家庭版)来解析XMLXSLT的文件。现在,我想向xslt模板中注入一个静态值(应用程序启动的时间戳)。这样模板的每次运行都使用相同的时间戳。

那有可能吗?

1 个答案:

答案 0 :(得分:1)

使用静态参数

<xsl:param name="appStartTime" as="xs:dateTime" 
           static="yes" select="current-dateTime()"/>

您可以使用xsltCompiler.setParameter(QName, XdmValue)为参数提供一个值,否则它将默认为编译样式表的日期/时间。

您可以使用$appStartTime,以与其他变量引用相同的方式在模板的正文中引用参数。

对于无命名空间的参数名称,QName可以作为new QName("appStartTime")的形式提供。

您的情况下的XdmValue将是包含日期的XdmAtomicValue。从Java LocalDate开始,在Saxon 9.9中,构造它的最佳方法可能是使用new net.sf.saxon.DateValue(year, month, day)LocalDate提取字段,然后将DateValue提供给XdmAtomicValue.makeAtomicValue(Object)