Synposis of XML module files.
A dSurvey survey is based on modules. This means that a survey instrument is built using discrete blocks of extended XHTML code -- each of these blocks is what we call a module. Building a survey instrument with these modules is, at a first approximation, a matter of listing what modules comprise each page of the survey instrument.
dSurvey modules are stored in module files. A module file can contain one, or many, different modules. These module files are XML files. Thus, typically they will have an `.XML` extension.

Each module contains valid XHTML (transitional) code, and is contained within a `<module>` and a `</module>`.
Thus, by including many different `<module>` ... `</module>` in a file .... you can specifiy many modules in a single module file.

Example
<module id="Help_1" desc="this is the discount module"> Description of <em>Discounted Bid</em>: <br /> The <em>discounted bid</em> is used to rank tickets. It is simply the product of the ticket's <em>multiplier</em> and the <em>Bid</em> you chose. Note that the lower the <em>discounted bid</em>, the more likely your ticket will be accepted. </module > <module id="Help_2"> Description of <em>No Bid</em>: <br /> If you do not wish to place a bid in this round, simply leave the bid text-box empty. </module >
The `id="module_name"` is required -- the SPEC files use the id when creating a `group`.
The `desc="a description"` is optional -- it is used by dSurvey utilities (it has no important functional use).

#### XHTML is similar to HTML files, but has more stringent syntatical rules.

The contents of a module (the stuff between `<module>` ... `</module>` ) must be valid XHTML code. XHTML is quite similar to HTML, with a few stringent rules.

These rules are:
- tags have to have a matching /tag, or end with a />
- tagnames are case sensitive (so a start and end tag must be exactly the same)
- attributes must be in quotes
- XHTML files should start with the following lines:
  <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Hint: If you want to convert existing HTML files to XHTML -- see the HTML to XHTML converter!

#### The XHTML code in a dSurvey module can contain special dSurvey tags and attributes

In order to facilitate creating dynamic surveys, what with state-specific display, dSurvey supports a number of special tagnames that are not standard HTML.

For example:

`<insert >` | Insert a module
`<show >` | Display value of a dSurvey variable
`<radio >` | Create a radio-style input button, with lots of options
`<if>` | Selectively keep, or discard, blocks of XHTML code

The above is just a sample, there is much more!

#### Special case: specifying "independent rows" that can be used to dynamically build tables

This method of dynamically building tables is somewhat deprecated -- it is often easier to use the <insert> and <repeat> special tagnames
A module with just `<tr>` (and matching `</tr>`) can be used to specify independent rows; rows that are used to dynamically build tables.
Example:
<module id="MROWS1"> <tr> <td width="20% align="left" valign="top" style="padding-top:10px"> <span class="styleHeader">Auction in Progress: </span> </td> <td align="left" width="45%" valign="top" style="padding-top:10px"> <input type="text" name="X1" /> </td> </tr> </module >
Note that there is no `<table>` in this `<module>` -- the `<module>` contains "independent" rows!
For details on the use of these special modules, see the building a dynamic table.