Ausgabeseiten zur Darstellung der Datenbank-Tabellen im eigenen Design

Ausgabeseiten sind das zentrale Werkzeug, die Inhalte der Datenbank gemäß der eigenen Formatierung auf Standard-Html-Seiten auszugeben. Diese können anschließend von anderen Seiten her verlinkt oder per iFrame-Fenster eingebunden werden. Die Inhalte sind hierdurch in bestehende Sites integrierbar.

Eine Ausgabeseite ist durch einen Datensatz dargestellt, der Seitenname, die Kennzeichnung als Library, den genutzten Dokument-Typ, ein internes, ansonsten nicht weiter beachtetes Kommentarfeld, das Statusfeld sowie den eigentlichen Code der Seite enthält. Der Seitencode entspricht einer Textdatei, die einerseits Html-Elemente enthalten muß, andererseits sämtliche der Ausgabeseiten / sd-Elemente enthalten kann. Die Grunddaten werden gemäß der folgenden Maske definiert.

SuchenNeue AusgabeseiteSpeichernAbbruch



Hilfe
Übersicht  (1/10)
 < 1 > 
 -    change-mail.html
 -    change-pwd.html
 -    login.html
 -    new-anonym.html
 -    new-nick.html
 -    new-pwd.html
 -    myQuery.html
 -    myTemplates.lib.html
 -    myTestPage.html
 -    VertreterInput.html
Id
Seitenname (*.html) *
Library *
Document Type
Bemerkungen
Status
Print_Id
Print_Mail
Owner
Protokoll2005-09-20 20:21:40, admin    Liste

LöschenCodeansichtCode generieren
PDF generieren

Der Seitenname muß immer mit der Endung '.html' erstellt werden. Der oben angezeigte Seitenname läßt sich direkt nutzen:

https://datenbank-name.server-daten.de/login.html
Ferner können Unterverzeichnisse verwendet werden. Hierzu genügt es, die Pfade direkt, ohne führenden Slash, zu verwenden. Eine Ausgabeseite mit dem Seitennamen
unterverzeichnis/angebot.html
wird aufgerufen durch:
https://datenbank-name.server-daten.de/unterverzeichnis/angebot.html
Die Speicherung mit dem Status <inactive> überspringt die Validierung des Codes und sperrt die Ausgabeseite für direkte Aufrufe. Dies kann verwendet werden, um die Bearbeitung einer noch unvollständigen und invaliden Ausgabeseite zu unterbrechen, ohne den Seitencode selbst sichern zu müssen. Ferner ist hiermit die Blockierung einer Ausgabeseite möglich, ohne die Berechtigungen löschen zu müssen.

Die Felder 'Print_Id' und 'Print_Mail' sowie der Button 'PDF generieren' beziehen sich auf die Möglichkeit, aus einer Ausgabeseite eine PDF-Darstellung zu erzeugen und diese per Mail zu versenden. Alles weitere zu diesem Erzeugen von PDF-Dokumenten findet sich unter PDF-Dokumente .

Codeansicht

Aufgrund der atomaren Auslieferung der Inhalte der Datenbank sowie aufgrund der ebenfalls atomaren Bereitstellung der aktuellen Seitennummer und ähnlichem beim Blättern durch ein Ergebnis gibt es eine Fülle von Möglichkeiten, wie Elemente angeordnet und Html-Code eingeschoben werden kann. Erst dieser erzeugt die eigentliche Formatierung der Rohdaten. Es gibt deshalb zwei verschiedene Möglichkeiten, Ausgabeseiten zu erstellen. Die erste und für komplexe Anwendungen wesentliche Technik besteht in der direkten Bearbeitung des Seitencodes bei ausgiebiger Nutzung der Dokumentation (siehe Ausgabeseiten / sd-Elemente ). Diese Version ist über den Button <Codeansicht> zugänglich und bietet für eine neue Ausgabeseite mit Namen 'neue-seite.html' die folgende Maske:

SeitenvorschauValidierenSpeichernAbbruch



Hilfe
neue-seite.html  Status   
https://datenbank-name.server-daten.de/neue-seite.html

