Entwicklung

Geschichte

1950
Ted Nelson erfindet Hypertext
1969
Generalized Markup Language wird bei IBM (von Goldfarb, Mosher und Lorie) entwickelt, um firmeninterne Dokumente einheitlich zu verwalten
1986
Standardized GML (ISO 8879)
1989
Hypertext Markup Language
1993
Mosaic, der erste Web-Browser, wird kostenlos über das Internet angeboten
1994
Cascading Style Sheets
1996
Document Style Semantics and Specification Language
1998
Extensible Markup Language 1.0
1998
Extensible Style Language 1.0
2001?
XML Schema

Übergang SGML zu XML

Eine sehr technische Beschreibung der Unterschiede kann auf die wichtigsten Elemente zusammengefasst werden:

Besonderheiten

Inhaltliche gegen optische Auszeichnung

Bei HTML steht ein festgelegter Vorrat an Auszeichnungen zur Verfügung. Manche sind optisch: zum Beispiel <i>, <strong>, <font>. Manche sind inhaltlich, zum Beispiel <address>, <h1>. Der Web-Browser legt fest, wie die Elemente genau angezeigt werden (zum Beispiel ist Fettschrift in der Standardeinstellung von Lynx unterstrichen).

Eine inhaltliche Auszeichnung lässt sehr viel mehr Information über die Struktur eines Dokuments transparent erscheinen. Wenn man zum Beispiel alle Personennamen, die in einem Dokument vorkommen, mit <name>Hugo Habicht</name> als solche auszeichnet, können sie im gedruckten Dokument als Kapitälchen angezeigt werden, gleichzeitig kann man mit einem Programm alle Namen in ein Namensregister packen.

Document Type Definitions

Ein Satz syntaktisch kann sein inkorrekt, obwohl richtige enthält nur Wörter.

Ein Satz kann syntaktisch völlig korrekt sein und gleichzeitig ein nicht im Duden auffindbares Brömel enthalten.

Wir können die beiden obigen Sätze verstehen, Computer sind da weniger fehlertolerant. Die rigide syntaktische Vorschrift von XML erlaubt, mit wenig Aufwand die syntaktische Korrektheit ("Wohlgeformtheit") zu überprüfen. Eine tiefergehende Beschreibung der Grammatik und des Zeichenvorrates einer Dokumentenklasse wird durch die Document Type Definition (DTD) festgelegt.

Zum Beispiel ist HTML eine DTD innerhalb von SGML.

Ein XML-Dokument ist gültig, wenn es wohlgeformt ist und den Regeln seiner zugehörigen DTD entspricht.

Aufbau einer Document Type Definition

Beispiel: Eine DTD für Shakespeare-Dramen

<!-- DTD for Shakespeare    J. Bosak    1997.01.02 -->  
<!ENTITY amp "&">
<!ELEMENT play     (title, fm, personae, 
                        scndescr, playsubt, induct?,
                        prologue?, act+, epilogue?)>
