Version dieses Dokumentes
V1.00 vom 10.7.2001
Was Sie lesen sollten
Wenn Sie zuerst einmal wissen wollen, ob XSLT das Richtige für Sie ist,
oder schnellstmöglichst zuerst einmal eine XML-Datei "hochstellen" möchten, lesen Sie bitte den
Quickstart.
Wenn Sie
- DTDs programmieren möchten, brauchen Sie nur die Datei DTDs zu lesen,
- Schemata programmieren möchten, lesen Sie bitte die Datei Schema und
die ersten 5 Abschnitte der Grundkenntnisse,
- wenn Sie XSLT lernen möchten sollten Sie mit dem Einstieg
anfangen und mit den beiden folgenden Dateien weitermachen, aber unbedingt
wissen, dass die Navigation in einem XML-Dokument
genau behandelt wird,
und die Grundkenntnisse möglichst auch gelesen haben
Lizenz
Copyright (c) 2001 usegroup.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1
or any later version published by the Free Software Foundation;
with the Invariant Sections being Vorwort, with no
Front-Cover Texts, and with no Back-Cover Texts.
A copy of the license is included in the section entitled
"GNU Free Documentation License".
Änderungen an diesem Dokument
Wenn Sie Änderungen an diesem Dokument vornehmen möchten,
lesen Sie bitte model.html.
Links
Im Internet gibt es verschiedene gute XSLT-Seiten wie
Auf viele dieser Ressourcen kann man über die iX-Seiten gelangen.
Empfehlen würde ich auch das Buch XSLT Programmer's Reference von Michael Kay, 777 Seiten, Englisch, 34,99$US von Wrox,
ISBN 1-861003-12-9.
Mehr auf XML-Programmierung und DTDs richtet sich Henning Behme und Stefan Minterts XML in der Praxis,
erschienen bei Addison-Wesley unter der ISBN 3-8273-1636, 512 (deutsche) Seiten für 79,90DM; Auch online
unter www.mintert.com/xml/.
Was ist XML?
XML (eXtensible Markup Language) ist eine Datenbeschreibungssprache.
Das heißt, dass jede Art von Daten (z.B. ein Textverarbeitungs- oder
Tabellenkalkulationsdokument, eine Homepage oder eingeschränkt Grafikdaten
(bislang nur Vektordaten) in einem XML-Format beschreiben lassen).
Sie denselben Vorgänger wie HTML, nämlich
SGML (und sie ähnelt HTML: Tags sollten Ihnen bekannt vorkommen).
Auch definiert XML einen Nachfolger für HTML, XHTML, der gewisse Vor-und Nachteile
hat, doch dazu später.
Hier eine kurze Beschreibung von XML:
-
XML ist an sich keine Dokumentenbeschreibungssprache, sondern eher
eine Dateiformatbeschreibungssprache. Letztendlich könnte ich in
einem XML-Dateiformat alle Aufgaben erfüllen, die ein beliebiges
anderes Dateiformat schon heute erfüllt. Aus einer XMLisierung erfolgen
gewisse Vor-und Nachteilen. XHTML
ist die offizielle XML-Abbildung es HTML-Dateiformates, doch gibt es weitaus
mehr XML-Markup Languages (d.i. Dateiformate) wie z.B. SVG, MathML (Mathematical Markup Language)
und ChemML, (chemical Markup Language) und XSLT.
-
XML definiert die Art und Weise, wie Tags geöffnet und geschlossen werden
können, XML selbst definiert jedoch keine Tags. Bei der Arbeit mit XSLT werden
wir selbsterfundene Tags benutzen (man könnte zwar direkt XHTMl-Tags benutzen
um die eigene Homepage zu schreiben, jedoch bringen "selbsterfundene" Tags, die
mit XSLT in XHTML umgewandelt werden, einen Vorteil: wenn ich einen Tag habe,
der mir sagt, was ein Zitat oder eine Überschrift ist, kann ich für alle
Zitate und Überschriften die Schriftart, Größe, Ausrichtung u.s.w. zentral festlegen).
-
XML hat die Möglichkeit, die Korrektheit von Dokumenten mit sogenannten DTDs und
Schemata testen zu können, jede SVG-Datei kann mit einem XML-Parser überprüft werden,
ob sie syntaktisch und in begrenztem Maße auch semantisch korrekt ist.
-
XML enthält viele Spezifikationen und Erweiterungen wie XPath und XPointer
die aber für
den Durchschnittsprogrammierer nur vom Konzept her interessant sind:
Genaugenommen benutzt zwar jeder XSLT-Programmierer zwangsläufig
XPath, weiß es aber nicht. Um ganz genau zu sein ist die gesamte
Navigation in XML-Dateien die in den Grundkenntnissen
beschrieben sind, XPath.
-
XML-Datenformate sollen auch für Menschen verständlich sein: Auch Vektordaten
aus SVG können dadurch z.B. durch einen Texteditor von Fehlern befreit werden.
in diesem Artikel soll nur gezeigt werden, wie man DTDs und XSLT,
XHTML und Schemata anwendet.
Was ist XSLT?

