>> Inhaltsverzeichnis >> Artikel

Formulare

Dieser Abschnitt definiert die Syntax von Elementen die erforderlich sind, um die Struktur von Formularen zu definieren, welche an Objekte in der Datenbank gebunden sind. Diese Formulare können durch eine Client-Anwendung verwendet werden und beziehen sich auf Datenbankelemente, welche innerhalb des gleichen Dokuments definiert wurden. Formulare binden eine Darstellung (Template) an eine Datenquelle (Tabelle oder View). Die Implementierung kann die erforderliche Syntax und Interpretation der Templates selbst festlegen. Diese Aspekte sind in diesem Dokument nicht spezifiziert.

Element Form

  ELEMENT form (description?, grant*, fieldset*, event*)
  ATTRIBUTE
       name        string
       table       string
       template    string
       title       string
  
Attribute
Attribut Typ Pflicht Default Beschreibung
name string yes n/a Ein eindeutiger Name welcher dieses Formular identifiziert. Sollte kleingeschrieben und ein valider XML-, SQL-Bezeichner sein.
table string - n/a Name einer Quelltabelle oder eines Views. Beachten Sie, dass der View updatable sein sollte. Andernfalls sollte das Formular nicht editierbar sein.
template string - n/a Das Attribut template kann einen beliebigen Text enthalten. Die Implementierung zur Generierung des Formulars kann eine Liste gültiger Werte für dieses Attribut festlegen. Das Template sollte alle erforderlichen Informationen liefern, welche die Implementierung zur Darstellung des Formulars benötigt.
title string - n/a Title ist ein Beschriftungstext, der in der Nutzeroberfläche angezeigt werden sollte wenn das Objekt anzeigt wird.
Beschreibung

Formulare sind benannte Objekte, welche als Eingabe für Formular- und Oberflächengeneratoren benutzt werden. Sie müssen mindestens eine Basistabelle und ein Template festlegen. Die Basistabelle darf natürlich auch ein (updatable) View sein.

Implementierung

Formulare sind kein Feature der Datenbank. Sie müssen für alle bekannten DBMS durch Software generiert werden. Der Inhalt des Formulars basiert jedoch auf dem Datenbankschema, welches in der XDDL-Datei definiert ist. Basierend auf diesen Informationen sollte die Implementierung Select-, Update-, Insert- oder Delete-Anweisungen selbstständig generieren.

Darstellung

In einer Ausgabe als HTML, sollten Formulare als Form-Elemente angezeigt werden. Die Darstellung des Formulars muss im mit dem Form-Element verbundenen Template definiert sein.

Element Fieldset

  ELEMENT fieldset (description?, grant*, input+)
  ATTRIBUTE
       name     string
       title    string
  
Attribute
Attribut Typ Pflicht Default Beschreibung
name string - default Ein eindeutiger Name welcher diesen Formularabschnitt identifiziert. Sollte kleingeschrieben und ein valider XML-, SQL-Bezeichner sein.
title string - n/a Title ist ein Beschriftungstext, der in der Nutzeroberfläche angezeigt werden sollte wenn das Objekt anzeigt wird.
Beschreibung

Formularabschnitte dienen dem Zweck, Formularfelder zu gruppieren. Wenn ein Abschnitt nicht benannt ist, so wird standardmäßig der Name "default" vergeben. Achten Sie folglich darauf, dass lediglich 1 unbenannter Abschnitt in einem Formular vorkommen darf. Der Name eines Abschnitts muss für das Formular eindeutig sein.

Darstellung

In HTML sollten Formularabschnitte Durch Verwendung des Tags "fieldset" dargestellt werden. Das Attribut title kann als Wert für ein "legend"-Element des Tags verwendet werden.

Element Input

  ELEMENT input (description?, grant*, action*)
  ATTRIBUTE
       name        string
       label       string
       hidden      bool
       readonly    bool
       cssclass    string
       tabindex    integer
  
Attribute
Attribut Typ Pflicht Default Beschreibung
name string yes n/a Ein eindeutiger Name welcher das Formularfeld identifiziert. Sollte kleingeschrieben und ein valider XML-, SQL-Bezeichner sein.
label string - n/a Das Attribut label ist ein Beschriftung welche Informationen zum Inhalt des Formularfelds liefert.
hidden bool - no Das Formularfeld darf in der Nutzeroberfläche nicht sichtbar sein, wenn der Wert dieses Attributs auf "yes" gesetzt wird. Andernfalls soll das Attribut ignoriert werden.
readonly bool - no Sie können das Formularfeld auf schreibgeschützt setzen, um zu verhindern dass Änderungen vorgenommen werden. Ein Formularfeld, welches schreibgeschützt ist, kann nicht editiert werden.
cssclass string - n/a Eine HTML-basierte Nutzeroberfläche sollte Id-Attribute und CSS-Klassen für Formularfelder automatisch bereitstellen. Zusätzlich kann dieses Attribut verwendet werden um eine nutzerdefinierte CSS-Klasse hinzuzufügen.
tabindex integer - 0 Eine HTML-basierte Nutzeroberfläche sollte den Tab-Index für Formularfelder automatisch erstellen. Alternativ kann dieses Attribut verwendet werden um einen nutzerdefinierten Wert festzulegen. Der Tab-Index definiert die Reihenfolge, in welcher Formularfelder den Eingabefokus erhalten, wenn der Nutzer die Tabulatortaste des Keyboards drückt.
Beschreibung

