Markup for applications
Declarative: not how, but what
Turing complete
Separation of data and control: model+view
Intent-based controls
Adaptive
Accessible
Implementation neutral: native, client-side, server-side, network based
Dutch National Weather Service
BBC
Xerox copiers
Ship-builders
Government
Banks
Petrol Pumps
...
Experience with projects defined with XForms has shown:
Around a ten-times saving in costs, compared with traditional methods.
Data: Local or remote instances, both source and destination
Devices can communicate by sharing instances.
Properties bound locally to data:
Controls are intent-based rather than presentation oriented:
Rather than specifying that a control consists of radio buttons, or a menu, XForms specifies what the control does, for instance that it selects one item from a list of items. CSS or similar can be used to provide the necessary presentation.
This approach allows the same XForm to be used across different devices without change.
The labels may be populated from local or external sources (good for localisation and multi-lingual environments)
Here are three identical controls, just styled differently:
<select1 ref="sex" label="gender"> <item label="Male" value="M"/> <item label="Female" value="F"/> </select1>
The labels and values can be initialised from external files. So adding a new language to a form is just a case of adding the labels for that language to the external file. You don't have to change the form.
<select1 ref="lang" label="{instance('labels')/lang}">...
Here are two identical controls. The first is bound to a value without any type information. The second has been bound to a value with a type:
PC
Mobile
Voice
Instant messenger
Headless
Server-side implementations can sniff the device, and serve a tailored version.
Native (eg OpenOffice)
Client-side (eg XSLTForms)
Server-side (eg Orbeon, BetterForms)
Many Enterprise implementations: many companies use XForms either internally or externally, and have their own implementations, either for internal use or for licensing. For instance:
A tutorial: http://www.w3.org/MarkUp/Forms/2010/xforms11-for-html-authors/
For an overview of all features, elements and attributes of XForms 1.1, see the XForms 1.1 Quick Reference.
It's not easy reading, but the final arbiter in questions of doubt is the XForms 1.1 Specification.
Living XForms 2.0 Draft: http://www.w3.org/MarkUp/Forms/wiki/XForms_2.0
The implementation used for the examples in this talk is XSLTForms.