Thought we'd exhausted HTML text elements? Headers, paragraphs, and line breaks are just the rudimentary text-organizational elements of an HTML document. The language also provides several advanced text-based structures, including three types of lists, "searchable" documents, and forms. Searchable documents and forms go beyond text formatting, too; they are a way to interact with your readers. Forms let users enter text and click checkboxes and radio buttons to select particular items and then send that information back to the server. Once received, a special server application processes the form's information and responds accordingly, e.g., filling a product order or collecting data for a user survey.
 The server-side programming required for processing forms is beyond the scope of this book. We give some basic guidelines in the appropriate chapters, but please consult the server documentation and your server administrator for details.
The HTML syntax for these special features and their various attributes can get rather complicated; they're not quick-start grist. So we mention them here and urge you to read on for details in later chapters.
The three types of HTML lists match those we are most familiar with: unordered, ordered, and definition lists. An unordered list--one in which the order of items is not important, such as a laundry or grocery list--gets bounded by <ul> and </ul> tags. Each item in the list, usually a word or short phrase, is marked by the <li> (list-item) tag and, when rendered, appears indented from the left margin. The browser also typically precedes each item with a leading bullet symbol. [the section called "The <ul> Tag"] [the section called "The <li> Tag"]
Ordered lists, bounded by the <ol> and </ol> tags, are identical in format to unordered ones, including the <li> tag for marking list items. However, the order of items is important--equipment assembly steps, for instance. The browser accordingly displays each item in the list preceded by an ascending number. [the section called "The <ol> Tag"]
Definition lists are slightly more complicated than unordered and ordered lists. Within a definition list's enclosing <dl> and </dl> tags, each list item has two parts, each with a special tag: a short name or title, contained within a <dt> tag, followed by its corresponding value or definition, denoted by the <dd> tag. When rendered, the browser usually puts the item name on a separate line (although not indented), and the definition, which may include several paragraphs, indented below it. [the section called "The <dl> Tag"]
The various types of lists may contain nearly any type of content normally allowed in the body of the HTML document. So, you can organize your collection of digitized family photographs into an ordered list, for example, or put them into a definition list complete with text annotations. HTML even lets you put lists inside of lists (nesting), opening up a wealth of interesting combinations.
The simplest type of user interaction provided by HTML is the searchable document. You create a searchable HTML document by including an <isindex> tag in its header or body. The browser automatically provides some way for the user to type one or more words into a text input box, and to pass those keywords to a related processing application on the server. [the section called "The <isindex> Tag"]
The processing application on the server uses those keywords to do some special task, such as perform a database search or match the keywords against an authentication list to allow the user special access to some other part of your document collection.
Obviously, searchable documents are very limited--one per document and only one user input element. Fortunately, HTML provides better, more extensive support for collecting user input though forms.
You create one or more special form sections in your HTML document, bounded with the <form> and </form> tags. Inside the form, you may put predefined as well as customized text-input boxes allowing for both single and multiline input. You may also insert checkboxes and radio buttons for single- and multiple-choice selections, and special buttons that work to reset the form or send its contents to the server. Users fill out the form at their leisure, perhaps after reading the rest of the document, and then click a special send button that makes the browser send the form's data to the server. A special server-side program you provide then processes the form and responds accordingly, perhaps by requesting more information from the user, modifying subsequent HTML documents the server sends to the user, and so on. [the section called "The <form> Tag"]
HTML forms provide everything you might expect of an automated form, including input area labels, integrated contents for instructions, default input values, and so on--except automatic input verification; your server-side program has to perform that function.