如何在wso2esb中使用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

我正在使用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://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>&gt;
              <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,尽管它会出现如下错误