
Wenn innerhalb von gut einer Woche einer Software-Release gleich die nächste folgt, muß das einen Grund haben. Dem steigenden Interesse an XML folgend hat Netscape das von James Clark stammende XML-Toolkit expat in den Code integriert und dafür gesorgt, daß Mozilla XML-Dateien ohne Wandlung nach HTML anzeigt - das dazugehörige Style Sheet ist CSS(2) (warum, steht auf einem anderen Blatt).
Aber Vorsicht: es handelt sich um den allerersten Schritt zu einem nativen XML-Browser; mit Abstürzen und Enttäuschungen ist zu rechnen.
Auf einem Web-Server ihres Dokumentationsprojekts hat Sun ein paar Beispiele versammelt. Analog dazu sind auf den iX-Seiten einige Variationen einer Anwendung zu sehen, die historische Daten zur Entwicklung des Web versammelt.
Wer im folgenden eine Dokumenttypdefinition (DTD) vermißt, dem sei gesagt, daß die vorliegende XML-Instanz nur wohlgeformt, aber nicht gültig ist. Das heißt, das Dokument muß nur eine ordentliche Struktur haben, in der alle Elemente richtig ineinander geschachtelt sind (ein gültiges Dokument müßte außerdem mit einer DTD übereinstimmen).
Zunächst bedarf es einer XML-Datei, die im Browser zu sehen sein soll. Sie ist auszugsweise in Listing 1 wiedergegeben. Am Anfang stehen zwei Processing Instructions, die der Anwendung (hier: dem Browser) mitteilen, was zu geschehen hat. Die erste dieser PIs verrät, daß es sich um ein Dokument handelt, das nach der XML-Spezifikation in der Version 1.0 formuliert ist. Mit der zweiten wird ein Style Sheet zugeladen, wie es aus HTML schon bekannt ist - allerdings können CSS-Dateien normalerweise nur Formatierungen für HTML-Elemente vorsehen. Genau das ist hier anders (siehe Listing 3). Daß das Style Sheet CSS2 vorsieht, ist leicht optimistisch; die tatsächliche Instanz beschränkt sich auf CSS1.
Woran viele sich vielleicht erst gewöhnen müssen: die Elementnamen in XML kann man selbst festlegen. Im Style Sheet sind dann lediglich Festlegungen für diese Elemente vorzusehen. Und da es sich eben nicht um HTML-Elemente handelt, kann man nicht davon ausgehen, daß ein Browser schon weiß, wie er im Default-Fall mit einem solchen Element umgehen soll.
Auffällig dürften in diesem Listing gleich zu Anfang zwei Dinge sein; das Element Header mit dem seltsamen Link sowie darunter der Ausdruck <html:h4>. Zunächst zum Header: zusammen mit dem Footer schließt er die XML-Daten in ein HTML-Dokument ein (siehe Listing 2).
Nicht ganz verständlich ist die Klassifizierung des Links in ToolBar; zwar ist deutlich, daß es sich um einen einfachen, unidirektionalen Link handeln soll, aber das in XML vorgesehene Schlüsselwort simple fehlt hier. Auch die Rolle (Role), die der Link spielen soll, hat derzeit wohl eher den Charakter eines Platzhalters. Nur das Show="EMBED" (ins gegenwärtige Dokument einblenden) und der href-Verweis sehen aus wie erwartet.
<html:h4> in der folgenden Zeile verweist auf den HTML-Namensraum und veranlaßt Mozilla, aus diesem Namensraum das Element H4 zu verwenden. Für XML existiert ein Entwurf, der helfen soll, die Einbeziehung von Elementen aus anderen DTDs zu regeln, und die DTD für HTML ist bekanntlich diejenige, die alle Browser kennen; die einzige, um genau zu sein.
Mitten in Listing 1 tauchen XML-Elemente (= Nicht-HTML-Elemente) auf, für die das Style Sheet Formatierungen enthalten muß (siehe dazu Listing 3). Mozilla ist hinsichtlich der Kodierung von Dokument und Style Sheet momentan allerdings noch überempfindlich. Umlaute im XML-Quellcode stellt der Browser verquer dar (nicht die in den HTML-Teilen), und im Style Sheet darf nach dem Selektor (siehe den Kasten Was Cascading Style Sheets sind) auf keinen Fall ein Tabulator stehen: sonst wirkt es nicht ...
Im einzelnen legt Listing 3 fest, wie die Elemente year, event et cetera darzustellen sind. Sowohl für das Toplevel-Element (timeline) als auch für Jahr und Ereignis ist als Darstellung Block eingetragen; das heißt, ähnlich den HTML-Elementen H1 und P werden sie nicht zusammen mit anderen in einer "Zeile" (Inline) ausgegeben.
Wer schon einmal mit Jade oder auch nur msxsl (http://msdn.microsoft.com/xml/xsl/msxsl.htm) gearbeitet hat, wird die Möglichkeiten, den Quelltext auf dem Weg zu HTML zu modifizieren, schätzen. Leider ist es derzeit nicht möglich, DSSSL-Style-Sheets mit Mozilla zu verwenden, und die CSS erlauben keinerlei Programmierung, erst mit CSS2 das Voran- oder Hintanstellen eines Strings vor oder nach der Ausgabe eines Elements.
Insgesamt also ist das, was Mozilla mit XML kann, noch wenig. Aber es ist ein Anfang, auf dem die Entwickler sicherlich zügig weiterarbeiten werden.
Stefan Mintert
arbeitet am Fachbereich Informatik der Universität Dortmund und ist einer der Autoren des demnächst bei Addison-Wesley erscheinenden Buchs 'XML in der Praxis'.
Compilertips: Christian Kirsch
Dieser Text ist der Zeitschriften-Ausgabe 06/1998 von iX entnommen.
iOS, Android, Windows Phone 7 und HTML5 - das neue Sonderheft von heise Developer führt Einsteiger und Profis in die Programmierung mobiler Geräte ein.