Das sd:rs-Element ist der Haupt-Container für die Ausgabe einer Tabelle, Sicht oder einer Abfrage. Ihm wird
über die Attribute sd:source-type
und sd:source-name
eine dieser Quellen zugeordnet.
Bei der Seitenverarbeitung wird zunächst diese Quelle einmal aufgerufen. Dies liefert eine interne Tabelle mit
null oder mehreren Zeilen. Enthält das Element als Child-Element nur das sd:normal
-Element, so wird
dieses Element für jede Zeile einmal aufgerufen. Gibt es zusätzlich ein sd:alternate
-Element, dann wird
dieses für jede gerade Zeile (2, 4, 6 usw.) aufgerufen.
Bezieht sich das sd:rs-Element auf eine Tabelle oder eine Sicht, so muß der Wert dieses Attributes (SortColumn)
gleich dem Namen einer Spalte der zugrundeliegenden Tabelle sein. Nach dieser Spalte wird der erste Aufruf sortiert.
Bezieht sich das sd:rs-Element auf eine Abfrage, so wird dieser Wert ignoriert.
Ermöglicht es, den vordefinierten sd:range-Wert durch eine Bedingung zu verändern. Ist hilfreich, wenn bsp. in einem Blog
normalerweise 20 Einträge ausgegeben werden sollen. Die Monatsansicht soll aber 50 Einträge, damit den gesamten Monat anzeigen.
Eine solche range-Condidition ist besser als ein zweites sd:rs
- Element.
Der Wert dieses Attributs ist gleich einem sd:input-table
-Elements. Enthält das sd:rs
-Element
Links zum Bearbeiten der einzelnen Zeilen, so wird dieses sd:input-table
-Element mit den Daten der Zeile
gefüllt.
Unterbindet das Lesen und Editieren in dieser Eingabemaske, falls der Name der Eingabemaske in der Url verwendet wird.
Ein Editieren über ein sd:rs
-Element ist zunächst noch möglich.
aufgerufen wird. Dies ist unproblematisch, falls Aufrufer ohnehin die Berechtigung zum Lesen des gesamten Datensatzes haben.
Falls allerdings ein Dienstleister-Katalog mit einfachen und mit Premium-Mitgliedern verwendet wird, so kann ein Mitglied
seine Premium-Einträge bereits eintragen, ohne daß diese schon freigeschaltet sind. Diese Daten wären für andere durch
ein Erraten abrufbar.
Ist das sd:view-only-visible-Attribut mit 'true' belegt, so wird genau dies verhindert. Nur die Daten, die im
sd:rs
-Element aktuell angezeigt werden und sich bsp. nach der USER_ID auf den aktuellen Nutzer einschränken
lassen, können mit Details ausgegeben werden.
Es kann Fälle geben, in welchen die Tabellenberechtigungen nicht genügen, um Lesezugriff auf
Datenzeilen zu verhindern.
Bsp.: Interne Mitarbeiter können alle Datensätze bearbeiten. Externe Firmennutzer bilden eine eigene Gruppe, so daß
mehrere externe Mitarbeiter dieselbe Menge an Daten bearbeiten kann. Zusätzlich sollen regionsbezogene Mitarbeiter
nur die Datensätze ihrer Region lesen können.
Hier ist die Gruppenspalte _Group bereits belegt, ein regionsbezogener Mitarbeiter soll Datensätze verschiedenster
Gruppen seiner Region lesen können.
Ein Eintrag 'RegionenSpalte|$RID' überprüft, ob der Datensatz-Wert für 'Regionenspalte' gleich dem für diesen Nutzer
gecachten Wert $RID ist und läßt nur bei Übereinstimmung die Anzeige zu.
Ein Eintrag 'RegionenSpalte|^$RID' läßt die Anzeige zu, falls $RID leer oder gleich dem Wert der Regionenspalte ist.
Bei internen Mitarbeitern bleibt $RID leer, damit können diese sämtliche Datensätze lesen. Für regionsbezogene Mitarbeiter
wird hier die RegionenId gecacht - sie sehen nur die Datensätze ihrer Region.
definiert den Trenner, der zwischen zwei Zellen eingefügt wird. Dieses Attribut kann nützlich sein,
falls die Daten nicht in Form einer Tabelle, sondern bsp. in Form einer kommagetrennten Liste ausgegeben werden. Würde
das Komma innerhalb des sd:normal- oder sd:alternate-Elements eingefügt werden, so würde es auch nach der letzten
Spalte ausgegeben werden. Der Wert des sd:delimiter
-Attributes wird dagegen nur zwischen den Spalten
erzeugt und für die letzte Spalte unterdrückt.
Falls 'true', so wird ein Speichern- oder Löschbefehl nur dann ausgeführt, wenn der zu bearbeitende Datensatz im Laufzeitcache
des aktuellen Nutzers existiert, also auch angezeigt wird. Dieses Attribut verhindert das Speichern / Löschen beliebiger Datensätze
über die Id und sollte in jenen Fällen verwendet werden, in welchen anonyme Nutzer im Rahmen einer Bestellung ihre
Bestelldetails angezeigt bekommen und einzelne Bestelldetails speichern / löschen dürfen. Da nur die Bestelldetails angezeigt werden,
die zur Haupt-Id gehören und da die Haupt-Id aus dem Servercache geholt wird, kann auf diese Weise kein fremder Detaildatensatz
gespeichert oder gelöscht werden.
Falls dieses Attribut mit dem Wert einer sd:cached-id - Variablen 'myId' belegt ist, wird eine Löschanforderung der Form
Dateiname.html?action=objektname-d-myId'
nur ausgeführt, falls der übergebene Name gleich diesem Attributwert ist. Die ID der zu löschenden Zeile wird in diesem
Fall aus dem Laufzeitcache des ausführenden Nutzers ausgelesen. Dies verhindert Löschversuche durch die Übergabe einer Zahl,
falls anonyme Nutzer Datensätze hinzufügen und löschen dürfen. Falls nur authentifizierte Nutzer Daten bearbeiten dürfen,
ist diese Technik nicht notwendig, da nun der Datenbankserver die Berechtigung für den aktuellen Benutzer überprüft.
Falls aus einer Abfrage heraus gelöscht werden soll, muß diesem Attribut der Name der Tabelle zugeordnet werden,
aus welcher die zu löschende ID stammt. Da eine Abfrage mehrere Tabellen miteinander verknüpfen kann, wäre der Löschbefehl
ohne dieses Attribut nicht eindeutig. Für Tabellen und Views wird dieser Wert ignoriert.
Wenn dieses sd:rs
-Element mit sd:source-type='table' und sd:source-name='_dT_mails' als vordefiniertem
Ausdruck deklariert ist, dann dient dieses Element zum Lesen empfangener Mails. Das sd:mail-address-table - Attribut benennt die
Tabelle, welche vordefinierte / bekannte Mails enthält. Die Mails werden diesen Versendern zugeordnet und können bsp.
automatisch weiterverarbeitet werden.
kann eine kommagetrennte Liste von Werten enthalten. Derzeit zulässig: find-link. Dies bewirkt, daß in der Mail
der erste mit 'http://' beginnende Link gesucht und in einer zusätzlichen Spalte ausgegeben wird, so daß dieser direkt
klickbar ist.
Kann mit einer semikolongetrennten Liste von Spalten des sd:rs
-Elements belegt werden.
Nichtleere Einträge werden unmittelbar nach dem Ausführen der Abfrage per http/2 - Push an den Client gesendet, so daß dieser
die zugeordneten Ressourcen anfordern kann.
Ermöglicht die Deklaration einer Pflichtliste, die sowohl Spaltennamen des zugeordneten sd:input-table
-Elements
als auch sd:param
-Elemente enthalten kann. Letzteren wird ein '%' vorgestellt.
Dies ist bsp. nützlich bei der Umkreissuche, falls mindestens ein Wert ausgefüllt und das Anzeigen der Gesamtliste
unterbunden werden soll.
Wenn das Attribut mit 'true' belegt ist, dann wird diese Ausgabe bei jedem Aufruf aktualisiert.
Das ist im Allgemeinen nicht sinnvoll, kann aber notwendig sein, falls bsp. Zufallsbilder angezeigt werden sollen.
Wenn das Attribut mit 'true' belegt ist, wird die Suche nach einer Tabellen-ID so interpretiert, daß
zusätzlich der Datensatz zum Editieren angezeigt wird.
zu verwenden, so kann getestet werden, ob der Datensatz mit der ID tatsächlich den Vornamen 'Max' und den Nachnamen 'Mustermann'
enthält.
Beispiel für eine Belegung:
1|404|Vorname|Nachname
Zunächst wird die Position des zu überprüfenden Wertes in der Url angegeben (hier Position 1), dann der stattdessen zu generierende
Html-Statuswert (hier: 404, nicht gefunden), damit fehlerhaft verlinkte Seiten nicht in den Suchmaschinen erscheinen.
Schließlich folgt die Liste der Spalten, die - zusammengesetzt - den Wert ergeben sollen. Dies gelingt auch, falls die
Tabelleneinträge Umlaute, die Urls dagegen ae/oe/ue enthalten.
Kann mit zwei '|' - getrennten Spaltennamen belegt werden.
Die beiden Zellen werden als alte|neue Version interpretiert, es wird eine zusätzliche Tabelle
rs-name + '-compare' mit dem Ergebnis eines Versionsvergleiches mit zur Ausgabe geschickt.
Falls dieses Attribut mit 'true' belegt und irgendeine Zeile in der Seite gespeichert wird, dann wird das übergeordnete
Ergebnis gelöscht und anschließend neu von der Datenbank geladen. Das ist nützlich, falls es Abhängigkeiten zwischen Eingaben und Ausgaben
gibt, die sich nicht über andere Möglichkeiten deklarieren lassen.
Fehlt das Attribut und existieren solche Abhängigkeiten, so kann es zu Fehlanzeigen kommen. Das System nutzt - absichtlich
- umfangreiche Caching-Techniken, so daß Kalender- und Ausgabetabellen nur neu geladen werden, falls innerhalb der Ausgabeseite
ein Grund dafür vorliegt (geändertes Datum, Klick auf den Such-Button).
Falls dieses Attribut mit 'true' belegt ist, dann wird der Bereich des Suchergebnisses (1 - 10, 11 - 20) nicht
auf 1-10 bzw. den Standardbeginn zurückgesetzt, falls Suchparameter geändert wurden. Normalerweise wird dieses Zurücksetzen
erwartet: Sieht man die dritte Seite der Suchergebnisse und ändert man die Sortierung, dann sollen Ergebnis 1-10 in
bezug auf die neue Sortierung angezeigt werden. Dieses Verhalten ist jedoch störend, wenn die Maske nur einen Datensatz
ausgibt, um ein direktes Blättern durch Detailergebnisse zu ermöglichen. Der Wert 'true' ermöglicht in diesem Fall
ein Unterdrücken des Sprungs auf die erste Seite.
In sd:rs - Elementen werden versteckte input-Felder eingefügt, um bestimmte zusätzliche Informationen zu hinterlegen.
Mit einem Wert 'true' für dieses Attribut kann das unterbunden werden.
Wenn ein View mit Detailspalten zum Anhaken angezeigt wird, dann kann die Detailtabelle zusätzliche Spalten enthalten,
deren Auswahl ebenfalls gespeichert werden soll. Gibt es bsp. Tabellen 'Rechtsgebiete', 'Anwälte', eine Verknüpfungstabelle
vk_Rechtsgebiete_Anwälte und einen View v_Rechtsgebiete mit Detailspalten, so kann die Verknüpfungstabelle eine zusätzliche
Spalte 'ist_Fachanwalt' enthalten, deren Wert ebenfalls gespeichert werden soll. Die Deklaration
sd:save-columns='cb_ist_Fachanwalt'
leistet das Gewünschte. Sie stellt sicher, daß der Wert der Zusatzspalte ebenfalls gespeichert wird.
Wenn ein View mit Detailspalten zum Hinzufügen von Zeilen angezeigt wird und Zeilen dadurch generiert werden sollen,
daß Werte aus Pulldownlisten auszuwählen sind, ohne daß eine Checkbox zur Verfügung steht, dann kann dieses
Attribut mit 'true' belegt werden.
Ermöglicht das Angeben einer Spalte. Falls dieser Wert existiert, wird der Content des sd:rs - Elements nicht einmal
pro Zeile, sondern nur einmal pro verschiedenem Wert in dieser Spalte (aufsteigend sortiert) aufgerufen.
Dies ermöglicht es, im Content sd:with-row-search - Attribute zu nutzen, die ihrerseits die passenden Zeilen für die
Ausgabe zusammensuchen.
sd:rs
-Elemente können inzwischen geschachtelt werden. Wird dieses Attribut mit einer
'|' - getrennten Kombination zweier Spalten belegt, dann zeigt dieses - innere - sd:rs
-Element
pro Zeile nur jene Einträge an, bei welchen der Wert der eigenen, zweiten Spalte gleich dem
Wert der äußeren, ersten Spalte ist.
Erwartet eine Zeichenfolge als Wert. Unter diesem Namen wird das Ergebnis der ausgeführten Suche gecacht.
Dies kann nützlich sein, falls die Liste kontinuierlich benötigt wird, um durch die Ergebnisse zu blättern.
Falls 'true', werden für das übergeordnete sd:rs- bzw. sd:input-table - Objekt keine PathInfo - Ausgaben generiert.
Das kann nützlich sein für Elemente, durch die bsp. ohnehin nie geblättert wird (sd:rs auf einer Startseite als Linkliste
oder mit einer einzigen Zeile als Ausgabe).
Kann mit 'true' belegt werden. Dann wird der Inhalt dieses sd:rs - Elements nicht ausgegeben. Das ist sinnvoll, wenn die Abfrage sehr viele Daten für
eine Grafik enthält. Es verhindert, daß für 1000 Zeilen tausendmal das sd:normal-Element aufgerufen wird.
Kann mit 'true' belegt werden. Dann wird das Ergebnis einer Abfrage nach dem Ausführen der Xsl-Transformation gelöscht und damit nicht in den Nutzercache transferiert.
Das folgende Beispiel zeigt eine typische Minimal-Darstellung einer Tabelle. Hier werden die auszugebenden Spalten
und ihre Reihenfolge explizit benannt:
Das Ergebnis ist eine einfache Tabelle mit unterschiedlicher Darstellung für die ungeraden und die geraden
Zeilen:
11
Oberhemd
12
Oberhemd
13
Hose
22
Mantel
Anstelle der direkten Formatierungen können auch CSS-Klassen genutzt werden.
Mit der Verwendung des sd:cell-set
-Elements und der dynamischen Generierung kann der Code nochmals komprimiert
werden:
Hier fehlt das sd:alternate
-Element, so daß die geraden Zeilen genauso wie die ungeraden Zeilen
ausgegeben werden. Aufgrund der dynamischen Generierung legt die Datenquelle die Reihenfolge der Spalten fest.
Bemerkungen
Das sd:rs-Element gibt selbst keine Spaltenüberschriften aus. Hierfür kann - innerhalb von <table> und
oberhalb von <sd:rs>, das sd:col-set
-Element genutzt werden. Es muß auf das zugeordnete sd:rs-Element
verweisen und kann dessen Spalten dynamisch durchlaufen. Alternativ können die Spaltenüberschriften direkt unterhalb von
<table> starr notiert werden.
Es ist nicht notwendig, daß im Content eines sd:rs-Elements eine Tabelle notiert wird. Die einzelnen Spalten können auch
kommagetrennt aufeinander folgen. Oder eine Spalte ist in ein <dt>, eine zweite Spalte in ein <dd>-Element
eingeschlossen, so daß sich eine Folge von Begriffen und Definitionen ergibt.
Falls die Tabelle zusätzlich Linktexte und Urls enthält, könnte die Ausgabe Links unter Verwendung des
sd:attribute
-Elements erhalten.
Es ist ebenfalls denkbar, daß bekannt ist, daß die auszugebende Tabelle immer nur eine Zeile enthält. Man denke an eine
Abfrage, die höchstens eine Zeile zurückgibt. Damit läßt sich der Inhalt des sd:normal
-Elements über die
ganze Ausgabeseite verteilen, so daß bsp. eine Serienbrief-Funktionalität für Rechnungen bereitgestellt wird.
Link zur hiesigen Seite als QR-Code
Kontaktformular:
Schreiben Sie mir und wir bauen gemeinsam Ihre neue Web-Datenbank!
Mit dem Klick auf den Button stimmen Sie zu, daß Cookies in Ihrem Browser gespeichert werden. Informationen zu den gespeicherten Cookies finden Sie unter Datenschutz#Cookies.Bei Fragen zur Technik wenden Sie sich bitte an Server-Daten - Web-Datenbank-Lösungen