Kombinierte Vergleiche

Wenn je nach Wert eines Feldes viele unterschiedliche Texte ausgegeben werden sollen, bietet es sich an, eine switch-Anweisung anstelle vieler condition-Anweisungen zu verwenden. Mit switch lassen sich Feldwerte effizienter vergleichen und if-then-else-Strukturen in Layouts verwenden. Dies zeigt das folgende Beispiel:

<npsobj switch="objClass">
  <npsobj casecond="isEqual" value="newspub">
    <npsobj insertvalue="template" name="newsnav" />
  </npsobj>
  <npsobj casecond="isEqual" value="archivepub">
    <npsobj insertvalue="template" name="archivenav" />
  </npsobj>
  <npsobj casecond="isEqual" value="productpub">
    <npsobj insertvalue="template" name="productnav" />
  </npsobj>
  <npsobj casecond="default">
    <npsobj insertvalue="template" name="standardnav" />
  </npsobj>
</npsobj>

Hier wird das Feld objClass nacheinander mit den Zeichenketten newspub, archivepub und productpub verglichen. Entspricht der Wert von objClass einer dieser Zeichenketten, so wird ein entsprechendes Navigationslayout inkludiert, und der Rest der switch-Anweisung wird übersprungen. Hat objClass keinen der drei Werte, so wird der Inhalt der casecond-default-Anweisung abgearbeitet, weil diese Bedingung immer wahr ist.

Mit dem Feld proceed im NPSOBJ-casecond-Tag und seinen erlaubten Werten yes und no kann man steuern, ob die nächste casecond-Anweisungen in der switch-Anweisung abgearbeitet werden soll, wenn die Bedingung zutrifft. Dies ist voreingestellt nicht der Fall, d. h. proceed hat den Wert no, wenn dieses Tag-Attribut nicht angegeben wurde. Dadurch wird der Rest der switch-Anweisung ignoriert.