You are reading O'Reilly XForms Essentials by Micah Dubinko. (What is this?) - Buy XForms Essentials Online

The Revenge of the Simple Syntax

The XForms "simple syntax" mentioned earlier served a worthy purpose: to make authors of existing HTML forms comfortable enough to consider making the jump to XForms. So, when the "simple syntax" went away, what replaced it? Literally nothing. Instead of trying to simplify form authoring by adding an additional layer of markup, the designers made XForms remain useful when removing a layer of markup. This extra layer is what needs to be written for the XForms Model, which can be safely omitted in forms of roughly the same complexity as an HTML form with no script. Unofficially, this became known as "lazy author" processing, in deference to the time-honored concept in software engineering of "constructive laziness," or the ability to recognize and actively bypass unnecessary work.

Example 1.14, “A poll form implemented in XForms,"lazy author" style ” shows a form that accomplishes the same goals as the earlier HTML form: a poll.

Note that no specific choice is needed for an "Other, please specify" selection, since XForms supports the concept of "open selection" lists, where the user is allowed to freely enter additional list values.

Additionally, to make the form submittable, a small bit of markup is required in the head section of the document, as seen in the following code.

<model>
  <submission action="http://example.info/xml-submit"/>
</model>

Unlike the proposed simple syntax, only a minimal amount of keyboard typing is needed for the XForms Model; in fact, little more than a URL to accept submitted data. The main part of the form is specified as user interface form controls: here, select1. Note, too, that the "Other, please specify" choice isn't needed, since XForms supports open selection lists natively. If the user manually entered both as a choice, the resulting XML submitted would look like this:

<instanceData>
  <mainsel>both</mainsel>
</instanceData>

On the other hand, if the user accepted the initial choice, the shorter storage value given in the value attribute would be used:

<instanceData>
  <mainsel>b</mainsel>
</instanceData>

While the lazy author syntax saves typing, it also is severely limited in power, lacking any kind of calculation or validation structure. For this reason, the XForms specification encourages form authors to use the full capacity of XForms. The following chapters describe how to do this.