如何在wso2esb中的xslt介体中使用查找

时间:2014-06-24 14:05:01

标签: xslt properties wso2 wso2esb mediator

在WSO2ESB中,使用xslt介体,我想转换Web服务结果。我使用xslt文件。在这个文件中,我想做一些查找,将一些值转换成其他值。

在Oracle中,您可以使用dvm。

在普通的xslt中,看起来文档(' somefile.xml')函数可以解决这个问题,但是WSO2ESB在文件系统上查找xml文件,xslt介体上的resources属性执行不将document()内容翻译成正确的路径。 然后,我尝试通过将XML读入ESB中的属性来输入XML,然后将该属性传递给介体。这也行不通,因为XML的内容就是这样 作为一个字符串值而不是节点集传递。

我做错了什么 - 这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

您可以注入文档的内容&some39.xml'在调用XSLT介体之前作为当前消息中的子树:

定义名为' somefile'的本地条目。使用' somefile.xml'

的内容

使用rich mediator将其内容注入当前消息:

<enrich>
  <source clone="true" xpath="get-property('somefile')"/>
  <target type="body" action="child"/>
</enrich>

在您的XSL转换中,使用此内容而不是引用$ somefile / xxx ... (并在结果中忘记此内容)

答案 1 :(得分:0)

默认情况下,XSLT介体作用于邮件正文,因此不必使用文档函数单独加载XML。有关xslt介体的示例,请参阅this link to the current wso2esb documentation

如果要替换XML中的一些值,可能需要尝试使用rich mediator。富集中介可以使用Xpath表达式来选择要替换的源表达式和目标表达式。