Zum Inhalt springen

Case

Kurzbeschreibung

Das XML-Element <Case> dient zur Auswahl eines Verarbeitungszweiges anhand des Inhalts einer Variablen.

Der Variablenwert wird nacheinander mit den definierten <When>-Elementen verglichen. Sobald eine Bedingung erfüllt ist, wird ausschließlich der zugehörige Verarbeitungszweig ausgeführt.

Optional kann über <Default> ein Standardfall definiert werden, der verarbeitet wird, wenn keine der definierten Bedingungen zutrifft.

Einordnung

Bereich: Bedingungen und Schleifen

Schwierigkeitsgrad: ⭐⭐⭐☆☆

Vorkenntnisse: Text · Variable

Empfohlener nächster Artikel: Math

Zweck

Mit <Case> können mehrere mögliche Werte einer Variablen übersichtlich verarbeitet werden.

Anstatt mehrere verschachtelte <If>-Abfragen aufzubauen, werden sämtliche möglichen Ausprägungen einer Variablen in einer gemeinsamen Struktur beschrieben.

Typische Einsatzgebiete sind:

  • Statusauswertungen
  • Parameterauswertungen
  • Auswahl unterschiedlicher Bausteine
  • unterschiedliche Textausgaben
  • Verarbeitung fachlicher Kennzeichen

Grundsyntax

Ein <Case> besteht aus

  • dem Variablenpfad,
  • einem oder mehreren <When>-Elementen,
  • optional einem <Default>.
<Case Path="general.appvalidierung">

    <When Compare="true">

        ...

    </When>

    <When Compare="false">

        ...

    </When>

    <Default>

        ...

    </Default>

</Case>

Position innerhalb der Dokumentvorlage

Das <Case>-Element kann sowohl direkt innerhalb des <Body> als auch innerhalb eines <Content> verwendet werden.

Die zulässigen Inhalte von <When> und <Default> richten sich nach der Position des <Case>.

Direkt unterhalb des Body

Auf Body-Ebene können vollständige XML-Strukturen verarbeitet werden.

Beispielsweise:

  • <Block>
  • <Reference>
  • weitere Strukturelemente
<Case Path="general.appvalidierung">

    <When Compare="true">

        <Reference
            Name="21CKOPF"
            RefId="1816b8e6-e3ef-431d-be73-317c7ae6a038"
            RefName="21CKOPF">
        </Reference>

    </When>

</Case>

Innerhalb eines Content

Innerhalb eines <Content> werden direkt Inhaltselemente verwendet.

<Block>

    <Content>

        <Case Path="general.appvalidierung">

            <When Compare="true">

                <Text Content="Text Nummer eins.">
                </Text>

            </When>

            <Default>

                <Text Content="Kein passender Fall.">
                </Text>

            </Default>

        </Case>

    </Content>

</Block>

Wichtig

Die Inhalte der <When>-Elemente müssen zur Position des <Case> innerhalb der Dokumentvorlage passen.

Ablauf der Verarbeitung

Die Render-Engine verarbeitet ein <Case> immer in derselben Reihenfolge.

Variable lesen
When 1 prüfen
passt?
 ├── Ja ─────────────► Verarbeitung
 │                     │
 │                     ▼
 │                   Ende
 └── Nein
When 2 prüfen

...

Default

(falls vorhanden)

XML-Wissen

Sobald ein passendes <When> gefunden wurde, beendet die Render-Engine die Verarbeitung des <Case>.

Nachfolgende <When>-Elemente werden nicht mehr ausgewertet.

Attribute

Case

Attribut Beschreibung
Path Enthält den Variablenpfad, dessen Inhalt ausgewertet werden soll.

Hinweis

Das Attribut Path ist erforderlich.

When

Ein <When> besitzt genau eine Vergleichsart.

Zur Verfügung stehen:

Attribut Beschreibung
Compare Vergleicht den Variableninhalt mit einem festen Wert.
OneOf Vergleicht den Variableninhalt mit mehreren möglichen Werten.
MatchRegex Vergleicht den Variableninhalt anhand eines regulären Ausdrucks.

Compare

Der einfachste Vergleich.

<When Compare="true">

    ...

</When>

Der Verarbeitungszweig wird ausgeführt, wenn der Inhalt der im <Case> angegebenen Variable exakt dem angegebenen Wert entspricht.

OneOf

