XMLidP2000

Sitemap

Sitemap

1 Einführung
1.1 Warum mehr weniger ist
1.2 Warum mehr mehr ist
1.3 Wohin die Reise geht
2 Was sind Dokumente?
2.1 Eine kurze Geschichte der Textverarbeitung
2.2 Bestandteile eines Dokumentes
2.3 Die neue, alte Idee: Strukturorientiert schreiben
2.4 Die Entwicklung des Hypertextes
2.5 Textformate im Web
2.6 Das SGML-Konzept: Generic Markup
2.7 Dokumente versus Daten
3 XML im Web
3.1 XML bei der Verwaltung von Websites
3.2 Clientseitige XML-Interpretation
3.2.1 XML mit CSS
3.2.2 XML mit XSL(T)
3.3 XML auf dem Server
3.4 Linking-Möglichkeiten von XML
3.5 XML als Datenaustauschformat
4 XML Quick Start
4.1 Dokumenttyp-Definition (DTD) und Instanzen
4.2 Verarbeitung der Dokumente
4.2.1 Beispiel: Verarbeitung mit Cost/TCL
4.2.2 Beispiel: Verarbeitung mit XSLT
4.2.3 Beispiel: XML/XSLT im Internet Explorer
4.2.4 Fazit
5 XML-DTDs: Die verständliche Beschreibung
5.1 Ein Wort zur Notation
5.2 Dokumente
5.3 Elemente
5.4 Zeichen, Namen und Zeichendaten
5.5 Kommentare
5.6 Processing Instructions
5.7 Wo bleibt Multimedia?
5.8 Dokumenttyp-Definition (DTD)
5.8.1 Elementtyp-Deklaration
5.8.2 Attributlisten-Deklaration
5.8.3 Möglichkeiten, die DTD zu gestalten und zu gliedern
5.8.4 Notation-Deklaration
6 Namensräume in XML
7 XPath: Adressierung von XML-Dokumentteilen
7.1 Zu Grunde liegendes Datenmodell
7.2 Zugriff auf den Datenbaum
7.3 Hilfe von Operatoren
7.4 Kernfunktionen für den Datenzugriff
8 XML: Linking
8.1 Notwendige Begriffe
8.2 XLink: einfache und erweiterte Links
8.2.1 Einfache Verweise
8.2.2 Erweiterte Links
8.2.3 XLink in der Praxis
8.3 XPointer: Verweise in Dokumente hinein
8.3.1 XPath-Erweiterungen in XPointer
9 Überblick über Stylesheet-Sprachen
9.1 Cascading Style Sheets
9.1.1 Wertzuweisungen
9.1.2 Formatierungsmodell
9.1.3 CSS und XML
9.1.4 Ein Beispiel: XML im Mozilla
9.2 Document Style Semantics and Specification Language
9.2.1 Flow Objects
9.2.2 Verarbeitungs-Modus
9.2.3 DSSSL praktisch
9.2.4 Langer Marsch von DSSSL nach HTML
9.3 Extensible Stylesheet Language (XSLT und XSL)
9.3.1 Verhältnis von XSLT zu XSL
9.3.2 Formatierung mit XSL
10 XSL-Transformationen
10.1 Grundsätzliches über Templates
10.2 Ergänzungen zum Datenmodell von XPath
10.3 Struktur von XSLT-Stylesheets
10.4 Den Ergebnisbaum erzeugen
10.4.1 Diverse Basiselemente
10.4.2 Formatierte Nummerierung
10.4.3 Schleifen und bedingte Verarbeitung
10.4.4 Sortieren
10.4.5 Variable und Parameter
10.4.6 Zusätzliche Funktionen
10.4.7 XSLT-Erweiterungen
10.4.8 message, output
11 XSLT in Web-Anwendungen
11.1 XSLT im Internet Explorer
11.2 Linklisten erzeugen
11.3 Details einer Literaturgeschichte
11.3.1 Sortierte Überblicksseiten
11.3.2 Kalender: einzelne Tage ausgeben
12 XML-Editoren
12.1 Übersicht
12.1.1 Emacs + PSGML (mit XML-Unterstützung)
12.1.2 XML Notepad
12.1.3 XML Spy
12.1.4 XMetal
12.1.5 Epic
12.1.6 MarkupKit (für MS Word)
12.1.7 WordPerfect Office2000
12.2 Emacs und PSGML (mit XML-Unterstützung)
12.3 XML-Notepad
12.4 XML Spy
12.5 XMetal
12.6 Epic
12.7 MarkupKit (für MS Word)
12.8 WordPerfect Office2000
12.9 Fazit
13 Entwicklung einer DTD
13.1 Auswahl einer Mehrzweck-DTD
13.2 Entwurf einer DTD
13.2.1 Dokumentanalyse
13.2.2 Tipps und Tricks
13.3 Instanzen ohne DTD
14 Herstellung dieses Buches
14.1 Zielsetzung und Randbedingungen
14.2 Definition der DTD
14.2.1 Schritt 1: Die Grobstruktur
14.2.2 Schritt 2: Elemente auf Zeichenebene
14.2.3 Schritt 3: Die Details
14.3 Formatieren des Manuskriptes
14.3.1 Konvertierung in HTML
14.3.2 Aufbereitung für den Ausdruck
14.4 Erfahrungen mit der zweiten Auflage
15 Anwendungsbeispiel Literatur
15.1 Vorüberlegungen
15.2 En détail: die Autoren in der DTD
15.3 Wie die Daten ins Web gelangen
15.3.1 Inhaltsverzeichnis generieren
15.3.2 Ausgabe der Autorendaten
15.4 Vollständige Listings
15.4.1 DTD für die Literaturgeschichte
15.4.2 DSSSL-Listing: Inhaltsverzeichnis
15.4.3 DSSSL-Listing: Ausgabe eines einzelnen Autors
15.4.4 Perl-Code für Ausgabe einzelner Autoren
16 Verteilte Softwareverwaltung mit XML
16.1 Aufgabenbeschreibung
16.2 XML als Datenbasis
16.3 Bilden von DTD-Hierarchien
16.4 Zusammentragen von verteilten XML-Fragmenten
16.5 Fazit
16.6 Stylesheet zur Transformation in HTML
17 E-Commerce mit XML
17.1 B2B-E-Commerce
17.1.1 Die Rolle von XML
17.1.2 Technische Aspekte
17.2 BMEcat
17.3 Electronic Business XML (ebXML)
17.3.1 Arbeitsgruppen
17.3.2 Zeitplan des Projekts
17.4 XML und EDIFACT
18 XML und Apache
18.1 XML-Transformation per CGI
18.1.1 Konfiguration des Servers
18.1.2 CGI-Skript: xmlhandler.cgi
18.1.3 Beispiel: von HTML nach HTML mit DSSSL oder XSLT
18.2 Cocoon
18.2.1 Extensible Server Pages (XSP)
18.2.2 Beispiel: Formatierung in PDF mit XSL
18.2.3 Beispiel: Simuliertes XLink mit Dynamic HTML/JavaScript
18.2.4 Installation
19 XHTML: Neues HTML 4 — erweiterbar
19.1 Status quo: HTML neu definiert
19.2 Modulare Zukunft
20 Transformation von XML in WML und HTML
20.1 Erzeugen der WML-Dateien
20.2 Erzeugen der HTML-Dateien
21 Ausblick
21.1 XML Schema
21.2 Programmierung mit XML-Daten
21.3 XML und Java
21.4 Resource Description Framework
21.5 Die Zukunft
A Extensible Markup Language (XML) 1.0
A.1 Einleitung
A.1.1 Herkunft und Ziele
A.1.2 Terminologie
A.2 Dokumente
A.2.1 Wohlgeformte XML-Dokumente
A.2.2 Zeichen
A.2.3 Allgemeine syntaktische Konstrukte
A.2.4 Zeichendaten und Markup
A.2.5 Kommentare
A.2.6 Processing Instructions
A.2.7 CDATA-Abschnitte
A.2.8 Prolog und Dokumenttyp-Deklaration
A.2.9 Standalone-Dokumentdeklaration
A.2.10 Behandlung von Leerraum
A.2.11 Behandlung des Zeilenendes
A.2.12 Identifikation der Sprache
A.3 Logische Strukturen
A.3.1 Start-Tags, End-Tags und Leeres-Element-Tags
A.3.2 Elementtyp-Deklarationen
A.3.3 Attributlisten-Deklaration
A.3.4 Bedingte Abschnitte
A.4 Physikalische Strukturen
A.4.1 Zeichen- und Entity-Referenzen
A.4.2 Entity-Deklarationen
A.4.3 Analysierte Entities
A.4.4 Behandlung von Entities und Referenzen durch einen XML-Prozessor
A.4.5 Konstruktion des Ersetzungstextes von internen Entities
A.4.6 Vordefinierte Entities
A.4.7 Notation-Deklarationen
A.4.8 Dokument-Entity
A.5 Konformität
A.5.1 Validierende und nicht-validierende Prozessoren
A.5.2 Benutzen von XML-Prozessoren
A.6 Notation
A.7 Anhang A: Referenzen
A.7.1 Normative Referenzen
A.7.2 Weitere Referenzen
A.8 Anhang B: Zeichenklassen
A.9 Anhang C: XML und SGML (nicht normativ)
A.10 Anhang D: Expansion von Entity- und Zeichenreferenzen (nicht normativ)
A.11 Anhang E: Deterministische Inhaltsmodelle (nicht normativ)
A.12 Anhang F: Automatische Erkennung von Zeichenkodierungen (nicht normativ)
A.13 Anhang G: XML-Arbeitsgruppe des W3C (nicht normativ)
B Verknüpfen von Style Sheets mit XML-Dokumenten Version 1.0
B.1 Die xml-stylesheet-Processing-Instruction
B.2 Anhang A: Referenzen
B.3 Anhang B: Begründung
C Verhältnis von XML zu SGML und HTML
C.1 XML und SGML
C.2 XML und HTML
D Übersichten
D.1 Cascading Style Sheets
D.1.1 CSS-Eigenschaften und -Werte
D.1.2 CSS-Muster
D.2 DSSSL: Flow Objects
D.3 Syntax der XSLT-Elemente
D.4 DTD-Fragment für XSLT-Stylesheets (nicht normativ)
D.5 Relevante Spezifikationen und Organisationen
D.5.1 International Organization for Standardization
D.5.2 World Wide Web Consortium
D.5.3 Organization for the Advancement of Structured Information Standards
D.5.4 Internet Society und Internet Engineering Task Force
D.5.5 ISO-639-Sprachcodes
D.5.6 ISO-3166-Ländercodes
D.5.7 Zeichensatz ISO-Latin-1
D.5.8 Sonderzeichen
D.6 XML-1.0-Regeln

