WSO2 ESB, экранирующий сущность xml для исправления формы
Я застрял на создании выходного сообщения из WSO2 ESB 5.0. Правильная форма сообщения должна быть:
<request lang="11" user="user" pwd="pwd">
<query dateformat="%d-%m-%Y" maxrecords="100">
<tables>
<table tablename="Company"/>
</tables>
<condition>
<cond tablename="Company" fieldname="Upd" op=">" value="10.11.2016"/>
<cond tablename="Company" fieldname="UpdTime" op=">" value="01:00"/>
</condition>
Самое интересное - это "& gt;" в атрибуте "op". Должно быть "& gt;" а не ">". CDATA и этот персонаж тоже не работает:
&
Я попытался с фабрикой полезной нагрузки, преобразованием xslt и посредником сценария с другими значениями, но безуспешно. Мои неудачные попытки:
<payloadFactory description="Create Request" media-type="xml">
<format>
<request lang="11" user="user" pwd="pwd">
<query dateformat="%d-%m-%Y" maxrecords="100">
<tables>
<table tablename="Company"/>
</tables>
<condition>
<cond tablename="Company" fieldname="Upd" op=">" value="07.10.2016"/>
<cond tablename="Company" fieldname="UpdTime" op=">" value="01:00"/>
</condition>
</query>
</request>
</format>
<args/>
</payloadFactory>
С XSLT:
<xslt description="Create Request" key="get-companies"/>
<localEntry key="get-companies" xmlns="http://ws.apache.org/ns/synapse">
<xsl:stylesheet exclude-result-prefixes="ws" version="1.0" xmlns:ws="http://ws.company.com/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="UTF-8" indent="yes" method="xml" omit-xml-declaration="no"/>
<xsl:template match="/">
<xsl:element name="request">
<xsl:attribute name="lang">11</xsl:attribute>
<xsl:attribute name="user">user</xsl:attribute>
<xsl:attribute name="pwd">pwd</xsl:attribute>
<xsl:element name="query">
<xsl:attribute name="maxrecords">100</xsl:attribute>
<xsl:attribute name="dateformatin">%d-%m-%Y</xsl:attribute>
<tables xmlns="">
<table tablename="Company"/>
</tables>
<condition xmlns="">
<xsl:element name="cond">
<xsl:attribute name="tablename">Company</xsl:attribute>
<xsl:attribute name="fieldname">Upd</xsl:attribute>
<xsl:attribute name="op">></xsl:attribute>
<xsl:attribute name="value">
<xsl:value-of select="07.01.2016"/>
</xsl:attribute>
</xsl:element>
<cond fieldname="UpdTime" op=">" tablename="Company" value="01:00"/>
</condition>
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Сценарий Посредник:
<script language="js"><![CDATA[mc.setPayloadXML(<request lang="11" user="user" pwd="pwd">
<query dateformat="%d-%m-%Y" maxrecords="100">
<tables>
<table tablename="Company"/>
</tables>
<condition>
<cond tablename="Company" fieldname="Upd" op="&gt;" value="07.01.2016"/>
<cond tablename="Company" fieldname="UpdTime" op="&gt;" value="01:00"/>
</condition>
</query>
</request>); ]]></script>
Пожалуйста, помогите мне найти правильную форму.