[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