---- [[tustep:loesungen:tustep_und_xml|Zurück zur Übersichtsseite - TUSTEP und XML]] ---- ====== Vorbemerkung ====== - {{files_open:benutzericons:ms.tru-lg.jpg?nolink&16x16|ms.tru}} 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: \\ \\ {{files_open:daten:dzslides_ms.html|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 [[tustep:loesungen:tustep_und_xml:standard_makros|Bearbeitung von XML mit Standard-Makros]].\\ \\ ====== Eingabehilfen ====== - {{files_open:benutzericons:ms.tru-lg.jpg?nolink&16x16|ms.tru}} 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 [[tustep:loesungen:editormakros|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 [[tustep:loesungen:tustep_und_xml:standard_makros|#*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.:\\ {{files_open:bilder:altt.PNG|altt.PNG}}\\ \\ ====== Tags prüfen ====== - {{files_open:benutzericons:schneider-lastin-lg.jpg?nolink&16x16|Schneider-lastin}} 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:**\\ * **<**tagname**>** oder **<**tagname attribut1=wert1, attribut2=wert2, ...**>** **Ende-Tag:**\\ * **** **Leeres Tag:**\\ * **<**tagname**/>** oder **<**tagname attribut1=wert1, attribut2=wert2, ...**/>** \\ **Bedingungen:**\\ * Die spitzen Klammern dürfen nur als Anfangs- bzw. Endekennung von **Tags**, in **Akzent-Codierungen** (z.B. %<) oder in Codes für **doppelte Anführungszeichen** (z.B. #.< und #.>) vorkommen. Andere spitze Klammern müssen z.B. mit ^< bzw. ^> codiert sein. * Anfangs- und Endekennung eines Tags (also **beide** spitze Klammern) müssen **im selben Satz** stehen. 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.\\ \\ ====== Spezielle Tag- und Klammerprüfungen ====== - {{files_open:benutzericons:ms.tru-lg.jpg?nolink&16x16|ms.tru}} 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,,(),||(1||)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,,(),||(1||)1||[2||]2| überprüft die Schachtelung von . Dabei werden zwei Klammerbereiche unterschieden: derjenige innerhalb von Fußnoten ("|[2||]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 -Tag innerhalb oder außerhalb der Fußnoten, wird eine entsprechende Fehlermeldung bei der Ausführung der o.g. Anweisung ausgegeben. \\ \\ {{files_open:daten:testkl.tf|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: \\ \\ {{files_open:daten:testkl2.tf|testkl2.tf}} [8 KB] \\ \\ tpv,,(),||(1|\*|@@1||)1| überprüft, dass Asterisken (*) nur auf der zweiten Klammerstufe, im betreffenden Fall also unterhalb von "" vorkommen. Wird an anderer Stelle ein "*" eingetragen (z.B. unterhalb von "" oder unterhalb des Wurzelelemens), erhält man eine Fehlermeldung.\\ \\ ====== Taglisten ====== - {{files_open:benutzericons:ms.tru-lg.jpg?nolink&16x16|ms.tru}} 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 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 "^" 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) 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,,,|*| findet sämtliche -Tags in der gesamten Datei unabhängig von ihrer Hierarchiestufe. Mit RETURN kann man sich durch die Treffer navigieren lassen.\\ \\ tl,(5.1,-1),,|*| findet nur diejenigen -Tags, die unmittelbar unterhalb eines -Elements stehen. Gesucht wird ab Datensatz 5.1 bis zum Dateiende.\\ \\ ====== Prüfung illegaler Tagnamen ====== - {{files_open:benutzericons:ms.tru-lg.jpg?nolink&16x16|ms.tru}} 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>...." und "<-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 \\ ---- [[tustep:loesungen:tustep_und_xml|Zurück zur Übersichtsseite - TUSTEP und XML]]