4 Conformance: requirements and recommendations


  1. Definitions
  2. SGML
  3. The text/html content type

In this section, we begin the specification of HTML 4, starting with the contract between authors, documents, users, and user agents.



4.1 Definitions

HTML document
An HTML document is an SGML document that meets the constraints of this specification.
An author is a person or program that writes or generates HTML documents. An authoring tool is a special case of an author, namely, it's a program that generates HTML.

We recommend that authors write documents that conform to the strict DTD rather than the other DTDs defined by this specification. Please see the section on version information for details about the DTDs defined in HTML 4.

A user is a person who interacts with a user agent to view, hear, or otherwise use a rendered HTML document.
HTML user agent
An HTML user agent is any device that interprets HTML documents. User agents include visual browsers (text-only and graphical), non-visual browsers (audio, Braille), search robots, proxies, etc.

A conforming user agent for HTML 4 is one that observes the mandatory conditions ("must") set forth in this specification, including the following points:

Error conditions

However, for recommended error handling behavior, please consult the notes on invalid documents.



Definitions of elements and attributes clearly indicate which are deprecated.

This specification includes examples that illustrate how to avoid using deprecated elements. In most cases these depend on user agent support for style sheets. In general, authors should use style sheets to achieve stylistic and formatting effects rather than HTML presentational attributes. HTML presentational attributes have been deprecated when style sheet alternatives exist (see, for example, [CSS1]).

An obsolete element or attribute is one for which there is no guarantee of support by a user agent. Obsolete elements are no longer defined in the specification, but are listed for historical purposes in the changes section of the reference manual.

4.2 SGML

HTML 4 is an SGML application conforming to International Standard ISO 8879 -- Standard Generalized Markup Language SGML (defined in [ISO8879]).

Examples in the text conform to the strict document type definition unless the example in question refers to elements or attributes only defined by the transitional document type definition or frameset document type definition. For the sake of brevity, most of the examples in this specification do not begin with the document type declaration that is mandatory at the beginning of each HTML document.

DTD fragments in element definitions come from the strict document type definition except for the elements related to frames.

Please consult the section on HTML version information for details about when to use the strict, transitional, or frameset DTD.

Comments appearing in the HTML 4 DTD have no normative value; they are informative only.

User agents must not render SGML processing instructions (e.g., <?full volume>) or comments. For more information about this and other SGML features that may be legal in HTML but aren't widely supported by HTML user agents, please consult the section on SGML features with limited support.

4.3 The text/html content type

HTML documents are sent over the Internet as a sequence of bytes accompanied by encoding information (described in the section on character encodings). The structure of the transmission, termed a message entity, is defined by [RFC2045] and [RFC2616]. A message entity with a content type of "text/html" represents an HTML document.

The content type for HTML documents is defined as follows:

Content type name:
Content subtype name:
Required parameters:
Optional parameters:
Encoding considerations:
any encoding is allowed
Security considerations:
See the notes on security

The optional parameter "charset" refers to the character encoding used to represent the HTML document as a sequence of bytes. Legal values for this parameter are defined in the section on character encodings. Although this parameter is optional, we recommend that it always be present.