The W3C XForms Working Group has released the XForms 1.0 specification as a Proposed Recommendation and welcomes public review through August 29, 2003. XForms is "an XML application that represents the next generation of forms for the Web. By splitting traditional XHTML forms into three parts -- XForms model, instance data, and user interface -- it separates presentation from content, allows reuse, and gives strong typing. This design strategy reduces the number of round-trips to the server, as well as offering device independence and a reduced need for scripting. XForms is not a free-standing document type, but is intended to be integrated into other markup languages, such as XHTML or SVG." An XForms Basic Profile is still being edited and is expected to be published as a separate document.
XForms 1.0. Edited by Micah Dubinko (Cardiff Software), Leigh L. Klotz, Jr. (Xerox Corporation), Roland Merrick (IBM), and T. V. Raman (IBM). W3C Proposed Recommendation 01-August-2003. Produced by members of the W3C XForms Working Group as part of the XForms Activity within the W3C Interaction Domain. Version URL: http://www.w3.org/TR/2003/PR-xforms-20030801/. Latest version URL: http://www.w3.org/TR/xforms/. Previous version URL: http://www.w3.org/TR/2002/CR-xforms-20021112/. Also available as a single HTML file, diff-marked HTML, ZIP archive.
"HTML forms lack a number of features common in software used in database and workflow applications. These are applications where an on-line document or form is passed from office to office, for example, an invoice or purchase order. W3C is now working on a complete revision to make forms more portable and easier to work with. The form fields will be tied to a definite data model and less to presentation, making it easier to use data in form fields for processing by other software; for instance, to generate reports, statistics etc. The new XForms specification will also make it easier to cater for regional variations for currency values, phone numbers, dates and postal addresses, and make it possible to cope with different kinds of input, e.g., microphones, cameras, scanners and pen-based input for signatures and drawings.
XForms has three functional layers:
- Presentation controls what the form looks like on the screen or when printed. XForms UI tags are used for text boxes, radio buttons, menus, etc. in combination with SVG and XHTML...
- Logic allows expession of constraints on or between fields and groups, covering input validation, calculated fields, and dependencies on other fields.
- Data involves an XML Schema defining the names of all fields. Forms are submitted as XML data. You can also suspend a form and resume where you left off. A simplified syntax is available for easier authoring."
It will become increasingly common for peripheral devices to include embedded Web servers. XForms have the potential for configuring peripherals without the need for custom device drivers. For example, suppose you want to do the page setup for printing. An XForm might provide the interface to configure the printer via its own embedded Web server, literally a server installed in the printer. This is on the assumption that all the devices will be connected to the network in some manner..." [adapted from the XForms Activity page]
"XForms has been designed on the basis of several years' experience with HTML forms. HTML Forms have formed the backbone of the e-commerce revolution, and having shown their worth, have also indicated numerous ways they could be improved.
The primary difference when comparing XForms with HTML Forms, apart from XForms being in XML, is the separation of the data being collected from the markup of the controls collecting the individual values. By doing this, it not only makes XForms more tractable by making it clear what is being submitted where, it also eases reuse of forms, since the underlying essential part of a Form is no longer irretrievably bound to the page it is used in.
A second major difference is that XForms, while designed to be integrated into XHTML, is no longer restricted only to be a part of that language, but may be integrated into any suitable markup language.
XForms has striven to improve authoring, reuse, internationalization, accessibility, usability, and device independence..."
In the XForms approach, forms are comprised of a section that describes what the form does, called the XForms Model, and another section that describes how the form is to be presented... XForms 1.0 defines a device-neutral, platform-independent set of form controls suitable for general-purpose use. The controls are bound to the XForms Model via the XForms binding mechanism, in this simple case using the ref attribute on the controls...
Providing XML Instance Data: The XForms Processor can directly submit the data collected as XML. XForms processing keeps track of the state of the partially filled form through this instance data. Initial values for the instance data may be provided or left empty as in the example. Element instance essentially holds a skeleton XML document that gets updated as the user fills out the form. It gives the author full control on the structure of the submitted XML data, including namespace information. When the form is submitted, the instance data is serialized as an XML document.
Constraining Values: XForms allows data to be checked for validity as the form is being filled. In the absence of specific information about the types of values being collected, all values are returned as strings, but it is possible to assign types to values in the instance data... By specifying an additional component, model item properties, authors can include rich declarative validation information in forms. Such information can be taken from XML Schemas as well as XForms-specific additions...
Multiple Forms per Document: XForms processing places no limits on the number of individual forms that can be placed in a single containing document. When a single document contains multiple forms, each form needs a separate model element, each with an id attribute so that they can be referenced from elsewhere in the containing document. In addition, form controls should specify which model element contains the instance data to which they bind. This is accomplished through a model attribute that is part of the binding attributes. If no model attribute is specified on the binding element, the nearest ancestor binding element's model attribute is used, and failing that, the first XForms Model in document order is used. This technique is called 'scoped resolution', and is used frequently in XForms." [adapted from 'Section 2. Introduction to XForms']
- XForms 1.0. W3C Proposed Recommendation 01-August-2003.
- XForms 1.0 public test suite. "This XForms 1.0 test suite has been created by the XForms working group during the CR phase. Test cases are categorized by chapter, and the cover page for the test cases for each chapter is linked from this page. Test cases for each chapter are maintained in a separate directory."
- XForms 1.0 Implementation Report
- XForms Patent Statements
- Comments: send email to email@example.com
- "W3C Announces Creation of a New XForms Activity"
- W3C XForms: The Next Generation of Web Forms
- W3C XForms Activity
- W3C Interaction Domain
- "XML and Forms" - Main reference page.