问题在WSO2中与xslt处理器相关

时间:2016-05-17 15:15:30

标签: xslt xpath wso2 saxon

在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。我该怎么办?

1 个答案:

答案 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>