wso2 esb saxon ee配置
我试图使用XSLT中介,但在获取值时,我希望对其应用自定义groovy函数。 例如:wso2 esb saxon ee配置,wso2,wso2esb,saxon,Wso2,Wso2esb,Saxon,我试图使用XSLT中介,但在获取值时,我希望对其应用自定义groovy函数。 例如: <script language="groovy"> def myfunction(value) { return "A B C"; } </script> <xsl:template match="/"> <urn:item> <urn:productName> <xsl:value-of
<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>
def myfunction(值){
返回“abc”;
}
我得到的错误是:
net.sf.saxon.trans.XPathException:找不到名为myfunction()的匹配单参数函数
正如我所读到的,Saxon HE(wso2esb中的默认xslt处理器)不能调用扩展函数,但Saxon PE或EE可以
我遵循此处详述的步骤()但出现相同的错误
我的问题是:
有没有其他方法可以满足我的需要?我如何知道wso2 esb正在正确加载Saxon EE
非常感谢你的帮助
问候,,
R
=====================================================
解决了强>
- 按照@Carpentidge步骤在WSO2ESB中安装Saxon EE
- 在@MichaelKay链接之后,我使用Java来做我需要的事情
<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和@MichaelKaySaxon不支持用groovy编写的扩展函数,而且它不识别样式表文件中的
元素。Saxon定义扩展函数的机制如下所述:
Saxon不支持用groovy编写的扩展函数,并且它不能识别样式表文件中的
元素。Saxon定义扩展函数的机制如下所述:
您参考的用于重放saxon的手册不适用于ESB:)要替换用于ESB的saxon,请将
saxon9ee.jar
放在ESB\u HOME\lib\approved
文件夹中,然后删除saxon\u HE文件。将许可证文件放在ESB\u HOME
文件夹中(您可以从saxonica.com请求一个临时文件),然后重新启动ESB。
我在使用9.6.0时遇到一些困难,所以我建议使用9.5.1。
您参考的用于重放saxon的手册不适用于ESB:)要替换用于ESB的saxon,请将
saxon9ee.jar
放在ESB\u HOME\lib\approved
文件夹中,然后删除saxon\u HE文件。将许可证文件放在ESB\u HOME
文件夹中(您可以从saxonica.com请求一个临时文件),然后重新启动ESB。
我在使用9.6.0时遇到一些困难,所以我建议使用9.5.1。
谢谢你,迈克尔。我会看看那个链接。谢谢你,迈克尔。我会看看那个链接。谢谢!我将尝试您的方式,正如Michael所写,我认为我需要尝试使用Java或.Net脚本,而不是groovy。我真的不知道是否有可能做我想做的事情。我试过你的指示,但没有运气。我仍然有相同的错误:net.sf.saxon.trans.XPathException:找不到匹配的名为myfunction()的单参数函数另一个线索?如何检查Saxon EE是否已加载?多斯基帮不了我。。。谢谢。啊,但是现在你又回到了一个事实,撒克逊EE可能不支持你提到的功能,正如Micheal Kay在下面/上面解释的那样。我只是在回答你的问题“我如何检查saxon是否加载了”时发现你引用的手册不正确。没有任何东西直接表明它已加载,但我注意到它未加载时出现大量错误。因此,您可以删除.jar并查看在ESB启动期间是否注意到差异。(如果不是的话,你可能还有撒克逊人的档案……谢谢!我将尝试您的方式,正如Michael所写,我认为我需要尝试使用Java或.Net脚本,而不是groovy。我真的不知道是否有可能做我想做的事情。我试过你的指示,但没有运气。我仍然有相同的错误:net.sf.saxon.trans.XPathException:找不到匹配的名为myfunction()的单参数函数另一个线索?如何检查Saxon EE是否已加载?多斯基帮不了我。。。谢谢。啊,但是现在你又回到了一个事实,撒克逊EE可能不支持你提到的功能,正如Micheal Kay在下面/上面解释的那样。我只是在回答你的问题“我如何检查saxon是否加载了”时发现你引用的手册不正确。没有任何东西直接表明它已加载,但我注意到它未加载时出现大量错误。因此,您可以删除.jar并查看在ESB启动期间是否注意到差异。(如果不是的话,你可能还有撒克逊人,他在附近的某个地方归档了…)