XML-Know How

Variablen und Parameter

xsl:variable

Mit <xsl:variable> lassen sich Variablen definieren. Allerdings unterscheiden diese sich von denen anderer Programmiersprachen. So ist es nicht möglich, diese zur Laufzeit zu ändern, so dass sie im Grunde genommen eher als Konstanten zu bezeichnen sind.

Die Wertzuweisung der Variablen erfolgt entweder mit Hilfe des select-Attributes <xsl:variable name="kcal" select="Kilokalorien"/> oder – wenn ein längerer String auf der Variablen abgelegt werden soll – als Inhalt des Elements <xsl-variable>:

Beispiel:

<xsl:variable name="rezeptfuss_gesund">

Guten Appetit! Mit diesem Rezept tun Sie sich etwas Gutes!

</xsl:variable>

<xsl:variable name="rezeptfuss_ungesund">

Guten Appetit! Genießen Sie dieses Rezept nur in Maßen!

</xsl:variable>

Um die Variable aufzurufen (präzise: um ihren Inhalt in das Zieldokument zu schreiben), wird der Name der Variablen als Attributwert von <xsl:value-of> mit einem vorgestellten »$«-Zeichen in das Template geschrieben:

<xsl:template match="rezept">

<xsl:if test="@typ='vegetarisch'">

<xsl:apply-templates/>

<p><xsl:value-of select="$rezeptfuss_gesund"/></p>

</xsl:if>

<xsl:if test="@typ='fleischrezept' and @kalorien&gt;'1000'">

<xsl:apply-templates/>

<p><xsl:value-of select="$rezeptfuss_ungesund"/>

<br/>(Das Rezept hat immerhin

<xsl:value-of select="@kalorien"/> kcal.)</p>

</xsl:if>

</xsl:template>

Beachten Sie bei diesem Beispiel auch den etwas komplexeren XPath-Ausdruck <xsl:if test="@typ='fleischrezept' and @kalorien&gt;'1000'">. Hier werden nur solche Rezepte ausgewählt, die als Fleischrezept gekennzeichnet sind und gleichzeitig über 1000 Kalorien enthalten. Das vorgestellte »@«-Zeichen signalisiert, dass es sich um einen Attributwert handelt (Kurzschreibweise, vgl. das Kapitel 7.2 zu XPath). Die Zeichenfolge &gt; ist die XML-Standard-Entity für »>« (greater than).