[英]wso2 esb saxon ee configuration
我正在尝试使用XSLT介体,但是在获取值时,我想对其应用自定义的Groovy函数。 例如:
<script language="groovy">
def myfunction(value) {
return "A B C";
}
</script>
<xsl:template match="/">
<urn:item>
<urn:productName>
<xsl:value-of select="myfunction(PRODUCTNAME)"/>
</urn:productName>
</urn:item>
</xsl:template>
我得到的错误是: net.sf.saxon.trans.XPathException:找不到名为myfunction()的匹配1参数函数
如我所读,Saxon HE(wso2esb中的默认xslt处理器)无法调用扩展功能,但Saxon PE或EE可以。
我遵循此处详细介绍的步骤( http://nandikajayawardana.blogspot.com.ar/2012/12/how-to-replace-saxonhe940wso2v1jar-in.html ),但存在相同的错误。
我的问题是:还有其他方法可以满足我的需求吗? 我怎么知道wso2 esb正在正确加载Saxon EE?
非常感谢您的帮助!
问候,河。
================================================== ===
解决了!
按照@Carpentidge步骤在WSO2ESB中安装Saxon EE。
在@MichaelKay链接之后,我使用Java来完成所需的操作
首先,下载common-lang3.jar.zip并将.jar文件复制到repository / components / lib中。 然后,如下修改xslt:
<xsl:template match="/">
<xsl:variable name="pn" select="CSITPRODUCTNAME"/>
<urn:item>
<urn:productName>
<xsl:value-of select="lang:unescapeHtml($pn)" xmlns:lang="java:org.apache.commons.lang.StringEscapeUtils"/>
</urn:productName>
</urn:item>
</xsl:template>
谢谢你们两个的帮助@Carpentidge和@MichaelKay
Saxon不支持以groovy编写的扩展功能,并且无法识别样式表文件中的<script>
元素。 Saxon定义扩展功能的机制在此处描述:
替换您参考的saxon的手册不适用于ESB :)要替换esb的saxon,请将saxon9ee.jar
放在ESB_HOME\\lib\\endorsed
文件夹中,然后删除saxon_HE文件。 将许可证文件放入ESB_HOME
文件夹(您可以从saxonica.com请求一个临时文件),然后重新启动ESB。 我在使用9.6.0时遇到了一些困难,所以我会说使用9.5.1。 http://www.saxonica.com/download/download_page.xml
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.