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.