Extensible Markup Language/Open-Source-Projekte liefern Basistechnologie

Freie Werkzeuge fördern den XML-Erfolg

24.01.2003
Open-Source-Projekte hatten von Anfang an großen Anteil am Erfolg von XML. Mit ihrer Konzentration auf Infrastruktursoftware produzierten sie unter anderem Parser, XSLT-Prozessoren oder Publishing-Frameworks. Daneben steuerten sie auch eigene Standards bei. Von Fotis Jannidis*

Die enge Verbindung zu Open Source erbte XML bereits vom Vorfahren Standard Generalized Markup Language (SGML). Dieser konnte entweder mit sehr hochpreisiger oder aber eben mit freier Software verarbeitet werden. Eine besondere Schlüsselstellung nahm dabei James Clark ein, der später zu einer der bedeutendsten Einzelpersonen für die Ent-stehung von XML wurde. Er war bereits der SGML-Gemeinde ein Begriff, weil er den wichtigsten freien Parser geschrieben und außerdem eine ebenfalls freie Document-Style-Semantics-and-Specification-Language-(DSSSL-)Engine programmiert hatte. DSSSL-O, eine abgespeckte Version für die Internet-Verwendung, stand dann Pate für XSL Transformations (XSLT). Daher verwundert es nicht, dass James Clark auch der Editor der W3C-Empfehlung für XSLT ist, eines der kürzesten und kompaktesten Texte des W3C insgesamt. Von Clark stammt auch der erste XSLT-Prozessor names "XT". Dort nutzt er seinen XML-Parser "XP", der wie XT in Java programmiert ist und ebenfalls nahezu gleichzeitig mit dem Standard fertig gestellt wurde. "Expat", Clarks nicht validierender XML-Parser in C, ist inzwischen Grundlage der XML-Unterstützung in Scriptsprachen wie Perl, Python, Tcl oder Ruby und verrichtet auch in Projekten wie Mozilla seinen Dienst.

Clark widmet sich seit geraumer Zeit der Entwicklung einer einfachen und zugleich ausdrucksstarken Schemasprache. Eine erste Stufe bildete Tree Regular Expressions for XML ("Trex"), dann vereinigte Clark sein Projekt mit der Regular Language Description for XML ("Relax") von Makoto Murata. Das neu entstandene Relax NG hat inzwischen seine organisatorische Heimat beim Standardisierungsgremium Oasis gefunden. Mittlerweile hat Clark nicht nur ein Validierungsprogramm für Relax NG namens "Jing" veröffentlicht, sondern auch "Trang", mit dem man Relax NG in andere Schema-Notationen übersetzen kann.

Angesichts der beeindruckenden Leistungen von James Clark vergisst man leicht, dass die eigentliche Stärke von Open-Source-Projekten darin liegt, die Arbeitskraft von zahlreichen Entwicklern und technischen Autoren effektiv zu bündeln. Sie konzentrieren sich zum überwiegenden Teil auf Software für Basisdienste, im Fall von XML sind dies etwa Parser und XSLT-Prozessoren.

Damit begann auch die heute bei Open Source führende XML-Unternehmung: das "Apache XML Project". Unter dem Dach der Apache Foundation, die besonders bekannt für ihren marktführenden Web-Server ist, versammeln sich zwölf relativ eigenständige Projekte. Dazu zählen etwa "Xerces" (ein XML-Parser in Java und C++), "Xalan" (ein XSLT-Prozessor in Java und C++), "Cocoon" (ein XML-basierendes Web-Publishing-Framework), "FOP" (ein Prozessor, der XSL-FO konforme Seiten in PDF verwandelt), "Axkit" (XML Application Server für Apaches Web-Server), und "Xindice" (eine XML-Datenbank).

Apache bietet Basistechnologie

