如何在wso2 ESB中使用xslt介体?

时间:2013-05-17 09:13:53

标签: xslt wso2 wso2esb mediator

我有一个存储在local-entry中的xslt。我已将响应xml保存在属性中。我如何使用应该从local-entry和xslt介体获取xslt的xslt介体应该从属性中获取xml,并且转换的结果应该存储在属性中。怎么做到这一点?

我已经使用xslt介体实现了转换,我能够使用send mediator显示数据,但我想知道,如何将转换后的数据存储在属性中?在这方面非常需要解决方案。请帮忙。期待您的回答?提前致谢

我的序列是:

  <sequence>
<property xmlns:ns="http://org.apache.synapse/xsd" name="propertyResponse" expression="$body"/>
<xslt key="TransformResponseXML"/>
             <send/>
    </sequence>

我的身体是:

<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<reg_Collection xmlns="http://tempuri.org">
<Inputs>
<ID>Book_112</ID>
<Description>Name for Registeration of new Books</Description>
</Inputs>
</reg_Collection>
</soapenv:Body>

我的最终输出回复是:

<InputResponse xmlns="http://tempuri.org">
 <ID>Book_112</ID>
 <Description>Name for Registeration of new Books</Description>
</InputResponse >

现在我可以将转换后的xml显示为输出。我只想将此响应存储在Property mediator中。

2 个答案:

答案 0 :(得分:2)

另一种选择是使用rich mediator将转换后的消息体转储到属性。为此,您可以在XSLT介体配置之后使用以下配置代码段。

<enrich>
   <source type="body"/>
   <target type="property" property="PROPERTY_NAME"/>
</enrich>

注意:“PROPERTY_NAME”应替换为您要将邮件转储到的媒体资源的名称。

希望这有帮助!

此致 Prabath

答案 1 :(得分:0)

您可以使用属性介体[1]进行存储。为属性介体的转换消息提供XPATH操作。在存储XML消息提取时使用类型“OM”。 (如果你需要存储整个身体,请使用$ body和类似的,如果你只需要一个部分,请使用适当的XPATH。http://docs.wso2.org/wiki/display/ESB451/Synapse+XPath+Variables#SynapseXPathVariables-body

[1] http://docs.wso2.org/wiki/display/ESB460/Property+Mediator