Das sd:choose-null- Element

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.

Typ
Äußere Elemente
Attribute
sd:choose-null-type
Kann einen der Werte
sd:rs
sd:input-table
sd:input-search
sd:cache-name
sd:param-name
sd:rs-cell
sd:input-cell
sd:has-new-value
annehmen oder fehlen.
Child-Elemente
Beispiele
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!

Die Erläuterungen zum Datenschutz habe ich gelesen und stimme diesen zu.

© 2003-2018 Jürgen Auer, Berlin.