繁体   English   中英

wso2 esb saxon ee配置

[英]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定义扩展功能的机制在此处描述:

http://www.saxonica.com/documentation/#!extensibility

替换您参考的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM