Microsoft XML 2.5 SDK


 

xsl:choose Element

[This is preliminary documentation and subject to change.]

Provides multiple conditional testing in conjunction with the xsl:otherwise and xsl:when elements.

Syntax

<xsl:choose  >

</xsl:choose>

Element Information

Number of occurrences Unlimited
Parent elements xsl:attribute, xsl:comment, xsl:copy, xsl:element, xsl:for-each, xsl:if, xsl:otherwise, xsl:pi, xsl:template, xsl:when, output elements
Child elements xsl:otherwise, xsl:when
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

The xsl:when children of the xsl:choose element are tested in order from top to bottom until a test attribute on one of these elements accurately describes conditions present in the source data or an xsl:otherwise element is reached. Once an xsl:when or xsl:otherwise element is chosen, the xsl:choose block is exited. No explicit break or exit statement is required.

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