XML-Know How

Variablen und Parameter

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 Konstante zu bezeichnen sind. Wird das Element als Top-Level-Element verwendet, so ist dessen Gültigkeitsbereich global, befindet sich die Variable allerdings innerhalb eines Template-Rumpfes, so handelt es sich um eine lokale Variable. Globale Variablen sind sogar auch dann gültig, wenn sie in andere Stylesheets importiert werden.

Die Wertzuweisung der Variablen erfolgt entweder mit Hilfe des select-Attributes

<xsl:variable name="Gruss" select="Hallo"/>

oder – wenn ein längerer String auf der Variablen abgelegt werden soll – als Inhalt des Elements <xsl-variable>:

<xsl:variable name="Briefgruss_deutsch">
 Mit freundlichen Grüßen
</xsl:variable>

Der Aufruf des Wertes erfolgt mittels des $-Zeichens, welches dem Namen der Variable vorangestellt wird.

<xsl:template match="PERSON">
    <xsl:variable name="Unternehmen">
       pagina GmbH
    </xsl:variable>
    <xsl:variable name="Briefgruss_deutsch">
       Mit freundlichen Grüßen
    </xsl:variable>
    <xsl:variable name="Briefgruss_spanisch">
       Con un cordial saludo
    </xsl:variable>

    <xsl:if test="NAME='Ott'">
      <p><xsl:value-of select="$Briefgruss_deutsch"/></p>
      <p><xsl:value-of select="$Unternehmen"/><br/>
      Tobias Ott</p>
    </xsl:if>
    <xsl:if test="NAME='Montero'">
      <p><xsl:value-of select="$Briefgruss_spanisch"/></p>
      <p><xsl:value-of select="$Unternehmen"/><br/>
      Manuel Montero</p>
    </xsl:if>
</xsl:template>

Erzeugtes Fragment :

<p>Con un cordial saludo</p>
<p>pagina GmbH<br/>Manuel Montero</p>
<p>Mit freundlichen Grüßen</p>
<p>pagina GmbH<br/>Tobias Ott</p>