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> ...
Get XSLT, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.