sd:rsbelegt ist, dann wird der Wert des sd:test -Attributes vom sd:when -Unterelement als Name eines sd:rs -Elements interpretiert und geprüft, ob dieses existiert und Zeilen enthält. Falls ja, wird der Inhalt dieses sd:when -Elements ausgeführt. Falls das sd:rs -Element fehlt oder die Suche keine Zeilen zurückgegeben hat, wird das sd:otherwise -Element verarbeitet.
sd:input-tablebelegt ist, dann muß das aktuelle sd:choose-null - Element im Kontext eines sd:input-table -Elements notiert sein. Das sd:test -Attribut des sd:when -Unterelementes muß eine Spalte bezeichnen. Wird in diesem sd:input-table -Element ein Datensatz bearbeitet bzw. angezeigt und enthält die entsprechende Zeile einen Wert, so wird das sd:when -Element weiterverarbeitet.
Die beiden anderen Verwendungen sind nützlich, falls - in Abhängigkeit davon, ob eine Zelle leer oder gefüllt ist - ein Bild oder ein Link unter Verwendung des sd:attribute -Elements eingefügt werden soll. Fehlt hier der eigentliche Verweistext, so funktioniert der Link nicht oder der Browser zeigt ein störendes Kästchen an. Im zweiten Fall wird nur dann auf Nicht-Null geprüft, falls ein Datensatz editiert wird und bsp. das Bild dieses Nutzers angezeigt werden soll. Bei der Suche fehlt ein Wert, damit wird nichts verarbeitet und kein Kästchen angezeigt.
sd:rs sd:input-table sd:input-search sd:cache-name sd:param-name sd:rs-cell sd:input-cell sd:has-new-valueannehmen oder fehlen.
<sd:choose-null sd:choose-null-type='sd:rs'> <sd:when sd:test='sample-output'> <table border='1'> <sd:rs sd:name='sample-output' sd:source-type='table' sd:source-name='Artikel'> <sd:normal> ... </sd:normal> <sd:alternate> ... </sd:alternate> </sd:rs> </table> </sd:when> <sd:otherwise> Keine Zeilen gefunden </sd:otherwise> </sd:choose-null>Hier ist wesentlich, daß das sd:when -Element sowohl die Html-Tabelle mit den Spaltenüberschriften als auch das sd:rs -Element umschließt. Nur dann werden sowohl der Inhalt als auch die Rahmendaten ausgeblendet.
<td> <sd:choose-null sd:choose-null-type="sd:input-table"> <sd:when sd:test="hat_bild"> <img> <sd:attribute sd:attribute-name='src'> /images/<sd:input-text sd:col="hat_bild" sd:as-value="true" /> </sd:attribute> </img> </sd:when> <sd:otherwise>Kein Bild</sd:otherwise> </sd:choose-null> </td>
<td> <sd:choose-null> <sd:when sd:test='bildadresse'> <img> <sd:attribute sd:attribute-name='src'> <sd:cell-value sd:col='bildadresse'/> </sd:attribute> </img> </sd:when> <sd:otherwise> Kein Bild vorhanden </sd:otherwise> </sd:choose-null> </td>Ist in der Zelle die Adresse eines Bildes eingetragen, so wird das Bild ausgegeben. Fehlt die Adresse, so erscheint der Hinweistext 'Kein Bild vorhanden'.
Ist die Adresse allerdings ungültig, so zeigen manche Browser wieder ein Kästchen an. Diese Inkonsistenz der gespeicherten Daten entspricht einer fehlerhaften, üblichen Html-Seite und läßt sich mit sd-Elementen nicht mehr abfangen.