I want to translate XML as CDATA, use XSLT mediator,

in client, send below message as 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>

in proxy service,

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

and XSLT of local entry "test_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>

But the output:

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

The result I expect is:

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

if any one can help me how to fix it.

有帮助吗?

解决方案

That's not an issue. The one you expect (i.e. with CDATA tag) and the one you get (i.e. with "& lt;"s) are the same, semantically.

You can proceed without worrying about that.

其他提示

Issue is in your xslt script..there are number of resources on how to insert cdata using xslt..you can check them..

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top