2012-09-11 161 views
1

根據以下URL,我啓用了XSLT 2.0支持,看起來像TryIt服務的外觀如何,當我這樣做時。WSO2 ESB 4.0.3和XSLT 2.0支持

Achala Blog Entry

,當我嘗試使用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。

希望回答。 感謝 作者Abhijit

+0

您可以提供您的.xsl文件嗎?因爲我的答案如下(來自Achala博客)適用於我 – FiveO

回答

0

您需要通過一個較新的一個能夠處理XSLT 2.0替換標準的XSLT處理器一樣記錄在博客solution for WSO2 ESB 4.0.3

  1. 中刪除的Xalan-2.7.0.wso2v1.jar ESB_HOME/lib目錄/覈准/
  2. 從ESB_HOME刪除撒克遜8.9.0.wso2v1.jar /存儲庫/組件/插件
  3. 複製saxon9he.jar到LIB /批准並啓動服務器。

SAXON 9 you can download here

要知道,你會得到SOAP信封和身體也輸入到你的XSLT,所以也許你需要有在xsl:模板這些元素太:

<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> 

... 
+0

我知道新的ESB支持XSLT 2.0。當我根據上述博客「嘗試它」更改服務不起作用。這不是我的xsl。 –