HTML 3.0                                                       28th March 1995

   INTERNET DRAFT                                 Dave Raggett, W3C
   Expires in six months                          email: <dsr@w3.org>

             HyperText Markup Language Specification Version 3.0

                       <draft-ietf-html-specv3-00.txt>

Status of this Memo

   This document is an Internet draft. Internet drafts are working
   documents of the Internet Engineering Task Force (IETF), its areas
   and its working groups. Note that other groups may also distribute
   working information as Internet drafts. 

   Internet Drafts are draft documents valid for a maximum of six
   months and can be updated, replaced or obsoleted by other documents
   at any time. It is inappropriate to use Internet drafts as reference
   material or to cite them as other than as "work in progress". 

   To learn the current status of any Internet draft please check the
   "lid-abstracts.txt" listing contained in the Internet drafts shadow
   directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
   munnari.oz.au (Pacific Rim), ds.internic.net (US East coast) or
   ftp.isi.edu (US West coast). Further information about the IETF can
   be found at URL: http://www.cnri.reston.va.us/ 

   Distribution of this document is unlimited. Please send comments to
   the HTML working group (HTML-WG) of the Internet Engineering Task
   Force (IETF) at <html-wg@wg.oclc.org>. Discussions of this group are
   archived at URL: http://www.acl.lanl.gov/HTML-WG/archives.html. 

Abstract

   The HyperText Markup Language (HTML) is a simple markup language
   used to create hypertext documents that are portable from one
   platform to another. HTML documents are SGML documents with generic
   semantics that are appropriate for representing information from a
   wide range of applications. HTML markup can represent hypertext
   news, mail, documentation, and hypermedia; menus of options;
   database query results; simple structured documents with inlined
   graphics and hypertext views of existing bodies of information. 

   This specification defines the capabilities of HTML version 3.0 and
   provides additional capabilities over previous versions such as
   tables, text flow around figures and math. It is backwards
   compatible with HTML 2.0. 

   [Link to Table of Contents]--  






Dave Raggett                                                            Page 1
HTML 3.0                                                       28th March 1995

Table of Contents

   1.  Introduction  ...................................................... 4

       a)  How to participate in refining HTML 3.0  ....................... 4

       b)  HTML 3.0 Overview  ............................................. 4

       c)  Transition strategy from HTML 2.0  ............................. 5

       d)  Design Guidelines for HTML 3.0  ................................ 6

   2.  Understanding HTML and MIME  ....................................... 9

   3.  Understanding HTML and SGML  ...................................... 10

   4.  The Structure of HTML 3.0 Documents  .............................. 15

   5.  The HEAD Element and Related Elements  ............................ 17

   6.  The BODY Elements  ................................................ 24

       a)  Banners  ...................................................... 26

       b)  Divisions  .................................................... 27

       c)  Heading Elements  ............................................. 29

       d)  Paragraphs  ................................................... 33

       e)  Line Breaks  .................................................. 36

       f)  Horizontal Tabs  .............................................. 38

       g)  Hypertext Links  .............................................. 40

       h)  Overview of Character-Level Elements  ......................... 44

           -   Information Type Elements  ................................ 46

           -   Font Style Elements  ...................................... 48

       i)  The IMG (Image) Element  ...................................... 50

       j)  Unordered Lists  .............................................. 53

       k)  Ordered Lists  ................................................ 59

       l)  Definition Lists  ............................................. 62

       m)  Figures  ...................................................... 69

       n)  Tables  ....................................................... 77

Dave Raggett                                                            Page 2
HTML 3.0                                                       28th March 1995


       o)  Math -- missing entity names --  .............................. 92

       p)  Horizontal Rules  ............................................ 111

       q)  Preformatted Text  ........................................... 113

       r)  Admonishments  ............................................... 116

       s)  Footnotes  ................................................... 118

       t)  Block Quotes  ................................................ 120

       u)  The ADDRESS Element  ......................................... 122

       v)  Fill-out Forms  .............................................. 124

   7.  Special Characters  .............................................. 142

   8.  Security Considerations  ......................................... 145

   9.  HTML 3.0 Document Type Definition 

       a)  The SGML Declaration  ........................................ 146

       b)  The Latin-1 Character Entities -- needs work  ................ 148

       c)  Math and Greek Entities -- under construction  ............... 154

       d)  HTML Icon Entities  .......................................... 156

       e)  The HTML 3.0 DTD  ............................................ 157

   10. Terms -- needs work  ............................................. 185

   11. References -- needs work  ........................................ 188

   12. Acknowledgements -- needs work  .................................. 189
















Dave Raggett                                                            Page 3
HTML 3.0                                                       28th March 1995

Introduction to HTML 3.0

   HyperText Markup Language (HTML) is a simple markup system used to
   create hypertext documents that are portable from one platform to
   another. HTML documents are SGML documents with generic semantics
   that are appropriate for representing information from a wide range
   of applications. HTML markup can represent hypertext news, mail,
   documentation, and hypermedia; menus of options; database query
   results; simple structured documents with in-lined graphics; and
   hypertext views of existing bodies of information. 

   HTML has been in use by the World-Wide Web (WWW) global information
   initiative since 1990. The HTML 3.0 specification provides a number
   of new features, and is broadly backwards compatible with HTML 2.0.
   It is defined as an application of International Standard ISO
   ISO8879:1986 Standard Generalized Markup Language (SGML). This
   specificiation will be proposed as the Internet Media Type (RFC
   1590) and MIME Content Type (RFC 1521) called "text/html;
   version=3.0". 

How to participate in refining HTML 3.0

   The process of refining HTML 3.0 into a formal standard will be
   carried out by the IETF HTML working group. The World Wide Web
   Organization is continuing to develop a freeware testbed browser for
   HTML 3.0 ("Arena") to encourage people to try out the proposed
   features. The discussion list for HTML 3.0 is www-html with html-wg
   reserved for use by the IETF working group for detailed matters
   relating to the formal specification. The process for developing
   HTML 3.0 is open, and anyone who is interested and able to
   contribute to this effort is welcome to join in. 

   --Note: make mailing list names into hypertext links to their
   archives and add info on how to join these lists-- 

HTML 3.0 Overview

   HTML 3.0 builds upon HTML 2.0 and provides full backwards
   compatibility. Tables have been one of the most requested features,
   with text flow around figures and math as runners up. Traditional
   SGML table models, e.g. the CALS table model, are really complex.
   The HTML 3.0 proposal for tables uses a lightweight style of markup
   suitable for rendering on a very wide range of output devices,
   including braille and speech synthesizers. 

   HTML 3.0 introduces a new element: FIG for inline figures. This
   provides for client-side handling of hotzones while cleanly catering
   for non-graphical browsers. Text can be flowed around figures and
   you can control when to break the flow to begin a new element. 

   Including support for equations and formulae in HTML 3.0 adds
   relatively little complexity to a browser. The proposed format is
   strongly influenced by TeX. Like tables, the format uses a

