Bedingte Verarbeitung und Selektion
Wie auch in anderen Programmiersprachen gibt es in XSLT Elemente, die eine Ablaufsteuerung erlauben, d. h. »wenn-dann«-Bedingungen auswerten. Hierzu dient u. a. das Element <xsl:if>. Es umschließt einen Block, der immer nur dann ausgeführt wird, wenn der XPath-Ausdruck des test-Attributes zutrifft. Auf diese Weise kann z. B. der Inhalt von Elementen abgefragt werden (nicht das Vorhandensein des Elements selbst, das ja bereits über <xsl:template match=...> abgeprüft wird).
<xsl:if test="NAME='Montero'">
<xsl:value-of select="NAME"/>
<xsl:text> (Spanier)</xsl:text>
</xsl:if>
Dieses Fragment bewirkt folgende Ausgabe:
Montero (Spanier)
Anders als in den meisten Programmiersprachen ist allerdings die dazugehörige else-Anweisung nicht Teil der XSLT-Spezifikation. Um mehrere Alternativen zu formulieren, verwendet man daher nicht das <xsl:if> Element, sondern greift auf die Elemente <xsl:choose>, <xsl:when> und <xsl:otherwise> zurück. Diese ähneln den aus Java oder C bekannten Anweisungen switch, case und default.
Mit <xsl:choose> wird eine Verzweigung eingeleitet, mit <xsl:when> werden die möglichen Fälle aufgelistet und mit <xsl:otherwise> eine Alternative angegeben, die immer dann ausgeführt wird, wenn keiner der vorher mit when genannten Fälle zutrifft:
<xsl:choose>
<xsl:when test="NAME='Montero'">
<xsl:value-of select="NAME"/>
<xsl:text> (Spanier) </xsl:text>
</xsl:when>
<xsl:when test="NAME='Ott'">
<xsl:value-of select="NAME"/>
<xsl:text> (Deutscher) </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="NAME"/>
<xsl:text> (Nationalität unbekannt) </xsl:text>
</xsl:otherwise>
</xsl:choose>