Ein XML-Prozessor ist eine Software zum Einlesen und Verarbeiten von XML-Dokumenten. Häufig wird auch der Begriff XML-Parser synonym verwendet, obwohl dieser eher ein Modul im Software-Baustein „XML-Prozessor“ ist, welches das Einlesen durchführt.
Inhaltsverzeichnis |
Ein XML-Prozessor besitzt im Wesentlichen drei Komponenten:
Dabei ist eigentlich nur Parser und Ausgabeprozessor XML-spezifisch. Die Verarbeitungskomponente kann eigentlich beliebige Modelle verarbeiten, weist aber durchaus auch XML-spezifische Merkmale auf z. B.
XML-Parser in den Prozessoren können anhand zweier Kriterien unterschieden werden:
Im Grunde können auch Parser eingesetzt werden, die andere Formate einlesen oder gar Datenbanken abfragen. Das ist hilfreich für Migrationen von Altdaten nach XML.
Nichtvalidierende Parser kontrollieren lediglich, ob das Dokument wohlgeformt ist, sprich ob es den Spezifikationen des W3C entspricht. Validierende Prozessoren hingegen prüfen zusätzlich die Konformität gegenüber einer DTD oder einer Schemasprache, wie z.B. XML-Schema oder RelaxNG.
Die Verarbeitungskomponente implementiert in der Regel eine eigene, auf das Verarbeitungsparadigma optimierte Programmiersprache (z. B. DSSSL, xslt). Dabei ist zu unterscheiden:
Besonders vorteilhaft in dem Ansatz ist es allerdings, die Verarbeitung (Transformation) weitgehend unabhängig von der konkreten Syntax des Ausgabeformates zu formulieren. Die Spezifika des gewünschten Ausgabeformates (z. B. Zeilenaufteilung, Einrückungen usw.) können im Ausgabeprozessor behandelt werden. Damit wird es zuweilen möglich, mit einer Transformation mehrere Ausgabeformate zu bedienen.
Dem Wesen nach handelt es sich bei XML-Prozessoren also um ein ähnliches (wenn auch schon vor dem MDA-Hype definiertes) Vorgehen wie bei der MDD, bei der ebenfalls eine formal beschriebene Modelltransformation stattfindet und das Einlesen bzw. Serialiseren des Modells in eigenen Prozessoren stattfindet. Daher ist durchaus eine Sprachverwandtschaft zwischen XML-Prozessoren und Modelltransformatoren zu erkennen. Die Rolle der Metamodelle wird dabei von der DTD bzw. dem XML-Schema wahrgenommen. Die Modellpersistierung erfolgt in XML.
Die Ausgabekomponente serialisert den von der Verarbeitungskomponente bereitgestellten Dokumentenbaum nach XML oder in ein anderes gewünschtes Textformat (z. B. TeX). XML-Spezifika wie Handhabung von Sonderzeichen, Leerzeichenbehandlung usw. kann der Ausgabeprozessor übernehmen. Bei leistungsfähigen XML-Prozessoren ist diese Ausgabekomponente flexibel konfigurierbar bzw. programmierbar.