Textänderungen anzeigen in XML-Dokumenten

Diese Seite ist »work in progress« und ich sehe Kommentaren gerne entgegen!

Die Funktion »Änderungsverfolgung« kennen wir aus Texteditoren und FrameMaker (seit Version 8). Dabei werden in der Regel gelöschte Texte durchgestrichen und neue Texte unterstrichen dargestellt. Dies dient dazu, den beteiligten Redakteuren und Korrekturlesern zu zeigen, was wie geändert wurde – und eröffnet auch die Möglichkeit, die Änderungen nachträglich zurückzunehmen oder dauerhaft zu akzeptieren.

Eine ganz andere Situation liegt vor, wenn die Kunden eine neue Version eines Handbuchs mit Änderungsmarkierungen bekommen sollen. Hier gelten einige Besonderheiten:

  • Nicht jede »kleine« Änderung ist relevant für den Kunden
  • Wird es zwei Versionen geben, mit und ohne Änderungsmarkierung? Dürfen sich diese inhaltlich unterscheiden?
  • Soll oder darf so ein Dokument gelöschten Text enthalten? Sollten oder müssten Löschungen markiert sein?

Im Zusammenhang mit XML-strukturierten Dokumenten kommt eine weitere Aufgabenstellung hinzu: Durch die Anzeige von Löschungen können ungültige Strukturen entstehen!

Herkömmliche Lösungen

Sie könnten mit Hilfe von Adobe Acrobat einen Dokumentvergleich der endgültigen PDF-Dokumente erstellen. Allerdings gibt es nur sehr wenige Konfigurationsoptionen und die komplette Funktion ist weder im Handbuch noch in der Onlinehilfe dokumentiert.

Ihr DTP-Werkzeug (in meinem Fall also FrameMaker) könnte eine Funktion zum Dokumenten- oder Buch-Vergleich haben. Ja, die gibt es, deren Arbeitsweise hat allerdings zwei heftige Mängel: Zum einen arbeitet die Funktion unstrukturiert und zum anderen werden hinzugekommene Tabellenreihen und Grafiken nicht korrekt markiert. Hier wäre also FrameMaker-spezifische Programmierarbeit erforderlich.

XML Diff

Da es hier um XML-strukturierte Dokumente geht, liegt die Option nahe, doch mit einem XML-Werkzeug einen »Diff« zu machen. Die gängigen XML-Editoren verfügen tatsächlich über solche Methoden, deren Ziel ist allerdings die Anzeige der beiden Dokumente nebeneinander und nicht die Publikation eines Dokuments mit Änderungsmarkierungen.

Ich habe aber kürzlich auf der erneuten Suche nach »xml diff tool« die Website http://www.xmldifftool.com/ gefunden, auf der Martin Achtziger das Tool XMLDiff anbietet, welches eine Lösung sein könnte. Beim Vergleich zweier Dokumente erstellt das Programm ein Ergebnis-Dokument, das zusätzlich processing instructions enthält, die die Änderungen von alt nach neu beschreiben, zum Beispiel: oder .

Mit Hilfe einer geeigneten XSL-Transformation lassen sich diese PIs zum Beispiel in Attribute umwandeln, die wiederum zur optischen Markierung für eine Publikation mit Änderungsmarkierungen dienen.

Testfall

Um zu klären, welche Änderungen überhaupt angezeigt werden sollen und wie diese Anzeige ausfallen kann, baue ich im Folgenden mit zwei XHTML-Dokumenten einen Beispielfall auf:

  • Version1.html: alte Version
  • Version2.html: überarbeitete Version
  • Version2_xdiff.html: von XMLDiff erstelltes Dokument
  • XdiffResult.xsl: Umbau der PIs in Attribute
  • Version2_changes.html: überarbeitete Version mit Änderungsmarkierungen
  • styles.css: Formatierung der XHTML-Dateien

Version1

Titel

Text mit Hervorhebung.

Abschnitt A

Text ohne Hervorhebung.

Abschnitt B

Text im zweiten Abschnitt.

Abschnitt C

Text im dritten Abschnitt.

Version2 mit Hervorhebungen (neu, geändert, verschoben)

Titel

Text ohne Hervorhebung.

Abschnitt A

Text ohne Hervorhebung.

Ein neuer Absatz.

Abschnitt B

Text im zweiten Abschnitt.

Neuer Abschnitt B-1

Text im neuen Abschnitt.

Abschnitt Neu

Text im neuen Abschnitt.

Abschnitt C

Text im dritten Abschnitt.

Offene Fragen

  • Welche Änderungen sollen angezeigt werden?
  • Wie sollen Änderungen markiert werden?
  • Müssen Änderungen im Textinhalt eines Elements zeichengenau aufgeschlüsselt werden?
  • Umgang mit Tabellen
  • Umgang mit Grafiken

Januar 2009, Michael Müller-Hillebrand