Tipps und Tricks bei der XML-Verarbeitung mit TUSTEP
Tipps und Tricks bei der XML-Verarbeitung mit TUSTEP
Tipps und Tricks bei der XML-Verarbeitung mit TUSTEP
Weingarten, 7. Januar 2017
Gliederung
- Eingabe von XML-Daten
- Punktmakros
- Syntax-Highlighting
- Prüfung von XML-Daten
- halbautomatische Kontrolle von Markup durch Extraktion
- Verarbeitung von XML-Daten
- #*TAGS
- #*XMLATTSOR
- #*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.