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

AtPageCreation, AtPageShipout, B, Case, Color, Columns, Contents, Element, Fontface, ForAll, I, Include, Layout, Li, Loop, NoBreak, Otherwise, Overlay, Paragraph, PlaceObject, Position, Record, SavePages, 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.

Siehe auch

Das Kapitel Programmierung.