Zurück zur Übersichtsseite - TUSTEP und XML
- ms.tru
Im Rahmen des TUSTEP-Workshops in Weingarten im Januar 2017 wurden einige „Tipps und Tricks“ für die Be- und Verarbeitung von XML im TUSTEP-Editor und mit Standard-Makros von M. Schneider vorgestellt. Eine Übersicht über die vorgestellten Funktionen findet sich in den nachfolgenden Folien:
dzslides_ms.html [23 KB]
Hinweis zu Bedienung: Nachdem Sie in das iframe geklickt haben, das die Folien enthält, können Sie mithilfe der Pfeiltasten durch die Slides navigieren.
Die Erläuterungen zu den Funktionen finden sich im Folgenden und unter Bearbeitung von XML mit Standard-Makros.
- ms.tru
Die nachfolgend erläuterten Tastenkombinationen stehen für Shortcuts, die von TUSTEP per default belegt sind und Steuerbefehle umsetzen (vgl. im Handbuch die Abschnitte „Editor/Tastenkombinationen (Auswahl)“ und „Editor/Steuerbefehle im Editor“). In Letzterem werden die von den Tastenkombinationen aufgerufenen Steuerbefehle erläutert, die zusammen mit einer Vielzahl weiterer Steuerbefehle vom Benutzer auf eigene Tastenkombinationen gelegt oder in Editormakros integriert werden können.
Werden XML-Daten manuell erstellt (z.B. zur Vorbereitung einer Satzausgabe) oder bearbeitet, stehen im Editor Eingabehilfen zur Verfügung, um den Tippaufwand und manuelle Fehlereingaben zu reduzieren:
ALT+A ALT+E
ergänzen an der aktuellen Cursorposition ein Ende- bzw. Anfangstag passend zum gerade geöffneten bzw. geschlossenen Tag. Bei ALT+E werden optionale Attribute nicht dupliziert, sondern nur der Tagnamen ausgegeben.
ALT+G
gibt eine Liste der Tags aus, die an der Cursorposition innerhalb der Taghierarchie erlaubt sind, sofern der Cursor außerhalb eines Tags steht.
Steht der Cursor innerhalb eines Tags, wird die Liste der für dieses Tag erlaubten Attribute ausgegeben. Voraussetzung hierfür ist die Definition einer erlaubten XML-Hierarchie, z.B. mithilfe des Standardmakros #*TADE.
Die Funktionen
ALT+V ALT+R
suchen von der aktuellen Cursorposition aus zum Dateiende (Vorwärts) bzw. zum Dateianfang (Rückwärts) nach einem Ende- bzw. Anfangstag, das innerhalb der durchsuchten Daten über kein korrespondierendes Anfangs- bzw. Endetag verfügt, also nach unpaarigen Tags, und zeigen den betreffenden Satz an.
ALT+T
prüft vom Dateianfang her bis zur Cursorposition die Tags und zeigt die an der Cursorposition geöffneten Tags inklusive der jeweiligen Anzahl an, z.B.:
- schneider-lastin
Vorbemerkung: Mit den folgenden Anweisungen wird die Paarigkeit von Tags in einem Text geprüft.
Ein Tag ist eine in spitzen Klammern eingeschlossene Zeichenfolge. Es gibt Anfangs-Tags, Ende-Tags und leere Tags.
Anfangs-Tag:
Ende-Tag:
Leeres Tag:
Bedingungen:
tpv Tag-Prüfung vorwärts in der gesamten Datei tp Abkürzung für tp tpv,pos Tag-Prüfung vorwärts ab der angegebenen Position bis Dateiende tpv,ber Tag-Prüfung vorwärts im angegebenen Bereich, z.B. tpv,(3.1,5.999) tpr Tag-Prüfung rückwärts in der gesamten Datei tpr,pos Tag-Prüfung rückwärts ab der angegebenen Position bis Dateianfang tpr,ber Tag-Prüfung rückwärts im angegebenen Bereich, z.B. tpv,(3.1,5.999)
→ Leere Tags werden bei der Prüfung übergangen.
- ms.tru
Neben der standardmäßigen Überprüfung von allen XML-Tags in einer Datei können die Anweisungen TPV und TPR auch genutzt werden, um a) nur bestimmte Tags bzw. Taghierarchien (Schachtelungen) zu überprüfen oder b) andere „Klammerstrukturen“, z.B. die Paarigkeit von #/+…#/- oder die korrekte, paarige Schachtelung runder und eckiger Klammern, zu überprüfen.
Die unter a) beschriebene Möglichkeit bietet sich insbesondere an bei der schrittweisen Herstellung von wohlgeformtem XML, etwa im Rahmen einer Retrodigitalisierung oder im Rahmen einer Datenkonvertierung. In diesen Fällen können die bereits eingefügten XML-Tags auf ihre Paarigkeit hin überprüft werden, ohne dass Fehlermeldungen aus anderen, noch nicht bearbeiteten Tagstrukturen erwachsen.
Die Anweisung
tpv,,(),|<code>|(1|</code>|)1|
prüft beispielsweise, ob die Tags
und
korrekt geschachtelt sind.
Zwischen den ersten beiden Kommata kann in runden Klammern ein Bereich angegeben werden, falls die Überprüfung auf bestimmte Datensätze beschränkt werden soll. Das Klammerpaar „()“ zeigt an, dass TPV in der 'erweiterten' Fassung für Klammerprüfungen genutzt werden soll. Die Klammern „(1“ und „)1“ geben an, dass die jeweils vorstehenden Zeichenfolgen „
" bzw. "
“ als öffnende respektive schließende Klammer angesehen werden sollen. Die Zahl gibt die jeweilige Zugehörigkeit an, was dann relevant wird, wenn mehrere Klammerpaare mit einer Anweisung überprüft werden sollen. Wenn Klammern bzw. Tags unterhalb von anderen Tags überprüft werden sollen, kann dies mittels mehrfacher Angabe von runden Klammern kenntlich gemacht werden. „(((1" und ")))1“ zeigen entsprechend an, dass das mit diesen Kennern versehene Klammerpaar nur innerhalb der zweiten, zuvor definierten Klammer stehen darf.
Um verschiedene Klammerbereiche unabhängig voneinander überprüfen zu können, ist die Angabe von eckigen Klammern „[“ bzw. „]“ vorgesehen, um solche Bereiche abzutrennen:
tpv,,(),|<i>|(1|</i>|)1|<fn>|[2|</fn>|]2|
überprüft die Schachtelung von <i>. Dabei werden zwei Klammerbereiche unterschieden: derjenige innerhalb von Fußnoten („<fn>|[2|</fn>|]2|“) und derjenige außerhalb von Fußnoten. In der Beispieldatei testkl.tf findet sich eine entsprechende Schachtelung. Entfernt man ein öffnendes oder schließendes <i>-Tag innerhalb oder außerhalb der Fußnoten, wird eine entsprechende Fehlermeldung bei der Ausführung der o.g. Anweisung ausgegeben.
testkl.tf [2 KB]
Über die beschriebenen Funktionen hinausgehend, besteht die Möglichkeit, dass innerhalb von Klammern auch zu definierende Zeichenfolgen (z.B. Milestones oder Schlagwörter) überprüft werden können. Die zu überprüfenden Zeichenfolgen sind mit „@“ zu kennzeichnen:
testkl2.tf [8 KB]
tpv,,(),|<fn>|(1|\*|@@1|</fn>|)1|
überprüft, dass Asterisken (*) nur auf der zweiten Klammerstufe, im betreffenden Fall also unterhalb von „<fn>“ vorkommen. Wird an anderer Stelle ein „*“ eingetragen (z.B. unterhalb von „<i>“ oder unterhalb des Wurzelelemens), erhält man eine Fehlermeldung.
- ms.tru
Im Editor stehen verschiedene Möglichkeiten zur Verfügung, sich die in einer notwendigerweise korrekt geschachtelten Datei verwendeten Tags ausgeben zu lassen:
tl gibt eine alphabetische Liste aller Tags aus
tlh gibt eine hierarchische Liste aller Tags aus inkl. der übergeordneten Tags bis zum Wurzelelement
tli gibt eine hierarchische Liste aller Tags aus inkl. der übergeordneten Tags bis zum Wurzelelement, ab dem untersten Tag der Hierarchie</code>
Für die genannten Anweisungen stehen jeweils erweiterbare Formulierungen zur Verfügung:
tl,ber,mds,pfad tlh,ber,mds,pfad tli,ber,mds,pfad
Für ber
kann ein Datensatzbereich eingeschränkt werden. Modus („mds“) steuert die Behandlung der XML-Kommentare: Mit „-“ wird bewerkstelligt, dass XML-Kommentare beim Prüfen übergangen werden, während mit einem „+“, die Daten zwischen „^<!–“ und „–^>“ mit überprüft werden. Wird keine Angabe zu mds gemacht, werden „<!–“ und „–>“ wie Anfangs- und Endetags behandelt und damit ebenfalls auf Paarigkeit überprüft.
Mit pfad kann nach einem Tag gesucht werden, das in den Daten an einer bestimmten Stelle der Taghierarchie steht. Hierbei sind drei Arten von Angaben möglich: a) <tagname> für ein Tag mit dem Namen „tagname“, b) <*> für ein Tag mit beliebigem Namen und c) * für null oder beliebig viele Tags mit beliebigem Namen.
tl,,,|*<abbr>|
findet sämtliche <abbr>-Tags in der gesamten Datei unabhängig von ihrer Hierarchiestufe. Mit RETURN kann man sich durch die Treffer navigieren lassen.
tl,(5.1,-1),,|*<note><abbr>|
findet nur diejenigen <abbr>-Tags, die unmittelbar unterhalb eines <note>-Elements stehen. Gesucht wird ab Datensatz 5.1 bis zum Dateiende.
- ms.tru
Möchte man Tags auf ihre Paarigkeit hin überprüfen sowie bei den weiteren Tag-bezogenen Anweisungen (TL, TLH…) mit einbeziehen, die nicht den TUSTEP-Konventionen für Tagnamen entsprechen (s.o.), so kann man die entsprechenden Tagnamen, die als legal angesehen werden sollen, definieren. Die erste nachstehende Definition legt fest, dass „<%1>….</%1>“ und „←2>…</-2>“ bei der Paarigkeitsprüfung wie Tags mit regelkonformen Tagnamen behandelt werden sollen:
tpl=|%1|-2| tpl= löscht die Definitionen
Mit der Anweisung tpl
können leere Tags (=milestones) definiert werden. Sie werden folglich bei der Paarigkeitsprüfung ignoriert. Mit den beiden nachfolgenden Anweisungen wird „<+44>“ zunächst als legaler Tagname und anschließend als Milestone definiert:
tpn=|+44| tpl=|+44| tpl= löscht die Definitionen