[ Informatik-Seminar 2002 ] ...
[ Thema XML-Validierung mit Haskell ] ...
[ Valdierung mit HaXml ] ...
Übersicht:
XML-Dokumente können auf zwei Arten verarbeitet werden:
- Baum-Struktur
Das Dokument wird in eine Baumstruktur geladen, welche im Speicher gehalten wird (z.B. DOM/JDOM). Dies hat den Vorteil, dass das gesamte Dokument mehrfach durchlaufen werden kann, ohne das Dokument mehrfach parsen zu müssen. Der Nachteil dieses Verfahrens besteht jedoch darin, dass der Arbeitsspeicherverbrauch von der Dokumentgröße abhängt und ggf. sehr große Dokumente nicht verarbeitet werden können.
- Event-gesteuert
Das Dokument wird strikt sequentiell verarbeitet. Jedes Element wird als Event-trigger betrachtet, welches u.U. eine Aktion auslöst, die die verarbeitende Anwendung dann umsetzt. SAX-Parser arbeiten nach diesem Prinzip. Der Vorteil gegenüber einer DOM-Lösung ist, dass mit SAX-Parsern Dokumente geparst werden können, die viel größer als der zur Verfügung stehende Hauptspeicher des Rechners sind. Darüber hinaus liefert SAX viel schnellere Ergebnisse, wo nur einzelne Elemente eines Dokuments auszulesen sind. Es muss dann nicht jedes Mal das komplette Dokument nachmodelliert werden.
Im folgenden wird die XML-Validierung beim Event-gesteuerten Ansatz beschrieben. Das Verfahren wird jedoch auch verwendet, wenn der Parser in einem nachgelagerten Schritt anhand der Events eine Baumstruktur des Dokuments aufbaut.
Start-Tag wird einlesen:
Der Parser sucht nach einer Produktionsregel, in der durch die DTD definierten Grammatik. Kann keine Regel gefunden werden, d.h. das Element ist nicht in der DTD deklariert, wird ein Fehler gemeldet. Es ist garantiert, dass nur eine einzige Produktionsregel für jedes Element in der DTD existiert.
Ende-Tag wird einlesen:
Die Sequenz der Kinder des Elements wird mit der Produktionsregel vergleichen. Das Verfahren, wie dieser Vergleich durchgeführt wird, ist im folgenden Abschnitt beschrieben. Passt die Sequenz der Elemente nicht auf die Produktionsregel, meldet der Parser ein ungültiges Dokument und bricht die Verarbeitung ab.
XML-Parser wie Xerces überprüfen XML-Dokumente nach folgendem Verfahren auf Gültigkeit. Das Inhaltsmodell jedes Elements definiert einen regulären Ausdruck über das Alphabet der Elemente. Dieser reguläre Ausdruck wird mit Verfahren des Compilerbaus in Endliche Automaten (EA) transformiert. Pro Element wird somit ein Endlicher Automat erzeugt. Während des Parsens eines XML-Dokuments werden die Zustände der einzelnen Automaten für jedes geöffnete Tag in einem Stack verwaltet.
[ Informatik-Seminar 2002 ] ...
[ Thema XML-Validierung mit Haskell ] ...
[ Klassische XML Validierung ] ...
[ Valdierung mit HaXml ] ...