XSLT <xsl:choose> Element

Het XSLT <xsl:choose> element wordt gebruikt om meerdere condities te testen door <xsl:when> en <xsl:otherwise> te combineren.

<xsl:choose> element

syntaxis

<xsl:choose>
  <xsl:when test="expressie">
    ... output ...
  </xsl:when>
  <xsl:otherwise>
    ... output ...
  </xsl:otherwise>
</xsl:choose>

Waar de selectievoorwaarden moeten worden geplaatst

Om meerdere voorwaardelijke tests in een XML-bestand in te voegen, voeg <xsl:choose>, <xsl:when> en <xsl:otherwise> toe aan het XSL-bestand:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
<xsl:template match="/">
  <html>
  <body>
    <h2>My CD Collection</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>Title</th>
        <th>Artist</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>

Deze code voegt een achtergrondkleur van roze toe aan de "Artist"-kolom wanneer de prijs van de CD hoger is dan 10.

Het bovenstaande conversieresultaat ziet er zo uit:

Bekijk dit XML-bestand,Bekijk dit XSL-bestand,Bekijk het resultaat.

Een ander voorbeeld

Dit is een ander voorbeeld met twee <xsl:when>-elementen:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
<xsl:template match="/">
  <html>
  <body>
    <h2>My CD Collection</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>Title</th>
        <th>Artist</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>

Het bovenstaande code zal een rosakleurige achtergrondkleur toevoegen aan de "Artist" kolom wanneer de prijs van de CD hoger is dan 10, en een grijs achtergrondkleur toevoegen aan de "Artist" kolom wanneer de prijs van de CD hoger is dan 9 en lager of gelijk aan 10.

Het bovenstaande conversieresultaat ziet er zo uit:

Bekijk dit XML-bestand,Bekijk dit XSL-bestand,Bekijk het resultaat.