Aufgaben aus XSLT und XPath – der Start

(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 1.)

Verwenden Sie zur Bearbeitung der Aufgaben AltovaXML oder Saxon 9 als XSLT-Prozessor (alternativ dessen GUI Kernow). Installation und Bedienung der Prozessoren sind unter XSLT 2.0-Prozessoren beschrieben.

Die Lösungen finden Sie unter Lösungen zu den Aufgaben.

Rohmaterial für die folgenden Aufgaben ist ein einfaches XML-Dokument, das – ähnlich einer E-Mail – eine kurze Textmitteilung enthält. (Anmerkung: Peter Panter und Theobald Tiger waren von Kurt Tucholsky verwendete Pseudonyme, unter denen er als Kritiker auftrat.)

<?xml version="1.0" encoding="ISO-8859-1"?> 
<memo>
  <an>Peter Panter</an> 
  <von>Theobald Tiger</von> 
  <betreff>Neues Buch von Tucholsky</betreff> 
  <text>Hallo Peter! Hast Du schon das neue Buch von Tucholsky gelesen? Gruss, Theo!</text> 
</memo>

Code-Beispiel: aufgaben/kap01/memo1.xml.

Zur Verarbeitung ist ein unfertiges Stylesheet-Dokument vorhanden, das ergänzt werden soll:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template ...>
    <html>
      <body>
        <h1>Memo:</h1>
        ...
      </body>
    </html>
  </xsl:template> 
</xsl:stylesheet>

Code-Beispiel: aufgaben/kap01/memo.xsl.

  • Aufgabe 1a: Stringwert ausgeben
    Fügen Sie der Template-Regel ein geeig­netes match-Attribut hinzu. Ergänzen Sie das Stylesheet so, dass der String­wert des Quelldokuments nach der Überschrift in einem <p>-Container aus­gegeben wird. Verwenden Sie dazu die Instruktion xsl:value-of.
  • Aufgabe 2a: Stringwerte der Einzelelemente ausgeben
    Erweitern Sie das Stylesheet aus 1) so, dass im Ergebnisdokument die Inhalte der einzelnen Elemente jeweils in eigenen <p>-Containern stehen. Denken Sie daran, dass XPath-Ausdrücke einen Pfad vom Current Node zum Zielknoten darstellen!
  • Aufgabe 2b: Reihenfolge kontrollieren
    Schreiben Sie eine Variation von 2), bei der der Inhalt von <von> vor dem Inhalt von <an> ausgegeben wird. Geben Sie zusätzlich (fett markiert) die Zeichenketten Von: und An: und Betreff: vor den entsprechenden Inhalten aus.
  • Aufgabe 2c: Reihenfolge kontrollieren, alternative Version
    Lösen Sie die Aufgabe 2a) auf Grundlage von 1a), also mit xsl:apply-templates.
  • Aufgabe 3: Mehrfachverwendung von Inhalten
    Eine HTML-Seite sollte einen Dokumenttitel besitzen. Im Titel sollte stehen »Memo von (Absender­name) an (Empfängername)«. Kein Problem?
  • Aufgabe 4a: Mehrere Template-Regeln
    Erweitern Sie das Stylesheet durch mehrere Template-Regeln, die durch xsl:apply-templates angesprochen werden. Das match-Attribut muss gemäß dem zu verarbeitenden Element gesetzt werden. Belassen Sie die Ausgabereihenfolge wie vom Dokument vorgegeben.
  • Aufgabe 4b: Mehrere Template-Regeln, Reihenfolge kontrollieren
    Versu­chen Sie, das gleiche Ergebnis wie in 2a) zu erzielen.
  • Aufgabe 5: Attribute auslesen
    Verwenden Sie folgendes Quelldokument:
<?xml version="1.0" encoding="ISO-8859-1"?>
<buch titel="XML – Das verflixte Attribut" autor="Mike Müller" uebersetzer="Peter Panter" verlag="Galileo Computing" isbn="0 815 12345 0" ersch-jahr="2010"/>

Code-Beispiel: aufgaben/kap01/buch-attrib.xml.

Erstellen Sie ein Stylesheet, das ein Template mit Match auf den Document Node enthält. Schreiben Sie in dieses das HTML-Grundgerüst. Bauen Sie xsl:value-of-Anweisungen ein, die die Attribute auslesen. Versuchen Sie eine Formatierung in etwa folgender Form zu erreichen:
Mike Miller: »XML – Das verflixte Attribut«
in der Übersetzung von Peter Panter
Galileo Computing, 2010

  • Aufgabe 6a: Verwendung von xsl:output
    Geben Sie anstelle des in Auf­gabe 5 generierten HTML-Dokuments ein XHTML-Dokument aus. Verwen­den Sie xsl:output mit entsprechenden encoding- und indent-Attributen. Setzen Sie den XHTML-Namensraum einmal im Stylesheet-Element und ein­mal alternativ im <html>-Wurzelelement: Vergleichen Sie die Ergebnisse. Lassen Sie versuchsweise das indent-Attribut weg oder setzen Sie es auf indent="no".
  • Aufgabe 6b: Verwendung von xsl:output
    Verwenden Sie versuchsweise method="xml". Wie unterscheidet sich das Ergebnis von der vorigen Aus­gabe? Probieren Sie auch method="text".

   

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

Copyright © Galileo Press, Bonn 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XSLT 2.0 & XPath 2.0 ― Das umfassende Handbuch" 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.


Galileo Press, Rheinwerkallee 4, 53227 Bonn