我正在使用Saxon-HE
(免费家庭版)来解析XML
与XSLT
的文件。现在,我想向xslt模板中注入一个静态值(应用程序启动的时间戳)。这样模板的每次运行都使用相同的时间戳。
那有可能吗?
答案 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)
。