XForms is an XML format used for collecting inputs from web forms. XForms was designed to be the next generation of HTML / XHTML forms, but is generic enough that it can also be used in a standalone manner or with presentation languages other than XHTML to describe a user interface and a set of common data manipulation tasks.
XForms 1.0 (Third Edition) was published on 29 October 2007. The original XForms specification became an official W3C Recommendation on 14 October 2003, while XForms 1.1, which introduced a number of improvements, reached the same status on 20 October 2009.
In contrast to the original web forms (originally defined in HTML), the creators of XForms have used a model–view–controller (MVC) approach. The model consists of one or more XForms models describing form data, constraints upon that data, and submissions. The view describes what controls appear in the form, how they are grouped together, and what data they are bound to. CSS can be used to describe a form's appearance.
Like web forms, XForms can use various non-XML submission protocols (multipart/form-data, application/x-www-form-urlencoded), but a new feature is that XForms can send data to a server in XML format. XML documents can also be used to prefill data in the form. Because XML is a standard, many tools exist that can parse and modify data upon submission. Similar tools for legacy forms also exist. XForms is itself an XML dialect, and therefore can create and be created from other XML documents using XSLT. Using transformations, XForms can be automatically created from XML schemas, and XForms can be converted to XHTML forms.
At the time of this writing, no widely used web browser supports XForms natively. However, various browser plugins, client-side extensions and server/client solutions exist. The following lists some implementations:
FormFaces, AJAXForms, XSLTForms, betterFORM, Chiba, Orbeon and Smartsite Forms are based on Ajax technology. The amount of server-side and client-side processing varies between these implementations. For example, Ubiquity XForms, FormFaces and XSLTForms provide 100% XForms client-side processing and data model updates via pure Ajax processing on the XForms standard. The others use server-side Java/.NET XForms processing transcoding to Ajax markup prior to delivering the content to the browser. Both techniques can work across browsers. Each implementation is significantly different with respect to dependencies, scalability, performance, licensing, maturity, network traffic, offline capability, and cross browser compatibility. System architects should evaluate these constraints against their needs to determine potential risks and objectives.
Plugins like FormsPlayer and other client-side technology can have some benefits as well: because they integrate themselves into the browser, they will work with existing server architectures, can be more responsive, and require fewer server fetches.
The tradeoff between server-side and client plug-in solutions is where the software is maintained; either each client must install the required plug-in, or the server architecture must change to accommodate the XForms transcoder engine language technology. It is in theory possible to mix both of these solutions, for instance testing the browser for a client-side XForms implementation and serving native XForms in that case, and defaulting to a server solution in other cases.
Ubiquity XForms, FormFaces and XSLTForms provide a "zero software" solution on either the client or server: no new software needs to be installed on the client and the solution can be used in conjunction with any server-side architecture. This is possible because FormFaces and Ubiquity XForms are written 100% in Ajax and because XSLTForms is written in XSLT and in Ajax. The tradeoff is that compared to other solutions, more code is initially downloaded to the client (code can be cached on the client), and FormFaces does not yet support XML Schema validation. Furthermore, XForms submissions with replace "all" behaviour will typically not result in true page replacements and therefore break the normal back button behaviour.
Because XForms makes it easy to edit complex XML data there are many advantages to using XForms with native XML databases that frequently leverage REST interfaces. The combination of three technologies (XForms on the client, REST interfaces and XQuery on the server) is collectively known as XRX application development. XRX is known for its simple architecture that uses XML both on the client and in the database and avoids the transformations to object or relational data structures. See "XRX:Simple, Elegant, Disruptive".
XForms provides specific benefits when used on mobile devices:
Xfolite is a light-weight XForms client for the J2ME platform. It was originally created at Nokia Research Center, and it includes a DOM and XPath 1.0 implementation as well as an XForms engine that implements the XForms 1.1 specification almost completely. XFolite was released as beta software and should not be considered ready for production use as such. However, it does contain a mature XForms engine that has been designed to work with different UI implementations. XML Schemas and CSS are outside project scope, however. Xfolite is open source and licensed under the LGPL license, but is not being actively developed further.
JavaRosa is an XForms client written in Java Mobile Edition (J2ME), and supports a wide array of devices, from top-end smart phones and PDAs with large screens and abundant memory, to low-end devices like the Nokia 6085 and 2630. Making JavaRosa usable on low-resource devices is one of the project's highest priorities. JavaRosa 1.0 Alpha was released in September 2010.
ODK Collect is part of the Open Data Kit, and is an XForms client for Android devices. The client displays XForm in sequential order obeying form logic, entry constraints, and repeating sub-structures. Users work through the prompts and save the submission as completed or partially completed (allowing later revision), and can record pictures as well as their location using the phone's built-in camera and GPS device, respectively.
Group Complete is a mobile data collection system that includes Group Complete Mobile (GC Mobile), an XForms client for Android devices. GC Mobile provides an interface to create XForms on the mobile device as well as XForms data entry with capabilities similar to ODKCollect. Forms and data are stored in CouchDB databases allowing mobile workers to make changes to forms and data while offline, collaborate on data entry and share collected data with team members and backoffice data consumers in real-time. Group Complete is compatible with all major ODK systems. Group Complete was discontinued as of March 2012  and the code released in February 2013 as open source.
Edited: 2021-06-18 19:12:23