[Tustep-Liste] Infos aus dem Text als Attribut
Barbara Jockers
Barbara.Jockers at uni-wuerzburg.de
Mo Aug 10 12:15:45 CEST 2009
Liebe Listenleser und tuscript-Verständige,
ich wollte gerade ein #ko für die folgende Aufgabe schreiben, als mir
einfiel, daß eine tuscript-Lösung im Programm-Zusammenhang
wahrscheinlich sinnvoller ist. Hierfür möchte ich mal wieder um
Nachhilfe bitten.
In Zeilen, die folgende Informationen enthalten,
<li>Zahl Quellenangabe Kommentar</li>
<li>Zahl Quellenangabe Kommentar / Zahl Quellenangabe Kommentar / ...</li>
(Kommentar kann auch fehlen)
sollen <ha>-Tags eingefügt werden. Die Quellenangabe soll als Attribut
gesetzt werden, und das <ha>-Tag beginnt jeweils vor der Zahl und
endet nach der Zahl (Quellenangabe ist ja dann Attribut) oder nach dem
Kommentar. "/" fällt dann weg.
So soll es dann aussehen:
<li><ha gloss="Quellenangabe">Zahl Kommentar</ha></li>
<li><ha gloss="Quellenangabe">Zahl Kommentar</ha> <ha
gloss="Quellenangabe">Zahl</ha> <ha>...</ha></li>
Ich möchte eine S_Table definieren, die die möglichen Quellenangaben
enthält; dann mit Access auf die Quelldatei zugreifen und in die
Zieldatei schreiben. Konkret weiß ich nicht wie ich die Quellenangabe
aus dem Text gelöscht und ins Attribut "gloss" gesetzt bekomme und wie
ich am besten " / " durch "</ha><ha> ersetzt bekomme (s.u.). Für Hilfe
in dieser Sache wäre ich sehr dankbar.
Viele Grüße in die Runde,
Barbara Jockers
...
BUILD S_TABLE quellen = *
DATA |Quellenangabe 1|
DATA |Quellenangabe 2|
DATA |Quellenangabe 3|
SET ha = "nicht offen"
COMPILE
ACCESS q: READ/STREAM/RECORDS "quelldat" sq.zq/uq, atag + text + etag,
typ, stack
MODIFY ACCESS q S_TABLE quellen
ACCESS z: WRITE/ERASE/STREAM "zieldat" sz.zz/uz, atag + text + etag
LOOP/999999
READ/NEXT/EXIT q
IF (atag .EQ. "<li>") THEN
WRITE/NEXT z "<ha>"
WRITE/BREAK z
SET ha = "offen"
Aber wie bekomme ich die Info aus der Quellenangabe ins Attribut?
IF (text .CT. "/") THEN
WRITE/NEXT z "</ha><ha>"
WRITE/BREAK z
Aber "/" soll nicht mit in die Zieldatei geschrieben werden.
Vielleicht muß man statt dessen eine Austauschtabelle verwenden und "
/ " durch "</ha><ha>" austauschen? Kann man denn an dieser Stelle ein
zweites Modify anbringen?
...?
ENDIF
ENDIF
IF (etag .EQ. "</li>" AND ha .EQ. "offen") THEN
WRITE/NEXT z "</ha>"
WRITE/BREAK z
SET ha = "nicht offen"
ENDIF
IF (SOR) WRITE/BREAK z
WRITE z
ENDLOOP
ENDACCESS/PRINT q
ENDACCESS/PRINT z
ENDCOMPILE
RELEASE X_TABLE quellen
Mehr Informationen über die Mailingliste Tustep-Liste