Schnellstart

Zunächst wird die Grundform eines XSLT-Stylesheets für die Transformation in XHTML vorgestellt und die einzelnen Elemente werden erläutert.

Die Beispieldatei Gedicht.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Gedichtsammlung SYSTEM "Gedicht.dtd">
 <Gedichtsammlung>
  <Gedicht Erscheinungsjahr="1905" Sprache="de">
    <Autor>
      <Vorname>Rainer Maria</Vorname>
      <Nachname>Rilke</Nachname>
    </Autor>
    <Titel>Der Panther</Titel>
    <Untertitel>Im Jardin des Plantes, Paris</Untertitel>
    <Strophe>
      <Vers>Sein Blick ist vom Vorübergehn der Stäbe</Vers>
      <Vers>so müd geworden, daß er nichts mehr hält.</Vers>
      <Vers>Ihm ist, als ob es tausend Stäbe gäbe</Vers>
      <Vers> und hinter tausend Stäben keine Welt.</Vers>
    </Strophe>
 
    <Strophe>
      <Vers>Der weiche Gang geschmeidig starker Schritte,</Vers>
      <Vers> der sich im allerkleinsten Kreise dreht,</Vers>
      <Vers> ist wie ein Tanz von Kraft um eine Mitte,</Vers>
      <Vers>in der betäubt ein großer Wille steht.</Vers>
    </Strophe>
    <Strophe>
      <Vers> Nur manchmal schiebt der Vorhang der <Fett>Pupille</Fett></Vers>
      <Vers>sich lautlos auf -. Dann geht ein Bild hinein,</Vers>
      <Vers> geht durch der <Fett>Glieder</Fett> angespannte Stille -</Vers>
      <Vers>und hört im <Fett>Herzen</Fett> auf zu sein.</Vers>
    </Strophe>
  </Gedicht>
 
  <Gedicht Erscheinungsjahr="1799" Sprache="de">
    <Autor>
      <Vorname>Johann Wolfgang</Vorname>
      <Nachname> von Goethe</Nachname>
    </Autor>
    <Titel>Der Zauberlehrling</Titel>
    <Strophe>
      <Vers>Hat der alte Hexenmeister</Vers>
      <Vers>Sich doch einmal wegbegeben!</Vers>
      <Vers>Und nun sollen seine Geister</Vers>
      <Vers>Auch nach meinem Willen leben.</Vers>
      <Vers>Seine Wort und Werke</Vers>
      <Vers>Merkt ich und den Brauch,</Vers>
      <Vers>Und mit Geistesstärke</Vers>
      <Vers>Tu ich Wunder auch.</Vers>
    </Strophe>

    <Strophe>
      <Vers>Walle! walle</Vers>
      <Vers>Manche Strecke,</Vers>
      <Vers>Daß, zum Zwecke,</Vers>
      <Vers>Wasser fließe</Vers>
      <Vers>Und mit reichem, vollem Schwalle</Vers>
      <Vers>Zu dem Bade sich ergieße.</Vers>
    </Strophe>

    <Strophe>
      <Vers>Und nun komm, du alter Besen,</Vers>
      <Vers>Nimm die schlechten Lumpenhüllen!</Vers>
      <Vers>Bist schon lange Knecht gewesen:</Vers>
      <Vers>Nun erfülle meinen Willen!</Vers>
      <Vers>Auf zwei <Fett>Beinen</Fett> stehe,</Vers>
      <Vers>Oben sei ein Kopf,</Vers>
      <Vers>Eile nun und gehe</Vers>
      <Vers>Mit dem Wassertopf!</Vers>
    </Strophe>

    <Strophe>
      <Vers>Walle! walle</Vers>
      <Vers>Manche Strecke,</Vers>
      <Vers>Daß, zum Zwecke,</Vers>
      <Vers>Wasser fließe</Vers>
      <Vers>Und mit reichem, vollem Schwalle</Vers>
      <Vers>Zu dem Bade sich ergieße.</Vers>
    </Strophe>

    <Strophe>
      <Vers>Seht, er läuft zum Ufer nieder;</Vers>
      <Vers>Wahrlich! ist schon an dem Flusse,</Vers>
      <Vers>Und mit Blitzesschnelle wieder</Vers>
      <Vers>Ist er hier mit raschem Gusse.</Vers>
      <Vers>Schon zum zweiten Male!</Vers>
      <Vers>Wie das Becken schwillt!</Vers>
      <Vers>Wie sich jede Schale</Vers>
      <Vers>Voll mit Wasser füllt!</Vers>
      <Vers>Stehe! stehe!</Vers>
      <Vers>Denn wir haben</Vers>
      <Vers>Deiner Gaben</Vers>
      <Vers>Vollgemessen! -</Vers>
      <Vers>Ach, ich merk es! Wehe! wehe!</Vers>
      <Vers>Hab ich doch das Wort vergessen!</Vers>
    </Strophe>

    <Strophe>
      <Vers>Ach, das Wort, worauf am Ende</Vers>
      <Vers>Er das wird, was er gewesen.</Vers>
      <Vers>Ach, er läuft und bringt behende!</Vers>
      <Vers>Wärst du doch der alte Besen!</Vers>
      <Vers>Immer neue Güsse</Vers>
      <Vers>Bringt er schnell herein,</Vers>
      <Vers>Ach! und hundert Flüsse</Vers>
      <Vers>Stürzen auf mich ein!</Vers>
      <Vers>Nein, nicht länger</Vers>
      <Vers>Kann ich's lassen;</Vers>
      <Vers>Will ihn fassen.</Vers>
      <Vers>Das ist Tücke!</Vers>
      <Vers>Ach, nun wird mir immer bänger!</Vers>
      <Vers>Welche Miene! welche Blicke!</Vers>
    </Strophe>

    <Strophe>
      <Vers>O du Ausgeburt der Hölle!</Vers>
      <Vers>Soll das ganze Haus ersaufen?</Vers>
      <Vers>Seh ich über jede Schwelle</Vers>
      <Vers>Doch schon Wasserströme laufen.</Vers>
      <Vers>Ein verruchter Besen,</Vers>
      <Vers>Der nicht hören will!</Vers>
      <Vers>Stock, der du gewesen,</Vers>
      <Vers>Steh doch wieder still!</Vers>
      <Vers>Willst's am Ende</Vers>
      <Vers>Gar nicht lassen?</Vers>
      <Vers>Will dich fassen,</Vers>
      <Vers>Will dich halten</Vers>
      <Vers>Und das alte Holz behende</Vers>
      <Vers>Mit dem scharfen Beile spalten.</Vers>
    </Strophe>
 
    <Strophe>
      <Vers>Seht, da kommt er schleppend wieder!</Vers>
      <Vers>Wie ich mich nur auf dich werfe,</Vers>
      <Vers>Gleich, o Kobold, liegst du nieder;</Vers>
      <Vers>Krachend trifft die glatte Schärfe.</Vers>
      <Vers>Wahrlich! brav getroffen!</Vers>
      <Vers>Seht, er ist entzwei!</Vers>
      <Vers>Und nun kann ich hoffen,</Vers>
      <Vers>Und ich atme frei!</Vers>
      <Vers>Wehe! wehe!</Vers>
      <Vers>Beide Teile</Vers>
      <Vers>Stehn in Eile</Vers>
      <Vers>Schon als Knechte</Vers>
      <Vers>Völlig fertig in die Höhe!</Vers>
      <Vers>Helft mir, ach! ihr hohen Mächte!</Vers>
    </Strophe>
 
    <Strophe>
      <Vers>Und sie laufen! Naß und nässer</Vers>
      <Vers>Wird's im Saal und auf den Stufen.</Vers>
      <Vers>Welch entsetzliches Gewässer!</Vers>
      <Vers>Herr und Meister! hör mich rufen! -</Vers>
      <Vers>Ach, da kommt der Meister!</Vers>
      <Vers>Herr, die Not ist groß!</Vers>
      <Vers>Die ich rief, die Geister,</Vers>
      <Vers>Werd ich nun nicht los.</Vers>
      <Vers>In die Ecke,</Vers>
      <Vers>Besen! Besen!</Vers>
      <Vers>Seid's gewesen.</Vers>
      <Vers>Denn als Geister</Vers>
      <Vers>Ruft euch nur, zu seinem Zwecke,</Vers>
      <Vers>Erst hervor der alte Meister.</Vers>
    </Strophe>
  </Gedicht>

  <Gedicht Erscheinungsjahr="1945" Sprache="de">
    <Autor>
      <Vorname>Berthold </Vorname>
      <Nachname>Brecht</Nachname>
    </Autor>
    <Titel>Die Moritat von Mackie Messer</Titel>
    <Strophe>
      <Vers>Und der Haifisch, der hat <Fett>Zähne</Fett></Vers>
      <Vers>Und die trägt er im <Fett>Gesicht</Fett></Vers>
      <Vers>Und Macheath, der hat ein Messer</Vers>
      <Vers>Doch das Messer sieht man nicht.</Vers>
    </Strophe>

    <Strophe>
      <Vers>Und es sind des Haifischs <Fett>Flossen</Fett></Vers>
      <Vers>Rot, wenn dieser Blut vergiesst</Vers>
      <Vers>Mackie Messer trägt'nen Handschuh</Vers>
      <Vers>Drauf man keine Untat liest.</Vers>
    </Strophe>

    <Strophe>
      <Vers>An der Themse grünem Wasser</Vers>
      <Vers>Fallen plötzlich Leute um</Vers>
      <Vers>Es ist weder Pest noch Cholera</Vers>
      <Vers>Doch es heisst: Mackie geht um.</Vers>
    </Strophe>

    <Strophe>
      <Vers>An'nem schönen blauen Sonntag</Vers>
      <Vers>Liegt ein toter Mann am Strand</Vers>
      <Vers>Und ein Mensch geht um die Ecke</Vers>
      <Vers>Den man Mackie Messer nennt.</Vers>
    </Strophe>

    <Strophe>
      <Vers>Und Schmul Meier bleibt verschwunden</Vers>
      <Vers>Und so mancher reiche Mann</Vers>
      <Vers>Und sein Geld hat Mackie Messer</Vers>
      <Vers>Dem man nichts beweisen kann.</Vers>
    </Strophe>
 
    <Strophe>
      <Vers>Jenny Towler ward gefunden</Vers>
      <Vers>Mit'nem Messer in der <Fett>Brust</Fett></Vers>
      <Vers>Und am Kai geht Mackie Messer</Vers>
      <Vers>Der von allem nichts gewusst.</Vers>
    </Strophe>

    <Strophe>
      <Vers>Wo ist Alfons gleich, der Fuhrherr?</Vers>
      <Vers>Kommt das je ans Sonnenlicht?</Vers>
      <Vers>Wer es immer wissen könnte</Vers>
      <Vers>Mackie Messer weiss es nicht.</Vers>
    </Strophe>
 
    <Strophe>
      <Vers>Und das grosse Feuer in Soho</Vers>
      <Vers>Sieben Kinder und ein Greis</Vers>
      <Vers>In der Menge Mackie Messer, den</Vers>
      <Vers>Man nicht fragt, und der nichts weiss.</Vers>
    </Strophe>

    <Strophe>
      <Vers>Und die minderjähr'ge Witwe</Vers>
      <Vers>Deren Namen jeder weiss</Vers>
      <Vers>Wachte auf und war geschändet</Vers>
      <Vers>Mackie welches war dein Preis?</Vers>
    </Strophe>
  </Gedicht>

  <Gedicht Erscheinungsjahr="1890" Sprache="de">
    <Autor>
      <Vorname>Heinrich Christian Wilhelm</Vorname>
      <Nachname>Busch</Nachname>
    </Autor>
    <Titel> Pst!</Titel>
    <Strophe>
      <Vers>Es gibt ja leider Sachen und Geschichten,</Vers>
      <Vers>Die reizend und pikant,</Vers>
      <Vers>Nur werden sie von Tanten und von Nichten</Vers>
      <Vers>Niemals genannt.</Vers>
    </Strophe>

    <Strophe>
      <Vers>Verehrter Freund, so sei denn nicht vermessen,</Vers>
      <Vers>Sei zart und schweig auch du.</Vers>
      <Vers>Bedenk: Man liebt den Käse wohl, indessen</Vers>
      <Vers>Man deckt ihn zu.</Vers>
    </Strophe>
  </Gedicht>

  <Gedicht Erscheinungsjahr="-750" Sprache="el">
    <Autor>
      <Vorname/>
      <Nachname>Όμηρος</Nachname>
    </Autor>
    <Titel>Ιλιάδα</Titel>
    <Strophe>
      <Vers>Μῆνιν ἄειδε, θεὰ, Πηληιάδεω Ἀχιλῆος</Vers>
      <Vers>οὐλομένην, ἣ μυρί’ Ἀχαιοῖς ἄλγε’ ἔθηκε,</Vers>
      <Vers>πολλὰς δ’ ἰφθίμους ψυχὰς Ἄϊδι προῒαψεν</Vers>
      <Vers>ἡρώων, αὐτοὺς δὲ ἑλώρια τεῦχε κύνεσσιν</Vers>
      <Vers>οἰωνοῖσί τε πᾶσι• Διὸς δ’ ἐτελείετο βουλή</Vers>
      <Vers>ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε</Vers>
      <Vers>Ἀτρεΐδης τε ἄναξ ἀνδρῶν καὶ δῖος Ἀχιλλεύς.</Vers>
    </Strophe>
  </Gedicht>