Wenn ein Nutzer dieses Fenster im Vollbildmodus nutzt, so kann er die Größe des Bearbeitungsfensters unter <Eigene Daten> - <Einstellungen> anpassen. Die Standardwerte für Höhe/Breite sind 30/80, diese Werte werden verwendet, falls keine Einträge gesetzt sind. Der Aufwärtspfeil am Ende der ersten Zeile führt ohne Speicherung zurück zum vorigen Menü. Der Link darunter stellt den tatsächlichen Aufrufpfad für die Seite dar. Ferner kann hier der Status einer Seite geändert werden, so daß sich auch eine fehlerhafte Seite mit dem Status 'inaktiv' speichern läßt. Dies ist nützlich, falls der Code Fehler enthält und die Speicherung deshalb zunächst zurückgewiesen wird. Der Wert stimmt mit dem Feld 'Status' der ersten Maske überein.

Die oben gezeigten Vorbelegungen entsprechen der Minimalform einer Ausgabeseite. Der Code beginnt mit der bei der Erstellung der Seite gewählten DTD, das folgende Html-Element benötigt zusätzliche Namespace-Deklarationen. Der eigentliche Code wird im body-Abschnitt eingefügt. Hier können beliebige Html- sowie alle Hauptelemente mit passenden Zwischen- und Unterelementen verwendet werden. Für den Einstieg ist diese Maske kaum verwendbar. Hier ist es besser, sich mittels des Buttons <Code generieren> zunächst Beispielcode zu generieren. Betrachtet man den erzeugten Code in der Codeansicht, so sollte die Hierarchie der sd-Elemente rasch deutlich werden. Ferner können in dieser Darstellung Html-Elemente zur Formatierung eingefügt und deren Wirkung beobachtet werden.

Das Html-title-Element sollte entweder mit dem Seitentitel vorhanden sein oder fehlen. Ein leeres title-Element sowie eine fehlende DTD kann dazu führen, daß - aufgrund der Xsl-Transformation - ein <title/>-Element eingefügt wird, welches vom InternetExplorer V 6.0 ungenau interpretiert wird. Als Ergebnis wird eine leere Seite ausgegeben, da das schließende title-Element zu fehlen scheint.

Code generieren

Der Button <Code generieren> erzeugt die folgende Maske. Der obere Teil enthält wieder den Seitennamen, die Möglichkeit, zurückzukehren sowie den direkten Aufruflink.

SeitenvorschauSeite editierenSpeichernAbbruch



Hilfe
myQuery.html  
https://datenbank-name.server-daten.de/myQuery.html
sd-Elemente
Typ dieser Seite
Subtyp
Tabellen/Views/Abfragen
Links zum Blättern
Relationen mit Blättern/Suche
Erstellungstyp
rs-Ausgabe
rs mit Sortierung
Editierlink
Positionierung
Textposition zu sd-Elementen
Eingabe zu Suche
Buttons zur Eingabe
Stepbuttons zur Ausgabe

Der relevante Abschnitt ist der Teil sd-Elemente. Die dort zur Verfügung stehenden Alternativen erzeugen die verschiedenen Grundtypen von Seiten und ergänzen sie um Varianten. Positionierung schiebt einen div-Container ein, der für weitere Texte genutzt werden kann. Dieser wird mittels <Textposition zu sd-Elementen> relativ zum div-Container postiert, welcher die sd-Elemente enthält. Die drei folgenden Optionen beeinflussen die relative Anordnung der sd-Elemente zueinander. Farben fügt nur Links zu CSS-Dateien ein.

Abschnitt sd-Elemente

Die Seitentypen 'Anmeldung anonym', 'Anmeldung Nick', 'neues Passwort', 'Passwort ändern', 'Mail ändern' sowie 'Login' erstellen die Elemente für die gewünschte Basisfunktionalität. Die Ausgabe erzeugt eine einfache Beschriftung sowie die benötigten wenigen sd-Elemente. Für diese Seitentypen sind alle weiteren Optionen aus dem Menü 'sd-Elemente' irrelevant.

Die darüber verfügbaren Optionen 'Eingabe' und 'Ausgabe' erstellen Ausgabeseiten, welche nur eine der beiden Hauptelemente sd:input-table oder sd:rs enthält. Bei diesen beiden Typen können die anderen Optionen außer 'Subtyp' genutzt werden. Diese Masken sind bsp. bei reinen Eingabe- oder Ausgabeseiten ohne Suchfunktionalität nützlich.

