如何在wso2esb中使用XSLT中介
我正在使用wso2esb 4.7.0和WSO2DS3.0.1 我正在获取正确的数据,但无法发送到客户端。问题是无法转换邮件我的邮件显示错误 本地条目是xslt文件如何在wso2esb中使用XSLT中介,xslt,wso2,xslt-2.0,wso2esb,wso2dss,Xslt,Wso2,Xslt 2.0,Wso2esb,Wso2dss,我正在使用wso2esb 4.7.0和WSO2DS3.0.1 我正在获取正确的数据,但无法发送到客户端。问题是无法转换邮件我的邮件显示错误 本地条目是xslt文件 <?xml version="1.0" encoding="UTF-8"?> <localEntry xmlns="http://ws.apache.org/ns/synapse" key="emp_xslt"> <xsl:stylesheet xmlns:xsl="http
<?xml version="1.0" encoding="UTF-8"?>
<localEntry xmlns="http://ws.apache.org/ns/synapse" key="emp_xslt">
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:f="http://ws.wso2.org/dataservice"
version="1.0">
<xsl:output method="xml"/>
<xsl:param name="eage"/>
<xsl:param name="eno"/>
<xsl:template match="/">
<xsl:apply-templates select="/f:empCollection"/>
</xsl:template>
<f:for-each select="//f:emp">
<tr>
<eage>
<xsl:value-of select="eage"/>
</eage>>
<eno>
<xsl:value-of select="eno"/>
</eno>
</tr>
</f:for-each>
</xsl:stylesheet>
<description/>
</localEntry>
xslt配置是这样的
<sequence xmlns="http://ws.apache.org/ns/synapse" name="emp2">
<property xmlns:ns="http://org.apache.synapse/xsd" xmlns:s="http://ws.wso2.org/dataservice" name="eno" expression="//s:empCollection/s:emp/s:eno" scope="default" type="STRING"/>
<property xmlns:ns="http://org.apache.synapse/xsd" xmlns:s="http://ws.wso2.org/dataservice" name="eage" expression="//s:empCollection/s:emp/s:eage" scope="default" type="STRING"/>
<log level="full">
<property name="response" value="not working"/>
<property xmlns:ns="http://org.apache.synapse/xsd" name="eno" expression="get-property('eno')"/>
<property xmlns:ns="http://org.apache.synapse/xsd" name="eage" expression="get-property('eage')"/>
</log>
<xslt xmlns:f="http://ws.wso2.org/dataservice" xmlns:ns="http://org.apache.synapse/xsd" key="emp_xslt" source="/f:empCollection/f:emp">
<property name="eno" expression="get-property('eno')"/>
<property name="eage" expression="get-property('eage')"/>
</xslt>
<log level="full"/>
</sequence>
Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><empCollection xmlns="http://ws.wso2.org/dataservice"><emp><ename>faisal</ename><eno>5</eno><eage>26</eage></emp><emp><ename>suresh</ename><eno>6</eno><eage>26</eage></emp><emp><ename>prashant</ename><eno>7</eno><eage>28</eage></emp><emp><ename>anil</ename><eno>2</eno><eage>27</eage></emp><emp><ename xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><eno>0</eno><eage>0</eage></emp><emp><ename>-1</ename><eno>0</eno><eage>0</eage></emp></empCollection></soapenv:Body></soapenv:Envelope>
但我希望将disply数组数据格式发送给客户端,因为我是这样从esb获取数据的
<sequence xmlns="http://ws.apache.org/ns/synapse" name="emp2">
<property xmlns:ns="http://org.apache.synapse/xsd" xmlns:s="http://ws.wso2.org/dataservice" name="eno" expression="//s:empCollection/s:emp/s:eno" scope="default" type="STRING"/>
<property xmlns:ns="http://org.apache.synapse/xsd" xmlns:s="http://ws.wso2.org/dataservice" name="eage" expression="//s:empCollection/s:emp/s:eage" scope="default" type="STRING"/>
<log level="full">
<property name="response" value="not working"/>
<property xmlns:ns="http://org.apache.synapse/xsd" name="eno" expression="get-property('eno')"/>
<property xmlns:ns="http://org.apache.synapse/xsd" name="eage" expression="get-property('eage')"/>
</log>
<xslt xmlns:f="http://ws.wso2.org/dataservice" xmlns:ns="http://org.apache.synapse/xsd" key="emp_xslt" source="/f:empCollection/f:emp">
<property name="eno" expression="get-property('eno')"/>
<property name="eage" expression="get-property('eage')"/>
</xslt>
<log level="full"/>
</sequence>
Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><empCollection xmlns="http://ws.wso2.org/dataservice"><emp><ename>faisal</ename><eno>5</eno><eage>26</eage></emp><emp><ename>suresh</ename><eno>6</eno><eage>26</eage></emp><emp><ename>prashant</ename><eno>7</eno><eage>28</eage></emp><emp><ename>anil</ename><eno>2</eno><eage>27</eage></emp><emp><ename xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><eno>0</eno><eage>0</eage></emp><emp><ename>-1</ename><eno>0</eno><eage>0</eage></emp></empCollection></soapenv:Body></soapenv:Envelope>
信封:faisal526suresh626prashant728anil22700-100
我的esb日志正在控制台中评估许多错误,其中显示xpath错误某个时间name=null是否可以生成我的数据数组
[2013-10-10 15:07:44,425] INFO - LogMediator To: /services/xsltExmp, MessageID: urn:uuid:619c7f86-f0d1-4f57-935b-66b485f8fa08, Direction: request
[2013-10-10 15:07:44,440] INFO - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:9f8bf2a6-5736-48c9-bda5-c163c6c571d6, Direction: response, response = not working, eno = 567200, eage = 2626282700, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><empCollection xmlns="http://ws.wso2.org/dataservice"><emp><ename>faisal</ename><eno>5</eno><eage>26</eage></emp><emp><ename>suresh</ename><eno>6</eno><eage>26</eage></emp><emp><ename>prashant</ename><eno>7</eno><eage>28</eage></emp><emp><ename>anil</ename><eno>2</eno><eage>27</eage></emp><emp><ename xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><eno>0</eno><eage>0</eage></emp><emp><ename>-1</ename><eno>0</eno><eage>0</eage></emp></empCollection></soapenv:Body></soapenv:Envelope>
[2013-10-10 15:07:44,442] ERROR - XSLTMediator The evaluation of the XPath expression /f:empCollection/f:emp did not result in an OMNode : null
[2013-10-10 15:07:44,442] ERROR - XSLTMediator Unable to perform XSLT transformation using : Value {name ='null', keyValue ='emp_xslt'} against source XPath : /f:empCollection/f:emp reason : The evaluation of the XPath expression /f:empCollection/f:emp did not result in an OMNode : null
org.apache.synapse.SynapseException: The evaluation of the XPath expression /f:empCollection/f:emp did not result in an OMNode : null
at org.apache.synapse.util.xpath.SourceXPathSupport.selectOMNode(SourceXPathSupport.java:100)
at org.apache.synapse.mediators.transform.XSLTMediator.performXSLT(XSLTMediator.java:211)
at org.apache.synapse.mediators.transform.XSLTMediator.mediate(XSLTMediator.java:191)
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71)
at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:114)
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:232)
at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:443)
at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:166)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:222)
at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:679)
[2013-10-10 15:07:44,444] INFO - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:9f8bf2a6-5736-48c9-bda5-c163c6c571d6, Direction: response, MESSAGE = Executing default 'fault' sequence, ERROR_CODE = 0, ERROR_MESSAGE = Unable to perform XSLT transformation using : Value {name ='null', keyValue ='emp_xslt'} against source XPath : /f:empCollection/f:emp reason : The evaluation of the XPath expression /f:empCollection/f:emp did not result in an OMNode : null, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><empCollection xmlns="http://ws.wso2.org/dataservice"><emp><ename>faisal</ename><eno>5</eno><eage>26</eage></emp><emp><ename>suresh</ename><eno>6</eno><eage>26</eage></emp><emp><ename>prashant</ename><eno>7</eno><eage>28</eage></emp><emp><ename>anil</ename><eno>2</eno><eage>27</eage></emp><emp><ename xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><eno>0</eno><eage>0</eage></emp><emp><ename>-
[2013-10-10 15:07:44425]信息-LogMediator To:/services/xsltExmp,MessageID:urn:uuid:619c7f86-f0d1-4f57-935b-66b485f8fa08,方向:请求
[2013-10-10 15:07:44440]信息-日志调解人收件人:http://www.w3.org/2005/08/addressing/anonymous,WSAction:,SOAPAction:,MessageID:urn:uuid:9f8bf2a6-5736-48c9-bda5-c163c6c571d6,方向:响应,响应=不工作,eno=567200,eage=2626282700,信封:faisal526suresh626prashant728anil22700-100
[2013-10-10 15:07:44442]错误-XSLTMediator对XPath表达式/f:empCollection/f:emp的求值未导致OMNode:null
[2013-10-10 15:07:44442]错误-XSLTMediator无法对源XPath使用:Value{name='null',keyValue='emp_XSLT'}执行XSLT转换:/f:empCollection/f:emp原因:对XPath表达式/f:empCollection/f:emp的求值没有导致OMNode:null
org.apache.synapse.SynapseException:XPath表达式/f:empCollection/f:emp的求值未导致OMNode:null
位于org.apache.synapse.util.xpath.SourceXPathSupport.selectOMNode(SourceXPathSupport.java:100)
位于org.apache.synapse.mediators.transform.XSLTMediator.performXSLT(XSLTMediator.java:211)
位于org.apache.synapse.mediators.transform.XSLTMediator.mediate(XSLTMediator.java:191)
位于org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71)
位于org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:114)
位于org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:232)
位于org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:443)
位于org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:166)
在org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)上
位于org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:222)
位于org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
运行(Thread.java:679)
[2013-10-10 15:07:44444]信息-日志调解人收件人:http://www.w3.org/2005/08/addressing/anonymous,WSAction:,SOAPAction:,MessageID:urn:uuid:9f8bf2a6-5736-48c9-bda5-c163c6c571d6,方向:响应,消息=执行默认的“错误”序列,错误代码=0,错误消息=无法使用:值执行XSLT转换{name='null',keyValue='emp_xslt'}针对源XPath:/f:empCollection/f:emp原因:XPath表达式/f:empCollection/f:emp的求值没有导致OMNode:null,信封:faisal526suresh626prashant728anil22700-
100由于ypu需要xslt中介器中的所有emp元素,请按如下所示从xslt中介器中删除source属性
<xslt xmlns:f="http://ws.wso2.org/dataservice" xmlns:ns="http://org.apache.synapse/xsd" key="emp_xslt">
<property name="eno" expression="get-property('eno')"/>
<property name="eage" expression="get-property('eage')"/>
</xslt>
ERROR\u code=0,ERROR\u MESSAGE=无法使用:Value{name='null',keyValue='emp\u XSLT'}执行XSLT转换针对源XPath:/f:empCollection/f:emp原因:对XPath表达式/f:empCollection/f:emp的求值未导致OMNode:null,Envelope:ERROR-XSLTMediator无法使用:Value{name='null',keyValue='orderTransformer'}对源XPath:s11:Body/child:*[position()=1]执行XSLT转换| s12:Body/child::*[position()=1]原因:无法使用XSLT结果org.apache.synapse.synapse创建OmeElement异常:无法使用XSLT结果创建OmeElement,尽管它会出现如下错误