Textänderungen anzeigen

Ich 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 so banale Dinge wie die Performance (die mit der aktuellen Version 3.x gefühlt doppelt so schnell ist) sondern um die Feinheiten, die letzten Details.

Ein automatisch erstellter Vergleich ist immer um ein Vielfaches wirtschaftlicher als jedes vorstellbare manuelle Verfahren. Mit der einmaligen Anker-Technik verfügt das Tool über eine Funktion, die es ermöglicht, dass Blöcke anhand eindeutiger Kennungen einander sauber zugeordnet werden, und nicht ein neu eingeschobener Abschnitt 1.3 verzweifelt mit dem alten 1.3 verglichen wird, der ja jetzt die 1.4 ist. Auf diese Weise können auch größere Umstellungen erkannt werden und die Änderungsanzeige hält sich nicht mit Irrelevantem auf.

Bleibt die Anzeige gelöschtem, geändertem und neuem Text. Hier ist der Automat im Nachteil, weil er nicht weiß, wie wir tatsächlich geändert haben, was die Absicht war. Er kann nur den alten und neuen Satz (eigentlich: Textknoten) betrachten und technisch analysieren. Zum Einsatz kommt hier zunächst ein bekannter Algorithmus: Longest common substring.

Beispiele

V1: Der Absatz enthält ganz und gar nichts.
V2: Der Absatz enthält gar nichts.

Diff: Der Absatz enthält ganz und gar nichts.

Der längste gemeinsame Text ist der Textanfang bis einschließlich »ga«. Ideal wäre natürlich dies gewesen: Der Absatz enthält ganz und gar nichts. Aber dies ist für den Computer wohl kaum zu erkennen.

V1: Datentyp des Feldes, sofern Ausprägungen vorgebbar.
V2: Datentyp des Feldes, genau dann wenn Ausprägungen vorgebbar.

Diff: Datentyp des Feldes, sofer
genau dann wenn Ausprägungen vorgebbar.

Natürlich erschwert es auch hier die Lesbarkeit, dass vom Ende sowohl »sofern« als auch »wenn« mit einem »n« enden. Ideal wäre hier ein die Ausdehnung auf ganze Wörter: Datentyp des Feldes, sofern
genau dann wenn Ausprägungen vorgebbar.

Aber die Ausdehnung auf ganze Wörter kann auch unerwünscht sein, wenn zum Beispiel nur Anfangs- oder Endbuchstaben ergänzt oder Tippfehler korrigiert wurden:

V1: Die Erklärung war nicht hinrecihend.
V2: Die Erklärungen waren nicht hinreichend.

Diff: Die Erklärungen waren nicht hinreci
ichend.

Hier wäre die Ganzwortmethode wohl eher hinderlich: Die Erklärung
Erklärungen war
waren nicht hinrecihend
hinreichend.

Fragen

In meinen Augen stellen sich zwei Fragen:

  • Sollten Optimierungen beim Textvergleich vom Diff-Tool oder von einer nachgelagerten Aufbereitung durchgeführt werden?
  • Wie soll diese Optimierung aussehen?
Dieser Beitrag wurde unter XML/XSL abgelegt und mit , verschlagwortet. Setze ein Lesezeichen auf den Permalink.