Der wohl am häufigsten verwendete Seitentyp ist jener der gemischten Eingabe und Ausgabe. Dieser enthält sowohl ein Eingabeformular, welches zur Neuerstellung eines Datensatzes, zur Suche und zum Editieren verwendbar ist als auch ein Suchergebnis, welches Datensätze zum Editieren liefert. Ferner ermöglicht die Festlegung eines Subtyps unter Verwendung des sd:ignore -Elements das Ausblenden der Maske oder der Suche zu gewünschten Zeitpunkten. So wird ohne weitere Definitionen beim Aufruf einmal die Suche so ausgeführt, als sei direkt auf den Button geklickt worden, ferner werden Eingabemaske und Suchergebnis permanent eingeblendet. Die Erstausgabe der Suche wird vom Subtyp 'Start nur mit Eingabe' unterdrückt, dieser Typ bietet zunächst nur eine Eingabemaske an. 'Suche/Eingabe im Wechsel' und 'bei Suche Eingabe ausblenden' beginnen stattdessen nur mit dem Suchergebnis und blenden die Editiermaske alternativ oder gleichzeitig ein. Damit kann die Maske nur zum Editieren, nicht jedoch zum Suchen genutzt werden.

Die folgende Option <Tabellen/Views/Abfragen> listet die verfügbaren Objekte auf, welche für die Ausgabeseite verwendet werden können. Für Tabellen (T) werden die Standardsviews verwendet, welche die erste Spalte ausgeben. Das obige Beispiel enthält zusätzlich zu den drei Tabellen noch zwei weitere Views (V) sowie zwei Abfragen (Q = Queries).

Die Optionen 'Links zum Blättern' sowie 'Relationen mit Blättern/Suche' setzen die entsprechenden Werte für das sd:page-number-style - bzw. das sd:rel-format -Attribut und legen fest, wie die Nummerierung der Seiten erfolgt bzw. ob automatisch die Hilfswerkzeuge für das Blättern und Suchen durch Relationen erzeugt werden. Die letzte Option wirkt sich nur dann aus, falls die Tabelle Spalten enthält, die als Detailspalten von Relationen definiert sind.

Der Punkt 'Erstellungstyp' entscheidet darüber, ob Spalten individuell nachformatiert werden können oder ob stattdessen alle Spalten einheitlich ausgegeben werden, die Ausgabeseite jedoch sofort für Url - Überschreibungen genutzt werden kann. Im ersten Fall <explizit> wird unterhalb von sd:normal für jede Spalte der gewählten Tabelle ein Ausdruck zur Eingabe bzw. zur Ausgabe des Wertes erzeugt. Diese können anschließend in der Codeansicht nachbearbeitet werden, so daß bsp. zwei verschiedene Datumsspalten verschieden formatiert werden. Der zweite Fall <dynamisch> nutzt dagegen sd:input-cell-set bzw. sd:cell-set und erzeugt unterhalb dieser Elemente nur Code für die Bearbeitung bzw. Ausgabe einer Spalte. Diese Set-Elemente werden bei der Ausführung für jede Spalte einmal aufgerufen. Damit werden immer alle Spalten in der Reihenfolge ausgegeben, wie dies in der Datenbank festgelegt wurde. Bei Url-Überschreibungen stehen auch für die Spalten der neuen Tabelle passende Felder bereit, so daß dieselbe Ausgabeseite für alle Tabellen nutzbar ist, ohne daß Spalten fehlen.

Die Option <rs-Ausgabe> bietet die Möglichkeit, eine Tabelle oder Abfrage nicht als Html-Tabelle, sondern als Liste mit beliebig, noch zu definierenden Zwischentexten auszugeben. Wird hier die dynamische Version gewählt, so wird das sd:delimiter -Attribut mit vorbelegt, so daß als Ergebnis eine kommagetrennte Liste ausgegeben wird. Die beiden letzten Optionen entscheiden, ob die Zeile mit den Spaltenüberschriften Sortierlinks erhalten und ob ein Link zum Editieren mit dem Wert der ersten Spalte oder einen zusätzlichen Text eingefügt wird.

Anforderungen bei der manuellen Erstellung von Ausgabeseiten

