在WSO2 ESB中的内联XML条目中使用If / else语句

时间:2017-03-21 15:32:54

标签: if-statement xslt wso2 wso2esb wso2carbon

我在WSO2中使用Local Entry Inlined XML Entry来执行一些转换。我必须检查一个元素是硬编码响应值到我的客户端响应。例如,如果他们发送09作为响应代码,我必须在转换后发送00。

<xsl:element name="ns1:ResponseCode">
     <xsl:value-of select="//jsonObject/d/SuccessCode"/>
</xsl:element>

1 个答案:

答案 0 :(得分:0)

您可以使用<xsl:choose></xsl:choose>元素 它可以包含您需要的<xsl:when test="..."></xsl:when>个元素和一个<xsl:otherwise></xsl:otherwise>元素。

在您描述的情况下:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns1="http://www.example.com">
<xsl:output method="xml" />

<xsl:template match="@* | node()">
    <xsl:copy>
        <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="SuccessCode">
    <xsl:element name="ns1:ResponseCode">
        <xsl:choose>
            <xsl:when test="//jsonObject/d/SuccessCode/text()='09'">
                <xsl:value-of select="'00'"/>
            </xsl:when>
            <xsl:otherwise/>  
        </xsl:choose>               
    </xsl:element>
</xsl:template>

请注意,这是一个示例,您应该添加其他转换并更新命名空间。