Automatisierte Produktion von Loseblattwerken

Ein Edit-Script entsteht

ST4 XmlDelta berechnet jeweils das Delta zwischen V1 und V1L (∆V1-V1L) sowie zwischen V1 und V2 (∆V1-V2). Bei der Berechnung eines XML-Deltas zwischen zwei XML-Dokumenten entsteht ein so genanntes Edit-Script, das mittels Änderungsoperationen (Einfügen, Löschen, Ersetzen, Verschieben) eine Transformation von „Alt“ (z.B. V1) nach „Neu“ (z.B. V2) beschreibt. Führt man dieses Edit-Script auf dem alten Dokument aus („Patchen“), so gelangt man wieder zum neuen. Das Delta wird als XML-Dokument gespeichert, das sich aus dem auf die geänderten Bereiche reduzierten V1 und zusätzlicher Attribuierung der Edit-Script-Operationen zusammensetzt. Die Delta-Beispiele in Listing 1 und 2 sind aufgrund besserer Lesbarkeit nicht auf das notwendige Minimum reduziert.

Listing 1
-----------------------------------------------------------------
Produktion von Loseblattwerken

Viele Fachverlage arbeiten nach wie vor papierbasiert.

Loseblattwerke werden von externen Dienstleistern im Stehsatz verwaltet, in die dann auch Änderungen eingepflegt werden.

...

Das Attribut Stx:Op=“Ins“ kennzeichnet eine Einfügung bezüglich der Rohdatei (V1). Stx:Op=“Chn“ zeigt an, dass Inhalt bzw. Kindelemente geändert wurden. Wurde ein Element inklusive aller Inhalte/Kindelemente entfernt, so ist es mit einem Stx:Op=“Rem“ markiert. Elemente, die mit Stx:Op=“Nil“ gekennzeichnet sind, sind unverändert und werden im Delta nur mitgeführt, um die Struktur des XML-Baums aufrechtzuerhalten. Textinhalte werden auf Wortebene zerlegt und verglichen. Bei Textteilen, die sich nicht attribuieren lassen, werden Änderungen innerhalb des Textes mittels annotierbarer Stx:Text-Elemente geklammert.

Listing 2
----------------------------------------------------------------
<text stx:op="Ins">Automatisierte </text>
    Produktion von Loseblattwerken

Viele Fachverlage arbeiten nach wie vor papierbasiert.

Ein neuer Absatz.

Loseblattwerke werden von externen Dienstleistern im Stehsatz verwaltet, in die dann auch Änderungen eingepflegt werden.

...

Das ST4 TripleDelta geht nun die Rohdatei (V1) und die beiden Deltas (∆V1-V1L und ∆V1-V2) Element für Element synchron durch und vergleicht die Operationen, die auf V1 ausgeführt werden müssen. Die Operationen, die beim Layouten auftreten, bestehen zum größten Teil aus dem Hinzufügen von bestimmten Elementen wie z.B. dem ST4-Element für Seitenumbrüche. Im TripleDelta sind Heuristiken implementiert, die dann für jedes Element in V1 entscheiden, ob beide Operationen durchgeführt werden müssen und wenn, in welcher Reihenfolge bzw. ob eine der beiden Operationen verworfen werden muss. Das Ergebnis des ST4 TripleDeltas ist ein Delta (∆V1-V2L), das alle Operationen der beiden Deltas (∆V1-V1L und ∆V1-V2) enthält (Listing 3).

Listing 3
-------------------------------------------------------------------
<text stx:op="Upd">Automatisierte Produktion von Loseblattwerken</text>

Ein neuer Absatz.

Mithilfe dieses neuen Deltas wird V1 in V2L transformiert (gepatched). Zusätzlich setzt das TripleDelta bei Seiten, auf denen es Änderungen im Vergleich zu V1L erkannt hat, das changed -Attribut auf true. Dieses V2L mit den Layoutvorschlägen geht nun zum Setzer, der das Layout vervollständigt. Das endgültige V2L wird dann wieder vom Redaktionssystem übernommen. Es bildet mit V2 die Basis für den nächsten Zyklus, bei dem aus einem erneut inhaltlich geänderten V3 ein V3L erstellt wird.

Automatisierte Produktion von Loseblattwerken

Viele Fachverlage arbeiten nach wie vor papierbasiert.

Ein neuer Absatz.

Loseblattwerke werden von externen Dienstleistern im Stehsatz verwaltet, in die dann auch Änderungen eingepflegt werden.

...

Da an dem Gesamtprozess an vielen Stellen Heuristiken beteiligt sind, die sich teilweise widersprechen, können Fehler bei der Berechnung des TripleDeltas nicht ausgeschlossen werden.
Eine Regel beim Vergleich der XML-Bäume in der Deltaberechnung besagt z.B. dass, wenn der Textinhalt eines Elements zu 70 Prozent übereinstimmt, der Text wahrscheinlich an sich identisch ist und die Unterschiede von Änderungen stammen. Das führt zu einer Änderungsoperation (Stx:Op=“Upd“). Ist die Übereinstimmung geringer, so nimmt das System an, dass der Text gelöscht (Stx:Op=“Rem“) und ein anderer eingefügt wurde (Stx:Op=“Ins“). Zu einer Kollision kommt es immer dann, wenn beide Deltas dazu führen, dass an derselben Stelle von V1 eine Operation ausgeführt werden muss. Wurde z.B. in einem Satz an einer Stelle in V2 ein Komma eingefügt und im Layout V1L genau an derselben Stelle ein Zeilenumbruch erzwungen, so besagt eine dafür definierte Regel, dass zuerst das Komma eingefügt und danach die Zeile umbrochen wird. Also wird technisch gesehen die Änderung aus ∆V1-V2 ausgeführt, dann die Änderung aus ∆V1-V1L. Hat jedoch der Setzer das vermeintlich fehlende Komma entdeckt und statt des Zeilenumbruchs das Komma eingefügt, führt diese Regel im Satz zu zwei direkt aufeinander folgenden Kommata. Die Fehlerquote ist jedoch gering: Sind z.B. in einem Werk inhaltlich 20 Prozent geändert worden, werden die geänderten Seiten zuverlässig erkannt und ein Layoutvorschlag berechnet. Es kann vorkommen, dass unveränderte Seiten fälschlich als verändert gekennzeichnet und nochmals an den Satz gegeben werden. Durch Einbringen und Parametrisieren geeigneter Heuristiken und iteratives Testen anhand einer repräsentativen Menge realer Kundendaten konnte diese Fehlerquote im Schnitt auf 0,5 Prozent gesenkt werden. Ergebnis ist, dass der Setzer in diesem Fall 79,5 Prozent des Textes nicht mehr anfassen muss, was zu einer erheblichen Zeit- und Kostenersparnis führt.

Helmut Orian studierte Informatik an der FH Würzburg und ist in der Kern-Entwicklung der SCHEMA GmbH tätig. Als XML-Spezialist ist er maßgeblich für die Lösung komplexer Versionierungsprobleme in Kundenprojekten zuständig.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.