2013-07-03 118 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/) 中测试了它,结果如我所料。 –