Das sd:choose- Element
Ermöglicht die Deklaration einer Verzweigung innerhalb eines
sd:rs-Elements. Das gesamte Element wird
für jede Zeile der Ausgabetabelle einmal aufgerufen, die Spaltennamen können in den Bedingungen genutzt werden.
Die definierten
sd:when-Elemente werden der Reihe nach auf die Bedingung geprüft, die im
sd:test-Attribut formuliert ist. Scheitern alle Vergleiche, so wird das
sd:otherwise-Element
ausgeführt.
Dieses Element ermöglicht es, Zeilen einer Tabelle oder Abfrage in Abhängigkeit von den Werten dieser Zeile
verschiedenartig zu formatieren.
Typ
Parent-Elemente
Attribute
- sd:name
- Legt den Namen des Objektes fest. Dieses Attribut ist immer ein Pflicht-Attribut.
- sd:cache-name
- Erwartet eine Zeichenfolge als Wert. Wenn der Wert mit einem '$' beginnt und wenn es einen
gleichnamigen, unter diesem Namen gecachten Wert gibt, dann muß das sd:test-Attribut einen Spaltennamen
enthalten. Falls der Wert dieser Spalte gleich dem gecachten Wert ist, wird das sd:when-Element ausgeführt.
- sd:cache-name-simple
- Erwartet eine Zeichenfolge als Wert. Wenn der Wert mit einem '$' beginnt und wenn es einen
gleichnamigen, unter diesem Namen gecachten Wert gibt, dann muß das sd:test-Attribut einen einfachen
Wert enthalten. Falls dieser Wert gleich dem gecachten Wert ist, wird das sd:when-Element ausgeführt.
- sd:geo-distance
- Das Attribut muß mit dem Namen eines sd:rs-Elements belegt werden, welches
eine Umkreissuche bereitstellt. Dann kann es dafür genutzt werden, per sd:test='0' eine Mitteilung darüber auszugeben,
daß nichts gefunden und die Suche entsprechend ausgedehnt wurde.
- sd:col
- Wenn dieses Attribut belegt ist, wird nach einer Spalte mit diesem Namen gesucht und der Spaltenwert
mit den sd:test-Werten der sd:when-Elemente verglichen. Dies entspricht einem Vergleich
Spaltenname = Wert
für die verschiedenen Werte, kann intern jedoch weitaus schneller ausgeführt werden als
die komplexe Variante.
- sd:input-col
- Ermöglicht es, den Wert einer Spalte in einer Eingabemaske für einen sd:choose-null - Vergleich heranzuziehen.
- sd:check-col
- Falls das sd:choose - Element im Kontext eines sd:rs mit sd:cols-as-rows='true' notiert ist, kann ein Wert 'true'
in Kombination mit Spaltennamen beim sd:test - Attribut dazu genutzt werden, um verschiedene Ausgaben für verschiedene
Spalten zu erzeugen.
- sd:check-col-outside-row
- Falls das sd:choose - Element im Kontext eines sd:rs mit sd:cols-as-rows='true' notiert ist und selbst
außerhalb des <tr> - Elements, kann ein Wert 'true'
in Kombination mit Spaltennamen beim sd:test - Attribut dazu genutzt werden, um verschiedene Ausgaben für verschiedene
Spalten zu erzeugen.
- sd:check-col-pos
- Ein Wert 'true' im Kontext sd:cols-as-rows='true' und eine Zahl 0 - Zahl der Spalten im sd:test - Attribut ermöglicht
es, für die Spalte 0 (mit den Spaltenüberschriften) gesonderte Anweisungen festzulegen.
- sd:check-login
- Der Login-Status kann 0 (nicht angemeldet) oder 1 (angemeldet) sein. Ist dieses Attribut mit 'true' belegt,
dann kann per sd:test='0' die Anzeige für nicht angemeldete Nutzer explizit festgelegt werden.
- sd:check-filename
- Falls dieses Attribut mit 'true' belegt ist, werden bei den sd:test - Attributen Dateinamen erwartet.
Diese werden mit dem aktuellen Dateinamen verglichen.
- sd:check-http-status
- Falls dieses Attribut mit 'true' belegt ist, werden bei den sd:test - Attributen Http-Statuscodes erwartet.
Der Statuscode wird beim Aufruf der Seite festgelegt, ist normalerweise 200, kann aber bsp. bei einem
fehlerhaften SoftCheck als 404 festgelegt sein. Für so einen Fall kann eine gesonderte Meldung ausgegeben werden,
bsp. mit einem Link zur korrekten Seite.
- sd:check-user-id
- Falls das Attribut mit 'true' belegt ist, werden bei den sd:test - Attributen Nutzer-IDs > 0 erwartet.
Wenn für den ausführenden Nutzer ein Zweig existiert, wird dieser ausgeführt. Ansonsten wird der sd:otherwise-Zweig
abgearbeitet.
- sd:check-mode
- Falls das Attribut mit 'true' belegt ist, werden bei den sd:test - Attributen Seitenmodi (search, new-iM, edit-iM)
erwartet. Der entsprechende Zweig wird ausgeführt.
- sd:check-domain
- Falls das Attribut mit 'true' belegt ist, werden bei den sd:test - Attributen mögliche externe Domains erwartet.
Dies kann hilfreich sein, falls bsp. beim Aufruf über eine externe Domain ein eigener google-Map - Api-Schlüssel benötigt
wird.
- sd:check-lang
- Wenn dieses Attribut mit 'true' belegt ist, dann werden bei den folgenden sd:when-Elementen
Sprachkürzel für die sd:test-Attribute erwartet. Das sd:choose-Element prüft, welche
Sprache aktuell gültig ist und führt den entsprechenden Zweig aus.
- sd:check-first-row
- Falls dieses Attribut mit 'true' belegt ist und das Element im Context eines sd:rs- bzw.
sd:cell-set-Elements verwendet wird, kann für die erste Zeile zusätzlich der Inhalt dieses
Elements ausgeführt werden. Das sd:test-Attribut ist mit der zu testenden Spalte zu belegen.
- sd:check-last-row
- Falls dieses Attribut mit 'true' belegt ist und das Element im Context eines sd:rs- bzw.
sd:cell-set-Elements verwendet wird, kann für die letzte Zeile zusätzlich der Inhalt dieses
Elements ausgeführt werden. Das sd:test-Attribut ist mit "last()" zu belegen.
- sd:as-bitcheck
- Wenn dieses Attribut mit dem Wert 'or' belegt ist, dann wird geprüft, ob ein Bitvergleich der beiden angegebenen
Werte <> 0 liefert.
- sd:test-type
- Kann derzeit mit dem Ausdruck 'soft-check' belegt werden. Dann werden die beiden Werte 'schwach' auf Übereinstimmung
geprüft. Das ist nützlich, falls ein Ausdruck in einer Url ohne Umlaute, Leerzeichen und ähnliches gegen einen
beliebigen String getestet werden soll.
Child-Elemente
Beispiele
Das folgende Beispiel gibt die Tabelle 'Artikel' über den View 'ArtikelView' aus. Das sd:choose-Element
ist hier im Kontext eines
sd:normal-Elements notiert. Dieses Element wird für jede Zeile einmal ausgeführt.
Die
sd:choose-Verzweigung prüft, ob der Preis kleiner oder gleich 100 ist. Falls ja, wird
der Artikel-Preis mit rotem Hintergrund dargestellt. Falls der Preis größer 100 ist, wird der Artikelpreis
mit dem Standard-Hintergrund ausgegeben.
<table>
<sd:rs sd:name="sample-output" sd:edit="sample-input"
sd:source-type="view" sd:source-name="ArtikelView">
<sd:normal>
<tr>
<td>
<sd:edit-link>
<sd:cell-value sd:col="ArtikelId" />
</sd:edit-link>
</td>
<td>
<sd:cell-value sd:col="A_Name" />
</td>
<td>
<sd:choose sd:name="choose-A_Preis">
<sd:when sd:test="A_Preis <= 100">
<span style="background-color:red;">
<sd:cell-value sd:col="A_Preis" />
</span>
</sd:when>
<sd:otherwise>
<sd:cell-value sd:col="A_Preis" />
</sd:otherwise>
</sd:choose>
</td>
</tr>
</sd:normal>
</sd:rs>
</table> © 2003-2009 Jürgen Auer, Berlin.