copyright (c)2003-2005   useGroup
XSLT

66151@usegroup.de

Einführung in XML/XSLT

Vorwort

nach untenVersion dieses Dokumentes

nach untenWas Sie lesen sollten

nach untenLizenz

nach untenÄnderungen an diesem Dokument

nach untenLinks

nach untenWas ist XML?

nach untenWas ist XSLT?

nach untenWas ist XHTML?

nach untenWas sind DTDs?

nach untenWas sind Schemata?

Version dieses Dokumentes

nach obenVersion dieses Dokumentes 

V1.00 vom 10.7.2001



Was Sie lesen sollten

nach obenWas 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



Lizenz

nach obenLizenz 

      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

nach obenÄnderungen an diesem Dokument 

Wenn Sie Änderungen an diesem Dokument vornehmen möchten, lesen Sie bitte model.html.



Links

nach obenLinks 

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?

nach obenWas 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:

in diesem Artikel soll nur gezeigt werden, wie man DTDs und XSLT, XHTML und Schemata anwendet.



Was ist XSLT?

nach obenWas 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?

nach obenWas 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:

Nachteile: 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?

nach obenWas 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?

nach obenWas 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.



copyright (c)2003-2005   useGroup