Variablen und Parameter

Mit <xsl:variable> lassen sich Variablen definieren. 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. Der Variablen kann man sowohl mit Hilfe des select-Attributs als auch mit dem Inhalt des Elements den gewünschten Wert zuweisen, der allerdings ein String (Zeichenfolge) sein muss. Der Aufruf des Werts erfolgt mittels des $-Zeichens, das dem Namen der Variablen vorangestellt werden muss.

Dieses Variablen-Konzept ist für die praktische Arbeit mit XSLT besonders wichtig. Denn in den Stylesheets gibt es eine Vielzahl von Informationen, die so zentral verwaltet werden können. Als Beispiel sind hier Schriftgrößen zu nennen. Generell nimmt die Bedeutung solcher Variablen mit dem Umfang des Stylesheets zu. Die Verwendung von <xsl:param> entspricht im Wesentlichen der von <xsl:variable>, die zu verwendenden Attribute sind in beiden Elementen identisch. Auf die kleinen Unterschiede in der Funktion beider Elemente wird hier nicht eingegangen.

Das Stylesheet:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output encoding="iso-8859-1" version="1.0"/>
   <xsl:variable name="Gedicht-Ankuendigung"><b>Gedicht</b></xsl:variable>    (1)
   <xsl:template match="Gedichtsammlung">
      <html>
         <body>
            <xsl:apply-templates/>
         </body>
      </html>
   </xsl:template>
   <xsl:template match="Autor">
      <br/>
      <h4>
         <xsl:apply-templates/>
      </h4>
   </xsl:template>
   <xsl:template match="Vorname">
      <xsl:apply-templates/>
      <xsl:text> </xsl:text>
   </xsl:template>
   <xsl:template match="Nachname">
      <xsl:apply-templates/>
   </xsl:template>
   <xsl:template match="Titel">
      <h2>
         <xsl:apply-templates/>
      </h2>
   </xsl:template>
   <xsl:template match="Strophe">
      <p>
         <xsl:apply-templates/>
      </p>
   </xsl:template>
   <xsl:template match="Vers">
      <xsl:apply-templates/>
      <br/>
   </xsl:template>
   <xsl:template match="Gedicht">
   <xsl:variable name="Jahr">
      <xsl:value-of select="@Erscheinungsjahr"/>        (2)
   </xsl:variable>
   <br/>
      <xsl:copy-of select="$Gedicht-Ankuendigung"/> aus dem Jahr  (3)
      <xsl:value-of select="$Jahr"/>
         <xsl:apply-templates/>
   </xsl:template>
</xsl:stylesheet>

(1) Das Element <xsl:variable> hat das obligatorische Attribut name, das den Namen der Variablen als Wert hat. Dieser Name kann später beliebig oft aufgerufen werden. Da das Element <xsl:variable> hier ein Top-Level-Element ist, d. h. ein Kindelement des Elements <xsl:stylesheet>, handelt es sich um eine globale Variable, die im gesamten Stylesheet gültig ist. Der Inhalt der Variable – in diesem Fall die HTML-Struktur – kann über den Aufruf an beliebiger Stelle hineinkopiert werden.

(2) Hier handelt es sich um eine lokale Variable, die nur innerhalb des Templates gültig ist, in dem sie definiert ist. Da sie das Attribut select enthält, wird der Wert dieses Attributs als Ersetzungstext verwendet. Das heißt, dass der Wert des select-Attributs den Inhalt der Variable festlegt. Da es sich beim Inhalt der Variable Jahr um einen reinen Text – hier der Inhalt des Attributes Erscheinungsjahr – und um keine Struktur handelt, erfolgt der Aufruf mittels des <xsl:value-of>-Elements. Auch hier muss das $-Zeichen dem Variablennamen vorangestellt werden.

(3) Das Element <xsl:copy-of> erlaubt, tiefe Strukturen in den Ergebnisbaum hineinzukopieren. Im Unterschied dazu wird das Element <xsl:copy> benutzt, um flache Strukturen zu kopieren. Diese Elemente sind für XSLT-Stylesheets oft wichtig. Das $-Zeichen vor dem Variablennamen ist unbedingt erforderlich, da so dem Prozessor mitgeteilt wird, dass es sich um eine Variable handelt und nicht um ein Element.

Browser-Ansicht des Zieldokumentes:

Browser-Ansicht: Beispiel - Variablen

Aufgabe 7

Verwenden Sie das Variablen-Konzept zum Prüfen von Strings.

Das gesamte Gedicht soll mit einem roten Hintergrund ausgegeben werden, wenn das erste Zeichen des Attributes Erscheinungsjahr ein '-' ist.

Hinweise:

Die Funktion starts-with() prüft, ob die Zeichenkette des ersten Arguments mit der Zeichenkette des zweiten Arguments startet.
Syntax: boolean starts-with (string, string).

Das Element <xsl:attribute> fügt ein Attribut in das Zieldokument ein. Der Name des Attributs wird mit Hilfe des name-Attributs definiert. Der Wert des Attributs ist der Inhalt von <xsl:attribute>. Es dient meist zur Erzeugung von Attributen während der Laufzeit. Die Attributwerte werden dann mit <xsl:value-of> ermittelt und eingefügt.
Attribute: name, namespace.

> > zur Lösung von Aufgabe 7

   

<< zurück vor >>

 

Tipp der data2type-Redaktion:
Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © dpunkt.verlag GmbH 2004
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XSL-FO in der Praxis" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

dpunkt.verlag GmbH, Ringstraße 19B, 69115 Heidelberg, fon 06221-14830, fax 06221-148399, hallo(at)dpunkt.de