</Gedichtsammlung>

Das Stylesheet:

<?xml version="1.0" encoding="UTF-8"?>                 (1)
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> (2)
<xsl:output encoding="iso-8859-1"/>
    <xsl:template match="/">                           (3)
      <html>
         <body>
             <h2><xsl:apply-templates/></h2>           (4)
         </body>
      </html>
    </xsl:template>
</xsl:stylesheet>

(1) Bei einem XSLT-Stylesheet handelt es sich um ein gültiges XML-Dokument. Es beginnt also mit einem XML-Prolog.

(2) Das Wurzelelement eines Stylesheets muss immer <xsl:stylesheet> oder <xsl:transform> lauten. Dies signalisiert dem Prozessor, dass es sich um ein XSLT-Stylesheet handelt. Das obligatorische Attribut version hat den Wert 1.0, der dem Prozessor anzeigt, dass es sich um ein Stylesheet gemäß der Recommendation vom November 1999 handelt. Mit Hilfe des zwingend erforderlichen Namespace-Attributs xmlns:xsl wird sichergestellt, dass die XSLT-Anweisungen eindeutig sind und sich von anderen Markups unterscheiden. Der Wert des Attributs ist fix.

(3) Beim <xsl:template>-Element handelt es sich um ein Element, das die Funktion einer Schablone besitzt. Immer wenn über das Attribut match ein Treffer erfolgt, wird sein Attributwert in den Ergebnisbaum an die entsprechende Stelle gesetzt. Der Attributwert von match ist eine XPath-Anweisung (Adressierung). In unserem einfachen Fall ist es die Abkürzung für den Wurzelknoten, der in jedem Dokument genau einmal vorkommt. Wenn der Prozessor, der das Quelldokument auf Übereinstimmungen mit den Templates im Stylesheet untersucht, auf den Knoten / trifft, kopiert er den Inhalt des <xsl:template>-Elements in das Zieldokument. So erhalten wir die Grundstruktur eines HTML-Dokuments.

