Version 5.9.3

# `Switch`

Erzeugt eine „Wenn-Dann-Abfrage“. Das heißt, für jedes Kindelement `Case` wird überprüft, ob die Bedingung erfüllt ist. Wenn ja, dann wird der Inhalt des Kindelements `Case` ausgeführt und die Verarbeitung hinter der Fallunterscheidung fortgesetzt. Wenn keine Bedingung erfüllt wurde und ein Element `Otherwise` gefunden wurde, wird der Inhalt des Elements `Otherwise` ausgeführt. Durch das frühzeitige Abbrechen werden nachfolgende Fälle nicht weiter untersucht (siehe Beispiel).

## Kindelemente

`Case`, `Otherwise`

## Elternelemente

`A`, `AtPageCreation`, `AtPageShipout`, `B`, `Case`, `Color`, `Columns`, `Contents`, `Element`, `Fontface`, `ForAll`, `Frame`, `Function`, `I`, `Include`, `Layout`, `Li`, `Loop`, `NoBreak`, `Otherwise`, `Overlay`, `Paragraph`, `PlaceObject`, `Position`, `PositioningArea`, `Record`, `SavePages`, `Section`, `SetVariable`, `Span`, `Table`, `Tablefoot`, `Tablehead`, `Td`, `Text`, `Textblock`, `Tr`, `U`, `URL`, `Until`, `While`

## Attribute

(keine)

## Beispiel

    <Record element="...">
      <SetVariable variable="zähler" select="3"/>
      <Switch>
        <Case test=" $zähler &lt; 5">
          <SetVariable variable="text" select="'Kleiner als 5'" />
        </Case>
        <Case test=" $zähler &lt; 20">
          <SetVariable variable="text" select="'Kleiner als 20'" />
        </Case>
        <Otherwise>
          <SetVariable variable="text" select="'Größer als oder gleich 20'" />
        </Otherwise>
      </Switch>
      <PlaceObject>
        <Textblock>
          <Paragraph><Value select="$text" /></Paragraph>
        </Textblock>
      </PlaceObject>
    </Record>

## Hinweis

»Größer« und »kleiner« Vergleiche müssen nach den Regeln von XML kodiert werden. Für »größer« kann das `>` Zeichen oder `&gt;` benutzt werden, »kleiner« muss zwingend als `&lt;` ausgeschrieben sein, da das Zeichen `<` nicht in einem XML Attribut vorkommen darf.

Eine Fallunterscheidung kann in fast allen Elementen vorkommen. Das Ergebnis der Fallunterscheidung (also vom benutzten Element Case oder Otherwise) wird an das umgebende Element zurückgegeben. So wird beispielsweise aus

    <Td>
      <Paragraph>
        <Switch>
          <Case test=" $zeile > 10 ">
           <Value>Zeile ist größer als 10</Value>
          </Case>
          <Otherwise>
            <Value>Zeile ist kleiner oder gleich 10</Value>
          </Otherwise>
        </Switch>
      </Paragraph>
    </Td>

    <Td>
      <Paragraph>
        <Value>Zeile ist größer als 10</Value>
      </Paragraph>
    </Td>

oder

    <Td>
      <Paragraph>
        <Value>Zeile ist kleiner oder gleich 10</Value>
      </Paragraph>
    </Td>

je nach Inhalt der Variablen.

#### Inhalt