嵌套<xsl:if>&<xsl:when>

gar*_* G4 2 xml xslt

你可以嵌套xsl:if在嵌套的xsl:when中,例如:

    <xsl:choose>
        <xsl:when test="param/@id  =  '1' " >
            <xsl:if test="param/value = 'XML' ">
                <xsl:when test="param/@id = '2' ">
                    <xsl:if test="param/value = 'HTTP' ">
                        <xsl:when test="param/@id = '3' ">
                            <xsl:if test="param/value = 'Y' ">
                                <xsl:call-template name="buildPayload"/>
                            </xsl:if>
                        </xsl:when>
                    </xsl:if>
                </xsl:when>
            </xsl:if>
        </xsl:when>
    </xsl:choose>
Run Code Online (Sandbox Code Playgroud)

可以使用它,还是可以将其简化为更紧凑的代码?

ori*_*ena 7

没有尝试它:我认为<xsl:when>不能在<xsl:if>没有另一个<xsl:choose>之间的子节点.但是,你想做什么?如果我看到了正确的话,你想要运行<call-template>当且仅当(param/@id='1' and param/value='XML') or (param/@id='2' and param/value='HTTP') or (param/@id='3' and param/value='Y')...尝试将其作为测试值:

<xsl:if test="(param/@id='1' and param/value='XML') or (param/@id='2' and param/value='HTTP') or (param/@id='3' and param/value='Y')">
    <xsl:call-template name="buildPayload"/>
</xsl:if>
Run Code Online (Sandbox Code Playgroud)