Tipps und Tricks bei der XML-Verarbeitung mit TUSTEP

Tipps und Tricks bei der XML-Verarbeitung mit TUSTEP
Weingarten, 7. Januar 2017

Gliederung

  1. Eingabe von XML-Daten
    1. Punktmakros
    2. Syntax-Highlighting
  2. Prüfung von XML-Daten
    1. halbautomatische Kontrolle von Markup durch Extraktion
  3. Verarbeitung von XML-Daten
    1. #*TAGS
    2. #*XMLATTSOR
    3. #*TADE

Eingabe von XML-Daten

ALT + E
ALT + A
ALT + G
ALT + V
ALT + R
ALT + T

Punktmakros

Y,string.=definition
Ausführung: ALT + P

Y,TEI.=BEG_REC,INS:"<?xml version='1.0' encoding='UTF-8'?>",
SPLIT, [...]
 "<TEI xmlns='http://www.tei-c.org/ns/1.0'>",SPLIT,
 " <teiHeader>",SPLIT,
 " <fileDesc>",SPLIT,
 " <titleStmt>",SPLIT,
 " <title>Title</title>",SPLIT,
 " </titleStmt>",SPLIT,
 " <publicationStmt>",SPLIT,
 " <p>Publication Information</p>",SPLIT,
 " </publicationStmt>",SPLIT,
 " <sourceDesc>",SPLIT,
 " <p>Information about the source</p>",SPLIT,
 " </sourceDesc>",SPLIT,
 " </fileDesc>",SPLIT,
 " </teiHeader>",SPLIT,
 " <text>",SPLIT, " <body>",SPLIT,
 " <p>Some text here.</p>",SPLIT,
 " </body>",SPLIT,
 " </text>",SPLIT,"</TEI>",SPLIT

Syntax-Highlighting

STRG+F
C8,1=1B:|<{0}/{00}{c:tz}>|
C8,2=74:|<{00}{c:tz}/>|
C1,= XML-Syntax-Hightlighting
C1,1=7F:|<{00}{C:tz}>|
C1,2=B0:|<{0}/h?>|
C1,3=0F:|<{0}/p>|
C1,4=F0:|<{00}{C:tz}/>|
C1,5=1B:|<!--{00}{C:tz}-->|
C1,6=8B:|<{0}/fn>|

Prüfung von XML-Daten

TPV bzw. TPR
tpv,ber,mds

Hier steht Einleitungstext fur ein Codesnippet:
<code>XX |<quote>|<quotation>|</code>

tpv,,(),|<code>|(1|</code>|)1|

TP

tl,ber,mds,pfad
tl,(+1,-1),+,|*<note>|

tlh,ber,mds,pfad

tli,ber,mds,pfad

Element names are case-sensitive
Element names must start with a letter or underscore
Element names cannot start with the letters xml (or XML, 
or Xml, etc)
Element names can contain letters, digits, hyphens, 
underscores, and periods
Element names cannot contain spaces

<1s>...</1s>
<xml>...</xml>

<TEI>...</tei>

tpn=rtab
tpn= [löscht die Definitionen]
Bsp:
tpn=|%1|-2|

tpl=rtab
tsl=rtab
tpl= [löscht die Definitionen]
tsl= [löscht die Definitionen]

Textbsp.<-44>Textbsp.
tpn=|-44|
tpl=|-44|

#an,vomkriegesil.tf
#rv,vomkriegesil.tf,-std-,mo=-,lo=+,pa=*
 * die mit <zsf> ... </zsf> markierten Textteile
 isolieren und zum Sortieren vorbereiten:
ea |<zsf>|
ee |</zsf>|
 * Sortierschlüssel mit der Lange 50 erstellen:
