Tutorium für die Anwendung des Workflows - Beispiel anhand eines Textes
Die Textauswahl (Zonca) ist dadurch begründet, daß dieser Text mit nur minimalem Eingreifen zu konvertieren ist. Dieses Tutorium beschreibt die Konversion eines Textes, der gemäß der DE_Specs digitalisiert wurde. Es liegen also vor:
- Digitale Bilder jeder einzelnen Buchseite sowie Buchdeckel und -rücken (auf Foxridge)
- eine Datei, die die Metadaten enthält:
index.meta
(auf Foxridge) - Datei mit dem nach den DE_Specs abgetippten Inhalt des Buches (hier)
Dem Buch ist eine ID zugewiesen worden, mit der es auffindbar ist.
Es wird davon ausgegangen, daß eine Arbeitskopie des Text- und Softwarerepositoriums vorliegt. Dieses befindet sich unter Versionskontrolle (Subversion) und sollte ausgecheckt und aktualisiert sein. Eine Anleitung gibt es hier
Zuletzt müssen in zwei Dateien Änderungen vorgenommen werden:
- in
<svn-Verzeichnis>/schema/scripts/workflow/mpdl-workflow-settings.txt
muß der richtige Pfad für das Repositorium angegeben werden. - in
<svn-Verzeichnis>/texts/aux/default-parameters.txt
ist anzugeben, welche Datei der unknown characters zu nehmen ist. Dies ist abhängig vom Work Order.
Kurzversion in zehn Schritten
- Dateinamen gemäß ECHO-Konvention anpassen
python prepare_conversion.py
- im neu entstandenen Text
filter2syncandcheckpb
ausführen,checkpb.log
beachten und vor allem das Ende der Datei anschauen.zzzz
löschen - Unknown characters überprüfen, Detailblock löschen
replacements
undparameters
einfügen- Restliche Filter aus Schritt zwei ausführen, Output überprüfen und Textdatei gegebenenfalls korrigieren
filter3makeandcheckxml
ausführen, log prüfen und mit der entstandenen xml-Datei weiterarbeiten (Textwrangler:Filter_3_make_wellformed.pl
undFilter_3_test_wellformedness.pl
)filter4makeschemaandcheck
ausführen und log prüfen (könnten Warnungen wegen der Byte Order Mark auftreten) (Textwrangler:Filter_4_make_valid.pl
undFilter_4_test_validity.pl
)filter5numberdivs
ausführen, der das DTD-Fragment auflöst (Textwrangler:Filter_5_06_number_divs.pl
)- Der Text sollte nun hochladbar sein
Variante 1: Arbeit mit Terminal und Texteditor
Zuerst sei die Variante beschrieben, die ausschließlich mit einem Terminal und einem Texteditor auskommt. Vorteil ist hier die relativ plattformunabhängige Arbeit. Eine Verbindung mit dem Internet ist jedoch erforderlich.
NB: die in dieser Variante erwähnten Skripte (filter...
) sind wie folgt aufzurufen:
sh <svn-Verzeichnis>/schema/scripts/workflow/filter... Zonca_1656_UR271U6Y.<txt|xml>
Dabei wird bis einschließlich Konversion nach XML und Validierung, Schritt 1, mit der txt
-Datei gearbeitet.
Einfügen von Metadaten
- Der Dateiname der Textdatei sollte das folgende Format haben:
Nachname_Jahr_ID.txt
(ECHO-Konvention). Die ID ist beispielsweise über den Bibliothekskatalog (dort in dem Link zu Scans (high quality)) auffindbar, in diesem Falle ist es alsoZonca_1656_UR271U6Y.txt
. Idealerweise wird der Text in der Verzeichnisstruktur des Text- und Softwarerepositoriums abgelegt (beispielswiese innerhalb von<svn-Verzeichnis>/texts
). python <svn-Verzeichnis>/schema/scripts/workflow/prepare_conversion.py Zonca_1656_UR271U6Y.txt
erledigt automatisch die Vorbereitung der Konversion:- Erstellen der Verzeichnisstruktur
- Einfügen des metadata-Blocks:
- Einfügen der Metadaten aus der
index.meta
-Datei - Einfügen der GND der Autoren, falls vorhanden.
- Einfügen der Metadaten aus der
- Einfügen der Bilddateinamen (
pageimg
-Block). - Untersuchen des Textes auf unbekannte Zeichen (
unknown
-Block). - Vorbereitung der restlichen Blöcke (
log
,replacements
,parameters
). Die sechs somit entstandenen Blöcke werden von nachfolgenden Skripten aufgelöst (pageimg
,unknown
,replacements
), weiterverwertet (metadata
,parameters
), beziehungsweise in die Metadaten integriert (log
).
- Es wird im
log
-Block außerdem ein Link zu der Quelle im Anzeigesystem eingefügt, damit Zweifelsfälle anhand der Seitenbilder leicht überprüft werden können.
Koordination von Bild und Text
- Die im Text eingetragenen Seitenumbrüche werden durch das
Skript
filter2syncandcheckpb.sh
durch die Dateinamen impageimg
-Block ergänzt. Hier muß manuell geprüft werden, ob die Koordination stimmt. Falls nicht, muß der Bearbeitungsschritt rückgängig gemacht werden und an den entsprechenden Stellen in der Originalversion Seitenumbrüche hinzugefügt beziehungsweise entfernt werden. Während dieses Vorgangs sollte nichts anderes am Text verändert werden. - Überflüssige Seiten wie
zzzz.jpg
(Farbtabelle am Ende des Buches) müssen dann noch gelöscht werden.
Unknown characters
- Die entstandene Liste muß durchgegangen werden und entschieden werden, wie die unbekannten Zeichen zu ersetzen sind. Es werden Vorschläge angezeigt, die auf den von der Dateneingabefirma geführten Listen basieren.
- Der im Textdokument erscheinende Absatz über dem unknown-Block muß dann gelöscht werden.
Parameters und replacements
- Gegebenenfalls müssen hier noch Parameter angegeben werden. Für
Texte bis einschließlich Work Order 5 muß unter parameters
despecs=1.1.2
angegeben werden. - Der Replacements-Block ist dazu da, häufiger im Text
vorkommende Stellen zu ersetzen, die für die Durchführung der
Skripte problematisch sein können (weil eine beispielsweise
eine bestimmte Konstruktion noch nicht implementiert ist): Für
die Absatzauszeichnung
<p #>
gibt es noch keine Regel, weswegen etwaiges Auftreten verhindert werden muß, indem diese Absatzauszeichnung durch ein einfaches<p>
ersetzt wird. Dies wird im Replacements-Block erledigt:<p\x{0020}# = <p #
(das Leerzeichen muß als Unicode-Escapesequenz angegeben und die schließende spitze Klammer weggelassen werden).
Textdokument überprüfen
- Die restlichen Skripte aus Block 2 werden nun aufgerufen und deren Ausgabe durchgesehen werden, da sie das Textdokument auf bestimmte Fehler prüfen.
Konversion nach XML und Validierung
- Das Skript
filter3makeandcheckxml.sh
konvertiert das Textdokument in ein XML-Dokument. In der Logdatei kann geprüft werden, ob dabei Fehler aufgetreten sind. Etwaige Fehler sollten nach Möglichkeit in der zugrundeliegenden Textdatei korrigiert werden. - Das nächste Skript,
filter4makeschemaandcheck
, formt das XML in XML gemäß dem ECHO-Schema um und überprüft das Ergebnis (Logdatei beachten). Bei Fehlern gibt die Log-Datei Hinweise auf den Ort und die Art des Fehlers. Es ist aber empfehlenswert, mit einem Texteditor zu arbeiten, der die Fehler im XML anzeigen kann (beispielsweise Oxygen oder Emacs). - Das letzte Skript,
filter5numberdivs
, löst das am Anfang der Datei befindliche DTD-Fragment auf und nummeriert die div-Elemente - Damit ist der Text vollständig in XML gemäß dem ECHO-Schema formatiert und kann in den Textspeicher importiert werden.
Variante 2: Arbeit mit Emacs
Diese Variante ähnelt der Variante 1. Für die Arbeit mit Emacs gibt es einen Major Mode (echo-mode.el), der einige Befehle und zudem eine Kommentarsyntax im XML-Stil bereitstellt, so daß in der txt-Version mit Kommentaren gearbeitet werden kann, die auch in der XML-Version bestehen bleiben. Die Befehle bestehen wiederum aus kaum mehr als den Aufrufen der zuvor erwähnten Shellskripte (es wird nur zusätzlich die Datei neu eingelesen oder automatisch die XML-Datei geöffnet.)
Variante 3: Arbeit mit Textwrangler/ BBEdit (auf Apple Mac OS)
NB: derzeit ist die Ausgabe in das Unix Script Output-Fenster fehlerhaft.
- Für die Arbeit mit Textwrangler müssen alle Skripte aus dem
<svn-Verzeichnis>/schema/scripts/workflow
-Verzeichnis in das Skriptverzeichnis~/Library/Application Support/TextWrangler/Unix Support/Unix Filters/
kopiert werden. - In den Einstellungen ist es möglich, einen Font auszuwählen, der MUFI-Zeichen unterstützt, beispielsweise Andron Scriptor.
- Das Skript
prepare_conversion.py
funktioniert nicht in Textwrangler, da es kein Textfilter ist. Dieses muß über die Kommandozeile aufgerufen werden. - Ansonsten können die Textfilter im Textwrangler einfach
angewandt werden. Angefangen mit Filter_2_02 werden zunächst
alle Filter_2-Skripte der Reihe nach ausgeführt (Zugriff
beispielsweise über das #!-Menü in der Menüzeile). Dabei sollte
darauf geachtet werden, daß kein Text markiert ist. Für die
Schritte 3 bis 5 gibt es jeweils zusammengefaßte Skripte,
nämlich
Filter_3_make_wellformed.pl
undFilter_4_make_valid.pl
. Diese führen einzelne Skripte aus. - Nach
Filter_3_make_wellformed.pl
undFilter_4_make_valid.pl
sollten die jeweiligen TestskripteFilter_3_test_wellformedness.pl
undFilter_4_test_validity.pl
ausgeführt werden. - Zuletzt sollte
Filter_5_06_number_divs.pl
ausgeführt werden. - Falls der Text valide ist, kann er hochgeladen werden.
- Problematisch an der Arbeit mit Textwrangler ist, daß es keine interaktive Überprüfung des XML gibt. Hier empfiehlt sich gegebenenfalls die zwischenzeitliche Arbeit mit Oxygen.