Änderungen in XML-Dokumenten anzeigen und publizieren

(Vortrag auf der tekom Jahrestagung 2010, Do 4.11.2010, 12:15 Uhr)

Die meisten XML-Editoren verfügen zwar über eine Vergleichskomponente (»Diff«), die einen visuellen Überblick über Änderungen zwischen zwei Dokumentversionen bietet, dies aber in der Regel nur als visuelle Anzeige. Auch die sogenannte Änderungsverfolgung (»Track Changes«), die der Autor aktivieren muss, ist oft sowohl lästig als auch unvollständig. Der Beitrag zeigt wie dies auf der Basis eines XML-Dokumentvergleichs mit anschließender Publikation in FrameMaker gelöst wurde.

Szenario

Es war einmal eine Redaktion, die unbedingt Dokumente mit markierten Änderungen publizieren wollte. Aber natürlich nicht erst – wie früher – nach mehrtägiger, manueller Arbeit. Die Quelldokumente waren mittlerweile XML-strukturiert und es sollten nicht nur einfache Änderungsbalken sondern gelöschte und neue Texte entsprechend formatiert publiziert werden.

Die verständliche Forderung kam wegen der relativ häufigen Updates einer umfangreichen Dokumentation von den Anwendern. Zusätzlich war absehbar, dass für verschiedene Zielgruppen unter Umständen unterschiedliche Versionsstände miteinander verglichen werden sollten, weshalb ein einfaches »Change Tracking« ausschied.

Gängige Diff-Methoden und deren Mängel

Der Dokumentvergleich zweier PDF-Dokumente mit Acrobat ändert sich seit Jahren, ist kaum dokumentiert und weigert sich ab ca. 200 Seiten überhaupt mit dem Vergleich zu beginnen.

Der in FrameMaker eingebaute Dokumentvergleich arbeitet nur unstrukturiert und hat bekannte Schwächen mit Änderungen in Tabellen, die aber leider in dieser Dokumentation vielfach vorkommen.

Fortschrittliche XML-Editoren wie zum Beispiel OxygenXML bieten gleich mehrere Verfahren zum Vergleich von XML-Dokumenten an: XML genau, XML schnell, Syntax-bewusst, Zeilen, Wörter, Zeichen, Auto. Die Ergebnisse werden farbig am Bildschirm visualisiert und ermöglichen einem Entwickler den Abgleich verschiedender Versionsstände. An eine Publikation der Änderungen ist nicht gedacht.

Ein Problem praktisch aller Vergleichsmethoden entsteht zudem beim Einfügen oder Löschen von Abschnitten, wenn einfach von vorne nach hinten verglichen wird. Hier entstehen gerne »false positives«, wenn komplett neu eingefügte Abschnitte mühsam mit älteren verglichen werden.

Teamarbeit

Die Lösung bestand schließlich aus mehreren Bausteinen:

  • Die alte und neuere XML-Datei werden mit dem Programm XTC (XML Tree Compare) verglichen, welches neben der Visualisierung auch das Speichern des kombinierten Dokuments ermöglicht. Dieses wird anschließend
  • mit einer XSL-Transformation so umgebaut, dass es
  • von FrameMaker als XML-Dokument mit Änderungsmarkierungen verstanden wird.

Vergleich

Das verwendete Tool XTC (Testversion auf http://www.xmldifftool.com/) kann sehr viel mehr, als nur gelöschte und eingefügte Texte zu erkennen. Es können zum Beispiel auch Attributänderungen und Element-Umstellungen erkannt werden. Aber wie sollte so etwas in einem linearen Dokument dargestellt werden? Über die Konfiguration wurde nur die Anzeige hinzugefügter und gelöschter Elemente aktiviert, und natürlich der Textvergleich innerhalb von Elementen.

Ein sehr wichtiges Merkmal von XTC ist die Möglichkeit Anker zu definieren, dem Programm damit Hilfestellung zu geben, welche Teile zueinander gehören. Ein typisches Beispiel sind hier zum Beispiel die IDs von Abschnitten. So können bei systematischem Arbeiten »false positives« verhindert werden. Die Änderungen werden in Form von Processing Instructions im Dokument gespeichert.

Aufbereitung

FrameMaker verwendet für die Markierung von Einfügungen und Löschungen eine Mischung aus Processing Instructions und strukturierten Kommentaren. Die XSL-Transformation baut daher die XTC-Auszeichnungen so um, dass FrameMaker diese versteht. Bei dieser Gelegenheit werden auch Schwächen von FrameMaker umschifft.

Nachbereitung

Die Nachbereitung geriet dann überraschend komfortabel, denn mit der Textänderungspalette kann der Redakteur wenn gewünscht einfach von Änderung zu Änderung springen und zum Beispiel banale Änderung akzeptieren, so dass die Leser nicht unnötig abgelenkt werden.


Dokumentausschnitt mit der Palette zur Änderungsverfolgung

Schließlich wurde alles noch mit einem User Interface versehen, so dass die Redakteure des ungeduldigen Kunden die FrameMaker-Umgebung nicht einmal verlassen müssen.

Weitere Bilder finden Sie im Beitrag Dokumentvergleich – Änderungsanzeige.

Ein Trackback

  1. […] habe das Tool XTC = XML Tree Compare von Martin Achtziger http://www.xmldifftool.com/ schon auf der tekom-Tagung vorgestellt und in meinem Blog erwähnt. Im praktischen Einsatz in Projekten geht es mittlerweile nicht um […]