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)