9 Überblick über Stylesheet-Sprachen

Keine Verbesserung ist zu klein oder geringfügig, als dass man sie nicht durchführen sollteFussnoteAus den Minima Moralia..

Theodor W. Adorno

It is time to unmask the computing community as a Secret Society for the Creation and Preservation of Artificial ComplexityFussnoteAus dem Aufsatz The Tide, Not the Waves [deme97] [deme97]Beyond Calculation - The Next Fifty Years of Computing - The Next Fifty Years of Computing, Peter J. Denning, Robert M. Metcalfe, New York, 1997, Copernicus (Springer)..

Edsger W. Dijkstra

Wer sich mit Publishing im weiteren Sinne des Wortes beschäftigt, weiß, dass die Gestaltung von Dokumenten ihrem Inhalt an Bedeutung nicht viel nachsteht, wenn man das Ergebnis auch verkaufen will. Zyniker werden nicht müde zu behaupten, sie sei das einzig Wichtige.

Display ist Wahrheit. Alles, was Anwender (nicht nur im Web) sehen, ist das Zusammenspiel des Inhalts und seiner Formatierung. Ob eine mittelgroße Überschrift zentriert oder rechts ausgerichtet dargestellt wird, hat zwar mit dem Inhalt nur bedingt zu tun, beeinflusst aber die ästhetische Wahrnehmung — die des Inhalts.

