Vorbemerkung: Das TXSTEP-Tag transform bietet einen ähnlichen Funktionsumfang wie das TUSTEP-Kommando #kopiere. Mit transform können Dateien unverändert kopiert oder aber beim Kopieren die Daten (mittels Parametern) auf vielfältige Art analysiert, ausgewertet, modifizert, ergänzt oder extrahiert werden.
Zurück zum Inhaltsverzeichnis - Lösungen und Tipps
- [tomcbe | tomcbe]
1. Datei wird unverändert kopiert, die Satznummern bleiben erhalten.
<?xml version="1.0" encoding="UTF-8"?> <script xmlns="http://www.xstep.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <variables> <!-- Definition einer Variablen als execution-file. Darin werden die TUSTEP-Kommandos vor der Ausführung gespeichert. --> <variable type="execution-file" name="exec">file:///C:/txstep/exec.tu</variable> <!-- Definition der TXSTEP-Variablen "source", die auf die Ursprungsdatei verweist. --> <variable type="permanent-file" name="source">file:///C:/txstep/quelle.tf</variable> <!-- Definition der TXSTEP-Variablen "dest", die auf die Zieldatei verweist (diese wird gleich angelegt bzw. zuerst gelöscht, falls sie schon existiert). --> <variable type="permanent-file" name="dest" option="erase">file:///C:/txstep/ziel.tf</variable> </variables> <!-- Kopieren der Daten in "source" nach "dest", mode="-" bedeutet, dass die Sätze beim Kopieren nicht neu nummeriert werden. --> <transform source="$source" destination="$dest" mode="-"></transform> </script>
2. Datei wird beim Kopieren neu durchnummeriert
Dafür muss nur die Angabe beim Attribut mode geändert werden: + bedeutet, dass die Sätze neu nummeriert werden.
<transform source="$source" destination="$dest" mode="+"></transform>
- [tomcbe | tomcbe]]
Musterdatei:
psalm.tf [350 KB]
1. Aus der Datei 'psalm.tf' (= der gesamte Psalter) werden diejenigen Sätze (= Verse) kopiert, die eine bestimmte Zeichenfolge enthalten.
a. die Zeichenfolge „silber“
Transform arbeitet – wie #kopiere übrigens auch – in mehreren Durchgängen (pass in TXSTEP). Innerhalb eines solchen Durchgangs können mit dem Tag examine-text verschiedene Bedingungen definiert werden, wann ein Textteil für die Weiterverabeitung ausgewählt wird und wann nicht. In diesem Fall reicht die Angabe von select mit entsprechender Bedingung text-contains.
<script xmlns="http://www.xstep.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <variables> <!-- Definition einer Variablen als execution-file. Darin werden die TUSTEP-Kommandos vor der Ausführung gespeichert. --> <variable type="execution-file" name="exec">file:///C:/txstep/exec.tu</variable> <!-- Definition der TXSTEP-Variablen "source", die auf die Ursprungsdatei verweist. --> <variable type="permanent-file" name="source">file:///C:/txstep/psalm.tf</variable> <!-- Definition der TXSTEP-Variablen "dest", die auf die Zieldatei verweist (diese wird gleich angelegt bzw. zuerst gelöscht, falls sie schon existiert). --> <variable type="permanent-file" name="dest" option="erase">file:///C:/txstep/psalmziel.tf</variable> </variables> <!-- Kopieren der Daten in "source" nach "dest", mode="-" bedeutet, dass die Sätze beim Kopieren nicht neu nummeriert werden. --> <transform source="$source" destination="$dest" mode="-"> <pass> <examine-text> <select> <text-contains> <search-table><search-string>silber</search-string></search-table> </text-contains> </select> </examine-text> </pass> </transform> </script>
b. die Zeichenfolgen „silber“ ODER „gold“, aber nicht „golden“
Innerhalb der Suchtabelle (search-table) können nicht nur Suchzeichenfolgen (search-string), sondern auch Ausnahmezeichenfolgen (exception-string) angegeben werden. exception-strings müssen vor den search-strings definiert werden. Der Ausdruck „golden“ muss als exception-string der Suchtabelle hinzugefügt werden.
<select> <text-contains> <search-table> <exception-string>golden</exception-string> <search-string>silber</search-string> <search-string>gold</search-string> </search-table> </text-contains> </select>
c. die Wörter „Silber“ ODER „Gold“ (aber keine Zusammensetzungen, z.B. „Goldschmuck“)
Analog zu b. werden hier zwei exception-strings verwendet. \G bzw. \S steht für den jeweiligen Grossbuchstaben, {\a} für einen beliebigen Kleinbuchstaben. \g und \s würden für die jeweiligen Kleinbuchstaben stehen.
<select> <text-contains> <search-table> <exception-string>\Silber{\a}</exception-string> <exception-string>\Gold{\a}</exception-string> <search-string>\Silber</search-string> <search-string>\Gold</search-string> </search-table> </text-contains> </select>
2. Aus der Datei 'psalm.tf' werden diejenigen Abschnitte (= Psalmen) kopiert, die die Zeichenfolge „silber“ enthalten
Hierzu kann vor dem ersten pass mit dem Tag define-text-units definiert werden, welche Zeichenfolgen den Anfang bzw. das Ende einer Texteinheit markieren. Diese Texteinheiten werden als ganzes weiterverabeitet.
<transform source="$source" destination="$dest" mode="-"> <define-text-units> <text-unit-start> <comparison-table> <!-- < und > müssen in TXSTEP mit {{ resp. }} codiert werden. --> <comparison-string>{{psalm}}</comparison-string> </comparison-table> </text-unit-start> </define-text-units> <pass> <examine-text> <select> <text-contains> <search-table><search-string>silber</search-string></search-table> </text-contains> </select> </examine-text> </pass> </transform>