在WSO2ESB中,使用xslt介体,我想转换Web服务结果。我使用xslt文件。在这个文件中,我想做一些查找,将一些值转换成其他值。
在Oracle中,您可以使用dvm。
在普通的xslt中,看起来文档(' somefile.xml')函数可以解决这个问题,但是WSO2ESB在文件系统上查找xml文件,xslt介体上的resources属性执行不将document()内容翻译成正确的路径。 然后,我尝试通过将XML读入ESB中的属性来输入XML,然后将该属性传递给介体。这也行不通,因为XML的内容就是这样 作为一个字符串值而不是节点集传递。
我做错了什么 - 这样做的正确方法是什么?
答案 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表达式来选择要替换的源表达式和目标表达式。