Zum Inhalt springen

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 Path ist 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 werden

Erst 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.

Zuletzt aktualisiert am