2013-07-03 148 views
1

我想翻譯XML作爲CDATA,使用XSLT調解員,WSO2 ESB XSLT調解員CDATA

在客戶端,發送以下信息按application/xml,

<users> 
    <user> 
    <name>user-1</name> 
    <sex>M</sex> 
    <job>DBA</job> 
    </user> 
    <user> 
    <name>user-2</name> 
    <sex>F</sex> 
    <job>BPMS</job> 
    </user> 
</users> 
在代理服務

<inSequence xmlns="http://ws.apache.org/ns/synapse"> 
    <xslt key="test_xslt"/> 
    <log level="full"> 
     <property name="text" value="===================="/> 
    </log> 
</inSequence> 

和地方進入 「test_xslt」 XSLT,

<xsl:stylesheet version="2.0" 
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/> 
    <xsl:template match="/"> 
     <body xmlns="http://ws.apache.org/ns/synapse"> 
     <op_test_xml_parm> 
      <clob_xml> 
      <xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text> 
      <xsl:copy-of select="/"/> 
      <xsl:text disable-output-escaping="yes">]]&gt;</xsl:text> 
      </clob_xml> 
     </op_test_xml_parm> 
     </body> 
    </xsl:template> 
</xsl:stylesheet> 

但產量:

[2013-07-03 18:30:42,998] INFO - LogMediator To: /services/test_xslt, MessageID: urn:uuid:7dff989b-7dc1-41b4-8826-55685009d4b5, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><body xmlns="http://ws.apache.org/ns/synapse"> 
    <op_test_xml_parm> 
     <clob_xml>&lt;users xmlns=""> 
      &lt;user> 
       &lt;name>user-1&lt;/name> 
       &lt;sex>M&lt;/sex> 
       &lt;job>DBA&lt;/job> 
      &lt;/user> 
      &lt;user> 
       &lt;name>user-2&lt;/name> 
       &lt;sex>F&lt;/sex> 
       &lt;job>BPMS&lt;/job> 
      &lt;/user> 
     &lt;/users></clob_xml> 
    </op_test_xml_parm> 
</body></soapenv:Body></soapenv:Envelope> 
[2013-07-03 18:30:43,005] INFO - LogMediator text = ==================== 

我希望得到的結果是:

<body xmlns="http://ws.apache.org/ns/synapse"> 
    <op_test_xml_parm> 
     <clob_xml><![CDATA[<users xmlns=""> 
      <user> 
       <name>user-1</name> 
       <sex>M</sex> 
       <job>DBA</job> 
      </user> 
      <user> 
       <name>user-2</name> 
       <sex>F</sex> 
       <job>BPMS</job> 
      </user> 
     </users>]]></clob_xml> 
    </op_test_xml_parm> 
</body> 

如果任何人能幫助我如何解決它。

回答

0

這不是一個問題。您所期望的(即使用CDATA標籤)和您得到的(即「& lt;」s)在語義上是相同的。

您可以繼續操作而不用擔心這一點。

+0

嗨Bhathiya,謝謝你的回覆。
我想將CDATA( ......)作爲參數傳遞給WSO2 DSS並調用存儲過程。
但結果無法完成WSO2 DSS的進程。 –

+0

我複製 '<用戶的xmlns = 「」> <用戶> <名稱>用戶-1 < /名稱> <性>中號< /性別> <作業> DBA < /作業> < /用戶> <用戶> <名稱>用戶-2 < /名稱> <性>˚F< /性別> <作業> BPMS < /作業> < /用戶> </users>' 到WSO2 DSS「試試」頁面,**正在工作**。 但是它不適用於WSO2 DSS **。 我不知道。 –

+0

你能解釋你是如何做到的以及你得到的錯誤? – Bee

0

問題是在你的XSLT script..there是資源如何插入使用xslt..you可以檢查他們CDATA數..

+1

嗨Ratha, 謝謝你的建議。 但在將XSLT中介添加到WSO2 ESB之前,我在 [鏈接](http://xslttest.appspot.com/) 中測試了它,結果如我所料。 –