1

根据以下 URL,我启用了 XSLT 2.0 支持,但是当我这样做时,看起来 TryIt 服务不起作用。

阿查拉博客条目

尝试使用 TryIt 服务时出现以下错误。

[2012-09-10 11:47:03,491]  INFO - CarbonAuthenticationUtil 'admin' logged in at [2012-09-10 11:47:03,0491] from IP address 0:0:0:0:0:0:0:1%0
Warning: at xsl:stylesheet on line 32 of :
  Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor
Warning: on line 286 of :
  The attribute axis starting at a namespace() node will never select anything
Error on line 1603 of :
  XPTY0004: Required item type of second operand of '|' is node(); supplied value has item
  type xs:string
[2012-09-10 11:47:09,515] ERROR - Util Required item type of second operand of '|' is node(); supplied value has item type xs:string
; SystemID: ; Line#: 1603; Column#: -1
net.sf.saxon.trans.DynamicError: Required item type of second operand of '|' is node(); supplied value has item type xs:string

是否有任何解决方法,以便我们可以将 XSLT 2.0 和 TryIt 都与 WSO2 ESB 4.0.3 一起使用。

希望得到答复。谢谢阿比吉特

4

2 回答 2

0

最新的 WSO2 ESB (v4.5.0) 通过 Saxson 支持 XSLT 2.0 [1]。

[1] http://mail.wso2.org/mailarchive/announce/2012-September/000026.html

问候,/女娲

于 2012-09-11T09:57:22.820 回答
0

您需要将标准 XSLT 处理器替换为能够处理 XSLT 2.0 的新处理器,如WSO2 ESB 4.0.3 的博客解决方案中所述:

  1. 删除 ESB_HOME/lib/endorsed/ 中的 xalan-2.7.0.wso2v1.jar
  2. 从 ESB_HOME/repository/components/plugins 中删除 saxon-8.9.0.wso2v1.jar
  3. 将 saxon9he.jar 复制到 lib/endorsed 并启动服务器。

SAXON 9 你可以在这里下载

请注意,您还将获得 SOAP 信封和正文作为 XSLT 的输入,因此您可能还需要这些元素的 xsl:template:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.0">
<xsl:output method="xml" encoding="utf-8" indent="yes"/>

<xsl:template match="/soapenv:Envelope|soapenv:Body">
  <xsl:copy>
    <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>

...
于 2012-09-11T07:31:12.410 回答