8. Migrationssoftware

Das zweitgrösste Problem bezüglich DocBook ist der benötigte Aufwand, um veraltete Dokumentbeschreibungssprachen nach DocBook zu konvertieren. Menschliche Wesen sind normalerweise befähigt, die Umwandlung der Präsentation eines Dokumentes in seine logische Struktur automatisch vorzunehmen, da sie (zum Beispiel) dem Kontext entnehmen können, wenn eine kursive Schrift mit `Betonung' gleichzusetzen ist und wenn es etwas anderem wie z.B. `dies ist ein fremder Satz' gleichzusetzen ist.

Manchmal müssen diese Art von Unterscheidungen bei der Konvertierung von Dokumenten nach DocBook explizit deklariert werden. Manchmal verbergen sich solche Missverständnisse innerhalb der veralteten Dokumentenbeschreibungsprache; oftmals sind sie jedoch gar nicht vorhanden, was eine manuelle Addierung der strukturellen Information durch einen Menschen oder intelligente, heuristische Distinktionen erforderlich macht.

Ein Überblick über die verfügbaren Konvertierungsprogrammen von fremden Formaten:

GNU Texinfo

Die Free Software Foundation hat die Entscheidung getroffen, dass sie das DocBook Format als Austauschsformat unterstützen werden. Texinfo ist in ausreichendem Masse strukturiert, um eine automatische Konversion mit annehmbarem Resultat zu erzeugen; die 4.x Versionen von makeinfo sind zudem mit der Funktionalität versehen über den --docbook Parameter DocBook erzeugen können. Mehr hierzu auf der makeinfo Projektseite.

POD

Es existiert ein POD::DocBook Modul, welches die 'Plain Old Documentation' Beschreibungssprache nach DocBook konvertiert. Gemäss Aussage unterstützt es jedes verfügbare DocBook Tag, ausser dem L<> kursiven Tag. Die Manualseite deklariert zudem ``Nested =over/=back werden nicht in DocBook unterstützt." und erwähnt, dass das Modul stark getestet worden ist.

LaTeX

LaTeX ist eine (überwiegende) strukturelle Makrobeschreibungssprache, die auf dem TeX Formattierer basiert. Es existiert ein Projekt namens TeX4ht, welches (laut dem Autor von PassiveTeX) DocBook aus LaTeX zu kreieren imstande ist.

Manualseiten und andere troff-basierende Beschreibungssprachen

Dies wird generell als zugleich das grösste wie auch schwierigste Konvertierungssproblem angesehen. Die grundlegende troff(1) Dokumentbeschreibungssprache ist nicht ausreichend genug, um die automatische Konvertierung in ein annehmbares Resultat zu ermöglichen. Die Trübnis erhellt sich jedoch in signifikantem Ausmasse, wenn wir die Übersetzung von Quellen von Dokumenten, die in Makropacketen wie man(7) enthalten sind, bedenken. Jene sind ausreichend strukturell aufgebaut, um somit die automatische Konversion zu ermöglichen.

Ich schrieb ein Programm, um dies zu realisieren, da ich kein anderes fand, welches diese Herausforderung halbwegs gut löste (und das Problem ist durchaus interessant). Es nennt sich doclifter. Es kann wahlweise nach SGML oder XML DocBook Format von man(7), mdoc(7), ms(7) oder me(7) Makros aus konvertieren. Siehe die Dokumentation für weitere Erläuterungen.