Das Input-Element bezeichnet ein einzelnes Formularfeld in einem Fieldset.

Darstellung

Eine HTML-basierte Nutzeroberfläche sollte dies darstellen als "input"-Element oder etwas vergleichbares, abhängig vom Typ der zugrundeliegenden Spalte. Wenn das Attribute "readonly" auf "yes" gesetzt ist, sollte das Element nicht editierbar sein. Die Implementierung sollte CSS Class- und/oder Id-Attribute für jedes Formularfeld automatisch erzeugen. Zusätzlich muss, wenn das Attribut "cssclass" gesetzt wird, dieser Wert zum Attribut Class des Tags hinzugefügt werden. Wenn das Attribut "tabindex" angegeben ist, muss es in die Attributliste des Steuerelements kopiert werden. Falls das "input"-Element durch mehr als ein HTML-Element umgesetzt wird, so muss das Attribut tabindex auf das erste editierbare Feld gesetzt werden.

Element action

  ELEMENT action (#PCDATA)
  ATTRIBUTE
       name     string
       language string
       title    string
       label    string
       icon     image
  
Attribute
Attribut Typ Pflicht Default Beschreibung
name string yes n/a Ein eindeutiger Name welcher die Aktion identifiziert. Sollte kleingeschrieben und ein gültiger Funktionsname sein.
language string - n/a Die Programmiersprache in welcher die Aktion implementiert ist. Kann eine beliebige Zeichenkette sein. Falls diese Option nicht angegeben ist, kann die Implementierung selbst festlegen, wie die Aktion zu behandeln ist. Das Yana Framework wird in die Aktion in diesem Fall als Namen der Aktion eines Plugins interpretieren.
title string - n/a Attribut title zur Verwendung in anklickbaren Links.
label string - n/a Beschriftung von anklickbaren Links.
icon image - n/a Grafikdatei zur Verwendung als Icon für anklickbare Links.
Beschreibung

Das Action-Element soll ausgelöst werden wenn der Nutzer das Formularfeld anklickt.

Darstellung

Die Darstellung des Elements hängt von den Attributen language und name ab.

Für die Sprache PHP, oder wenn das Attribut language leer ist, wird empfohlen zur Darstellung einen "A"-Tag neben dem Formularfeld zu verwenden. Der Inhalt des HTML-Tags besteht aus dem Attribut label und/oder einem Image-Tag, dessen Attribut "src" aus dem Attribut "icon" übernommen wird. Das Attribute "href" des HTML-Tags sollte eine Referenz auf PHP_SELF und den Namen der Aktion als Parameter beinhalten, in der Form "action={name}". Als Wert des Feldes sollte als zweiter Parameter "target[{primärschlüssel}]={wert}" angegeben werden.

Beispiel:

  <action name="foo" label="klick mich"
      icon="common_files/icon.png"/>

  <a href="?action=foo&target[12]=bar">
    klick mich
    <img src="common_files/icon.png"/>
  </a>

Für die Sprache JavaScript, muss das Attribut name eine gültige Bezeichnung für ein Ereignis in JavaScript sein, und der Abschnitt PCDATA muss gültigen JavaScript-Code enthalten.

Beispiel:

  <action name="onchange" language="javascript">validate(this)</action>

  <input ... onchange="validate(this)"/>

Wenn ein "label" oder "icon" angegeben sind, soll die Aktion ausgeführt werden wenn das "label" und/oder "icon" angeklickt worden sind.

Beispiel:

  <action name="onchange" label="prüfen"
      icon="common_files/validate.png"
      language="javascript">validate('foo')</action>

  <input ... onchange="validate('foo')" />
  <a onclick="validate('foo')">
      prüfen
      <img src="common_files/validate.png"/>
  </a>

Element Event

  ELEMENT event (#PCDATA)
  ATTRIBUTE
       name     string
  
Attribute
Attribut Typ Pflicht Default Beschreibung
name string yes n/a Name des Ereignisses welches ausgelöst werden soll (definiert vom gewählten Template)
Beschreibung

Das Ereignis wird ausgelöst, wenn der Benutzer im angezeigten Formular eine bestimmte Aktion auslöst, wie das Absenden des Formulars, das Anklicken eines Downloads, oder was vergleichbares. Die verfügbaren Typen von Ereignissen müssen durch das gewählte Template definiert werden. Die Implementierung kann selbst definieren, wie das Ereignis ausgewertet werden soll. Das Attribut "name" definiert den Namen des Ereignisses, und der PCData-Abschnitt den Namen der aufzurufenden Funktion.

Beispiel: Ereignis "submit" mit PCData "foo" wird die Formulardaten über die Methode POST zur Server-Anwendung mit der URL "?action=foo" senden, wenn der Benutzer das Formular absendet (den "submit" Button betätigt). Die Implementierung muss definieren, was "submit" für im Falle des angegebenen Formulartemplates tatsächlich bedeutet.

Autor: Thomas Meyer, www.yanaframework.net