[Tustep-Liste] Einfügen von tags mit tuscript

Barbara Jockers Barbara.Jockers at uni-wuerzburg.de
Di Jun 16 12:45:57 CEST 2009


Liebe Listenleser,

leider bin ich am Ende meiner (sehr geringen) tuscript-Weisheit  
angekommen. Ausgangspunkt ist eine aus Word importierte Datei, deren  
Tags wenig geschachtelt hintereinander stehen. Jetzt sollen  
hierarchische Tags eingefügt werden. So soll das ganze nachher aussehen:

<?xml version="1.0"?>
<document>
  <buchstabe id="BUCHSTABE">
   <segment no="SEGMENTIDENTIFIKATOR">
    <eintrag>
     <ll></ll>
     <koi type="lat"></koi> <!-- kann fehlen -->
     <bed>
      <ae></ae>
      <gram>
       <w></w>
       <sch></sch> <!-- w und sch können (als Paar) mehrmals auftreten -->
      </gram>
      <lv>
       <koi type="lv"></koi> <!-- kann fehlen -->
       <beleg>
        <bl></bl>
       </beleg> <!-- beleg kann mehrmals auftreten -->
      </lv>
      <li></li>
     </bed> <!-- bed kann mehrmals auftreten -->
    </eintrag> <!-- eintrag kann mehrmals auftreten -->
   </segment> <!-- segment kann mehrmals auftreten -->
  </buchstabe> <!-- buchstabe kann mehrmals auftreten -->
</document>

Die zu bearbeitenden Teildateien haben entweder ein Segment- oder ein  
Buchstabentag. Dieses wird zusammen mit <bed> und <bl> eingefügt  
(s.u.). Außerdem fehlen noch die Tags <eintrag>, <gram>, <lv>. Da  
diese in Abhängigkeit von der Tagumgebung eingesetzt werden müssen,  
brauche ich dafür Bedingungen. (weiter nach dem Makro)

$$ MODE TUSCRIPT
SET quelle = "dprobe_na.xml"
SET buchstabe = "d"
SET segment = "1"
SET status = CREATE ("zwi3", SEQ-T, -std-)
IF (segment .EQ. "-") THEN
  BUILD X_TABLE xx = *
   DATA ,<<body>>,<<buchstabe id="{buchstabe}">>,
   DATA ,<<section>>,,
   DATA ,<<ae>>,<<bed>><<ae>>,
   DATA ,<<beleg>>,<<beleg>><<bl>>,
   DATA ,<</beleg>>,<</bl>><</beleg>>,
   DATA ,<</li>>,<</li>><</bed>>,
   DATA ,<</section>>,,
   DATA ,<</body>>,<</buchstabe>>,
ELSE
  BUILD X_TABLE xx = *
   DATA ,<<body>>,,
   DATA ,<<section>>,<<segment no= "{segment}">>,
   DATA ,<<ae>>,<<bed>><<ae>>,
   DATA ,<<beleg>>,<<beleg>><<bl>>,
   DATA ,<</beleg>>,<</bl>><</beleg>>,
   DATA ,<</li>>,<</li>><</bed>>,
   DATA ,<</section>>,<</segment>>,
   DATA ,<</body>>,,
ENDIF
IF (quelle .EI. "_na.xml") THEN
  ACCESS qdaten: READ/STREAM "zwi2" sq.zq/uq, atag + text + etag, typ, stack
  MODIFY ACCESS qdaten X_TABLE xx
  ACCESS zdaten: WRITE/ERASE/STREAM "zwi3" sz.zz/uz, atag+text+etag, num, stack
  LOOP
   READ/EXIT qdaten
   WRITE/NEXT/CLEAR zdaten
  ENDLOOP
  ENDACCESS qdaten
  ENDACCESS zdaten
RELEASE X_TABLE xx
ENDIF

Wenn ich das Handbuch richtig verstanden habe, kann ich nach "ACCESS  
zdaten" noch ein zweites Modify schalten, bzw. mehrere, wenn man sie  
in Abhängigkeit von Bedingungen setzt. Aber wie muß ich vorgehen, daß  
danach tags eingefügt werden, und zwar an die richtige Stelle?  
Wahrscheinlich braucht man auch loop dafür?

Für Nachhilfe in dieser Angelegenheit wäre ich äußerst dankbar.

Außerdem habe ich noch ein paar kleine Fragen:
Gibt es in Tuscript etwas, was dem #ko-Parameter BLU entspricht? Denn  
die Option NSP für READ gilt ja wohl nur für Fremddateien?
Warum wird die Zieldatei im Programm-Modus numeriert?

In der Hoffnung, daß ich Ihre Geduld nicht zu sehr strapaziere,
mit vielen Grüßen
Barbara Jockers



Mehr Informationen über die Mailingliste Tustep-Liste