# 4 Conformance: requirements and recommendations

Contents

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

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

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. However, for readability, these words do not appear in all uppercase letters in this specification.

At times, the authors of this specification recommend good practice for authors and user agents. These recommendations are not normative and conformance with this specification does not depend on their realization. These recommendations contain the expression "We recommend ...", "This specification recommends ...", or some similar wording.

## 4.1 Definitions

HTML document
  An HTML document is an SGML document that meets the constraints of this specification.
Author
  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.0.

User
  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.0 is one that observes the mandatory conditions ("must") set forth in this specification, including the following points:

  - A user agent should avoid imposing arbitrary length limits on attribute value literals (see the section on capacities in the SGML Declaration). For introductory information on SGML attributes, please consult the section on attribute definitions.
  - A user agent must ensure that rendering is unchanged by the presence or absence of start tags and end tags when the HTML DTD indicates that these are optional. See the section on element definitions for introductory information on SGML elements.
  - For reasons of backwards compatibility, we recommend that tools interpreting HTML 4.0 continue to support HTML 3.2 (see [HTML32]) and HTML 2.0 (see [RFC1866]).
Error conditions
  This specification does not define how conforming user agents handle general error conditions, including how user agents behave when they encounter elements, attributes, attribute values, or entities not specified in this document.

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

Deprecated
  A deprecated element or attribute is one that has been outdated by newer constructs. Deprecated elements are defined in the reference manual in appropriate locations, but are clearly marked as deprecated. Deprecated elements may become obsolete in future versions of HTML.

  User agents should continue to support deprecated elements for reasons of backward compatibility.

  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]).

Obsolete
  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.0 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.0 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 [RFC2068]. 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:
  text
Content subtype name:
  html
Required parameters:
  none
Optional parameters:
  charset
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.