ssl 50
*eof
#- Hier wird die Kontrolldatei alphabetisch sortiert
#- und der Sortierschlüssel getilgt:
#so,-std-,-std-,so=1-50,ti=1-50,lo=+
#da,kontroll.tf,seq-ap
#- aufeinanderfolgende identische Datensätze zusammenfassen
#ra, -std-, kontroll.tf, mo=-, lo=+, pa=*, pr=-
ssl 0
*eof
#- Aufruf der Kontrolldatei zur Sichtkontrolle
#e,kontroll.tf 

#rv,vortrag_rtf.tf,-std-,mo=-,lo=+,pa=*
 * die mit <zsf> ... </zsf> markierten Textteile
 isolieren und zum Sortieren vorbereiten:
ea |<h{\0}>|
ee |</h{\0}>|
 * kein Sortierschlüssel notwendig:
ssl 0
*eof
#DA,k1,FR=-
#KO,-std-,k1,+,+
#E,k1

#*TAGS

#DA,zieltags.tf,seq-ap
#DA,zieltags2.tf,seq-ap
#DA,reihenfolge.tf,seq-ap
#DA,hierarchie.tf,seq-ap
#DA,protokoll.tf,seq-ap
#*TAGS,QU=adressbook.tf,ZI=zieltags.tf'zieltags2.tf,LO=+,
PR=protokoll.tf,REIH=reihenfolge.tf,HI=hierarchie.tf 

abb 999999
maz 1 0
 hierarchische Tags:
mah <addressBook>
- 1
mah .<card>&Eintrag&{
- 2
mah ..<name>$$$#f+
- 3
mah ..</name>#f-
- 4
mah ..<email>$$$E-mail:_
- 5
mah ..</email>
- 6
mah ..<phone>$$$Phone:_
- 8
mah ..</phone>
- 9 [...]

#DE,,*
quelle = adressbook.tf
psdatei = satz.ps
ziel = satzziel.7
*EOF
#DA,<ziel>'tmp.1's.6's.9,FR=-
#DA,<psdatei>,FDF-AP
#- notwendiges Pre-processing
#KO,<quelle>,tmp.1,,+,PA=*
X |<\?xml*>||
X |@|^@|
*EOF
#SATZ,quelle=tmp.1,ziel=<ziel>,ausgabe=s.6,modus=t,
  loeschen=+,prot=s.9'protf,par=zieltags.tf
#*psaus,quelle=s.6,datei=<PSDATEI>,lo=+ 

<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="adress_book.rng" type="application/xml" 
   schematypens="http://relaxng.org/ns/structure/1.0"?>
<addressBook>
 <addressBook/card>
 <addressBook/card/name>John Smith</addressBook/card/name>
 <addressBook/card/email>js@example.com
     </addressBook/card/email>
 </addressBook/card>
 <addressBook/card>
 <addressBook/card/name>Fred Bloggs</addressBook/card/name>
 <addressBook/card/email>fb@example.net
     </addressBook/card/email>
 </addressBook/card> 

#*XMLATTSOR

#DE,,*
quelle = bsp_attr.tf
ziel = sortziel.tf
*EOF
#DA,<ziel>,SEQ-AP
#*XMLATTSOR,QU=<quelle>,ZI=<ziel>,LO=+,REIH=alpha 

  alternativ in TUSCRIPT:
SORT_ATTRIBUTES (tag, namen)

#*TADE

#INF,TADE

#*TADE,quelle,ziel,nummer,loeschen

#DA,t1_def.tf,SEQ-AP

#*TADE,DA=b1_tei.tf,ZI=t1_def.tf,N=1,LO=+

T1,persName=?ref;/*<author>/*<editor>/

T1,persName=?ref,?n,?xml:id;/*<author>/*<editor>/

#E,DE=definitionsdatei

 

Y,G=SELECT_TAG

Y,M_RP=SAVE_CUR,MRK_INI,MRK_CHG:0B
Y,M_RR=MRK_DEL_REP,REST_CUR,TXT_CHG:TFT,SELECT_TAG,
TXT_CHG:0B,MRK_INS,TXT_CHG:TFT,ADD_END_TAG

Vielen Dank für Ihre Aufmerksamkeit.