Einleitung
... [ Seminar XML ] ... [ XML-Parser ] ... [ SAX ] ...
Einleitung
Einleitung
XML-Parser gibt es inzwischen sehr, sehr viele auf dem Markt. Man findet sie für (fast) alle bekannten und auch nicht so sehr bekannten Programmier- und Skriptsprachen. Dies liegt sicher an der hohen Bedeutung, die einem Parser beim Arbeiten mit XML zukommt. Natürlich unterscheiden sich diese Parser nicht nur in der Programmiersprache, für die sie entwickelt wurden, sondern auch in der Unterstützung von Standards, in der Geschwindigkeit und vielem mehr.
Inhalt dieses Vortrags soll es sein, zunächst einmal die grundsätzliche Arbeitsweise von XML-Parsern zu erläutern. Dabei werden die für die Parser wichtigen API's SAX und DOM erklärt.
Danach wird es eine Übersicht über die verfügbaren Parser für Java geben mit Angaben zur Verfügbarkeit, zur Unterstützung von Standards und zu Besonderheiten der Parser. Ich beschränke mich hier auf die Parser für Java, weil es für diese Sprache die meisten Parser gibt, die außerdem zumeist frei verfügbar und qualitativ hochwertig sind. Dies liegt sicher auch daran, daß Java und XML gut zusammenpassen, da beide auf das Web ausgerichtet sind und Java's Unicode Unterstützung den character encodings von XML sehr nahe kommt.
Abschließend folgt noch ein kurzer Ausblick auf Parsergeneratoren.
Einbettung in den Verarbeitungsprozeß
Ein XML-Parser spielt eine Rolle bei der Verarbeitung eines XML-Dokuments. Nachfolgend ein Beispiel, wie ein XML-Dokument verarbeitet werden könnte.
Verarbeitung eines XML-Dokuments
Die Grundfunktionalität, die in jedem Parser-Paket vorhanden ist, ist die in der Grafik mit XML-Parser bezeichnete Funktion, mit der ein Dokument selber und eventuell noch eine zugehörige DTD verarbeitet wird. Die meisten Parser-Pakete bieten zusätzlich noch die Möglichkeit, das XML-Dokument in einer Baumstruktur zu speichern( in der Grafik der Parse-Tree ). Diese Baumstruktur ist dann gemäß dem DOM-Modell des W3C implementiert. Sehr wenige Parser integrieren auch noch die letzte Funktion in dem Processing Agent, die Rendering Engine. Hier handelt es sich dann um ein XSLT-Modul, das aus dem XML-Dokument mittels eines Stylesheets HTML oder ein anderes Textformat(je nach Stylesheet) erzeugen kann.
Bei vielen XML-Anwendungen ist es aber gar nicht erwünscht, das XML-Dokument selber anzuzeigen, sondern es geht nur darum, die Daten aus dem Dokument in einer Datenbank zu speichern. Im einfachsten Fall ist dann nur die Funktionalität des XML-Parsers aus der Grafik nötig, eventuell noch eine Baumstruktur, um schnell auf einzelne Elemente zugreifen zu können.
Parserarten
Man kann grundsätzlich zwischen zwei Arten von Parsern unterscheiden: validierende Parser und nichtvalidierende Parser:
- Nichtvalidierende Parser: überprüfen nur, ob das Dokument wohlgeformt ist
- Validierende Parser: überprüfen zusätzlich, ob das Dokument sich an die vorgegebene DTD hält
Damit ein Dokument wohlgeformt ist, muß es mehrere Voraussetzungen erfüllen:
- Alle Attributwerte müssen in Anführungsstrichen stehen
- Jedes Tag muss ein Ende-Tag besitzen ( <br></br> oder nur <br/> )
- Elemente müssen sauber ineinander eingebettet sein ( nicht <sprache> <deutsch> </sprache> </deutsch> )
- Der Name eines Attributs kommt innerhalb eines Elements nicht mehr als einmal vor
- Ein Attributwert darf keinen Verweis auf ein externes Entity enthalten
- Ein Attributwert darf kein "<" enthalten
... [ Seminar XML ] ... [ XML-Parser ] ... [ SAX ] ...