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 geeignetes match-Attribut hinzu. Ergänzen Sie das Stylesheet so, dass der Stringwert des Quelldokuments nach der Überschrift in einem <p>-Container ausgegeben 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 (Absendername) 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
Versuchen 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 Aufgabe 5 generierten HTML-Dokuments ein XHTML-Dokument aus. Verwenden Sie xsl:output mit entsprechenden encoding- und indent-Attributen. Setzen Sie den XHTML-Namensraum einmal im Stylesheet-Element und einmal 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 Ausgabe? 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