|
XSLT (eXtensible Stylesheet Language Transformations) ist ein Werkzeug,
von einem XML-Format ins andere zu konvertieren.
XSLT kann z.B. benutzt werden um von einem Eigenformat in eine
XHTML-Datei zu konvertieren. XSLT hat gegenüber CSS den Vorteil, dass
es Transformieren kann, d.h. Elemente mehrmals und an verschiedenen
Positionen verwenden kann (die Tags z.B. von hinten nach vorne zeigen
kann). Richtig vorteilig wirds dann bei Verzeichnissen für Inhalt,
Stichwörter und Bilder: XSLT kann sich die entsprechenden Informationen
aus den Dateien nehmen und automatisch ein Inhaltsverzeichnis
aufstellen (so geschehen in index.html).
Die Trennung von Struktur und Inhalt
HTML war von Anfang an dazu gedacht, zu definieren, welche Stellen im Dokument
z.B. Überschriften sind und welche betont werden sollen.
Der Browser entschied, wie die Dokumente darzustellen waren - und
hat aber wirklich Jeden, der entfernt was von Design verstand ziemlich die Wände hochgehen
lassen (die Seiten sahen selten auf zwei Browsern gleich aus).
Sehr spät hat das W3C seinen Fehler eingesehen hat und den Benutzern mit CSS ein Werkzeug an die
Hand gegeben hat um das Aussehen ihrer Seiten genauer und Browserunabhängig festlegen zu können.
Nichtsdestotrotz haben sich die Entwickler von großen Seiten ein
Beispiel an dem tollen WYSIWYG (What You See Is What You Get, also
dem gleich-aussehen des Ergebnisses mit der Anzeige in der Arbeitsumgebung)
genommen, dass viele Seiten mehr oder weniger eingefroren sind.
Ich habe zum Beispiel an einem Projekt konventionell mitarbeiten
müssen, das aus je 200 Dateien in 7 Sprachen bestand.
An sich ist das
noch kein Problem, nur wenn Optik oder Inhalt geändert werden sollen
(und sie sollten), sind
oft redundante Arbeiten auszuführen (an denselben Tags in
verschiedenen Dateien etwas ändern) oder die Änderungsstellen werden schwer
gefunden.
Dagegen hilft eine weitere Schicht, die Strukturschicht.
Ich definiere also selbst Tags die beschreiben, welche Information
mit der Absatz liefert und später sage ich wie diese Information(en)
dargestellt werden sollen.
Inhalt (z.B. Dies ist ein Artikel über XML).
Struktur (<Artikelanfang>Dies ist ein <Stichwort>Artikel über XML</Stichwort> <Artikelende>)
Darstellung: Stichwörter unterstreichen.
Ergebnis: Dies ist ein
Artikel über XML
Wenn ich jetzt 10000 HTML-Seiten schriebe und plötzlich auf die Idee käme,
Stichwörter entsprechend irgendeiner Norm blau zu schreiben, wäre
das durch die (einmalige) Änderung der Darstellungsschicht erheblich
leichter als durch eine Änderung von 10000 HTML-Dateien.
Das ist ein Grund, warum XSLT genial ist - und auch der Grund, warum
es erst ab einer gewissen Projektgröße beziehungsweise
Änderungshäufigkeit Sinn macht. Die Strukturschicht zwingt zu
einem leichten Mehraufwand - der Definition, welchen Zweck ein Abschnitt
entpricht und der späteren Definition, wie dieser darzustellen ist.
Sinn macht XSLT allerdings auch dann, wenn ich darauf angewiesen bin,
die Dateien z.B. in verschiedenen XML-Formaten weiterzugeben.
Ein weiterer Punkt ist: Wenn man in einem Team arbeitet und sich geeinigt
hat, welche Inhalte beschrieben werden (man sich also auf alle Tags und
Attribute geeinigt hat), kommt man i.d.R. mit einem sehr groben
Arbeitslayout aus und die Gruppen können gleichzeitig am Layout
(sprich der XSLT-Datei), an der DTD (falls gewünscht) und am Inhalt arbeiten.
Was ist XHTML?
HTML ist einne Untermenge des SGML-Dateiformat (Standard Generalized Markup Language).
XML ist eine kleinere Untermenge der SGML-Möglichkeiten und
XHTML ist ein XML-Dateiformat.

