TemplateParserUnit
Gruppe |
|
Funktion |
Erzeugt eine Textdatei aus einer Template-Textdatei mit Platzhaltern, die mit Daten aus der Zielstruktur ersetzt werden. |
Beschreibung
Diese Integration Unit erzeugt eine Textdatei aus einer Template-Textdatei mit Platzhaltern, die mit Daten aus der Zielstruktur ersetzt werden.
Werden für einen Platzhalter keine Daten gefunden, dann wird er mit einem Leerstring ersetzt.
Das Encoding des Antwortwegs muss auf ISO-8859-1 gesetzt werden.
Parameterbeschreibung
Parametername |
Erlaubte Werte |
Default-Wert |
Beschreibung |
Use format-field |
true, false |
false |
Veraltete Einstellung. Bitte immer auf false lassen. |
create CDDATA for xml |
true, false |
false |
Wenn true, dann wird der Text beim Ersetzen von Platzhaltern mit einem XML-CDATA-Block umschlossen. |
end tag |
|
--} |
Das End-Tag von Platzhaltern. |
output-file-encoding |
|
8859_1 |
Das Encoding der erzeugten Datei. Wichtiger Hinweis: Das Encoding des Antwortwegs muss dennoch auf ISO-8859-1 gesetzt werden, egal was hier gesetzt wird. |
start tag |
|
{-- |
Das Start-Tag von Platzhaltern. |
template file encoding |
|
8859_1 |
Das Encoding, mit dem die Template-Datei gelesen wird. |
template-file |
|
|
Der Pfad zur Template-Datei. |
Einfache Platzhalter
Gegeben sei folgende Template-Datei. Der Platzhalter {--name--} wird ersetzt mit dem Wert des Zielstruktur-Feldes name.
{--<Platzhaltername=Zielstrukturfeldname>--}
Meine Name ist {--name--}.
Mehrdimensionale Daten
Wie Sie wissen, können sich Felder in mehrdimensionalen Datenstrukturen befinden. D. h. die Zielstruktur kann mehrere Datenblätter (Records) haben, siehe (1), und auch der Knoten, in dem ein Feld vorkommt, kann mehrfach auftreten (Iterationen), siehe (2).
Herausgreifen bestimmter Werte
Wenn Sie einen Platzhalter wie oben angeben, dann werden solche mehrdimensionalen Datenstrukturen schlicht ignoriert und es wird für die Ersetzung des Platzhalters schlicht der Feld-Wert des ersten Records und der ersten Iteration verwendet, hier im Beispiel also der Wert Peter.
Allerdings ist es auch möglich, bestimmte Werte in solche einer mehrdimensionalen Datenstrukturen zu adressieren, siehe folgendes Template. Der erste Index bezieht sich auf die Datenblätter (Records) und der zweite auf die Iterationen. Beide Indices beginnen bei 0.
{--<Platzhaltername=Zielstrukturfeldname>:<Datenblattnummer>|<Iterationsnummer>--}
Meine Name ist {--name:0|1--}.
Mein Name ist Michael.
Auflisten aller Werte
Um alle Werte einer mehrdimensionalen Datenstruktur auszugeben, muss mit einem Loop-Block gearbeitet werden.
{--LOOP|<loopname>:<start>:<end>:<step>--}
{--/LOOP|<loopname>--}
Die Parameter haben dabei folgende Bedeutung.
loopname |
Frei vergebener Name des Loops (der Schleife). |
start |
Startwert des Schleifen-Zählers. Geben Sie hier immer 0 an. |
end |
Endwert des Schleifen-Zählers. Statt eines expliziten Wertes kann hier referenziert werden auf die Größe der mehrdimensionalen Datenstruktur. Wenn Sie als Endwert des Schleifen-Zählers die Anzahl der vorkommenden Namen (im ersten Datenblatt) verwenden möchten, dann geben Sie den Wert {name|0} an. Siehe auch Beispiel weiter unten. Die Schleife läuft dann so oft durch, wie es Namen in der mehrdimensionalen Datenstruktur gibt. |
step |
Zahl, um die der Schleifen-Zähler nach jedem Durchlauf der Schleife erhöht werden soll. Geben Sie hier immer 1 an. |
Um nun innerhalb der Schleife Platzhalter anzugeben, muss folgendermaßen vorgegangen werden. Im Prinzip wie oben beim Herausgreifen bestimmter Daten aus einer mehrdimensionalen Datenstruktur, aber mit leichter Abwandlung.
{--LOOP|<loopname>:<start>:<end>:<step>--}
{--<Platzhaltername=Zielstrukturfeldname>:<Datenblattnummer>|<Iterationsnummer>--}
{--/LOOP|<loopname>--}
Wir verwenden hier den Platzhalter {--name:0|myloop--}. Unsere Schleife wird so oft durchlaufen, wie es Namen in der mehrdimensionalen Datenstruktur im ersten Datenblatt gibt. Und in jedem Durchlauf geben wir den Namen des ersten Datenblatts (der Index startet bei 0, wie wir uns erinnern) und der Iterationsnummer, die dem aktuellen Wert des Schleifenzähler entspricht, aus.
{--LOOP|myloop:0:{name|0}:1--}
{--name:0|myloop--}
{--/LOOP|myloop--}
Peter
Michael
Doris
Check-Blocks
Die Ausgabe von Text kann abhängig gemacht werden von dem Vorhandensein oder Nichtvorhandensein von Werten eines bestimmten Zielstrukturfeldes. Dafür werden Check-Blocks verwendet.
{--CHECK|<blockname>:<checktype>|<reference>--}
Bedingter Text.
{--/CHECK|<blockname>--}
Die Parameter haben dabei folgende Bedeutung.
blockname |
Beliebiger Name des Check-Blocks. |
checktype |
exist - Der angegebene Text wird ausgegeben, falls das angegebene Zielstrukturfeld (siehe reference) vorhanden ist im Zielbaum. nonexist - Der angegebene Text wird ausgegeben, falls das angegebene Zielstrukturfeld (siehe reference) nicht vorhanden ist im Zielbaum. empty - Der angegebene Text wird ausgegeben, falls das angegebene Zielstrukturfeld (siehe reference) vorhanden ist im Zielbaum und leer ist (Länge = 0). nonempty - Der angegebene Text wird ausgegeben, falls das angegebene Zielstrukturfeld (siehe reference) vorhanden ist im Zielbaum und nicht leer ist (Länge > 0, Leerzeichen zählen). blank - Der angegebene Text wird ausgegeben, falls das angegebene Zielstrukturfeld (siehe reference) vorhanden ist im Zielbaum und leer ist (Länge = 0) oder ausschließlich aus Leerzeichen besteht. nonblank - Der angegebene Text wird ausgegeben, falls das angegebene Zielstrukturfeld (siehe reference) vorhanden ist im Zielbaum und nicht leer ist (Länge > 0) und nicht ausschließlich aus Leerzeichen besteht. |
reference |
Das zu überprüfende Zielstrukturfeld. |
{--CHECK|myblock:exist|name--}
Es sind Namen vorhanden.
{--/CHECK|myblock--}
Es sind Namen vorhanden.