Der eingefügte Html-Code muß im Xml-Sinne wohlgeformt sein: Elemente sind korrekt zu schachteln. Der Content von jedem geöffneten Element ist mit einem gleichnamigen schließenden Element zu beenden, hierbei ist Groß/Kleinschreibung zu beachten. Bei Elementen ohne Content kann statt <br></br> nun <br/> verwendet werden. Alle Attribute benötigen einen Wert, alle Attributwerte müssen in Hochkommata (" oder ') eingeschlossen werden. Es dürfen keine benannten Entities (&uuml; für ü) verwendet werden, da diese in Xml nicht mehr vordefiniert sind. Da intern UTF-8 genutzt wird, können Sonderzeichen durchweg direkt verwendet werden, ansonsten können die entsprechenden Ausdrücke aus der Unicode-Datenbank verwendet werden. Die in Xml vordefinierten Entities (&lt;, &gt;, &amp;, &quot; und &apos; für <, >, &, " und ') sind direkt nutzbar. Bei der Validierung der Ausgabeseite wird sowohl die Wohlgeformtheit des Xml-Dokuments als auch die Validität gegen die DTD der sd-Elemente geprüft. Es wird allerdings nicht geprüft, ob die vom Nutzer eingefügten Html-Definitionen der gewählten Html-DTD entsprechen.

Gewöhnliche Ausgabeseiten und Libraries

Ausgabeseiten sind normalerweise übliche Html-Seiten und enthalten zusätzliche sd-Elemente. Zusätzlich können Ausgabeseiten vom Typ 'Library' erstellt werden. Eine neu erstellte Library enthält zunächst nur den folgenden Code:
<sd:library xmlns:sd="http://www.server-daten.de/" xmlns="http://www.w3.org/1999/xhtml">




</sd:library>
Das Xml-Wurzelelement ist ein sd:library -Element, das genau einmal (analog zum Html-Element in Html-Seiten) auftritt und alle inneren Elemente umschließt. Es kann eine Liste von beliebig vielen sd:template -Elementen enthalten. Diese lassen sich von verschiedenen Ausgabeseiten her mit dem sd:call-template -Element aufrufen. Ihr Inhalt steht damit in verschiedenen Ausgabeseiten zur Verfügung. Dies erleichtert die seitenübergreifende Verwaltung von Html-Schnipseln (bsp. Buttonbeschriftungen), die über viele Ausgabeseiten hinweg gleichartig eingesetzt werden sollen.

Libraries sind ein fortgeschrittenes Werkzeug für erfahrene Benutzer. Falls nur einfache Ausgabeseiten erstellt werden, dürften Libraries unnötig sein. Sie dehnen jedoch das Datenbank-Prinzip der Redundanzfreiheit aus auf den Bereich der Erstellung von Ausgabeseiten. Für Libraries gibt es keine Möglichkeit, Code automatisch zu generieren.

Seitenausgabe im CSS1Compat- oder im BackCompat/QuirksMode

Der später auf der Basis der hier definierten Ausgabeseite ausgegebene Html-Code ist im Xml-Sinne wohlgeformt. Wird die XHtml.1.0 oder XHtml.1.1 - DTD gewählt, so ist der Code 'fast' gegen diese DTDs valide. 'Fast' bezieht sich auf die Einschränkung, daß zwar bsp. der Amaya-Browser den Code als valide akzeptiert, Online - Validierer jedoch die im Html-Element notierten Namespace-Deklarationen ablehnen. Hat der Nutzer eine DTD hinzugefügt, so wird die Ausgabeseite in den drei gängigen Browsern InternetExplorer V6, FireFox 1.0 und Opera 8.0 im CSS1Compat-Modus dargestellt. Dies erleichtert die Nutzung von div-Containern und CSS zur Positionierung von Elementen. Wird die DTD entfernt, so wechseln alle Browser in den QuirksMode. Wird eine der Html 4.01 - Varianten genutzt, so bleiben die Browser im CSS1Compat-Modus, Online-Validierer bemängeln jedoch zusätzlich schließende </meta> und </input> - Elemente, deren Erzeugung jedoch unvermeidbar ist.

Sicherheit

Für die Erstellung von Ausgabeseiten ist entweder das objektspezifische oder das globale Add-Recht notwendig. Für den Aufruf muß der Nutzer über das Execute-Recht für diese Seite, für alle Ausgabeseiten oder global verfügen. Für Anmelde- und Login-Seiten, die vor einer Authentifizierung aufrufbar sein sollen, muß der <not-registered-user-group> das Execute-Recht an diesen Seiten zugeordnet werden. Die Ausgabe von Tabelleninhalten und von Abfrageergebnissen wird individuell geprüft und ist unabhängig vom Execute-Recht für diese Ausgabeseite. Die Berechtigung für den Zugriff auf Tabellen und Abfragen entspricht den Berechtigungen innerhalb der internen Masken. Dieselbe Ausgabeseite enthält folglich für einen nicht berechtigten Nutzer Hinweise zur fehlenden Berechtigung. Ein zweiter Nutzer darf Daten lesen, jedoch nicht bearbeiten. Ein dritter Nutzer kann Änderungen speichern.


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.