Vorteile:
- Die X(HT)ML-Eingabe kann durch DTDs und Schemata geprüft werden
- Der Standart ist klar definiert und kann durch Namespaces ausgeweitet
werden: Eine Kontrolle des Standarts ist gegenüber HTML möglich und auch gegeben
(keine nur-auf-Netscape-laufenden Erweiterungen mehr)
- Es ist in XSLT leichter und sinnvoller, eine XHTML-Datei als eine HTML-Datei
zu definieren
- Die X(HT)ML-Eingabe kann durch XSLT in andere Formate portiert werden
- Es ist wesentlich einfacher, einen XHTML-Browser als einen HTML-Browser
zu schreiben
Nachteile:
- HTML-Editoren und Programmierer müssen umlernen
- Da HTML de facto weiter besteht werden die Browser aufgebläht
- Es ist bisher kaum verbreitet
- Es ist länger als HTML
Alle HTML-Dateien dieses Projekts sind übrigens XHTML.
Das hat den Grund weil sie per XSLT aus einem proprietären
XML-Format erzeugt wurden.
Was sind DTDs?

|
DTD (Document Type Definitions) sind Dateien die beschreiben,
welche Tags mit welchen Attributen an welchen Stellen eines bestimmten
XML-Formats erlaubt sind. Da die Korrektheit der Tags ganz erheblichen
Einfluss darauf hat, ob die Dateien überhaupt angezeigt werden können,
gibt es für fast jedes XML-Format ein DTD oder Schema (mehr dazu gleich).
Auch sind sie eine wertvolle Hilfe beim Debugging und
beim Schreiben (Emacs mit DTD-Unterstützung zeigt zum Beispiel
alle Tags die im aktuellen Kontext verwendet werden dürften).
DTDs werden vom XML-Parser verarbeitet und können den Anwender
z.B. mit Fehlermeldungen wie "Tag unknown in line 44" weiterhelfen.
DTDs haben einen Haken: Sie können keine Datentypen überprüfen.
Das Tag Kundennummer kann letztendlich nur als Zeichenfolge
(PCDATA) deklariert werden,
sollten Kundennummern etwa mit Buchstaben oder Sonderzeichen vorkommen,
muss jeder (bzw. jedes Programm das es anzeigen soll) selbst sehen,
wie er zurecht kommt ;(
Dieses Manko beheben XML Schemata die seit dem 24.10.2000
W3C-Empfehlung sind.
Was sind Schemata?
Schemata sind Dateien, die ähnlich wie DTDs die Gültigkeit eines
Dokuments beschreiben. Anders als diese arbeiten Schemata jedoch nicht
Dokumenten- sondern Datenorientiert, kennen also verschiedene
Datentypen. Mit Schemata können Sie z.B. vorgeben,
dass ein Attribut nur eine Postleitzahl und ein Element nur eine
Artikelnummer beinhalten darf. Sie können dann die Datentypen
Postleitzahl z.b. als fünfstellige Nummer definieren und
Artikelnummer aus einer Folge dreier Buchstaben, einem Bindestrich
und 4 bis 5 Zahlen.
Der Vorteil: Werden die XML-Daten maschinell ausgewertet können
Fehler der Eingabe schon früh vermieden werden. Teilweise kann
sogar ganz auf eigene Überprüfungsroutinen, z.B. ob das Element
eine Zahl ist, verzichtet werden.