Home / LinuxUser / 2002 / 01 / XML und XSLT

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Transformationen

XML und XSLT

Großprojekt Zeitschrift

Als drittes Beispiel wagen wir uns an eine stark vereinfachte Anwendung für die Realisierung einer Zeitschrift in XML; die DTD finden Sie in Listing 5.

Hier gibt es einige Besonderheiten zu beachten: Das Element absatz (Zeile 10) kann sowohl Text vom Typ #PCDATA sein als auch die Elemente listing und begriff enthalten, damit der Autor eines Artikels in einem Absatz auch Listings und Glossareinträge markieren kann.

Alle anderen Elemente werden wie gewohnt definiert, das Wurzel-Element heißt zeitschrift.

Listing 5

Zeitschriften-DTD

1 <!ELEMENT zeitschrift (artikel)*>
 2   <!ELEMENT artikel (rubrik,titel,autor,vorspann,text)*>
 3     <!ELEMENT rubrik (#PCDATA)>
 4     <!ELEMENT titel (#PCDATA)>
 5     <!ELEMENT autor (#PCDATA)>
 6     <!ELEMENT vorspann (#PCDATA)>
 7     <!ELEMENT text (zwischenueberschrift | erklaerung | absatz )>
 8     <!ELEMENT zwischenueberschrift (#PCDATA)*>
 9     <!ELEMENT erklaerung (#PCDATA)>
10     <!ELEMENT absatz (#PCDATA | listing | begriff)*>
11       <!ELEMENT listing (#PCDATA)>
12       <!ELEMENT begriff (#PCDATA)>

Eine XML-Datei für eine – zugegeben sehr rudimentäre – Zeitschrift, die aus genau einem Artikel besteht, finden Sie in Listing 6. In Zeile 14 sehen Sie, wie das listing-Element innerhalb eines <absatz /> verwendet wird.

Listing 6

Rudimentäre Zeitschrift

1 <?xml version = '1.0' encoding="iso-8859-1" ?>
 2 <!DOCTYPE zeitschrift SYSTEM "zeitschrift.dtd">
 2 <?xml-stylesheet type="text/xsl" href="zeitschrift.xsl" ?>
 3 <zeitschrift>
 4   <artikel>
 5     <rubrik>Programmierung</rubrik>
 6     <titel>BASIC für Anfänger</titel>
 7     <autor>Kalle Schlaumeier</autor>
 8     <vorspann>BASIC ist wieder groß in Mode.</vorspann>
 9     
10       <absatz>
11         BASIC ist schon uralt. Bereits in der PC-Steinzeit haben
12         Programmierer in dieser Sprache Programme geschrieben. Das
13         berühmte Hallo-Welt-Beispiel sieht in BASIC so aus:
14         <listing>15 print "Hallo, Welt!"</listing>
15       </absatz>
16       <zwischenueberschrift>Geschichte</zwischenueberschrift>
17       <absatz>
18         Selbst in der Zeit von modernen <begriff>GUI</begriff>-
19         Toolkits hat eine Sprache wie BASIC durchaus noch ihre Daseinsberechtigung.
20       </absatz>
21       <erklaerung> GUI: Graphical User Interface - Grafische Benutzerschnittstelle.
22       </erklaerung>
23     
24   </artikel>
25 </zeitschrift>

Das Listing eines Stylesheets für die Online-Ausgabe unserer imaginären Zeitschrift ist zu umfangreich, um es hier abdrucken zu können. Sie finden es daher auf der Heft-CD.Die Formatierung des Root-Elements erfolgt wie inzwischen gewohnt. Um die Verschachtelung der Tags umzusetzen, verwenden wir den XSL-Befehl <xsl:apply-templates />:

<xsl:template match="/">
 <html><head><title>Zeitschrift</title>
 </head><body bgcolor="ffffff">
        <xsl:apply-templates />
 </body></html>
</xsl:template>

Mit diesem Befehl weisen Sie den Parser an, Vorlagen zu verwenden, die außerhalb dieser <apply-templates />-Anweisung stehen. Der Parser durchsucht daraufhin das Stylesheet nach einer passenden template-Definition und verwendet die passende Vorlage.

Für das Element rubrik etwa findet sich folgende Definition:

<xsl:template match="rubrik">
  <h4><xsl:value-of select="." /></h4>
</xsl:template>

Immer, wenn der Parser innerhalb der XML-Datei auf ein Element dieses Namens trifft, wird er es entsprechend dieser Definition umwandeln.

Bei einteiligen HTML-Tags innerhalb von XSL, wie z. B. <hr> zum Einfügen einer Linie oder <img> zum Einbinden von Grafiken, gilt es für HTML-Gewöhnte, sich etwas umzustellen:

<xsl:template match="erklaerung">
  <p>
  <hr />[…]

  </p>
</xsl:template>

Derartige Tags müssen – anders als in alten HTML-Versionen – stets von einem Ende-Tag abgeschlossen werden, da es in XML keine "offenen" Tags geben darf. Selbstverständlich ist dabei auch die XML-Kurzschreibweise für leere Tags (also <hr /> oder <img />) erlaubt.

Abbildung 3: Ein Zeitschriftenartikel

Wozu das Ganze?

Auf diese Mühsal folgt die Ernüchterung: All diese Beispiele ließen sich mit weniger Aufwand direkt in HTML realisieren. Warum also die Umstände? Mit XML/XSLT trennen Sie Daten und Formatierung so mühelos wie vollständig. Statt in einer komplexen, mit Formatierungsinformationen überfüllten einfachen HTML-Datei herumzustochern, um deren Aussehen im Browser zu ändern, passen Sie lediglich das Stylesheet an und lassen die Daten in Ruhe. Zudem ist es mit XSLT möglich, aus einer Datenquelle verschiedene Ausgabeformate – nicht nur HTML – zu erzeugen.

Diesen Vorteil nutzt etwa das KDE-Projekt. Statt für die Programmdokumentation PDF- und HTML-Versionen getrennt zu pflegen, wird die in einem XML-Format geschrieben: DocBook. Die Konvertierung dieser Texte nach HTML oder PDF übernimmt der Prozessor Jade, der, anders als Saxon, neben der Transformation von XML in HTML auch noch andere Formate erzeugen kann, aber dafür wesentlich schwieriger zu bedienen ist.

Eine Anleitung zum Schreiben von Dokumentation für KDE finden Sie unter [5], während [6] beschreibt, welche Programme Sie zum Transformieren der XML-Daten in Dokumente für die KDE-Online-Hilfe benötigen.

Um aus einer DocBook-Datei eine Sammlung von HTML-Dateien zu machen, steht Ihnen das Programm docbook2html zur Verfügung, das im Paket kdelibs enthalten ist. Der Befehl

docbook2html \
-c /usr/share/apps/ksgmltools/catalog \
-d /usr/share/apps/ksgmltools/stylesheets/kde.dsl#html \IhreDatei.docbook

ruft das Konvertierungsprogramm auf, das aus der XML-Datei IhreDatei.docbook eine Reihe von HTML-Dateien erzeugt. Der Parameter -c verweist auf das Verzeichnis, das die DTD enthält, -d sagt dem Parser, in welchem Verzeichnis die Stylesheets zu finden sind.

Unter [7] und [8] finden Sie übrigens eine ausführliche Einführung in XSLT, die auch Aspekte wie Links und Einbindung von Grafiken bespricht. Ausführliche Informationen über XPath liefert [9] – genügend Stoff, der Sie bei Ihrer nunmehr bereits fortgeschrittenen Beschäftigung mit XML begleiten kann.

Glossar

XML

"EXtensible Markup Language". Eine auf SGML basierende Auszeichnungssprache, mit der Möglichkeit, eigene Tags zu definieren.

DTD

"Document Type Definition". In einer DTD werden XML-Tags und ihre Eigenschaften definiert.

XHTML

Die neueste, auf XML basierende Version der "HyperText Markup Language", der Seitenbeschreibungssprache des World Wide Webs.

JavaScript

Eine in HTML eingebettete Skriptsprache, mit der interaktive Elemente innerhalb von Web-Seiten realisiert werden können.

CSS

"Cascading Style Sheets" ermöglichen die Formatierung von HTML-Elementen.

Pfad

Der "Weg" zu einer Datei auf einem lokalen Dateisystem, also die Angabe aller Verzeichnisse, über die man "gehen" muss, um zu ihr zu gelangen.

Parser

Ein XSL-Parser ist ein Programm, das XSL-Dateien einlesen und auf Richtigkeit überprüfen kann.

Java Virtual Machine

Ein Programm, das vorkompilierte Java-Programme ausführen kann. Neben der JVM aus dem "Java Runtime Environment" (JRE) der Firma Sun gibt es als freie Alternativen Kaffe und Blackdown.

CLASSPATH

Diese Variable, der Java-Classpath, enthält die Verzeichnisse, in denen Java-Klassen, Programme und Bibliotheken abgelegt werden.

URL

"Uniform Resource Locator", die eindeutige Adressenangabe für eine Datei im Internet.

PDF

"Portable Document Format". Ein von der Firma Adobe entwickeltes Dateiformat zur Weitergabe formatierten Textes.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 0 Punkte (1 Stimme)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...