Provides multiple conditional testing in conjunction with the xsl:choose and xsl:otherwise elements.
Syntax
<xsl:when
expr="script-expression"
language="language-name"
test="pattern" >
</xsl:when>
Attributes
expr
Script expression evaluating to a Boolean. If this expression returns TRUE, and the test pattern succeeds, the contents of xsl:when are placed in the output. If one of these tests fails, the next xsl:when or xsl:otherwise in the xsl:choose block is tested.
language
Active Scripting language used for the expression in the expr attribute. If left unspecified, the current scripting language is used, as specified by a language attribute on an ancestor. If no such attribute exists, JScript® (compatible with ECMA 262 language specification) is used. This attribute accepts the same values as the language attribute on the HTML SCRIPT element.
test
XSL pattern to be tested against the current context. The default value is ".", which indicates evaluation of the current node and thus is always true. For a complete description, see XSL Pattern Syntax.
Element Information
Number of occurrences | Unlimited |
Parent elements | xsl:choose |
Child elements | xsl:apply-templates, xsl:attribute, xsl:choose, xsl:comment, xsl:copy, xsl:element, xsl:eval, xsl:for-each, xsl:if, xsl:pi, xsl:value-of |
Requires closing tag | Yes. XSL is an XML grammar and, like all XML grammars, all tags must have closing tags to satisfy the definition of well-formed. |
Remarks
Describes one of the alternatives to be chosen by the xsl:choose. The default alternative is described by the xsl:otherwise element.
For simple conditional testing, use the xsl:if element.
Example
This example shows a template for "order" elements, and inserts an HR or BR before the order's contents based on the order's "total" element value. If the total is less than 10, a red HR will be generated; if the total is less than 20, a pink HR will be generated; otherwise a BR element will be created.
<xsl:template match="order">
<xsl:choose>
<xsl:when test="total[. $lt$ 10]">
<HR STYLE="color:red"/>
</xsl:when>
<xsl:when test="total[. $lt$ 20]">
<HR STYLE="color:pink"/>
</xsl:when>
<xsl:otherwise>
<BR/>
</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates />
</xsl:template>
See Also
Conditional Templates, Influencing Transformations Through Script