多个xsl:在单个xsl:when中选择

gar*_* G4 3 xml xslt

如果我正在测试几个不同的已定义参数,我可以xsl:when在on xsl:choose语句中调用多个语句吗?所以,如果我有:

<parameters>
                    <param id="1">
                        <key>Load</key>
                        <value>XML</value>
                    </param>
                    <param id="2">
                        <key>Input</key>
                        <value>Http</value>
                    </param>
                    <param id="3">
                        <key>Response</key>
                        <value>Y</value>
                    </param> 
</parameters> 
Run Code Online (Sandbox Code Playgroud)

我可以调用三个不同<xsl:when>的单一<xsl:choose>来检查,因为我会有几个<param>不同的<value>,以后需要帮助调用不同的模板.

Dir*_*mar 6

是的,当然,你可以.您还可以添加xsl:otherwise节点来处理所有其他情况:

<xsl:choose>
    <xsl:when test="param/@id = '1'">
        <xsl:text>XML</xsl:text>
    </xsl:when>
    <xsl:when test="param/@id = '2'">
        <xsl:text>HTTP</xsl:text>
    </xsl:when>
    <xsl:when test="param/@id = '3'">
        <xsl:text>Y</xsl:text>
    </xsl:when>
    <xsl:otherwise>
        <xsl:text>Other format</xsl:text> 
    </xsl:otherwise>
</xsl:choose>
Run Code Online (Sandbox Code Playgroud)

这类似于switchC语言和Java或Select CaseVB中的语句.

当然,您可以检查任意XPath表达式,例如,您也可以检查

<xsl:when test="param/key = 'Input'">
    <!-- handle input -->
</xsl:when>
Run Code Online (Sandbox Code Playgroud)

  • 每个<xsl:when>互斥吗?所以如果所有三个测试都是真的,那么只会选择第一个吗? (3认同)