[Tustep-Liste] Einfügen von tags - Erläuterung
Kuno Schälkle
schaelkle at zdv.uni-tuebingen.de
Fr Jun 19 10:36:45 CEST 2009
Liebe Frau Jockers,
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
<eintrag> soll vor <ll> beginnen und nach dem letzten </bed> bzw. vor
dem nächsten <ll> aufhören.
<gram> beginnt nach </ae> und endet nach dem letzten </sch>; es können
aber mehrere Paare <w> <sch> auftreten.
<lv> beginnt nach </gram> bzw. vor <koi type="lv">, falls vorhanden,
ansonsten vor <beleg>. </lv> endet nach dem letzten </beleg>.
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
unten folgt ein Makro, bei dem ich mich auf
die obigen Aufgaben beschränkt habe, da Sie
mit den anderen Ergänzungen ja keine Probleme
haben.
Herzliche Grüße
Kuno Schaelkle
------------------------------------------------------
$$! quelle, ziel
$$-
$$ MODE TUSCRIPT
SET status = CHECK (quelle, READ, TUSTEP)
ERROR/STOP "QUELLE: ", status
SET status = CHECK (ziel, WRITE, TUSTEP)
ERROR/STOP "ZIEL: ", status
SET status = UNIQUE (quelle, ziel)
ERROR/STOP "Datei ", status, " ist mehrfach angegeben"
SET koi_type_lv = SET_ATTRIBUTE ("koi", "type", "lv")
COMPILE
ACCESS q: READ/STREAM/RECORDS "{quelle}" ...
qsn.qzn/qun, aken + text + eken, anz, tags
ACCESS z: WRITE/ERASE/STREAM "{ziel}" ...
zsn.zzn/zun, aken + text + eken
SET eintrag = gram = lv = "nicht offen"
LOOP/999999
READ/NEXT/EXIT q
- vor erstem <ll>: <eintrag> einfügen
- vor weiteren <ll>: </eintrag><eintrag> einfügen
IF (aken.EQ."<ll>") THEN
IF (eintrag.EQ."nicht offen") THEN
WRITE/NEXT/BREAK z "<eintrag>"
SET eintrag = "offen"
ELSE
WRITE/NEXT/BREAK z "</eintrag><eintrag>"
ENDIF
ENDIF
- vor erstem <w>: <gram> einfügen
IF (aken.EQ."<w>" .AND. gram.EQ."nicht offen") THEN
WRITE/NEXT/BREAK z "<gram>"
SET gram = "offen"
ENDIF
- nach letztem <w>-<schw>-Paar: </gram> einfügen
IF (gram.EQ."offen" .AND. tags.NM.":*<<w>>*:*<<sch>>*:") THEN
WRITE/NEXT/BREAK z "</gram>"
SET gram = "nicht offen"
ENDIF
- vor <koi type="lv"> bzw. vor <bel>: <lv> einfügen
IF (aken.EQ.koi_type_lv,"<bel>" .AND. lv.EQ."nicht offen") THEN
WRITE/NEXT/BREAK z "<lv>"
SET lv = "offen"
ENDIF
- nach letztem </bel>: </lv> einfügen
IF (lv.EQ."offen" .AND. tags.NM.":*<<koi>>*:*<<bel>>*:") THEN
WRITE/NEXT/BREAK z "</lv>"
SET lv = "nicht offen"
ENDIF
- zum Schluss ggf. </eintrag> einfügen
IF (eken.EQ."</section>" .AND. eintrag.EQ."offen") THEN
WRITE/NEXT/BREAK z "</eintrag>"
SET eintrag = "nicht offen"
ENDIF
IF (SOR) WRITE/BREAK z
WRITE z
ENDLOOP
ENDACCESS/PRINT q
ENDACCESS/PRINT z
ENDCOMPILE
Mehr Informationen über die Mailingliste Tustep-Liste