XSLT <xsl:choose>

  • 定义

    <xsl:choose> 元素与 <xsl:when><xsl:otherwise> 结合使用以表示多个条件测试。
  • 语法

    <xsl:choose>
    <xsl:when test="expression">
      ... some output ...
    </xsl:when>
    <xsl:otherwise>
      ... some output ....
    </xsl:otherwise>
    </xsl:choose>
  • 示例

    要针对 XML 文件插入多条件测试,请将<xsl:choose><xsl:when><xsl:otherwise> 元素添加到 XSL 文件中:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:template match="/">
        <html>
        <body>
        <h2>我的CD收藏</h2>
        <table border="1">
          <tr bgcolor="#9acd32">
            <th>名称</th>
            <th>艺术家</th>
          </tr>
          <xsl:for-each select="catalog/cd">
            <tr>
              <td><xsl:value-of select="title"/></td>
              <xsl:choose>
                <xsl:when test="price > 10">
                  <td bgcolor="#ff00ff">
                  <xsl:value-of select="artist"/></td>
                </xsl:when>
                <xsl:otherwise>
                  <td><xsl:value-of select="artist"/></td>
                </xsl:otherwise>
              </xsl:choose>
            </tr>
          </xsl:for-each>
        </table>
        </body>
        </html>
      </xsl:template>
    </xsl:stylesheet>
    查看转换结果
    当CD的价格高于10时,以上代码将为 “艺术家” 列添加粉红色的背景色。
  • 另一个示例

    这是另一个包含两个 <xsl:when> 元素的示例:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:template match="/">
        <html>
        <body>
        <h2>我的CD收藏</h2>
        <table border="1">
          <tr bgcolor="#9acd32">
            <th>名称</th>
            <th>艺术家</th>
          </tr>
          <xsl:for-each select="catalog/cd">
            <tr>
              <td><xsl:value-of select="title"/></td>
              <xsl:choose>
                <xsl:when test="price > 10">
                  <td bgcolor="#ff00ff">
                  <xsl:value-of select="artist"/></td>
                </xsl:when>
                <xsl:when test="price > 9">
                  <td bgcolor="#cccccc">
                  <xsl:value-of select="artist"/></td>
                </xsl:when>
                <xsl:otherwise>
                  <td><xsl:value-of select="artist"/></td>
                </xsl:otherwise>
              </xsl:choose>
            </tr>
          </xsl:for-each>
        </table>
        </body>
        </html>
      </xsl:template>
    </xsl:stylesheet>
    查看转换结果
    当 CD 的价格高于 10 时,上面的代码将在 “艺术家” 列中添加粉红色的背景色,而在 CD 的价格高于 9 且低于或等于 10 时,将在灰色的背景色中添加。