The goal of XForms resembles the goal we've mentioned for XML
throughout this book: to separate display from data. The hope for
XForms is that it will separate the user interface from the data and
logic, allowing the same form to be completed by users on a computer
desktop, personal digital assistant (PDA), or mobile phone.
The following are the goals of XForms as stated by the W3C's
XForms Working Group (you can find this list and much more at
www.w3.org/MarkUp/Forms/):
- Support for
handhelds, television, desktop browsers, printers, and scanners
- Richer user
interface to meet the needs of business, consumer, and device
_control applications
- Decoupled data,
logic, and presentation
- Improved
internationalization
- Support for
structured form data
- Advanced forms
logic
- Multiple forms
per page, and pages per form
- Suspend and
resume support
- Seamless
integration with other XML tag sets
The first step to creating a new standard is to identify goals.
Next, you need to create a standard to actually achieve those goals.
At the time of this writing, the W3C is in the process of mapping out
just how to achieve the goals outlined in the previous list.
It's speculated that XForms will be three separate standards: one
governing the data module, one governing the user interface, and one
defining protocols. The first of the three has already made it to the
Working Draft stage at the W3C and is appropriately titled "XForms
1.0: Data Model." (This information is based on the August 15, 2000
Working Draft.) The other two standards are not written yet.
According to the W3C, forms will be split into three layers (which
is the reason for the three separate specifications): presentation,
logic, and data:
- Presentation.
The actual markup used with basic form controls. Each form control
will be tied to a field in the data model.
- Logic. Enables you
to define relationships between fields; for example, you might want
to require additional fields to be filled in if a particular field is
filled in.
- Data. Enables
you to define a data model for your form. You will be able to _use
built-in data types or create your own. This layer will also make it
easier to validate form information (check that it's a date, a
number, and so on) without enormous amounts of scripting.
|
Now That's Progress!
|
|
Just to give you a taste of what's coming, one of the goals of the
XForms specification is to enable users to print a form, fill it in
by hand, and scan it in!
|
Who Should Learn XForms?
Anyone interested in creating complex forms, as well as
programmers who are used to creating the server-side scripting
required to accept, validate, and process incoming data, should look
at the next generation of Web forms. For those of us who create Web
pages and Web forms, it makes sense to take the next logical step and
learn XForms. Because of XForms's e-commerce potential, most
companies will expect their Web developers to soon adopt the new
XForms capabilities.
Note that application vendors also make up a large piece of the
target audience. Until application vendors adopt the XForms data
model, Web developers will be unable to capitalize on the new
functionality. One vendor is already working on implementing forms:
Mozquito. See the "For More Information" section for more
details.
As stated previously, programmers who have to deal with
server-side scripting that processes the data collected from the Web
form will be interested in the new capabilities XForms offers. The
hope is that XForms will provide a consistent, XML-based format for
incoming data, as well as take advantage of XML's validation
framework-both of which will make programmers' lives easier.
Creating XForms
Because XForms is still in its infancy, and the standard is not
yet set, you can't start working with XForms just yet. However, you
can visit an example cooked up by the W3C's XForms Working Group.
Keep in mind that it is an experimental example used by the Working
Group to explore different ideas for XForms.
To visit the XForms Working Group example, visit
http://www.w3.org/MarkUp/Forms/_Sample/acme.html.