Die Entstehung von SAX

(Auszug aus "Python & XML" von Christopher A. Jones & Fred L. Drake, Jr.)

Vor SAX hatte fast jeder XML-Parser seine eigene Schnittstelle, so daß Anwendungen für spezielle Parser entwickelt wurden. Die Schnittstellen waren einfach und im allgemeinen sehr ähnlich in ihrer Struktur, mit nur wenigen Unterschieden im Detail. Als neue Parser verfügbar wurden, mußten die Anwendungen stark überarbeitet werden, damit sie mit der neuen Schnittstelle funktionieren konnten, um von dem neuen Parser zu profitieren, obwohl die Grundstruktur im Prinzip unverändert blieb.

Wie es so oft der Fall ist, lag die Lösung darin, eine neue Ebene einzuführen. Eine Gruppe von XML-Entwicklern, die Java benutzten und von David Megginson auf der XML-DEV-Mailingliste angeführt wurden, definierte eine Menge von Java-Schnittstellen, die es einer Anwendung ermöglichten, mit beliebigen Parsern zu arbeiten. Die einzige Anforderung war, daß es für jeden Parser einen Treiber für die neue API geben mußte. Der Treiber war eine Klasse, die die Parser-spezifische Schnittstelle benutzte, um Aufrufe zurück in die Anwendung mit der neuen, allgemeinen Schnittstelle zu erledigen. Die Anwendung erzeugte Handler-Objekte, die Methoden implementierten, die der Treiber für Aufrufe zurück in die Anwendung benutzte. Als Megginson die Spezifikation veröffentlichte, war eine Anzahl von Treibern für viele der populären Java XML-Parser schon enthalten. Die erste Spezifikation unterstützte die XML 1.0-Empfehlung, aber keine der komplexeren Ebenen, die darauf aufgebaut worden sind; die Initiativen zu ihrer Entwicklung steckten damals noch in den Kinderschuhen. Die Entwicklergruppe nannte die neue API »Simple API for XML« oder SAX, weil sie tatsächlich einfacher als die meisten Parser-spezifischen Schnittstellen war, von denen sie sich abheben sollte.

Die neue API wurde weithin für Anwendungsentwickler als wichtiger Schritt nach vorn begrüßt – sie war einfach zu benutzen, erlaubte bei einer Anwendung beliebige Parser und war sorgfältig entworfen, bevor eine andere gemeinsame API verfügbar war. Java-Programmierer waren besonders glücklich, da sich das Streßniveau bei ihrer Arbeit beträchtlich verringerte. Entwickler, die andere Sprachen benutzten, übernahmen die Spezifikation derart, daß SAX seine Identität als API bewahren konnte, selbst als es mit den diesen Sprachen eigenen Konventionen versehen wurde. Python-Programmierer in der XML-SIG, die von Lars Marius Garshol geführt wird, adaptierten die API und implementierten Treiber für mehrere Parser. Diese Implementierung wurde schließlich in das PyXML-Paket aufgenommen.

Dann veröffentlichte das W3C die Empfehlung zu Namensräumen. Diese änderte das ganze Konzept dessen, was einen Namen ausmacht. Obwohl es viele Debatten über den Wert dieser neuen Empfehlung gab, erkannten die meisten Leute, daß sie echte Probleme löste und daß sie nicht so schnell wieder verschwinden würde. Keiner wollte sich wieder über inkompatible APIs den Kopf zerbrechen, also taten sich die SAX-Entwickler schnell zusammen und arbeiteten an einer Version von SAX, die Namensräume unterstützte. Die überarbeitete API ist auch als SAX2 bekannt. Interessanterweise waren einige der ersten Implementierungen von Namensräumen Filter, die als SAX-Handler geschrieben waren. Die SAX-Ereignisse wurden für die Ansteuerung der SAX2-Handler benutzt, mit ein wenig Verarbeitung mittendrin, um die Namensraum-Unterstützung zu ergänzen.

Python-Entwickler haben die SAX2-Schnittstelle schnell übernommen, wobei gleich einige Unstimmigkeiten der früheren Abbildung von SAX aus der Java-basierten Spezifikation ausgeräumt wurden. Die SAX2-API wurde schnell Teil von PyXML und wurde auch in die Python-Standardbibliothek übernommen. Wenn Python-Programmierer von der SAX-API sprechen, meinen sie im allgemeinen diese zweite Version.

  

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema Python & XML bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © 2002 O'Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "Python & XML" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

O’Reilly Verlag GmbH & Co. KG, Balthasarstraße 81, 50670 Köln, kommentar(at)oreilly.de