Structure

The topics were largely treated one per chapter, and in general written in the order they would be presented. It was attempted to make each chapter not more than one screen-full long, around 50-60 lines of text, followed by its exercise.

Each chapter was built as a single XHTML+XForms document; if it became too long, it could be split into two chapters; occasionally, if a chapter was very short, or if context demanded it, two concepts would be covered in a single chapter.

An XML document was kept as chapters were written documenting the title, filename, concepts covered, name of the exercise file, and name of the example answer file:

<tutorial>
   <entry>
      <title>Introduction</title>
      <file>intro.xhtml</file>
      <concept>implementations</concept>
      <concept>W3C standard</concept>
      <concept>future</concept>
   </entry>
   <entry>
      <title>What you will learn</title>
      <file>learn.xhtml</file>
      <concept>quick reference</concept>
   </entry>
   <entry>
      <title>The structure of an XForm</title>
      <file>structure.xhtml</file>
      <concept>structure</concept>
      <concept>model</concept>
      <concept>instance</concept>
      <concept>controls</concept>
      <concept>XML</concept>
      <concept>media type</concept>
   </entry>
   <entry>
      <title>Data Instances and the Input Control</title>
      <file>input.xhtml</file>
      <exercise>input-exercise.xhtml</exercise>
      <answer>input-answer.xhtml</answer>
      <concept>&lt;instance resource=""/></concept>
      <concept>&lt;bind ref=""/></concept>
      <concept>@type</concept>
      <concept>integer type</concept>
      <concept>date type</concept>
      <concept>string type</concept>
      <concept>boolean type</concept>
      <concept>&lt;input ref=""/> control</concept>
      <concept>&lt;label></concept>
      <concept>@incremental</concept>
   </entry>
   <entry>
      <title>The output control</title>
      <file>output.xhtml</file>
      <exercise>output-exercise.xhtml</exercise>
      <answer>output-answer.xhtml</answer>
      <concept>&lt;output ref=""/> control</concept>
      <concept>@value</concept>
      <concept>XPath / @ *</concept>
      <concept>count() function</concept>
   </entry>
   ...