[Tustep-Liste] Aufteilen einer Tustepdatei in viele XML-Einzeldateien
Dr. Elke Zinsmeister
zinsmeister at bbaw.de
Sa Sep 27 19:26:34 CEST 2025
Lieber Christian,
vielen Dank! Wenn ich hier weiter Fragen stelle und daraufhin so
ausführlich dokumentierte Routinen erhalte, lerne ich TUSCRIPT womöglich
noch ganz ohne Jour fixe.
Wenn ich die Routine über meine Datei laufen lasse, erhalte ich nach dem
Schreiben der 9. Datei die Fehlermeldung "Vermutlich Endlosschleife
(0.0/16)" und die Routine bricht ab.
Die bereits erstellten Dateien 1 bis 9 kann ich in oxygen zwar öffnen,
Umlaute etc. werden aber nicht korrekt angezeigt. Gibt es die
Möglichkeit, als code utf8 anzugeben - so wie ich das in der von Herrn
Stahl geschickten Lösung eingefügt habe? Das sollte dieses Problem
wahrscheinlich beheben.
Kein Problem habe ich dagegen mit "#", das mir mit Herr Stahls Routine
in oxygen immer mit einem "^" davor angezeigt wird. Warum das passiert,
habe ich noch nicht verstanden.
"n" sollte dreistellig, also mit führenden Nullen sein. Das ist in der
Routine von Herrn Stahl durch den Parameter LNZ gelöst. Geht das hier
auch irgendwie? Da die im Projekt verwendeten Dateinamen nicht mit den
Vorgaben für Dateinamen in TUSTEP kompatibel sind, muss ich sie aber
ohnehin später noch anpassen. Das könnte ich also auch dort machen.
Und noch eine Frage zu TUSCRIPT: .CT. steht vermutlich für "contains" -
gibt es irgendwo eine Liste der in TUSCRIPT gebräuchlichen Operatoren?
Im Handbuch und auch im TUSTEP-Wiki habe ich keine gefunden.
Herzliche Grüße
Elke
Am 2025-09-27 13:59, schrieb Christian Sonder:
> Liebe Frau Zinsmeister,
>
> anbei eine kleine TUSCRIPT-Variante mit zahlreichen Kommentaren,
> als Erläuterung.
>
> Der Idee des Programms besteht einfach aus einer Schleife,
> die über die Quelldatei iteriert und immer dann, wenn sie
> auf "<?xml-model" trifft, eine neue Zieldatei anlegt.
> In jedem Schleifendurchlauf wird eine Zeile in die jeweils
> passende Zieldatei geschrieben.
>
> Sie müssen nur die Variablen quelle und präfix an ihre
> Umgebung anpassen.
>
> Viele Grüße
> Christian Sonder
>
> #MAKRO
> $$ MODE TUSCRIPT, {}
>
> - 1. Variablen definieren
> - quelle: die Datei, aus der die Daten stammen
> - präfix: der gemeinsame Namensteil der Zieldateien
> - n: ein Zähler, um die Zieldateien zu unterscheiden
> - start: eine Suchtabelle, die den Beginn eines Blocks enthält
> quelle = "teilen.data"
> präfix = "abc"
> n = 0
> BUILD S_TABLE start = "|<\?xml-model|"
>
> - 2. Zeilenbasierte Schleife über die Quelldatei
> ACCESS daten: READ/RECORDS $quelle, s.z/u, zeile
> LOOP
>
> - Lese jeweils eine Zeile bis zum Ende der Datei
> READ/NEXT/EXIT daten
>
> - Wenn die Zeile "<?xml-model" enthält,
> - beginnt ein neuer Block
> IF (zeile .CT. start) THEN
> - Zähler erhöhen, Zieldatei anlegen oder öffnen
> - Inhalt der Zieldatei ggfs. entfernen
> SET n = n + 1
> SET ziel = "{präfix}_{n}.xml"
> SET status = CREATE($ziel, FDF-O)
> SET status = ERASE($ziel)
> PRINT "Beginne in Datei {ziel} zu schreiben."
> ENDIF
>
> - Schreiben in die jeweils aktuelle Zieldatei
> FILE ziel = zeile
>
> ENDLOOP
> ENDACCESS daten
> *eof
--
Dr. Elke Zinsmeister
Berlin-Brandenburgische Akademie der Wissenschaften
Der Österreichische Bibelübersetzer - Gottes Wort deutsch
Jägerstraße 22/23
D-10117 Berlin
Tel.: +49 030 20370 513
https://www.bbaw.de/forschung/der-oesterreichische-bibeluebersetzer-gottes-wort-deutsch
Corpus Vitrearum Medii Aevi
Am Neuen Markt 8
D-14467 Potsdam
Tel.: +49 (0)331 2796 114
Fax: +49 (0)331 2796 130
https://cvma.bbaw.de
https://www.corpusvitrearum.de
Mehr Informationen über die Mailingliste Tustep-Liste