Über die Stilsprache für XML zu schreiben, heißt momentan gleich dreierlei thematisieren zu müssen, weil die Festlegung der entsprechenden Sprache noch im Fluss ist. Die Extensible Stylesheet Language (XSL) ist zur Zeit ein Entwurf im Last Call, der am 30. April 2000 endet. Wenn nicht dazwischen kommt, wird XSL später in diesem Jahr verabschiedet. Gleichzeitig gibt es Alternativen für diese Sprache: die aus HTML bekannten Cascading Style Sheets und DSSSL. Alle drei werden in diesem Kapitel behandelt.

Glücklicherweise müssen diejenigen, die nicht ein Jahr oder länger auf die Verabschiedung eines Standards warten wollen, dies auch nicht tun. Denn mit der Document Style Semantics and Specification Language (DSSSL) ist schon länger eine Sprache vorhanden, die zwei Vorteile hat:

  1. Sie erlaubt es, Stylesheets für XML-Instanzen zu schreiben, die diese in HTML wandeln und damit für das Web zugänglich machen.
  2. Sie liegt dem kommenden Standard zumindest konzeptionell zu Grunde, was soviel bedeutet wie: Was man jetzt lernt, muss man nächstes Jahr nicht gleich wieder vergessen.

Diese beiden Vorteile waren für uns der Grund, DSSSL etwas ausführlicher zu behandeln; aber die beiden anderen Sprachen kommen natürlich auch zu ihrem Recht. Zur Reihenfolge: Zunächst sollen die Möglichkeiten von CSS, XML-Daten anzuzeigen, vorgestellt werden. Anschließend behandeln wir DSSSL, und kommen zum Schluss zu XSL, der designierten Stilsprache für XML.

