Galileo Computing < openbook >
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.


Kompendium der Informationstechnik
 von Sascha Kersken
EDV-Grundlagen, Programmierung, Mediengestaltung
Buch: Kompendium der Informationstechnik
gp Kapitel 15 XML
  gp 15.1 Der Aufbau von XML-Dokumenten
    gp 15.1.1 Die grundlegenden Bestandteile von XML-Dokumenten
    gp 15.1.2 Wohlgeformtheit
  gp 15.2 DTDs und XML Schema
    gp 15.2.1 Document Type Definitions (DTDs)
    gp 15.2.2 Namensräume
    gp 15.2.3 XML Schema
  gp 15.3 XSLT
  gp 15.4 Grundlagen der XML-Programmierung
    gp 15.4.1 SAX
    gp 15.4.2 DOM
  gp 15.5 Zusammenfassung

gp

Prüfungsfragen zu diesem Kapitel (extern)


Galileo Computing

15.3 XSLT  toptop

Wenn Sie dem Kapitel bis hierhin gefolgt sind, wird Ihnen aufgefallen sein, dass Sie zwar eine Reihe verschiedener XML-Dokumente und -Fragmente gesehen haben, aber noch kein Screenshot oder eine andere Darstellung eines fertig verarbeiteten Dokuments. Das liegt daran, dass XML einzig und allein die Struktur eines Dokuments beschreibt. Für das Layout sind separate Formatierungsangaben zuständig, die meist in der Extensible Stylesheet Language (XSL) verfasst werden.

XSL-Komponenten

XSL besteht aus zwei verschiedenen Komponenten: Die XSL-Transformations (XSLT) beschreiben die Umwandlung (Transformation) beliebiger XML-Dokumente in andere Formate wie HTML oder PDF, während XSL Formatting Objects (XSL-FO) eine eigene Sprache zur Definition von Formatierungen und Stilen bilden. Eine dritte Alternative für die Formatierung bieten die am häufigsten für HTML-Dokumente eingesetzten Cascading Stylesheets (CSS), die im nächsten Kapitel erläutert werden.

In diesem Abschnitt wird nur das wichtigere XSLT behandelt. Näheres über XSL-FO finden Sie in speziellen XML-Büchern, von denen einige im Beispiel in Listing 15.1 genannt werden.

Ein XSLT-Dokument beschreibt, welche Elemente und Attribute eines XML-Eingabedokuments in welche Bestandteile eines Ausgabedokuments umgesetzt werden. Um die einzelnen Komponenten des Eingabedokuments zu identifizieren, verwendet XSLT eine Sprache namens XPath, die den Zugriff auf die Baumstruktur jedes XML-Dokuments ermöglicht.

XSLT-Prozessoren

Um XSLT einsetzen zu können, benötigen Sie eine spezielle Anwendung namens XSLT-Prozessor. Dieses Programm nimmt ein XSLT-Stylesheet und ein XML-Dokument entgegen und erzeugt gemäß der Regeln des Stylesheets das gewünschte Ausgabedokument.

Einer der bekanntesten XSLT-Prozessoren ist Apache Xalan, den Sie unter xml.apache.org/xalan herunterladen können. Es handelt sich um eine Java-Anwendung, die Sie von der Kommandozeile aus folgendermaßen aufrufen können:

$ java org.apache.xalan.xslt.Process -IN xml-buecher.xml 
-XSL buecher2htm.xsl -OUT xml-buecher.html

Der Kommandozeilenparameter -IN gibt, wie Sie wahrscheinlich richtig vermutet haben, das Eingabedokument an, -XSL bezeichnet die XSLT-Stylesheet-Datei mit der Endung .xsl und -OUT die Ausgabedatei.

Die häufigste Umwandlung – und die einzige, die in diesem kurzen Unterabschnitt demonstriert wird – ist diejenige von allgemeinem XML nach HTML.

Listing 15.4 zeigt ein XSLT-Stylesheet, das die Datei xml-buecher.xml aus Listing 15.1 in ein einfaches HTML-Dokument umwandelt.

