Dieses Kapitel versucht einen kurzen Überblick über einige Grundlagen zu geben, die zum Verständnis der folgenden Kapitel notwendig sind.
XML-Einführung
Beispiele
Gültigkeit
XML & Java
Marktübersicht
XML steht für Extensible Markup Language. Es ist im Grunde genommen eine vom W3C definierte und vereinfachte Teilmenge von SGML. Wie SGML wird auch XML als Metasprache verwendet, um eigene Sprachen zu definieren. Konnte dieses Vorhaben mit SGML nur von Experten bewältigt werden, fällt dies mit XML deutlich leichter.
Für den Programmierer ist XML eine Möglichkeit, um strukturierte Informationen in einer Textdatei zu speichern. Zu diesem Zweck können wir uns eine für eine bestimmte Aufgabe maßgeschneiderte Menge von Tags schaffen. Für diese Tags können wir dann beispielsweise festlegen, welche Attribute zulässig sind, oder welche Tags verschachtelt innerhalb des ursprünglichen Tags auftreten dürfen oder müssen.
Obwohl man mit XML prinzipiell die Möglichkeit hat beliebige eigene Tags und Attribute zu schaffen, müssen Dokumente trotzdem einige allgemeine Prinzipien erfüllen. Ein Dokument heißt demnach wohlgeformt (well formed), wenn zumindest alle Tags geschlossen werden, die auch geöffnet wurden, wenn die Verschachtelung in korrekter Reihenfolge erfolgt und einige weitere Regeln eingehalten werden. Alle XML-Dokumente, die auf irgendeine Weise von Computerprogrammen bearbeitet werden sollen, müssen zumindest wohlgeformt sein.
Mit Hilfe einer DTD (Document Type Definition) können weitere Bedingungen an die Struktur einer Klasse von Dokumenten gestellt werden. Diese Dokumenttypdefinition ist Teil eines XML-Dokuments und beschreibt dessen Aufbau. Sie kann entweder innerhalb des Dokuments oder in einer separaten Datei definiert werden. Wenn ein konkretes Dokument eine DTD angibt, und diese auch einhält, heißt es gültig (valid).
XML bietet für die Datenhaltung, was Java für die Programme leistet - Portabilität. Es ist
wenig sinnvoll sich Gedanken über die Plattformunabhängigkeit von Programmen zu machen, wenn
es keine gute Möglichkeit gibt, die vom Programm erzeugten Daten systemunabhängig zu speichern. Sun hat es mit einem kurzen Slogan prägnant formuliert:
Java + XML = Portable Code + Portable Data.
Da außerdem die zur Verfügung stehenden Hilfsmittel für Java am weitesten entwickelt sind, berücksichtigt die folgende Abhandlung nur Werkzeuge für die XML Bearbeitung in Java.
Da XML-Dokumente einfache Textdateien sind, kann man als Java-Programmierer Zugriff auf die in ihm enthaltenenen Informationen erhalten, indem man sich einen eigenen Parser schreibt. Dies ist jedoch ein zeitaufwendiges und nicht unbedingt triviales Unterfangen.
Glücklicherweise gibt es jedoch einige Lösungen in diesem Bereich, die meist frei verfügbar sind. Die folgende Grafik zeigt die Beziehungen, die unter diesen Lösungen bestehen und nennt eine Quelle, unter der mehr Informationen zu finden sind.
Eine zentrale Stellung in dieser Abbildung nimmt SAX ein, denn es stellt die zur Zeit wohl einzige gute Möglichkeit zum Lesen von XML dar. SAX funktioniert nach dem Erbauerentwurfsmuster, um ein sogenanntes ereignisgesteuertes Parsen zu ermöglichen. Hierzu liest der SAX-Parser sequentiell durch die Zeichen der XML-Quellen, um nach der Identifizierung eines Teilstücks eine Callback-Routine aufzurufen. Wenn uns dieser sequentielle, nur-lesende Zugriff auf die Daten ausreicht, dann sollte ein solches Werkzeug direkt verwendet werden. Reicht diese Form des Zugriffs jedoch nicht aus, dann muss eine Indirektstufe eingeführt werden. Diese Indirektstufen, nämlich DOM und JDOM sind das Thema der folgenden Kapitel.