Changes between Version 10 and Version 11 of workflow
- Timestamp:
- May 23, 2010, 10:43:31 AM (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
workflow
v10 v11 7 7 und 8 8 [http://echotest.mpiwg-berlin.mpg.de/content/historymechanics/Echo echotest]. 9 Der automatische XML-Workflow besteht aus einer Reihe von [source:trunk/schema/scripts/workflow Skripten]. Einige dieser Skripte sind noch reine Platzhalter, aber die Struktur stimmt bereits.9 Der automatische XML-Workflow besteht aus einer Reihe von [source:trunk/schema/scripts/workflow Skripten]. Einige dieser Skripte sind noch leere Platzhalter, aber die Struktur stimmt bereits. 10 10 11 11 12 12 == Die Arbeitsschritte == 13 13 14 ein Stern * bei einem Filter bedeutet: Wenn man zum raw text zurückkehrt, muss dieses Skript anschließend noch einmal angewendet werden. Alle Skripte mit * laufen automatisch ab; Ausnahme könnte später das {{{<s>}}}-Skript sein. Die automatischen Skripte sollten soweit wie möglich in Skript-Ketten abrufbar sein. 14 Im ersten Arbeitsschritt werden alle Vorbereitungen getroffen, um mit dem raw text zu arbeiten. Im zweiten Schritt wird der raw text korrigiert und annotiert. Im dritten Schritt wird der annotierte raw text in wohlgeformtes XML verwandelt. Im vierten Schritt wird der XML-Text schemakonform gemacht. 15 16 Im Gegensatz zu den früheren Skripten dürfen die hier beschriebenen Bearbeitungsschritte die Zeilenstruktur verändern, zum Beispiel eine Zeile hinzufügen. 17 18 Beachte, dass Work Orders 1 bis 5 mit den DESpecs 1.1.2 und Work Orders 6 bis 9 mit den DESpecs 2.0 geschickt wurden. Unterschiede sind zum Beispiel das Format von Figures und von Tabellen. 19 20 Ein Stern * bei einem Filter bedeutet: Wenn man zum raw text zurückkehrt, muss dieses Skript anschließend noch einmal angewendet werden. Alle Skripte mit * laufen automatisch ab; Ausnahme könnte später das {{{<s>}}}-Skript sein. Die automatischen Skripte sollten soweit wie möglich in Meta-Skripten abrufbar sein. 15 21 16 22 Namenskonvention bei den Skripten: {{{check}}} als Vorbereitung, {{{test}}} als Nachbereitung. Alle anderen Skripte müssen wiederholt werden, wenn man wieder mit dem raw text anfängt. … … 22 28 23 29 ==== Von Pythia ins svn-repository ==== 30 31 Es ist noch nicht ganz klar, wie neue Dateien in Zukunft verarbeitet werden: Kommen sie zuerst nach Pythia oder gleich in das wiki-repository? Jedenfalls muss geprüft werden, dass es die Datei reiner Text in utf-8 ist. 24 32 25 33 im [source:trunk/texts Texte-Verzeichnis] im repository: … … 27 35 * Verzeichnisse anlegen (allerdings nerven die raw/xml-Verzeichnisse in der Praxis) 28 36 * Datei aus Pythia rüberkopieren 29 * Kopie erstellen und umbenennen , mit identifier, neue line ends37 * Kopie erstellen und umbenennen (autor_jahr_identifier), Zeilenenden von CRLF zu LF. Entferne BOM-Fragmente (korrekte BMs sind okay). 30 38 31 39 Skript: Datei umbenennen? oder ist das jetzt wirklich etwas, was einfacher per Hand geht? 32 33 Skript von Klaus? 40 (Skript von Klaus?) 34 41 35 42 … … 70 77 2. Umbenennen der alten index.meta (eventuell wird eine ältere Sicherheitskopie ohne Nachfrage überschrieben), Schreiben der neuen. 71 78 79 (Die Trennung von Vorbereitung und raw text bearbeiten kann man eventuell nicht klar aufrechterhalten, weil es wohl nur ein Skript gibt, das mit dem Server kommuniziert und dort gleichzeitig <texttool> einträgt, Metadaten abgreift, die pageimg importiert. Andererseits können das genausogut drei getrennte Skripte sein. Dann kommuniziert man halt dreimal mit dem Server. Oder einfacher: ein Skript holt sich eine lokale Kopie von index.meta und legt eine getrennte Datei der pageimg an, und die nächsten Skripte müssen dann gar nicht mehr auf dem Server anfragen.) 80 72 81 73 82 === raw text bearbeiten === 74 83 75 Die Trennung von Vorbereitung und raw text bearbeiten kann man eventuell nicht klar aufrechterhalten, weil es wohl nur ein Skript gibt, das mit dem Server kommuniziert und dort gleichzeitig <texttool> einträgt, Metadaten abgreift, die pageimg importiert. Andererseits können das genausogut drei getrennte Skripte sein. Dann kommuniziert man halt dreimal mit dem Server. ODer einfacher: ein Skript holt sich eine lokale Kopie von index.meta und legt eine getrennte Datei der pageimg an, und die nächsten Skripte müssen dann gar nicht mehr auf dem Server anfragen.76 77 Folgende Gruppen sind erlaubt, in beliebiger Reihenfolge, jeweils durch eine Leerzeile getrennt, vor dem ersten {{{<pb>}}}:84 In diesem Arbeitsschritt wird der raw text auf die Umwandlung in XML vorbereitet. Änderungen werden soweit möglich am Anfang der Datei gemacht. Nur wenn es nicht anders geht, wird der Text selbst geändert. 85 86 Am Anfang der Datei sind folgende Gruppen erlaubt, in beliebiger Reihenfolge, jeweils durch eine Leerzeile getrennt, vor dem ersten {{{<pb>}}} (d.h. vor dem eigentlichen Text): 78 87 79 88 * {{{metadata:}}} 80 * {{{pageimg:}}} (wird aber gleich wieder verarbeitet) bzw. getrennte Datei, siehe oben89 * {{{pageimg:}}} (wird aber gleich wieder verarbeitet) 81 90 * {{{unknown:}}} 82 91 * {{{replacements:}}} (per Hand; könnte man noch aufteilen in forbidden, escape sequences, special instructions; aber bringt das mehr Klarheit?) 83 92 * {{{log:}}} (per Hand) 84 93 85 Alle in getrennte Dateien? Oder ist das dann auch wieder übertrieben? 86 87 Getrennte Datei doof für Skripte, weil sie die Datei dann finden müssen? Also doch gleich in den raw text? 94 (Alle in getrennte Dateien? Oder ist das dann auch wieder übertrieben? Getrennte Datei doof für Skripte, weil sie die Datei dann finden müssen? Also doch gleich in den raw text?) 95 96 Das Skript zur Normalisierung der Interpunktion habe ich vorläufig weggelassen, weil es vermutlich merkwürdige Nebenwirkungen hat. Zum Beispiel spaces vor „:“ weg. (Hier ist die Frage, ob wir Information verlieren, die wir gerne konservieren würden. Beispiel „EPISTOL AE“). Ziel ist wieder, dass sich die folgenden Skripte auf ein einheitliches Format verlassen können. Beispielsweise müsste das reg-Skript, das unter anderem {{{q;}}} durch {{{que}}} ersetzt, nicht noch prüfen, ob es {{{q ;}}} gibt. 97 88 98 89 99 ==== Metadaten ==== 90 100 101 Skript zur Korrektur der Metadaten aus index.meta: 91 102 [source:trunk/schema/scripts/workflow/Filter_2_01_additional_metadata.pl Filter_2_01_additional_metadata] 92 103 93 104 „metadata:“ 94 Skript zur Korrektur der Metadaten aus index.meta95 105 96 106 ergänze dann den Rest per Hand … … 121 131 ==== ersetze verbotene Zeichen im Text ==== 122 132 133 Das Skript 123 134 [source:trunk/schema/scripts/workflow/Filter_2_03_find_forbidden_characters.pl Filter_2_03_find_forbidden_characters] 124 125 ⟶ im ganzen Dokument: {{{Hinɔ wird Hinc}}} (Einzelfälle) 126 127 entweder direkt im Text, oder mit Zwischenstuf als replacements am Anfang 135 erstellt eine Liste verbotener Zeichen und Uncode-Blöcke im Text, bei einzelnen Zeichen mit Korrekturvorschlag. Beispiele: 136 137 * ɩ („latin small letter iota“) aus dem Unicode-Block „IPA Extension“ anstelle von „dotless i“. Der ganze Block „IPA Extension“ ist verboten, aber bei den anderen Zeichen gibt es keinen automatischen Korrketurvorschlag. 138 * ÿ statt ij in kursivem Text 139 * „substitute“ (U+001A) 140 * zwei spaces hintereinander 141 * Zeichen, die in den Skripten intern verwendet werden: ¤, ¥. (Diese Währungszeichen als reservierte Zeichen wurden ausgewählt, weil sie in alten Texte wahrscheinlich nicht vorkommen, aber in vielen modernen Fonts verfügbar sind.) 142 143 Soweit wie möglich sollten die Korrekturen im {{{replacements:}}}-Block am Anfang des Textes stehen. Einzelfälle können aber auch direkt im Text korrigiert werden. Beispiel: {{{Hinɔ}}} wird {{{Hinc}}} 144 145 Eventuell wird das Skript noch von einer Blacklist von Unicode-Blöcken auf eine Whitelist umgestellt. 128 146 129 147 … … 139 157 ==== prüfe escape sequences ==== 140 158 141 [source:trunk/schema/scripts/workflow/Filter_2_05_check_escape_sequences.pl Filter_2_05_check_escape_sequences] 142 143 144 bei replacements: zum Beispiel {{{{ta} ta (vorläufig!)}}} 145 159 Das Skript [source:trunk/schema/scripts/workflow/Filter_2_05_check_escape_sequences.pl Filter_2_05_check_escape_sequences] 160 ruft intern erst [source:trunk/schema/scripts/workflow/Filter_3_01_replace_unknown_characters.pl Filter_3_01_replace_unknown_characters] 161 auf und prüft dann, wo danach noch folgende Zeichen im Text sind: { \ 162 163 Man muss dann jeweils entscheiden, ob diese geschweiften Klammern etc. in Ordnung sind oder nicht. 164 165 Beispiel: Im Text wird die idiosynkratische Notation {ta} für eine Ligatur in kursiver Schrift verwendet. Im {{{replacements}}}-Block: {{{{ta} ta (vorläufig!)}}} 166 167 146 168 ==== prüfe italics ==== 147 169 … … 150 172 {{{_ _}}} werden erst später in <it> verwandelt, aber hier wird bereits geprüft, ob es Probleme geben wird (bzw. die Fehler werden per Hand korrigiert) 151 173 152 153 174 154 175 ==== prüfe tags ==== … … 177 198 wie wird das in den raw text geschrieben? schon mit korrektem xhtml ist vielleicht etwas viel Aufwand. noch eine Zwischensprache, oder was ist da überhaupt zu tun? 178 199 200 179 201 ==== Special Instructions ==== 180 202 181 [source:trunk/schema/scripts/workflow/Filter_2_10_special_instructions_for_ ... .pl Filter_2_10_special_instructions_for_...]203 [source:trunk/schema/scripts/workflow/Filter_2_10_special_instructions_for_xxxxxxxx Filter_2_10_special_instructions_for_xxxxxxxx] 182 204 183 205 (bei manchen Texten wird es einfacher sein, es statt mit einem Skript per Hand zu machen) … … 190 212 === Schritte bis zu wohlgeformtem xml === 191 213 192 Diese Skripte sollten problemlos durchlaufen und können in einem Meta-Skript zusammengefasst werden: 193 [source:trunk/schema/scripts/workflow/Filter_3_make_wellformed.pl Filter_3_make_wellformed] 194 195 Außerdem: [source:trunk/schema/scripts/workflow/Filter_3_test_wellformedness.pl Filter_3_test_wellformedness] 196 197 214 Diese Skripte in diesem Arbeitsschritt sollten problemlos durchlaufen und können in einem Meta-Skript zusammengefasst werden: 215 [source:trunk/schema/scripts/workflow/Filter_3_make_wellformed.pl Filter_3_make_wellformed]. Das Skript [source:trunk/schema/scripts/workflow/Filter_3_test_wellformedness.pl Filter_3_test_wellformedness] 216 prüft anschließend, ob das Ergebnis wohlgeformt ist. 198 217 199 218 … … 202 221 [source:trunk/schema/scripts/workflow/Filter_3_01_replace_unknown_characters.pl Filter_3_01_replace_unknown_characters] 203 222 204 205 223 (vor escape sequences als garantierte Reihenfolge, bevor die escape sequences umgewandelt werden) 206 224 … … 216 234 ==== ersetze escape sequences ==== 217 235 218 [source:trunk/schema/scripts/workflow/Filter_3_03_replace_escape_sequences.pl Filter_3_03_replace_escape_sequences] 236 Das Skript [source:trunk/schema/scripts/workflow/Filter_3_03_replace_escape_sequences.pl Filter_3_03_replace_escape_sequences] 237 löst alle escape sequences auf, sowie einige weitere Schreibweisen aus den DESpecs. 238 239 * escape sequences: Beachte, dass {{{\'}}} (U+0027) im Text auch als {{{\’}}} (U+2019) geschrieben sein kann. 240 * Beachte auch: {{{\-}}} wird hier zu einem combining macron, weil es so im transkribierten Text steht. Später wird das in den meisten Fällen zu einer Tilde korrigiert, weil das Makron normalerweise eine falsche Transkription einer Tilde ist. Genauso ist {{{\,e}}} in den meisten Fällen in Wirklichkeit {{{ę}}}, wird aber hier zu {{{ȩ}}}. 241 * Löse {{{$}}} auf 242 * Zeichen, die wir absichtlich nicht in die Specs aufgenommen haben, zum Beispiel {{{<^>9</^>}}} für ꝰ (modifier letter us, U+A770) 243 * löse {{{{ }}}} auf: {{{{ij}}}} auf zu {{{ij}}} (später stillschweigend zu {{{ij}}}), {{{{ae}}}} zu {{{ę}}} 244 * zum Schluss: Unicode-Normalform [http://unicode.org/reports/tr15/ NRC] 219 245 220 246 … … 223 249 [source:trunk/schema/scripts/workflow/Filter_3_04_replace_underscores.pl Filter_3_04_replace_underscores] 224 250 251 225 252 ==== Metadaten, root element ==== 226 253 … … 228 255 229 256 auch: log ! 257 230 258 231 259 ==== wohlgeformtes xml ==== … … 246 274 [source:trunk/schema/scripts/workflow/Filter_4_00_Schummelskript.pl Filter_4_00_Schummelskript] (solange die Tabellen noch nicht richtig verarbeitet werden) 247 275 276 248 277 ==== <pb> ==== 249 278 250 279 [source:trunk/schema/scripts/workflow/Filter_4_01_pb.pl Filter_4_01_pb] 251 280 281 252 282 ==== floats herausziehen ==== 253 283 … … 258 288 auch aus <h>, oder lieber Fehler provozieren? 259 289 290 260 291 ==== <lb> ==== 261 292 262 293 [source:trunk/schema/scripts/workflow/Filter_4_03_insert_lb.pl Filter_4_03_insert_lb] 263 294 295 264 296 ==== <s> ==== 265 297 … … 268 300 [source:trunk/schema/scripts/workflow/Filter_4_04a_test_s.pl Filter_4_04a_test_s] ?? 269 301 302 270 303 ==== <emph> ==== 271 304 272 305 [source:trunk/schema/scripts/workflow/Filter_4_05_emph.pl Filter_4_05_emph] 273 306 307 274 308 ==== tables ==== 275 309 … … 277 311 278 312 wann werden die tables bearbeitet? zwei Schritte: überhaupt syntaktisch korrekt, und dann größtmögliche Annäherung an das Original (erst im scholarly workflow). 313 314 279 315 ==== <div> ==== 280 316 281 317 [source:trunk/schema/scripts/workflow/Filter_4_07_insert_div.pl Filter_4_07_insert_div] (nicht wirklich nötig für Schema-konform, aber bekommt man quasi geschenkt) 282 318 319 283 320 === weitere Schritte === 284 321 322 Legt die Hierarchie der inline-Elemente (z.B. <var> in plaintext, <ref> im inline model) eine Verarbeitungsreihenfolge nahe? 323 324 285 325 ==== <reg> ==== 286 326 287 327 [source:trunk/schema/scripts/workflow/Filter_5_01_insert_reg.pl Filter_5_01_insert_reg] (mit Parametern) 288 328 329 289 330 ==== <var> ==== 290 331 291 332 [source:trunk/schema/scripts/workflow/Filter_5_02_insert_var.pl Filter_5_02_insert_var] (mit Parametern) 292 333 334 293 335 ==== Formeln ==== 294 336 … … 297 339 ? 298 340 341 299 342 ==== div-Attribute ==== 300 343 … … 312 355 313 356 [source:trunk/schema/scripts/workflow/Filter_roman_numbers.pl Filter_roman_numbers] 357 314 358 315 359