Natürlich ist in XSLT auch das bedingte Ausführen von Aktionen möglich. Die einfachste Möglichkeit dazu ist die if-Anweisung, die einen XPath-Ausdruck auswertet:
<xsl:template>
<xsl:if select="1 == 0">
1 ist 0 !!
</xsl:if>
</xsl:template>
Bei Bedingungen mit mehr als einer Alternative findet die choose-Anweisung Verwendung:
<xsl:template>
<xsl:choose>
<xsl:when select="1 == 0">
1 ist 0 !!
</xsl:when>
<xsl:when select="1 == 2">
1 ist 2 !!
</xsl:when>
<xsl:otherwise>
richtig gerechnet..
</xsl:otherwise>
</xsl:if>
</xsl:template>
Mit for-each kann man über die Elemente einer Menge von Knoten iterieren:
<xsl:template>
<xsl:for-each select="//img">
Ein Bild
</xsl:for-each>
</xsl:template>
Als Erweiterung zur Iteration kann man mit Hilfe von sort
die Reihenfolge der Iteration bestimmen:
<xsl:template>
<xsl:for-each select="//img">
<xsl:sort select="@src" order="ascending" data-type="text" case-order="upper-first">
Ein Bild
</xsl:sort>
</xsl:for-each>
</xsl:template>
select gibt dabei an, wonach sortiert wird (hier: src-Attribut),
order gibt die Reihenfolge an (ascending / descending),
data-type gibt den Datentyp an (text / number),
case-order gibt an, ob Großbuchstaben vor oder nach
Kleinbuchstaben sortiert werden (upper-first / lower-first)