我想知道我们是否失去了对 XSLT-Stylesheets 的自定义 Java 函数支持(ESB 4.0.3 中的 Xalan 可用),因为 Saxon 现在是 WSO2 ESB 4.5 中的 XSLT 处理器(HE 版)?
原始 XSLT,与 ESB 4.0.3 一起使用:
我在 esb4.5.0/repository/components/dropins 中复制了自定义 DateParser.jar
<xsl:stylesheet extension-element-prefixes="transform" version="1.0"
xmlns:transform="xalan://my.extension.DateParser"
...
<xsl:value-of select="transform:sdf('dd.MM.yyyy HH:mm:ss',./timestamp)"/>
这显示在错误日志中(缩短):
ERROR XSLTMediator Unable to perform XSLT transformation using :
Caused by: net.sf.saxon.trans.XPathException: Cannot find a matching function named {xalan://my.extension.DateParser}sdf()
为 Saxon 更改了 XSLT,不适用于 ESB 4.5.0 ###
由于 Saxon 以与 Xalan 不同的方式处理自定义 java 函数,因此我像这样更改了 XSLT-Stylesheet
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:transform="java:my.extension.DateParser"
...
<xsl:value-of select="transform:sdf('dd.MM.yyyy HH:mm:ss',./timestamp)"/>
现在这出现在错误日志中(缩短):
Caused by: net.sf.saxon.trans.XPathException: Cannot find a matching ... function named {java:my.extendsion.DateParser}sdf(). Note that direct calls to Java methods are not available under Saxon-HE
我想知道标准 WSO2 ESB 发行版(包含 Saxon-HE)是否不支持“直接调用 Java 方法”。由于 Saxon-Enterprise(付费版)将提供这种支持。