Die meisten Apache-Projekte liefern Basis-Technologien für XML-bezogene Standards. So bietet Parser Xerces die Möglichkeit, XML-Dateien zu validieren, also ihre Konformität mit der XML-Spezifikation und einer vorgegebenen Dokumentstruktur (Document Type Definition oder XML Schema) zu überprüfen. Mit Xalan können Dokumente mit Scripts transformiert werden, die dem W3C-Standard XSLT entsprechen. FOP konvertiert Daten, die konform zur Layoutdefinition XSL-FO ausgezeichnet sind, in das Portable Document Format (PDF) oder das Rich Text Format (RTF). "Batik" enthält Module, um Grafiken zu erzeugen, zu manipulieren oder zu durchsuchen, die in der XML-konformen Auszeichnungssprache Scaleable Vector Graphics (SVG) beschrieben sind.

Die Entwickler der Projekte haben den Ehrgeiz, mit ihrer Software nicht nur bereits existierende Standards vollständig zu unterstützen, sondern auch sich neu formierende Standards testweise vorab zu implementieren und deren Brauchbarkeit oder auch ihre Probleme sichtbar zu machen. So unterstützt die aktuelle Version von Xerces auch schon teilweise die Arbeitsvorlage des W3C zum Document Object Model (DOM) in der Version 3.

Die Projekte sind technisch untereinander verbunden, so bauen Cocoon und FOP auf Xerces sowie Xalan auf. Das erklärte Ziel der XML-Projekte bei Apache ist es, Software zu produzieren, die den Vergleich mit kommerziellen Erzeugnissen nicht scheuen muss, zugleich aber die jeweiligen XML-Standards möglichst vollständig implementiert. Xerces und Xalan haben dieses Ziel sicher erreicht. Andere Teilprojekte wie FOP werden zwar schon in vielen Unternehmen produktiv verwendet, aber sie setzen bisher nicht den gesamten Standard um und haben offensichtlich noch eine gewisse Entwicklung vor sich. Viele der genannten XML-Vorhaben sind selbständig entstanden, ihre ursprünglichen Entwickler haben sie Apache zu einem späteren Zeitpunkt geschenkt. Dort steht diesen Arbeiten nun meist eine größere Entwicklergemeinde zur Verfügung, manchmal noch unter der Beteiligung der anfänglichen Autoren.

Wenn auch viele der großen XML-Open-Source-Projekte inzwischen bei Apache eine Heimat gefunden haben, so verdienen drei davon unabhängige Unternehmungen noch eine ausführlichere Erwähnung. Michael Kay, Autor des wohl besten Buchs zu XSLT, hat mit "Saxon" eine sehr leistungsfähige XSLT-Engine in Java vorgelegt. Die neueste Version unterstützt bereits die Arbeitsvorlagen zu XSLT 2.0 and Xpath 2.0.

Das zweite Projekt kommt aus Deutschland, und zeigt einmal mehr, dass es in vielen der internationalen Open-Source-Projekte eine starke deutsche Beteiligung gibt. Die Datenbank "Exist" wurde von Wolfgang Meyer an der TU Darmstadt entwickelt. Es handelt sich um eine native XML-Datenbank, die Abfragen in einem um Freitextsuche erweiterten Xpath erlaubt. Anders als Xindice von Apache, das für die Verarbeitung von zahlreichen kleinen Dateien optimiert wurde, lassen sich mit Exist auch umfangreichere Dateien noch vernünftig abfragen. Aufgrund seiner geschickten Architektur kann Exist als Einzelanwendung auf dem Server laufen, innerhalb einer Servlet-Engine oder auch direkt in eine Anwendung eingebettet werden. Ausgeliefert wird es zusammen mit dem Cocoon von Apache und kann somit über eine einfache Browser-Schnittstelle konfiguriert werden.

Mozilla als XML-Browser

Zuletzt sei noch eines der bekanntesten Open-Source-Projekte genannt, das Kritikern aber immerhin Anlass war, darüber nachzudenken, warum nicht alle Programme gleich gut für freie Teams geeignet sind: "Mozilla". Die Layout-Engine des Browsers mit dem Namen "Gecko" kann nicht nur HTML-Seiten darstellen, sondern auch mit Cascading Stylesheets (CSS) formatierte XML-Dateien. Mozilla verwendet außerdem eine XML-Anwendung namens XUL, um Browser-interne Anwendungen zu definieren. Der sehr schnelle Stand-alone-Browser "Phoenix" ist eine solche XUL-Anwendung.