Listing 15.4   Ein XSLT-Stylesheet, das die XML-Bücher-Datei in HTML umwandelt

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="xml-buecher">
  <html>
    <head>
      <title>XML-Bücher</title>
    </head>
    <body>
      <h1>XML-Bücher</h1>
    <xsl:for-each select="buch">
      <h2><xsl:value-of select="titel" /></h2>
      <p>
        von
        <xsl:for-each select="autor">
          <xsl:value-of select="vorname" />
          <xsl:value-of select="name" />,         </xsl:for-each>
      </p>
      <p>
        <xsl:value-of select="ort" />,         <xsl:value-of select="jahr" />
      </p>
      <p>
        <xsl:value-of select="verlag" />
      </p>
    </xsl:for-each>
    </body>
  </html>
  </xsl:template>
</xsl:stylesheet>

Damit dieses XSLT-Stylesheet mit der Fassung von xml-buecher.xml aus Listing 15.1 korrekt zusammenarbeitet, müssen Sie auch dessen Zeichensatz in iso-8859-1 umwandeln. Die XML-Steueranweisung des Dokuments sieht demnach genauso aus wie bei buecher2htm.xsl in Listing 15.4.

Wenn Sie das Stylesheet über den weiter oben gezeigten Xalan-Aufruf oder mit Hilfe eines anderen XSLT-Prozessors verwenden und die entstandene HTML-Datei im Browser öffnen, erhalten Sie ein Ergebnis wie in Abbildung 15.2.


Abbildung 15.2   Das mittels XSLT erzeugte HTML-Dokument im Browser

Abbildung
Hier klicken, um das Bild zu Vergrößern


Wenn Sie mit HTML-Code nichts anfangen können, lesen Sie zunächst Kapitel 16, HTML und XHTML. Ansonsten sollten Sie sich den Quellcode des XSLT-Beispiels genauer anschauen. Wie Sie sehen, wird die gesamte Struktur des HTML-Dokuments einfach aufgeschrieben, umschlossen und unterbrochen von XSLT-Angaben, die die Inhalte bestimmter Elemente aus xml-buecher.xml an den passenden Stellen einfügen.

Wichtige XSLT-Formatangaben

Im Einzelnen werden in Listing 15.3 die folgenden XSLT-Elemente verwendet:

gp  xsl:stylesheet ist das Wurzelelement des gesamten XSLT-Stylesheets.
gp  xsl:template erwartet als Inhalt des Attributs match den Namen eines XML-Elements aus dem Dokument, dessen Inhalte verarbeitet werden sollen. Bevor Sie die erste Zeile des Ausgabedokuments schreiben, müssen Sie mittels xsl:template das Wurzelelement des Eingabedokuments auswählen. Zu diesem Zweck bietet XSLT die Kurzfassung match="/" an.
gp  xsl:for-each funktioniert ähnlich wie xsl:template. Allerdings durchläuft es sämtliche Elemente des unter select angegebenen Typs in einer Schleife.
gp  xsl:value-of liest den Textinhalt eines Elements, das PCDATA- oder CDATA enthält. Wenn Sie dem Attributwert von select ein @ voranstellen, wird nicht der Wert eines Elements ausgelesen, sondern der Wert eines Attributs des aktuellen Elements, das zuvor mittels xsl:template oder xsl:for-each ausgewählt wurde.

Neben den hier verwendeten XSLT-Konstrukten existiert noch eine Reihe weiterer, die den Rahmen dieses Kapitels sprengen würden. Das Wichtigste, was Sie beachten müssen, ist die korrekte Reihenfolge bei der Konstruktion von XSLT-Stylesheets: Sie müssen sowohl die Hierarchie des Eingabedokuments mittels xsl:template- und xsl:foreach-Tags korrekt verarbeiten als auch die Wohlgeformtheit des Ausgabedokuments beachten.

  

Einstieg in PHP 5

Einstieg in Java

C von A bis Z

Einstieg in C++

Einstieg in Linux

Einstieg in XML

Apache 2




Copyright © Galileo Press GmbH 2004
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> 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 Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de