Das Web braucht Stil

Spätestens seit es Cascading Style Sheets (CSS) für HTML gibt (Herbst 1996), war überdeutlich klar, dass das Web derlei braucht — eigentlich viel früher. Designer wie David Siegel hatten sich längst Gedanken darüber gemacht, wie die Gestaltung von Web-Dokumenten ohne zusätzliche Hilfe wie CSS zu verbessern sei. Die Erfindung des transparenten 1-Pixel-GIF, das in Höhe und Breite fast beliebig dehnbar ist, dürfte ihm zuzuschreiben sein. Ebenso hatte wohl er die Idee, Grafiken zu laden, ohne sie zu zeigen (gewissermaßen ein Vorwegladen), damit für den Anwender bei der nächsten Seite kein Gefühl des Wartens aufkommt. Aber all dies hieß, Inhalt und Formatierung zu vermengen respektive nicht vollständig auseinanderzuhalten.

Trennung von Inhalt und Formatierung in HTML

CSS waren für HTML ein deutlicher Fortschritt: Schließlich war es mit ihrer Hilfe erstmals möglich, das Basisdokument und die Art und Weise, wie es formatiert werden soll, voneinander getrennt zu halten und zu pflegen. Außerdem erlauben CSS Web-Autoren, ein Style Sheet für eine beliebige Menge von HTML-Dokumenten zu nutzen — und so für ein einheitliches Aussehen der Website (Corporate Identity) zu sorgen.

Im SGML-Umfeld hatte man sich über die grundsätzliche Trennung von Struktur und Formatierung des Inhalts von Dokumenten längst Gedanken gemacht; das eigentliche (= inhalts- beziehungsweise strukturbezogene) Markup sollte im Dokument enthalten sein, Formatierungsanweisungen nicht. Mit der Document Style Semantics and Specification Language (DSSSL) ist 1996 eine Sprache als ISO/IEC-Standard 10179 verabschiedet worden, die diese Formatierung für SGML-Dokumente leisten soll.

Hinweis

Um diese Trennung von Inhalt und Formatierung nach HTML zu übertragen, reicht es im Web-Dokument völlig aus, <h1>...</h1> zu schreiben und das Style Sheet (im HTML-Fall Cascading Style Sheets) darüber befinden zu lassen, welche Farbe Text und Links haben. Gleiches gilt natürlich auch für alle anderen Elemente: Welcher Schrifttyp, welche Schriftgröße etc. für einen Absatz oder ein Zitat vorgesehen sind, muss keineswegs im eigentlichen Dokument stehen. Im Gegenteil: Ist einmal ein Style Sheet fertig gestellt, kann es für beliebig viele Dokumente gelten, die wiederum Einzelheiten durch eigene Festlegungen überschreiben dürfen.

Für XML benötigt man — anders als im Falle von HTML — auf jeden Fall Style Sheets. Sonst lässt sich schließlich nichts darstellen. Wem das nicht ganz einleuchtet, der möge sich vor Augen halten, dass die Ausgaben, die gängige Web-Browser vornehmen, darauf beruhen, dass sie die Strukturbeschreibung von HTML verinnerlicht (einkompiliert) haben. Für jeden der Elementtypen in der HTML-DTD haben Netscape und Microsoft — und andere — festgelegt, wie Instanzen einzelner Elementtypen darzustellen sind. Das ist mit XML-Anwendungen nicht mehr möglich, denn woher soll ein Browser wissen, wie

