Sunday 15 January 2012

java - Issue with XSLT Transformation using WSO2 ESB -



java - Issue with XSLT Transformation using WSO2 ESB -

i struggling xslt transformer mediator using xslt mediator in wso2 esb 4.8.1. xslt :

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:fn="http://www.w3.org/2005/02/xpath-functions" xmlns:ns="http://ep.service.ims.com" xmlns:ax21="http://ep.service.ims.com/xsd" exclude-result-prefixes="ns fn"> <xsl:param name="amount"/> <xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/> <xsl:template match="/"> <xsl:apply-templates select="//ns:getresponse" /> </xsl:template> <xsl:template match="ns:getresponse" xmlns:ns="http://ep.service.ims.com"> <ep:credit xmlns:ep="http://ep.service.ims.com" xmlns:xsd="http://ep.service.ims.com/xsd"> <ep:info> <xsd:amount> <xsl:value-of select="$amount"/> </xsd:amount> <xsd:personinfo> <xsd:address> <xsl:value-of select="ns:return/ax21:address"/> </xsd:address> <xsd:id> <xsl:value-of select="ns:return/ax21:id"/> </xsd:id> <xsd:name> <xsl:value-of select="ns:return/ax21:name"/> </xsd:name> </xsd:personinfo> </ep:info> </ep:credit> </xsl:template> </xsl:stylesheet>

and request xml :

<soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:body> <ns:getresponse xmlns:ns="http://ep.service.ims.com"> <ns:return xsi:type="ax23:personinfo" xmlns:ax23="http://ep.service.ims.com/xsd" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <ax23:address>ims heath, omega c, india, bnag</ax23:address> <ax23:id>100</ax23:id> <ax23:name>wso2</ax23:name> </ns:return> </ns:getresponse> </soapenv:body> </soapenv:envelope>

i tried xslt transformation in eclipse , online tool (http://xslt.online-toolz.com/tools/xslt-transformation.php ) , working fine. when trying same in wso2 esb, facing next exception.....

org.apache.synapse.mediators.transform.xsltmediator} - fatal error occurred in stylesheet parsing : net.sf.saxon.trans.xpathexception: supplied file not appear stylesheet value {name ='null', keyvalue ='xslt1'} {org.apache.synapse.mediators.transform.xsltmediator} javax.xml.transform.transformerconfigurationexception: failed compile stylesheet. 1 error detected. @ net.sf.saxon.preparedstylesheet.prepare(preparedstylesheet.java:220) org.apache.synapse.core.axis2.synapsecallbackreceiver.receive(synapsecallbackreceiver.java:170) @ org.apache.axis2.engine.axisengine.receive(axisengine.java:180) @ org.apache.synapse.transport.passthru.clientworker.run(clientworker.java:225) tid: [0] [esb] [2014-10-08 13:53:20,705] error {org.apache.synapse.mediators.transform.xsltmediator} - unable perform xslt transformation using : value {name ='null', keyvalue ='xslt1'} against source xpath : s11:body/child::*[position()=1] | s12:body/child::*[position()=1] reason : error creating xslt transformer using : value {name ='null', keyvalue ='xslt1'} {org.apache.synapse.mediators.transform.xsltmediator} org.apache.synapse.synapseexception: error creating xslt transformer using : value {name ='null', keyvalue ='xslt1'} @ org.apache.synapse.mediators.abstractmediator.handleexception(abstractmediator.java:313) caused by: javax.xml.transform.transformerconfigurationexception: failed compile stylesheet. 1 error detected.

the synapse proxy xml is:

<?xml version="1.0" encoding="utf-8"?> <proxy xmlns="http://ws.apache.org/ns/synapse" name="creditproxy" transports="https http" startonload="true" trace="disable"> <target> <insequence> <log level="full"> <property name="sequence" value="insequence - request creditproxy"/> </log> <property xmlns:pep="http://com.ims.proxy" name="org_id" expression="//pep:credit/pep:id"/> <property xmlns:pep="http://com.ims.proxy" name="org_amount" expression="//pep:credit/pep:amount"/> <enrich> <source type="inline" clone="true"> <pep:get xmlns:pep="http://ep.service.ims.com"> <pep:id>?</pep:id> </pep:get> </source> <target type="body"/> </enrich> <enrich> <source type="property" property="org_id"/> <target xmlns:pep="http://ep.service.ims.com" xpath="//pep:get/pep:id"/> </enrich> <log level="full"> <property name="sequence" value="insequence - request personinfoservice"/> </log> <property name="state" value="person_info_request"/> <send> <endpoint key="personinfoepr"/> </send> </insequence> <outsequence> <switch source="get-property('state')"> <case regex="person_info_request"> <log level="full"> <property name="sequence" value="outsequence - state 01 - response personinfoservice"/> </log> <xslt key="xslt"> <property name="amount" expression="get-property('org_amount')"/> </xslt> <log level="full"> <property name="sequence" value="outsequence - state 01 - request creditservice"/> </log> <property name="state" value="credit_request"/> <send> <endpoint key="creditepr"/> </send> </case> <case regex="credit_request"> <log level="full"> <property name="sequence" value="outsequence - state 02 - response creditservice"/> </log> <send/> </case> </switch> </outsequence> </target> <publishwsdl uri="file:resources/creditproxy.wsdl"/> </proxy>

what may cause of exception if xslt transformation working fine in other tool ?

the key in proxy correct. might have pasted wrong xml proxy,

here proxy:

<?xml version="1.0" encoding="utf-8"?> <proxy xmlns="http://ws.apache.org/ns/synapse" name="creditproxy" transports="https,http" statistics="disable" trace="disable" startonload="true"> <target> <insequence> <log level="full"> <property name="sequence" value="insequence - request creditproxy"/> </log> <property xmlns:pep="http://com.ims.proxy" name="org_id" expression="//pep:credit/pep:id"/> <property xmlns:pep="http://com.ims.proxy" name="org_amount" expression="//pep:credit/pep:amount"/> <enrich> <source type="inline" clone="true"> <pep:get xmlns:pep="http://ep.service.ims.com"> <pep:id>?</pep:id> </pep:get> </source> <target type="body"/> </enrich> <enrich> <source type="property" clone="true" property="org_id"/> <target xmlns:pep="http://ep.service.ims.com" xpath="//pep:get/pep:id"/> </enrich> <log level="full"> <property name="sequence" value="insequence - request personinfoservice"/> </log> <property name="state" value="person_info_request"/> <send> <endpoint key="personinfoepr"/> </send> </insequence> <outsequence> <switch source="get-property('state')"> <case regex="person_info_request"> <log level="full"> <property name="sequence" value="outsequence - state 01 - response personinfoservice"/> </log> <xslt key="xslt1"> <property name="amount" expression="get-property('org_amount')"/> </xslt> <log level="full"> <property name="sequence" value="outsequence - state 01 - request creditservice"/> </log> <property name="state" value="credit_request"/> <send> <endpoint key="creditepr"/> </send> </case> <case regex="credit_request"> <log level="full"> <property name="sequence" value="outsequence - state 02 - response creditservice"/> </log> <send/> </case> </switch> </outsequence> </target> <publishwsdl uri="file:resources/creditproxy/creditproxy.wsdl"/> <description/> </proxy>

local entry:

<localentry xmlns="http://ws.apache.org/ns/synapse" key="xslt1" src="file:resources/creditproxy/persontocredit.xslt"></localentry>

java xml xslt wso2

No comments:

Post a Comment