Anzeige
Anzeige
Artikel
Artikel merken

Vorstellung der W3C-Recommendation XForms 1.0: Reine Formsache

HTML-Formulare waren und sind ein Graus: Mit hohem Aufwand lassen sich oft nur bescheidene Ziele erreichen. Inzwischen arbeitet das W3C an einem neuen Standard für HTML-Formulare: XForms.

5 Min. Lesezeit
Anzeige
Anzeige

Formulare sind ein essenzieller Bestandteil des WWW. Bei der Eingabe eines Suchbegriffs in den Suchmaschinen, in Foren, Gästebüchern, Onlineshops und selbst im TYPO3-Backend: überall Formulare. Selbst wenn dem W3C inzwischen das Image einer praxisfernen und rein akademischen Einrichtung anhaftet, macht XForms den Eindruck, mehr Probleme lösen zu können als neue zu verursachen. Im neuen XForms-Standard kommen alte Bekannte wie XML Schema und XPath zum Einsatz. Dadurch können Zusatzinformationen auf elegante Weise in Formulare eingebettet werden. Browser werden diesen Mehrwert interpretieren können und entsprechende Funktionen bereitstellen. Das W3C verfolgt strikt seine Strategie, möglichst alle neuen Entwicklungen mit Hilfe von XML zu implementieren. Da verwundert es nicht, dass neben der Formulardefinition auch Formulardaten in XML strukturiert sind. XForms sind keine eigenständigen Dokumente, sondern lassen sich unter Verwendung von Namespaces in fast beliebige andere Dokumente (z. B. SVG) integrieren.

Trennung von Modell und Benutzerschnittstelle

Anzeige
Anzeige

Wie so oft liegen die Hauptvorteile einer Neuentwicklung in der sauberen Trennung verschiedener Ebenen. Mit XForms wird ein Formular in Modell und Benutzerschnittstelle aufgeteilt. Dadurch wird die Trennung zwischen Inhalt und Layout, die Wiederverwendung in verschiedenen Kontexten sowie die Verarbeitung auf unterschiedlichen Ausgabegeräten gewährleistet. XForms hält sich somit an die MVC-Architektur. Das Modell wird im Kopf des Dokumentes durch <model> definiert. Hier werden in gewohnter XML-Manier die eigentlichen Daten (Instance Data), zugehörige Typdefinitionen, eventuelle Abhängigkeiten (Bindings) und Versandinformationen (Submisson) festgelegt. Das schema-Attribut lässt die Herzen von XML-Schema-Freunden höher schlagen. Hier lässt sich ein Schema-Dokument bestimmen, gegenüber dem der XForms-Prozessor die Formulardaten validiert.

Als Beispiel betrachten wir zunächst ein einfaches, traditionelles Suchformular:

Anzeige
Anzeige
HTML
<html> <head><title>Suche</title> </head>
<body>
	<form action="http://foo.com/search" method="get">Suchbegriff
	<input type="text" name="s"><input type="submit" value="Such">
</form></body></html>

Listing 1

Da in XForms das Modell und die Benutzerschnittstelle getrennt werden, definieren wir im <head> zunächst das Modell:

Anzeige
Anzeige
XFORMS
<model>
	<submission action="http://foo.com/search"  method="get" id="s"/>
</model>

Listing 2

An einer beliebigen Stelle im <body> wird nun das Formularfeld selbst angegeben. Das <form>-Tag wird nicht mehr benötigt.

XFORMS
<input ref="q">
	<label>Suchbegriff </label>
</input>
<submit submission="s">
	<label>Such</label>
</submit>

Listing 3

Anhand dieses Beispiels lässt sich erkennen, dass der Umstieg nicht schwer fällt. Hinzu kommen neue Features und Vereinfachungen, die im Folgenden demonstriert werden.

Anzeige
Anzeige

Datenstrukturen und Initialisierungsdaten

Um eine Datenstruktur der über das Formular eingegebenen Daten definieren zu können, wird das <instance>-Tag verwendet. Hierbei handelt es sich um ein XML-Dokument, das beliebig strukturiert sein kann.

XFORMS
<model>
	<instance>
		<data xmlns=""><s>Suchbegriff</s></data>
</instance>
[...]

Listing 4

In diesem Beispiel wird ebenso ein Initialisierungswert angegeben, mit dem das Formularfeld zu füllen ist. Die so definierten Daten müssen nicht zwingend im Formular vorkommen. Auf diese Weise wird das bekannte <input type=“hidden“> abgelöst. Um Initialisierungsdaten von einer externen Quelle einzulesen, reicht ein einfaches Attribut-Wert-Paar im <instance>-Element:

XFORMS
<instance xsrc="http://foo.com/tmp/0815.xml"/>

Listing 5

Würde beispielsweise ein CMS die gesamten Daten in XML-Strukturen speichern und verwalten, würde dieser Ausdruck genügen, um ein Formular mit den editierbaren Werten zu füllen. Mit Hilfe von XPath und dem ref-Attribut können sogar beliebige XML-Dokumente editiert werden. Da XHTML selbst auch XML ist, gilt das auch für solche Dokumente:

Anzeige
Anzeige
XFORMS
<model>
	<instance xsrc="http://www.foo.com/bar.html"/>
	<submission action="http://www.foo.com/bar.html" method="put" id="change"/>