Die Open-Source-Gemeinde hat nicht nur Programme geschaffen, sondern auch zur Entwicklung von Standards beigetragen, die teilweise heute von Standardisierungsgremien aufgegriffen werden - Relax NG wurde beispielsweise schon genannt. Bekannter aber noch ist die Entstehung des Simple API for XML (SAX). Die Definition dieser Programmier-Schnittstelle für XML-Parser entstand 1997 und 1998 als gemeinsame Arbeit innerhalb der Diskussionsgruppe XML-DEV. Sie galt als Reaktion auf die nicht zufrieden stellenden, proprietären APIs für XML, die damals vorhanden waren. Heute wird SAX von praktisch allen XML-Prozessoren unterstützt, da es tatsächlich beeindruckend einfach und leistungsfähig zugleich ist.

Alternative Standards

DOM, das vom W3C vorgegebene API für XML, ist zwar leistungsfähig, aber nicht einfach zu benutzen. Deshalb gibt es gleich mehrere Versuche, es durch schlichtere Alternativen abzulösen, zum Beispiel "JDOM". Allerdings scheint dessen Weiterentwicklung ins Stocken geraten zu sein. Den neuesten Ansatz repräsentiert "XOM" von Elliotte Rusty Harold, der durch seine Bücher zu Java und XML einen guten Ruf genießt.

Auch im Bereich der Anwendungen, die XML lediglich benutzen, gibt es Open-Source-Projekte, die einen Standard vorschlagen und gleichzeitig implementieren. Dazu zählt etwa "Jabber" (http://www.jabber.org), das ein offenes XML-Protokoll für Instant-Messaging definiert. Es hebt sich damit von proprietären Systemem wie "AIM" von AOL oder Microsofts "MSN Messenger" ab. Üblicherweise wird die Publikation solcher Vorschläge gleich von entsprechender Software begleitet, so auch im Fall von Jabber.

XML hat die Open-Source-Gemeinschaft um ein großes Arbeitsfeld bereichert. Auf der letzten von O''Reilly ausgerichteten Open-Source-Konferenz haben sich von 187 Sprechern immerhin 26 auf eine XML-Technologie konzentriert. Aber tatsächlich dient XML zahlreichen Projekten ganz unauffällig als Format für interne Informationen, so werden etwa die Prozessanweisungen von "Ant", dem plattformunabhängigen Ersatz für "make", in XML geschrieben, ebenso die Anweisungen von "Junit", einem Test-Framework, wie es Erich Gamma and Kent Beck vorgeschlagen haben. Gerade weil die Basistechnologien für die Verarbeitung von XML-Daten als Open Source verfügbar sind, wählen zahlreiche andere Projekte ebenfalls diesen Standard. Man kann sicher sein, dass es in Zukunft noch mehr werden und aus dieser Gemeinschaft viele Denkanstöße für die überladenen Gremienstandards zu erwarten sind. (ws)

*Fotis Jannidis ist freier Autor in München.

Angeklickt

Die Entstehung von XML fiel in die Zeit, als die Open-Source-Bewegung gerade große Popularität erlangte. Typischerweise konzentrierten sich freie Teams auch bei der neuen Metasprache vornehmlich auf Infrastruktur-Programme. Daher ist heute das gesamte Spektrum an Basiswerkzeugen, die zur Verarbeitung von XML benötigt werden, als quelloffene Software verfügbar. Mit ihren Projekten trug die Open-Source-Gemeinde dazu bei, dass alle wesentlichen XML-Spezifikationen konform zu den W3C-Vorgaben umgesetzt wurden und beugte so möglichen proprietären Varianten einzelner Hersteller vor.