Hello World
Eine XML-Formular-Definition besitzt das Root-Element form.
Die XSD-Schemabeschreibung befindet sich in der Distribution im Package de.imatics.forms.schema
in der Datei form.xsd. Um bei der Entwicklung eines Formulars die Autovervollständigung
eines XML-Editors nutzen zu können, sollte in der Entwicklungsumgebung diese Schema-Datei der Schema-Location
http://www.imatics.de/forms/form.xsd zugeordnet werden, die in der XML-Deklaration anzugeben ist.
Da es keine Vermischung mit anderen Namespaces gibt, kann auf die Verwendung eines Namespaces durch Angabe
von noNamespaceSchemaLocation verzichtet werden.
Das form-Element enthält eine Liste von component, group oder repeat-Elementen.
Die letzten beiden können als Kind-Elemente weitere Komponenten, Gruppen oder Repeats enthalten.
Das erste Beispiel erzeugt ein einfaches Formular für ein Textfeld, das mit dem Wert "Hello World" vorbelegt ist.
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://www.imatics.de/forms/form.xsd">
<component name="hello" type="text" label="Text">
<default>Hello World</default>
</component>
</form>
Eine Komponente kann weitere Elemente enthalten, welche die Constraints für die Komponente definieren. Im Folgenden werden die wichtigsten davon kurz erläutert.
- validator Enthält weitere Validierer-Unterlemente, welche die Eingaberegeln für die Komponente festlegen.
Die Namen der möglichen Elemente entsprechen den Klassennamen der Validierer-Implementierung im Package
de.imatics.forms.validator. Großbuchstaben im Klassennamen werden dabei klein geschrieben und durch Bindestriche getrennt. Bei Angabe von<multiple-of .../>wird also derMultipleOfValidatorverwendet.
Logische Verknüpfungen verschiedener Validierer können durch eine hierarchische XML-Struktur mitand- undor-Elementen erzeugt werden. Dasvalidator-Element selbst fungiert selbst als UND-Verknüpfung der enthaltenen Bedingungen. - hidden / readonly
Diese Elemente enthalten ebenfalls Validierer als Unterlemente.
Abhängig vom Ergebnis der Validierung wird die Komponente ausgeblendet oder nicht editierbar dargestellt.
Wenn die Elemente keine Validierer enthalten ist das Ergebnis immer
true, so dass z.B.<hidden/>ein Feld dauerhaft ausblendet - renderer Ein oder mehrere Renderer, die für die Anzeige und Eingabe des Komponentenwertes
verwendet werden sollen. Wird kein Renderer-Element angegeben, wird der Standard-Renderer für die Komponente verwendet.
Das Elementrendererbesitzt das Attributtype. Damit können konzeptionell Renderer für verschiedene Medien angegeben werden. Für Html-Formulare ist dort der Werthtmlzu verwenden. Da derzeit nur Renderer für Html-Formulare existieren, kann auch der Default-Render-Type als Attribut imform-Element festgelegt werden
Als Klasse wird der vollständige Name der zu verwendenden Renderer-Klasse angegeben. Bei Renderern, die sich im Standard-Package für html-Renderer befinden, reicht auch der lokale Klassenname ohne den NamensteilRenderer - option-list
Definiert die Optionen, die für eine Komponente zur Verfügung stehen. Diese können dann von verschiedenen
Renderern zur Auswahl angeboten werden (z.B. DropdownRenderer). Die Optionen können durch eine feste Liste
von
option-Elemente vorgegeben werden oder durch eine Klasse, die eineOptionListFactoryimplementiert. Alternativ kann auch einCalculatorangegeben werden, der eine Liste von Werten erzeugt.
(siehe auch die Beispiele unter Beispiele / Optionen und Bäume) - option-list / option-tree
Ähnlich der
option-listkönnen einige Renderer Optionen in einer Baumstruktur bentötigen. Die hier angegebene Klasse implementiert eineTreeFactory - default Enthält ein Calculator-Element, dass den Default-Wert für eine Komponente liefert,
falls diese beim Laden des Formulars leer ist. Die Verwendung eines einfachen Textes wird als
ConstantCalculatorgeparst, der den enthaltenen Text liefert. - calculator Enthält ein Calculator-Element, das während der Bearbeitung des Formulars den Wert der Komponente auf Basis anderer Komponenten berechnet. Dabei kann ein Calculator als Parameter die Werte anderer Komponenten erhalten. Dieser Calculator wird dann sofort ausgeführt, sobald sich der Wert einer als Parameter referenzierten Komponente ändert.
Das "Hello World"-Beispiel kann auf diese Weise um Validierer und zusätzliche Renderer mit Options-Liste erweitert werden.
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://www.imatics.de/forms/form.xsd"
render-type="html">
<component name="hello" type="text" label="Text">
<validator>
<required/>
<length min="3"/>
</validator>
<renderer type="html" class="Text"/>
<renderer type="html" class="Dropdown"/>
<option-list>
<option value="Hello World"/>
<option value="Hallo Welt"/>
</option-list>
<default>Hello World</default>
</component>
</form>


