The <xsl:choose> Element
The <xsl:choose> element is logically equivalent to an if-then-else statement,
although it has the feel of a case
or switch statement in other
programming languages. An <xsl:choose> contains at least one
<xsl:when> element (logically equivalent to an <xsl:if> element), with an optional
<xsl:otherwise>
element (logically equivalent to an else in other programming languages). The
test attribute of each <xsl:when> element is evaluated until
the XSLT processor finds one that evaluates to true. When that happens, the contents of
that <xsl:when> element are
evaluated. (Unlike a case or
switch element, each <xsl:when> is a separate test.) If
none of the <xsl:when>
elements have a test that is true,
the contents of the <xsl:otherwise> element (if there is
one) are processed.
<xsl:choose> example
Here’s a sample <xsl:choose> element that sets the
background color of the table’s rows. If the bgcolor attribute is coded on the <table-row> element, the value of
that attribute is used as the color; otherwise, the sample uses the
position() function and the
mod operator to cycle the colors
between black, green, red, and blue:
<xsl:template match="table-row"> <tr> <xsl:attribute name="bgcolor"> <xsl:choose> <xsl:when test="@bgcolor"> <xsl:value-of select="@bgcolor"/> </xsl:when> <xsl:when test="position() mod 4 = 0"> <xsl:text>black</xsl:text> </xsl:when> <xsl:when test="position() mod 4 = 1"> <xsl:text>green</xsl:text> </xsl:when> <xsl:when test="position() mod 4 = 2"> <xsl:text>red</xsl:text> ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access