Defines one branch of an <xsl:choose> element; <xsl:choose> is equivalent to an if-then-else statement.


Subinstruction (<xsl:when> always appears as a child of an <xsl:choose> element).

Required Attribute


Contains a boolean expression that is evaluated. If the expression evaluates to true, the contents of the <xsl:when> element are processed; otherwise, the contents of <xsl:when> are ignored. When evaluating an <xsl:choose> element, the XSLT processor examines each <xsl:when> until it finds one whose test attribute evaluates to true. That <xsl:when> element is processed and all subsequent <xsl:when> elements are ignored. Within an <xsl:choose> element, at most one <xsl:when> element will be processed.

Optional Attributes



An XSLT template.

Appears in

The <xsl:choose> element only.

Defined in

[1.0] XSLT section 9.2, “Conditional Processing with xsl:choose.”

[2.0] XSLT section 8.2, “Conditional Processing with xsl:choose.”


Here’s an example that uses <xsl:choose> to select the background color for the rows of an HTML table. We cycle among four different values, using <xsl:when> to determine the value of the style attribute in the generated HTML document. Here’s the XML document we’ll use:

<?xml version="1.0"?>
<!-- albums.xml --> <list xml:lang="en"> <title>Albums I've bought recently:</title> <listitem>The Sacred Art of Dub</listitem> <listitem>Only the Poor Man Feel It</listitem> <listitem>Excitable Boy</listitem> <listitem xml:lang="sw">Aki Special</listitem> ...

Get XSLT, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience live online training, plus books, videos, and digital content from nearly 200 publishers.