Dieses Element kann in drei verschiedenen Varianten verwendet werden:
- Wenn der Wert des sd:sd-choose-null-type
-Attributes mit
sd:rs
belegt 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. - Wenn der Wert des sd:sd-choose-null-type
-Attributes mit
sd:input-table
belegt 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. - Ansonsten sollte sich dieses Element im Content eines sd:normal
- oder sd:alternate
-Elements
innerhalb eines sd:rs
-Elements befinden. Der Wert des sd:test
-Attributes
sollte gleich dem Namen einer Spalte sein. Falls diese existiert und die zugehörige Zelle nicht leer ist,
wird dieses Element weiterverarbeitet. Falls die Zelle leer ist, wird das sd:otherwise
-Element interpretiert.
Die erste Verwendung ermöglicht es, bsp. die Tabelle mit Spaltennamen und
sd:result-steps
-Elementen
komplett auszublenden, falls keine Zeilen zurückgegeben wurden.
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.
Bezug auf ein sd:rs - Element
Außerhalb eines
sd:rs
-Elements mit Namen 'sample-output' blendet der folgende Code dieses Element aus,
falls es keine Zeilen zurückgeliefert hat. Stattdessen wird die Meldung 'Keine Zeilen gefunden' zurückgegeben.
<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.
Bezug auf ein sd:input-table - Element, innerhalb von diesem notiert:
<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>
Innerhalb eines sd:rs - Elements, dort für eine einzelne Zelle
Im Kontext des
sd:rs
-Elements kann der folgende Code nützlich sein:
<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.
Kontaktformular:
Schreiben Sie mir und wir bauen gemeinsam Ihre neue Web-Datenbank!