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
Kopieren einer Datei ohne Veränderung der Daten
- [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>
Kopieren einzelner Texteinheiten nach Bedingungen
- [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>