Dave Raggett                                                            Page 4
HTML 3.0                                                       28th March 1995

   lightweight style of markup - simple enough to type in by hand,
   although it will in most cases be easier to use a filter from a word
   processing format or a direct HTML 3.0 wysiwyg editor. The level of
   support is compatible with most word processing software, and avoids
   the drawbacks from having to convert math to inline images. 

   The Web has acted as a huge exercise in user testing, and we have
   been able to glean lots of information from the ways people abuse
   HTML in trying to get a particular effect; as well as from explicit
   demand for new features. HTML 3.0, as a result, includes support for
   customised lists; fine positioning control with entities like
   &emspace; horizontal tabs and horizontal alignment of headers and
   paragraph text. 

   Additional features include a static banner area for corporate
   logos, disclaimers and customized navigation/search controls. The
   LINK element can be used to provide standard toolbar/menu items for
   navigation, such as previous and next buttons. The NOTE element is
   used for admonishments such as notes, cautions or warnings, and also
   used for footnotes. 

   Forms have been extended to support graphical selection menus with
   client-side handling of events similar to FIG. Other new form field
   types include range controls, scribble on image, file upload and
   audio input fields. Client-side scripting of forms is envisaged with
   the script attribute of the FORM element. Forms and tables make for
   a powerful combination offering rich opportunities for laying out
   custom interfaces to remote information systems. 

   To counter the temptation to add yet more presentation features,
   HTML 3.0 is designed (but doesn't require) to be used together with
   style sheets which give rich control over document rendering, and
   can take into account the user's preferences, the window size and
   other resource limitations, such as which fonts are actually
   available. This work will eventually lead to smart layout under the
   author's control, with rich magazine style layouts for full screen
   viewing, switching to simpler layouts when the window is shrunk. 

   The SGML Open consortium is promoting use of DSSSL Lite by James
   Clark. This is a simplified subset of DSSSL - the document style
   semantics specification language. DSSSL is a ISO standard for
   representing presentation semantics for SGML documents, but is much
   too complex in its entirety to be well suited to the World Wide Web.
   Hkon Lie maintains a list of pointers to work on style sheets. 

Transition Strategy from HTML 2.0

   The use of the MIME content type: "text/html; version=3.0" is
   recommended to prevent existing HTML 2.0 user agents screwing up by
   attempting to show 3.0 documents. Tests have shown that the
   suggested content type will safely cause existing user agents to
   display the save to file dialog rather than incorrectly displaying
   the document as if it were HTML 2.0. 

Dave Raggett                                                            Page 5
HTML 3.0                                                       28th March 1995


   To make it easy for servers to distinguish 3.0 documents from 2.0
   documents, it is suggested that 3.0 files are saved with the
   extension ".html3" (or ".ht3" for PCs). Servers can also exploit the
   accept headers in HTTP requests from HTML user agents, to
   distinguish whether each client can or cannot support HTML 3.0. This
   makes it practical for information providers to start providing HTML
   3.0 versions of existing documents for newer user agents, without
   impacting older user agents. It is envisaged that programs will be
   made available for automatic down conversion of 3.0 to 2.0
   documents. This conversion could be carried out in batch mode, or on
   the fly (with caching for greater efficiency). 

Design Guidelines

   The HTML 3.0 draft specification has been written to the following
   guidelines. 

Lingua Franca for the Web

   HTML is intended as a common medium for tying together information
   from widely different sources. A means to rise above the
   interoperability problems with existing document formats, and a
   means to provide a truly open interface to proprietary information
   systems. 

Simplicity

   The first version of HTML was designed to be extremely simple, both
   to author and to write browsers for. This has played a major role in
   the incredibly rapid growth of the World Wide Web. HTML 3.0 provides
   a clean superset of HTML 2.0 adding high value features such as
   tables, text flow around figures and math, while still remaining a
   simple document format. The pressures to adopt the complexities of
   traditional SGML applications has been resisted, for example the
   Department of Defense's CALS table model or the ISO 12083 math DTD. 

Scaleability

   As time goes by, people's expectations change, and more will be
   demanded of HTML. One manifestation of this is the pressure to add
   yet more tags. HTML 3.0 introduces a means for subclassing elements
   in an open-ended way. This can be used to distinguish the role of a
   paragraph element as being a couplet in a stansa, or a mathematical
   term as being a tensor. This ability to make fresh distinctions can
   be exploited to impart distinct rendering styles or to support
   richer search mechanisms, without further complicating the HTML
   document format itself. Scaleability is also achieved via URI based
   links for embedding information in other formats. Initially limited
   to a few image formats, inline support is expected to rapidly evolve
   to cover drawing formats, video, distributed virtual reality and a
   general means for embedding other applications. 


Dave Raggett                                                            Page 6
HTML 3.0                                                       28th March 1995

Platform Independence

   HTML is designed to allow rendering on a very wide range of devices,
   from clunky teletypes, to terminals, DOS, Windows, Macs and high end
   Workstations, as well as non-visual media such as speech and
   braille. In this, it allows users to exploit the legacy of older
   equipment as well as the latest and best of new machines. HTML 3.0
   provides for improved support for non-graphical clients, allowing
   for rich markup in place of the figures shown on graphical clients.
   HTML can be rendered on a wide variety of screen sizes, using a
   scrolling or paged model. The fonts and presentation can be adjusted
   to suit the resources available in the host machine and the user's
   preferences. 

Content --not-- Presentation Markup

   Information providers are used to tight control over the final
   appearence of documents. The need for platform independence weighs
   against this, but there is still a strong pressure to find
   appropriate means for information providers to express their
   intentions. The experience with proprietary document formats has
   shown the dangers of mixing presentation markup with content (or
   structural) markup. It becomes difficult to apply different
   presentation styles. It becomes painful to incorporate material from
   different sources (with different presentation styles). It becomes
   difficult to be truly platform independent. As a result, HTML 3.0 is
   designed for use with linked style information that defines the
   intended presentation style for each element. Style sheets can be
   expressed in a platform independent fashion or used to provide more
   detailed control for particular classes of clients or output media. 

Support for Cascaded Style Sheets

   For the Web, it is valuable to allow for a cascading of style
   preferences. The client has certain built-in preferences; the
   publisher may require a particular house style, e.g. for brand
   distinction; the author may feel the need to override the house
   style for special cases; the end-user may feel strongly about
   certain things, e.g. large fonts for easier visibility or avoiding
   certain colors due to an inability to distinguish between them. HTML
   3.0 supports style sheets via the use of the LINK element to
   reference a style sheet with a URI. Authors can place overrides in
   separate style sheets or include them in the document head within
   the STYLE element. The effectiveness of caching mechanisms for
   speeding up the retrieval of style sheets is enhanced by the
   separation of style information into generic commonly used style
   sheets, and overrides specific to this document. 

Support for Non-Visual Media

   HTML 3.0 is designed to cater for the needs of the visually
   impaired. Markup for inline figures includes support for rich
   descriptions, along with hypertext links that double up as defining

Dave Raggett                                                            Page 7
HTML 3.0                                                       28th March 1995

   geometric hotzones for graphical browsers, simplifying the author's
   job in catering for the different groups of users. Table markup
   includes provision for abbreviated row and column names for each
   cell, which are essential for conversion to speech or braille. Math
   markup treats formulae and equations as hierarchies of expressions.
   This allows disambiguating pauses to be inserted in appropriate
   places during conversion to speech. 

Support for different ways of creating HTML

   HTML 3.0 has been designed to be created in a variety of different
   ways. It is deliberately simple enough to type in by hand. It can be
   authored using wysiwyg editors for HTML, or it can be generated via
   export filters from common word processing formats, or other SGML
   applications.  







































Dave Raggett                                                            Page 8
HTML 3.0                                                       28th March 1995

Understanding HTML and MIME

   --I have dropped the differentiation of HTML into a sequence of
   conformance levels. Many people confused levels with versions. The
   different levels also encourage interoperability problems! Lets
   encourage full conformance with HTML 2.0 or HTML 3.0 rather than
   perpetuating intermediate levels of support.-- 

HTML as an Internet Media Type

   This (and upward compatible specifications) define the Internet
   Media Type (RFC 1590) and MIME Content Type (RFC 1521) called
   "text/html". The type "text/html" accepts the following parameters: 

   Version 
       To help avoid future compatibility problems, the version
       parameter may be used to give the version number of the
       specification to which the document conforms. The version number
       appears at the front of this document and within the public
       identifier for the SGML DTD. This specification defines version
       3.0. 

   Character sets 
       The charset parameter (as defined in section 7.1.1 of RFC 1521)
       may be used with the text/html content type to specify the
       encoding used to represent the HTML document as a sequence of
       bytes. Normally, text/* media types specify a default of
       US-ASCII for the charset parameter. However, for text/html, if
       the byte stream contains data that is not in the 7-bit US-ASCII
       set, the HTML interpreting agent should assume a default charset
       of ISO-8859-1. 

       When an HTML document is encoded using US-ASCII, the mechanisms
       of numeric character references and character entity references
       may be used to encode additional characters from ISO-8859-1.
       Character entity references are needed for symbols such as math
       and greek characters from other unspecified character sets. 

       Other values for the charset parameter are not defined in this
       specification, but may be specified in future versions of HTML.
       It is envisioned that HTML will use the charset parameter to
       allow support for non-Latin characters such as Arabic, Hebrew,
       Cyrillic and Japanese, rather than relying on any SGML mechanism
       for doing so. 

       --What about Unicode and its assorted encodings? This section
       would benefit from an explanation of the issues underlying
       support for multiple character sets and the problems arising
       from bidirectionality.-- 





Dave Raggett                                                            Page 9
HTML 3.0                                                       28th March 1995

Understanding HTML and SGML

   HTML is an application conforming to International Standard ISO 8879
   -- Standard Generalized Markup Language (SGML). SGML is a system for
   defining structured document types, and markup languages to
   represent instances of those document types. The SGML declaration
   for HTML is given in SGML Declaration for HTML. It is implicit among
   WWW implementations. 

   In the event of any apparent conflict between HTML and SGML
   standards, the SGML standard is definitive. 

   Every SGML document has three parts: 

   SGML declaration 
       Binds SGML processing quantities and syntax token names to
       specific values. For example, the SGML declaration in the HTML
       DTD specifies that the string that opens an end tag is </ and
       the maximum length of a name is 72 characters. 

   Prologue 
       Includes one or more document type declarations (DTDs), which
       specify the element types, element relationships and attributes.
       The HTML 3.0 DTD provides a definitive specification of the
       allowed syntax for HTML 3.0 documents. 

   References 
       Can be represented by markup. An instance, which contains the
       data and markup of the document. 

   HTML refers to the document type as well as the markup language for
   representing instances of that document type. 

------------------------------------------------------------------------------
Understanding HTML Elements

   In HTML documents, tags define the start and end of headings,
   paragraphs, lists, character highlighting and links. Most HTML
   elements are identified in a document as a start tag, which gives
   the element name and attributes, followed by the content, followed
   by the end tag. Start tags are delimited by < and >, and end tags
   are delimited by </ and >. For example: 

       <H1>This is a Heading</H1>
       <P>This is a paragraph.

   Some elements appear as just a start tag. For example, to create a
   line break, you use <BR>. Additionally, the end tags of some other
   elements (e.g. P, LI, DT, DD) can be omitted as the position of the
   end tag is clearly implied by the context. 

   The content of an element is a sequence of characters and nested
   elements. Some elements, such as anchors, cannot be nested. Anchors

Dave Raggett                                                           Page 10
HTML 3.0                                                       28th March 1995

   and character highlighting may be put inside other constructs. The
   content model for a tag defines the syntax permitted for the
   content. 

   Note: The SGML declaration for HTML specifies SHORTTAG YES, which
   means that there are other valid syntaxes for tags, such as NET
   tags, <EM/.../; empty start tags, <>; and empty end tags, </>. Until
   support for these idioms is widely deployed, their use is strongly
   discouraged. 

------------------------------------------------------------------------------
Names

   The element name immediately follows the tag open delimiter. An
   element name consist of a letter followed by up to 72 letters,
   digits, periods, or hyphens. Names are not case sensitive. For
   example, H1 is equivalent to h1. This limit of 72 characters is set
   by the NAMELEN parameter in the SGML declaration for HTML 3.0. 

------------------------------------------------------------------------------
Attributes

   In a start tag, white space and attributes are allowed between the
   element name and the closing delimiter. An attribute typically
   consists of an attribute name, an equal sign, and a value (although
   some attributes may be just a value). White space is allowed around
   the equal sign. 

   The value of the attribute may be either: 

   1.  A string literal, delimited by single quotes or double quotes 

   2.  A name token (a sequence of letters, digits, periods, or
       hyphens) 

   In this example, a is the element name, href is the attribute name,
   and http://host/dir/file.html is the attribute value: 

       <A HREF="http://host/dir/file.html">

   Some implementations consider any occurrence of the > character to
   signal the end of a tag. For compatibility with such
   implementations, when > appears in an attribute value, you may want
   to represent it with an entity or numeric character reference, such
   as: 

       <IMG SRC="eq1.ps" alt="a &#62; b">

   To put quotes inside of quotes, you can use single quotes if the
   outer quotes are double or vice versa, as in: 

       <IMG SRC="image.ps" alt="First 'real' example">


Dave Raggett                                                           Page 11
HTML 3.0                                                       28th March 1995

   Alternatively, you use the character representation &quot; as in: 

       <IMG SRC="image.ps" alt="First &quot;real&quot; example">

   The length of an attribute value (after replacing entity and numeric
   character references) is limited to 1024 characters. This number is
   defined by the LITLEN parameter in the SGML declaration for HTML
   3.0. 

   Note: Some implementations allow any character except space or > in
   a name token. Attributes values must be quoted only if they don't
   satisfy the syntax for a name token. 

   Attributes with a declared value of NAME (e.g. ISMAP, COMPACT) may
   be written using a minimized syntax. The markup: 

       <UL COMPACT="compact">

   can be written as: 

       <UL COMPACT>

   Note: Unless you use the minimized syntax, some implementations
   won't understand. 

------------------------------------------------------------------------------
Undefined Tag and Attribute Names

   It is an accepted networking principle to be conservative in that
   which one produces, and liberal in that which one accepts. HTML
   parsers should be liberal except when verifying code. HTML
   generators should generate strictly conforming HTML. It is suggested
   that where ever practical, parsers should at least flag the presence
   of markup errors, as this will help to avoid bad markup being
   produced inadvertently. 

   The behavior of WWW applications reading HTML documents and
   discovering tag or attribute names which they do not understand
   should be to behave as though, in the case of a tag, the whole tag
   had not been there but its content had, or in the case of an
   attribute, that the attribute had not been present. 

------------------------------------------------------------------------------
Special Characters

   The characters between the tags represent text in the ISO-Latin-1
   character set, which is a superset of ASCII. Because certain
   characters will be interpreted as markup, they should be represented
   by markup -- entity or numeric character references, for instance
   the character "&" must be represented by the entity &amp;. See the
   Special Characters section of this specification for more
   information. 


Dave Raggett                                                           Page 12
HTML 3.0                                                       28th March 1995

------------------------------------------------------------------------------
Comments

   To include comments in an HTML document that will be ignored by the
   parser, surround them with <!-- and -->. After the comment
   delimiter, all text up to the next occurrence of --> is ignored.
   Hence comments cannot be nested. White space is allowed between the
   closing -- and >, but not between the opening <! and --. 

   For example: 

   <HEAD>
   <TITLE>HTML Guide: Recommended Usage</TITLE>
   <!-- Id: Text.html,v 1.6 1994/04/25 17:33:48 connolly Exp -->
   </HEAD>

   Note: Some historical implementations incorrectly consider a > sign
   to terminate a comment. 

------------------------------------------------------------------------------
Formal Variants of HTML 3.0

   The HTML 3.0 document type definition includes two flags for
   controlling how prescriptive or how lax the language is. This makes
   use of SGML marked sections in the DTD to enable or disable certain
   features. 

HTML.Recommended

   Certain features of the language are necessary for compatibility
   with widespread usage, but they may compromise the structural
   integrity of a document. The HTML.Recommended entity should be
   defined as INCLUDE in the DTD subset to enable a more prescriptive
   version of HTML 3.0 that eliminates the above features. For example: 

   <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN"
   [ <!ENTITY % HTML.Recommended "INCLUDE"> ] >

   In particular, this prevents text from appearing except within block
   elements. 

HTML.Deprecated

   By default, for backwards compatibility, the %HTML.Deprecated entity
   is defined as INCLUDE, enabling certain features which are now
   deprecated. These features can be eliminated by defining this entity
   as IGNORE in the DTD subset. For example: 

       <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN" [
   <!ENTITY % HTML.Deprecated "IGNORE"> ] >

   Note: defining %HTML.Recommended as INCLUDE automatically sets
   %HTML.Deprecated to IGNORE. 

Dave Raggett                                                           Page 13
HTML 3.0                                                       28th March 1995


   In the spirit of being liberal in what you accept and strict in what
   you generate, HTML user agents are recommended to accept syntax
   corresponding to the specification with %HTML.Deprecated turned on,
   while HTML user agents generating HTML are recommended to generate
   documents that conform to the specification with %HTML.Recommended
   turned on.  















































Dave Raggett                                                           Page 14
HTML 3.0                                                       28th March 1995

The Structure of HTML 3.0 Documents

   In HTML documents, tags define the start and end of headings,
   paragraphs, lists, character highlighting and links etc. Most HTML
   elements are identified in a document as a start tag, which gives
   the element name and attributes, followed by the content, followed
   by the end tag. Start tags are delimited by < and >, while end tags
   are delimited by </ and >. For example: 

       <title>This is a Title</title>
       <h1>This is a Heading</h1>
       <P>This is a paragraph.

   Every HTML document as a minimum must have a title. To identify the
   document as being HTML 3.0, it is recommended that documents start
   with the prologue: 

       <!doctype HTML public "-//W3O//DTD W3 HTML 3.0//EN">

   When absent, this prologue is implied by the MIME content type for
   HTML 3.0 together with the associated version parameter. 

------------------------------------------------------------------------------
Document Structure

   HTML 3.0 documents formally have the following structure: 

       <HTML>
       <HEAD> --head elements ...--
       <BODY> --body elements ...--
       </HTML>

   In most cases, the HTML, HEAD and BODY tags can be safely omitted.
   Note that the formal syntax of HTML 3.0 is defined by the document
   type definition, which is included as an appendix of this
   specification. The details of the HEAD and BODY elements will be
   described in subsequent sections. 

   The permitted syntax of HTML 3.0 compliant documents is specified by
   the DTD. This includes the content model for each element, defining
   what markup is permitted within each element. The DTD uses SGML
   entities in content models to express regular features of HTML 3.0,
   for example %body.content defines what markup is permitted within
   the BODY element. A number of other elements also share this content
   model, e.g. BQ, DIV, FORM, TH and TD. 

   The description of each tag includes the --content model-- and the
   --permitted context-- (which elements can contain this tag). Where
   practical, these properties are given with the same entity names as
   used in the DTD, and should help the newcomer to get to grips with
   understanding the DTD itself. For example, the description of the
   NOTE element starts with: 


Dave Raggett                                                           Page 15
HTML 3.0                                                       28th March 1995

       The NOTE element
   
       Permitted context: %block
       Content model: %flow

   This says that the NOTE element (used for admonishments such as
   notes, cautions and errors) can occur in any element which includes
   %block in its content model. Similarly, any element with %flow as
   part of its permitted context can occur within a NOTE element. 

The HTML element

   This has three attributes: 

   VERSION 
       This is fixed by the DTD as the string "-//W3O//DTD W3 HTML
       3.0//EN" 

   URN 
       The universal resource name for the document (optional) 

   ROLE 
       An optional space separated list of SGML NAME tokens that define
       the role this document plays, e.g. table of contents. The
       conventions for these names are outside the scope of this
       specification. --wouldn't it be better to leave this to a link
       to a URC?-- 

   Note that both the start and end tag for the HTML element can be
   omitted.  
























Dave Raggett                                                           Page 16
HTML 3.0                                                       28th March 1995

The Head Element and Related Elements

HEAD

   The HEAD element has no attributes and the start and end tag can
   always be safely omitted as they can be readily inferred by the
   parser. Information in the HEAD element corresponds to the top part
   of a memo or mail message. It describes properties of the document
   such as the title, the document toolbar, and additional
   meta-information. There is no intended significance to the order of
   elements in the document head. Note that the TITLE element is always
   required. In fact, the minimal HTML 3.0 document consists of the
   TITLE element alone! 

   Within the HEAD element, only certain elements are allowed.
   Information in the HEAD element may include the following elements
   (arranged alphabetically): 

------------------------------------------------------------------------------
BASE

   The BASE element allows the URL of the document itself to be
   recorded in situations in which the document may be read out of
   context. URLs within the document may be in a "partial" form
   relative to this base address. The default base address is the URL
   used to retrieve the document. 

   For example: 

       <base href="http://acme.com/docs/mydoc.html">
       ... 
       <img src="images/me.gif">

   which resolves to "http://acme.com/docs/images/me.gif". 

------------------------------------------------------------------------------
ISINDEX

   The ISINDEX element informs the HTML user agent that the document is
   an index document. As well as reading it, the reader may use a
   keyword search. 

   The document can be queried with a keyword search by adding a
   question mark to the end of the document address, followed by a list
   of keywords separated by plus signs. See the network address format
   for more information. 

   Note: A server normally generates the ISINDEX tag automatically. If
   added by hand to an HTML document, the browser assumes that the
   server can handle a search on the document. Obviously the server
   must have this capability for it to work: simply adding <ISINDEX> in
   the document is not enough to make searches happen if the server
   does not have a search engine! 

Dave Raggett                                                           Page 17
HTML 3.0                                                       28th March 1995


   Example: 

       <ISINDEX>

   The URL used for processing queries can be overridden with the HREF
   attribute. You can also use the PROMPT attribute to change the
   default prompt supplied by the browser, e.g. 

       <ISINDEX HREF="phone.db" PROMPT="Enter Surname:">

------------------------------------------------------------------------------
LINK

   The LINK element indicates a relationship between the document and
   some other object. A document may have any number of LINK elements.
   The LINK element is empty (does not have a closing tag), but takes
   the same attributes as the anchor element. The important attributes
   are: 

   REL 
       This defines the relationship defined by the link. 

   REV 
       This defines a reverse relationship. A link from document A to
       document B with REV=--relation-- expresses the same relationship
       as a link from B to A with REL=--relation--. REV=made is
       sometimes used to identify the document author, either the
       author's email address with a --mailto-- URI, or a link to the
       author's home page. 

   HREF 
       This names an object using the URI notation. 

Using LINK to define document specific toolbars

   An important use of the LINK element is to define a toolbar of
   navigation buttons or an equivalent mechanism such as menu items. 

   LINK relationship values reserved for toolbars are: 

   REL=Home 
       The link references a home page or the top of some hierarchy. 

   REL=ToC 
       The link references a document serving as a table of contents. 

   REL=Index 
       The link references a document providing an index for the
       current document. 

   REL=Glossary 
       The link references a document providing a glossary of terms

Dave Raggett                                                           Page 18
HTML 3.0                                                       28th March 1995

       that pertain to the current document. 

   REL=Copyright 
       The link references a copyright statement for the current
       document. 

   REL=Up 
       When the document forms part of a hierarchy, this link
       references the immediate parent of the current document. 

   REL=Next 
       The link references the next document to visit in a guided tour. 

   REL=Previous 
       The link references the previous document in a guided tour. 

   REL=Help 
       The link references a document offering help, e.g. describing
       the wider context and offering further links to relevant
       documents. This is aimed at reorienting users who have lost
       their way. 

   REL=Bookmark 
       Bookmarks are used to provide direct links to key entry points
       into an extended document. The TITLE attribute may be used to
       label the bookmark. Several bookmarks may be defined in each
       document, and provide a means for orienting users in extended
       documents. 

   An example of toolbar LINK elements: 

       <LINK REL=Previous HREF=doc31.html>
       <LINK REL=Next HREF=doc33.html>
       <LINK REL=Bookmark TITLE="Order Form" HREF=doc56.html>

Using LINK to include a Document Banner

   The LINK element can be used with REL=Banner to reference another
   document to be used as banner for this document. This is typically
   used for corporate logos, navigation aids, and other information
   which shouldn't be scrolled with the rest of the document. For
   example: 

       <LINK REL=Banner HREF=banner.html>

   The use of a LINK element in this way, allows a banner to be shared
   between several documents, with the benefit of being able to
   separately cache the banner. Rather than using a linked banner, you
   can also include the banner in the document itself, using the BANNER
   element. 

Link to an associated Style Sheet


Dave Raggett                                                           Page 19
HTML 3.0                                                       28th March 1995

   The LINK element can be used with REL=StyleSheet to reference a
   style sheet to be used to control the way the current document is
   rendered. For example: 

       <LINK REL=StyleSheet HREF=housestyle.dsssl>

Other uses of the LINK element

   Additional relationship names have been proposed, but do not form
   part of this specification. Servers may also allow links to be added
   by those who do not have the right to alter the body of a document. 

------------------------------------------------------------------------------
META

   The META element is used within the HEAD element to embed document
   meta-information not defined by other HTML elements. Such
   information can be extracted by servers/clients for use in
   identifying, indexing and cataloging specialized document
   meta-information. 

   Although it is generally preferable to used named elements that have
   well defined semantics for each type of meta-information, such as
   title, this element is provided for situations where strict SGML
   parsing is necessary and the local DTD is not extensible. 

   In addition, HTTP servers can read the contents of the document head
   to generate response headers corresponding to any elements defining
   a value for the attribute HTTP-EQUIV. This provides document authors
   with a mechanism (not necessarily the preferred one) for identifying
   information that should be included in the response headers of an
   HTTP request. 

   The META element has three attributes: 

   NAME 
       Used to name a property such as author, publication date etc. If
       absent, the name can be assumed to be the same as the value of
       HTTP-EQUIV. 

   CONTENT 
       Used to supply a value for a named property. 

   HTTP-EQUIV 
       This attribute binds the element to an HTTP response header. If
       the semantics of the HTTP response header named by this
       attribute is known, then the contents can be processed based on
       a well defined syntactic mapping, whether or not the DTD
       includes anything about it. HTTP header names are not case
       sensitive. If absent, the NAME attribute should be used to
       identify this meta-information and it should not be used within
       an HTPP response header. 


Dave Raggett                                                           Page 20
HTML 3.0                                                       28th March 1995

   Examples: 

   If the document contains: 

   <META HTTP-EQUIV=Expires CONTENT="Tue, 04 Dec 1993 21:29:02 GMT">
   <META HTTP-EQUIV="Keywords" CONTENT="Nanotechnology, Biochemistry">
   <META HTTP-EQUIV="Reply-to" CONTENT="dsr@w3.org (Dave Raggett)">
   

   The server will include the following response headers: 

   Expires: Tue, 04 Dec 1993 21:29:02 GMT
   Keywords: Nanotechnology, Biochemistry
   Reply-to: dsr@w3.org (Dave Raggett)

   When the HTTP-EQUIV attribute is absent, the server should not
   generate an HTTP response header for this meta-information, e.g. 

   <META NAME="IndexType" CONTENT="Service">

   Do not use the META element to define information that should be
   associated with an existing HTML element. 

   Example of an inappropriate use of the META element: 

   <META NAME="Title" CONTENT="The Etymology of Dunsel">

   Do not name an HTTP-EQUIV attribute the same as a response header
   that should typically only be generated by the HTTP server. Some
   inappropriate names are "Server", "Date", and "Last-Modified".
   Whether a name is inappropriate depends on the particular server
   implementation. It is recommended that servers ignore any META
   elements that specify HTTP equivalents (case insensitively) to their
   own reserved response headers. 

------------------------------------------------------------------------------
NEXTID

   The NEXTID is a parameter read and generated by text editing
   software to generate unique identifiers. This tag takes a single
   attribute which is the the next document-wide alpha-numeric
   identifier to be allocated of the form z123. 

   When modifying a document, existing anchor identifiers should not be
   reused, as these identifiers may be referenced by other documents.
   Human writers of HTML usually use mnemonic alphabetical identifiers. 

   Example: 

       <NEXTID N=Z27>

   HTML user agents may ignore the NEXTID element. Support for NEXTID
   does not impact HTML user agents in any way. 

Dave Raggett                                                           Page 21
HTML 3.0                                                       28th March 1995


   --I want to get rid of NEXTID, or at least deprecate it!-- 

------------------------------------------------------------------------------
RANGE

   The RANGE element is used to mark a range of the document, for
   example for highlighting regions of the document matching some
   search criteria, or which are the subject of an annotation etc. 

       <RANGE CLASS=Search FROM=spot01 UNTIL=spot02>

   The FROM and UNTIL attributes specify positions in the document
   using SGML identifiers. Most elements in the document body can
   define such identifiers using ID attributes. The SPOT element is
   useful in this regard, as it allows search software etc. to insert
   IDs at random places: 

       <SPOT ID=spot01> ... <SPOT ID=spot02>

   The RANGE element supports the following attributes: 

   ID
       An SGML identifer used to name the range element. 

   CLASS
       A character string used to subclass the range element. 

   FROM
       References an SGML identifier for an element in the document
       body. It identifies the start of the marked range. 

   UNTIL
       References an SGML identifier for an element in the document
       body. It identifies the end of the marked range. 

------------------------------------------------------------------------------
STYLE

   The STYLE element provides a means for including rendering
   information using a specified style notation. Information in the
   STYLE element overrides client defaults and that of linked style
   sheets. It allows authors to specify overrides, while for the most
   part using a generic style sheet, and as such improves the
   effectiveness of caching schemes for linked style sheets. There is
   one attribute - NOTATATION - which specifies an entity identifying
   an SGML notation in the HTML 3.0 DTD, for example: 

       <style notation=dsssl-lite>
         --some dsssl-lite stuff ...--
       </style>

   Stylistic rules will in general match tag names and attribute values

Dave Raggett                                                           Page 22
HTML 3.0                                                       28th March 1995

   for elements in the document body. Context sensitive rules may be
   used for such purposes as rendering drop down capitals for the
   initial letter in the first paragraph following a header. 

------------------------------------------------------------------------------
TITLE

   Every HTML document must contain a TITLE element. The title should
   identify the contents of the document in a global context, and may
   be used in a history lists and as a label for the window displaying
   the document. Unlike headings, titles are not normally displayed in
   the text of a document itself. 

   The TITLE element must occur within the head of the document, and
   may not contain anchors, paragraph tags, or highlighting. There may
   only be one TITLE in any document. 

   The length of titles is unlimited, however, long titles may be
   truncated in some applications. To minimize this possibility, keep
   titles to fewer than 64 characters. Also keep in mind that a short
   title, such as Introduction, may be meaningless out of context. An
   example of a meaningful title might be: 

       <Title>Recent Advances in Nanotechnology</Title>






























Dave Raggett                                                           Page 23
HTML 3.0                                                       28th March 1995

The Body Element and Related Elements

The BODY element

   Permitted Context: HTML
   Content Model: %Body.Content 

   Within the BODY element, you can structure text into paragraphs, and
   lists, as well as highlighting phrases and creating links, amongst
   other things. The BODY element has the following attributes, all of
   which are optional: 

   Note that the ID, LANG and CLASS attributes can be used with
   virtually all of the elements permitted in the document body. 

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. For instance, <P CLASS=STANZA.COUPLET>
       defines a paragraph that acts as a couplet in a stanza. By
       convention, the class names are interpreted hierarchically, with
       the most general class on the left and the most specific on the
       right, where classes are separated by a period. The CLASS
       attribute is most commonly used to attach a different style to
       some element, but it is recommended that where practical class
       names should be picked on the basis of the element's semantics,
       as this will permit other uses, such as restricting search
       through documents by matching on element class names. The
       conventions for choosing class names are outside the scope of
       this specification. 

   BACKGROUND 
       This can be used to specify a URI for an image tile to cover the
       document background. This provides a way of giving a group of
       documents a distinctive appearence. Clients may ignore this
       attribute. It is included here for the benefit of clients that
       don't support style sheets. Note that the text color may need to
       be adjusted to show an adequate contrast with the background. 


Dave Raggett                                                           Page 24
HTML 3.0                                                       28th March 1995

   Note that you don't need to include a BODY tag unless you want to
   specify one of the above attributes. 

Body Structure

   The document body is composed from zero or more of the following
   elements: 

   *   DIV - used for hierarchical containers and static banners 

   *   Headings (H1, to H6) - a set of headers of varying levels of
       importance 

   *   Block elements - paragraphs, lists, forms, tables, figures and
       other elements 

   *   Horizontal rules, and the ADDRESS element 

   *   Text and character level markup including emphasis, images,
       math, hypertext links and miscellaneous elements. 

   Note that text and character level markup are only permitted at this
   level for backwards compatibility with legacy documents. The
   HTML.Recommended flag enforces a more structured approach to
   authoring HTML documents.  





























Dave Raggett                                                           Page 25
HTML 3.0                                                       28th March 1995

Banners

   Permitted Context: the start of the BODY element
   Content Model: %Body.Content 

   The BANNER element is used for corporate logos, navigation aids,
   disclaimers and other information which shouldn't be scrolled with
   the rest of the document. It provides an alternative to using the
   LINKelement in the document head to reference an externally defined
   banner. 

Permitted Attributes

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 














Dave Raggett                                                           Page 26
HTML 3.0                                                       28th March 1995

Divisions

   Permitted Context: %Body.Content
   Content Model: %Body.Content 

   The DIV element is used with the CLASS attribute to represent
   different kinds of containers, e.g. chapter, section, abstract, or
   appendix. For example: 

   <DIV CLASS=Abstract>
   <P>TheChieftain product range is the white hot hope for the
   coming year. This report sets out how to position Chieftain
   against competing products.
   </DIV>

Permitted Attributes

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. For instance, <DIV CLASS=APPENDIX> defines a
       division that acts as an appendix. By convention, the class
       names are interpreted hierarchically, with the most general
       class on the left and the most specific on the right, where
       classes are separated by a period. The CLASS attribute is most
       commonly used to attach a different style to some element, but
       it is recommended that where practical class names should be
       picked on the basis of the element's semantics, as this will
       permit other uses, such as restricting search through documents
       by matching on element class names. The conventions for choosing
       class names are outside the scope of this specification. 

   ALIGN 
       The ALIGN attribute can be used to explicitly specify the
       horizontal alignment of paragraphs within a division:
       
       

       align=left 

Dave Raggett                                                           Page 27
HTML 3.0                                                       28th March 1995

           Paragraphs are rendered flush left (the default). 

       align=center 
           Paragraphs are centered. 

       align=right 
           Paragraphs are rendered flush right. 

       align=justify 
           Text lines are justified where practical, otherwise this
           gives the same effect as the default align=left setting.

   NOWRAP 
       The NOWRAP attribute is used when you don't want the browser to
       automatically wrap lines. You can then explicitly specify line
       breaks in paragrphs using the BR element. 

   CLEAR 
       This attribute is common to all block-like elements. When text
       flows around a figure or table in the margin, you sometimes want
       to start the division below the figure rather than alongside it.
       The CLEAR attribute allows you to move down unconditionally:
       
       

       clear=left
           move down until left margin is clear 

       clear=right
           move down until right margin is clear 

       clear=all
           move down until both margins are clear 

       Alternatively, you can decide to place the element alongside the
       figure just so long as there is enough room. The minimum width
       needed is specified as:
       
       

       clear="40 en"
           move down until there is at least 40 en units free 

       clear="100 pixels"
           move down until there is at least 100 pixels free 

       The style sheet (or browser defaults) may provide default
       minimum widths for each class of block-like elements. 






Dave Raggett                                                           Page 28
HTML 3.0                                                       28th March 1995

Headings

   Permitted Context: %Body.Content
   Content Model: %text 

   HTML defines six levels of headings. A heading element implies all
   the font changes, paragraph breaks before and after, and any white
   space necessary to render the heading. The heading elements are H1,
   H2, H3, H4, H5, and H6 with H1 being the highest (or most important)
   level and H6 the least. For example: 

   <H1>This is a top level heading</H1> Here is some text.
   <H2>Second level heading</H2> Here is some more text.

   Use the DIV element together with header elements when you want to
   make the hierarchical structure of a document explicit. This is
   needed as header elements themselves only contain the text of the
   header, and do not imply any structural division of documents into
   sections. Header elements have the same content model as paragraphs,
   that is text and character level markup, such as character emphasis,
   inline images, form fields and math. 

   Headers play a related role to lists in structuring documents, and
   it is common to number headers or to include a graphic that acts
   like a bullet in lists. HTML 3.0 recognizes this with attributes
   that assist with numbering headers and allow authors to specify a
   custom graphic. 

   The numbering style is controlled by the style sheet, e.g. 

   1.  The style sheet specifies whether headers are numbered, and
       which style is used to render the current sequence number, e.g.
       arabic, upper alpha, lower alpha, upper roman, lower roman or a
       numbering scheme appropriate to the current language. 

   2.  Whether the parent numbering is inherited, e.g. "5.1.d" where 5
       is the current sequence number for H1 headers, 1 is the number
       for H2 headers and 4 for H3 headers. 

   The seqnum and skip attributes can be used to override the default
   treatment of header sequence numbers, and provide for a continuity
   with numbered lists. 

   The dingbat or src attribute may be used to specify a bullet-like
   graphic to be placed adjacent to the header. The positioning of this
   graphic is controlled by the style sheet. The graphic is for
   decorative purposes only and silently ignored on non-graphical HTML
   user agents. 

Word Wrapping

   User agents are free to wrap lines at whitespace characters so as to
   ensure lines fit within the current window size. Use the &nbsp;

Dave Raggett                                                           Page 29
HTML 3.0                                                       28th March 1995

   entity for the non-breaking space character, when you want to make
   sure that a line isn't broken! Alternatively, use the NOWRAP
   attribute to disable word wrapping and the <BR> element to force
   line breaks where desired. 

   --Netscape includes two tags: <NOBR>...</NOBR>, and <WBR>. The
   former turns off wordwrapping between the start and end NOBR tag,
   while WBR is for the rare case when you want to specify where to
   break the line if needed. Should HTML 3.0 provide an equivalent
   mechanism to WBR, (either a tag or an entity)?-- 

Permitted Attributes

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. For instance, <H2 CLASS=Section> defines a
       level 2 header that acts as a section header. By convention, the
       class names are interpreted hierarchically, with the most
       general class on the left and the most specific on the right,
       where classes are separated by a period. The CLASS attribute is
       most commonly used to attach a different style to some element,
       but it is recommended that where practical class names should be
       picked on the basis of the element's semantics, as this will
       permit other uses, such as restricting search through documents
       by matching on element class names. The conventions for choosing
       class names are outside the scope of this specification. 

   ALIGN 
       Headings are usually rendered flush left. The ALIGN attribute
       can be used to explicitly specify the horizontal alignment:
       
       

       align=left 
           The heading is rendered flush left (the default). 

       align=center 
           The heading is centered. 

Dave Raggett                                                           Page 30
HTML 3.0                                                       28th March 1995


       align=right 
           The heading is rendered flush right. 

       align=justify 
           Heading lines are justified where practical, otherwise this
           gives the same effect as the default align=left setting. 

       For example: 

       <h1 align=center>This is a centered heading</H1>
       Here is some text. <H2 align=right>and this is a flush right
       heading</H2> Here is some more text.

   CLEAR 
       This attribute is common to all block-like elements. When text
       flows around a figure or table in the margin, you sometimes want
       to start an element like a header, paragraph or list below the
       figure rather than alongside it. The CLEAR attribute allows you
       to move down unconditionally:
       
       

       clear=left
           move down until left margin is clear 

       clear=right
           move down until right margin is clear 

       clear=all
           move down until both margins are clear 

       Alternatively, you can decide to place the element alongside the
       figure just so long as there is enough room. The minimum width
       needed is specified as:
       
       

       clear="40 en"
           move down until there is at least 40 en units free 

       clear="100 pixels"
           move down until there is at least 100 pixels free 

       The style sheet (or browser defaults) may provide default
       minimum widths for each class of block-like elements. 

   SEQNUM 
       A sequence number is associated with each level of header from
       the top level (H1) to the bottom level (H6). This attribute is
       used to set the sequence number associated with the header level
       of the current element to a given number, e.g. SEQNUM=10.
       Normally, the sequence number is initialized to 1 at the

Dave Raggett                                                           Page 31
HTML 3.0                                                       28th March 1995

       beginning of the document and incremented after each header
       element. It is reset to 1 by any header element of a higher
       level, e.g. an H1 header resets the sequence numbers for H2 to
       H6. The style of header numbering is controlled by the style
       sheet. 

   SKIP 
       Increments the sequence number before rendering the element. It
       is used when headers have been left out of the sequence. For
       instance, SKIP=3 advances the sequence number past 3 omitted
       items. 

   DINGBAT 
       Specifies an iconic image to appear preceding the header. The
       icon is specified as an entity name. A list of standard icon
       entity names for HTML 3.0 is given in an appendix of this
       specification. 

   SRC 
       Specifies an image to appear preceding the header. The image is
       specified as a URI. This attribute may appear together with the
       MD attribute. 

   MD 
       Specifies a message digest or cryptographic checksum for the
       associated graphic specified by the SRC attribute. It is used
       when you want to be sure that a linked object is indeed the same
       one that the author intended, and hasn't been modified in any
       way. For instance, MD="md5:jV2OfH+nnXHU8bnkPAad/mSQlTDZ", which
       specifies an MD5 checksum encoded as a base64 character string.
       The MD attribute is generally allowed for all elements which
       support URI based links. 

   NOWRAP 
       The NOWRAP attribute is used when you don't want the browser to
       automatically wrap lines. You can then explicitly specify line
       breaks in headings using the BR element. For example: 

       <h1 nowrap>This heading has wordwrap turned off<br>
       and the BR element is used for explicit line breaks</H1>














Dave Raggett                                                           Page 32
HTML 3.0                                                       28th March 1995

Paragraphs

   Permitted Context: %Body.Content, %flow, %block
   Content Model: %text 

   The <P> element is used to define a paragraph. The exact rendering
   (indentation, leading etc.) is not defined and may be a function of
   other tags, style sheets, etc. The ALIGN attribute can be used to
   explicitly specify the horizontal alignment. Paragraph elements have
   the same content model as headers, that is text and character level
   markup, such as character emphasis, inline images, form fields and
   math. 

   Example: 

   <H1>The heading precedes the first paragraph</H1>
   <P>Here is the text of the first paragraph. <P>and this is
   the text of the second paragraph.

   The text up to the next <p> element is treated as being part of the
   current paragraph. This is an example of how SGML allows certain end
   tags like </p> to be left out where they can be inferred from the
   context. 

Word Wrapping

   User agents are free to wrap lines at whitespace characters so as to
   ensure lines fit within the current window size. Use the &nbsp;
   entity for the non-breaking space character, when you want to make
   sure that a line isn't broken! Alternatively, use the NOWRAP
   attribute to disable word wrapping and the <BR> element to force
   line breaks where desired. 

   --Netscape includes two tags: <NOBR>...</NOBR>, and <WBR>. The
   former turns off wordwrapping between the start and end NOBR tag,
   while WBR is for the rare case when you want to specify where to
   break the line if needed. Should HTML 3.0 provide an equivalent
   mechanism to WBR, (either a tag or an entity)?-- 

   Note: Do not use empty paragraphs to add white space around
   headings, lists or other elements. White space is added by the
   rendering software. 

Permitted Attributes

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.

Dave Raggett                                                           Page 33
HTML 3.0                                                       28th March 1995

       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. For instance, <P CLASS=abstract> defines a
       paragraph that acts as an abstract. By convention, the class
       names are interpreted hierarchically, with the most general
       class on the left and the most specific on the right, where
       classes are separated by a period. The CLASS attribute is most
       commonly used to attach a different style to some element, but
       it is recommended that where practical class names should be
       picked on the basis of the element's semantics, as this will
       permit other uses, such as restricting search through documents
       by matching on element class names. The conventions for choosing
       class names are outside the scope of this specification. 

   ALIGN 
       Paragraphs are usually rendered flush left. The ALIGN attribute
       can be used to explicitly specify the horizontal alignment:
       
       

       align=left 
           The paragraph is rendered flush left (the default). 

       align=center 
           The paragraph is centered. 

       align=right 
           The paragraph is rendered flush right. 

       align=justify 
           Text lines are justified where practical, otherwise this
           gives the same effect as the default align=left setting.

       For example: 

       <p align=center>This is a centered paragraph.
       <p align=right>and this is a flush right paragraph.

   CLEAR 
       This attribute is common to all block-like elements. When text
       flows around a figure or table in the margin, you sometimes want
       to start an element like a header, paragraph or list below the
       figure rather than alongside it. The CLEAR attribute allows you
       to move down unconditionally:
       
       

Dave Raggett                                                           Page 34
HTML 3.0                                                       28th March 1995


       clear=left
           move down until left margin is clear 

       clear=right
           move down until right margin is clear 

       clear=all
           move down until both margins are clear 

       Alternatively, you can decide to place the element alongside the
       figure just so long as there is enough room. The minimum width
       needed is specified as:

       clear="40 en"
           move down until there is at least 40 en units free 

       clear="100 pixels"
           move down until there is at least 100 pixels free 

       The style sheet (or browser defaults) may provide default
       minimum widths for each class of block-like elements. 

   NOWRAP 
       The NOWRAP attribute is used when you don't want the browser to
       automatically wrap lines. You can then explicitly specify line
       breaks in paragraphs using the BR element. For example: 

       <p nowrap>This paragraph has wordwrap turned off<br>
       and the BR element is used for explicit line breaks
























Dave Raggett                                                           Page 35
HTML 3.0                                                       28th March 1995

Line Breaks

   Permitted Context: %text
   Content Model: Empty! 

   Line break and tab elements can be used when you need a little more
   control over how the browser renders the text. The <BR> element is
   used to force a line break. 

   For example: 

       This is the first line<br>
       and this is the second<br>
       and this the third

   --Shouldn't we have a conditional line break element like Netscape's
   WBR thats indicates where to break lines when needed and when
   wordwrap is disabled? Rather than an element, shouldn't this be an
   entity - is there one already defined for this purpose?-- 

Permitted Attributes

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 

   CLEAR 
       When text flows around a figure or table in the margin, you
       sometimes want to start the next line below the figure rather

Dave Raggett                                                           Page 36
HTML 3.0                                                       28th March 1995

       than alongside it. The CLEAR attribute allows you to move down unconditionally:
       
       

       clear=left
           move down until left margin is clear 

       clear=right
           move down until right margin is clear 

       clear=all
           move down until both margins are clear 

       Alternatively, you can decide to place the element alongside the
       figure just so long as there is enough room. The minimum width
       needed is specified as:
       
       

       clear="40 en"
           move down until there is at least 40 en units free 

       clear="100 pixels"
           move down until there is at least 100 pixels free 

       The style sheet (or browser defaults) may provide default
       minimum widths for each class of block-like elements. 



























Dave Raggett                                                           Page 37
HTML 3.0                                                       28th March 1995

Horizontal Tabs

   Permitted Context: %text
   Content Model: Empty! 

   The TAB element can be used when you want fine control over the
   horizontal positioning. The TAB element is used with the <tab
   id=--name--> attribute to define named tab stops. Subsequently, you
   can use the TAB element with the <tab to=--name--> attribute to move
   to the previously defined tab stop. This approach avoids the need to
   know the font metrics in advance. The TAB element, together with
   style sheets, allows conversion software to preserve layout
   information when importing documents created with conventional word
   processing software. 

   For example: 

   <p><b>noct<tab id=t1>ambulant</b> - walking at night<br>
   <tab to=t1>(from Latin: <i>nox noctis</i> night + <i>ambulare</i> walk)

   which is rendered as: 

   noctambulant - walking at night
       (from Latin: --nox noctis-- night + --ambulare-- walk)
   

   The tab stop name (--t1-- in the example) should be unique within
   the current document and composed from an initial letter followed by
   letters, digits or hyphens. 

   Sometimes, you want to make the remainder of the line flush right
   while leaving the earlier words unmoved. This is possible with the
   --align-- attribute. For example: 

   Left part of line<tab align=right>and right part of line.

   which is rendered as: 

   Left part of line                               and right part of line.

Permitted Attributes

   ID 
       An SGML identifier used to name a new tab stop at the current
       position. The scope of the tab stop is the rest of the document. 

   INDENT 
       Specifies the number of en units before the tab stop. The en is
       a typographical unit equal to half the point size. It allows
       authors to control the leading indent before text, e.g. in
       poetry, one might use: <TAB INDENT=6> to indent six en units at
       the start of a line. The INDENT attribute is not meaningful when
       combined with the TO attribute. 

Dave Raggett                                                           Page 38
HTML 3.0                                                       28th March 1995


   TO 
       Specifies a previously defined tab stop (see ID attribute). 

   ALIGN 
       Lines are usually rendered according to the alignment option for
       the enclosing paragraph element. The ALIGN attribute can be used
       to explicitly specify the horizontal alignment:
       
       

       align=left 
           Following text starts immediately after the designated tab
           stop (the default). 

       align=center 
           Following text up to next tab or line break is centered on
           the designated tab stop. If the TO attribute is missing, it
           centers the text between the current left and right margins. 

       align=right 
           Following text up to the next tab or line break is rendered
           flush right to the designated tab stop. If the TO attribute
           is missing, it renders the text flush right against the
           current right margin. 

       align=decimal 
           The following text is searched for the first occurrence of
           the character representing the decimal point. The text up to
           the next tab or line break is then aligned such that the
           decimal point starts at the designated tab stop. If the TO
           attribute is missing, the tab element is treated as a single
           space character. 

   DP 
       This specifies the character to be used for the decimal point
       with the ALIGN attribute, e.g. dp="." (the default) or dp=",".
       The default may be altered by the language context, as set by
       the LANG attribute on enclosing elements. 

   Note: if the specified alignment and tab stop would cause text to
   overlap preceding text, then the tab element may be treated as a
   single space character. 

   --How should the above be rewritten to work with languages which are
   rendered from right to left? What about lines with mixed
   directions?--  







Dave Raggett                                                           Page 39
HTML 3.0                                                       28th March 1995

Hypertext Links

   Permitted Context: %text
   Content Model: %text, but no nested anchors 

   The anchor <A> element is used to define the start and/or
   destination of a hypertext link. In previous versions of HTML it
   provided the only means for defining destination anchors within
   documents, but you can now use any ID attribute as a destination
   anchor so that links can now be made to divisions, paragraphs and
   most other elements. 

   Example: 

   The <A HREF="http://www.w3.org/">World Wide Web Organization</A>
   provides information on Web related standards, mailing lists
   and freeware tools.

   The text between the start and end tag defines the label for the
   link. Selecting the link takes the reader to the document specified
   by the HREF attribute, in this case, the W3O home page. The label
   can include graphics defined with IMG elements. 

   For FIG elements, the anchor element serves a dual role.
   Non-graphical user agents interpret it as a conventional text-based
   hypertext link, while graphical user agents interpret the anchor's
   SHAPE attribute as a graphical hotzone on the figure. 

Permitted Attributes

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. This attribute supercedes the "NAME"
       attribute, see below. 

       For example, the following paragraph is defined as an anchor
       named "potomac": 

       <P ID="potomac">The Potomac river flows into Boston harbour,
       and played an important role in opening up the hinterland
       to early settlers...

       Elsewhere, you can define a link to this paragraph, as follows: 

       <A HREF="#potomac">Boston</A> is a historic city and
       a thriving center of commerce and higher education.

       The reader can select the link labelled "Boston" to see further
       information on the Boston area. 

   LANG 

Dave Raggett                                                           Page 40
HTML 3.0                                                       28th March 1995

       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 

   HREF 
       The HREF attribute implies that the anchor acts as the start of
       a hypertext link. The destination is designated by the value of
       the HREF attribute, which is expressed in the Universal Resource
       Identifier (URI) notation. 

   MD 
       Specifies a message digest or cryptographic checksum for the
       linked document designated by the HREF attribute. It is used
       when you want to be sure that a linked object is indeed the same
       one that the author intended, and hasn't been modified in any
       way. For instance, MD="md5:jV2OfH+nnXHU8bnkPAad/mSQlTDZ", which
       specifies an MD5 checksum encoded as a base64 character string.
       The MD attribute is generally allowed for all elements which
       support URI based links. 

   NAME 
       This attribute is used to define a named anchor for use as the
       destination of hypertext links. For example, the following
       defines an anchor than can be used as the destination of a jump
       into a description of the Boston area. 

       The <A NAME="potomac"&gtPotomac river</A> flows into Boston
       harbour.

       Note: the NAME attribute has been superceded by the ID
       attribute. User agents should include support for NAME to ensure
       backwards compatibility with legacy documents produced using
       previous versions of HTML. 

   SHAPE
       This attribute is used within figures to define shaped hotzones

Dave Raggett                                                           Page 41
HTML 3.0                                                       28th March 1995

       for graphical hypertext links. Full details of how to use this
       feature will be given with the description of the figure
       element. The attribute value is a string taking one of the
       following forms:
       
       

       "default" 
           Used to define a default link for the figure background. 

       "circle x, y, r" 
           Where x and y define the center and r specifies the radius. 

       "rect x, y, w, h" 
           Where x, y define the upper left corner and w, h define the
           width and height respectively 

       "polygon x1, y1, x2, y2, ..." 
           Given n pairs of x, y coordinates, the polygon is closed by
           a line linking the n'th point to the first. Intersecting
           polygons use the non-zero winding number rule to determine
           if a point lies inside the polygon. 

       If a pointer event occurs in a region where two or more shapes
       overlap, the distance from the point to the center of gravity of
       each of the overlapping shapes is computed and the closest one
       chosen. This feature is useful when you want lots of closely
       spaced hotzones, for example over points on a map, as it allows
       you to use simple shapes without worrying about overlaps. 

       Note: The x coordinate increases to the right, and the y
       coordinate increases downwards in the same way as IMG and image
       maps. If both numbers are integers, the coordinates are
       interpreted as pixel offsets from the upper left corner of the
       figure. Otherwise, the coordinates are interpreted as scaled
       values in the range 0.0 to 1.0 across the figure. Note the
       syntax is tolerant of repeated white space characters between
       tokens. 

   TITLE 
       This is informational only and describes the object specified
       with the HREF attribute. It can be used for object types that
       don't possess titles, such as graphics, plain text and Gopher
       menus. 

   REL 
       Used to describe the relationship of the linked object specified
       with the HREF attribute. The set of relationship names is not
       part of this specification, although "Path" and "Node" are
       reserved for future use with hypertext paths or guided tours.
       The REL attribute can be used to support search for links
       serving particular relationships. 


Dave Raggett                                                           Page 42
HTML 3.0                                                       28th March 1995

   REV 
       This defines a reverse relationship. A link from document A to
       document B with REV=--relation-- expresses the same relationship
       as a link from B to A with REL=--relation--. REV=made is
       sometimes used to identify the document author, either the
       author's email address with a --mailto-- URI, or a link to the
       author's home page. Tables of contents can use anchors with
       REV="ToC" to allow software to insert page numbers when printing
       hypertext documents. The plain text version of this
       specification was generated in this way! 












































Dave Raggett                                                           Page 43
HTML 3.0                                                       28th March 1995

Overview of Character-Level Elements

   Permitted Context: %text
   Content Model: %text 

   Character level elements are used to specify either the structural
   meaning or the physical appearence of marked text without causing a
   paragraph break. Like most other elements, character level elements
   include both start and end tags. Only the characters between the
   tags are effected. For example: 

       This is <EM>emphasized</EM> text.

   Highlighting elements are allowed within the content of other
   highlighting elements, but implementations are not required to
   render these nested highlighting elements distinctly from non-nested
   elements. For example, implementations may render the following two
   cases identically: 

       plain <B>bold <I>italic</I></B>

       plain <B>bold </B><I>italic</I>

   Some character highlighting styles are more explicit than others
   about how they should be physically represented. Designate the
   information type rather than the character format wherever possible,
   unless for example, it is necessary to refer to the text as in "The
   italic parts are mandatory". 

Permitted Attributes

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is

Dave Raggett                                                           Page 44
HTML 3.0                                                       28th March 1995

       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 

















































Dave Raggett                                                           Page 45
HTML 3.0                                                       28th March 1995

Information Type Elements

   EM 
       The <EM> element provides typographic emphasis, typically
       italics. While <EM> and <I> often give the same effect, use <EM>
       except where it is necessary in the text to refer to the
       formatting, as in "The italic parts are mandatory". This will
       help to ensure consistency between documents from various
       sources if (for example) the reader prefers to use color in
       place of italics for emphasis. 

   CITE 
       The <CITE> element specifies a citation. Sections tagged with
       the CITE element are typically rendered in italics. 

   STRONG 
       The <STRONG> element provides strong typographic emphasis,
       typically bold. 

   CODE 
       The <CODE> element indicates an example of code; typically
       rendered in a mono-spaced font. Do not confuse with PRE. 

   SAMP 
       The <SAMP> element indicates a sequence of literal characters. 

   KBD 
       The <KBD> element indicates text typed (keyboarded) by the user.
       It might typically be used in an instruction manual. 

   VAR 
       The <VAR> element indicates a variable name, and might typically
       be used in an instruction manual. 

   DFN 
       The <DFN> element indicates the defining instance of a term.
       --New in 3.0--. 

   Q 
       The <Q> element is used for a short quotation. It is typically
       shown enclosed in quotation marks as appropriate to the language
       context. For English these would be matching double or single
       quotation marks, alternating for nested quotes. The language
       context is set by the LANG attribute. --New in 3.0--. 

   LANG 
       The <LANG> element is used to alter the language context when it
       is inappropriate to do this with other character-level elements.
       --New in 3.0--. 

   AU 
       The <AU> element indicates the name of an author. --New in
       3.0--. 

Dave Raggett                                                           Page 46
HTML 3.0                                                       28th March 1995


   PERSON 
       The <PERSON> element is used for names of people to allow these
       to be extracted automatically by indexing programs. --New in
       3.0--. 

   ACRONYM 
       The <ACRONYM> element is used to markup acronyms. --New in
       3.0--. 

   ABBREV 
       The <ABBREV> element is used to markup abbreviations. --New in
       3.0--. 

   INS 
       The <INS> element is used for inserted text, for instance in
       legal documents. --New in 3.0--. 

   DEL 
       The <DEL> is used for deleted text, for instance in legal
       documents. --New in 3.0--. 

   An example: 

   This text contains an <em>emphasized</em> word.
   <strong>Don't assume</strong> that it will be italic!
   It was made with the <code>EM</code> element. A cite is
   often italic and has no formally required structure:
   <cite>Moby Dick</cite> is a book title.

























Dave Raggett                                                           Page 47
HTML 3.0                                                       28th March 1995

Font Style Elements

   These elements may be nested within one another. Browsers should,
   where practical, aim to combine different types of highlighting as
   required. 

   B (Boldface) 
       The <B> element specifies that the enclosed text should be
       displayed in a boldface. If this is not practical, an
       alternative mapping is allowed. 

   I (Italic) 
       The <I> element specifies that the enclosed text should be
       displayed, if practical, in an italic font (or slanted). 

   TT (TeleType) 
       The <TT> element specifies that the enclosed text should be
       displayed, if practical, in a fixed-pitch typewriter font. 

   U (Underline) 
       The <U> element specifies that the enclosed text should be
       displayed, if practical, as underlined. --Not widely supported-- 

   S (Strike through) 
       The <S> element specifies that the enclosed text should be
       displayed with a horizontal line striking through the text. If
       this is not practical, an alternative mapping is allowed. --New
       in 3.0--. 

   BIG (Big print) 
       The <BIG> element specifies that the enclosed text should be
       displayed, if practical, using a big font (compared with the
       current font). --New in 3.0--. 

   SMALL (Small print) 
       The <SMALL> element specifies that the enclosed text should be
       displayed, if practical, using a small font (compared with
       normal text). --New in 3.0--. 

   SUB (Subscript) 
       The <SUB> element specifies that the enclosed text should be
       displayed as a subscript, and if practical, using a smaller font
       (compared with normal text). The ALIGN attribute for SUB is only
       meaningful within the MATH element. --New in 3.0--. 

   SUP (Superscript) 
       The <SUP> element specifies that the enclosed text should be
       displayed as a superscript, and if practical, using a smaller
       font (compared with normal text). The ALIGN attribute for SUP is
       only applicable within the MATH element. --New in 3.0--. 

   An example: 


Dave Raggett                                                           Page 48
HTML 3.0                                                       28th March 1995

   This text contains some <b><i>bold italic</i></b> text, some
   <S>struck through</S> text and some <SMALL>small print</SMALL>.




















































Dave Raggett                                                           Page 49
HTML 3.0                                                       28th March 1995

The IMG (Image) Element

   Permitted Context: %text
   Content Model: Empty! 

   The <IMG> tag is used to incorporate in-line graphics (typically
   icons or small graphics) into an HTML document. This element is NOT
   intended for embedding other HTML text. For large figures with
   captions and text flow see FIG element. 

   Example: 

   <IMG SRC="tajmahal.gif" ALT="The Taj Mahal">

   Browsers that cannot display in-line images ignore the IMG element
   unless it contains the ALT attribute. Note that some browsers can
   display (or print) linked graphics but not in-line graphics. If the
   graphic is essential, you may want to create a link to it rather
   than to put it in-line. If the graphic is essentially decorative,
   then IMG is appropriate. 

Permitted Attributes

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 

   SRC (Source) 
       The SRC attribute specifies the URI for the image to be

Dave Raggett                                                           Page 50
HTML 3.0                                                       28th March 1995

       embedded. Its syntax is the same as that of the HREF attribute
       of the <A> tag. SRC is mandatory. 

   MD 
       Specifies a message digest or cryptographic checksum for the
       associated graphic specified by the SRC attribute. It is used
       when you want to be sure that the image is indeed the same one
       that the author intended, and hasn't been modified in any way.
       For instance, MD="md5:jV2OfH+nnXHU8bnkPAad/mSQlTDZ", which
       specifies an MD5 checksum encoded as a base64 character string.
       The MD attribute is generally allowed for all elements which
       support URI based links. 

   WIDTH 
       Optional suggested width for the image. By default, this is
       given in pixels. 

   HEIGHT 
       Optional suggested height for the image. By default, this is
       given in pixels. 

   UNITS 
       This optional attribute specifies the units for the width and
       height attributes. It is one of: units=pixels (the default) or
       units=en (half the point size). 

   ALIGN 
       Take values TOP or MIDDLE or BOTTOM, defining whether the top or
       middle or bottom of the graphic should be aligned with the
       baseline for the text line in which the IMG element appears. 

       With ALIGN=LEFT, the graphic will float down and over to the
       current left margin, and subsequent text will wrap around the
       right hand side of the graphic. Likewise for ALIGN=RIGHT, the
       graphic aligns with the current right margin and, and text wraps
       around the left. It is inappropriate to use this feature for
       larger graphics as these are best represented with the FIG
       element. 

   ALT (Alternate text) 
       Optional alternative text as an alternative to the graphics for
       display in text-only environments. The alt text can contain
       entities e.g. for accented characters or special symbols, but it
       can't contain markup. The latter is possible, however, with the
       FIG element. 

   ISMAP 
       An image map is a graphical map by which users can navigate
       transparently from one information resource to another. The
       ISMAP attribute identifies an image as an image map. The IMG
       element can then be used as part of the label for a hypertext
       link (see the anchor element). When the user clicks on the image
       the location clicked is sent to the server designated by the

Dave Raggett                                                           Page 51
HTML 3.0                                                       28th March 1995

       hypertext link. 

       For example: 

       <A HREF="http://machine/htbin/imagemap/sample">
       <IMG SRC="sample.gif" ISMAP></A>

   Note: There are drawbacks from having the server process clicks on
   images: the delay in getting feedback and the inability to change
   the pointer cursor on the fly as it moves over hotzones. Client-side
   processing of events is possible if one of the following applies: 

   *   The server may allow the image map to be downloaded and
       processed locally. This should work with legacy documents
       produced using earlier versions of HTML. 

   *   Using an image format that includes image hotzones as part of
       the file format. 

   *   The FIG element provides for client-side image maps as a unified
       part of the figure description. It offers a number of advantages
       over IMG, including captions, markup in alt text and text flow
       around figures. 































Dave Raggett                                                           Page 52
HTML 3.0                                                       28th March 1995

UL (Unordered List)

   Permitted Context: %Body.Content, %flow, %block
   Content Model: Optional list header (LH), followed by one or more
   list items(LI) 

   An unordered list typically is a bulleted list of items. HTML 3.0
   gives you the ability to customise the bullets, to do without
   bullets and to wrap list items horizontally or vertically for
   multicolumn lists. 

   The opening list tag must be <UL>. It is followed by an optional
   list header (<LH>caption</LH>) and then by the first list item
   (<LI>). For example: 

       <UL>
         <LH>Table Fruit</LH>
         <LI>apples
         <LI>oranges
         <LI>bananas
       </UL>

   which could be rendered as: 

Table Fruit

   *   apples 

   *   oranges 

   *   bananas 

   Note: Some legacy documents may include headers or plain text before
   the first LI element. Implementors of HTML 3.0 user agents are
   advised to cater for this possibility in order to handle badly
   formed legacy documents. 

MENU and DIR elements

   These elements are superceded by extensions to the UL element. User
   agents are advised to continue to support them for the sake of
   legacy documents. Both MENU and DIR consist of one or more LI
   elements, similar to UL. MENU lists are typically rendered without
   bullets in a more compact style than UL. You can get the same effect
   with <UL PLAIN>. DIR lists are used to present lists of items
   containing up to 20 characters each. Items in a DIR list are
   arranged in columns. You can get the same effect with <UL PLAIN
   WRAP=HORIZ>. 

Permitted Attributes for the UL Element

   ID 
       An SGML identifier used as the target for hypertext links or for

Dave Raggett                                                           Page 53
HTML 3.0                                                       28th March 1995

       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 

   CLEAR 
       This attribute is common to all block-like elements. When text
       flows around a figure or table in the margin, you sometimes want
       to start an element like a header, paragraph or list below the
       figure rather than alongside it. The CLEAR attribute allows you
       to move down unconditionally:
       
       

       clear=left
           move down until left margin is clear 

       clear=right
           move down until right margin is clear 

       clear=all
           move down until both margins are clear 

       Alternatively, you can decide to place the element alongside the
       figure just so long as there is enough room. The minimum width
       needed is specified as:
       
       

       clear="40 en"
           move down until there is at least 40 en units free 


Dave Raggett                                                           Page 54
HTML 3.0                                                       28th March 1995

       clear="100 pixels"
           move down until there is at least 100 pixels free 

       The style sheet (or browser defaults) may provide default
       minimum widths for each class of block-like elements. 

   PLAIN 
       The presence of this attribute suppresses the display of
       bullets, e.g. <UL PLAIN>. 

   SRC 
       Specifies an image for use as a bullet. The image is specified
       as a URI. This attribute may appear together with the MD
       attribute. 

   MD 
       Specifies a message digest or cryptographic checksum for the
       associated graphic specified by the SRC attribute. It is used
       when you want to be sure that a linked object is indeed the same
       one that the author intended, and hasn't been modified in any
       way. For instance, MD="md5:jV2OfH+nnXHU8bnkPAad/mSQlTDZ", which
       specifies an MD5 checksum encoded as a base64 character string.
       The MD attribute is generally allowed for all elements which
       support URI based links. 

   DINGBAT 
       Specifies an iconic image for use as a bullet. The icon is
       specified as an entity name. A list of standard icon entity
       names for HTML 3.0 is given in an appendix of this
       specification, e.g. folder is the entity name for an icon
       denoting a directory or folder. 

   WRAP 
       The WRAP attribute is used for multicolumn lists. Use wrap=vert
       if you want to arrange the list items down the page before
       wrapping to the next column. Use wrap=horiz if you want to
       arrange the items across the page (less useful). The user agent
       is responsible for determining how many columns are appropriate. 

   COMPACT 
       The presence of this attribute indicates the user agent should
       use reduced interitem spacing. In practice, there are several
       ways to increase the compactness of lists: reduced vertical
       interitem spacing, smaller font size, or even to avoid line
       breaks between items. This is best handled through associated
       style sheets and the class attribute. 








Dave Raggett                                                           Page 55
HTML 3.0                                                       28th March 1995

LH (List Header)

   Permitted Context: Immediately following UL, OL or DL
   Content Model: %text 

   The LH or list header element is used to provide a title for a list.
   User agents can use this in place of the full list when a mechanism
   is provided to fold and unfold nested lists. 

Permitted Attributes for the LH Element

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 
















Dave Raggett                                                           Page 56
HTML 3.0                                                       28th March 1995

LI (List Item)

   Permitted Context: UL or OL
   Content Model: %flow 

   The LI or list item element is used for items in both ordered and
   unordered lists. 

   Note: The content model for list items is quite broad, including
   paragraphs, lists, performatted text, forms, tables, figures and
   admonishments. Headers are not permitted, although implementors of
   HTML 3.0 user agents are advised to cater for this possibility in
   order to handle badly formed legacy documents. If %html.recommended
   is active, the HTML 3.0 DTD expects you to enclose plain text in a
   block element such as <P> 

Permitted Attributes for the LI Element

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 

   CLEAR 
       This attribute is common to all block-like elements. When text
       flows around a figure or table in the margin, you sometimes want
       to start the list item below the figure rather than alongside
       it. The CLEAR attribute allows you to move down unconditionally:
       
       

Dave Raggett                                                           Page 57
HTML 3.0                                                       28th March 1995


       clear=left
           move down until left margin is clear 

       clear=right
           move down until right margin is clear 

       clear=all
           move down until both margins are clear 

       Alternatively, you can decide to place the element alongside the
       figure just so long as there is enough room. The minimum width
       needed is specified as:
       
       

       clear="40 en"
           move down until there is at least 40 en units free 

       clear="100 pixels"
           move down until there is at least 100 pixels free 

       The style sheet (or browser defaults) may provide default
       minimum widths for each class of block-like elements. 

   SRC 
       Specifies an image for use as a bullet. The image is specified
       as a URI. This attribute may appear together with the MD
       attribute. 

   MD 
       Specifies a message digest or cryptographic checksum for the
       associated graphic specified by the SRC attribute. It is used
       when you want to be sure that a linked object is indeed the same
       one that the author intended, and hasn't been modified in any
       way. For instance, MD="md5:jV2OfH+nnXHU8bnkPAad/mSQlTDZ", which
       specifies an MD5 checksum encoded as a base64 character string.
       The MD attribute is generally allowed for all elements which
       support URI based links. 

   DINGBAT 
       Specifies an iconic image for use as a bullet. The icon is
       specified as an entity name. A list of standard icon entity
       names for HTML 3.0 is given in an appendix of this
       specification, e.g. folder is the entity name for an icon
       denoting a directory or folder. 

   SKIP 
       Increments the sequence number before rendering the element. It
       is used when headers have been left out of the sequence. For
       instance, SKIP=3 advances the sequence number past 3 omitted
       items. 


Dave Raggett                                                           Page 58
HTML 3.0                                                       28th March 1995

OL (Ordered List)

   Permitted Context: %Body.Content, %flow, %block
   Content Model: Optional list header (LH), followed by one or more
   list items(LI) 

   An ordered list typically is a numbered list of items. HTML 3.0
   gives you the ability to control the sequence number - to continue
   where the previous list left off, or to start at a particular
   number. The numbering style is left to associated style sheets, e.g.
   whether nested lists contribute to a compound item number, e.g.
   "3.1.5", or whether numbers are rendered as arabic, upper or lower
   case roman numerals or using the numbering scheme appropriate to the
   language context. 

   The opening list tag must be <OL>. It is followed by an optional
   list header (<LH>caption</LH>) and then by the first list item
   (<LI>). For example: 

       <OL>
         <LH>Meeting Agenda</LH>
         <LI>Minutes of the last meeting
         <LI>Do we need yet more meetings?
         <LI>Any other business
       </OL>

   which could be rendered as: 

Meeting Agenda

   1.  Minutes of the last meeting 

   2.  Do we need yet more meetings? 

   3.  Any other business 

   Note: Some legacy documents may include headers or plain text before
   the first LI element. Implementors of HTML 3.0 user agents are
   advised to cater for this possibility in order to handle badly
   formed legacy documents. 

Permitted Attributes for the OL Element

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific

Dave Raggett                                                           Page 59
HTML 3.0                                                       28th March 1995

       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 

   CLEAR 
       This attribute is common to all block-like elements. When text
       flows around a figure or table in the margin, you sometimes want
       to start an element like a header, paragraph or list below the
       figure rather than alongside it. The CLEAR attribute allows you
       to move down unconditionally:
       
       

       clear=left
           move down until left margin is clear 

       clear=right
           move down until right margin is clear 

       clear=all
           move down until both margins are clear 

       Alternatively, you can decide to place the element alongside the
       figure just so long as there is enough room. The minimum width
       needed is specified as:
       
       

       clear="40 en"
           move down until there is at least 40 en units free 

       clear="100 pixels"
           move down until there is at least 100 pixels free 

       The style sheet (or browser defaults) may provide default
       minimum widths for each class of block-like elements. 

   CONTINUE 
       Don't restart the sequence number, i.e. continue where previous

Dave Raggett                                                           Page 60
HTML 3.0                                                       28th March 1995

       list left off, e.g. <OL CONTINUE> 

   SEQNUM 
       Set the starting sequence number for the first item, e.g. <OL
       SEQNUM=23> 

   COMPACT 
       The presence of this attribute indicates the user agent should
       use reduced interitem spacing. In practice, there are several
       ways to increase the compactness of lists: reduced vertical
       interitem spacing, smaller font size, or even to avoid line
       breaks between items. This is best handled through associated
       style sheets and the class attribute. 









































Dave Raggett                                                           Page 61
HTML 3.0                                                       28th March 1995

DL - Definition Lists

   Permitted Context: %Body.Content, %flow, %block
   Content Model: Optional list header(LH), followed by one or more
   terms(DT) and definitions(DD). 

   A definition list is a list of terms and corresponding definitions.
   Definition lists are typically formatted with the term on the left
   with the definition following on the right or on the next line. The
   definition text is typically indented with respect to the term. 

   An alternative format places the term left aligned in a wide margin
   and the definition on one or more lines to the right of the term. If
   the DT term does not fit in the DT column (one third of the display
   area), it may be extended across the page with the DD section moved
   to the next line, or it may be wrapped onto successive lines of the
   left hand column. 

   The opening list tag must be <DL>. It is followed by an optional
   list header (<LH>caption</LH>) and then by term names (<DT>) and
   definitions (<DD>). For example: 

   <DL>
   <LH>List Header</LH>
   <DT>Term 1<dd>This is the definition of the first term.
   <DT>Term 2<dd>This is the definition of the second term.
   </DL>

   which could be rendered as: 

List Header

   Term 1
       This is the definition of the first term. 

   Term 2
       This is the definition of the second term. 

   The definition list element can take the COMPACT attribute, which
   suggests that a compact rendering be used, and is appropriate if the
   list elements are small and/or the entire list is large. 

   Note: Use the NOTE element when you want to have an indented note.
   The practice of using <DD> elements without corresponding <DT>
   elements is deprecated. 

Permitted Attributes for the DL Element

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

Dave Raggett                                                           Page 62
HTML 3.0                                                       28th March 1995


   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 

   CLEAR 
       This attribute is common to all block-like elements. When text
       flows around a figure or table in the margin, you sometimes want
       to start an element like a header, paragraph or list below the
       figure rather than alongside it. The CLEAR attribute allows you
       to move down unconditionally:
       
       

       clear=left
           move down until left margin is clear 

       clear=right
           move down until right margin is clear 

       clear=all
           move down until both margins are clear 

       Alternatively, you can decide to place the element alongside the
       figure just so long as there is enough room. The minimum width
       needed is specified as:
       
       

       clear="40 en"
           move down until there is at least 40 en units free 

       clear="100 pixels"
           move down until there is at least 100 pixels free 


Dave Raggett                                                           Page 63
HTML 3.0                                                       28th March 1995

       The style sheet (or browser defaults) may provide default
       minimum widths for each class of block-like elements. 

   COMPACT 
       The presence of this attribute indicates the user agent should
       use reduced interitem spacing. The COMPACT attribute may also
       reduce the width of the left-hand (DT) column. 

       In practice, there are several ways to increase the compactness
       of lists: reduced vertical interitem spacing, smaller font size,
       or even to avoid line breaks between items. This is best handled
       through associated style sheets and the class attribute. 

       The opening list tag must be DL COMPACT. It must be immediately
       followed by the first term (DT). For example: 

       <DL compact>
       <DT>Term<DD>This is the first definition in compact format.
       <DT>Term<DD>This is the second definition in compact format.
       </DL>


































Dave Raggett                                                           Page 64
HTML 3.0                                                       28th March 1995

DT - Term Name

   Permitted Context: DL
   Content Model: %text 

   The DT tag element specifies a term name, and you can have several
   terms per DD element. 

   Note: Term names are restricted to character level markup only,
   including epmhasis, inline images and footnotes. Paragraph tags and
   other block-like element such as headers are not permitted, although
   implementors of HTML 3.0 user agents are advised to cater for this
   possibility in order to handle badly formed legacy documents. 

Permitted Attributes for the DT Element

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 

   CLEAR 
       When text flows around a figure or table in the margin, you
       sometimes want to start the term name below the figure rather
       than alongside it. The CLEAR attribute allows you to move down unconditionally:
       
       

       clear=left
           move down until left margin is clear 

Dave Raggett                                                           Page 65
HTML 3.0                                                       28th March 1995


       clear=right
           move down until right margin is clear 

       clear=all
           move down until both margins are clear 

       Alternatively, you can decide to place the element alongside the
       figure just so long as there is enough room. The minimum width
       needed is specified as:
       
       

       clear="40 en"
           move down until there is at least 40 en units free 

       clear="100 pixels"
           move down until there is at least 100 pixels free 

       The style sheet (or browser defaults) may provide default
       minimum widths for each class of block-like elements. 

































Dave Raggett                                                           Page 66
HTML 3.0                                                       28th March 1995

DD - Term Definition

   Permitted Context: DL
   Content Model: %flow 

   The DD tag element specifies a term definition, and follows one or
   more DT elements. 

   Note: The content model for term definitions is quite broad,
   including paragraphs, lists, performatted text, forms, tables,
   figures and admonishments. Headers are not permitted, although
   implementors of HTML 3.0 user agents are advised to cater for this
   possibility in order to handle badly formed legacy documents. If
   %html.recommended is active, the HTML 3.0 DTD expects you to enclose
   plain text in a block element such as <P> 

Permitted Attributes for the DD Element

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 

   CLEAR 
       When text flows around a figure or table in the margin, you
       sometimes want to start term definition below the figure rather
       than alongside it. The CLEAR attribute allows you to move down unconditionally:
       
       


Dave Raggett                                                           Page 67
HTML 3.0                                                       28th March 1995

       clear=left
           move down until left margin is clear 

       clear=right
           move down until right margin is clear 

       clear=all
           move down until both margins are clear 

       Alternatively, you can decide to place the element alongside the
       figure just so long as there is enough room. The minimum width
       needed is specified as:
       
       

       clear="40 en"
           move down until there is at least 40 en units free 

       clear="100 pixels"
           move down until there is at least 100 pixels free 

       The style sheet (or browser defaults) may provide default
       minimum widths for each class of block-like elements. 































Dave Raggett                                                           Page 68
HTML 3.0                                                       28th March 1995

Figures

   Permitted Context: %body.content, %flow, %block
   Content Model: Optional OVERLAYs followed by an optional CAPTION,
   then %body.content and finally an optional CREDIT 

   The FIG element is used for figures. Subsequent elements will be
   flowed around the figure if there is sufficient room. This behaviour
   is disabled when the align attribute is --center-- (the default) or
   --justify--. 

   Figure overlays provide for more effective use of caching as small
   changes to a figure in a subsequent document incur only the penalty
   of downloading the overlays and not the larger base figure, as the
   latter is already in the cache. 

   The figure description text is intended to convey the content of the
   figure for people with non-graphical user agents, while the figure
   caption and credit are rendered on both graphical and non-graphical
   user agents. The FIG element improves on the IMG element by allowing
   authors to use markup for the description text. The content model
   allows authors to include headers, which is appropriate when the
   headers are part of the image data. It also allows graphical
   hypertext links to be specified in the markup and interpreted by the
   user agent rather than the server. 

   The anchor elements in the figure description text play a dual role:
   Non-graphical user agents show conventional hypertext links, while
   for graphical user agents, the same anchor elements specify
   graphical hypertext links, with the SHAPE attribute designating the
   hotzones. This is designed to simplify the task of authors writing
   for both audiences. Hopefully, the FIG element will help to combat
   the tendency for authors to forget about people limited to terminal
   access or the visually impaired relying on text to speech, as the
   new element forces you to write description text to define the
   graphical hypertext links. 

   For some applications the hotzones are dynamically defined by
   programs running on the server. HTML 3.0 allows clicks and drags to
   be passed to the server with the IMAGEMAP attribute. Hotzones may
   also be specified as part of the graphics data format e.g. as in
   VRML. Hotzones in the FIG element take precedence over hotzones in
   the graphics data, which in turn take precedence over passing events
   to a server imagemap program. 

   Hotzones in overlay graphics data take precedence over hotzones in
   figure data. Similarly, the imagemap attribute in overlays takes
   precedence over the imagemap attribute for the figure. For a group
   of overlapping overlays the precedence is determined by the order
   the OVERLAY elements appear within the FIG element. Later overlays
   take precedence over earlier ones. 

Examples

Dave Raggett                                                           Page 69
HTML 3.0                                                       28th March 1995


   Photographic image with caption and credits: 

   <FIG SRC="nicodamus.jpeg">
     <CAPTION>Ground dweller: <I>Nicodamus bicolor</I>
     builds silk snares</CAPTION>
     <P>A small hairy spider light fleshy red in color with a brown abdomen.
     <CREDIT>J. A. L. Cooke/OSF</CREDIT>
   </FIG>

   Company home page: 

   <FIG SRC="mainmenu.gif">
    <H1>Access HP from Hewlett Packard</H1>
    <P>Select between:
    <UL>
     <LI><A HREF="guide.html" SHAPE="rect 30,200,60,16">Access Guide</A>
     <LI><A HREF="about.html" SHAPE="rect 100,200,50,16">About HP</A>
     <LI><A HREF="guide.html" SHAPE="rect 160,200,30,16">News</A>
     <LI><A HREF="guide.html" SHAPE="rect 200,200,50,16">Products</A>
     <LI><A HREF="guide.html" SHAPE="rect 260,200,80,16">Worldwide Contacts</A>
    </UL>
   </FIG>

   Aerial photograph with map overlay: 

   <FIG SRC="newyork.jpeg">
     <OVERLAY SRC="map.gif">
     <P>New York from the air!
   </FIG>

Permitted Attributes

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are

Dave Raggett                                                           Page 70
HTML 3.0                                                       28th March 1995

       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 

   CLEAR 
       When there is already a figure or table in the margin, you
       sometimes want to position another figure below the figure in
       the margin rather than alongside it. The CLEAR attribute allows
       you to move down unconditionally:
       
       

       clear=left
           move down until left margin is clear 

       clear=right
           move down until right margin is clear 

       clear=all
           move down until both margins are clear 

       Alternatively, you can decide to place the figure alongside the
       figure in the margin just so long as there is enough room. The
       minimum width needed is specified as:
       
       

       clear="40 en"
           move down until there is at least 40 en units free 

       clear="100 pixels"
           move down until there is at least 100 pixels free 

       The style sheet (or browser defaults) may provide default
       minimum widths for each class of block-like elements. 

   NOFLOW 
       The presence of this attribute disables text flow around the
       figure. It avoids the need to use the CLEAR or NEEDS attributes
       on the following element. 

   SRC 
       Specifies the figure's graphical content. The image is specified
       as a URI. This attribute may appear together with the MD
       attribute. 

   MD 
       Specifies a message digest or cryptographic checksum for the
       associated graphic specified by the SRC attribute. It is used

Dave Raggett                                                           Page 71
HTML 3.0                                                       28th March 1995

       when you want to be sure that a linked object is indeed the same
       one that the author intended, and hasn't been modified in any
       way. For instance, MD="md5:jV2OfH+nnXHU8bnkPAad/mSQlTDZ", which
       specifies an MD5 checksum encoded as a base64 character string.
       The MD attribute is generally allowed for all elements which
       support URI based links. 

   ALIGN 
       Specifies horizontal alignment of the figure:
       
       

       BLEEDLEFT 
           Flush left with the left (window) border. 

       LEFT 
           Flush left with the left text margin. 

       CENTER 
           The figure is centered between the text margins and text
           flow around the figure is disabled. This is the default
           setting for ALIGN. 

       RIGHT 
           Flush right with the right text margin. 

       BLEEDRIGHT 
           Flush right with the right (window) border 

       JUSTIFY 
           When applicable the figure should be magnified or reduced to
           fill the space between the left and right text margins. Text
           flow around the figure is disabled for align=justify. 

   WIDTH 
       Specifies the desired width in pixels or en units (according to
       the value of the UNITS attribute). User agents may scale the
       figure image to match this width. 

   HEIGHT 
       Specifies the desired height in pixels or en units (according to
       the value of the UNITS attribute). User agents may scale the
       figure image to match this height. 

   UNITS 
       Specifies the choice of units for width and height. units=pixels
       (the default) specifies pixels, while units=en specifies en
       units. The en unit is a typographical unit equal to half the
       point size. 

   IMAGEMAP 
       Specifies a URI for processing image clicks and drags. 


Dave Raggett                                                           Page 72
HTML 3.0                                                       28th March 1995

Figure Overlays

   Permitted Context: start of FIG element
   Content Model: Empty! 

   The OVERLAY element is used to overlay images on top of a base
   figure. Figure overlays provide for more effective use of caching as
   small changes to a figure in a subsequent document incur only the
   penalty of downloading the overlays and not the larger base figure,
   as the latter is already in the cache. The overlay can be offset
   from the top left corner of the base image. 

Permitted Attributes

   SRC 
       Specifies the overlay image as a URI. This attribute may appear
       together with the MD attribute. 

   MD 
       Specifies a message digest or cryptographic checksum for the
       associated graphic specified by the SRC attribute. It is used
       when you want to be sure that a linked object is indeed the same
       one that the author intended, and hasn't been modified in any
       way. For instance, MD="md5:jV2OfH+nnXHU8bnkPAad/mSQlTDZ", which
       specifies an MD5 checksum encoded as a base64 character string.
       The MD attribute is generally allowed for all elements which
       support URI based links. 

   UNITS 
       Specifies the choice of units for width and height: units=pixels
       (the default) specifies pixels, while units=en specifies en
       units (a typographical unit equal to half the point size). 

   X 
       The X offset from the top left corner of the base image. X
       increases to the right, and is given in pixels or en units
       (according to the value of the UNITS attribute). 

   Y 
       The Y offset from the top left corner of the base image. Y
       increases downwards, and is given in pixels or en units
       (according to the value of the UNITS attribute). 

   WIDTH 
       Specifies the desired width in pixels or en units (according to
       the value of the UNITS attribute). User agents may scale the
       figure image to match this width. 

   HEIGHT 
       Specifies the desired height in pixels or en units (according to
       the value of the UNITS attribute). User agents may scale the
       figure image to match this height. 


Dave Raggett                                                           Page 73
HTML 3.0                                                       28th March 1995

   IMAGEMAP 
       Specifies a URI for processing image clicks and drags. 




















































Dave Raggett                                                           Page 74
HTML 3.0                                                       28th March 1995

Captions

   Permitted Context: TABLE or FIG
   Content Model: %text 

   The CAPTION element is used to label a table or figure. Use the
   align attribute to specify the position of the caption relative to
   the table/figure. For example: 

       <CAPTION ALIGN=LEFT>The Niagara Falls</CAPTION>

   --Should we provide separate align and valign attributes for
   controlling the horizontal and vertical positioning respectively?-- 

Permitted Attributes

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 

   ALIGN 
       Positioning of the caption relative to the table or figure it
       labels. The permitted values are: TOP, BOTTOM, LEFT or RIGHT. 







Dave Raggett                                                           Page 75
HTML 3.0                                                       28th March 1995

Credits

   Permitted Context: BQ or FIG
   Content Model: %text 

   The CREDIT element is used to name the source of a block quotation
   or figure. For example: 

       <CREDIT>The Writer by Richard Wilbur</CREDIT>

Permitted Attributes for the CREDIT Element

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 















Dave Raggett                                                           Page 76
HTML 3.0                                                       28th March 1995

Tables

   Permitted Context: %body.content, %flow, %block
   Content Model: Optional CAPTION, then one or more table rows (TR) 

   The HTML table model has been chosen for its simplicity and
   flexibility. By default the table is automatically sized according
   to the cell contents and the current window size. The COLSPEC
   attribute can be used when needed to exert control over column
   widths, either by setting explicit widths or by specifying relative
   widths. You can also specify the table width explicitly or as a
   fraction of the current margins (see WIDTH attribute). 

   Table start with an optional caption followed one or more rows. Each
   row is formed by one or more cells, which are differentiated into
   header and data cells. Cells can be merged across rows and columns,
   and include attributes assisting rendering to speech and braille, or
   for exporting table data into databases. The model provides little
   direct support for control over appearence, for example border
   styles and margins, as these can be handled via subclassing and
   associated style sheets. 

   Tables can contain a wide range of content, such as headers, lists,
   paragraphs, forms, figures, preformatted text and even nested
   tables. When the table is flush left or right, subsequent elements
   will be flowed around the table if there is sufficient room. This
   behaviour is disabled when the --noflow-- attribute is given or the
   table align attribute is --center-- (the default), or --justify--. 

Example

   <TABLE BORDER>
     <CAPTION>A test table with merged cells</CAPTION>
     <TR><TH ROWSPAN=2><TH COLSPAN=2>Average
         <TH ROWSPAN=2>other<BR>category<TH>Misc
     <TR><TH>height<TH>weight
     <TR><TH ALIGN=LEFT>males<TD>1.9<TD>0.003
     <TR><TH ALIGN=LEFT ROWSPAN=2>females<TD>1.7<TD>0.002
   </TABLE>

   This would be rendered something like: 

                 A test table with merged cells
       /--------------------------------------------------\
       |          |      Average      |  other   |  Misc  |
       |          |-------------------| category |--------|
       |          |  height |  weight |          |        |
       |-----------------------------------------|--------|
       | males    |   1.9   |  0.003  |          |        |
       |-----------------------------------------|--------|
       | females  |   1.7   |  0.002  |          |        |
       \--------------------------------------------------/
   

Dave Raggett                                                           Page 77
HTML 3.0                                                       28th March 1995


   There are several points to note: 

   *   By default, header cells are centered while data cells are flush
       left. This can be overriden by the ALIGN attribute for the cell;
       the COLSPEC attribute for the TABLE element; or the ALIGN
       attribute on the enclosing row's TR element (from the most
       specific to the least). 

   *   Cells may be empty. 

   *   Cells spanning rows contribute to the column count on each of
       the spanned rows, but only appear in the markup once (in the
       first row spanned). 

   *   If the column count for the table is greater than the number of
       cells for a given row (after including cells for spanned rows),
       the missing cells are treated as occurring on the right handside
       of the table, and rendered as empty cells. 

   *   The row count is determined by the TR elements - any rows
       implied by cells spanning rows beyond this should be ignored. 

   *   The user agent should be able to recover from a missing <TR> tag
       prior to the first row as the TH and TC elements can only occur
       within the TR element. 

   *   It is invalid to have cells overlap, see below for an example.
       In such cases, the rendering is implementation dependent. 

   An example of an invalid table: 

   <table border>
   <tr><tdrowspan=2>1<td>2<td>3<td>4<td>5
   <tr><td rowspan=2>6
   <tr><td colspan=2>7<td>8
   </table>

   which looks something like: 

       /-------------------\
       | 1 | 2 | 3 | 4 | 5 |
       |   |---------------|
       |   | 6 |   |   |   |    The cells labelled 6 and 7 overlap!
       |---|...|-----------|
       | 7 :   | 8 |   |   |
       \-------------------/

   Borderless tables are useful for layout purposes as well as their
   traditional role for tabular data, for instance with fill-out forms: 

   		       name: [John Smith        ]
   		card number: [4619 693523 20851 ]

Dave Raggett                                                           Page 78
HTML 3.0                                                       28th March 1995

   		    expires: [03] / [97]
   		  telephone: [212 873 2739      ]

   This can be represented as a table with one row and two columns. The
   first column is right aligned, while the second is left aligned.
   This example could be marked up as: 

   <table&gt
     <tr valign=baseline>
     <td align=right>
       name:<br>
       card number:<br>
       expires:<br>
       telephone:
     <td align=left>
       <input name="name" size=18><br>
       <input name="cardnum" size=18><br>
       <input name="expires-month" size=2> /
       <input name="expires-year" size=2><br>
       <input name="phone" size=18><br>
   </table>
   

   The use of such techniques is one of the motivations for using
   nested tables, where borderless tables are used to layout cell
   contents for an enclosing table 

   Hint: You can achieve a similar effect to the above by using decimal
   alignment and using the DP attribute to set the alignment character
   to a convenient character, for example: 

   <table>
     <tr align=decimal dp=":">
     <td>
       name: <input name="name" size=18><br>
       card number: <input name="cardnum" size=18><br>
       expires: <input name="expires-month" size=2> /
       <input name="expires-year" size=2><br>
       telephone:<input name="phone" size=18><br>
   </table>
   

   Each line in the table is then indented so that all the colons are
   positioned under one another. 

Table Sizing Algorithm

   The default sizing algorithm requires two passes through the table
   data. In the first pass, word wrapping is disabled, and the user
   agent keeps track of the minimum and maximum width of each cell. The
   maximum width is given by the widest line. As word wrap has been
   disabled, paragraphs are treated as long lines unless broken by <BR>
   elements. The minimum width is given by the widest word or image

Dave Raggett                                                           Page 79
HTML 3.0                                                       28th March 1995

   etc. taking into account leading indents and list bullets etc. In
   other words, if you were to format the cell's content in a window of
   its own, determine the minimum width you could make the window
   before things begin to be clipped. 

   The minimum and maximum cell widths are then used to determine the
   corresponding minimum and maximum widths for the columns. These in
   turn, are used to find the minimum and maximum width for the table.
   Note that cells can contain nested tables, but this doesn't
   complicate the code significantly. The next step is to assign column
   widths according to the current window size (more accurately - the
   width between the left and right margins). 

   The table borders and intercell margins need to be included in the
   assignment step. There are three cases: 

   1.  The minimum table width is equal to or wider than the available
       space. In this case, assign the minimum widths and allow the
       user to scroll horizontally. For conversion to braille, it will
       be necessary to replace the cells by references to notes
       containing their full content. By convention these appear before
       the table. 

   2.  The maximum table width fits within the available space. In this
       case, set the columns to their maximum widths. 

   3.  The maximum width of the table is greater than the available
       space, but the minimum table width is smaller. In this case,
       find the difference between the available space and the minimum
       table width, lets call it --W--. Lets also call --D-- the
       difference between maximum and minimum width of the table. 

       For each column, let --d-- be the the difference between maximum
       and minimum width of that column. Now set the column's width to
       the minimum width plus --d-- times --W-- over --D--. This makes
       columns with lots of text wider than columns with smaller
       amounts. 

   This assignment step is then repeated for nested tables. In this
   case, the width of the enclosing table's cell plays the role of the
   current window size in the above description. This process is
   repeated recursively for all nested tables. 

   If the COLSPEC attribute specifies the column widths explicitly, the
   user agent can attempt to use these values. If subsequently, one of
   the cells overflows its column width, the two pass mechanism may be
   invoked to redraw the table with more appropriate widths. If the
   attribute specifies relative widths, then the two pass model is
   always needed. 

   The column width assignment algorithm is then modified: 

   *   Explicit widths from the COLSPEC attribute should be used when

Dave Raggett                                                           Page 80
HTML 3.0                                                       28th March 1995

       given, provided they are greater than the minimum column width,
       otherwise the latter should be used. 

   *   For relative widths, the surplus space --W--, as defined above,
       is divided up between the columns appropriately, ensuring that
       each column is given at least its minimum width. If --W-- is
       zero or negative, column widths should be increased over the
       minimum width to meet the relative width requirements. 

   If the table width is specified with the WIDTH attribute, the user
   agent attempts to set column widths to match. The WIDTH attribute
   should be disregarded if this results in columns having less than
   their minimum widths. 

Permitted Attributes

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 

   CLEAR 
       When there is a figure or another table in the margin, you
       sometimes want to start another table below the figure rather
       than alongside it. The CLEAR attribute allows you to move down unconditionally:
       
       

       clear=left
           move down until left margin is clear 

Dave Raggett                                                           Page 81
HTML 3.0                                                       28th March 1995


       clear=right
           move down until right margin is clear 

       clear=all
           move down until both margins are clear 

       Alternatively, you can decide to place the table alongside the
       figure just so long as there is enough room. The minimum width
       needed is specified as:
       
       

       clear="40 en"
           move down until there is at least 40 en units free 

       clear="100 pixels"
           move down until there is at least 100 pixels free 

       The style sheet (or browser defaults) may provide default
       minimum widths for each class of block-like elements. 

   NOFLOW 
       The presence of this attribute disables text flow around the
       table. It avoids the need to use the CLEAR or NEEDS attributes
       on the following element. 

   ALIGN 
       Specifies horizontal alignment of the table (--not-- its contents):
       
       

       BLEEDLEFT 
           Flush left with the left (window) border. 

       LEFT 
           Flush left with the left text margin. 

       CENTER 
           The table is centered between the text margins and text flow
           around the table is disabled. This is the default setting
           for ALIGN. 

       RIGHT 
           Flush right with the right text margin. 

       BLEEDRIGHT 
           Flush right with the right (window) border 

       JUSTIFY 
           When applicable the table should be sized to fill the space
           between the left and right text margins. Text flow around
           the table is disabled for align=justify. 

Dave Raggett                                                           Page 82
HTML 3.0                                                       28th March 1995


   UNITS 
       Specifies the choice of units for the COLSPEC attribute:
       
       

       units=en 
           Specifies en units (a typographical unit equalt to half the
           point size). This is the default setting and allows user
           agents to render the table a row at a time without waiting
           until all of the table's data has been received. 

       units=relative 
           Used to set the relative width of columns. The user agent
           sums the values to determine the proportional width of each
           column. 

       units=pixels 
           The least useful! 

       A design issue for user agents is how to handle cases where cell
       contents won't fit into the specified column widths. One
       approach is to clip the contents to the given column width,
       another is to resize the columns to fit the contents regardless
       of the COLSPEC attribute (its best to wait until all of the
       table's data has been processed before resizing). 

   COLSPEC 
       The colspec attribute is a list of column widths and alignment
       specifications. The columns are listed from left to right with a
       capital letter followed by a number, e.g. COLSPEC="L20 C8 L40".
       The letter is L for left, C for center, R for right alignment of
       cell contents. J is for justification, when feasible, otherwise
       this is treated in the same way as L for left alignment. D is
       for decimal alignment, see DP attribute. 

       Capital letters are required to avoid a particularly common
       error when a lower case L is confused with a one. Column entries
       are delimited by one or more space characters. 

       The number specifies the width in en's, pixels or as a
       fractional value of the table width, as according to the
       associated units attribute. This approach is more compact than
       used with most SGML table models and chosen to simplify hand
       entry. The width attribute allows you to specify the width of
       the table in pixels, em units or as a percentage of the space
       between the current left and right margins. 

   DP 
       This specifies the character to be used for the decimal point
       with the COLSPEC attribute, e.g. dp="." (the default) or dp=",".
       The default may be altered by the language context, as set by
       the LANG attribute on enclosing elements. 

Dave Raggett                                                           Page 83
HTML 3.0                                                       28th March 1995


   WIDTH 
       This specifies the width of the table according to the UNITS
       attribute. If units=relative, the width is taken as a percentage
       of the width between the current left and right margins. The
       user agent should disregard this attribute if it would result in
       columns having less than their minimum widths. 

   BORDER 
       This presence of this attribute instructs the user agent to
       render borders around tables. For instance: <TABLE BORDER>. The
       precise appearence, along with the size of margins around cells,
       can be controlled by associated style sheets, or via information
       in the STYLE element in the document head. Subclassing tables,
       rows and cells is particularly useful in this regard. 

   NOWRAP 
       The NOWRAP attribute is used when you don't want the browser to
       automatically wrap lines. You can then explicitly specify line
       breaks in paragrphs using the BR element. 


































Dave Raggett                                                           Page 84
HTML 3.0                                                       28th March 1995

Table Rows

   Permitted Context: TABLE
   Content Model: Table Cells (TH or TD) 

   The TR element acts as a container for a row of table cells defined
   with the TH or TD elements. You can set default horizontal and
   vertical alignment of cell contents for the row. You also have the
   ability to disable word wrap for the row, and thereafter use the
   <BR> element to determine line breaks and hence cell widths. 

   To assist with formatting tables to paged media, authors can
   differentiate leading and trailing rows that are to be duplicated
   when splitting tables across page boundaries. The recommended
   approach is to subclass rows using the CLASS attribute For example: 

       <TABLE BORDER COLSPEC= --...-->
         <TR CLASS=Header> --header cells ...--
         <TR CLASS=Body>   --body cells ...--
         <TR CLASS=Footer> --footer cells ...--
       </TABLE>
   

   Paged browsers when splitting a table across a page boundary, can
   then insert footer rows at the bottom of the current page and header
   rows at the top of the next page, followed by the remaining body
   rows, and the footer rows. This is repeated as necessary until all
   of the body rows have been rendered. Refinements of this scheme can
   be devised by further subclassing the rows together with an
   appropriate style sheet. 

Permitted Attributes for the TR Element

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are

Dave Raggett                                                           Page 85
HTML 3.0                                                       28th March 1995

       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 

   ALIGN 
       The ALIGN attribute can be used to explicitly specify the
       horizontal alignment of paragraphs within a table row:
       
       

       align=left 
           Paragraphs are rendered flush left. 

       align=center 
           Paragraphs are centered. 

       align=right 
           Paragraphs are rendered flush right. 

       align=justify 
           Text lines are justified where practical, otherwise this
           gives the same effect as the align=left setting. 

       align=decimal 
           Text lines are indented such that the first occurrence of a
           decimal point on each line are aligned vertically. If a line
           doesn't contain a decimal point, the line is rendered flush
           left for data cells and centered for header cells. 

       Note: By default, header cells are centered while data cells are
       flush left. This attribute can be used to alter these defaults
       on a row by row basis. If you are specifying column alignments
       with the TABLE's COLSPEC attribute, there is no point in also
       including an ALIGN attribute with the TR element, as the latter
       will be ignored. 

   DP 
       This specifies the character to be used for the decimal point
       with the ALIGN attribute, e.g. dp="." (the default) or dp=",".
       The default may be altered by the language context, as set by
       the LANG attribute on enclosing elements. 

   VALIGN 
       The VALIGN attribute can be used to explicitly specify the
       vertical alignment of material within a table row. It is
       overridden by the VALIGN attribute on individual cells:
       
       


Dave Raggett                                                           Page 86
HTML 3.0                                                       28th March 1995

       valign=top 
           The cell contents appear at the top of each cell (the
           default). 

       valign=middle 
           Cell contents are centered vertically in each cell. 

       valign=bottom 
           The cell contents appear at the bottom of each cell. 

       valign=baseline 
           This is used when you want to ensure that all cells in the
           row share the same baseline. This constraint only applies to
           the first text line for each cell. 

   NOWRAP 
       The NOWRAP attribute is used when you don't want the browser to
       automatically wrap lines. You can then explicitly specify line
       breaks in paragrphs using the BR element. 



































Dave Raggett                                                           Page 87
HTML 3.0                                                       28th March 1995

Table Cells (TH and TD)

   Permitted Context: TR
   Content Model: %body.content 

   The TH and TD elements are used for table cells. TH is used for
   table header cells while TD is used for table data cells. This
   distinction gives user agents a means to render such cells
   distinctly, for instance by using a larger or heavier font for
   header cells. It is also needed when rendering to speech. The CLASS
   attribute can be used to further differentiate cells, for instance
   into heads and subheads. This can be used together with style sheets
   to control the cell border style, and fill color etc. 

   The horizontal and vertical alignment of cell contents are
   determined by the ALIGN and VALIGN attributes respectively. In their
   absence, the alignment will be inherited from the TR element for the
   row. The COLSPEC attribute of the enclosing TABLE element provides a
   convenient way of specifying the default horizontal alignment for
   columns. 

   The AXIS and AXES attributes can be used when rendering to speech to
   provide abbreviated names for each cell's headers. Another
   application is when you want to be able to later process table
   contents to enter them into a database. Theses attributes are then
   used to give database field names. The table's class attribute
   should be used to let the software recognise which tables can be
   treated in this way. 

   Note: Disabling word wrap and using the <BR> element in order to
   control cell widths is discouraged in favor of using the table
   COLSPEC and WIDTH attributes. 

Permitted Attributes for the TH/TD Element

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are

Dave Raggett                                                           Page 88
HTML 3.0                                                       28th March 1995

       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 

   COLSPAN 
       The number of columns spanned by this cell. This allows you to
       merge cells across columns. It defaults to 1 (one). 

   ROWSPAN 
       The number of rows spanned by this cell. This allows you to
       merge cells across rows. It defaults to 1 (one). 

   ALIGN 
       The ALIGN attribute can be used to explicitly specify the
       horizontal alignment of paragraphs within a table row:
       
       

       align=left 
           Paragraphs are rendered flush left. This is the default for
           data cells (TD). 

       align=center 
           Paragraphs are centered. This is the default for header
           cells (TH). 

       align=right 
           Paragraphs are rendered flush right. 

       align=justify 
           Text lines are justified where practical, otherwise this
           gives the same effect as the align=left setting. 

       align=decimal 
           Text lines are indented such that the first occurrence of a
           decimal point on each line are aligned vertically. If a line
           doesn't contain a decimal point, the line is rendered flush
           left for data cells and centered for header cells. 

       Note: In the absence of the ALIGN attribute, the default is
       overridden by the presence of an ALIGN attribute on the parent
       TR element, or by the COLSPEC attribute on the TABLE element.
       The COLSPEC attribute takes precedence over the TR element
       though! 

   DP 
       This specifies the character to be used for the decimal point

Dave Raggett                                                           Page 89
HTML 3.0                                                       28th March 1995

       with the ALIGN attribute, e.g. dp="." (the default) or dp=",".
       The default may be altered by the language context, as set by
       the LANG attribute on enclosing elements. 

   VALIGN 
       The VALIGN attribute can be used to explicitly specify the
       vertical alignment of material within a table cell:
       
       

       valign=top 
           The cell contents appear at the top of each cell (the
           default). 

       valign=middle 
           Cell contents are centered vertically in each cell. 

       valign=bottom 
           The cell contents appear at the bottom of each cell. 

       valign=baseline 
           This is used when you want to ensure that all cells in the
           row with valign=baseline share the same baseline. This
           constraint only applies to the first text line for each
           cell. 

       Note: In the absence of the VALIGN attribute, the default can be
       overridden by the presence of a VALIGN attribute on the parent
       TR element. 

   NOWRAP 
       The NOWRAP attribute is used when you don't want the browser to
       automatically wrap lines. You can then explicitly specify line
       breaks in paragraphs using the BR element. 

   AXIS 
       This defines an abbreviated name for a header cell, which can be
       used when rendering to speech. It defaults to the cell's
       content. 

   AXES 
       This is a comma separated list of axis names which together
       identify the row and column headers that pertain to this cell.
       It is used when rendering to speech to identify the cell's
       position in the table. If missing the user agent can try to
       follow up columns and left along rows (right for some languages)
       to find the corresponding header cells. 

       Note: a subheader cell may include both attributes - using AXIS
       to name itself and AXES to name the parent header cell. When
       data cells refer to header cells with both attributes, the
       parent header cells are found by following back the head-subhead
       relationships. 

Dave Raggett                                                           Page 90
HTML 3.0                                                       28th March 1995























































Dave Raggett                                                           Page 91
HTML 3.0                                                       28th March 1995

HTML Math

   Permitted Context: %text
   Content Model: %math 

   The <MATH> element is used to include math expressions in the
   current line. HTML math is powerful enough to describe the range of
   math expressions you can create in common word processing packages,
   as well as being suitable for rendering to speech. When rendering to
   fixed pitch text-only media, simple text graphics can be used for
   math symbols such as the integration sign, while other symbols can
   be rendered using their entity names. The SGML SHORTREF capability
   is used to provide abbreviations for hidden brackets, subscripts and
   superscripts. 

   The design of HTML math owes a lot to LaTeX's math mode, which has
   been found to be effective for a wide variety of mathematical
   typesetting. Where practical, HTML math uses tag names matching
   LaTeX commands, e.g. ATOP, CHOOSE and SQRT act in the same way as
   their LaTeX namesakes. Of course, SGML and LaTeX have quite
   different syntactical conventions. As a result, HTML math uses the
   ISO entity names for symbols rather than the TeX names. In LaTeX,
   the character command ^ sets the next character as an exponent,
   while the character command _ sets it as an index. If the exponent
   or index contains more than one character then the group of
   characters must be enclosed in curly brackets { }. This syntax is
   inappropriate for SGML, so HTML math instead treats _ and ^ as
   shortref characters for the SUB and SUP elements which are used for
   indices and exponents, respectively. 

   --I can't find the ISO entity names for the _ and ^ chararacters!-- 

   HTML math has been designed to be both concise and comparatively
   easy to read. In practice, formulae will be a little longer than in
   LaTeX, but much shorter than with other math proposals for SGML, for
   instance EuroMath or ISO 12083. This simplification has been
   achieved through the power of the BOX element, which replaces many
   elements in other proposals, as well as the simple conventions for
   binding the SUB and SUP elements and their use as generic raising
   and lowering operators. HTML math differentiates terms e.g. binary
   operators, variables, constants, integral signs, delimiters and so
   on. This simplifies rendering and reflects the assumptions adopted
   by LaTeX. It further allows the same raising and lowering operators
   to be used for many different roles according to the term they apply
   to. HTML math doesn't provide direct support for multi-line
   equations, as this can be effectively handled by combining math with
   the TABLE element. 

   Example - the integral from a to b of f(x) over 1+x 

       <MATH>&int;_a_^b^{f(x)<over>1+x} dx</MATH>

   which can be rendered on a fixed pitch text-only medium as: 

Dave Raggett                                                           Page 92
HTML 3.0                                                       28th March 1995


            b
            /   f(x)
            | ------- dx
            /  1 + x
            a

   The example uses { and } as shortrefs for <BOX> and </BOX>
   respectively. This is used for invisible brackets, stretchy
   delimiters and integral signs, and placing one thing over another.
   The shortref characters "_" and "^" are used for subscripts and
   superscripts respectively. 

   HTML math follows general practice in mathematical typesetting by
   rendering functions, numbers and other constants in an upright font,
   while variables are rendered in an italic font. You can set
   particular terms in a bold face, and for chemical formulae, you can
   force the use of an upright font. Limits for symbols like the
   integral and summation signs are placed directly above (below) the
   symbol or to the immediate right depending on the symbol. 

   Spacing between constants, variables and operators is determined
   automatically. Additional spacing can be inserted with entities such
   as &thinsp; &sp; and &quadsp;. White space in the markup is used
   only to delimit adjacent variables or constants. You don't need
   spaces before or after binary operators or other special symbols, as
   these are recognised by the HTML math tokeniser. White space can be
   useful, though, for increased legibility while authoring.
   --I need to check on the ISO entity names for spacing!-- 

Math Markup

   The following elements are permitted within MATH elements: 

   BOX 
       Used for hidden brackets, stretchy delimiters, and placing one
       expression over another (e.g. numerators and denominators). 

   SUB, SUP 
       Subscripts and superscripts. Also used for limits. 

   ABOVE 
       Used to draw an arrow, line or symbol above an expression. 

   BELOW 
       Used to draw an arrow, line or symbol below an expression. 

   VEC, BAR, DOT, DDOT, HAT, TILDE 
       These are convenience tags for common accents as an alternative
       to using ABOVE. 

   SQRT, ROOT 
       For square roots and other roots of an expression. 

Dave Raggett                                                           Page 93
HTML 3.0                                                       28th March 1995


   ARRAY 
       For matrices and other kinds of arrays. 

   TEXT 
       Used to include a short piece of text within a math element, and
       often combined with SUB or SUP elements. 

   B, T, BT 
       These elements are used override the default rendering. B
       renders the enclosed expression in an bold face. T designates a
       term to be rendered in an upright font, while BT designates a
       term to be rendered in a bold upright font. The class attribute
       can be used to describe the kind of term, e.g. vector, tensor,
       or matrix. 

HTML Math Entities

   *   Functions 

   *   Operators 

   *   Continuation dots 

   *   Greek letters 

   *   Relations 

   *   Accents, arrows and pointers 

   *   Delimiters 

   *   Other symbols. 

   *   Spacing entities. 

Rendering HTML Math

   The expression is rendered in three steps: 

   1.  The first step recursively parses expressions building up a
       matching hierarchy of data structures (with bounding boxes)
       corresponding to sequences of nested expressions. The math
       tokeniser needs to be able to distinguish constants, variables,
       functions, operators, delimiters, and special symbols such as
       integrals, which can take limits and may be stretchy. 

   2.  The next step sets the size of the innermost expressions based
       on the size of available fonts. If possible subscript and
       superscript expressions should be set in a smaller font. The
       size and relative positioning of neighboring and enclosing
       expressions is then propagated up the hierarchy from the
       innermost outwards, as the procedure stack formed in step (1)

Dave Raggett                                                           Page 94
HTML 3.0                                                       28th March 1995

       unwinds. 

   3.  The final step is to render the hierarchy of expressions to the
       output medium. This is now straight forward as all the
       positioning and sizes of special symbols and text strings are
       now fixed. 

   Note: In practice, only a limited range of font sizes are suitable,
   as a result, deeply nested expressions like continued fractions
   can't use ever smaller fonts. This is simply handled by a parameter
   to the --ParseExpression-- routine that sets the font size to be
   used for that expression. ParseExpression is called recursively for
   nested expressions and uses the next smaller font until it bottoms
   out with the smallest font available. The size parameter corresponds
   to an enumeration of the available font sizes. 

Permitted Attributes

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. 

       For the MATH element, CLASS can be used to describe the kind of
       math expression involved. This can be used to alter the way
       formulae are rendered, and to support exporting the expression
       to symbolic math software. The class "chem" is useful for
       chemical formulae which use an upright font for variables rather
       than the default italic font. For example: 

           <math class=chem> Fe_2_^2+^Cr_2_O_4_</math>

                               2+
       which is rendered as  Fe  Cr  O
                               2   2  4

       Otherwise, the conventions for choosing class names are outside
       the scope of this specification. 

   BOX 
       The presence of this attribute causes the user agent to draw a
       rectangular box around the formulae. 




Dave Raggett                                                           Page 95
HTML 3.0                                                       28th March 1995

The BOX element

   Permitted Context: %math
   Content Model: %math?, LEFT?, expression, RIGHT?, %math?
   where expression is %math or %math --tag-- %math, see below. 

   The BOX element is used for a variety of purposes: 

   *   As invisible brackets for disambiguating expressions. 

   *   For placing numerators over denominators, with or without
       dividing lines, corresponding to LaTeX's --frac, atop-- and
       --choose-- commands. 

   *   For placing delimiters before, and/or after an expression, which
       grow to match the height of the expression. This corresponds to
       LaTeX's --left-- and --right-- commands. 

   *   For stretchy integral and related signs that grow to match the
       height of the integrand. This goes beyond LaTeX and avoids the
       need for different symbols for different sizes of integral signs
       etc. 

   The SHORTREF characters { and } are used as abbreviations for the
   start and end tags for BOX elements. Use the SGML entities &lcub;
   and &rcub; respectively when you need to use these characters
   literally. 

   Short fractions, are best represented using the slash character / as
   in <math>(n + m)/2</math> for (n + m)/2. For more complicated
   fractions you can use the BOX element with the OVER tag, as in: 

            1
          -----          {1<over>x + y}
          x + y
   
          x - y
        ---------        {x - y<over>1 + {a - b<over>a + b}}
            a - b
        1 + -----
            a + b
   

   Use the ATOP tag when you want to place one thing above another, but
   without the dividing line. With the CHOOSE tag, the expressions are
   also enclosed within round brackets, for instance: 

          a - b
                                     {a - b<atop>a + b}
          a + b
          
   
     (n + 1)   ( n )   (  n  )       {n+1<choose>k}

Dave Raggett                                                           Page 96
HTML 3.0                                                       28th March 1995

     (     ) = (   ) + (     )          = {n<choose>k}
     (  k  )   ( k )   (k - 1)             + {n<choose>k-1}
   

   The BOX element can be used with the LEFT and RIGHT tags for
   delimiters that stretch to match the size of the enclosed
   expression. You are free to give only one or both of the delimiters,
   and you can use different symbols for the left and right. Left
   delimiters should be given before the LEFT tag, while right
   delimiters should be given following the RIGHT tag, for instance: 

                 ( 1 + x )       f(x) = {(<left>
          f(x) = ( ----- )                 1+x<over> sin x
                 ( sin x )                  <right>)}

   For curly brackets you will need to use the &lcub; and &rcub;
   entities for { and } respectively. The SIZE attribute can be used to
   get oversized delimiters, for instance: 

            2 |          |
       omega  |          |        {&omega;^2^<over>c^2^}
       -----  |<j| mu |i>|         <box size=huge> | <left>
          2   |      z   |              &lt;j | &mu;_z_ | i&gt;
         c    |          |           <right> | </box>

   The full tag name for the BOX element is needed above in order to
   specify a value for the SIZE attribute. The BOX element is also
   useful for stretching integral signs to match the height of the
   integrand. The integral and its limits appear in the position of the
   left delimiter for the BOX element. You can also include multiple
   integrals, for instance: 

      inf inf
       /   /  f(x, y)           {&int;_0_^&inf;^ &int;_0_^&inf;^<left>
       |   | --------- dx dy        f(x,y)<over>x^2^ + y^2^} dx dy
       |   |   2     2
       /   /  x  +  y
       0   0

Permitted Attributes for the BOX element

   SIZE 
       This used to obtain oversized delimiters. The permitted values
       are --normal-- (the default), --medium--, --large-- and
       --huge--. 

   Note: there are no attributes for the LEFT, RIGHT, OVER, ATOP and
   CHOOSE tags.  






Dave Raggett                                                           Page 97
HTML 3.0                                                       28th March 1995

SUB and SUP

   Permitted Context: %math
   Content Model: %math 

   The SUB and SUP elements are used for subscripts and superscripts
   respectively, and are preferably rendered in reduced font. For
   integral and related signs the SUB and SUP elements are used for the
   lower and upper limits, for instance: 

      &sum;<sub>n = 0</sub><sup>&inf;</sup>

   which renders to (within limits of ascii art): 

     infinity
       ---
       \
       /
       ---
      n = 0

   The SGML SHORTREF characters "_" and "^" can be used as
   abbreviations. The above example is abbreviated to: 

       &sum;_n = 0_^&inf;^

   --Need to give entity names for when you need the _ and ^
   characters!-- 

   You have to revert to the full form of the tags when superscripting
   a superscript or subscripting a subscript, as in: 

       X<sub>a<sub>i</sub></sub>  which is  X    
                                             a   
                                              i                     
   

   You can also use superscripts to place expressions or words over
   binary operators, for instance in the following chemical reaction: 

       4LiH + AlCl_3_ &rarr;^ether^ LiAlH_4_ + 3LiCl

   which renders as: 

                      ether
        4LiH + AlCl  ------>  LiAlH  +  3LiCl
            3                      4

   The superscript is centered over the operator, and when feasible the
   operator stretched to match the width of the superscript. 

   Note: Dont' use the shortrefs for SUB and SUP in normal text - they
   only work within MATH elements! 

Dave Raggett                                                           Page 98
HTML 3.0                                                       28th March 1995


Placement of subscripts and superscripts

   Some times you will want to place superscripts to the left of a
   term. The simplest way to do this is with shortrefs, e.g. 

       _4_^9^Be + _2^4^He &rarr; _6_^12^C + _0_^1^n

   which renders to (within limits of ascii art): 

        9      4        12    1
         Be +   He  -->   C +  n
        4      2         6    0

   Subscripts and superscripts immediately before a term are rendered
   to the left of the term, where as subscripts and superscripts
   immediately after a term are rendered on its right. Opportunities
   for confusion arise when scripts for a preceding term are followed
   by scripts for another term. The simplest solution is to use
   whitespace to disambiguate the situation. For instance: 

                         b                           b
       X_a_ ^b^Y  is  X   Y   while  X_a_^b^Y   is  X   Y
                       a                             a
                                              a  b
       but both X^a^ ^b^Y and X^a^^b^Y  are  X    Y   
   

   The last case is disambiguated because the two superscript elements
   can't both apply to the preceding term, as they can't both be drawn
   in the same position. The same would apply to two subscript
   elements. If in any doubt, its wise to insert a space to make your
   meaning clear! If you prefer, you can use curly brackets, as in:
   {X_a_}{^b^Y}. These brackets are shortrefs for the BOX element and
   don't appear when the expression is finally rendered. 

   The same rules apply when you use the full form of the SUB and SUP
   elements. The ALIGN attribute can be used to override the default
   position to render the script, which is normally taken from whether
   the script element precedes or follows the term to which it applies.
   For instance: 

       X<sub align=right>a</sub> <sup align=left>b</sup>Y
       X<sub align=right>a</sub>Y<sup align=left>b</sup>
       
                             b
       both render to    X    Y
                          a
   
       while  X<sub align=right>a</sub><sup align=left>b</sup>Y
   
                       b
       renders to       X   Y

Dave Raggett                                                           Page 99
HTML 3.0                                                       28th March 1995

                         a
   

   In the last case, the SUP element act as a prefix superscript to X
   as there isn't a delimiter between it and the preceding SUB element.
   If in doubt, you should use brackets or whitespace to disambiguate
   the binding. 

Permitted Attributes

   The ID, LANG and CLASS attributes for SUB and SUP are not used
   within MATH elements. 

   ALIGN 
       Subscripts and superscripts are normally placed to the right of
       the term to which they apply, while limits are normally placed
       above (or below) the symbol they apply to. The ALIGN attribute
       can be used to override the default positioning. 
       
       

       align=left 
           The script (or limit) is placed to the left of the term. 

       align=center 
           The script is centered on the term and placed below it for
           subscripts, and above it (for superscipts). 

       align=right 
           The scripts are placed to the right of the term. 

       For example, you can force limits on integral signs to appear on
       the right rather than centered on the integral sign: 

       &int;<sub align=right>0</sub><sup align=right>&inf;</sup>

       Note: The ALIGN attribute should be ignored by user agents for
       the SUB and SUP elements except within MATH elements. 
















Dave Raggett                                                          Page 100
HTML 3.0                                                       28th March 1995

The ABOVE element

   Permitted Context: %math
   Content Model: %math 

   The <ABOVE> element is used to draw a line, arrow, curly bracket, or
   accent --above-- the expression enclosed by this element. Stretchy
   symbols should be stretched to match the width of the enclosed
   expression. For example: 

                                        _____
       <above>X + Y</above>    giving   X + Y
   
                                                  =====
       <above sym=equals>X + Y</above>   giving   X + Y
   

   You can also place an expression centered above the line or arrow
   with the SUP element or its shortref form, for example: 

   <above sym=cub>n(n - 1)(n - 2)&dots;(n - m + 1)</above>
   <sup><text>total of m factors</text></sup>
   

   which would be rendered as (within limits of ascii art): 

              total of m factors
       /---------------^-------------\
       n(n - 1)(n - 2) ... (n - m + 1)

Permitted Attributes

   SYM 
       An entity name for a symbol, e.g. --cub-- for a curly bracket
       (brace). Defaults to --line--. The other choices are: --larr--
       (left arrow), --rarr-- (right arrow), --hat-- and --tilde--. 

   Note: Don't include the & prefix, so <above sym="&rarr;"> is wrong!  
















Dave Raggett                                                          Page 101
HTML 3.0                                                       28th March 1995

The BELOW element

   Permitted Context: %math
   Content Model: %math 

   The <BELOW> element is used to draw a line, arrow, or curly bracket
   --below-- the expression enclosed by this element. For example: 

   
       <below>X + Y</below>    giving   X + Y
                                        _____
   
       <below sym=rarr>X + Y</below>   giving   X + Y
                                                ---->
   

   You can also place an expression centered below the line or arrow
   with the SUP element or its shortref form, for example: 

   <above sym=cub>n(n - 1)(n - 2)&dots;(n - m + 1)</above>
   <sup><text>total of m factors</text></sup>
   

   which would be rendered as (within limits of ascii art): 

       n(n - 1)(n - 2) ... (n - m + 1)
       \---------------v-------------/
              total of m factors

   --I can't find the ISO entity names for under/over curly brackets!-- 

Permitted Attributes

   SYM 
       An entity name for a stretchy symbol, e.g. --cub-- for a curly
       bracket (brace). Defaults to --line--. The other choices are:
       --larr-- (left arrow), --rarr-- (right arrow), --hat-- and
       --tilde--. 

   Note: Don't include the & prefix, so <below sym="&rarr;"> is wrong!  














Dave Raggett                                                          Page 102
HTML 3.0                                                       28th March 1995

VEC, BAR, DOT, DDOT, HAT and TILDE

   Permitted Context: %math
   Content Model: %math 

   These elements place an accent above the term enclosed by the
   element. --VEC-- draws a right arrow above the term; --BAR-- draws a
   line; --DOT-- and --DDOT-- draw a single and double dot
   respectively; --HAT-- and --TILDE-- draw the corresponding character
   above the term, for example: 

                               ^
       <HAT>X</HAT>   giving   X
       
                                   ~
       <TILDE>X</TILDE>   giving   X

   Note: there are no attributes for these elements.  




































Dave Raggett                                                          Page 103
HTML 3.0                                                       28th March 1995

SQRT

   Permitted Context: %math
   Content Model: %math 

   This draws a square root sign around the contents, for example the
   square root of 1 + x is expressed as: 

       <SQRT>1 + x</SQRT>

   and possibly rendered as: --(this is the best I can do with ascii
   art!)-- 

         ----------
        / 1 + x
       v

   The SQRT element has no attributes. 

ROOT

   Permitted Context: %math
   Content Model: %math, OF, %math 

   This allows you to specify arbitary roots of an expression. The
   radix comes first, and is separated from the radicand by the <OF>
   tag. For example the cube root of 1 + x is expressed as: 

       <ROOT>3<OF>1 + x</ROOT>

   and possibly rendered as: 

         --------
       3/ 1 + x
       v

   The ROOT element has no attributes.  

















Dave Raggett                                                          Page 104
HTML 3.0                                                       28th March 1995

The ARRAY element

   Permitted Context: %math
   Content Model: one or more ROWs, each containing one or more ITEMs 

   The <ARRAY> element is used for LaTeX-like arrays. It can only be
   used within MATH elements. For example: 

       a      a    ...   a
        11     12         1n
        
       :      :    ...    :
   
       a      a    ...   a
        n1     n2         nn
   

   This is represented in HTML math by: 

       <array>
        <row><item>a_11_<item>a_12_<item>&cdots;<item>a_1n_
        <row><item>&vdots;<item>&vdots;<item>&ddots;<item>&vdots;
        <row><item>a_n1_<item>a_n2_<item>&cdots;<item>a_nn_
       </array>
   

   You can specify the "+", "-" or "=" characters as column separators: 

       a   x   +  a   x   +  ...  +  a   x    =   b
        11  1      12  2              1n  n        1
   
       a   x   +  a   x   +  ...  +  a   x    =   b
        22  1      22  2              2n  n        2
    
       .............................................
   
       a   x   +  a   x   +  ...  +  a   x    =   b
        n2  1      n2  2              nn  n        n

   This is represented by: 

   <array coldef="C+C+C+C=C">
    <row><item>a_11_x_1_<item>a_12_x_2_<item>&cdots;<item>a_1n_x_n_<item>b_1_
    <row><item>a_21_x_1_<item>a_22_x_2_<item>&cdots;<item>a_2n_x_n_<item>b_2_
    <row><item colspan=5>&dotfill;
    <row><item>a_n1_x_1_<item>a_n2_x_2_<item>&cdots;<item>a_nn_x_n_<item>b_n_
   </array>

   The number of rows and colums is left to the parser to work out for
   itself by counting the number of ROW elements, and the number of
   ITEMs on each row. This is slightly complicated by the possibility
   that some items may span several rows and columns. If a row has less
   than the expected number of items after accounting for merged items,

Dave Raggett                                                          Page 105
HTML 3.0                                                       28th March 1995

   the missing items are assumed to be on the righthandside, and should
   be treated as empty. The row count should be based on the ROW
   elements, and additional rows, implied by items spanning rows beyond
   the end of the array, should be ignored. 

Permitted Attributes

   ALIGN 
       By default, arrays are vertically positioned so that preceding
       and following expressions are aligned with the mid point of the
       array. The ALIGN attribute can take on of the following values:
       
       

       TOP 
           The top row of the array is aligned with the same baseline
           as the preceding or following expression. 

       MIDDLE 
           The middle row of the array is aligned with the same
           baseline as the preceding or following expression. This is
           the default. If there are an even number of rows, the
           midpoint of the array is used instead. 

       BOTTOM 
           The bottom row of the array is aligned with the same
           baseline as the preceding or following expression. 

   COLDEF 
       By default the columns are centered. This attribute can be used
       to specify the horizontal alignment for each column with
       character string formed by one capital letter per column, with L
       for left, C for center and R to right alignment, e.g. "LLCR" for
       a 4 column table. 

       The COLDEF attribute can also be used to place a "+", "-" or "="
       between the columns, e.g. coldef="C+C+C+C=C". Whitespace within
       the COLDEF attribute is ignored. 

   LDELIM 
       An entity or character for the left delimiter, e.g. ldelim="["
       for a left square bracket or ldelim="|". The default is no
       delimiter. 

   RDELIM 
       An entity name or character for the right delimiter, e.g.
       rdelim="}" or rdelim="|". The default is no delimiter. 

   LABELS 
       The presence of this attribute has the same effect as TeX's
       bordermatrix command. The first row and column are separated
       from the rest of the array. 


Dave Raggett                                                          Page 106
HTML 3.0                                                       28th March 1995

   Example of a labelled array: 

         i     j     k
         
    a  (X     X     X  )
       ( 11    21    31)    <array ldelim="(" rdelim=")" labels>
       (               )     <row><item>dummy<item>i<item>j<item>k
    b  (X     X     X  )     <row><item>a<item>X_11_<item>X_21_<item>X_31_
       ( 12    22    32)     <row><item>b<item>X_12_<item>X_22_<item>X_32_
       (               )     <row><item>c<item>X_31_<item>X_32_<item>X_33_
    c  (X     X     X  )    </array>
       ( 13    23    33)
   

   Note: An item is always required for the first item of the first
   row, although its contents will be ignored for labelled arrays. This
   has been emphasized above with the value "dummy".  





































Dave Raggett                                                          Page 107
HTML 3.0                                                       28th March 1995

The ROW element

   Permitted Context: ARRAY
   Content Model: one or more ITEMs 

   The <ROW> element is used for rows of items within the ARRAY
   element. It has no permitted attributes. The end tag </ROW> can
   always be left out. 

The ITEM element

   Permitted Context: ROW
   Content Model: %math 

   The <ITEM> element is used for items within a row of the ARRAY
   element. The end tag </ITEM> can always be left out. 

Permitted Attributes for ITEM

   ALIGN 
       By default expressions in items are centered horizontally. This
       can be altered by the COLDEF attribute on the parent ARRAY
       element, and overridden on a per item basis with the ALIGN
       attribute. The permitted values are: LEFT, CENTER or RIGHT. 

   COLSPAN 
       This can be used to provide a single item which spans several
       columns. The attribute value is a positive integer and defaults
       to one. 

   ROWSPAN 
       This can be used to provide a single item which spans several
       rows. The attribute value is a positive integer and defaults to
       one. It can be used together with the COLSPAN attribute. 




















Dave Raggett                                                          Page 108
HTML 3.0                                                       28th March 1995

TEXT

   Permitted Context: %math
   Content Model: PCDATA 

   This element is used to include a few words of text within MATH
   elements. It avoids the need to separate words with spacing entities
   such as &sp; that are otherwise needed to provide adequate spacing.
   The text is rendered literally, and may include entities for
   accented characters etc. 

   There are no attributes for this element.  










































Dave Raggett                                                          Page 109
HTML 3.0                                                       28th March 1995

B, T and BT

   Permitted Context: %math
   Content Model: %math 

   These elements are used, when feasible, to alter the default fonts
   used to render variables and constants. Numbers, operators,
   delimiters and other symbols are unaffected. B renders its contents
   in bold, while T renders its contents in an upright font rather than
   an italic font. These can be nested to combine the effects, for a
   bold upright font. The BT element allows you to write
   <BT>--term--</BT> rather from having to write:
   <B><T>--term--</T></B>. 

Permitted Attributes

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. 

       By using CLASS to describe the term as a --vector--, --tensor--
       or --matrix-- etc. user agents can do a better job when
       rendering to non-visual media. Further conventions for term
       class names are not part of this specification. 

   Note: Don't use B for chemical formulae. These should be handled by
   subclassing the MATH element with class=chem, for instance: <MATH
   CLASS=CHEM>  























Dave Raggett                                                          Page 110
HTML 3.0                                                       28th March 1995

Horizontal Rules

   Permitted Context: %Body.Content
   Content Model: Empty! 

   The <HR> element is used for horizontal rules that act as dividers
   between sections. The SRC attribute can be used to designate a
   custom graphic, otherwise subclass HR with the CLASS attribute and
   specify the appropriate rendering with an associated style sheet. 

Permitted Attributes

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. For instance, <H2 CLASS=Section> defines a
       level 2 header that acts as a section header. By convention, the
       class names are interpreted hierarchically, with the most
       general class on the left and the most specific on the right,
       where classes are separated by a period. The CLASS attribute is
       most commonly used to attach a different style to some element,
       but it is recommended that where practical class names should be
       picked on the basis of the element's semantics, as this will
       permit other uses, such as restricting search through documents
       by matching on element class names. The conventions for choosing
       class names are outside the scope of this specification. 

   CLEAR 
       This attribute is common to all block-like elements. When text
       flows around a figure or table in the margin, you sometimes want
       to position the rule below the figure rather than alongside it.
       The CLEAR attribute allows you to move down unconditionally:
       
       

       clear=left
           move down until left margin is clear 

       clear=right
           move down until right margin is clear 

       clear=all
           move down until both margins are clear 

       Alternatively, you can decide to place the rule alongside the
       figure just so long as there is enough room. The minimum width
       needed is specified as:
       

Dave Raggett                                                          Page 111
HTML 3.0                                                       28th March 1995

       

       clear="40 en"
           move down until there is at least 40 en units free 

       clear="100 pixels"
           move down until there is at least 100 pixels free 

       The style sheet (or browser defaults) may provide default
       minimum widths for each class of block-like elements. 

   SRC 
       Specifies a custom image for the rule. The image is specified as
       a URI. This attribute may appear together with the MD attribute. 

   MD 
       Specifies a message digest or cryptographic checksum for the
       associated graphic specified by the SRC attribute. It is used
       when you want to be sure that a linked object is indeed the same
       one that the author intended, and hasn't been modified in any
       way. For instance, MD="md5:jV2OfH+nnXHU8bnkPAad/mSQlTDZ", which
       specifies an MD5 checksum encoded as a base64 character string.
       The MD attribute is generally allowed for all elements which
       support URI based links. 






























Dave Raggett                                                          Page 112
HTML 3.0                                                       28th March 1995

Preformatted Text (PRE)

   Permitted Context: %Body.Content, %flow, %block
   Content Model: subset of %text (see DTD for details) 

   Preformatted text between the start and end PRE tag is rendered
   using a fixed with font, in addition whitespace characters are
   treated literally. The spacing and line breaks are rendered
   directly, unlike other elements, for which repeated whitespace
   chararacters are collapsed to a single space character and line
   breaks introduced automatically. 

   *   Line breaks within the text are rendered as a move to the
       beginning of the next line. The exceptions are line breaks
       immediately following the starting PRE tag or immediately
       preceding the ending PRE tag, which should be ignored. 

   *   The <P> tag should be avoided, but for robustness, user agents
       are recommended to treat these tags as line breaks. 

   *   Anchor elements, and character highlighting elements may be
       used. 

   *   FORM elements may be included, and the fixed width font
       exploited to control layout (the TAB or TABLE elements give
       similar control for normal text though). 

   *   Block-like elements such as headers, lists, FIG and TABLES
       should be avoided. 

   *   The horizontal tab character (encoded in US ASCII and ISO 8859-1
       as decimal 9) should be interpreted as the smallest nonzero
       number of spaces which will leave the number of characters so
       far on the line as a multiple of 8. Its use is deprecated! 

   For example, a verse from Shelley (To a Skylark): 

   <PRE>
          Higher still and higher
            From the earth thou springest
          Like a cloud of fire;
            The blue deep thou wingest,
   And singing still dost soar, and soaring ever singest.</PRE>

   which is rendered as: 

          Higher still and higher
            From the earth thou springest
          Like a cloud of fire;
            The blue deep thou wingest,
   And singing still dost soar, and soaring ever singest.

Permitted Attributes

Dave Raggett                                                          Page 113
HTML 3.0                                                       28th March 1995


   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 

   CLEAR 
       This attribute is common to all block-like elements. When text
       flows around a figure or table in the margin, you sometimes want
       to start the preformatted text below the figure rather than
       alongside it. The CLEAR attribute allows you to move down unconditionally:
       
       

       clear=left
           move down until left margin is clear 

       clear=right
           move down until right margin is clear 

       clear=all
           move down until both margins are clear 

       Alternatively, you can decide to place the element alongside the
       figure just so long as there is enough room. The minimum width
       needed is specified as:
       
       

       clear="40 en"

Dave Raggett                                                          Page 114
HTML 3.0                                                       28th March 1995

           move down until there is at least 40 en units free 

       clear="100 pixels"
           move down until there is at least 100 pixels free 

       The style sheet (or browser defaults) may provide default
       minimum widths for each class of block-like elements. 

   WIDTH 
       This is optionally used to specify a width as a number of
       characters to try and display within the current window width.
       The user agent can exploit this suggestion to select an
       appropriate font size. The default is a width of 80 characters.
       Where the WIDTH attribute is supported, widths of 40, 80 and 132
       characters should be presented optimally, with other widths
       being rounded up. 

       --Can't we get rid of this obsolete nonsense? How many browsers
       support the WIDTH attribute anyway? -- 



































Dave Raggett                                                          Page 115
HTML 3.0                                                       28th March 1995

Admonishments

   Permitted Context: %body.content, %flow, %block
   Content Model: %body.content 

   The NOTE element is designed for use as admonishments such as notes,
   cautions or warnings, as commonly used in technical documentation.
   The CLASS attribute specifies the type of the element and is
   typically associated with different graphics such as a road traffic
   warning sign. The graphic can be customized with the SRC attribute. 

   Example: 

       <NOTE CLASS=WARNING>Please check with the local weather
       service before starting your climb. The mountain weather
       is subject to rapid deterioration. It is essential to
       carry a good map and compass.</NOTE>

   The class names: NOTE, CAUTION and WARNING are recommended for
   standard admonishments. In the absence of the CLASS attribute, a
   NOTE element is typically rendered indented, without an accompanying
   graphic. 

Permitted Attributes

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. Apart from the values suggested above,
       the conventions for choosing class names are outside the scope
       of this specification. 

Dave Raggett                                                          Page 116
HTML 3.0                                                       28th March 1995


   CLEAR 
       This attribute is common to all block-like elements. When text
       flows around a figure or table in the margin, you sometimes want
       to start the note below the figure rather than alongside it. The
       CLEAR attribute allows you to move down unconditionally:
       
       

       clear=left
           move down until left margin is clear 

       clear=right
           move down until right margin is clear 

       clear=all
           move down until both margins are clear 

       Alternatively, you can decide to place the note alongside the
       figure just so long as there is enough room. The minimum width
       needed is specified as:
       
       

       clear="40 en"
           move down until there is at least 40 en units free 

       clear="100 pixels"
           move down until there is at least 100 pixels free 

       The style sheet (or browser defaults) may provide default
       minimum widths for each class of block-like elements. 

   SRC 
       Specifies an image to appear preceding the note. The image is
       specified as a URI. This attribute may appear together with the
       MD attribute. 

   MD 
       Specifies a message digest or cryptographic checksum for the
       associated graphic specified by the SRC attribute. It is used
       when you want to be sure that a linked object is indeed the same
       one that the author intended, and hasn't been modified in any
       way. For instance, MD="md5:jV2OfH+nnXHU8bnkPAad/mSQlTDZ", which
       specifies an MD5 checksum encoded as a base64 character string.
       The MD attribute is generally allowed for all elements which
       support URI based links. 







Dave Raggett                                                          Page 117
HTML 3.0                                                       28th March 1995

Footnotes

   Permitted Context: %body.content, %flow, %block
   Content Model: %body.content 

   The FN element is designed for footnotes, and when practical,
   rendered as pop-up notes. 

   Example: 

   <DL>
   <DT>Hamlet: <DD>You should not have believed me, for virtue cannot
   so <a href="#fn1">inoculate</a> our old stock but we shall <a
   href="#fn2">relish of it</a>. I loved you not.
   
   <DT>Ophelia: <DD> I was the more deceived.
   
   <DT>Hamlet: <DD>Get thee to a nunnery. Why wouldst thou be a breeder
   of sinners? I am myself <a href="#fn2">indifferent honest</a> ...
   </DL> 

   <fn id=fn1><i>inoculate</i> - graft</fn>
   <fn id=fn2><i>relish of it</i> - smack of it (our old sinful nature)</fn>
   <fn id=fn3><i>indifferent honest</i> - moderately virtuous</fn> 

   Note: If %html.recommended is active, the HTML 3.0 DTD expects you
   to enclose plain text in a block element such as <P> e.g.
   
   <FN ID=fn23><P>A simple footnote</FN> 

Permitted Attributes

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used

Dave Raggett                                                          Page 118
HTML 3.0                                                       28th March 1995

       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 
















































Dave Raggett                                                          Page 119
HTML 3.0                                                       28th March 1995

Block Quotes

   Permitted Context: %Body.Content, %flow, %block
   Content Model: %Body.Content followed by optional CREDIT element 

   The BQ element is used for extended quotations. The tag name has
   been abbreviated from HTML 2.0's BLOCKQUOTE to the more convenient
   BQ, and the content model extended to allow the source of the
   quotation to be credited. 

   Example: 

   <BQ>
   <P>But now I shall shortly proffer him the strength and the
   courage of the Geats in combat. He who has the right to it shall
   go once more to the mead-drinking with confident heart, after
   the morning light of another day, the sun clothed in ethereal
   radiance, shines from the south upon the children of men.
   <CREDIT>Beowulf replying to Unferth, from the Anglo-Saxon poem
   "Beowolf", Cotton Vitellus A xv manuscript</CREDIT>
   </BQ>

   Note: If %html.recommended is active, the HTML 3.0 DTD expects you
   to enclose plain text in a block element such as <P> 

Permitted Attributes

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names

Dave Raggett                                                          Page 120
HTML 3.0                                                       28th March 1995

       are outside the scope of this specification. 

   CLEAR 
       This attribute is common to all block-like elements. When text
       flows around a figure or table in the margin, you sometimes want
       to start the block quote below the figure rather than alongside
       it. The CLEAR attribute allows you to move down unconditionally:
       
       

       clear=left
           move down until left margin is clear 

       clear=right
           move down until right margin is clear 

       clear=all
           move down until both margins are clear 

       Alternatively, you can decide to place the quote alongside the
       figure just so long as there is enough room. The minimum width
       needed is specified as:
       
       

       clear="40 en"
           move down until there is at least 40 en units free 

       clear="100 pixels"
           move down until there is at least 100 pixels free 

       The style sheet (or browser defaults) may provide default
       minimum widths for each class of block-like elements. 

   NOWRAP 
       The NOWRAP attribute is used when you don't want the browser to
       automatically wrap lines. You can then explicitly specify line
       breaks using the BR element. 
















Dave Raggett                                                          Page 121
HTML 3.0                                                       28th March 1995

The ADDRESS element

   Permitted Context: %Body.Content
   Content Model: P or %text 

   The ADDRESS element specifies such information as address, signature
   and authorship for the current document, and typically placed at the
   top or bottom of the document. When used with %text, the element
   acts similar to a paragraph with breaks before and after. 

   Example: 

   <ADDRESS>
   Newsletter editor<BR>
   J.R. Brown<BR>
   8723 Buena Vista, Smallville, CT 01234&t;BR>
   Tel: +1 (123) 456 7890
   </ADDRESS>

Permitted Attributes

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 

   CLEAR 
       This attribute is common to all block-like elements. When text
       flows around a figure or table in the margin, you sometimes want
       to start the address element below the figure rather than

Dave Raggett                                                          Page 122
HTML 3.0                                                       28th March 1995

       alongside it. The CLEAR attribute allows you to move down unconditionally:
       
       

       clear=left
           move down until left margin is clear 

       clear=right
           move down until right margin is clear 

       clear=all
           move down until both margins are clear 

       Alternatively, you can decide to place the address alongside the
       figure just so long as there is enough room. The minimum width
       needed is specified as:
       
       

       clear="40 en"
           move down until there is at least 40 en units free 

       clear="100 pixels"
           move down until there is at least 100 pixels free 

       The style sheet (or browser defaults) may provide default
       minimum widths for each class of block-like elements. 

   NOWRAP 
       The NOWRAP attribute is used when you don't want the browser to
       automatically wrap lines. You can then explicitly specify line
       breaks using the BR element. 






















Dave Raggett                                                          Page 123
HTML 3.0                                                       28th March 1995

The FORM element

   Permitted Context: %Body.Content
   Content Model: %Body.Content --plus-- INPUT, TEXTAREA, and SELECT
   Note you are not allowed to nest FORM elements! 

   HTML fill-out forms can be used for questionaires, hotel
   reservations, order forms, data entry and a wide variety of other
   applications. The form is specified as part of an HTML document. The
   user fills in the form and then --submits-- it. The user agent then
   sends the form's contents as designated by the FORM element.
   Typically, this is to an HTTP server, but you can also email form
   contents for asynchronous processing. 

   Forms are created by placing input fields within paragraphs,
   preformatted text, lists and tables. This gives considerable
   flexibility in designing the layout of forms. 

   HTML 3.0 supports the following kinds of fields: 

   *   Simple text fields 

   *   Multi-line text fields 

   *   Radio buttons 

   *   Checkboxes 

   *   Range controls (sliders, or knobs) 

   *   Single/multiple choice menus 

   *   Scribble on image 

   *   File widgets for attaching files to forms. 

   *   Submit buttons for sending form contents 

   *   Reset buttons for resetting fields to their initial values 

   *   Hidden fields for book keeping information 

   It is expected that future revisions to HTML will add support for
   audio fields, multi-row entry of database tables, and extending
   multi-line text fields to support a range of other data types, in
   addition to plain text. Client-side scripts will provide the means
   to constrain field values and to add new field types. 

Example of a form

   This fictitious example is a questionnaire. It uses the INPUT
   element for simple text fields, radio buttons, checkboxes, and the
   submit and reset buttons. The TEXTAREA field is used for a

Dave Raggett                                                          Page 124
HTML 3.0                                                       28th March 1995

   multi-line text entry field. The form fields are laid out with
   several paragraph elements and an unordered list. Notice the use of
   the NAME attribute to name each field: 

   
   <TITLE>Sample Questionaire</TITLE>
   <H1>Sample Questionaire</H1>
   
   <P>Please fill out this questionaire:
   
   <FORM METHOD=post ACTION="http://www.hal.com/sample">
   <P>Your name: <input name="name" size="48">
   <P><input name="male" type=radio> Male
   <P><input name="female" type=radio>Female 
     Number in family: <input name="family" type=int>
     
   <P>Cities in which you maintain a residence:
   
   <UL PLAIN>
   <LI><input name="city" type=checkbox value="kent"> Kent
   <LI><input name="city" type=checkbox value="miami"> Miami
   <LI>Others <textarea name="other" cols=48 rows=4></textarea>
   </UL>
   
   <P>Nickname: <INPUT NAME="nickname" size ="42">
   
   <P>Thank you for responding to this questionaire.
   <P><INPUT TYPE=SUBMIT> <INPUT TYPE=RESET>
   </FORM>
   

   Every form must be enclosed within a FORM element. There can be
   several forms in a single document, but the FORM element can't be
   nested. The browser is responsible for handling the input focus,
   i.e. which field will currently get keyboard input. Many platforms
   have existing conventions for forms, for example, using Tab and
   Shift-Tab to move the keyboard focus forwards and backwards between
   fields, and using the Enter (aka Return) key to submit the form. 

   This standard defines and requires support for the HTTP access
   protocol only. Under any protocol, the submitted contents of the
   form logically consist of a list of name/value pairs where the names
   are given by the NAME attributes of the various fields in the FORM.
   Each field will normally be given a distinct name. Several radio
   buttons can share the same name, as this is how you specify that
   they belong to the same control group - at any time, only one button
   in the group can be selected. 

   Note: The contents list of name/value pairs excludes unselected
   radio buttons and checkboxes. In general, any field with a null
   value can be omitted from the contents list. 

Client-side scripts and fill-out forms

Dave Raggett                                                          Page 125
HTML 3.0                                                       28th March 1995


   HTML 3.0 doesn't provide direct support for constraining the values
   entered into text fields, or for derived fields whose values are
   calculated from the values of other fields. Rather than extending
   the markup to support these features, HTML 3.0 provides a means for
   associating the form with a script. Support for scripts is not
   required, however, and the HTML 3.0 specification doesn't cover the
   scripting languages or the details of their interface with the user
   agent 

   The SCRIPT attribute of the FORM element specifies the script via a
   URI. The user agent down-loads the script and interprets it locally.
   Scripts handle a variety of messages for individual fields and the
   form as a whole. These messages correspond to events such as: 

   *   Enter/Leave Form (for initialization and clean up) 

   *   When a field gains or loses the input focus 

   *   Mouse clicks and drags over a field 

   *   Keyboard events 

   Scripts can examine and set properties of fields. They can also
   examine a small set of standard properties of the user agent, for
   instance the user's name, the time of day, the type of user agent,
   and so on. 

   Scripts can't do anything that might jeopardize the user or the host
   machine. Scripts can't send messages over the network, or read or
   write files. The library calls that are allowed are restricted to a
   very small and well defined set. These precautions are necessary for
   untrusted scripts. It is envisaged that script interpreters will
   offer a much wider application programming interface to trusted
   scripts, as determined on the basis of a digital signature by a
   trusted third party. 

Permitted Attributes for FORM

   ACTION 
       The ACTION attribute is a URL specifying the location to which
       the contents of the form is submitted to elicit a response. If
       the ACTION is missing, the URL for the document itself is
       assumed. The way data is submitted varies with the access
       protocol of the URL, and with the values of the METHOD and
       ENCTYPE attributes. 

   METHOD 
       This specifies variations in the protocol used to send the form
       contents. It is currently restricted to GET (the default) or
       POST. The attribute was introduced to inform user agents which
       HTTP methods the server supports. 


Dave Raggett                                                          Page 126
HTML 3.0                                                       28th March 1995

   ENCTYPE 
       This attribute specifies the MIME content type to be used to
       encode the form contents. It defaults to the string:
       "application/x-www-form-urlencoded" 

   SCRIPT 
       This can be used to give a URI for a script. The scripting
       language and the interface with the user agent is not part of
       the HTML 3.0 specification. 













































Dave Raggett                                                          Page 127
HTML 3.0                                                       28th March 1995

The INPUT fields

   Permitted Context: %Body.Content
   Content Model: --Empty!-- 

   The INPUT element is used for a wide variety of different kinds of
   entry fields within HTML fill-out forms. The TYPE attribute
   determines the type of field. 

Single-line text fields --(type=text)--

   These are used for entering short text strings, like peoples names,
   numbers and dates. The visible width of the field in characters can
   be set with the SIZE attribute. When using a variable pitch font,
   the SIZE attribute sets the width in en units (half the point size).
   The user should be able to enter more than this, with the contents
   of the field scrolling horizontally as needed. The MAXLENGTH
   attribute can be used to specify the maximum number of characters
   permitted for the string. 

   If the TYPE attribute is missing, the INPUT element is assumed to be
   a single-line text field. The NAME attribute is used to identify the
   field when the form's contents are converted to the name/value list.
   The VALUE field can be used to initialize the text string. Character
   entities can be used include accented characters in this string. 

   Note: Use the TEXTAREA element for multi-line text entry fields. 

Password fields --(type=password)--

   This is the same as single-line text fields except that each
   character typed is echoed by a shadow character, e.g. an asterisk or
   the space character. The user can see how many characters that have
   been typed but not what was typed. 

Checkbox fields --(type=checkbox)--

   A checkbox field has two states: selected and unselected.Its
   name/value pair only appear in the submitted data when selected.
   Checkboxes are used for boolean attributes. They can also be used
   for attributes which can take multiple values at the same time. This
   is represented by a checkbox for each optional value, with the same
   name for each of the checkboxes. Unselected checkboxes don't appear
   in the submitted data. Both NAME and VALUE are required for
   checkboxes. To initialize the checkbox to its selected state,
   include the CHECKED attribute. Checkboxes provide an alternative to
   using the SELECT element for multiple-choice menus. 

Radio Buttons --(type=radio)--

   Suitable for attributes which can take a single value from a set of
   alternatives. All radio buttons in the same group should be given
   the same NAME. Only the selected radio button in the group generates

Dave Raggett                                                          Page 128
HTML 3.0                                                       28th March 1995

   a name/value pair in the submitted data. Both NAME and VALUE are
   required for radio buttons. To initialize the radio button to its
   selected state, include the CHECKED attribute. Radio buttons offer
   an alternative to using the SELECT element for single choice menus. 

Range fields --(type=range)--

   These allow the user to pick a numeric value in between a lower and
   an upper bound. The range is specified with the MIN and MAX
   attributes, as in: 

       <input name=rating type=range min=1 max=10>

   If either the lower or upper bound is a real number, then the range
   is real valued, otherwise it is restricted to integer values only.
   The VALUE attribute can be used to initialize the range field. It an
   error for the value to lie outside the specified range. The default
   value is midway between the lower and upper limits. 

Scribble on Image --(type=scribble)--

   These fields allow the user to scribble with a pointing device (such
   as a mouse or pen) on top of a predefined image. The image is
   specified as a URI with the SRC attribute. If the user agent can't
   display images, or can't provide a means for users to scribble on
   the image, then the field should be treated as a text field. The
   VALUE attribute can be used to initialize the text field for these
   users. It is ignored when the user agent provides scribble on image
   support. 

File Attachments --(type=file)--

   This allows users to attach one or more files to be submitted with
   the form's contents. The ACCEPT attribute can be used to specify a
   comma separated list of MIME content types. These are used to
   restrict the kinds of files that can be attached to the form. For
   instance: 

       <input name=pictures type=file accept="image/*">

   This example restricts files to match "image/*", i.e. to registered
   MIME image types. For windows based user agents, it is suggested
   that file fields display the name of the last file attached, with
   the ability to open a file dialog box to view the complete list of
   files attached so far. The accept attribute then acts to specify the
   filter on the list of candidate files. 

Hidden fields --(type=hidden)--

   No field is presented to the user, but the content of the field is
   sent with the submitted form. This value may be used to transmit
   state information about client/server interaction, for instance a
   transaction identifier. These fields are needed because HTTP servers

Dave Raggett                                                          Page 129
HTML 3.0                                                       28th March 1995

   don't preserve state information from one request to the next. 

Submit buttons --(type=submit)--

   These are buttons that when pressed submit the form's data. You can
   use the VALUE attribute to provide a non-editable label to be
   displayed on the button. The default label is application-specific.
   A graphic can be specified for the submit button using the SRC
   attribute. 

   The submit button normally makes no contribution to the submitted
   data. The exception is when the field includes a NAME attribute, in
   which case, the name and value attributes are included with the
   submitted data. This can be used to distinguish which submit button
   the user pressed. 

Image fields --(type=image)--

   These act like submit buttons but include the location where the
   user clicked on the image. The image is specified with the SRC
   attribute. 

   --Should we phase these out, in favor of using SUBMIT? For this, we
   would need to ensure that the submit button included the location
   clicked when a graphic was specified with SRC.-- 

Reset buttons --(type=reset)--

   When a reset button is pressed, the form's fields are reset to their
   specified initial values. The label to be displayed on the button
   may be specified just as for the SUBMIT button. Likewise, the SRC
   attribute can be used to specify a graphic. 

------------------------------------------------------------------------------
Permitted Attributes for the INPUT element

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to

Dave Raggett                                                          Page 130
HTML 3.0                                                       28th March 1995

       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 

   TYPE
       Defines the type of the field as one of: TEXT, PASSWORD,
       CHECKBOX, RADIO, RANGE, FILE, SCRIBBLE, HIDDEN, SUBMIT, IMAGE or
       RESET. It defaults to TEXT. The attribute value is an SGML name
       token and and as such is case insensitive. 

   NAME
       This provides a character string used to name the field when
       submitting the form's data. Several fields may share the same
       name, for instance a group of radio buttons or checkboxes. The
       name is case insensitive. 

   VALUE
       This is a character string or number which is used to initialize
       text, range and hidden fields. 

   DISABLED
       When present, the field should be rendered as normal, but can't
       be modified by the user. Where practical the rendering should
       provide a cue that the field is disabled e.g. by graying out the
       text, changing the color of the background or similar. 

   ERROR
       This attribute specifies an error message explaining why the
       field's current value is incorrect. When this attribute is
       missing, the field can be assumed to be ok. User agents are
       recommended to provide a cue to indicate that the field is in
       error. 

   CHECKED
       The presence of this attribute indicates that a radio button or
       checbox should be initialized to its selected state. 

   SIZE
       This specifies the visible width of a text or password field.
       For fixed pitch fonts, the size attribute specifies the maximum
       number of characters visible, while for variable pitch fonts,
       the attribute specifies the width in en units (half the point
       size). 

   MAXLENGTH
       Specifies the maximum number of characters permitted for text

Dave Raggett                                                          Page 131
HTML 3.0                                                       28th March 1995

       and password fields. 

   MIN
       This is an integer or real number and specifies the lower bound
       for a range field. 

   MAX
       This is an integer or real number and specifies the upper bound
       for a range field. 

   ACCEPT
       A comma separated list of MIME content types for use in
       restricting the types of files that can be attached to a form
       with a file field. 

   SRC (Source) 
       The SRC attribute specifies the URI for an image for use as the
       background of a SCRIBBLE, IMAGE, SUBMIT or RESET field. Its
       syntax is the same as that of the HREF attribute of the <A> tag. 

   MD 
       Specifies a message digest or cryptographic checksum for the
       associated image specified by the SRC attribute. It is used when
       you want to be sure that the image is indeed the same one that
       the author intended, and hasn't been modified in any way. For
       instance, MD="md5:jV2OfH+nnXHU8bnkPAad/mSQlTDZ", which specifies
       an MD5 checksum encoded as a base64 character string. The MD
       attribute is generally allowed for all elements which support
       URI based links. 

   ALIGN 
       This attribute only applies to fields with background images,
       i.e. SCRIBBLE, IMAGE, SUBMIT or RESET fields. It is intended to
       provide the same positional control as for the IMG element. The
       ALIGN attribute takes the values TOP or MIDDLE or BOTTOM,
       defining whether the top or middle or bottom of the field should
       be aligned with the baseline for the text line in which the
       INPUT element appears. 

       With ALIGN=LEFT, the field will float down and over to the
       current left margin, and subsequent text will wrap around the
       right hand side of the field. Likewise for ALIGN=RIGHT, the
       field aligns with the current right margin and, and text wraps
       around the left. 










Dave Raggett                                                          Page 132
HTML 3.0                                                       28th March 1995

TEXTAREA

   Permitted Context: %Body.Content
   Content Model: PCDATA (i.e. text and entities) 

TEXTAREA

   To let users enter more than one line of text, use the TEXTAREA
   element. For example: 

   <TEXTAREA NAME="address" ROWS=64 COLS=6>
   HaL Computer Systems
   1315 Dell Avenue
   Campbell, California 95008
   </TEXTAREA>
   

   The text up to the end tag is used to initialize the field's value.
   The initialization text can contain SGML entities, e.g. for accented
   characters, but is otherwise treated as literal text. This end tag
   is always required even if the field is initially blank. When
   submitting a form, the line terminators are implementation
   dependent. Servers should be capable of recognizing a CR immediately
   followed by an LF, or separate CRs and LFs as all signifying the
   ends of lines. User agents should tolerate the same range of line
   terminators within the initialization text. 

   In a typical rendering, the ROWS and COLS attributes determine the
   visible dimension of the field in characters. The field is rendered
   in a fixed-width font. User agents should allow text to grow beyond
   these limits by scrolling as needed. The user agent is recommended
   to wrap words as they are entered, to fit within the textarea field.
   It is further recommended that a means is provided for users to turn
   this feature off and on. 

   Note: In the initial design for forms, multi-line text fields were
   supported by the INPUT element with TYPE=TEXT. Unfortunately, this
   causes problems for fields with long text values as SGML limits the
   length of attribute literals. The HTML 2.0 DTD allows for up to 1024
   characters (the SGML default is only 240 characters). 

Permitted Attributes

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific

Dave Raggett                                                          Page 133
HTML 3.0                                                       28th March 1995

       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 

   NAME 
       The formal name of the field which is used in the form's
       contents list. 

   ROWS 
       This gives the visible number of text lines shown by the field.
       User agents should allow text to grow beyond these limits by
       scrolling as needed. 

   COLS 
       The visible number of characters across the field. User agents
       should allow text to grow beyond these limits by scrolling as
       needed. 

   DISABLED
       When present, the field should be rendered as normal, but can't
       be modified by the user. Where practical the rendering should
       provide a cue that the field is disabled e.g. by graying out the
       text, changing the color of the background or similar. 

   ERROR
       This attribute specifies an error message explaining why the
       field's current value is incorrect. When this attribute is
       missing, the field can be assumed to be ok. User agents are
       recommended to provide a cue to indicate that the field is in
       error. 

   ALIGN 
       Take values TOP or MIDDLE or BOTTOM, defining whether the top or
       middle or bottom row of the field should be aligned with the
       baseline for the text line in which the TEXTAREA element
       appears. The default is align=top. 

       With ALIGN=LEFT, the field will float down and over to the
       current left margin, and subsequent text will wrap around the

Dave Raggett                                                          Page 134
HTML 3.0                                                       28th March 1995

       right hand side of the field. Likewise for ALIGN=RIGHT, the
       field aligns with the current right margin and, and text wraps
       around the left. 



















































Dave Raggett                                                          Page 135
HTML 3.0                                                       28th March 1995

The SELECT element

   Permitted Context: %Body.Content --but-- must be within FORM
   Content Model: one ore more OPTION elements 

   The SELECT element is used for single and multiple choice menus. It
   is generally rendered as a drop-down or pop-up menu, and offers a
   more compact alternative to using radio buttons for single choice
   menus, or checkboxes for multiple choice menus. 

   Example: 

   <SELECT NAME="flavor">
   <OPTION>Vanilla
   <OPTION>Strawberry
   <OPTION>Rum and Raisin
   <OPTION>Peach and Orange
   </SELECT>
   

   This is a single choice menu. When you want a multiple choice menu,
   you need to include the MULTIPLE attribute with the SELECT element,
   e.g. <SELECT MULTIPLE NAME="flavor">. 

   The NAME attribute is used when creating the name/value list
   describing the form's contents. A name/value pair is contributed for
   each selected option. The value is taken from the OPTION's VALUE
   attribute, and defaults to the content of the OPTION when the VALUE
   attribute is missing. 

   For single choice menus, if no option is initially marked as
   selected, then the first item listed is selected. This is
   inappropriate for multiple choice menus, though. 

Graphical Menus

   HTML 3.0 extends the SELECT element to support graphical menus. This
   is allows you to specify an image for the SELECT element, and
   hotzones for each of the OPTION elements. In this way the same menu
   can be rendered as a conventional text-based menu for non-graphical
   user agents and a graphical menu for graphical user agents. 

   The image is specified in the same way as for IMG elements. This
   means you can specify suggested values for the width and height. You
   can also float the image to the left or right margins and flow other
   elements around it. The hotzones for OPTION elements are specified
   using the SHAPE attribute in the same way as for anchor elements. 

Permitted Attributes

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.

Dave Raggett                                                          Page 136
HTML 3.0                                                       28th March 1995

       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 

   NAME 
       The formal name of the menu which is used in the form's contents
       list. 

   MULTIPLE 
       The presence of this attribute denotes that the SELECT element
       defines a multiple choice menu. In its absence, the element
       defines a single choice menu. 

   DISABLED
       When present, the menu should be rendered as normal, but can't
       be modified by the user. Where practical the rendering should
       provide a cue that the menu is disabled e.g. by graying out the
       text, changing the color of the background or similar. 

   ERROR
       This attribute specifies an error message explaining why the
       menu's current selections are incorrect. Further error messages
       can be attached to individual options. When this attribute is
       missing, the menu can be assumed to be ok. User agents are
       recommended to provide a cue to indicate that the menu is in
       error. 

   SRC (Source) 
       The SRC attribute is used for graphical menus to specify the URI
       for the image. Its syntax is the same as that of the HREF
       attribute of the <A> tag. 


Dave Raggett                                                          Page 137
HTML 3.0                                                       28th March 1995

   MD 
       Specifies a message digest or cryptographic checksum for the
       associated image specified by the SRC attribute. It is used when
       you want to be sure that the image is indeed the same one that
       the author intended, and hasn't been modified in any way. For
       instance, MD="md5:jV2OfH+nnXHU8bnkPAad/mSQlTDZ", which specifies
       an MD5 checksum encoded as a base64 character string. The MD
       attribute is generally allowed for all elements which support
       URI based links. 

   WIDTH 
       Optional suggested width for the image. By default, this is
       given in pixels. 

   HEIGHT 
       Optional suggested height for the image. By default, this is
       given in pixels. 

   UNITS 
       This optional attribute specifies the units for the width and
       height attributes. It is one of: units=pixels (the default) or
       units=em (the width of the letter "m") which scales with the
       font size. 

   ALIGN 
       Take values TOP or MIDDLE or BOTTOM, defining whether the top or
       middle or bottom of the graphic should be aligned with the
       baseline for the text line in which the IMG element appears. 

       With ALIGN=LEFT, the graphic will float down and over to the
       current left margin, and subsequent text will wrap around the
       right hand side of the graphic. Likewise for ALIGN=RIGHT, the
       graphic aligns with the current right margin and, and text wraps
       around the left. 




















Dave Raggett                                                          Page 138
HTML 3.0                                                       28th March 1995

Menu OPTIONs

   Permitted Context: SELECT
   Content Model: PCDATA 

   The OPTION element can only occur within a SELECT element. It
   represents a possible choice. It can only contain text, together
   with SGML entities for accented characters etc. 

   When the form is submitted, the NAME of the enclosing SELECT element
   is paired with the OPTION's VALUE attribute to contribute a
   name/value pair for the selection. Unselected options don't
   contribute to the form's submitted data. You can initialize the
   option to its selected state by including the SELECT attribute. 

   The SHAPE attribute is used for graphical menus to specify the
   region of the background image to be associated with this option. It
   uses the same definition as for the anchor element. 

Permitted Attributes

   ID 
       An SGML identifier used as the target for hypertext links or for
       naming particular elements in associated style sheets.
       Identifiers are NAME tokens and must be unique within the scope
       of the current document. 

   LANG 
       This is one of the ISO standard language abbreviations, e.g.
       "en.uk" for the variation of English spoken in the United
       Kingdom. It can be used by parsers to select language specific
       choices for quotation marks, ligatures and hypenation rules etc.
       The language attribute is composed from the two letter language
       code from ISO 639, optionally followed by a period and a two
       letter country code from ISO 3166. 

   CLASS 
       This a space separated list of SGML NAME tokens and is used to
       subclass tag names. By convention, the class names are
       interpreted hierarchically, with the most general class on the
       left and the most specific on the right, where classes are
       separated by a period. The CLASS attribute is most commonly used
       to attach a different style to some element, but it is
       recommended that where practical class names should be picked on
       the basis of the element's semantics, as this will permit other
       uses, such as restricting search through documents by matching
       on element class names. The conventions for choosing class names
       are outside the scope of this specification. 

   DISABLED
       When present, the option should be rendered as normal, but can't
       be modified by the user. Where practical the rendering should
       provide a cue that the option is disabled e.g. by graying out

Dave Raggett                                                          Page 139
HTML 3.0                                                       28th March 1995

       the text, changing the color of the background or similar. 

   ERROR
       This attribute specifies an error message explaining why the
       option is inappropriate. When this attribute is missing, the
       option can be assumed to be ok. User agents are recommended to
       provide a cue to indicate that the option is in error. 

   VALUE
       The string to be used together with the name attribute of the
       enclosing select element, when submitting the form. It defaults
       to the content of the OPTION element. 

   SELECTED
       When present, this attribute signifies that the option should be
       initialized in its selected state. It is an error for more than
       one option to be selected for single choice menus. 

   SHAPE
       This attribute is used within menus to define shaped hotzones
       associated with this option's value. The attribute value is a
       string taking one of the following forms:
       
       

       "default" 
           Used to define a default menu choice for the menu
           background. 

       "circle x, y, r" 
           Where x and y define the center and r specifies the radius. 

       "rect x, y, w, h" 
           Where x, y define the upper left corner and w, h define the
           width and height respectively 

       "polygon x1, y1, x2, y2, ..." 
           Given n pairs of x, y coordinates, the polygon is closed by
           a line linking the n'th point to the first. Intersecting
           polygons use the non-zero winding number rule to determine
           if a point lies inside the polygon. 

       If a pointer event occurs in a region where two or more shapes
       overlap, the distance from the point to the center of gravity of
       each of the overlapping shapes is computed and the closest one
       chosen. This feature is useful when you want lots of closely
       spaced hotzones, for example over points on a map, as it allows
       you to use simple shapes without worrying about overlaps. 

       Note: The x coordinate increases to the right, and the y
       coordinate increases downwards in the same way as IMG and image
       maps. If both numbers are integers, the coordinates are
       interpreted as pixel offsets from the upper left corner of the

Dave Raggett                                                          Page 140
HTML 3.0                                                       28th March 1995

       image. Otherwise, the coordinates are interpreted as scaled
       values in the range 0.0 to 1.0 across the image. Note the syntax
       is tolerant of repeated white space characters between tokens. 



















































Dave Raggett                                                          Page 141
HTML 3.0                                                       28th March 1995

Special Characters

   This section contains information of how user agents should treat
   control characters and other special characters. 

Character Data

   The characters between the tags represent text encoded according to
   ISO 8859/1 8-bit single-byte coded graphic character set known as
   Latin Alphabet No. 1, or simply Latin-1. There are 256 character
   positions in the Latin-1 encoding. Latin-1 includes characters from
   most Western European languages. It consists of the space character,
   186 characters that form a subset of the graphic characters in ISO
   6937/2 (1983), and four additional characters that are intended for
   inclusion in ISO 6937/2. For more information, see Character Sets 

   The lower 128 character positions include a space, 33 control
   characters, the 26 upper- and lowercase letters of the english
   alphabet, 10 numerals and 32 other printing characters This subset,
   functionally identical to ASCII, is defined by ISO 646 7-bit coded
   character set for information interchange, also known as the
   International Reference Version. ISO 646 is identical in most
   respect to the ANSI standard for ASCII (American Standard Code for
   Information Interchange). The only significant difference between
   ISO 646 and ASCII is the specific names assigned to the control
   characters which occupy positions 00-31 and 127 

   The upper 128 positions include a non-breaking space, a soft hyphen
   indicator, 93 graphical characters, 8 unassigned characters, and 25
   control characters. The non-breaking space and soft hyphen indicator
   are not recognized and interpreted by all HTML browsers, and their
   use is discouraged 

   There are 58 character positions which are occupied by control
   characters. See the discussion for details on the interpretation of
   control characters. Because certain special characters are subject
   to interpretation and special processing, information providers and
   browser implementors should follow these guidelines 

   Certain characters may not be accessible from your keyboard, or some
   part of your system (i.e. translation software) may not be equipped
   to deal with 8-bit character codes. HTML and many WWW browsers
   provide character entity references and numerical character
   references to facilitate the entry and interpretation of characters
   by name and by numerical position. 

   Because certain characters will be interpreted as markup, they
   should be"escaped"; that is, represented by markup -- numeric
   character or entity references. 

------------------------------------------------------------------------------
Special Characters


Dave Raggett                                                          Page 142
HTML 3.0                                                       28th March 1995

   Certain characters are taken to have special meaning within the
   context of an HTML document. There are two printing characters which
   may be interpreted by the browser to have an effect of the format of
   the text: 

Space

   *   Interpreted as a word space in all contexts except <PRE>. 

   *   Interpreted as a no-break space within <PRE>. 

   The character entities &ensp; and &emsp; denote an en space and an
   em space respectively, where an en space is half the point size and
   an em space is equal to the point size of the current font. For
   fixed pitch fonts, the user agent can treat the en space as being
   equivalent to a single space character, and the em space as being
   equuivalent to two space characters. 

Non-breaking Space (&nbsp;)

   This should be treated in the same way as the space character (ASCII
   character code 32 decimal), except that the user agent should never
   break lines at this point. It is useful when you want to ensure that
   neigbouring words always stay together and don't get split across
   lines. 

Hyphen

   *   Interpreted as a hyphen glyph in all contexts. 

   *   Interpreted as a potential word space by hyphenation engine. 

   The character entities &endash; and &emdash; denote dash marks with
   the same widths as the &ensp; and &emsp; entities respectively. 

------------------------------------------------------------------------------
Control Characters

   Control characters are non-printable characters that are typically
   used for communication and device control, as format effectors, and
   as information separators. 

   In SGML applications, the use of control characters is limited in
   order to maximize the chance of sucessful interchange over
   heterogenous networks and operating systems. In HTML, there are only
   three control characters which are used. The remaining 55 control
   characters are shunned and should not appear in an HTML document.
   The valid control characters and their interpretation are: 

Horizontal Tab (HT - 9 dec) 

   *   Interpreted as a word space in all contexts except <PRE>. 


Dave Raggett                                                          Page 143
HTML 3.0                                                       28th March 1995

   *   Within <PRE>, the tab should be interpreted to shift the
       horizontal column position to the next position which is a
       multiple of 8 on the same line; that is, col := (col+8) mod 8. 

Line Feed (LF - 10 dec)

   *   Interpreted as a word space in all contexts except <PRE>. 

   *   Within <PRE>, the tab should be interpreted as a shift to the
       start of a new line; that is, col := 0; row := row+1 

Carriage Return (CR - 13 dec) 

   *   Interpreted as a word space in all contexts except <PRE>. 

       

   *   Within <PRE>, the tab should be interpreted as a shift to the
       start of the line; that is, col := 0;

       

------------------------------------------------------------------------------
Numeric Character References 

   Any printing character within the 8-bit character encoding of ISO
   8859/1 (256 character positions) or the 7-bit character encoding of
   ISO 646 (128 character positions) may be represented within the text
   of an HTML document by a numeric character reference, e.g. &#233; is
   a small e with an acute accent. It is recommended that character
   entity references such as &eacute; are used in preference to
   numberic character references.  






















Dave Raggett                                                          Page 144
HTML 3.0                                                       28th March 1995

Security Considerations

   Anchors, embedded images, and all other elements which contain URIs
   as parameters may cause the URI to be dereferenced. In this case,
   the security considerations of the URI specification apply. 

   Documents may be constructed whose visible contents mislead the
   reader to follow a link to unsuitable or offensive material. 

   The MD attribute is useful when authors are concerned that a linked
   object may be subsequently changed to something other than intended.
   This attribute is used to specify a cryptographic checksum for the
   linked object to provide a check on its integrity.  









































Dave Raggett                                                          Page 145
HTML 3.0                                                       28th March 1995

<!SGML  "ISO 8879:1986"
--
        SGML Declaration for HyperText Markup Language (HTML).

--

CHARSET
         BASESET  "ISO 646:1983//CHARSET
                   International Reference Version
                   (IRV)//ESC 2/5 4/0"
         DESCSET  0   9   UNUSED
                  9   2   9
                  11  2   UNUSED
                  13  1   13
                  14  18  UNUSED
                  32  95  32
                  127 1   UNUSED
     BASESET   "ISO Registration Number 100//CHARSET
                ECMA-94 Right Part of
                Latin Alphabet Nr. 1//ESC 2/13 4/1"

         DESCSET  128  32   UNUSED
                  160  96    32

CAPACITY        SGMLREF
                TOTALCAP        200000
                GRPCAP          150000
  
SCOPE    DOCUMENT
SYNTAX   
         SHUNCHAR CONTROLS 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
                 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 127
         BASESET  "ISO 646:1983//CHARSET
                   International Reference Version
                   (IRV)//ESC 2/5 4/0"
         DESCSET  0 128 0
         FUNCTION
                  RE          13
                  RS          10
                  SPACE       32
                  TAB SEPCHAR  9
        

         NAMING   LCNMSTRT ""
                  UCNMSTRT ""
                  LCNMCHAR ".-"
                  UCNMCHAR ".-"
                  NAMECASE GENERAL YES
                           ENTITY  NO
         DELIM    GENERAL  SGMLREF
                  SHORTREF SGMLREF
         NAMES    SGMLREF
         QUANTITY SGMLREF

Dave Raggett                                                          Page 146
HTML 3.0                                                       28th March 1995

                  ATTSPLEN 2100
                  LITLEN   1024
                  NAMELEN  72    -- somewhat arbitrary; taken from
                                internet line length conventions --
                  PILEN    1024
                  TAGLEN   2100
                  GRPGTCNT 150
                  GRPCNT   64                   

FEATURES
  MINIMIZE
    DATATAG  NO
    OMITTAG  YES
    RANK     NO
    SHORTTAG YES
  LINK
    SIMPLE   NO
    IMPLICIT NO
    EXPLICIT NO
  OTHER
    CONCUR   NO
    SUBDOC   NO
    FORMAL   YES
  APPINFO    "SDA"  -- conforming SGML Document Access application
                    --
>
<!-- 
        $Id: html.decl,v 1.1 1995/03/07 05:50:34 connolly Exp $

        Author: Daniel W. Connolly <connolly@hal.com>

        See also: http://www.hal.com/%7Econnolly/html-spec
          http://info.cern.ch/hypertext/WWW/MarkUp/MarkUp.html
 -->




















Dave Raggett                                                          Page 147
HTML 3.0                                                       28th March 1995

Character Entity Set(s)

This section is undergoing revision ... 

   --In particular, we need to add a more complete list of character
   entities, e.g. for the characters below decimal 128 and missing
   codes such as currency signs. 

   The following entity names are used in HTML, always prefixed by
   ampersand (&) and followed by a semicolon as shown. 

   They represent particular graphic characters which have special
   meanings in places in the markup, or may not be part of the
   character set available to the writer. 

------------------------------------------------------------------------------
Numeric and Special Graphic Entities 

   The following table lists each of the supported characters specified
   in the Numeric and Special Graphic entity set, along with its name,
   syntax for use, and description. 

   This list is derived from "ISO 8879:1986//ENTITIES Numeric and
   Special Graphic//EN" however HTML does not provide support for the
   entire entity set. Only the entities listed below are supported. 

   
   Name             Syntax       Description            
   lt              &lt;        Less than sign
   gt              &gt;        Greater than sign
   amp             &amp;       Ampersand
   quot            &quot;      Double quote sign
   

------------------------------------------------------------------------------
ISO Latin 1 Character Entities 

   The following table lists each of the characters specified in the
   Added Latin 1 entity set, along with its name, syntax for use, and
   description. 

   This list is derived from "ISO 8879:1986//ENTITIES Added Latin
   1//EN", and HTML does provide support for the entire entity set. 

   
   Name            Syntax      Description            
   Aacute          &Aacute;    Capital A, acute accent
   Agrave          &Agrave;    Capital A, grave accent
   Acirc           &Acirc;     Capital A, circumflex accent
   Atilde          &Atilde;    Capital A, tilde
   Aring           &Aring;     Capital A, ring
   Auml            &Auml;      Capital A, dieresis or umlaut mark
   AElig           &AElig;     Capital AE dipthong (ligature)

Dave Raggett                                                          Page 148
HTML 3.0                                                       28th March 1995

   Ccedil          &Ccedil;    Capital C, cedilla
   Eacute          &Eacute;    Capital E, acute accent
   Egrave          &Egrave;    Capital E, grave accent
   Ecirc           &Ecirc;     Capital E, circumflex accent
   Euml            &Euml;      Capital E, dieresis or umlaut mark
   Iacute          &Iacute;    Capital I, acute accent
   Igrave          &Igrave;    Capital I, grave accent
   Icirc           &Icirc;     Capital I, circumflex accent
   Iuml            &Iuml;      Capital I, dieresis or umlaut mark
   ETH             &ETH;       Capital Eth, Icelandic
   Ntilde          &Ntilde;    Capital N, tilde
   Oacute          &Oacute;    Capital O, acute accent
   Ograve          &Ograve;    Capital O, grave accent
   Ocirc           &Ocirc;     Capital O, circumflex accent
   Otilde          &Otilde;    Capital O, tilde
   Ouml            &Ouml;      Capital O, dieresis or umlaut mark
   Oslash          &Oslash;    Capital O, slash
   Uacute          &Uacute;    Capital U, acute accent
   Ugrave          &Ugrave;    Capital U, grave accent
   Ucirc           &Ucirc;     Capital U, circumflex accent
   Uuml            &Uuml;      Capital U, dieresis or umlaut mark
   Yacute          &Yacute;    Capital Y, acute accent
   
   THORN           &THORN;     Capital THORN, Icelandic
   szlig           &szlig;     Small sharp s, German (sz ligature)
   
   aacute          &aacute;    Small a, acute accent
   agrave          &agrave;    Small a, grave accent
   acirc           &acirc;     Small a, circumflex accent
   atilde          &atilde;    Small a, tilde
   atilde          &atilde;    Small a, tilde
   auml            &auml;      Small a, dieresis or umlaut mark
   aelig           &aelig;     Small ae dipthong (ligature)
   ccedil          &ccedil;    Small c, cedilla
   eacute          &eacute;    Small e, acute accent
   egrave          &egrave;    Small e, grave accent
   ecirc           &ecirc;     Small e, circumflex accent
   euml            &euml;      Small e, dieresis or umlaut mark
   iacute          &iacute;    Small i, acute accent
   igrave          &igrave;    Small i, grave accent
   icirc           &icirc;     Small i, circumflex accent
   iuml            &iuml;      Small i, dieresis or umlaut mark
   eth             &eth;       Small eth, Icelandic
   ntilde          &ntilde;    Small n, tilde
   oacute          &oacute;    Small o, acute accent
   ograve          &ograve;    Small o, grave accent
   ocirc           &ocirc;     Small o, circumflex accent
   otilde          &otilde;    Small o, tilde
   ouml            &ouml;      Small o, dieresis or umlaut mark
   oslash          &oslash;    Small o, slash
   uacute          &uacute;    Small u, acute accent
   ugrave          &ugrave;    Small u, grave accent
   ucirc           &ucirc;     Small u, circumflex accent

Dave Raggett                                                          Page 149
HTML 3.0                                                       28th March 1995

   uuml            &uuml;      Small u, dieresis or umlaut mark
   yacute          &yacute;    Small y, acute accent
   thorn           &thorn;     Small thorn, Icelandic
   yuml            &yuml;      Small y, dieresis or umlaut mark
   

------------------------------------------------------------------------------
Numerical Character References 

   This list, sorted numerically, is derived from the ISO 8859/1 8-bit
   single-byte coded graphic character set: 

   
   Reference           Description
   &#00;-&#08;         Unused 
   &#09;               Horizontal tab
   &#10;               Line feed
   &#11;-&#31;         Unused
   
   &32;                Space
   &33;                Exclamation mark
   &34;                Quotation mark
   &35;                Number sign
   &36;                Dollar sign
   &37;                Percent sign
   &38;                Ampersand
   &39;                Apostrophe
   &40;                Left parenthesis
   &41;                Right parenthesis
   &42;                Asterisk
   &43;                Plus sign
   &44;                Comma
   &45;                Hyphen
   &46;                Period (fullstop)
   &47;                Solidus (slash)
   
   &#48; - &#57;       Digits 0-9
   
   &58;                Colon
   &59;                Semi-colon
   &60;                Less than
   &61;                Equals aign
   &62;                Greater than
   &63;                Question mark
   &64;                Commercial at
        
   &#65;-&#90;         Letters A-Z
   
   &91;                Left square bracket
   &92;                Reverse solidus (backslash)
   &93;                Right square bracket
   &95;                Horizontal bar
   &96;                Acute accent

Dave Raggett                                                          Page 150
HTML 3.0                                                       28th March 1995

   
   &#97;-&#122;        Letters a-z
   
   &123;               Left curly brace
   &124;               Vertical bar
   &125;               Right curly brace
   &126;               Tilde
   
   &#127;- &#160;      Unused
   
   &161;               Inverted exclamation
   &162;               Cent sign
   &163;               Pound sterling
   &164;               General currency sign
   &165;               Yen sign
   &166;               Broken vertical bar
   &167;               Section sign
   &168;               Umlaut (dieresis)
   &169;               Copyright
   &170;               Feminine ordinal
   &171;               Left angle quote, guillemotleft
   &172;               Not sign
   &173;               Soft hyphen
   &174;               Registered trademark
   &175;               Macron accent
   &176;               Degree sign
   &177;               Plus or minus
   &178;               Superscript two
   &179;               Superscript three
   &180;               Acute accent
   &181;               Micro sign
   &182;               Paragraph sign
   &183;               Middle dot
   &184;               Cedilla
   &185;               Superscript one
   &186;               Masculine ordinal
   &187;               Right angle quote, guillemotright
   &188;               Fraction one-fourth
   &189;               Fraction one-half
   &190;               Fraction three-fourths
   &191;               Inverted question mark
   
   &192;               Capital A, acute accent
   &193;               Capital A, grave accent
   &194;               Capital A, circumflex accent
   &195;               Capital A, tilde
   &196;               Capital A, ring
   &197;               Capital A, dieresis or umlaut mark
   &198;               Capital AE dipthong (ligature)
   &199;               Capital C, cedilla
   &200;               Capital E, acute accent
   &201;               Capital E, grave accent
   &202;               Capital E, circumflex accent

Dave Raggett                                                          Page 151
HTML 3.0                                                       28th March 1995

   &203;               Capital E, dieresis or umlaut mark
   &204;               Capital I, acute accent
   &205;               Capital I, grave accent
   &206;               Capital I, circumflex accent
   &207;               Capital I, dieresis or umlaut mark
   &208;               Capital Eth, Icelandic
   &209;               Capital N, tilde
   &210;               Capital O, acute accent
   &211;               Capital O, grave accent
   &212;               Capital O, circumflex accent
   &213;               Capital O, tilde
   &214;               Capital O, dieresis or umlaut mark
   
   &215;               Multiply sign
   
   &216;               Capital O, slash
   &217;               Capital U, acute accent
   &218;               Capital U, grave accent
   &219;               Capital U, circumflex accent
   &220;               Capital U, dieresis or umlaut mark
   &221;               Capital Y, acute accent
   
   &222;               Capital THORN, Icelandic
   &223;               Small sharp s, German (sz ligature)
   
   &224;               Small a, acute accent
   &225;               Small a, grave accent
   &226;               Small a, circumflex accent
   &227;               Small a, tilde
   &228;               Small a, tilde
   &229;               Small a, dieresis or umlaut mark
   &230;               Small ae dipthong (ligature)
   &231;               Small c, cedilla
   &232;               Small e, acute accent
   &233;               Small e, grave accent
   &234;               Small e, circumflex accent
   &235;               Small e, dieresis or umlaut mark
   &236;               Small i, acute accent
   &237;               Small i, grave accent
   &238;               Small i, circumflex accent
   &239;               Small i, dieresis or umlaut mark
   &240;               Small eth, Icelandic
   &241;               Small n, tilde
   &242;               Small o, acute accent
   &243;               Small o, grave accent
   &244;               Small o, circumflex accent
   &245;               Small o, tilde
   &246;               Small o, dieresis or umlaut mark
   
   &247;               Division sign
   
   &248;               Small o, slash
   &249;               Small u, acute accent

Dave Raggett                                                          Page 152
HTML 3.0                                                       28th March 1995

   &250;               Small u, grave accent
   &251;               Small u, circumflex accent
   &252;               Small u, dieresis or umlaut mark
   &253;               Small y, acute accent
   &254;               Small thorn, Icelandic
   &255;               Small y, dieresis or umlaut mark
   















































Dave Raggett                                                          Page 153
HTML 3.0                                                       28th March 1995

Math Entities

This list is in a very preliminary stage ...

   --I hope to use ISO names where practical, and want to ensure that
   names are meaningful, rather than cryptic. The character codes for
   common fonts will be included, although which fonts to include is
   still under review.-- 

   The following sets out the range of math symbols supported by HTML
   math, giving the HTML entity name, the corresponding LaTeX command
   name and a short description. Character codes are given in
   hexadecimal when available for the Postscript symbol set and HP's
   math-8 symbol set. 

Continuation dots - ellipsis

   
   &ldots;     \ldots    three dots on the baseline
   &cdots;     \cdots    three dots on same level as a minus sign
   &vdots;     \vdots    three vertical dots
   &ddots;     \ddots    diagonal dots (top left to bottom right)
   &dotfill;   \dotfill  like cdots but fills column in an array
   

Added Spacing

   
   &thinsp;    \,        thin space
   &sp;        \:        medium space
   &emsp;      \;        thick space
   &quad;      \quad     huge space
   

Lower case Greek Letters

                                         PS-Symbol Math-8
   &alpha;     \alpha        alpha          61      61
   &beta;      \beta         beta           62      62
   &gamma;     \gamma        gamma          67      63
   &delta;     \delta        delta          64      64
   &epsilon;   \epsilon      epsilon        --      65
   &vepsilon;  \varepsilon   var epsilon    65      3B
   &zeta;      \zeta         zeta           7A      66
   &eta;       \eta          eta            68      67
   &theta;     \theta        theta          71      68
   &vtheta;    \vartheta     var theta      --      79
   &iota;      \iota         iota           69      69
   &kappa;     \kappa        kappa          6B      6A
   &lambda;    \lambda       lambda         6C      6B
   &mu;        \mu           mu             6D      6C
   &nu;        \nu           nu             6E      6D
   &xi;        \xi           xi             78      6E

Dave Raggett                                                          Page 154
HTML 3.0                                                       28th March 1995

   &omicron;   ....          omicron        6F      6F
   &pi;        \pi           pi             70      70
   &varpi;     \varpi        var pi         76      7B
   &rho;       \rho          rho            72      71
   &varrho;    \varrho       var rho        --      --
   &sigma;     \sigma        sigma          73      72
   &vsigma;    \varsigma     var sigma      56      5B
   &tau;       \tau          tau            74      73
   &upsilon;   \upsilon      upsilon        75      74
   &phi;       \phi          phi            66      75
   &varphi;    \varphi       var phi        6A      7A
   &chi;       \chi          chi            63      76
   &psi;       \psi          psi            79      77
   &omega;     \omega        omega          77      78
   

   Note: LaTeX uses the latin letter o for omicron.  





































Dave Raggett                                                          Page 155
HTML 3.0                                                       28th March 1995

<!-- Standard ISO/WWW icons courtesy of Bert Bos and Kevin Hughes

    These can be used in place of default symbols for list items or as
    part of hypertext links, and save time needed to download images.
    Browsers can define them in terms of library images or as URL/URNs.
-->


<!ENTITY ftp SDATA "ftp" -- ftp server -->
<!ENTITY gopher SDATA "gopher" -- gopher server -->
<!ENTITY telnet SDATA "telnet" -- telnet connection -->
<!ENTITY archive SDATA "archive" -- archive server -->
<!ENTITY filing.cabinet SDATA "filing.cabinet" -- filing cabinet -->
<!ENTITY folder SDATA "folder" -- folder or directory -->
<!ENTITY fixed.disk SDATA "fixed.disk" -- fixed media drive -->
<!ENTITY disk.drive SDATA "disk.drive" -- removeable media drive -->
<!ENTITY document SDATA "document" -- unspecified document type -->
<!ENTITY unknown.document SDATA "unknown.document" -- unrecognised document type -->
<!ENTITY text.document SDATA "text.document" -- text/plain, text.html etc. -->
<!ENTITY binary.document SDATA "binary.document" -- binary data -->
<!ENTITY binhex.document SDATA "binhex.document" -- binhex format -->
<!ENTITY audio SDATA "audio" -- audio sequence -->
<!ENTITY film SDATA "film" -- film or animation, such as an MPEG movie -->
<!ENTITY image SDATA "image" -- photograph, drawing or graphic of any kind -->
<!ENTITY map SDATA "map" -- geographical or a schematic map -->
<!ENTITY form SDATA "form" -- fill-out form -->
<!ENTITY mail SDATA "mail" -- email messages -->
<!ENTITY parent SDATA "parent" -- parent of current document -->
<!ENTITY next SDATA "next" -- next document in current sequence -->
<!ENTITY previous SDATA "previous" -- previous document in current sequence -->
<!ENTITY home SDATA "home" -- home document -->
<!ENTITY toc SDATA "toc" -- table of contents -->
<!ENTITY glossary SDATA "glossary" -- glossary of terms etc. -->
<!ENTITY index SDATA "index" -- searchable index -->
<!ENTITY summary SDATA "summary" -- summary -->

<!ENTITY calculator SDATA "calculator" -- A calculator -->
<!ENTITY caution SDATA "caution" -- Warnign sign -->
<!ENTITY clock SDATA "clock" -- A clock -->
<!ENTITY compressed.document SDATA "compressed.document">
<!ENTITY diskette SDATA "diskette" -- A diskette -->
<!ENTITY display SDATA "display" -- A computer screen -->
<!ENTITY fax SDATA "fax" -- A fax machine -->
<!ENTITY mail.in SDATA "mail.in" -- mail-in tray -->
<!ENTITY mail.out SDATA "mail.out" -- mail-out tray -->
<!ENTITY mouse SDATA "mouse" -- mouse/pointing device -->
<!ENTITY printer SDATA "printer" -- hardcopy device -->
<!ENTITY tn3270 SDATA "tn3270" --tn3270 terminal session -->
<!ENTITY trash SDATA "trash" -- waste paper basket -->
<!ENTITY uuencoded.document SDATA "uuencoded.document" -- uuencoded data -->




Dave Raggett                                                          Page 156
HTML 3.0                                                       28th March 1995

<!--
        html3.dtd

        Document Type Definition for the HyperText Markup Language (HTML DTD)

        Draft: Fri 24-Mar-95 09:46:33

        Author: Dave Raggett <dsr@hplb.hpl.hp.com>

        W3O is developing a testbed browser to provide practical
        experience with HTML 3.0 before it becomes a standard.
        See:  http://www.w3.org/hypertext/WWW/Arena/

        This is an open process and comments are welcomed on the
        www-html mailing list.

        Please use the following MIME content type:
        
                Content-Type: text/html; version=3.0
                
        This will allow clients to distinguish HTML 3.0 from current
        HTML documents. This is most easily achieved by saving
        files with the extension ".html3" or ".ht3" so that servers
        can easily distinguish these files from HTML 2.0 files.
        
        The entity HTML.Recommended can be used to give a more rigorous
        version of the DTD suitable for use with SGML authoring tools.
        The default version of the DTD offers a laxer interpretation,
        e.g. allowing authors to omit leading <P> elements. You can
        switch on the more rigorous version of the DTD by including
        the following at the start of your HTML document.

         <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN//"
            [ <!ENTITY % HTML.Recommended "INCLUDE"> ] >


        Design Objectives:

        o   Backwards compatibility with 2.0

        o   Tightening up HTML.Recommended and
            moving more things to HTML.Deprecated

        o   Keep HTML - simple don't compete with CALS

        o   Make it practical for people to edit HTML 3.0
            documents directly, i.e. avoid long names.

        o   Tables, figures and math from HTML+
            with tweaks based on recent experience

        o   Client-side event handling for figures
            and graphical form selection menus

Dave Raggett                                                          Page 157
HTML 3.0                                                       28th March 1995


        o   Add limited presentational controls with
            a view to use of linked style sheets
            (style overrides are supported)

        o   Compatibility with ICADD as per Yuri's suggestions

        HTML 3.0 relies on linked style info to give authors
        control over the appearence of documents. Such info is
        placed in a linked style sheet, or as overrides in the
        HTML document head, using the STYLE element. The generic
        CLASS attribute can be used to subclass elements when
        you want to use a different style from normal, e.g. you
        might use <h2 class=bigcaps> for headers with enlarged
        capital letters. Note that the class attribute has a
        wider scope than just style changes, e.g. browsers could
        provide the means for searching through documents,
        restricting search according to element class values.

        The DTD contains a small number of attributes for direct
        control of basic alignment parameters; column widths for
        tables; support for custom bullets, sequence numbering for
        lists and headers; and text flow. These attributes offer
        control over appearence which would be inconvenient to
        express exclusively via associated style sheets.

        The MD attribute for each hypertext or inline link specifies a
        message digest such as MD5 for the linked object and is needed
        to ensure someone hasn't tampered with a linked document.

  History:
  
    24th March '95
    
    Changed ROLE->CLASS for HTML element
    Added dummy elements to fix problem with mixed
    content models for BODY, BLOCKQUOTE/BQ and FIG
    Dropped audio fields from FORMs
    Reinstated MIN/MAX for range fields
    Reinstated DISABLED and ERROR attributes for fields
  
    22nd March '95
    
    Changed from em to en units. The latter
    is a typographical unit = half point size
    Merged NEEDS into CLEAR for control of textflow
  
    21st March '95
    
    Added REL=Banner to LINK element
    Added BANNER element in place of <DIV CLASS=BANNER>
    Added RANGE and SPOT elements
    Added FN in place of <NOTE ROLE=FOOTNOTE>

Dave Raggett                                                          Page 158
HTML 3.0                                                       28th March 1995

    Changed ROLE->CLASS for NOTE element

    17th March '95
    
    Fixed bug in PRE content model
    Changed external references to omit trailling //
    Dropped <!DOCTYPE HTML [ ... ]> wrapper to avoid problems
      with "real" sgml parsers
    Added NOFLOW attribute to FIG and TABLE
    Fixed typo in IMG ALIGN attribute
    Made SELECT match IMG for graphic attributes
    Added decimal alignment for tabs and table cells
    Added ALIGN attribute to TEXTAREA for parity
      with IMG and INPUT, including ALIGN=LEFT etc.
    
    13th March '95
    
    Dropped MARK tag on advice from SGML Open
    Allowed spaces in table colspec attribute
    Changed ARRAY element
    Added CHOOSE tag to BOX element
    Cleaned up PRE content model
    Obsoleted tags incompatible with SGML
    
    6th March '95
    
    Added several tags to MATH: %mathface, %mathvec
    and improved ROOT, with new SQRT convience tag
    
    1st March '95
    
    Dropped align attribute from BR element
    Added indent attribute to TAB
    Added optional CREDIT to end of BQ
    Changed FIG to %body.content to allow headers
    
    22nd February '95
    
    Added align attribute, and dropped before, after, center and right
      attributes to clean up TAB element
    Added INS and DEL for legal documents    
    Added CREDIT to end of FIG element
    Dropped FN in favor of <NOTE ROLE=FootNote>
    
    9th Feburuary '95

    Dropped base attribute mechanism for scoping relative URLs
    Dropped nofold attribute for disabling whitespace folding
    Dropped border width attributes for FIG (-> style sheet)
    Dropped delims attribute from math BOX element
    Dropped stylistic attributes from OL such as inherit (-> stylesheet)
    Added baseline to list of valign attribute values for tables.
    Added DIV element for generic container class and static banners

Dave Raggett                                                          Page 159
HTML 3.0                                                       28th March 1995

    Added MARK element for marked range class
    Added closed set of LINK REL values for toolbars
    Added numbering attributes to headers
    Added bullet attributes to headers
    Added TERM element to math for style sheet control of term rendering
    Changed to imagemap=URI for server-side event handling for FIG/OVERLAY
    Changed delimiter attributes for math arrays
    Changed ROOT element for maths to allow an arbitrary radix
    Simplified numbering attributes for ordered lists
    Simplified STYLE element to leave binding to style language
-->

<!ENTITY % HTML.Version
        "-//IETF//DTD HTML 3.0//EN"

        -- Typical usage:

            <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
            <html>
            ...
            </html>
        --
        >

<!--================== Flags for Marked Sections ==========================-->

<!ENTITY % HTML.Recommended "IGNORE"
        -- Certain features of the language are necessary for compatibility
           with widespread usage, but they may compromise the structural
           integrity of a document. This feature test entity enables
           a more prescriptive document type definition that eliminates
           the above features.
        -->

<![ %HTML.Recommended [
        <!ENTITY % HTML.Deprecated "IGNORE">
]]>

<!ENTITY % HTML.Deprecated "INCLUDE"
        -- Certain features of the language are necessary for compatibility
           with earlier versions of the specification, but they tend
           to be used an implemented inconsistently, and their use is
           deprecated. This feature test entity enables a document type
           definition that eliminates these features.
        -->
        
<!ENTITY % HTML.Obsoleted "IGNORE"
        -- The XMP, LISTING and PLAINTEXT tags are incompatible with SGML
           and derive from very early versions of HTML. They require non-
           standard parsers and will cause problems for processing
           documents with standard SGML tools.
        -->


Dave Raggett                                                          Page 160
HTML 3.0                                                       28th March 1995

<!--================== Imported Names =====================================-->

<!ENTITY % Content-Type "CDATA"
        -- meaning a MIME content type, as per RFC1521
        -->

<!ENTITY % HTTP-Method "GET | POST"
        -- as per HTTP specification
        -->

<!ENTITY % URI "CDATA"
        -- The term URI means a CDATA attribute
           whose value is a Uniform Resource Identifier,
           as defined by
        "Uniform Resource Identifiers" by Tim Berners-Lee
        aka http://info.cern.ch/hypertext/WWW/Addressing/URL/URI_Overview.html
        aka RFC 1630

        Note that CDATA attributes are limited by the LITLEN
        capacity (1024 in the current version of html.decl),
        so that URIs in HTML have a bounded length.

        -->

<!ENTITY % REAL "CDATA" -- real numbers (not in SGML) -->

<!ENTITY % SHAPE "CDATA" 
    -- Shape of hotzone in image.

       All coordinates are assumed to be numbers in the range 0 to 1
       and interpreted as fractional width/height and measured from
       the top left corner of the associated image.

       The attribute value is a string taking one of the following forms:
       
                "default"
                
       Used to define a default link for the figure background.

            "circle x, y, r" 

       (x, y) define the center and r the radius.

            "rect x, y, w, h"

       (x, y) defines upper left, and w and h the width and height.

            "polygon x1, y1, x2, y2, ..."

       Given n pairs of x, y coordinates, the polygon is closed by a
       line linking the n'th point to the first. Intersecting polygons
       use the non-zero winding number rule to determine if a point lies
       inside the polygon.I

Dave Raggett                                                          Page 161
HTML 3.0                                                       28th March 1995

    --
>

<!-- 3.0 Parameter Entities -->

<!ENTITY % heading "H1|H2|H3|H4|H5|H6">

<![ %HTML.Obsoleted [
    <!ENTITY % preformatted "PRE | XMP | LISTING">
]]>


<![ %HTML.Deprecated [
    <!ENTITY % list "UL | OL | DIR | MENU">
    <!ENTITY % blockquote "BLOCKQUOTE | BQ">
]]>

<!ENTITY % list "UL | OL">

<!ENTITY % blockquote "BQ">

<!ENTITY % preformatted "PRE">


<!-- The CLASS attribute is used to subclass HTML elements for
     rendering purposes, when used with style sheets, e.g. DSSSL lite -->

<!ENTITY % attrs  -- common attributes for elements --
        'id       ID      #IMPLIED -- as target for hrefs (link ends) --
         lang     CDATA   "en.us"  -- ISO language, country code --
         class    NAMES   #IMPLIED -- for subclassing elements --'>

<!-- SGML standard forces different NAMES for all attribute values
     in the same element, regardless of the attribute name! As a result
     CDATA is used for CLEAR attribute to avoid clash with ALIGN attribute.-->

<!--
When text flows around a figure or table in the margin, you sometimes want
to start an element like a header, paragraph or list below the figure rather
than alongside it. The CLEAR attribute allows you to move down unconditionally:

        clear=left          move down until left margin is clear
        clear=right         move down until right margin is clear
        clear=all           move down until both margins are clear

Alternatively, you can decide to place the element alongside the figure just
so long as there is enough room. The minimum width needed is specified as:

        clear="40 en"       move down until there is at least 40 en units free
        clear="100 pixels"  move down until there is at least 100 pixels free
        
The style sheet (or browser defaults) may provide default minimum widths for
each class of block-like elements.

Dave Raggett                                                          Page 162
HTML 3.0                                                       28th March 1995

-->

<!ENTITY % needs -- Attributes for controlling text flow. Used in headers
                    and other elements to guarantee sufficient room --
        'clear  CDATA #IMPLIED'>

<!--
    The following attribute may be included where ever a URL can be given:

    md      message digest e.g. md="md5:jV2OfH+nnXHU8bnkPAad/mSQlTDZ"
            where the digest is base64 encoded and preceded by a prefix
            denoting the algorithm (in this case MD5).
-->

<!ENTITY % url.link -- Attributes associated with URL based links --
        "md     CDATA  #IMPLIED  -- message digest for linked object --">

<!--================ Character mnemonic entities ==========================-->

<!-- The HTML list of Latin-1 entities includes the full range
     of characters in widely available Latin-1 fonts, and as such
     is a mixture of ISOlat1 and other ISO publishing symbols -->

<!ENTITY % HTMLlat1 PUBLIC
  "-//IETF//ENTITIES Added Latin 1 for HTML//EN">
%HTMLlat1;

<!--================ Entities for special symbols =========================-->

<!ENTITY emsp   SDATA "[emsp  ]" -- em space -->
<!ENTITY ensp   SDATA "[ensp  ]" -- en space (1/2-em) -->
<!ENTITY mdash  SDATA "[ndash ]" -- em dash -->
<!ENTITY ndash  SDATA "[ndash ]" -- en dash (1/2-em) -->
<!ENTITY nbsp   SDATA "[nbsp  ]" -- non breaking space -->
<!ENTITY shy    SDATA "[shy   ]" -- soft hyphen -->
<!ENTITY copy   SDATA "[copy  ]" -- copyright sign -->
<!ENTITY trade  SDATA "[trade ]" -- trade mark sign -->
<!ENTITY reg    SDATA "[reg   ]" -- registered sign -->

<!--================ Entities for standard icons ==========================-->

<!-- a range of standard icons such as &folder; for use
     in speeding up display of directory listings etc. -->

<!ENTITY % HTMLicons PUBLIC
  "-//IETF//ENTITIES icons for HTML//EN">
%HTMLicons;

<!--================ Entities for math symbols ============================-->

<!-- ISO subset chosen for use with the widely available Adobe math font -->

<!ENTITY % HTMLmath PUBLIC

Dave Raggett                                                          Page 163
HTML 3.0                                                       28th March 1995

  "-//IETF//ENTITIES Math and Greek for HTML//EN">
%HTMLmath;

<!--=================== Text Markup =======================================-->

<!ENTITY % font " U | S | TT | I | BIG | SMALL">

<!ENTITY % phrase "EM | STRONG | CODE | SAMP | KBD | VAR | CITE">

<!ENTITY % misc "Q | LANG | AU | DFN | PERSON | ACRONYM | ABBREV | INS | DEL">

<!ENTITY % special "TAB | MATH | A | IMG | BR">

<!ENTITY % notmath "%font | %phrase | %special | %misc">

<!ENTITY % text "#PCDATA | SUB | SUP | B | %notmath">


<!ENTITY % pre.exclusion "TAB|MATH|IMG|BIG|SMALL|SUB|SUP">

<!ELEMENT (%font|B|%phrase|%misc) - - (%text)+>
<!ATTLIST (%font|B|%phrase|%misc) %attrs;>

<!-- Subscripts and superscripts. The ALIGN attribute is only used for math -->

<!ELEMENT (SUB|SUP) - - (%text)+>
<!ATTLIST (SUB|SUP)
        %attrs;
        align (left|center|right) #IMPLIED
        >

<!-- Forced line break -->

<!ELEMENT BR    - O EMPTY>
<!ATTLIST BR
        %attrs;
        %needs; -- for control of text flow --
        >

<!-- Named left, center and right tab stops (independent of '\t' char) -->

<!ELEMENT TAB - O EMPTY>
<!ATTLIST TAB
        id       ID       #IMPLIED  -- defines named tab stop --
        indent   NUMBER   0         -- en units before new tab stop --
        to       IDREF    #IMPLIED  -- jump to named tab stop --
        align   (left|center|right|decimal) left
        dp      CDATA     #IMPLIED  -- decimal point e.g. dp="," --
        >

<!--================== Link Markup ========================================-->

<!--

Dave Raggett                                                          Page 164
HTML 3.0                                                       28th March 1995

     With HTML 3.0 you can use ID attributes on most elements for named
     link ends. The use of the NAME attribute on anchors is deprecated.

     Do we want to support arbitrary elements for link starts? This would
     involve adding HREF and related attributes to most elements.
-->

<![ %HTML.Deprecated [
    <!ENTITY % linkName "name CDATA #IMPLIED -- named link end --">
]]>

<!ENTITY % linkName "">


<!ENTITY % ToolBar "home|toc|index|glossary|copyright|
                    up|previous|next|help|bookmark"

        -- LINK RELationship values which are used to create toolbar
           buttons or menu items for navigation, where toc stands
           for table of contents and bookmark provides for an open
           ended set of links, i.e. you can use multiple bookmarks
           for key entry points. Use the optional TITLE attribute
           to override default names.
        -->

<!ENTITY % linkType "NAME"
        -- A definitive list will be specified at a later date.

           They are used

                a) by stylesheets to control how collections of
                   html nodes are rendered into printed documents

                b) for document specific toolbars/menus when used
                   with the LINK element in document head:

                    "home|toc|index|glossary|copyright|
                           up|previous|next|help|bookmark"

                   where toc stands for table of contents and
                   bookmark provides for an open ended set of links,
                   i.e. you can use several bookmarks for key entry
                   points. Use the optional TITLE attribute to
                   override default names.

                c) for hypertext paths or guided tours,
                   with REL=NODE and REL=PATH. 

                d) to make a link to a style sheet, e.g. rel=stylesheet
                   (used only with the LINK element).
                   
                e) to make a link to a separate banner, e.g. rel=banner
                   (used only with the LINK element).

Dave Raggett                                                          Page 165
HTML 3.0                                                       28th March 1995

        -->


<!ENTITY % linkExtraAttributes -- URN moved to %url.link --
       "rel %linkType #IMPLIED -- forward relationship type --
        rev %linkType #IMPLIED -- reversed relationship type
                                  to referent data --
        title   CDATA #IMPLIED -- advisory only --
        methods NAMES #IMPLIED -- supported public methods of the object:
                                        TEXTSEARCH, GET, HEAD, ... --
        ">

<![ %HTML.Deprecated [
    <!ENTITY % A.content "(%heading|%text)+">
]]>

<!ENTITY % A.content   "(%text)+">

<!ELEMENT A     - - %A.content -(A)>

<!ATTLIST A
        %attrs;
        href   %URI;  #IMPLIED
        %url.link;    -- standard link attributes --
        %linkName;     -- name attribute is deprecated; use ID instead --
        shape %SHAPE; #IMPLIED -- for shaped hotzones in FIGs --
        %linkExtraAttributes;
        >

<!--=================== Images ============================================-->

<!-- Desired widths are used for negotiating image size
     with the module responsible for painting the image.
     align=left or right cause image to float to margin
     and for subsequent text to wrap around image -->

<!ELEMENT IMG    - O EMPTY --  Embedded image -->
<!ATTLIST IMG
        %attrs;
        src  %URI;  #REQUIRED  -- URI of image to embed --
        %url.link;             -- standard link attributes --
        alt CDATA   #IMPLIED   -- for display in place of image --
        align  (top|middle|bottom|left|right) top -- relative to baseline
        --         width  NUMBER #IMPLIED -- desired width in en's or pixels --
        height NUMBER #IMPLIED -- desired height in en's or pixels --
        units  (en|pixels) pixels -- units for width and height --
        ismap (ismap) #IMPLIED -- pass clicks to server --
        >

<!--=================== Paragraphs=========================================-->

<!ELEMENT P     - O (%text)+>
<!ATTLIST P

Dave Raggett                                                          Page 166
HTML 3.0                                                       28th March 1995

        %attrs;
        align  (left|center|right|justify) #IMPLIED
        %needs; -- for control of text flow --
        nowrap (nowrap) #IMPLIED -- disable wordwrap --
        >

<!--=================== Headings, Titles, Sections ========================-->

<!ELEMENT HR    - O EMPTY -- customizable horizontal rule -->
<!ATTLIST HR
        %attrs;
        src     %URI;   #IMPLIED -- URI of custom rule graphic --
        %url.link;               -- standard link attributes --
        %needs; -- for control of text flow --
        >

<!--
  Headers can be numbered, although this is a matter for style sheets.
  The style sheet controls the numbering style:

     a) whether the parent numbering is inherited, e.g.  5.i.c
        where 5 is the current sequence number for H1 headers, and
        1 is the number for H2 headers and 3 for H3 headers.

     b) what style is used for current sequence number
        e.g. arabic, upperalpha, loweralpha, upperroman, lowerroman
        or a numbering scheme appropriate for the current language

  The skip attribute is used to skip over sequence numbers for items
  which have been left out of the list, e.g. skip=3 advances the
  sequence number past 3 omitted items. The seqnum sets the sequence
  number to a specified value. Note that the style sheet may take
  advantage of the sequence number for higher level headers.

  The dingbat or src attributes may be used to specify a bullet like
  image to be placed adjacent to the header. Defining this in the
  header element simplifies the document markup and avoids the need
  to use the clear or needs attribute in the following element to
  prevent it flowing around this image.
-->

<!ELEMENT ( %heading )  - -  (%text;)+>
<!ATTLIST ( %heading )
        %attrs;
        align  (left|center|right|justify) #IMPLIED
        %needs; -- for control of text flow --
        seqnum   NUMBER   #IMPLIED  -- starting sequence number --
        skip     NUMBER   0         -- skip seq nums for missing items --
        dingbat  ENTITY   #IMPLIED  -- dingbat entity from HTMLicons --
        src      (%URI;)  #IMPLIED  -- bullet defined by graphic --
        %url.link;                  -- standard link attributes --
        nowrap   (nowrap)  #IMPLIED -- disable wordwrap --
        >

Dave Raggett                                                          Page 167
HTML 3.0                                                       28th March 1995


<!ELEMENT TITLE - -  (#PCDATA)
          -- The TITLE element is not considered part of the flow of text.
             It should be displayed, for example as the page header or
             window title.
          -->

<!--=================== Text Flows ========================================-->

<!ENTITY % block
     "P | %list | DL
        | %preformatted
        | %blockquote
        | FORM | ISINDEX | FN
        | TABLE | FIG | NOTE">

<!--
  ((%block)* | (%text)*) would be much nicer as it would avoid the need
  for a <P> tag when all you want is a few words of text. The problem
  is that it also prevents: "<LI> <P>some text" since it forbids PCDATA
  and hence the white space between the <LI> and the <P>.
-->

<![ %HTML.Recommended [
    <!ENTITY % flow "(%block)*">
]]>

<!ENTITY % flow "(%text | %block)*">

<!ELEMENT PRE - - (%text)* -(%pre.exclusion)>

<!ATTLIST PRE
        %attrs;
        width NUMBER #implied
        %needs; -- for control of text flow --
        >

<![ %HTML.Obsoleted [

<!ENTITY % literal "CDATA"
        -- special non-conforming parsing mode where
           the only markup signal is the end tag
           in full. This will cause problems for
           standard SGML tools!
        -->

<!ELEMENT XMP - -  %literal>
<!ELEMENT LISTING - -  %literal>
<!ELEMENT PLAINTEXT - O %literal>

]]>

<!--=================== Lists =============================================-->

Dave Raggett                                                          Page 168
HTML 3.0                                                       28th March 1995


<!ELEMENT DL    - -  (LH?, (DT|DD)+) -- this is perhaps too lax? -->
<!ATTLIST DL
        %attrs;
        %needs; -- for control of text flow --
        compact (compact) #IMPLIED -- more compact style --
        >

<!ELEMENT DT    - O  (%text)+>
<!ELEMENT DD    - O  %flow;>
<!ATTLIST (DT|DD)
        %attrs;
        %needs; -- for control of text flow --
        >


<!ELEMENT (OL|UL) - -  (LH?, LI+) -- should we allow a list header ? -->

<!-- style sheet controls numbering style
    a) whether the parent numbering is inherited, e.g.  5.1.c
    b) what style is used for current sequence number
        e.g. arabic, upperalpha, loweralpha, upperroman, lowerroman
        or a numbering scheme for the current language
-->
<!ATTLIST OL
        %attrs;
        %needs; -- for control of text flow --
        continue (continue)  #IMPLIED   -- don't restart sequence number --
        seqnum    NUMBER     #IMPLIED   -- starting sequence number --
        compact (compact)    #IMPLIED   -- reduced interitem spacing --
        >

<!-- Unordered lists:

    o   single or multicolumn with
        horizontal or vertical wrapping

    o   plain or bulletted list items

    o   bullets can be customised via:
            - entities (dingbats in HTMLicons)
            - external graphic via URL
            - individual attributes on LI tags
-->
<!ATTLIST UL
        %attrs;
        %needs; -- for control of text flow --
        wrap (vert|horiz|none) none -- multicolumn list style --
        plain   (plain)  #IMPLIED   -- suppress bullets --
        dingbat  ENTITY  #IMPLIED   -- dingbat entity from HTMLicons --
        src     (%URI;)  #IMPLIED   -- bullet defined by graphic --
        %url.link;                  -- standard link attributes --
        compact (compact) #IMPLIED  -- reduced interitem spacing --

Dave Raggett                                                          Page 169
HTML 3.0                                                       28th March 1995

        >

<!ELEMENT LH - O (%text;)+ -- list header -->
<!ATTLIST LH %attrs;>

<!--
    For unordered lists, you can override the standard bullet with
    a custom graphic specified via a URI e.g. src="splash.gif" or
    a reference to one of the HTMLicons graphics e.g. dingbat=folder

    The skip attribute is used with ordered lists to skip over sequence
    numbers for items which have been left out of the list, e.g. skip=3
    advances the sequence number past 3 omitted items.
-->

<!ELEMENT LI - O %flow; -- list item -->
<!ATTLIST LI
        %attrs;
        %needs; -- for control of text flow --
        dingbat ENTITY #IMPLIED -- dingbat entity from HTMLicons --
        src  (%URI;) #IMPLIED   -- custom bullet graphic --
        %url.link;              -- standard link attributes --
        skip NUMBER 0           -- skip seq nums for missing items --
        >

<!-- DIR and MENU are now subsumed by UL with type=plain. Use the
     wrap attribute to control wrapping style for multicolumn lists -->

<![ %HTML.Deprecated [
    <!ELEMENT (DIR|MENU) - - (LI)+ -(%block)>
    <!ATTLIST (DIR|MENU)
        compact (compact) #IMPLIED>
]]>

<!--=================== Document Body =====================================-->

<![ %HTML.Recommended [
        <!ENTITY % body.content "(DIV|%heading|%block|HR|ADDRESS)*"
        -- <h1>Heading</h1>
           <p>Text ...
                is preferred to
           <h1>Heading</h1>
           Text ...
        -->
]]>

<!ENTITY % body.content "(DIV | %heading | %text | %block | HR | ADDRESS)*">

<!ELEMENT BODY O O  (BANNER?, BODYTEXT) +(SPOT)>
<!ATTLIST BODY
        %attrs;
        background %URI; #IMPLIED  -- texture tile for document background --
        >

Dave Raggett                                                          Page 170
HTML 3.0                                                       28th March 1995


<!ELEMENT BODYTEXT O O %body.content -- dummy element -->

<!-- 
  The BANNER element is used for a banner section which appears at
  the top of the window and doesn't scroll with window contents.
  This can be used for corporate logos, copyright statements and
  disclaimers, as well as customized navigation/search controls.
-->
<!ELEMENT BANNER - - %body.content>
<!ATTLIST BANNER %attrs; >

<!-- SPOT is used to insert IDs at arbitrary places
     e.g. for end points of a marked range (see RANGE) -->
<!ELEMENT SPOT - O EMPTY>
<!ATTLIST SPOT id ID #REQUIRED>

<!ELEMENT (%blockquote) - - (BODYTEXT, CREDIT?)>
<!ATTLIST (%blockquote)
        %attrs;
        %needs; -- for control of text flow --
        nowrap   (nowrap)  #IMPLIED -- disable wordwrap --
        >

<!ENTITY % address.content "((%text;)* | P*)">

<!ELEMENT ADDRESS - - %address.content>
<!ATTLIST ADDRESS
        %attrs;
        %needs; -- for control of text flow --
        >
        
<!--
  DIV can be used with the CLASS attribute to represent different
  kinds of container, e.g. chapter, section, abstract, appendix.
-->

<!ELEMENT DIV - - %body.content>
<!ATTLIST DIV
        %attrs;
        %needs; -- for control of text flow --
        align   (left|center|right) left -- alignment of following text --
        nowrap   (nowrap)  #IMPLIED -- disable wordwrap --
        >

<!--================ Forms ===============================================-->

<!--
    As HTML 2.0 plus a few extensions:

        a)  A RANGE control which varies between pair of values
            specified with the size attribute, e.g. SIZE="1, 10"


Dave Raggett                                                          Page 171
HTML 3.0                                                       28th March 1995

        b)  FILE widget for uploading one or more files to a server

        c)  SCRIBBLE on image widget that sends the "ink" to the server

        d)  SUBMIT/RESET buttons can now be customised with an image.
            This subsumes the IMAGE type which is now deprecated.

        e)  Graphical SELECTion menus are now supported, using
            the new SHAPE attribute on OPTION elements.

    Further extensions are in the pipeline (e.g. table entry,
    multiple data formats for textarea fields and client-side
    scripts with custom widgets) but will have to wait until
    the backlog of implementation work diminishes.
-->

<!ELEMENT FORM - - %body.content -(FORM) +(INPUT|SELECT|TEXTAREA)>
<!ATTLIST FORM
        action %URI #REQUIRED -- server-side form handler --
        method (%HTTP-Method) GET -- see HTTP specification --
        enctype %Content-Type; "application/x-www-form-urlencoded"
        script %URI #IMPLIED -- link to client-side script --
        >

<![ %HTML.Deprecated [
    <!ENTITY % InputType "(TEXT | PASSWORD | CHECKBOX | RADIO | SUBMIT
                   | RESET | RANGE | FILE | SCRIBBLE | HIDDEN | IMAGE)">
]]>

<!ENTITY % InputType "(TEXT | PASSWORD | CHECKBOX | RADIO | SUBMIT
                   | RESET | RANGE | FILE | SCRIBBLE | HIDDEN)">

<!ELEMENT INPUT - O EMPTY>
<!ATTLIST INPUT
        %attrs;
        type %InputType TEXT
        name  NAME  #IMPLIED       -- required for all but submit and reset --         
        value CDATA #IMPLIED       -- required for radio buttons & checkboxes --
        disabled (disabled) #IMPLIED -- read-only fields --
        error CDATA #IMPLIED       -- why field is in error --
        checked (checked) #IMPLIED -- for radio buttons and check boxes --
        size NUMBER #IMPLIED       -- visible width of TEXT fields --
        maxlength NUMBER #IMPLIED  -- max number of chars for TEXT fields --
        min %REAL #IMPLIED         -- lower limit for RANGE fields --
        max %REAL #IMPLIED         -- upper limit for RANGE fields --
        accept CDATA #IMPLIED      -- list of MIME types for file fields --
        src   %URI  #IMPLIED       -- for fields with background images --
        %url.link;                 -- standard link attributes --
        align  (top|middle|bottom|left|right) top
        >

<!--
  SRC attribute added for graphical selection menus

Dave Raggett                                                          Page 172
HTML 3.0                                                       28th March 1995

  The WIDTH, HEIGHT and UNITS attributes apply to the
  image specified by the SRC attribute.
 -->

<!ELEMENT SELECT - - (OPTION+) -(INPUT|TEXTAREA|SELECT)>
<!ATTLIST SELECT
        %attrs;
        name CDATA #REQUIRED
        multiple (multiple) #IMPLIED
        disabled (disabled) #IMPLIED -- read-only menu --
        error CDATA #IMPLIED   -- why selections are in error --
        src  %URI  #IMPLIED    -- for graphical selection menus --
        %url.link;             -- standard link attributes --
        width  NUMBER #IMPLIED -- desired width of in en's or pixels --
        height NUMBER #IMPLIED -- desired height in en's or pixels --
        units  (en|pixels) pixels -- units for width and height --
        align  (top|middle|bottom|left|right) top
        >

<!ELEMENT OPTION - O (#PCDATA)>
<!ATTLIST OPTION
        %attrs;
        selected (selected) #IMPLIED
        value  CDATA  #IMPLIED -- default to element content --
        shape %SHAPE; #IMPLIED -- for graphical selection menus --
        disabled (disabled) #IMPLIED -- unselectable option --
        error CDATA #IMPLIED   -- why this choice is in error --
        >

<!--
  Multi-line text input field. align=left or right
  causes the field to float to margin and for
  subsequent text to wrap around the field.
-->
     
<!ELEMENT TEXTAREA - - (#PCDATA) -(INPUT|TEXTAREA|SELECT)>
<!ATTLIST TEXTAREA
        %attrs;
        name CDATA #REQUIRED
        rows NUMBER #REQUIRED
        cols NUMBER #REQUIRED
        disabled (disabled) #IMPLIED -- read-only field --
        error CDATA #IMPLIED         -- why field is in error --
        align  (top|middle|bottom|left|right) top
        >

<!--======================= Captions ======================================-->

<!ELEMENT CAPTION - - (%text;)+ -- table or figure caption -->
<!ATTLIST CAPTION
        %attrs;
        align (top|bottom|left|right) #IMPLIED
        >

Dave Raggett                                                          Page 173
HTML 3.0                                                       28th March 1995

<!--======================= Tables ========================================-->

<!--
    Tables and figures can be aligned in several ways:

    bleedleft   flush left with the left (window) border
    left        flush left with the left text margin
    center      centered (text flow is disabled for this mode)
    right       flush right with the right text margin
    bleedright  flush right with the right (window) border
    justify     when applicable the table/figure should stretch
                to fill space between the text margins

    Note: text will flow around the table or figure if the browser
    judges there is enough room and the alignment is not centered
    or justified. The table or figure may itself be part of the
    text flow around some earlier figure. You can in this case use
    the clear or needs attributes to move the new table or figure
    down the page beyond the obstructing earlier figure. Similarly,
    you can use the clear or needs attributes with other elements
    such as headers and lists to move them further down the page.
-->

<!ENTITY % block.align
        "align  (bleedleft|left|center|right|bleedright|justify) center">

<!--
    The HTML 3.0 table model has been chosen for its simplicity
    and the ease in writing filters from common DTP packages.

    By default the table is automatically sized according to the
    cell contents and the current window size. Specifying the columns
    widths using the colspec attribute allows browsers to start
    displaying the table without having to wait for last row.

    The colspec attribute is a list of column widths and alignment
    specifications. The columns are listed from left to right with
    a capital letter followed by a number, e.g. COLSPEC="L20 C8 L40".
    The letter is L for left, C for center, R for right alignment of
    cell contents. J is for justification, when feasible, otherwise
    this is treated in the same way as L for left alignment.
    Column entries are delimited by one or more space characters.
    
    The number specifies the width in en's, pixels or as a
    fractional value of the table width, as according to the
    associated units attribute. This approach is more compact
    than used with most SGML table models and chosen to simplify
    hand entry. The width attribute allows you to specify the
    width of the table in pixels, en units or as a percentage
    of the space between the current left and right margins.

    To assist with rendering to speech, row and column headers
    can be given short names using the AXIS attribute. The AXES

Dave Raggett                                                          Page 174
HTML 3.0                                                       28th March 1995

    attribute is used to explicitly specify the row and column
    names for use with each cell. Otherwise browsers can follow
    up columns and left along rows (right for some languages)
    to find the corresponding header cells.

    Table content model: Braille limits the width of tables,
    placing severe limits on column widths. User agents need
    to render big cells by moving the content to a note placed
    before the table. The cell is then rendered as a link to
    the corresponding note.

    To assist with formatting tables to paged media, authors
    can differentiate leading and trailing rows that are to
    be duplicated when splitting tables across page boundaries.
    The recommended way is to subclass rows with the CLASS attribute
    For example: <TR CLASS=Header>, <TR CLASS=Footer> are used for
    header and footer rows. Paged browsers insert footer rows at
    the bottom of the current page and header rows at the top of
    the new page, followed by the remaining body rows.
-->

<!ELEMENT TABLE - - (CAPTION?, TR*) -- mixed headers and data -->
<!ATTLIST TABLE
        %attrs;
        %needs; -- for control of text flow --
        border (border) #IMPLIED -- draw borders --
        colspec CDATA   #IMPLIED -- column widths and alignment --
        units  (en|pixels|relative) en -- units for column widths --
        dp      CDATA   #IMPLIED -- decimal point e.g. dp="," --
        width NUMBER    #IMPLIED -- absolute or percentage width --
        %block.align;  -- horizontal alignment --
        noflow (noflow) #IMPLIED -- noflow around table --
        nowrap (nowrap) #IMPLIED -- don't wrap words --
        >

<!ENTITY % cell "TH | TD">
<!ENTITY % horiz.align "left|center|right|justify">
<!ENTITY % vert.align  "top|middle|bottom|baseline">

<!--
    Browsers should tolerate an omission of the first <TR>
    tag as it is implied by the context. Missing trailing
    <TR>s implied by rowspans should be ignored.

    The alignment attributes act as defaults for rows
    overriding the colspec attribute and being in turn
    overridden by alignment attributes on cell elements.
    Use valign=baseline when you want to ensure that text
    in different cells on the same row is aligned on the
    same baseline regardless of fonts. It only applies
    when the cells contain a single line of text.
-->


Dave Raggett                                                          Page 175
HTML 3.0                                                       28th March 1995

<!ELEMENT TR - O (%cell)* -- row container -->
<!ATTLIST TR
        %attrs;
        align  (%horiz.align) #IMPLIED -- horizontal alignment --
        valign (%vert.align)  top  -- vertical alignment --
        dp     CDATA     #IMPLIED  -- decimal point e.g. dp="," --
        nowrap (nowrap)  #IMPLIED  -- don't wrap words --
        >

<!--
    Note that table cells can include nested tables.
    Missing cells are considered to be empty, while
    missing rows should be ignored, i.e. if a cell
    spans a row and there are no further TR elements
    then the implied row should be ignored.
-->

<!ELEMENT (%cell) - O %body.content>
<!ATTLIST (%cell)
        %attrs;
        colspan NUMBER    1      -- columns spanned --
        rowspan NUMBER    1      -- rows spanned --
        align  (%horiz.align) #IMPLIED -- horizontal alignment --
        valign (%vert.align) top -- vertical alignment --
        dp      CDATA    #IMPLIED  -- decimal point e.g. dp="," --
        nowrap (nowrap)  #IMPLIED  -- don't wrap words --
        axis CDATA #IMPLIED -- axis name, defaults to element content --
        axes CDATA #IMPLIED -- comma separated list of axis names --
        >

<!--====================== Figures ========================================-->

<!--
  The element contains text for use in non-graphical displays. Note that
  you can use the shape attribute in anchors to specify hotzones on images.
  This provides for local processing of pointer clicks and a unified method
  for dealing with graphical and non-graphical displays.

  Text is flowed around figures when the figure is left or right aligned.
  You can request the browser to move down until there is enough room for
  the next element, see the CLEAR and NEED attributes (in %needs)

  Figures offer a path towards embedding arbitrary information formats
  via some kind of OLE/OpenDoc mechanism.
-->

<!ELEMENT FIG - - (OVERLAY*, CAPTION?, FIGTEXT, CREDIT?) -(FIG|IMG)>
<!ATTLIST FIG
        %attrs;
        %needs;                  -- for control of text flow --
        src  %URI;  #REQUIRED    -- URI of document to embed --
        %url.link;               -- standard link attributes --
        %block.align;            -- horizontal alignment --

Dave Raggett                                                          Page 176
HTML 3.0                                                       28th March 1995

        noflow (noflow) #IMPLIED -- noflow around figure --
        width  NUMBER #IMPLIED   -- desired width in units --
        height NUMBER #IMPLIED   -- desired height in units --
        units (en|pixels) pixels -- specifies units as en's or pixels --
        imagemap (%URI) #IMPLIED -- pass background clicks to server --
        >
        
<!ELEMENT FIGTEXT O O %body.content -- dummy element -->

<!--
    Figure overlays. When combined with local caching, overlays
    provide a cheap way of modifying a larger base image sent as
    part of a previous page.
-->

<!ELEMENT OVERLAY - O EMPTY -- image overlay -->
<!ATTLIST OVERLAY
        src  %URI;  #REQUIRED    -- URI of image overlay --
        %url.link;               -- standard link attributes --
        units (en|pixels) pixels -- specifies units as en's or pixels --
        x      NUMBER   0        -- offset from left in units --
        y      NUMBER   0        -- offset from top in units --
        width  NUMBER #IMPLIED   -- desired width in units --
        height NUMBER #IMPLIED   -- desired height in units --
        imagemap (%URI) #IMPLIED -- pass background clicks to server --
        >

<!ELEMENT CREDIT - - (%text;)* -- source of image -->
<!ATTLIST CREDIT
        %attrs;
        >

<!--======================== Notes ========================================-->

<!--
The NOTE element is used for admonishments. The CLASS attribute
is used to differentiate NOTE's, e.g. Note, Caution or Warning.
-->

<!ELEMENT NOTE - - %body.content; -- admonishment -->
<!ATTLIST NOTE
        %attrs;
        src %URI;   #IMPLIED  -- URI of custom graphic --
        %url.link;            -- standard link attributes --
        %needs; -- for control of text flow --
        >

<!--======================== Footnotes ====================================-->

<!--
Typically rendered as popup note. These elements are referenced
by hypertext links specified with the anchor element.
-->

Dave Raggett                                                          Page 177
HTML 3.0                                                       28th March 1995

<!ELEMENT FN - - %body.content;>
<!ATTLIST FN %attrs;>

<!--======================== Math  ========================================-->

<!-- Use &thinsp; &emsp; etc for greater control of spacing. -->

<!-- Subscripts and Superscripts

  <SUB> and <SUP> are used for subscripts and superscripts.

                                          i j
      X <SUP>i</SUP>Y<SUP>j</SUP>  is   X  Y

  i.e. the space following the X disambiguates the binding.
  The align attribute can be used for horizontal alignment,
  e.g. to explicitly place an index above an element:
                                              i
        X<sup align=center>i</sup>  produces  X

Short references are defined for superscripts, subscripts and boxes
to save typing when manually editing HTML math, e.g.

      x^2^    is mapped to   x<sup>2</sup>
      y_z_    is mapped to   y<sub>z</sub>
      {a+b}   is mapped to   <box>a + b</box>

Note that these only apply within the MATH element and can't be
used in normal text!
-->
<!ENTITY REF1   STARTTAG   "SUP">
<!ENTITY REF2   ENDTAG     "SUP">
<!ENTITY REF3   STARTTAG   "SUB">
<!ENTITY REF4   ENDTAG     "SUB">
<!ENTITY REF5   STARTTAG   "BOX">
<!ENTITY REF6   ENDTAG     "BOX">

<!USEMAP MAP1   MATH>
<!USEMAP MAP2   SUP>
<!USEMAP MAP3   SUB>
<!USEMAP MAP4   BOX>

<!SHORTREF MAP1 "^" REF1
                "_" REF3
                "{" REF5 >

<!SHORTREF MAP2 "^" REF2
                "_" REF3
                "{" REF5 >

<!SHORTREF MAP3 "_" REF4
                "^" REF1
                "{" REF5 >

Dave Raggett                                                          Page 178
HTML 3.0                                                       28th March 1995


<!SHORTREF MAP4 "}" REF6
                "^" REF1
                "_" REF3
                "{" REF5 >

<!--
 The inclusion of %math and exclusion of %notmath is used here
 to alter the content model for the B, SUB and SUP elements,
 to limit them to formulae rather than general text elements.
-->

<!ENTITY % mathvec "VEC|BAR|DOT|DDOT|HAT|TILDE" -- common accents -->
<!ENTITY % mathface "B|T|BT" -- control of font face -->
<!ENTITY % math "BOX|ABOVE|BELOW|%mathvec|ROOT|SQRT|ARRAY|SUB|SUP|%mathface">
<!ENTITY % formula "#PCDATA|%math">

<!ELEMENT MATH - - (#PCDATA)* -(%notmath) +(%math)>
<!ATTLIST MATH
        id      ID      #IMPLIED
        class    NAMES   #IMPLIED -- e.g. class=chem -->

<!-- The BOX element acts as brackets. Delimiters are optional and
     stretch to match the height of the box. The OVER element is used
     when you want a line between numerator and denominator. This line
     is suppressed with the alternative ATOP element. CHOOSE acts like
     ATOP but adds enclosing round brackets as a convenience for binomial
     coefficients. Note the use of { and } as shorthand for <BOX> and
     </BOX> respectively:

                           1 + X
     {1 + X<OVER>Y}  is   _______
                             Y

                                 a + b
     {a + b<ATOP>c - d} is  
                                 c - d

     The delimiters are represented using the LEFT and RIGHT
     elements as in:

     {[<LEFT>x + y<RIGHT>]}   is   [ x + y ]
     {(<LEFT>a<RIGHT>]}       is   (a]
     {||<LEFT>a<RIGHT>||}     is   || a ||

     Use &lbrace; and &rbrace; for "{" and "}" respectively as
     these symbols are used as shorthand for BOX, e.g.

     {&lbrace;<LEFT>a+b<RIGHT>&rbrace;}  is  {a+b}

     You can stretch definite integrals to match the integrand, e.g.

     {&int;<SUB>a</SUB><SUP>b</SUP><LEFT>{f(x)<over>1+x} dx}

Dave Raggett                                                          Page 179
HTML 3.0                                                       28th March 1995


            b
            /  f(x)
            | ----- dx
            / 1 + x
            a

     Note the complex content model for BOX is a work around
     for the absence of support for infix operators in SGML.

     You can get oversize delimiters with the SIZE attribute,
     for example <BOX SIZE=large>(<LEFT>...<RIGHT>)</BOX>

     Note that the names of common functions are recognized
     by the parser without the need to use "&" and ";" around
     them, e.g. int, sum, sin, cos, tan, ...
-->

<!ELEMENT BOX - - ((%formula)*, (LEFT, (%formula)*)?,
                   ((OVER|ATOP|CHOOSE), (%formula)*)?,
                   (RIGHT, (%formula)*)?)>
<!ATTLIST BOX
        size  (normal|medium|large|huge) normal -- oversize delims -->

<!ELEMENT (OVER|ATOP|CHOOSE|LEFT|RIGHT) - O EMPTY>

<!-- Horizontal line drawn ABOVE contents
     The symbol attribute allows authors to supply
     an entity name for an accent, arrow symbol etc.
     Generalisation of LaTeX's overline command.
     
     e.g. <above sym=ssmile>x</above>
     places an upwardly turning curve above the "x"
 -->

<!ELEMENT ABOVE - - (%formula)+>
<!ATTLIST ABOVE sym ENTITY #IMPLIED>

<!-- Horizontal line drawn BELOW contents
     The symbol attribute allows authors to 
     supply an entity name for an arrow symbol etc.
     Generalisation of LaTeX's underline command.
 -->

<!ELEMENT BELOW - - (%formula)+>
<!ATTLIST BELOW sym ENTITY #IMPLIED>

<!-- Convenience tags for common accents:
     vec, bar, dot, ddot, hat and tilde
-->

<!ELEMENT (%mathvec) - - (%formula)+>


Dave Raggett                                                          Page 180
HTML 3.0                                                       28th March 1995

<!--
  T and BT are used to designate terms which should
  be rendered in an upright font (& bold face for BT)
-->

<!ELEMENT (T|BT) - - (%formula)+>
<!ATTLIST (T|BT) class NAMES #IMPLIED>

<!-- Roots  e.g. <ROOT>3<OF>1+x</ROOT> -->

<!ELEMENT ROOT - - ((%formula)+, OF, (%formula)+)>
<!ELEMENT OF - O (%formula)* -- what the root applies to -->

<!ELEMENT SQRT - - (%formula)* -- square root convenience tag -->

<!-- LaTeX like arrays. The COLDEF attribute specifies
     a single capital letter for each column determining
     how the column should be aligned, e.g. coldef="CCC"

        "L"     left
        "C"     center
        "R"     right
        
     An optional separator letter can occur between columns
     and should be one of + - or =, e.g. "C+C+C+C=C".
     Whitespace within coldef is ignored. By default, the
     columns are all centered.
     
     The ALIGN attribute alters the vertical position of the
     array as compared with preceding and following expressions.

     Use LDELIM and RDELIM attributes for delimiter entities.
     When the LABELS attribute is present, the array is
     displayed with the first row and the first column as
     labels displaced from the other elements. In this case,
     the first element of the first row should normally be
     left blank.

     Use &vdots; &cdots; and &ddots; for vertical, horizontal
     and diagonal ellipsis dots. Use &dotfill; to fill an array
     cell with horizontal dots (e.g. for a full row).
     Note &ldots; places the dots on the baseline, while &cdots;
     places them higher up.
-->

<!ELEMENT ARRAY - - (ROW)+>
<!ATTLIST ARRAY
        align (top|middle|bottom) middle -- vertical alignment --
        coldef  CDATA   #IMPLIED  -- column alignment and separator --
        ldelim  CDATA   #IMPLIED  -- stretchy left delimiter --
        rdelim  CDATA   #IMPLIED  -- stretchy right delimiter --
        labels (labels) #IMPLIED  -- TeX's \bordermatrix style -->


Dave Raggett                                                          Page 181
HTML 3.0                                                       28th March 1995

<!ELEMENT ROW - O (ITEM)*>
<!ELEMENT ITEM - O (%formula)*>
<!ATTLIST ITEM
        align   CDATA  #IMPLIED  -- override coldef alignment --
        colspan NUMBER 1         -- merge columns as per TABLE --
        rowspan NUMBER 1         -- merge rows as per TABLE -->

<!--================ Document Head ========================================-->

<![ %HTML.Deprecated [
    <!ENTITY % head.content "TITLE & ISINDEX? & BASE? & STYLE?
                              & META* & LINK* & RANGE* & NEXTID?">
]]>

<!ENTITY % head.nextid "">

<!ENTITY % head.content "TITLE & ISINDEX? & BASE? & STYLE?
                              & META* & LINK* & RANGE*">

<!ELEMENT HEAD O O  (%head.content)>

<!ELEMENT LINK - O EMPTY>
<!ATTLIST LINK
        href %URI #REQUIRED
        %linkExtraAttributes; >
        
<!ELEMENT RANGE - O EMPTY>
<!ATTLIST RANGE
        id    ID    #IMPLIED  -- for naming marked range --
        class NAMES #IMPLIED  -- for subclassing --
        from  IDREF #REQUIRED -- start of marked range --
        until IDREF #REQUIRED -- end of marked range --
        >

<!ELEMENT ISINDEX - O EMPTY>
<!ATTLIST ISINDEX
        href   %URI  #IMPLIED -- server handling queries --
        prompt CDATA #IMPLIED -- prompt message -->

<!--
    The BASE element gives the base URL for
    dereferencing relative URLs, e.g.

         <BASE href="http://foo.com/images">
         ...
         <IMG SRC="bar.gif">

    The image is deferenced to

         http://foo.com/images/bar.gif
-->

<!ELEMENT BASE - O EMPTY>

Dave Raggett                                                          Page 182
HTML 3.0                                                       28th March 1995

<!ATTLIST BASE
        id   ID    #IMPLIED
        href %URI; #REQUIRED
        >

<![ %HTML.Deprecated [
    <!ELEMENT NEXTID - O EMPTY>
    <!ATTLIST NEXTID N CDATA #REQUIRED>
]]>

<!ELEMENT META - O EMPTY    -- Generic Metainformation -->
<!ATTLIST META
        http-equiv  NAME    #IMPLIED  -- HTTP response header name  --
        name        NAME    #IMPLIED  -- metainformation name       --
        content     CDATA   #REQUIRED -- associated information     --
        >

<!--
    A style sheet can be associated with the document using the
    LINK element, e.g. <LINK rel=style href="housestyle.dsssl">.
    Style overrides can be placed in the document head using the
    STYLE element, e.g.

        <style notation=dsssl-lite>
           dsss-lite stuff
        </style>

    Later on in the document you can use:

        <h2 class=bigcaps>Header with bigger than normal capitals</h2>
        <p class=abstract>A paragraph with a unique style of its own
        ...
    
    Statements in the given style notation 
        
    The tag names, class and id attributes are used in the style sheet
    notation to describe how to render matching elements.
-->

<!ENTITY % style-notations "dsssl-lite | w3c-style">
<!NOTATION dsssl-lite PUBLIC
      "ISO/IEC 10179:1995//NOTATION DSSSL Style Language//EN">
      
<!NOTATION w3c-style PUBLIC "IETF/RFC nnn/W3C Style Language//EN">

<!ELEMENT STYLE - O (#PCDATA)>
<!ATTLIST STYLE
    notation NOTATION (%style-notations;) #REQUIRED
>

<!--================ Document Structure ===================================-->

<!ENTITY % html.content "HEAD, BODY">

Dave Raggett                                                          Page 183
HTML 3.0                                                       28th March 1995


<!ELEMENT HTML O O  (%html.content)>
<!ENTITY % version.attr 'VERSION CDATA #FIXED "&HTML.Version;"'>

<!-- suggested roles are: TOC, DOC, DOCPART, HITLIST, DIALOG -->

<!ATTLIST HTML
        %version.attr;       -- report DTD version to application --
        urn   CDATA #IMPLIED -- universal resource name for this document --
        class NAMES #IMPLIED -- role of this document, eg table of contents --
        >

<!-- The END -->









































Dave Raggett                                                          Page 184
HTML 3.0                                                       28th March 1995

Glossary of Terms

Pasted from HTML 2.0 spec, this is now under revision ...

------------------------------------------------------------------------------
   The HTML specification uses these words with precise meanings:

   

   attribute 
       A characteristic quality of an element, other than type or
       content. 

       

   browser 
       A tool used to read electronic books. 

       

   document 
       For the purposes of this standard, an HTML instance. 

       

   element 
       A component of the hierarchical structure defined by the
       document type definition; it is identified in a document
       instance by descriptive markup, usually a start-tag and an
       end-tag. 

       

   HTML 
       HyperText Markup Language. 

       

   HTTP 
       A generic stateless object-oriented protocol, which may be used
       for many similar tasks by extending the commands, or "methods",
       used. For example, you might use HTTP for name servers and
       distributed object-oriented systems, With HTTP, the negotiation
       of data representation allows systems to be built independent of
       the development of new representations. For more information
       see:  http://www.w3.org/hypertext/WWW/Protocols/Overview.html

       

   markup 
       Text added to the data of a document to convey information about
       it. There are four different kinds of markup: descriptive markup
       (tags), references, markup declarations, and processing

Dave Raggett                                                          Page 185
HTML 3.0                                                       28th March 1995

       instructions. 

       

   MIME 
       Multipurpose Internet Mail Extensions as defined in Mechanisms
       for Specifying and Describing the Format of Internet Message
       Bodies, 09/23/1993. (Pages=81) (Format=.txt, .ps) (Obsoletes
       RFC1341) (Updated by RFC1590). 

       

   representation 
       The encoding of information for interchange. For example, HTML
       is a representation of hypertext. 

       

   rendering 
       Formatting and presenting information to human readers. 

       

   SGML 
       Standard Generalized Markup Language as defined in ISO
       8879:1986, Information Processing Text and Office Systems. 

       

   SGMLS 
       An SGML parser by James Clark, jjc@jclark.com, derived from the
       ARCSGML parser materials which were written by Charles F.
       Goldfarb. The source is available at
       ftp.ifi.uio.no/pub/SGML/SGMLS. 

       

   tag 
       Descriptive markup. There are two kinds of tags; start-tags and
       end-tags. 

       

   URI 
       Universal Resource Identifiers. Available by anonymous FTP as
       Postscript (www.w3.org/pub/www/doc/url.ps) or text
       (www.w3.org/pub/www/doc/url.txt) 

       

   W3 
       The World-Wide Web, a global information initiative. For
       bootstrap information, telnet www.w3.org or find documents at

Dave Raggett                                                          Page 186
HTML 3.0                                                       28th March 1995

       ftp://www.w3.org/pub/www/doc 

       



















































Dave Raggett                                                          Page 187
HTML 3.0                                                       28th March 1995

References

Under revision ..

------------------------------------------------------------------------------
   The HTML specification cites these works:

   

   HTTP 
       HTTP: A Protocol for Networked Information. This document is
       available at  http://www.w3.org/WWW/Protocols/HTTP/HTTP2.html. 

       

   MIME 
       N. Borenstein, N. Freed, MIME (Multipurpose Internet Mail
       Extensions) Part One: Mechanisms for Specifying and Describing
       the Format of Internet Message Bodies, 09/23/1993. (Pages=81)
       (Format=.txt, .ps) (Obsoletes RFC1341) (Updated by RFC1590). 

       

   SGML 
       ISO 8879:1986, Information Processing Text and Office Systems
       Standard Generalized Markup Language (SGML). 

       

   SGMLS 
       An SGML parser by James Clark, jjc@jclark.com, derived from the
       ARCSGML parser materials which were written by Charles F.
       Goldfarb. The source is available at
       ftp.ifi.uio.no/pub/SGML/SGMLS. 

       

   URI 
       Universal Resource Identifiers. RFCxxx. Available by anonymous
       FTP as Postscript (info.cern.ch/pub/www/doc/url.ps) or text
       (info.cern.ch/pub/www/doc/url.txt) 

       

   W3 
       The World-Wide Web , a global information initiative. For
       bootstrap information, telnet info.cern.ch or find documents by
       ftp://info.cern.ch/pub/www/doc. 

       




Dave Raggett                                                          Page 188
HTML 3.0                                                       28th March 1995

Acknowledgments

Pasted from HTML 2.0 spec, this section is under revision ...

------------------------------------------------------------------------------
   The HTML document type was designed by Tim Berners-Lee at CERN as
   part of the 1990 World-Wide Web project. In 1992, Dan Connolly wrote
   the HTML Document Type Definition (DTD) and a brief HTML
   specification. 

   Since 1993, a wide variety of Internet participants have contributed
   to the evolution of HTML. NCSA Mosaic played a particularly
   important role in establishing HTML. Mosaic pioneered the addition
   of in-line images, image maps, nested lists and fill-out forms
   (derived from work on HTML+). Minor variations in the way extensions
   were supported by different browsers eventually led to the setting
   up of the HTML working group. The HTML 2.0 specification sets out a
   definitive standard for HTML, formalizing the de facto situation
   during 1994. 

   HTML+ was the result of my work on possible directions for extending
   HTML to meet the needs of information providers, e.g. to support
   forms, tables, text flow around figures and math. This work has now
   culminated in the current HTML 3.0 specification, which adds a range
   of important new features to HTML while preserving simplicity and
   backwards compatibility with existing documents. 

   I would like to express my special thanks to members of the Internet
   community on the www-talk, www-html and html-wg mailing lists; to
   people who have written to me in person, and to members of the
   SGML-Open who have been very supportive of the Web initiative.
   Thanks also to Hewlett Packard for funding my work on HTML. 

   Particular thanks are due to: 

   *   Terry Allen; O'Reilly & Associates; terry@ora.com 

   *   Marc Andreessen; Netscape Communications Corp;
       marca@netscape.com 

   *   Eric Bina; Netscape Communications Corp; ebina@netscape.com 

   *   Paul Burchard; The Geometry Center, University of Minnesota;
       burchard@geom.umn.edu 

   *   James Clark; jjc@jclark.com 

   *   Daniel W. Connolly; HaL Computer Systems; connolly@hal.com 

   *   Stephen DeRose; EBT; ??? steve@ebt.com 

   *   Roy Fielding; University of California, Irvine;
       fielding@ics.uci.edu 

Dave Raggett                                                          Page 189
HTML 3.0                                                       28th March 1995


   *   Jay Glicksman; Enterprise Integration Technology; jay@eit.com 

   *   Eduardo Gutentag; Sun Microsystems; eduardo@Eng.Sun.com 

   *   Bill Hefley; Software Engineering Institute, Carnegie Mellon
       University; weh@sei.cmu.edu 

   *   Chung-Jen Ho; Xerox Corporation; cho@xsoft.xerox.com 

   *   Mike Knezovich; Spyglass, Inc.; mike@spyglass.com 

   *   Tim Berners-Lee; CERN; timbl@info.cern.ch 

   *   Tom Magliery; NCSA; mag@ncsa.uiuc.edu 

   *   Murray Maloney; SCO Canada; murray@sco.com 

   *   Larry Masinter; Xerox Palo Alto Research Center;
       masinter@parc.xerox.com 

   *   Karen Olson Muldrow; HaL Computer Systems; karen@hal.com 

   *   Bill Perry, Spry, Inc., wmperry@spry.com 

   *   E. Corprew Reed; Cold Spring Harbor Laboratory; corp@cshl.org 

   *   Yuri Rubinsky; SoftQuad, Inc.; yuri@sq.com 

   *   Eric Schieler; Spyglass, Inc.; eschieler@spyglass.com 

   *   Eric Severson; Avalanche, Inc.; ??? severson@avalanche.com 

   *   Eric W. Sink; Spyglass, Inc.; eric@spyglass.com 

   *   Stuart Weibel; OCLC Office of Research; weibel@oclc.org 

   *   Chris Wilson; Spry, Inc.; cwilson@spry.com 

   Dave Raggett <dsr@w3.org>, February 1995.  














Dave Raggett                                                          Page 190