Beispiel
  <author ID="Aue"
          firstentry="1998/01/17"
          lastmod="1998/01/17"
	  gender="m">
    <name>
      <fname>Hartmann von</fname>
      <lname>Aue</lname>
    </name>
    <vita>
      <born>
        <year>1165</year>
      </born>
      <died>
        <year>1215</year>
      </died>
    </vita>
  </author>

aussehen soll oder auch nur kann. An komplexere Daten sei hier lieber nicht gedacht. Kein Browser kann ahnen, von welcher Art die Elemente author oder vita sind respektive ob sie die Darstellung ihrer Kindelemente auf irgendeine Weise beeinflussen. Damit zukünftig Browser mit XML umgehen können, müssen die Hersteller ihnen zunächst beibringen, dass neben HTML auch XML über das Web kommen kann und dass es möglicherweise notwendig sein kann, zusätzliche Daten zu laden. Das mindestens ist schon bei CSS der Fall und muss mit XML nicht komplizierter sein. Nur ist dazu eine Sprache erforderlich, in der die XML-Style-Sheets geschrieben sein können/müssen.

Hinweis

Eventuell fragen Sie sich, warum Sie nicht CSS auch für XML benutzen sollten? Zwei Gründe — eigentlich nur einer, der aber zwei Aspekte hat — sprechen dagegen:

  1. Die Entwicklung von XML ist wesentlich von SGML-Anwendern mitgetragen worden, die ja bereits eine Stilsprache besitzen (DSSSL). Die aber bietet wesentlich mehr Möglichkeiten als die Cascading Style Sheets — und wer will schon aufgeben, was man hat, wenn es nicht unbedingt notwendig ist.
  2. CSS kann nicht genug: Die Cascading Style Sheets beschränken sich auf das reine Formatieren von Markup (h1, div etc.), erlauben aber im Gegensatz zu DSSSL keine programmiertechnischen Konstrukte.

Ganz so unberechtigt ist die Frage übrigens nicht: CSS wird schon für die Formatierung von XML-Dokumenten verwendet. Bereits die von Anfang April 1998 stammende Version des im Quellcode ausgelieferten Mozilla, Netscapes frei erhältlichem Browser, konnte XML-Dateien ohne den Umweg einer Konvertierung nach HTML anzeigen.

DSSSL: Stilsprache für SGML

Für SGML existiert, wie gesagt, bereits seit 1996 eine Sprache, die eine solche Formatierung vornimmt: DSSSL, die (um den Begriff noch einmal auf der Zunge zergehen zu lassen) Document Style Semantics and Specification Language. Als DSSSL-O ist eine reduzierte Variante bekannt (http://sunsite.unc.edu/pub/sun-info/standards/dsssl/dssslo/), auf der wiederum die XML-Stilkomponente basieren sollte.

Zunächst — Mitte 1997 — lagen zwei Vorschläge vor: Eine Überarbeitung der Online-Version von DSSSL (DSSSL-O), die von Jon Bosak stammt, war seit langem als XS bekannt. Mitte August 1997 hatten Vertreter von Microsoft, Inso und Arbortext — unter Mithilfe einiger Einzelpersonen — beim W3C einen anders gearteten Vorschlag eingereicht, den das Konsortium offenbar positiv aufgenommen hat. Unter dem Namen XSL ist diese Extensible Stylesheet Language bekannt geworden, und das W3C hatte ihr bald eine Web-Seite gewidmet (http://www.w3.org/Style/XSL/).

Im Folgenden geht es — der Reihe nach — um drei Dinge: Zunächst zeigen wir, was mit CSS und XML möglich ist. Anschließend sollen ein paar Details zu DSSSL klären, was die Sprache eigentlich ist, gefolgt von ein paar Beispielen zum möglichen Web-Alltag, die erklären, wie man DSSSL für HTML-Ausgaben nutzen kann. Und natürlich kommen als Schwerpunkt die XSL-Sprachen (XSLT und XSL-FO) hier zu ihrem Recht, inklusive praktischer Beispiele in späteren Kapiteln.

Herunter 9.1 Cascading Style Sheets
Herunter 9.2 Document Style Semantics and Specification Language
Herunter 9.3 Extensible Stylesheet Language (XSLT und XSL)

Valid HTML 4.01!Valid CSS!