问题描述
我们有一个用例,我们必须从 Xlst 模板调用实例方法。我们使用的是 Saxon-HE 9.6 版本。经过这个stack-overflow post。我们尝试使用 Java 对象作为参数 psssing XML 转换器,然后更新模板以调用该实例方法。但它给出了 javax.xml.transform.TransformerConfigurationException。
如果我们可以使用 Saxon HE 从 XSLT 模板调用实例方法,请有人帮忙吗?
Java 对象:
public Double getValue(String s1,String s2,Double d1) {
// perform some operation and call other service to fetch data.
Double response = 2.0;
return response;
}
Xlst 模板: 补充:
xmlns:util="java:com.test.utils.TestUtils"
<!--<xsl:value-of select="util:getValue($utils,$country1,$country2,$value)"/>
将此util对象传递给xlst的代码
Transformer transformer = factory.newTransformer(xsltTemplate);
transformer.setParameter("utils",util);
解决方法
不,此功能在 Saxon-HE 中不可用。还有其他选择:请参阅 www.saxonica.com 处的文档中的“可扩展性”部分。
还要注意 9.6 是一个相当老的版本。由于 Saxon 在开发 XSLT 2.0 和 3.0 规范草案时对其进行跟踪,因此最好避免使用旧版本的产品,因为在产品发布时规范处于不断变化中。