XML を CDATA として変換したい、XSLT メディエーターを使用する、
クライアントで、以下のメッセージを 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"><![CDATA[</xsl:text>
<xsl:copy-of select="/"/>
<xsl:text disable-output-escaping="yes">]]></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><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></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>
誰かがそれを修正する方法を手伝ってくれるなら。