<!ELEMENT title    (#PCDATA)>
<!ELEMENT fm       (p+)>
<!ELEMENT p        (#PCDATA)>
<!ELEMENT personae (title, (persona | pgroup)+)>
<!ELEMENT pgroup   (persona+, grpdescr)>
<!ELEMENT persona  (#PCDATA)>
<!ELEMENT grpdescr (#PCDATA)>
<!ELEMENT scndescr (#PCDATA)>
<!ELEMENT playsubt (#PCDATA)>
<!ELEMENT induct   (title, subtitle*, (scene+|(speech|stagedir|subhead)+))>
<!ELEMENT act      (title, subtitle*, prologue?, scene+, epilogue?)>
<!ELEMENT scene    (title, subtitle*, (speech | stagedir | subhead)+)>
<!ELEMENT prologue (title, subtitle*, (stagedir | speech)+)>
<!ELEMENT epilogue (title, subtitle*, (stagedir | speech)+)>
<!ELEMENT speech   (speaker+, (line | stagedir | subhead)+)>
<!ELEMENT speaker  (#PCDATA)>
<!ELEMENT line     (stagedir | #PCDATA)+>
<!ELEMENT stagedir (#PCDATA)>
<!ELEMENT subtitle (#PCDATA)>
<!ELEMENT subhead  (#PCDATA)>
      

Erläuterung der Syntax

Das Beispiel sieht verwirrend aus, löst sich aber, wenn man es Schritt für Schritt durchgeht und sich klar macht, welche Elemente was enthalten können.

Es existieren Entities und Elements. Entities sind feste Zeichen oder Zeichenfolgen. So löst sich &amp; in das & auf, da es durch die Entity-Deklaration so vereinbart wurde.

#PCDATA können auch auf einem Server abgespeichert werden :-). Sie stehen für "parseable character data". Ihr Gegenstück sind Binärdaten, die vom XML-Parser nicht weiter interpretiert werden sollen. Sie werden durch #NDATA bezeichnet.

Elemente können andere Elemente enthalten. Entities, #NDATA und #PCDATA können nichts mehr enthalten.

In einer Elementdefinition können folgende syntaktische Ausdrücke enthalten sein:

, das Komma
Elemente, die durch ein Komma getrennt werden, müssen beide in der Reihenfolge vorkommen.
() runde Klammern
Sie gruppieren mehrere Elemente und auch den gesamten Definitionskörper.
|
Trennt Alternativen. Eines von den links und rechts stehenden Elementen muss vorkommen.
* + ? Quantoren
Das vorstehende Element darf (beim Stern) beliebig häufig (auch nullmal), (beim Plus) mindestens einmal, (beim Fragezeichen) null- oder einmal vorkommen.
'' Anführungszeichen

XML-Schemas

Die DTDs sind syntaktisch von SGML her übernommen. Natürlich lassen sich Dokumentgrammatiken auch selbst in einer Beschreibungssprache wie XML entwerfen. Eine in XML geschriebene Strukturvorschrift heißt XML-Schema.

Umwandlungswerkzeug

Manipulation von XML-Dokumenten

Baumstruktur

Im Gegensatz zur ereignisbasierten Interpretation von XML-Dokumenten (simple API to XML (SAX)) ist das Document Object Model (DOM) an der Baumstruktur orientiert.

Dies bedeutet, dass das Dokument als Ganzes eingelesen werden muss, bevor es interpretiert werden kann. Dafür kann es flexibel bearbeitet werden.

Bearbeitung am Beispiel von Perl

Das Modul XML::DOM entwickelt eine Baumstruktur aus dem Originaldokument. Mit ihr kann man flexibel auf einzelne Ecken des Graphen zugreifen.

Die Aufgabe soll nun darin bestehen, mit Hilfe von XML::DOM einen Rollenauszug aus einem Drama zu basteln, in dem nur die Auftritte und Sprechrollen einer einzigen dramatischen Person herausgezogen wird und der Rest des Textes gelöscht werden. Nur die letzte Zeile des vorhergehenden Parts soll als Erleichterung des Einsatzes mit herausgegeben werden.

Eine Verwirklichung mit Hilfe von Perl ist nicht allzu schwer.

Style-Sheets

Mit der Baumstruktur vor Augen, kann man natürlich sehr vielfältige Ausgaben produzieren, zum Beispiel eine Umwandlung in ein TeX-Dokument. Ein Programm kann alle Ecken durchlaufen und Formatieranweisungen abhängig von den Kindern und Eltern der aktuellen Ecke herausschreiben.

Speziell kann so die Trennung von Inhalt und Form vorgenommen werden, was ein immenser Vorteil ist. Man kann sich verschiedene Routinen schreiben, die Ausgaben in Richtung HTML, RTF, texinfo, in SMS-gerechte Portionen oder was auch immer leisten.

Der Nachteil an diesem Ansatz (aus Perls Paket XML::DOM heraus zu arbeiten) ist, dass man von der Implementierungssprache anhängig ist. Ein Web-Designer, der die Formatanweisungen schreibt, müsste sich an eine passende Programmiersprache (die vielleicht die Datenbank im Hintergrund verwaltet) halten.

Daher wurde (und wird!) eine eigene Sprache entwickelt, die diese Formatierungsanweisungen beschreibt, die Extensible Style Language (XSL). Auf diese Weise ist eine Trennung zwischen Form, Inhalt und Implementation gegeben. Die Umsetzung in die passenden Formate muss von Programmiersprachen geleistet werden. In Perl tut dies das Paket XML::XSLT. Die Formatierungen finden bei dynamischen Webseiten in der Regel auf seiten des Servers statt.

Aus Zeitgründen soll nicht näher auf XLS eingegangen werden. Als Beispiel, wie das Ergebnis einer Umwandlung eines XML-Dokuments in HTML aussieht, können die anliegenden Dateien dienen. Die XSL-Datei ist jedoch schnell zusammengestoppelt und nur zu Demonstrationszwecken, wie so etwas im Prinzip funktioniert, zu gebrauchen. Ausführlichere Tutorien findet man auf Deutsch bei der iX-Redaktion und auf Englisch bei Norman Walsh zu bekommen.


Johannes Hüsing, (hannes@ruhrau.de), letzte Änderung am 25.03.2001.