- XForms
XForms is an
XML format for the specification of a data processing model for XML data anduser interface (s) for the XML data, such as web forms. XForms was designed to be the next generation ofHTML /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 commondata manipulation tasks.XForms, much like XHTML 2.0 which is currently under development
as of 2008 and within which XForms will be embedded, differs from previous versions of XHTML.XForms 1.0 (Third Edition) was published on
29 October 2007 . The original XForms specification was made an officialW3C Recommendation on14 October 2003 .XForms 1.1, which introduces a number of improvements, reached the status of W3C Candidate Recommendation on
29 November 2007 .Differences from HTML forms
Unlike the original HTML forms, the creators of XForms have used a Model-View-Controller 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.
An XForms document can be as simple as an HTML form (by only specifying the submission element in the model section, and placing the controls in the body), but XForms includes many advanced features. For example, new data can be requested and used to update the form while it is running, much like using
XmlHttpRequest /AJAX except without scripting. The form author can validate user data against XML Schema data types, require certain data, disable input controls or change sections of the form depending on circumstances, enforce particular relationships between data, input variable length arrays of data, output calculated values derived from form data, prefill entries using an XML document, respond to actions in real time (versus at submission time), and modify the style of each control depending on the device they are displayed on (browser versus mobile versus text only, etc.). There is often no need for any scripting with languages such as JavaScript.Like legacy 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 chop and modify data upon submission, unlike the case with legacy forms where in general the data needs to be parsed and manipulated on a case by case basis. 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 fromXML Schema s, and XForms can be converted to legacy XHTML forms: this is basically how server side XForms work today.oftware support
At the time of this writing, no widely used
web browser supports XForms natively. However, various browser plugins and client-side extensions exist. The following lists some client-side implementations:* The Firefox XForms extension [http://www.mozilla.org/projects/xforms/] is part of the Mozilla Project, and is compatible with releases of Firefox and Mozilla, and is built with nightly builds on most platforms as well as of version 0.8.4 (February 6th, 2008). Full XForms 1.0 SE support is not complete but covers most of the specification with a notable exception of attribute-based repeating used in HTML tables.
*
IBM Lotus Forms supports development and deployment of XForms-based pure XML forms. [http://www.ibm.com/software/lotus/forms/trials.html Trial downloads] are available of an Eclipse-based visual design environment and a client-side viewer that can run XForms-based forms both in the web browser and as a standalone desktop application.
* [http://www.formsPlayer.com/ formsPlayer] extends Internet Explorer 6+ to include not only support for the full XForms standard, but also to provide DOM 2 Events, DOM 3XPath ,XML Events and the DOM 3 Implementation Registry.
* [http://www.formfaces.com/ FormFaces] is a pureJavaScript processor. This means that XForms+HTML can be sent directly to the browser where JavaScript translates XForms controls into regular HTML form controls and processes the bindings directly within the browser. FormFaces is compatible with browsers that implement XHTML 1.0, ECMAScript-262 3rd Edition, and DOM Level 2 which includesInternet Explorer ,Mozilla , Firefox, Opera,Konqueror , Safari, andNetFront .* Convex is another client-side solution for IE6. It uses a hidden Java applet and is available as open source from the [http://www.chibaxforms.org Chiba] project. It uses the same engine as the server-side solution (see below) while offering the experience of a local implementation.
The following implementations are pure client-side implementations that do not reside in a web browser:
*
IBM Lotus Forms supports the use of XForms-based pure XML forms within a web browser but also as a standalone application.*
OpenOffice.org versions 2.0 and greater support XForms Fact|date=July 2008.
* [http://www.xsmiles.org X-Smiles] is a client-side Java implementation (open source license).X-Smiles supports XForms along with a lot of current XML languages, such asXHTML , CSS, and SVG.
* [http://deng.com.br/ DENG] is a lightweight XML Browser Engine that compiles XForms into Flash. DENG has support for CSS-3 and XForms.
* [http://www.picoforms.com PicoForms] has a client-side Java browser implementation supporting XForms. They have demonstration versions of their processor with support for XHTML, CSS, XML Events, and XForms for J2ME-compatible mobile devices.
* [http://www.datamovil.info DataMovil] has a client-side implementation of Xforms for mobile devices supporting J2ME CDC/Personal Profile and CLDC/MIDP.XForms can also be used today through various server-side technologies which convert XForms to HTML forms and other widgets (typically based on Ajax technology) on the fly and transparently to users. Implementations include:
* [http://chibaxforms.org/ Chiba] (open source license)
* [http://www.orbeon.com/ Orbeon Forms] (open source license)The following implementations provide a server-side compiler that produces HTML and JavaScript from XHTML/XForms documents:
*
IBM Lotus Forms WebForm Server supports development and deployment of XForms-based pure XML forms with a zero footprint on the client-side by transforming to HTML and JavaScript and AJAX calls to facilitate dynamic behaviors described by the XForms-based document. (Commercial product)
* [http://ajaxforms.sourceforge.net AJAXForms] transforms XHTML/XForms to HTML with Javascript (open source license - inactive since November 2006)
* [http://www.tomatosystem.co.kr/tomato/client.contents.serv?ID=3-1 eXtremeBuilder (Korean only)] RIA solution based on XHTML/XForms with JavascriptImplementation technologies compared
FormFaces, AJAXForms, Chiba and Orbeon Forms are based on Ajax technology. The amount of server-side and client-side processing varies across these implementations. For example, FormFaces provides 100% XForms client-side processing and data model updates via pure Ajax processing on the XForms standard. The others use server-side Java XForms processing transcoding to Ajax markup prior to delivering the content to the browser. Both techniques can work across browser. 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 need 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, require fewer server fetches. They can also present themselves in more user-friendly ways (i.e. controls that do not already exist in the browser, like sliding scales, can be added to a page), although the advent of JavaScript widgets is currently offsetting that benefit.
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.
FormFaces provides 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 is written 100% in Ajax. The tradeoff is that compared to other solutions, more JavaScript code is initially downloaded to the client (JavaScript can be cached on the client), and XML Schema validation is not yet supported.
XForms as part of the XRX Application Architecture
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 technolgoies (XForms on the client, REST interfaces and XQuery on the server) is collectivly 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 [http://www.oreillynet.com/xml/blog/2008/05/xrx_a_simple_elegant_disruptiv_1.html XRX:Simple, Elegant, Disruptive]XForms for Mobile Devices
Benefits
XForms provides specific benefits when used on mobile devices:
* User interfaces using XForms require fewer round trips with the server and are in that sense more self contained than user interfaces using HTML 4 forms.
* Capabilities of mobile devices vary greatly; consequently the amount of the work involved in generating different user interfaces for different devices is of particular concern in the mobile world. XForms has been designed from the ground up to allow forms to be described independently of the device, which reduces the amount of work required to target multiple devices.
* XForms reduces the need for JavaScript, which is particularly interesting as JavaScript support varies greatly on mobile devices and cannot be widely relied upon. This also allows systems on which JavaScript is disabled for security concerns to continue to operate flawlessly.Mobile Implementations
Despite the benefits of XForms for mobile devices, XForms on mobile devices is still an emerging technology at best. So far, PicoForms, SATEC(DataMovil), IBM, Oracle and FormFaces have produced significant initiatives:
* [http://www.picoforms.com PicoForms Micro Edition Browser] supports XForms and runs on cell phones supporting MIDP 2.0 and CLDC 1.x. It also supports PDAs including Palm and Pocket PCs.
* [http://www.datamovil.info DataMovil] is a platform for the development and deployment of mobile applications that includes a client that encapsulates a XForms processors. It runs on a variety of devices including TabletPC, UMPC, PDAs and advanced phones. It is Java based and runs on J2ME CDC/Personal Profile and CLDC/MIDP Java Virtual Machines.
* IBM Forms for Mobile Devices is an implementation of XForms that run on Palm-powered devices and shows how XForms can be used to create form-based enterprise applications running on mobile devices. This package has been released by IBM on alphaWorks, their site showcasing emerging technologies.
* [http://www.oracle.com/technology/tech/wireless/mobilebrowser.htm Oracle Wireless Client] has released a preview of their Wireless Client in March 2004. Despite its name, the preview contains no software that run on a mobile device. Instead, it is delivered in the form of a plug-in for Internet Explorer, hence maybe the "preview" in the name. The plug-in run XForms client-side, just like the browser would if it supported XForms natively.
* [http://www.formfaces.com FormFaces Mobile Solution] is a 100% JavaScript implementation targeted to run within [http://www.access.co.jp/english/ NetFront] browser (any ECMA-262 3rd Edition, and DOM Level 2 compatible browser) which supports many OS deployments including Palm and Pocket PC mobile devices.
* [http://mobile.yahoo.com/pdf/BlueprintDevGuide.pdf] The Yahoo go application's technology is called Blueprint, and it is based on XForms, according to its documentation.References
* cite book
author = T. V. Raman
title = XForms: XML Powered Web Forms
publisher =Addison-Wesley
location = Boston
year = 2004
id = ISBN 0-321-15499-1
* cite book
first = Micah
last = Dubinko
title = XForms Essentials
publisher =O'Reilly & Associates
location = Sebastopol, CA; Farnham
id = ISBN 0-596-00369-2
url = http://xformsinstitute.com/essentials/
year = 2003 (text available under the GNU Free Documentation License)External links
* XForms Resources at W3C
** [http://www.w3.org/MarkUp/Forms/ The Next Generation of Web Forms]
** [http://www.w3.org/MarkUp/Forms/2003/xforms-faq.html XForms 1.0 Frequently Asked Questions]
** [http://www.w3.org/TR/xforms/ XForms 1.0 (Third Edition)] was a [http://www.w3.org/TR/2007/REC-xforms-20071029/ W3C Recommendation on 29 October 2007]
** A quick introduction to [http://www.w3.org/MarkUp/Forms/2003/xforms-for-html-authors.html XForms for HTML Authors] bySteven Pemberton
** [http://www.w3.org/MarkUp/Forms/2006/xforms-qr.html XForms Quick Reference]
** [http://www.w3.org/TR/xforms11/ XForms 1.1] was a [http://www.w3.org/TR/2007/CR-xforms11-20071129/ W3C Candidate Recommendation on 29 November 2007]* XForms Forums and News Resources
** [http://planetxforms.org/ Planet XForms]
** [http://www.xforms.org/ XForms Community Forum]
** [http://news.xforms.org/ XForms News Portal]* Articles about XForms
** [http://www.formsplayer.com/introduction-to-xforms Introduction to XForms] - an introductory tutorial, showing how to build forms that use Flickr and del.icio.us.
** [ftp://ftp.software.ibm.com/software/lotus/lotusweb/workplace/forms/Extending_SOA_with_XForms.pdf Extending Service-Oriented Architectures with XForms]
** [http://www.formsplayer.com/what-is-xforms What is XForms?]
** [http://xml.com/pub/a/2001/09/05/xforms.html What Are XForms?]
** [http://xml.coverpages.org/xmlForms.html Technology Reports: XML and Forms]
** [http://www-106.ibm.com/developerworks/xml/library/x-svgxf1.html SVG and XForms: A primer]
** [http://xtech06.usefulinc.com/schedule/detail/133 XForms: an alternative to Ajax?]
** [http://www.idealliance.org/proceedings/xml05/abstracts/paper74.HTML Enterprise-level Web Form Applications with XFDL and XForms]
** [http://www.ddj.com/184406031 XForms and Cause-and-Effect Programming]* Videos and Podcasts on XForms
** [http://blip.tv/file/133835 Mark Birbeck interviewed about XForms] by cubicgarden.com
** [http://www.ibm.com/developerworks/podcast/dwi/cm-int060507.html What XForms is, why it is a strategic technology, and recommended learning resources]
* [http://www.xml.com/pub/a/2005/02/09/xforms.html Ten Favorite XForms Engines]
** [http://www.chibaxforms.org/ Chiba]
** [http://www.x-smiles.org/ X-Smiles]
** IBM XML Forms Package
** [http://developer.novell.com/wiki/index.php/Novell_XForms_Explorer Novell XForms Explorer]
** [http://www.formsplayer.com/ formsPlayer - The XForms Toolkit]
** [http://claus.packts.net/deng/ DENG Modular XBrowser]
** [http://www.orbeon.com/ Orbeon Forms (formerly Orbeon PresentationServer (OPS))]
** [http://www.formfaces.com/ FormFaces]* Tools
** [http://xformsinstitute.com/validator XFV XForms Validator tool]
** [http://ajaxforms.sourceforge.net AJAXForms]
** [http://sourceforge.net/projects/xhtml-to-xforms XHTML to XForms converter] (XSLT stylesheet helping web authors to transform arbitraryXHTML forms to valid XForms documents)
** [http://blogs.nuxeo.com/sections/blogs/eric_barroca/2006_02_14_eclipse-apogee-xforms-engine-released Nuxeo's XForms engine] , an Eclipse/SWT component.* Blogs
** [http://www.ibm.com/developerworks/blogs/page/JohnBoyer IBM Lotus Forms Blog] by John Boyer on IBM developerWorks
** [http://www.orbeon.com/blog/ Orbeon's XForms Everywhere Blog]
** [http://www.formsPlayer.com/blog/ Skimstone - x-port's Blog (about XForms and formsPlayer)]
** [http://internet-apps.blogspot.com/ Internet Applications] - Mark Birbeck's blog about XForms, XBL, web apps, Web 2.0, and more.* Products that support XForms
**IBM Lotus Forms * Sample forms
** [http://www.mozilla.org/projects/xforms/samples.html Mozilla XForms Project - Sample Forms]
Wikimedia Foundation. 2010.