txt.xslt Hilfsvorlagen zur Ausgabe und Verarbeitung von Text 2012-01-01 Herbert Schiemann h.schiemann@herbaer.de Das Wurzelelement für Text-Vorlagen Die Zeichenfolge, die einen Zeilenwechsel kodiert Zeichen, die in einem üblichen Programmiersprachen-Namen erlaubt sind Wiederholt einen Text Richtet einen Text in einem Feld aus. Auch wenn der Text länger ist als das Feld, wird der gesamte Text ausgegeben. Ersetzt Zeichenfolgen, die nicht durch ein nachfolgendes besonderes Zeichen geschützt sind (backward protection) Ersetzt Teilzeichenfolgen global nach Vorgabe einer Liste: Der erste Listeneintrag wird durch den zweiten ersetzt, der dritte durch den vierten usw. Wenn die Anzahl der Listeneinträge ungerade ist, wird der letzte Listeneintrag durch die leere Zeichenkette ersetzt. Ersetzt einzelne Zeichen durch Einträge in einer Liste, entfernt "überzählige" Zeichen Entfernt Leerzeichen um bestimmte Zeichen herum , # Zerlegt einen Text an Trennzeichenfolgen und ruft für jeden Textabschnitt die Vorlage für das Element elem im Modus txt.apply mit den folgenden Parametern auf: txt Der Textabschnitt, eine Teilzeichenkette des zu zerlegenden Textes, die durch die Trennzeichenfolge begrenzt wird. Die Trennzeichenfolge selbst ist ausgenommen. lnr Eine laufende Nummer, beginnend mit 1. par Der Parameter par wird "durchgereicht". last Beim letzten Textabschnitt der Wert 1, sonst nicht definiert. prev Der vorhergehende Listeneintrag Teilzeichenkette bis zu dem letzten Begrenzungszeichen einschließlich. Wenn die Zeichenkette kein Begrenzungszeichen enthält, dann ist das Ergebnis leer. Teilzeichenkette nach dem letzten Begrenzungszeichen. Wenn die Zeichenkette kein Begrenzungszeichen enthält, dann ist das Ergebnis die ganze Zeichenkette. Die letzten Zeichen werden entfernt, sofern sie zu den Begrenzungszeichen gehören. Die ersten Zeichen werden entfernt, sofern sie zu den Begrenzungszeichen gehören. Teilzeichenkette bis zum ersten Begrenzungszeichen einschließlich. Wenn die Zeichenkette kein Begrenzungszeichen enthält, dann ist das Ergebnis die ganze Zeichenkette. Teilzeichenkette bis zum ersten Begrenzungszeichen ausschließlich. Wenn die Zeichenkette kein Begrenzungszeichen enthält, dann ist das Ergebnis die ganze Zeichenkette. Teilzeichenkette der ersten Zeichen, die in der Liste der "erlaubten" Zeichen vorkommen. Das erste Zeichen, das nicht in der Liste enthalten ist, ist ausgenommen. Die Rest-Zeichenfolge nach dem letzen Vorkommen der Such-Zeichenkette oder die gesamte Zeichenkette, wenn die Such-Zeichenkette nicht gefunden wird. Ein Text ist in "Wörter" und "Nichtwörter" zu zerlegen. Alle Zeichen werden einzeln verarbeitet. Die Vorlage ruft sich dazu rekursiv selbst auf. Sie ist dabei in einem von zwei Zuständen: Im ersten Zustand (Anfangszustand) wird jedes Zeichen, das kein "Einleitungszeichen" ist, an die bisher gelesene Komponente (Nichtwort) angehängt. Sobald ein "Einleitungszeichen" gefunden wird, endet das aktuelle Wort. Das Einleitungszeichen gehört zum folgenden Wort. Der Zustand wechselt. Im zweiten Zustand wird jedes "Wortzeichen" an das gelesene Wort angehängt. Das erste Zeichen, das kein "Wortzeichen" ist, gehört zum folgenden "Nichtwort". Der Zustand wechselt. Das letzte Wort oder Nichtwort endet mit der Zeichenkette. Für jedes nicht-leere Wort wird die auf wordelem passende Vorlage aufgerufen, für jedes nicht-leere Nichtwort die auf nonwordelem passende Vorlage. Die beiden Zustände sind als zwei verschiedene Vorlagen implementiert. Die Vorlagen für wordelem und nonwordelem werden im Modus txt.apply mit den folgenden Parametern aufgerufen: txt par lnr last Der Parameter last ist nur beim letzten "Wort" oder "Nichtwort" mit dem Wert 1 definiert. Der "Wortmodus" des Wortzerlegers Ersetzt alle Zeichen außer Buchstaben, Ziffern und dem Zeichen "/" (Sonderzeichen) durch Leerzeichen, ersetzt Folgen unmittelbar aufeinander folgender Leerzeichen durch das Zeichen "_" und das Zeichen "/" durch "." Die Teilzeichenkette vor der Trennzeichenfolge oder die ganze Zeichenfolge, wenn sie die Trennzeichenfolge nicht enthält. Die beiden Vorlagen txt.firstentry und txt.remaininglist erlauben zusammen eine einfache Verarbeitung von Listen. Die Teilzeichenkette nach der Trennzeichenfolge oder die leere Zeichenfolge, wenn sie die Trennzeichenfolge nicht enthält. Zusammen mit der Vorlage txt.firstentry erlaubt diese Vorlage eine einfache Verarbeitung von Listen. Zerlegt einen Text in Abschnitte (Zeilen) einer maximalen Größe, die mit mit einem geeigneten Trennzeichen enden. Für jeden Textabschnitt ruft sie eine Vorlage auf. Der Modus txt.apply bezeichnet Vorlagen, die von "Iteratoren" benutzt werden. Ihnen werden die folgenden Parameter übergeben: txt Das aktuelle "Iterator-Wort" lnr Die lfd. Nummer der Iterator-Position, beginnend mit 1 par Ein Parameter, der dem Iterator übergeben ist und den dieser weitergibt. last Wenn dieser Parameter definiert ist und nicht leer und nicht Null ist, dann ist der Aufruf der letzte des Iterators. Selbstpassende Vorlage, rückt Folgezeilen ein Selbstpassende Vorlage, zählt einen Wert auf: "[lnr]. [txt]\n" Der Dateiname aus einem Dateipfad: die Teilzeichenkette nach dem letzten Schrägstrich oder umgekehrten Schrägstrich Der Basis-Dateiname aus einem Dateipfad: die Buchstaben, Ziffern und Unterstriche nach dem letzten Schrägstrich oder umgekehrten Schrägstrich Die Einträge der ersten Liste, die auch in der zweiten Liste vorkommen, in der Reihenfolge der ersten Liste. "Private" Vorlage zur Implementation der Vorlage txt.listitersect