如何在 XSLT Saxon 模板中注入 java 值?
How to inject a java value in XSLT Saxon template?
我正在使用 Saxon-HE
(免费家庭版)用 XSLT
解析 XML
个文件。现在我想将一个静态值(应用程序启动的时间戳)注入到 xslt 模板中。这样模板的每个运行都使用相同的时间戳。
这可能吗?
使用静态参数
<xsl:param name="appStartTime" as="xs:dateTime"
static="yes" select="current-dateTime()"/>
您可以使用 xsltCompiler.setParameter(QName, XdmValue)
为参数提供一个值,否则它将默认为编译样式表的 date/time。
您可以使用 $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)
.
我正在使用 Saxon-HE
(免费家庭版)用 XSLT
解析 XML
个文件。现在我想将一个静态值(应用程序启动的时间戳)注入到 xslt 模板中。这样模板的每个运行都使用相同的时间戳。
这可能吗?
使用静态参数
<xsl:param name="appStartTime" as="xs:dateTime"
static="yes" select="current-dateTime()"/>
您可以使用 xsltCompiler.setParameter(QName, XdmValue)
为参数提供一个值,否则它将默认为编译样式表的 date/time。
您可以使用 $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)
.