</model>
[...]
<select1 ref="/h:html/h:head/h:title">
	<label>Wähle den Titel des Dokumentes:</label>
	<item>
		<label>Apfel ist der Titel</label>
		<value>Apfel</value>
	</item>
	<item>
		<label>Banane</label>
		<value>Banane</value>
	</item>
</select1>
	<submit submission="change">
		<label>Titel ändern</label>
	</submit>

Listing 6

Um mit XPath arbeiten zu können, muss das angesprochene Dokument natürlich valides XHTML sein. Damit das Dokument auch tatsächlich verändert werden kann, muss der Server die put-Methode akzeptieren.

Controls

Im oben genannten Beispiel wurde das select-Control verwendet. Intuitiv würde man vermuten, dass es sich hierbei um eine klassische Auswahlliste mit <select> und <option> handelt. Hier liegt jedoch ein entscheidender Unterschied. In XForms geht man davon aus, dass es sich grundsätzlich um eine Auswahlmöglichkeit verschiedener Werte handelt. Mittels CSS kann gesteuert werden, ob diese Auswahl in Form von Checkboxen, Radio-Buttons, Drop-Down-Menüs oder ähnlichem präsentiert wird. XForms bietet viele Extras, die ansonsten nur umständlich realisierbar wären. Für einen Kontaktlinsen-Shop ist beispielsweise zur Angabe der benötigen Stärke eine Bereichsdefinition komfortabler als eine Wert-für-Wert-Auflistung:

XFORMS
<range ref="staerke" start="-20" end="20" step="0.25">

Listing 7

Mit Hilfe des ouptput-control-Elements und einem XPath-Ausdruck können innerhalb von Formularen zum Beispiel Berechnungen durchgeführt werden:

Anzeige
Anzeige
XFORMS
Posten: <output value="preis * anzahl "/>

Listing 8

Kontrollstrukturen und Validierung

Da in XForms bestehende XML-Technologien Einzug halten, kann XML Schema zur Definition eigener oder bestehender Datentypen eingesetzt werden. Auf Basis dieser Definitionen kann direkt beim Client eine Validierung der eingegebenen Daten und die Ausgabe von Meldungen erfolgen. Da man für ein ordentliches XML-Dokument auch ein entsprechendes Schema benötigt, kann man dieses wiederverwenden und spart sich gleichzeitig lästigen Skript-Aufwand. Durch vielfältige Kontrollstrukturen, die direkt im <model>-Element definiert werden können, wird Implementierungsaufwand eingespart. Beispielsweise können Pflichtfelder (required), Berechnungen (calculate) und Datentypen (type) direkt angegeben werden. Das ist zwar
auch mit JavaScript zu bewerkstelligen, aber die Probleme damit sind
vielfältig:

XFORMS
<model>
	<bind nodeset=“ankunft“ type=“xsd:date“ required=“true()“ />
	<bind nodeset=“dauer“ calculate=“days-from-date(../abfahrt) – days-from-date(../ankunft)“ />
</model>

Listing 9

Unterstützung

Allen Vorteilen zum Trotz gilt es, eine bittere Pille zu schlucken. Anders als bei neuen serverseitigen Technologien brauchen clientseitige Neuentwicklungen eine halbe Ewigkeit bis zur Praxistauglichkeit. Speziell bei XForms wird dieser Prozess durch den intensiven Einsatz anderer neuer Technologien beeinflusst. Schließlich ist XForms Teil des Standards XHTML 2.0 und auch XPath kann nicht lange ignoriert werden. Auf Seiten der Browserhersteller kann man bisher nicht von einer breiten Unterstützung sprechen. Lediglich der experimentelle und freie X-Smiles Browser bietet eine annehmbare Unterstützung. Firefox muss durch eine eigene Extension erweitert werden und für den Microsoft Internet Explorer gibt es beispielsweise das formsPlayer Plugin. Darüber hinaus gibt es kaum Ernst zu nehmende clientseitige JavaScript- und serverseitge Implementierungen.

Fazit

Die Notwendigkeit für einen neuen Formularstandard sieht man leicht daran, dass parallel zur Entwicklung von XForms bereits andere Standards vorgeschlagen wurden. So haben 2005 Mozilla und Opera „Web Forms 2.0“ als W3C-Standard vorgeschlagen. Auch Microsoft enttäuscht nicht: Mit der Einführung von Office 2003 gab es bereits das XForms-Pendant „InfoPath“. Nicht zuletzt beschäftigt sich Adobe im Rahmen des PDF-Standards ebenfalls seit Jahren mit Formularen. Bis sich dieses Durcheinander etwas sortiert hat und XForms den Status einer Recommendation (letzte Aktualisierung 14. März 2006) verlassen hat, werden wir uns mit alt hergebrachtem Scripting herumschlagen müssen. Einen schnellen Einstieg in die Materie bieten die XForms FAQ [3] und „XForms for HTML Authors“ [4]. Wer sich intensiver mit XForms beschäftigen möchte, findet im Web zahlreiche Informationen oder nimmt sich „XForms Essentials“ von Micah Dubinko zur Hand. Kenntnisse in XPath und XML Schema sollten dabei zumindest rudimentär vorhanden sein.

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
Schreib den ersten Kommentar!
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige