我正在开发WSO2 ESB代理服务,需要完成XSLT转换,从xml获取一部分值并与另一个.dsb文件的结果结合
这是我的物业价值低于
*<xslt key="conf:/input/proxy_input_transform.xslt"/>
<property name="DETAILS" expression="//QUARTERLY_DATA" />
<QUARTERLY_DATA>
<ROW>
<SAP_CUST_ID>0000905133</SAP_CUST_ID>
<AOC_FLAG>N</AOC_FLAG>
<LOB>AppleCare</LOB>...."
但是在调用outsequence
中的.dbs文件后完成xlst <xslt key="conf:/output/proxy_output_transform.xslt" >
<property name="details" expression value="get-property('DETAILS')"/>
</xslt>
我在转换后的xml中获得了如下所示的值。
<QUARTERLY_DATA>
<ROW>
<SAP_CUST_ID>0000905133</SAP_CUST_ID>
<AOC_FLAG>N</AOC_FLAG>
<LOB>AppleCare</LOB>....
我不确定为什么“&lt;”正在变为“&amp; lt;”。 有人可以就此发现他们的发现吗? 注意:我能够成功从属性中检索值,该值只有单个值而不是XML标记。在将xml放入消息上下文时,将属性中的类型设置为“OM”。 这是我的代理服务
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="TQS_SIST_BILLING_PCH_N" transports="https http" startOnLoad="true" trace="enable" statistics="enable">
<target>
<inSequence onError="conf:/tqs/common/FaultHandler_Seq.xml">
<property xmlns:sist="http://sist.tqs.ist.apple.com/sist_request" name="IN_SAP_SOLD_TO" expression="//sist:ACC_BILLING_REQ_PCH_FLAG_N/sist:CUST_SRCH_INPUT/sist:SAP_SOLD_TO"/>
<xslt key="conf:/tqs/sist/billing_pch_n/proxy_input_transform.xslt"/>
<property name="REQUEST" value="DETAILS_REQUEST"/>
<property name="SAP_CUST_ID" expression="//ACC_BILLING_REQ_PCH_FLAG_N" type="OM"/>
<send>
<endpoint key="conf:/tqs/sist/billing_pch_n/ds_endpoint.xml"/>
</send>
</inSequence>
<outSequence onError="conf:/tqs/common/FaultHandler_Seq.xml">
<switch source="get-property('REQUEST')">
<case regex="DETAILS_REQUEST">
<log level="custom">
<property name="sequence" value="outSequence - response from Details Service"/>
</log>
<property name="DETAILS" expression="//QUARTERLY_DATA"/>
<log level="custom" separator=",">
<property name="DETAILS------at entry level" expression="get-property('DETAILS')"/>
</log>
<enrich>
<source type="property" clone="true" property="SAP_CUST_ID"/>
<target type="body"/>
</enrich>
<log level="full">
<property name="sequence" value="outSequence - request for Summary Service"/>
</log>
<property name="REQUEST" value="SUMMARY_REQUEST"/>
<send>
<endpoint key="conf:/tqs/sist/billing_pch_n/ds_summary_endpoint.xml"/>
</send>
</case>
<case regex="SUMMARY_REQUEST">
<log level="full">
<property name="sequence" value="outSequence - response from Summary Service"/>
</log>
<log level="custom" separator=",">
<property name="DETAILS------222222" expression="get-property('DETAILS')"/>
</log>
<xslt key="conf:/tqs/sist/billing_pch_n/proxy_output_transform.xslt">
<property name="details" expression="get-property('DETAILS')"/>
</xslt>
<send/>
</case>
</switch>
</outSequence>
</target>
答案 0 :(得分:0)
我认为问题出在您的xslt中,您可以使用“输出方法”作为文本。使用output method="xml"
例如:<xsl:output method="xml" version="1.0" encoding="UTF-8" />
答案 1 :(得分:0)
您是否可以通过直接访问配置的.xml文件来尝试编辑配置文件。只需使用文本编辑器进行所有配置编辑,然后尝试运行您的方案。有时,当您在管理控制台中编辑配置时,配置文件中会包含此类字符。你能尝试一下吗?