Mit OneOf können mehrere Vergleichswerte innerhalb eines einzigen <When> definiert werden.

Die Werte werden kommagetrennt angegeben.

<When OneOf="A,B,C,D">

    ...

</When>

Der Verarbeitungszweig wird ausgeführt, wenn die Variable einen der angegebenen Werte besitzt.

Dadurch lassen sich mehrere einzelne <When>-Elemente zusammenfassen.

MatchRegex

Mit MatchRegex erfolgt der Vergleich über einen regulären Ausdruck.

<When MatchRegex="[A-Z]{3}[0-9]{5}">

    ...

</When>

Diese Vergleichsart eignet sich insbesondere zur Prüfung strukturierter Inhalte.

Beispiele:

  • Versicherungsnummern
  • Postleitzahlen
  • Aktenzeichen
  • Identifikationsnummern

Default

Der <Default>-Container ist optional.

Er wird ausschließlich verarbeitet, wenn kein <When> zur Variablenausprägung passt.

<Default>

    <Text Content="Wenn nichts anderes passt.">
    </Text>

</Default>

Wird kein <Default> definiert und trifft kein <When> zu, erfolgt an dieser Stelle keine Verarbeitung.

Praxisbeispiel

<Case Path="general.appvalidierung">

    <When Compare="true">

        <Text Content="Text Nummer eins.">
        </Text>

    </When>

    <When Compare="false">

        <Text Content="Text Nummer zwei.">
        </Text>

    </When>

    <When Compare="not used">

        <Reference
            Name="21CKOPF"
            RefId="1816b8e6-e3ef-431d-be73-317c7ae6a038"
            RefName="21CKOPF">
        </Reference>

    </When>

    <Default>

        <Text Content="Wenn nichts anderes passt.">
        </Text>

    </Default>

</Case>

Die einzelnen <When>-Elemente werden von oben nach unten geprüft.

Sobald ein passender Eintrag gefunden wurde, wird ausschließlich dessen Inhalt verarbeitet.

Case oder If?

Verwenden Sie <Case>, wenn mehrere mögliche Ausprägungen einer Variablen unterschieden werden sollen.

Typische Beispiele:

  • Status
  • Dokumentart
  • Kennzeichen
  • Parameterwerte
  • Auswahlfelder

Verwenden Sie <If>, wenn

  • eine Ja-/Nein-Entscheidung getroffen wird,
  • Bedingungen logisch miteinander verknüpft werden,
  • Werte größer oder kleiner verglichen werden,
  • Existenzprüfungen durchgeführt werden.

Empfehlung

Mehrere verschachtelte <If>-Elemente, die ausschließlich unterschiedliche Werte derselben Variablen prüfen, können häufig übersichtlicher durch ein <Case> ersetzt werden.

Typische Fehler

Reihenfolge der When-Elemente

Da die Verarbeitung beim ersten passenden <When> endet, sollten spezifischere Fälle vor allgemeineren Fällen definiert werden.

Fehlender Default

Ist kein <Default> vorhanden und trifft kein <When> zu, erfolgt keine Verarbeitung.

Der Redakteur sollte bewusst entscheiden, ob dieses Verhalten fachlich gewünscht ist.

OneOf statt mehrerer Compare

Werden mehrere Werte gleich behandelt, ist ein einzelnes <When OneOf="..."> meist übersichtlicher als mehrere identische <When Compare="...">.

Best Practices

  • Verwenden Sie <Case> für die Auswertung mehrerer möglicher Werte einer Variablen.
  • Platzieren Sie häufig auftretende Fälle möglichst weit oben.
  • Nutzen Sie OneOf, wenn mehrere Werte denselben Verarbeitungsweg besitzen.
  • Verwenden Sie Default für einen definierten Standardfall.
  • Nutzen Sie MatchRegex nur bei fachlich erforderlichen Mustervergleichen.
  • Verwenden Sie <If> für logische Bedingungen und <Case> für Wertauswahlen.

Technischer Hinweis

Die Render-Engine liest zunächst den im Attribut Path angegebenen Variablenwert.

Anschließend werden sämtliche <When>-Elemente der Reihe nach ausgewertet.

Beim ersten passenden <When> wird dessen Inhalt verarbeitet und die Auswertung des <Case> beendet.

Erst wenn kein passender Fall gefunden wurde, wird – sofern vorhanden – der Inhalt des <Default> verarbeitet.

Zuletzt aktualisiert am