在wso2 esb 4.9.0中,我定义了下一个xslt介体:
<localEntry key="TestXslt">
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="param1">
<FileList>
<File Name="b" automated="false" valid="true"/>
<File Name="c" automated="false" valid="true"/>
<File Name="d" automated="false" valid="true"/>
<File Name="e" automated="false" valid="true"/>
<File Name="f" automated="false" valid="true"/>
</FileList>
</xsl:param>
<xsl:output indent="yes"/>
<xsl:template match="/">
<xsl:for-each select="$param1/FileList/File">
<qq>TEST</qq>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
<description/>
</localEntry>
这个xslt只需创建5个xml标签。预期产出:
<qq>TEST</qq>
<qq>TEST</qq>
<qq>TEST</qq>
<qq>TEST</qq>
<qq>TEST</qq>
但是当我调用这个xslt介体时,我的消息是空的。 我可能做错了什么。可能是我应该激活XSLT 2.0。我该怎么办?
答案 0 :(得分:1)
在WSO2中,使用xslt介体传递给TestXslt的参数变为字符串。
为什么你不能使用当前的有效负载消息,你想做什么?
如果您需要当前消息的XML有效负载+ xsl中的其他xml源(从注册表中加载示例),则可以在调用xslt介体之前在当前消息中添加此xml片段。使用rich mediator例子:
<enrich>
<source clone="true" xpath="get-property('some_external_xml')"/>
<target type="body" action="child"/>
</enrich>