Diff-Tools für Dokumentenbäume

Unterschiede zwischen XML-Daten finden

06.04.2001
MÜNCHEN (ws) - Herkömmliche Werkzeuge zum Vergleich von Dateien sind bei XML-Dokumenten nur von begrenztem Nutzen. "Delta XML", "XML Linear Time Treediff" und IBMs "XML Diff and Merge Tool" sollen Abhilfe schaffen.

Werkzeuge zum Dateivergleich gehören schon lange zum Lieferumfang von Betriebssystemen. Unter Unix zählt "Diff" zur Standardausstattung, die Microsoft-Systeme kommen mit "File Compare" (fc.exe) oder comp.exe. Hauptsächlicher Zweck dieser Programme ist es, Änderungen in Dateien zu verfolgen und anhand der Unterschiede verschiedene Versionen von Dokumenten aufzuspüren. Unabhängig vom Funktionsumfang der genannten Tools stimmen sie darin überein, dass sie Dokumente zeilenweise vergleichen. Zwar ist es möglich, beispielsweise Unterschiede bei der Zahl von Leerzeichen zu ignorieren, prinzipiell aber gelten Abweichungen bei nur einem Zeichen als relevanter Unterschied.

Diese Art des Vergleichs hat bei XML-Daten nur beschränkten Nutzen, weil diese häufig auch dann als identisch betrachtet werden können, wenn sie bei einem zeilenweisen Vergleich voneinander abweichen. Viele in diesem Zusammenhang festgestellte Differenzen gelten nämlich aus der Sicht von XML als relevant. Beispielsweise spielen Leerzeichen, Zeilenumbrüche oder Tabulatoren ("Whitespaces") zwischen Elementen keine Rolle, genauso wenig wird der Reihenfolge von Attributen Bedeutung beigemessen. Die Definition dessen, was bei XML-Dokumenten als relevant gilt, versucht das W3-Consortium im Rahmen der Spezifikation "XML Information Set" (http://www.w3.org/TR/2001/WD-xml-infoset-20010202) festzulegen.

Ein Tool, das diesen spezifischen XML-Anforderungen genügt, ist Delta XML. Es kann beliebige XML-Daten vergleichen, auch wenn keine Document Type Definition (DTD) vorliegt, und ignoriert dabei die Reihenfolge von Attributen, die verschiedenen Schreibweisen für leere Elemente und Namespace-Präfixe. Eine zusätzliche Version des Werkzeugs namens "Delta XML DTD" kann Unterschiede zwischen Dokumenten noch genauer eruieren, indem es die zugehörige DTD berücksichtigt. Wenn dort keine zwingende Reihenfolge für bestimmte Elemente festgelegt wurde, kann es in den Dokumentinstanzen entsprechende Unterschiede ignorieren.

Delta XML stellt gefundene Differenzen zwischen Dateien wiederum im XML-Format dar. Mit Hilfe eines optional nachgeschalteten XSLT-Prozessors können diese Informationen nach HTML konvertiert und so im Web-Browser begutachtet werden. Delta XML ist eine Java-Anwendung und lässt sich von Entwicklern in andere Programme einbetten. Eine Testversion des Tools kann von http://www.deltaxml.com heruntergeladen werden.

Ganz an Entwickler richtet sich Christian Nentwich mit seinem XML Linear Time Treediff. Es handelt sich dabei um eine Sammlung von Java-Klassen, die sich in andere Anwendungen einbinden lassen. Das Programm vergleicht Dokumente als XML-Bäume und setzt zu deren Aufbau den Open-Source-Parser "Xerces 1.2" oder höher voraus. Das kostenlose Diff-Tool wird inklusive des Quellcodes ausgeliefert (http://www.cs.ucl.ac.uk/staff/c.nentwich/treediff) und ist nach Angaben des Autors besonders für leistungsschwache Hardware wie mobile Geräte ausgelegt.

Schon länger verfügbar ist IBMs XML Diff and Merge Tool, das auf der Site für experimentelle Software "Alphaworks" (http://www.alphaworks.ibm.com/tech/xmldiffmerge) angeboten wird. Das Werkzeug führt die Baumansichten der verglichenen Dateien in einer grafischen Darstellung zusammen und hebt dabei die Unterschiede hervor.

Speziell als Add-on für das hauseigene Redaktionssystem "Schema Text" entwickelte die Nürnberger Schema GmbH ihr "XML Delta Modul". Edit Scripts beschreiben dort den Unterschied zwischen zwei XML-Dateien (siehe CW 12/01, Seite 42).