Setter
Kurzbeschreibung
Das XML-Element
<Setter>dient dazu, während der Dokumentenerzeugung einen Wert zu erzeugen und unter einem frei wählbaren Namen für die weitere Verarbeitung bereitzustellen.Der erzeugte Wert kann anschließend über das XML-Element
<Variable>an beliebiger Stelle unterhalb des<Setter>innerhalb der Dokumentvorlage verwendet werden.Der
<Setter>erzeugt selbst keine Ausgabe im Dokument.
Einordnung
Bereich: Inhalte
Schwierigkeitsgrad: ⭐⭐⭐☆☆
Vorkenntnisse: Text · Variable
Empfohlener nächster Artikel: If
Zweck
Der <Setter> dient als interne Zwischenablage während der Dokumentenerzeugung.
Er verarbeitet zunächst alle innerhalb des Elements enthaltenen XML-Elemente und speichert das daraus entstehende Ergebnis anschließend unter dem im Attribut Path angegebenen Namen.
Der gespeicherte Wert kann anschließend innerhalb der Dokumentvorlage beliebig oft über das XML-Element <Variable> verwendet werden.
Typische Anwendungsfälle sind:
- Zusammenführen mehrerer Variablen
- Aufbereitung von Daten
- Zwischenspeichern berechneter Werte
- Wiederverwendung komplexer Inhalte
- Verbesserung der Lesbarkeit umfangreicher XML-Strukturen
Syntax
Ein <Setter> besitzt genau ein Attribut.
<Setter Path="MeineVariable">
...
</Setter>Innerhalb des <Setter> können verschiedene XML-Elemente verwendet werden, deren Ergebnisse zu einem gemeinsamen Wert zusammengeführt werden.
Position innerhalb der Dokumentvorlage
Im Gegensatz zu den meisten XML-Elementen zur Dokumentausgabe wird <Setter> nicht innerhalb eines <Content> verwendet.
Das Element befindet sich direkt innerhalb des <Body> und wird dort in der Reihenfolge verarbeitet, in der es im XML-Code definiert ist.
Ein vereinfachtes Beispiel:
<Body>
<Block>
...
</Block>
<Setter Path="BriefAnrede">
...
</Setter>
<Block>
...
</Block>
</Body>Da der <Setter> keinen sichtbaren Dokumentinhalt erzeugt, ist er unabhängig von einem Dokumentblock und dient ausschließlich der Vorbereitung von Daten für die weitere Verarbeitung.
Attribute
| Attribut | Beschreibung |
|---|---|
| Path | Name der internen Variablen, unter der das Ergebnis gespeichert wird. |
Hinweis
Das Attribut
Pathist erforderlich.Über diesen Namen wird der erzeugte Wert gespeichert und später über ein
<Variable>-Element wieder gelesen.
Ablauf der Verarbeitung
Der <Setter> wird beim sequentiellen Durchlaufen des XML-Codes verarbeitet.
Dabei erfolgt die Verarbeitung in mehreren Schritten.
Render-Engine erreicht den Setter
│
▼
Alle enthaltenen XML-Elemente werden verarbeitet
│
▼
Die einzelnen Ergebnisse werden zu einem Wert zusammengeführt
│
▼
Der fertige Wert wird unter dem angegebenen Path gespeichert
│
▼
Der Wert kann anschließend über <Variable> ausgegeben werdenErst nachdem dieser Ablauf abgeschlossen wurde, steht der erzeugte Wert innerhalb der Dokumentvorlage zur Verfügung.
XML-Wissen
Obwohl sich der
<Setter>innerhalb des<Body>befindet, erzeugt er keinen sichtbaren Dokumentinhalt.Er dient ausschließlich der Verarbeitung und Vorbereitung von Daten während der Dokumenterzeugung. Aus diesem Grund wird der
<Setter>direkt unterhalb des<Body>und nicht innerhalb eines<Content>definiert.
Praxisbeispiel
Im folgenden Beispiel wird eine Versicherungsnummer mit Leerzeichen formatiert.
<Setter Path="MeineVar1">
<Variable Path="source.e_kvnr">
<Index>1</Index>
<Length>1</Length>
</Variable>
<Text Content=" " />
<Variable Path="source.e_kvnr">
<Index>2</Index>
<Length>1</Length>
</Variable>
<Text Content=" " />
<Variable Path="source.e_kvnr">
<Index>3</Index>
<Length>1</Length>
</Variable>
<Text Content=" " />
</Setter>Während der Verarbeitung werden zunächst sämtliche XML-Elemente innerhalb des <Setter> ausgewertet.
Der daraus entstehende Text wird anschließend unter dem Namen MeineVar1 gespeichert.
Die Ausgabe erfolgt anschließend beispielsweise über:
<Variable Path="MeineVar1">
</Variable>Reihenfolge der Verarbeitung
Da der XML-Code von oben nach unten verarbeitet wird, ist die Position des <Setter> innerhalb des <Body> entscheidend.
Ein mit <Setter> erzeugter Wert kann erst verwendet werden, nachdem der <Setter> verarbeitet wurde.
<Setter Path="Anrede">
...
</Setter>
<Variable Path="Anrede">
</Variable>funktioniert.
Die umgekehrte Reihenfolge dagegen nicht.
<Variable Path="Anrede">
</Variable>
<Setter Path="Anrede">
...
</Setter>In diesem Fall existiert die Variable zum Zeitpunkt der Ausgabe noch nicht.
Wichtig
Soll ein mit
<Setter>erzeugter Wert mehrfach verwendet werden, sollte der<Setter>möglichst vor der ersten Verwendung innerhalb der Dokumentvorlage definiert werden.
Unterelemente
Ein <Setter> kann verschiedene XML-Elemente enthalten.
Typische Beispiele sind:
<Text><Variable><If><Case>- weitere XML-Elemente, die einen Wert erzeugen
Alle enthaltenen XML-Elemente werden vollständig verarbeitet, bevor das Ergebnis gespeichert wird.
Dadurch können auch komplexe Inhalte aus mehreren XML-Elementen aufgebaut und anschließend als eine gemeinsame Variable weiterverwendet werden.
Typische Kombinationen
Der <Setter> wird häufig gemeinsam mit folgenden XML-Elementen verwendet.
| XML-Element | Typischer Einsatzzweck |
|---|---|
| Variable | Ausgabe des gespeicherten Wertes |
| Text | Aufbau statischer Textbestandteile |
| If | Bedingtes Erzeugen eines Wertes |
| Case | Unterschiedliche Inhalte abhängig von einem Wert |
| Math | Berechnung numerischer Werte |
| DateAdd | Berechnung neuer Datumswerte |
Hinweise
Der <Setter> erzeugt selbst keine Ausgabe innerhalb des Dokuments.
Er dient ausschließlich dazu, einen Wert für die spätere Verwendung bereitzustellen.
Dadurch können komplexe XML-Ausdrücke an einer Stelle aufgebaut und anschließend beliebig oft innerhalb der Dokumentvorlage verwendet werden.
Dies erhöht sowohl die Übersichtlichkeit als auch die Wartbarkeit umfangreicher Dokumentvorlagen.
Best Practices
- Definieren Sie
<Setter>möglichst vor der ersten Verwendung. - Platzieren Sie
<Setter>möglichst früh innerhalb des<Body>, sofern der erzeugte Wert an mehreren Stellen der Dokumentvorlage verwendet werden soll. - Verwenden Sie sprechende Namen im Attribut
Path. - Nutzen Sie
<Setter>, um wiederkehrende oder komplexe Berechnungen nur einmal durchzuführen. - Verwenden Sie
<Variable>ausschließlich zur Ausgabe bereits vorbereiteter Werte. - Lagern Sie umfangreiche Logiken in einen
<Setter>aus, um die Lesbarkeit der Dokumentvorlage zu erhöhen.
Technischer Hinweis
Während der Dokumentenerzeugung verarbeitet die Render-Engine zunächst sämtliche innerhalb des <Setter> enthaltenen XML-Elemente.
Die Ergebnisse werden zu einem gemeinsamen Wert zusammengeführt und anschließend unter dem im Attribut Path angegebenen Namen gespeichert.
Ab diesem Zeitpunkt steht der erzeugte Wert für alle nachfolgenden XML-Elemente innerhalb der Dokumentvorlage über <Variable> zur Verfügung.