(4) Das Element <xsl:apply-templates/> veranlasst den Prozessor, den Inhalt aller Elemente, die sich innerhalb des Elements befinden, auf welches das <xsl:template>-Element zutraf, in das Zieldokument zu kopieren. Da es sich in diesem Beispiel um den Wurzelknoten handelt, wird der gesamte Inhalt unseres Beispiels an dieser Stelle in das Zieldokument kopiert. Die im Stylesheet vorhandenen Leerzeichen, Tab-Sprünge und Zeilenschaltungen zwischen den HTML-Tags und dem einzufügenden Inhalt werden entsprechend den XML-Regeln automatisch ignoriert, weil sie nicht als Inhaltsbestandteil gelten.

Das Ergebnis der Verarbeitung durch den Prozessor:

<html>
    <body>
       <h2>Rainer MariaRilkeDer PantherIm Jardin des Plantes, Paris Sein Blick ist vom Vorübergehn
der Stäbeso müd geworden, daß er nichts mehr ält.Ihm ist, als ob es tausend Stäbe gäbe
und hinter tausend Stäben keine Welt. Der weiche Gang geschmeidig starker Schritte, der
sich im allerkleinsten Kreise dreht, ist wie ein Tanz von Kraft um eine Mitte, in der
betäubt ein großer Wille steht. Nur manchmal schiebt der Vorhang der Pupillesich lautlos
auf -. Dann geht ein Bild hinein, geht durch der Glieder angespannte Stille - und hört
im Herzen auf zu sein.Johann Wolfgang von GoetheZauberlehrlingHat
der alte HexenmeisterSich doch einmal wegbegeben!Und nun sollen seine GeisterAuch nach
meinem Willen leben.Seine Wort und WerkeMerkt ich und den Brauch,Und mit GeistesstärkeTu
ich Wunder auch.Walle! walleManche Strecke,Daß, zum Zwecke,Wasser fließeUnd mit reichem,
vollem SchwalleZu dem Bade sich ergieße.Und nun komm, du alter Besen,Nimm die schlechten
Lumpenhüllen!Bist schon lange Knecht gewesen:Nun erfülle meinen Willen!Auf zwei Beinen
stehe,Oben sei ein Kopf,Eile nun und geheMit dem Wassertopf!Walle! walleManche
Strecke,Daß, zum Zwecke,Wasser fließeUnd mit reichem, vollem SchwalleZu dem Bade sich
ergieße.Seht, er läuft zum Ufer nieder;Wahrlich! ist schon an dem Flusse,Und mit
Blitzesschnelle wiederIst er hier mit raschem Gusse.Schon zum zweiten Male!Wie das
Becken schwillt!Wie sich jede SchaleVoll mit Wasser füllt!Stehe! stehe!Denn wir
habenDeiner GabenVollgemessen! - Ach, ich merk es! Wehe! wehe!Hab ich doch das Wort
vergessen!Ach, das Wort, worauf am EndeEr das wird, was er gewesen.Ach, er läuft und
bringt behende!Wärst du doch der alte Besen!Immer neue GüsseBringt er schnell
herein,Ach! und hundert FlüsseStürzen auf mich ein!Nein, nicht längerKann ich's
lassen;Will ihn fassen.Das ist Tücke!Ach, nun wird mir immer bänger!Welche Miene! welche
Blicke!O du Ausgeburt der Hölle!Soll das ganze Haus ersaufen?Seh ich über jede
SchwelleDoch schon Wasserströme laufen.Ein verruchter Besen,Der nicht hören will! Stock,
der du gewesen,Steh doch wieder still!Willst's am EndeGar nicht lassen?Will dich
fassen,Will dich haltenUnd das alte Holz behendeMit dem scharfen Beile spalten.Seht, da
kommt er schleppend wieder!Wie ich mich nur auf dich werfe,Gleich, o Kobold, liegst du
nieder;Krachend trifft die glatte Schärfe.Wahrlich! brav getroffen! Seht, er ist
entzwei!Und nun kann ich hoffen,Und ich atme frei!Wehe! wehe!Beide TeileStehn in
EileSchon als KnechteVöllig fertig in die Höhe!Helft mir, ach! ihr hohen Mächte!Und sie
laufen! Naß und nässerWird's im Saal und auf den Stufen.Welch entsetzliches
Gewässer!Herr und Meister! hör mich rufen! -Ach, da kommt der Meister!Herr, die Not ist
groß!Die ich rief, die Geister,Werd ich nun nicht los.In die Ecke,Besen! Besen!Seid's
gewesen.Denn als GeisterRuft euch nur, zu seinem Zwecke,Erst hervor der alte Meister.
Berthold BrechtMoritat von Mackie MesserUnd der Haifisch, der hat ZähneUnd die trägt er
im GesichtUnd Macheath, der hat ein MesserDoch das Messer sieht man nicht.Und es sind
des Haifischs FlossenRot, wenn dieser Blut vergiesstMackie Messer trägt'nen
HandschuhDrauf man keine Untat liest.An der Themse grünem WasserFallen plötzlich Leute
umEs ist weder Pest noch CholeraDoch es heisst: Mackie geht um.An'nem schönen blauen
SonntagLiegt ein toter Mann am StrandUnd ein Mensch geht um die EckeDen man Mackie
Messer nennt.Und Schmul Meier bleibt verschwundenUnd so mancher reiche MannUnd sein Geld
hat Mackie MesserDem man nichts beweisen kann.Jenny Towler ward gefundenMit'nem Messer
in der BrustUnd am Kai geht Mackie MesserDer von allem nichts gewusst.Wo ist Alfons
gleich, der Fuhrherr?Kommt das je ans Sonnenlicht?Wer es immer wissen könnteMackie
Messer weiss es nicht.Und das grosse Feuer in SohoSieben Kinder und ein GreisIn der
Menge Mackie Messer, denMan nicht fragt, und der nichts weiss.Und die minderjähr'ge
WitweDeren Namen jeder weissWachte auf und war geschändetMackie welches war dein
Preis?Heinrich Christian WilhelmBusch! Es gibt ja leider Sachen und Geschichten,Die
reizend und pikant,Nur werden sie von Tanten und von NichtenNiemals genannt.Verehrter
Freund, so sei denn nicht vermessen,Sei zart und schweig auch du.Bedenk: Man liebt den
Käse wohl, indessenMan deckt ihn zu. ΌμηροςΙλιάδαΜηνιν άειδε, θεά, Πηληιάδεω
Άχιλήοςούλομένην, η μυρί’ Άχαιοίς αλγε’ εθηκε,πολλάς δ’ ίφθίμους ψυχμς Άϊδι
προιαψενηρώων, αυτους δε ελώρια τευχε κύνεσσινοέωνοέσί τε πέσι• Διές δ’ υτελείετο βουλή
ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντεἈτρεΐδης τε ἄναξ ἀνδρῶν καὶ δῖος Ἀχιλλεύς.</h2>
    </body>
</html>

Browser-Ansicht des Zieldokumentes:

<< 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