HTML 5: The Markup Language (ARIA Edition)

Editor’s Draft 3 September 2009

Latest Editor’s Draft:
http://dev.w3.org/html5/markup/aria/
Editor:
Michael(tm) Smith, W3C <mike@w3.org>

The content of this document is also available as multiple HTML files.


Abstract #

This specification describes the fifth major version of the HTML language and provides the details necessary for producers of HTML content to create documents that conform to the language, as well as describing a speculative integration of ARIA attributes into the language. By design, it does not define related APIs nor attempt to specify how consumers of HTML content are meant to process documents.

Status of this Document #

This document is the 3 September 2009 Editor’s Draft of HTML 5: The Markup Language (ARIA Edition).

This document does not represent consensus in the HTML Working Group. In particular, some members of the group do not support normative status for it, and thus do not support its advance on the W3C Recommendation track. Discussions about the normative status of this document are ongoing, and no decision has been reached yet. As with other documents produced by the HTML Working Group, this document uses the design approach described in HTML Design Principles.

Instability and incompleteness of this document

This document is a working draft — all parts of it remain subject to significant change or removal, and some parts are currently incomplete; in particular, many elements currently lack complete documentation in the following subsections:

Examples
The documentation for each element will eventually have at least one conformant example and at least one non-conformant example.
Details
The purpose of this subsection is to provide, where needed, additional details about the semantics of the element and its attributes.
Additional constraints
This purpose of this subsection is to provide, where needed, additional document-conformance constraints for the element and its attributes (in addition to those already documented in the Content model, Attribute model, Assertions, Tag omission, and Permitted contexts subsections).

The existence of this document as an Editor’s Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.

Table of Contents Overview #

Full Table of Contents #

1. Introduction # T

This specification provides the details necessary for producers of HTML content to create conformant documents, and for others to check the conformance of existing documents. It is designed:

Certain purposes are intentionally out of scope for this specification; in particular, it:

2. Terminology and symbols # T

This section defines the following:

2.01. Terms used in other parts of the specification # T

The following is a list of terms that are common to various other sections in this specification.

browsing context
A browsing context is a collection of one or more documents and one or more views.
case-insensitive match
For the purposes of this specification, performing a case-insensitive match between two strings means comparing the strings exactly, codepoint for codepoint, except that the characters in the range A-Z and the corresponding characters in the range a-z are considered to also match.
fallback content
Some embedded content elements can have fallback content: content that is to be used when the embedded content cannot be used (for example, when it is of an unsupported format).
HTML producers
HTML authors (that is, people) and applications (such as editors and content management systems) that produce HTML content.
HTML consumers
HTML user agents; that is, applications (such as Web browsers) which consume HTML content
newline
A newline may be represented as any of the following:
  • a U+000D CARRIAGE RETURN (CR) character
  • a U+000A LINE FEED (LF) character
  • a U+000D CARRIAGE RETURN (CR) followed by a U+000A LINE FEED (LF) character
space
A space character is any of the following:
  • U+0020 SPACE
  • U+0009 CHARACTER TABULATION (tab)
  • U+000A LINE FEED (LF)
  • U+000C FORM FEED (FF)
  • U+000D CARRIAGE RETURN (CR)
view
A view is as defined in Document Object Model (DOM) Level 2 Views [DOM2VIEWS].

2.02. Symbols used in content models # T

This section provides explanations for the symbols used in the Content model and Attribute model subsections of the per-element documentation in the HTML elements section and in the Common content models, Common attributes, and Forms attributes sections.

The explanations use the term group to mean any combination of names and symbols that are delimited by a pair of matching "(" and ")" (parentheses) symbols, and the term pattern name to mean any hyperlinked name used in a definition that is not an element name or an attribute name.

? (optional)
The "?" (question mark) symbol after an element name, attribute name, pattern name, or group indicates that it is optional — meaning that it can either not occur at all, or it can occur exactly once.
* (zero or more)
The "*" (asterisk) symbol after an element name, pattern name, or group indicates that it may occur any number of times, including not occurring at all.
+ (one or more)
The "+" (plus sign) symbol after an element name, pattern name, or group indicates that is must occur at least once, and can occur more than once.
| (either/or choice)
The "|" (vertical line) symbol between element names, attribute names, pattern names, and groups indicates an either/or alternative relationship between the two items it separates; that is, it indicates that either the item before the "|" symbol can occur, or the item after the symbol can occur.
, (in the order shown)
The "," (comma) symbol between element names, pattern names, and groups indicates that the two items it separates can only occur in the order shown.
& (interleaved in any order)
The "&" (ampersand) symbol between element names, attribute names, pattern names, and groups indicates that the two items it separates can occur in any order.

3. Documents # T

This section defines the term document, and provides additional details related to the definition of that term. It is divided into the following parts:

3.01. The HTML language and HTML and XML syntaxes # T

The term document is used in this specification to mean an instance of the HTML language.

The HTML language is the language described in this specification; it is an abstract language that applications can potentially represent in memory in any number of possible ways, and that can be transmitted using any number of possible concrete syntaxes.

This specification makes reference to two particular concrete syntaxes for the HTML language: One syntax which is referred to throughout this specification as the HTML syntax, and another syntax, which is referred to throughout this specification as the XML syntax. Web browsers typically implement two separate parsers for processing documents: an HTML parser which is invoked when processing documents in the HTML syntax, and an XML parser which is invoked when processing documents in the XML syntax.

The HTML syntax is the syntax described in the HTML syntax section of this specification.

The XML syntax is defined by rules in the XML specification [XML] and in the Namespaces in XML 1.0 specification [XMLNS]. Beyond the requirements defined in those specifications, this specification does not define any additional syntax-level requirements for documents in the XML syntax.

3.02. The HTML namespace and MIME types # T

The HTML namespace is defined as http://www.w3.org/1999/xhtml. The HTML namespace is the namespace both for documents in the HTML syntax and for documents in the XML syntax.

Documents that are served with the text/html MIME type must conform to the rules in this specification for documents in the HTML syntax.

Documents that have an HTML namespace declaration and that are served with an XML MIME type such as text/xml, application/xml, or application/xhtml+xml must conform to the rules in this specification for documents in the XML syntax.

3.03. Conformant documents # T

A conformant document in the HTML syntax must consist of the following parts, in the following order:

  1. Optionally, a single U+FEFF BYTE ORDER MARK (BOM) character.
  2. Any number of comments and space characters.
  3. A doctype.
  4. Any number of comments and space characters.
  5. An html element, with its attributes and contents.
  6. Any number of comments and space characters.

Documents in the HTML syntax must conform to the syntax described in the HTML syntax section of this specification.

A conformant document in the XML syntax must consist of the following parts, in the following order:

  1. Optionally, a single U+FEFF BYTE ORDER MARK (BOM) character.
  2. Any number of comments and space characters, as defined in the XML specification [XML].
  3. Optionally, a doctype declaration, as defined in the XML specification [XML].
  4. Any number of comments and space characters, as defined in the XML specification [XML].
  5. An html element, with its attributes and contents.
  6. Any number of comments and space characters, as defined in the XML specification [XML].

Documents in the XML syntax must conform to XML constraints as defined in the XML specification [XML] and in the Namespaces in XML 1.0 specification [XMLNS] — including XML well-formedness constraints — and must not make use of any features of the HTML syntax that do not follow XML well-formedness constraints (for example, documents in the XML syntax must not use unquoted attribute value syntax and must not omit tags).

3.04. Case insensitivity in tag names and attribute names # T

In documents in the HTML syntax:

In documents in the XML syntax:

4. HTML syntax # T

This section describes the the HTML syntax in detail. In places, it also notes differences between the the HTML syntax and the XML syntax, but it does not describe the XML syntax in detail (the XML syntax is instead defined by rules in the XML specification [XML] and in the Namespaces in XML 1.0 specification [XMLNS]).

This section is divided into the following parts:

4.01. The doctype # T

A doctype (sometimes capitalized as “DOCTYPE”) is an special instruction which, for legacy reasons that have to do with processing modes in browsers, is a required part of any document in the HTML syntax; it must either be a deprecated doctype, or must consist of the following parts, in exactly the following order:

  1. A "<" character.
  2. A "!" character.
  3. Any case-insensitive match for the string "DOCTYPE".
  4. One or more space characters.
  5. Any case-insensitive match for the string "HTML".
  6. Optionally, a doctype legacy string.
  7. Optionally, one or more space characters.
  8. A ">" character.

A doctype legacy string consists of the following parts, in exactly the following order.

  1. One or more space characters.
  2. Any case-insensitive match for the string "SYSTEM".
  3. One or more space characters
  4. A quote mark, consisting of either a """ character or a "'" character.
  5. The literal string "about:legacy-compat".
  6. A matching quote mark, identical to the quote mark used earlier (either a """ character or a "'" character).

The following are examples of some conformant doctypes.

<!DOCTYPE html>
<!doctype HTML system "about:legacy-compat">

A deprecated doctype is a document type declaration as defined in the XML specification [XML], with the further restriction that it must meet one of the following sets of constraints:

  • The document type declaration’s name part is a case-insensitive match for the string "HTML", its public identifier is an exact match for the literal string "-//W3C//DTD HTML 4.0//EN", and its system identifier is either missing or is an exact match for the literal string "http://www.w3.org/TR/REC-html40/strict.dtd".
  • The document type declaration’s name part is a case-insensitive match for the string "HTML", its public identifier is an exact match for the literal string "-//W3C//DTD HTML 4.01//EN", and its system identifier is either missing or is an exact match for the literal string "http://www.w3.org/TR/html4/strict.dtd".
  • The document type declaration’s name part is a case-insensitive match for the string "HTML", its public identifier is an exact match for the literal string "-//W3C//DTD XHTML 1.0 Strict//EN", and its system identifier is either missing or is an exact match for the literal string "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd".
  • The document type declaration’s name part is a case-insensitive match for the string "HTML", its public identifier is an exact match for the literal string "-//W3C//DTD XHTML 1.1//EN", and its system identifier is either missing or is an exact match for the literal string "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd".

The following are examples of some deprecated doctypes.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">

4.02. Character encoding declaration # T

A character encoding declaration is a mechanism for specifying the character encoding used to store or transmit a document.

The following restrictions apply to character encoding declarations:

  • The character encoding name given must be the name of the character encoding used to serialize the file.
  • The value must be a valid character encoding name, and must be the preferred name for that encoding. [IANACHARSET]
  • The character encoding declaration must be serialized without the use of character references or character escapes of any kind.
  • The element containing the character encoding declaration must be serialized completely within the first 512 bytes of the document.

If the document does not start with a U+FEFF BYTE ORDER MARK (BOM) character, and if its encoding is not explicitly given by a Content-Type HTTP header, then the character encoding used must be an ASCII-compatible character encoding, and, in addition, if that encoding isn't US-ASCII itself, then the encoding must be specified using a meta element with a charset attribute or a meta element in the encoding declaration state.

If the document contains a meta element with a charset attribute or a meta element in the encoding declaration state, then the character encoding used must be an ASCII-compatible character encoding.

An ASCII-compatible character encoding is one that is a superset of US-ASCII (specifically, ANSI_X3.4-1968) for bytes in the set 0x09, 0x0A, 0x0C, 0x0D, 0x20 - 0x22, 0x26, 0x27, 0x2C - 0x3F, 0x41 - 0x5A, and 0x61 - 0x7A.

Documents must not use the CESU-8, UTF-7, BOCU-1 and SCSU encodings. [CESU8] [UTF7] [BOCU1] [SCSU]

In a document the XML syntax, the XML declaration, as defined in the XML specification [XML] should be used to provide character-encoding information, if necessary.

4.03. Elements # T

An element’s content model defines the element’s structure: What contents (if any) the element can contain, as well as what attributes (if any) the element can have. The HTML elements section of this specification defines the content models for all of elements that are part of the HTML language. An element must not contain contents or attributes that are not part of its content model.

The contents of an element are any elements, character data, and comments that it contains. Attributes and their values are not considered to be the “contents” of an element.

A void element is an element whose content model does not allow it to have contents. Void elements can have attributes.

The following is a complete list of the void elements in HTML:

The following list describes syntax rules for the the HTML syntax. Rules for the the XML syntax are defined in the XML specification [XML].

  • Tags are used to delimit the start and end of elements in markup. Elements have a start tag to indicate where they begin. Non-void elements have an end tag to indicate where they end.
  • Tag names are used within element start tags and end tags to give the element’s name. HTML elements all have names that only use characters in the range 0–9, a–z, and A–Z.
  • Start tags consist of the following parts, in exactly the following order:
    1. A "<" character.
    2. The element’s tag name.
    3. Optionally, one or more attributes, each of which must be preceded by one or more space characters.
    4. Optionally, one or more space characters.
    5. Optionally, a "/" character, which may be present only if the element is a void element.
    6. A ">" character.
  • End tags consist of the following parts, in exactly the following order:
    1. A "<" character.
    2. A "/" character
    3. The element’s tag name.
    4. Optionally, one or more space characters.
    5. A ">" character.
  • Void elements only have a start tag; end tags must not be specified for void elements.
  • The start and end tags of certain elements can be omitted. The subsection for each element in the HTML elements section of this specification provides information about which tags (if any) can be omitted for that particular element.
  • A non-void element must have an end tag, unless the subsection for that element in the HTML elements section of this specification indicates that its end tag can be omitted.
  • The contents of an element must be placed between just after its start tag (which might be implied, in certain cases) and just before its end tag (which might be implied in certain cases).

4.3.01. Misnested tags #

If an element has both a start tag and an end tag, its end tag must be contained within the contents of the same element in which its start tag is contained. An end tag that is not contained within the same contents as its start tag is said to be a misnested tag.

In the following example, the "</i>" end tag is a misnested tag, because it is not contained within the contents of the b element that contains its corresponding "<i>" start tag.

<b>foo <i>bar</b> baz</i>

4.04. Attributes # T

Attributes for an element are expressed inside the element’s start tag. Attributes have a name and a value.

There must never be two or more attributes on the same start tag whose names are a case-insensitive match for each other.

The following list describes syntax rules for attributes in documents in the HTML syntax. Syntax rules for attributes in documents in the XML syntax. are defined in the XML specification [XML].

  • Attribute names must consist of one or more characters other than the space characters, U+0000 NULL, """, "'", ">", "/", "=", the control characters, and any characters that are not defined by Unicode.
  • XML-compatible attribute names are those that match the Name production defined in the XML specification [XML] and that contain no ":" characters, and whose first three characters are not a case-insensitive match for the string "xml".
  • Attribute values, in general, are normal character data; however, the HTML elements section of this specification defines further restrictions on the allowed values of all attributes that are part of the HTML language. An attribute must not have a value that is not allowed by the content model of the element that contains it.

In the the HTML syntax, attributes can be specified in four different ways:

  1. empty attribute syntax
  2. unquoted attribute-value syntax
  3. single-quoted attribute-value syntax
  4. double-quoted attribute-value syntax
Empty attribute syntax

Certain attributes may be specified by providing just the attribute name.

In the following example, the disabled attribute is given with the empty attribute syntax:

<input disabled>
Unquoted attribute-value syntax

An unquoted attribute value is specified by providing the following parts in exactly the following order:

  1. an attribute name
  2. zero or more space characters
  3. a single "=" character
  4. zero or more space characters
  5. an attribute value

In addition to the general requirements given above for attribute values, an unquoted attribute value has the following restrictions:

  • must not contain any literal space characters
  • must not contain any """, "'", ">", "=", characters
  • must not be the empty string

In the following example, the value attribute is given with the unquoted attribute value syntax:

<input value=yes>

If the value of an attribute using the unquoted attribute syntax is followed by a "/" character, then there must be at least one space character after the value and before the "/" character.

Single-quoted attribute-value syntax

A single-quoted attribute value is specified by providing the following parts in exactly the following order:

  1. an attribute name
  2. zero or more space characters
  3. a "=" character
  4. zero or more space characters
  5. a single "'" character
  6. an attribute value
  7. a "'" character.

In addition to the general requirements given above for attribute values, a single-quoted attribute value has the following restriction:

  • must not contain any literal "'" characters

In the following example, the type attribute is given with the single-quoted attribute value syntax:

<input type='checkbox'>
Double-quoted attribute-value syntax

A double-quoted attribute value is specified by providing the following parts in exactly the following order:

  1. an attribute name
  2. zero or more space characters
  3. a single "=" character
  4. zero or more space characters
  5. a single """ character
  6. an attribute value
  7. a """ character

In addition to the general requirements given above for attribute values, a double-quoted attribute value has the following restriction:

  • must not contain any literal """ characters

In the following example, the title attribute is given with the double-quoted attribute value syntax:

<code title="U+003C LESS-THAN SIGN">&lt;</code>

4.05. Text and character data # T

Text in element contents (including in comments) and attribute values must consist of Unicode characters, with the following restrictions:

  • must not contain U+0000 characters
  • must not contain permanently undefined Unicode characters
  • must not contain control characters other than space characters

There are two special types of text, known as escaping text span starts and escaping text span ends, that can occur within certain elements.

Character data contains text, in some cases in combination with character references, along with certain additional restrictions. There are three types of character data that can occur in documents:

  1. normal character data
  2. replaceable character data
  3. non-replaceable character data
Normal character data

Certain elements and strings in the values of particular attributes contain normal character data. Normal character data can contain the following:

Normal character data has the following restrictions:

Replaceable character data

In documents in the HTML syntax, the title and textarea elements can contain replaceable character data. Replaceable character data can contain the following:

Replaceable character data has the following restrictions:

  • must not contain any ambiguous ampersands
  • must not contain any occurrences of the string "</" followed by characters that are a case-insensitive match for the tag name of the element containing the replaceable character data (for example, "</title" or "</textarea"), followed by one of U+0009 CHARACTER TABULATION, U+000A LINE FEED (LF), U+000C FORM FEED (FF), U+0020 SPACE, ">", or "/", unless that string is part of an escaping text span.

Replaceable character data, as defined in this specification, is a feature of the HTML syntax that is not available in the XML syntax. Documents in the XML syntax must not contain replaceable character data as defined in this specification; instead they must conform to all syntax constraints defined in the XML specification [XML].

Non-replaceable character data

In documents in the HTML syntax, the script, and style elements can contain non-replaceable character data. Non-replaceable character data can contain the following:

Non-replaceable character data has the following restrictions:

  • must not contain character references
  • must not contain any occurrences of the string "</", followed by characters that are a case-insensitive match for the tag name of the element containing the replaceable character data (for example, "</script" or "</style", followed by one of U+0009 CHARACTER TABULATION, U+000A LINE FEED (LF), U+000C FORM FEED (FF), U+0020 SPACE, ">", or "/", unless that string is part of an escaping text span.

Non-replaceable character data, as defined in this specification, is a feature of the HTML syntax that is not available in the XML syntax. Documents in the XML syntax must not contain non-replaceable character data as defined in this specification; instead they must conform to all syntax constraints defined in the XML specification [XML].

4.06. Character references # T

Character references are a form of markup for representing single individual characters. There are three types of character references:

Named character reference

Named character references consist of the following parts in exactly the following order:

  1. An "&" character.
  2. One of the entity names defined in XML Entity definitions for Characters [Entities], using the same case.
  3. A ";" character.

The following is an example of a named character reference for the character "" (U+2020 DAGGER).

&dagger;
Decimal numeric character reference

Decimal numerical character references consist of the following parts, in exactly the following order.

  1. An "&" character.
  2. A "#" character.
  3. One or more digits in the range 0–9, representing a base-ten integer that itself is a Unicode code point that is not U+0000, U+000D, in the range U+0080–U+009F, or in the range 0xD8000–0xDFFF (surrogates).
  4. A ";" character.

The following is an example of a decimal numeric character reference for the character "" (U+2020 DAGGER).

&#8224;
Hexadecimal numeric character reference

Hexadecimal numeric character references consist of the following parts, in exactly the following order.

  1. An "&" character.
  2. A "#" character.
  3. Either a "x" character or a "X" character.
  4. One or more digits in the range 0–9, a–f, and A–F, representing a base-sixteen integer that itself is a Unicode code point that is not U+0000, U+000D, in the range U+0080–U+009F, or in the range 0xD800–0xDFFF (surrogates).
  5. A ";" character.

The following is an example of a hexadecimal numeric character reference for the character "" (U+2020 DAGGER).

&#x2020;

Character references are not themselves text, and no part of a character reference is text.

An ambiguous ampersand is an "&" character that is followed by some text other than a space character, a "<", character, or another "&" character.

4.07. Comments # T

Comments consist of the following parts, in exactly the following order:

  1. the comment start delimiter "<!--"
  2. text
  3. the comment end delimiter "-->"

The text part of comments has the following restrictions:

  • must not start with a ">" character
  • must not start with the string "->"
  • must not contain the string "--"
  • must not end with a "-" character

The following is an example of a comment.

<!-- main content starts here -->

4.08. Escaping text spans # T

An escaping text span is a span of text that starts with an escaping text span start that is not itself in an escaping text span, and ends at the next escaping text span end. Escaping text spans have the following restriction:

An escaping text span start is the text string "<!--".

An escaping text span end is the text string "-->".

An escaping text span start may share its "-" characters with its corresponding escaping text span end.

The text in style, script, title, and textarea elements must not have an escaping text span start that is not followed by an escaping text span end.

The following is an example of an escaping text span within a style element.

<style>
<!--
dfn { font-weight: bold; color: brown; }
-->
</style>

4.09. SVG and MathML elements in HTML documents # T

SVG and MathML elements are elements from the SVG and MathML namespaces. SVG and MathML elements can be used both in documents in the HTML syntax and in documents in the XML syntax. Syntax rules for SVG and MathML elements in documents in the XML syntax are defined in the XML specification [XML]. The following list describes additional syntax rules that specifically apply to SVG and MathML elements in documents in the HTML syntax.

4.10. CDATA sections in SVG and MathML contents # T

CDATA sections in SVG and MathML contents in documents in the HTML syntax consist of the following parts, in exactly the following order:

  1. the CDATA start delimiter "<![CDATA["
  2. text, with the additional restriction that the text must not contain the string "]]>
  3. the CDATA end delimiter "]]>"

CDATA sections are allowed only in the contents of elements from the SVG and MathML namespaces.

The following shows an example of a CDATA section.

<annotation encoding="text/latex">
  <![CDATA[\documentclass{article}
  \begin{document}
  \title{E}
  \maketitle
  The base of the natural logarithms, approximately 2.71828.
  \end{document}]]>
</annotation>

5. HTML elements # T

The complete set of HTML elements is the set of elements described in the following sections.

ahyperlink # T

The a element represents a hyperlink.

Element-specific attributes #

name = id
Specifies that its a element is a named hyperlink, with the name given by the value of this attribute.
href = uri
A URL that provides the destination of the hyperlink. If the href attribute is not specified, the element represents a placeholder hyperlink.
target = browsing-context-name-or-keyword
A name or keyword giving a browsing context for UAs to use when following the hyperlink.
rel = tokens
A list of tokens that specify the relationship between the document containing the hyperlink and the destination indicated by the hyperlink.
hreflang = langcode
The language of the destination of the hyperlink.
media = mediaquery
The media for which the destination of the hyperlink was designed.
type = mimetype
The MIME type of the destination of the hyperlink.
ping = uris
A list of URLs to notify if a user follows the hyperlink.

Assertions #

  • The interactive element “a” must not appear as a descendant of the “a” element.
  • The interactive element “a” must not appear as a descendant of the “button” element.

Tag omission #

An a element must have both a start tag and an end tag.

Typical default display properties #

a:link, a:visited {
color: (internal value);
text-decoration: underline;
cursor: auto; }
a:link:active, a:visited:active {
color: (internal value); }

Details #

If the contents of an a element are empty, the element represents an empty hyperlink.

abbrabbreviation # T

The abbr element represents an abbreviation or acronym.

Element-specific attributes #

Tag omission #

An abbr element must have both a start tag and an end tag.

Permitted contexts #

Details #

The title attribute on the abbr element represents the expansion of the abbreviation or acronym.

addresscontact information # T

The address element represents contact information.

Element-specific attributes #

Assertions #

  • The “address” element must not contain any nested “address” elements.

Tag omission #

An address element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

address {
display: block; }
address {
font-style: italic; }

Details #

If an address element applies to a body element, then it represents contact information for the document as a whole. If an address element applies to a section of a document, then it represents contact information for that section only.

areaimage-map hyperlink # T

The area element represents either a hyperlink with some text and a corresponding area on an image map, or a dead area on an image map.

Content model #

area = empty & area.attrs

Element-specific attributes #

alt = normal-character-data
The fallback content for the image map.
href = uri
A URL that provides the destination of the hyperlink for this area.
target = browsing-context-name-or-keyword
A name or keyword giving a browsing context for UAs to use when following the hyperlink for this area.
ping = uris
A list of URLs to notify if a user follows the hyperlink for this area.
rel = tokens
A list of tokens that specify the relationship between the document containing the area and the destination indicated by the area.
media = mediaquery
The media for which the destination of the hyperlink was designed.
hreflang = langcode
The language of the destination of the hyperlink.
type = mimetype
The MIME type of the destination of the hyperlink.
shape.rect = "rect" & coords.rect = d:rectangle
Specifies that the shape of the area of this hyperlink on the image map is a rectangle.
shape.circle = "circle" & coords.circle = d:circle
Specifies that the shape of the area of this hyperlink on the image map is a circle.
shape.poly = "poly" & coords.poly = d:polyline
Specifies that the shape of the area of this hyperlink on the image map is a polygon.
shape.default = "default"
Specifies that the shape of the area of this hyperlink on the image map is a rectangle that exactly covers the entire image.

Assertions #

  • The “area” element must have a “map” ancestor.

Tag omission #

The area element is a void element. An area element must have a start tag but must not have an end tag.

Permitted contexts #

Typical default display properties #

area {
display: none; }

articlearticle # T

The article element represents a section of content that forms an independent part of a document or site; for example, a magazine or newspaper article, or a blog entry.

Content model #

article = style*, (normal-character-data & common.elem.flow*) & article.attrs

Attribute model #

Element-specific attributes #

pubdate = datetime
The time and date when the article was first published.

Assertions #

  • The sectioning element “article” must not appear as a descendant of the “footer” element.
  • The sectioning element “article” must not appear as a descendant of the “address” element.

Tag omission #

An article element must have both a start tag and an end tag.

Permitted contexts #

asidetangential content # T

The aside element represents content that is tangentially related to the content that forms the main textual flow of a document.

Element-specific attributes #

Assertions #

  • The sectioning element “aside” must not appear as a descendant of the “footer” element.
  • The sectioning element “aside” must not appear as a descendant of the “address” element.

Tag omission #

An aside element must have both a start tag and an end tag.

Permitted contexts #

Details #

In printed documents, the type of tangential content that the aside element represents is sometimes formatted as a sidebar or annotation or footnote.

audioaudio stream # T

An audio element represents an audio stream.

Element-specific attributes #

autoplay =
Instructs the UA to automatically begin playback of the audio stream as soon as it can do so without stopping.
autobuffer =
Instructs the UA that downloading the entire audio stream optimistically is considered worthwhile.
controls =
Instructs the UA to expose a user interface for controlling playback of the audio stream.
loop =
Instructs the UA to seek back to the start of the audio stream upon reaching the end.
src = uri
The URL for the audio stream.

Assertions #

  • The interactive element “audio” with the attribute “controls” must not appear as a descendant of the “a” element.
  • The interactive element “audio” with the attribute “controls” must not appear as a descendant of the “button” element.

Tag omission #

An audio element must have both a start tag and an end tag.

boffset text typically styled in bold # T

The b element represents a span of text offset from its surrounding content without conveying any extra importance; for example, keywords in a document abstract, product names in a review, or other spans of text whose typical typographic presentation is bold text.

Element-specific attributes #

Tag omission #

A b element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

b {
font-weight: bolder; }

basebase URL # T

The base element specifies a document-wide base URL for the purposes of resolving relative URLs, and document-wide default browsing context name for the purposes of following hyperlinks.

Content model #

base = empty & base.attrs

Attribute model #

Element-specific attributes #

href = uri
The base URL for the document.
target = browsing-context-name-or-keyword
A browsing context name or keyword for use in following hyperlinks.

Tag omission #

The base element is a void element. A base element must have a start tag but must not have an end tag.

Permitted contexts #

bdoBiDi override # T

The bdo element provides a means to specify a direction override of the Unicode BiDi algorithm.

Attribute model #

Assertions #

  • A “bdo” element must have an “dir” attribute.

Tag omission #

A bdo element must have both a start tag and an end tag.

Permitted contexts #

blockquoteblock quotation # T

The blockquote element represents a section that is quoted from another source.

Element-specific attributes #

cite = uri
A URL referencing the original source for the quoted material.

Tag omission #

A blockquote element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

blockquote {
display: block;
margin: 1em 40px 1em 40px; }

bodydocument body # T

The body element represents the body of a document (as opposed to the document’s metadata).

Tag omission #

A body element's start tag may be omitted if the first thing inside the body element is not a space character or a comment, except if the first thing inside the body element is a script or style element.

A body element's end tag may be omitted if the body element is not immediately followed by a comment and the element is either not empty or its start tag has not been omitted.

Permitted contexts #

Typical default display properties #

body {
display: block;
margin: 8px; }
body:focus {
outline: none; }

brline break # T

The br element represents a line break.

Content model #

br = empty & br.attrs

Attribute model #

Tag omission #

The br element is a void element. A br element must have a start tag but must not have an end tag.

Permitted contexts #

button # T

button =
button.submit | button.reset | button.button

A button element with no type attribute specified represents the same thing as a button element with its type attribute set to "submit".

button type=submitsubmit button # T

The button element with a type attribute whose value is "submit" represents a button for submitting a form.

Element-specific attributes #

type = "submit"
Specifies that its button element is a button for submitting a form.
value = string
The value part of the name/value pair associated with this button for the purposes of form submission.

Assertions #

  • The interactive element “button” must not appear as a descendant of the “a” element.
  • The interactive element “button” must not appear as a descendant of the “button” element.
  • Any “button” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.

Tag omission #

A button element must have both a start tag and an end tag.

Permitted contexts #

button type=resetreset button # T

The button element with a type attribute whose value is "reset" represents a button for resetting a form.

Element-specific attributes #

type = "reset"
Specifies that its button element is a button for resetting a form.
value = string
The value part of the name/value pair associated with this button for the purposes of form submission.

Assertions #

  • The interactive element “button” must not appear as a descendant of the “a” element.
  • The interactive element “button” must not appear as a descendant of the “button” element.
  • Any “button” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.

Tag omission #

A button element must have both a start tag and an end tag.

Permitted contexts #

button type=buttonbutton with no additional semantics # T

The button element with a type attribute whose value is "button" represents a button with no additional semantics.

Element-specific attributes #

type = "button"
Specifies that its button element is a button with no additional semantics.
value = string
The value part of the name/value pair associated with this button for the purposes of form submission.

Assertions #

  • The interactive element “button” must not appear as a descendant of the “a” element.
  • The interactive element “button” must not appear as a descendant of the “button” element.
  • Any “button” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.

Tag omission #

A button element must have both a start tag and an end tag.

Permitted contexts #

canvascanvas for dynamic graphics # T

The canvas element represents a resolution-dependent bitmap canvas, which can be used for dynamically rendering of images such as game graphics, graphs, or other images.

Element-specific attributes #

height = integer.non-negative
The height of the canvas, in CSS pixels.
width = integer.non-negative
The width of the canvas, in CSS pixels.

Tag omission #

A canvas element must have both a start tag and an end tag.

captiontable title # T

The caption element represents the title of the table that is its parent.

Element-specific attributes #

Tag omission #

A caption element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

caption {
display: table-caption;
text-align: center; }

citecited title of a work # T

The cite element represents the cited title of a work; for example, the title of a book mentioned within the main text flow of a document.

Element-specific attributes #

Tag omission #

A cite element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

cite {
font-style: italic; }

codecode fragment # T

The code element represents a fragment of computer code.

Element-specific attributes #

Tag omission #

A code element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

code {
font-family: monospace; }

coltable column # T

The col element represents one or more columns in the column group represented by its colgroup parent.

Content model #

col = empty & col.attrs

Attribute model #

Element-specific attributes #

span = integer.positive
Specifies the number of columns “spanned” by its col element; the col element shares its attributes with all the columns it spans.

Tag omission #

The col element is a void element. A col element must have a start tag but must not have an end tag.

Permitted contexts #

Typical default display properties #

col {
display: table-column; }

colgrouptable column group # T

The colgroup element represents a group of one or more columns in the table that is its parent.

Element-specific attributes #

span = integer.positive
The number of columns in the group.

Tag omission #

A colgroup element's start tag may be omitted if the first thing inside the colgroup element is a col element, and if the element is not immediately preceded by another colgroup element whose end tag has been omitted.

A colgroup element's end tag may be omitted if the colgroup element is not immediately followed by a space character or a comment.

Permitted contexts #

Typical default display properties #

colgroup {
display: table-column-group; }

command # T

command =
command.command | command.radio | command.checkbox

A command element with no type attribute specified represents the same thing as a command element with its type attribute set to "command".

command type=commandcommand with an associated action # T

The command element with a type attribute whose value is "command" represents a command with an associated action.

Content model #

Element-specific attributes #

type = "command"
Specifies that its command element is a command with an associated action.
label = string
The name of the command, as shown to the user.
icon = uri
A URL for an image that represents the command.
disabled = "disabled" | ""
Specifies that the command is not currently available.

Tag omission #

The command element is a void element. A command element must have a start tag but must not have an end tag.

command type=radioselection of one item from a list of items # T

The command element with a type attribute whose value is "radio" represents a selection of one item from a list of items.

Content model #

Element-specific attributes #

type = "radio"
Specifies that its command element represents a selection of one item from a list of items.
radiogroup = string
The name of the group of commands that will be toggled when the command itself is toggled.
checked = "checked" | ""
Specifies that the command is selected.
label = string
The name of the command, as shown to the user.
icon = uri
A URL for an image that represents the command.
disabled = "disabled" | ""
Specifies that the command is not currently available.

Tag omission #

The command element is a void element. A command element must have a start tag but must not have an end tag.

command type=checkboxstate or option that can be toggled # T

The command element with a type attribute whose value is "checkbox" represents a state or option that can be toggled.

Content model #

Element-specific attributes #

type = "checkbox"
Specifies that its command element represents a state or option that can be toggled.
checked = "checked" | ""
Specifies that the command is selected.
label = string
The name of the command, as shown to the user.
icon = uri
A URL for an image that represents the command.
disabled = "disabled" | ""
Specifies that the command is not currently available.

Tag omission #

The command element is a void element. A command element must have a start tag but must not have an end tag.

datalistpredefined options for other controls # T

The datalist element represents a set of option elements that represent predefined options for other controls.

Attribute model #

Tag omission #

A datalist element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

datalist {
display: none; }

Details #

The contents of the datalist element represent fallback content for legacy user agents, intermixed with option elements that represent the predefined options.

dddescription or span of discourse # T

The dd element represents either a description or a span of discourse.

Element-specific attributes #

Tag omission #

A dd element must have a start tag.

A dd element's end tag may be omitted if the dd element is immediately followed by another dd element or a dt element, or if there is no more content in the parent element.

Permitted contexts #

Typical default display properties #

dd {
display: block;
margin-start: 40px; }

Details #

If a dd element’s parent is a dl element, then the dd element represents the description (or value) part of a term-description (name-value) grouping in a description list.

If a dd element’s parent is a dialog element, then the dd element represents a span of discourse (a quote) in a talker-discourse (speaker-quote) pair in a conversation.

deldeleted text # T

The del element represents a range of text that has been deleted from a document.

Attribute model #

Element-specific attributes #

cite = uri
The address of a document that explains why the text was deleted.
datetime = datetime
The time and date when the text was deleted.

Tag omission #

A del element must have both a start tag and an end tag.

Typical default display properties #

del {
text-decoration: line-through; }

detailsadditional on-demand information # T

The details element represents additional information or controls which the user can obtain on demand.

Element-specific attributes #

open = "open" | ""
Specifies that the contents of the details element should be shown to the user.

Assertions #

  • The interactive element “details” must not appear as a descendant of the “a” element.
  • The interactive element “details” must not appear as a descendant of the “button” element.

Tag omission #

A details element must have both a start tag and an end tag.

Permitted contexts #

dfndefining instance # T

The dfn element represents the defining instance of a term.

Element-specific attributes #

Assertions #

  • The “dfn” element must not contain any nested “dfn” elements.

Tag omission #

A dfn element must have both a start tag and an end tag.

Permitted contexts #

dialogconversation # T

The dialog element represents a conversation.

Content model #

Element-specific attributes #

Tag omission #

A dialog element must have both a start tag and an end tag.

Permitted contexts #

Details #

The dialog element represents a conversation, which consists of zero or more talker-discourse (speaker-quote) pairs; each pair associates a “talker”/speaker (represented by a dt element) with a span of span of discourse/quote (represented by a dd element).

divgeneric flow container # T

The div element is a generic container for flow content that by itself does not represent anything.

Element-specific attributes #

Tag omission #

A div element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

div {
display: block; }

Details #

The div can be used with attributes such as class, lang/xml:lang, and title to add additional semantics and structure to flow content.

dldescription list # T

The dl element represents a description list.

Content model #

Element-specific attributes #

Tag omission #

A dl element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

dl {
display: block;
margin: 1em 0 1em 0; }

Details #

The dl element represents a description list, which consists of zero or more term-description (name-value) groupings; each grouping associates one or more terms/names (the contents of dt elements) with one or more descriptions/values (the contents of dd elements).

dtterm or “talker”/speaker # T

The dt element represents either a term or a “talker”/speaker.

Element-specific attributes #

Tag omission #

A dt element must have a start tag.

A dt element's end tag may be omitted if the dt element is immediately followed by another dt element or a dd element.

Permitted contexts #

Typical default display properties #

dt {
display: block; }

Details #

If a dt element’s parent is a dl element, then the dt element represents the term (or name) part of a term-description (name-value) grouping in a description list.

If a dt element’s parent is a dialog element, then the dt element represents a “talker” (or speaker) part of a talker-discourse (speaker-quote) pair in a conversation.

ememphatic stress # T

The em element represents a span of text with emphatic stress.

Element-specific attributes #

Tag omission #

An em element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

em {
font-style: italic; }

embedintegration point for plugins # T

The embed element represents an integration point for external content.

Content model #

embed = empty & embed.attrs

Attribute model #

embed.attrs.other = Any other attribute that has no namespace.

Element-specific attributes #

src = uri
The address of the content being embedded.
type = mimetype
The MIME type of the plugin to instantiate.
height = integer.positive
The height of the embedded content, in CSS pixels.
width = integer.positive
The width of the embedded content, in CSS pixels.

Tag omission #

The embed element is a void element. An embed element must have a start tag but must not have an end tag.

Permitted contexts #

Details #

The embed element represents an integration point for external content — typically, non-HTML content such as an application or some other type of interactive content which involves use of a third-party plugin as a handler (rather than being natively supported by the UA).

fieldsetset of related form controls # T

The fieldset element represents a set of form controls grouped under a common name.

Element-specific attributes #

Tag omission #

A fieldset element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

fieldset {
display: block;
margin-left: 2px;
margin-right: 2px;
padding: 0.35em 0.75em 0.625em;
border: 2px groove (internal value); }

figurefigure with optional caption # T

The figure element represents some flow content, optionally with a caption, which can be moved away from the main flow of the document without affecting the document’s meaning.

Attribute model #

Tag omission #

A figure element must have both a start tag and an end tag.

Permitted contexts #

formuser-submittable form # T

The form element represents a user-submittable form.

Element-specific attributes #

action = uri
The submission action for the form.
method = ( "get" | "post") | ( "put" | "delete")
The HTTP method with which a UA is meant to associate this element for form submission.
enctype = ( "application/x-www-form-urlencoded" | "multipart/form-data") | "text/plain"
A MIME type with which a UA is meant to associate the form contents for form submission.
accept-charset = charsetlist
Specifies the character encodings used for form submission.
novalidate = "novalidate" | ""
Specifies that the element represents a form that is not meant to be validated during form submission.
target = browsing-context-name-or-keyword
A browsing context or keyword that represents the target of the form.
autocomplete = "on" | "off"
Specifies whether the element represents a form for which by default a UA is meant to store the values entered into its input elements by the user (so that the UA can prefill the form later).

Assertions #

  • The “form” element must not contain any nested “form” elements.

Tag omission #

A form element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

form {
display: block;
margin-top: 0em; }

h1heading (level 1) # T

The h1 through h6 elements are headings for the sections with which they are associated.

Attribute model #

Assertions #

  • The “h1” element must not appear as a descendant of the “footer” element.
  • The “h1” element must not appear as a descendant of the “address” element.

Tag omission #

An h1 element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

h1 {
display: block;
font-size: 2em;
margin: .67em 0 .67em 0;
font-weight: bold; }

h2heading (level 2) # T

The h1 through h6 elements are headings for the sections with which they are associated.

Attribute model #

Assertions #

  • The “h2” element must not appear as a descendant of the “footer” element.
  • The “h2” element must not appear as a descendant of the “address” element.

Tag omission #

An h2 element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

h2 {
display: block;
font-size: 1.5em;
margin: .83em 0 .83em 0;
font-weight: bold; }

h3heading (level 3) # T

The h1 through h6 elements are headings for the sections with which they are associated.

Attribute model #

Assertions #

  • The “h3” element must not appear as a descendant of the “footer” element.
  • The “h3” element must not appear as a descendant of the “address” element.

Tag omission #

An h3 element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

h3 {
display: block;
font-size: 1.17em;
margin: 1em 0 1em 0;
font-weight: bold; }

h4heading (level 4) # T

The h1 through h6 elements are headings for the sections with which they are associated.

Attribute model #

Assertions #

  • The “h4” element must not appear as a descendant of the “footer” element.
  • The “h4” element must not appear as a descendant of the “address” element.

Tag omission #

An h4 element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

h4 {
display: block;
margin: 1.33em 0 1.33em 0;
font-weight: bold; }

h5heading (level 5) # T

The h1 through h6 elements are headings for the sections with which they are associated.

Attribute model #

Assertions #

  • The “h5” element must not appear as a descendant of the “footer” element.
  • The “h5” element must not appear as a descendant of the “address” element.

Tag omission #

An h5 element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

h5 {
display: block;
font-size: .83em;
margin: 1.67em 0 1.67em 0;
font-weight: bold; }

h6heading (level 6) # T

The h1 through h6 elements are headings for the sections with which they are associated.

Attribute model #

Assertions #

  • The “h6” element must not appear as a descendant of the “footer” element.
  • The “h6” element must not appear as a descendant of the “address” element.

Tag omission #

An h6 element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

h6 {
display: block;
font-size: .67em;
margin: 2.33em 0 2.33em 0;
font-weight: bold; }

hgroupheading group # T

The hgroup element represents a group of headings.

Content model #

Attribute model #

Tag omission #

A hgroup element must have both a start tag and an end tag.

Permitted contexts #

Details #

The hgroup element is typically used to group a set of one or more h1-h6 elements — to group, for example, a section title and an accompanying subtitle.

hrthematic break # T

The hr element represents a paragraph-level thematic break.

Content model #

hr = empty & hr.attrs

Attribute model #

Tag omission #

The hr element is a void element. An hr element must have a start tag but must not have an end tag.

Permitted contexts #

Typical default display properties #

hr {
display: block;
margin: 0.5em auto;
border-style: inset;
border-width: 1px; }

Details #

Some examples of thematic breaks that can be marked up using the hr element include a scene change in a story, or a transition to another topic within a section of a reference book.

htmlroot element # T

The html element represents the root of a document.

Content model #

Attribute model #

Element-specific attributes #

manifest = uri
The address of the document’s application cache manifest (which controls caching of content for offline use).

Tag omission #

An html element's start tag may be omitted if the first thing inside the html element is not a comment.

An html element's end tag may be omitted if the html element is not immediately followed by a comment and the element contains a body element that is either not empty or whose start tag has not been omitted.

Typical default display properties #

html {
display: block; }
html:focus {
outline: none; }

ioffset text typically styled in italic # T

The i element represents a span of text in an alternate voice or mood, or otherwise offset from the normal prose (content whose typical typographic presentation is italicized).

Element-specific attributes #

Tag omission #

An i element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

i {
font-style: italic; }

Details #

Some examples of spans that might use the i element include a taxonomic designation, a technical term, an idiomatic phrase from another language, a thought, a ship name, or some other prose whose typical typographic presentation is italicized.

iframenested browsing context (inline frame) # T

The iframe element introduces a new nested browsing context.

Element-specific attributes #

src = uri
The address of a page that the nested browsing context is to contain.
name = browsing-context-name
A valid browsing context name.
width = integer.positive
The width of the iframe, in CSS pixels.
height = integer.positive
The height of the iframe, in CSS pixels.
sandbox = sandbox-allow-list
Instructs the UA to enable a set of extra restrictions on any content hosted by the iframe.
seamless = "seamless" | ""
Instructs the UA that the iframe element's browsing context is to be rendered in a manner that makes it appear to be part of the containing document (seamlessly included in the parent document).

Tag omission #

An iframe element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

iframe {
border: 2px inset; }

imgimage # T

The img element represents an image.

Content model #

img = empty & img.attrs

Element-specific attributes #

src = uri
A URL referencing a non-interactive, optionally animated, image that is neither paged nor scripted.
alt = normal-character-data
The fallback content for the image.
height = integer.non-negative
The height of the image, in CSS pixels.
width = integer.non-negative
The width of the image, in CSS pixels.
usemap = hash-name
A hash-name reference to a map element with which to associate the image.
ismap = "ismap" | ""
Specifies that its img element provides access to a server-side image map.
border = zero
Specifies that its img element represents a borderless image.

Assertions #

  • The element “img” with the attribute “usemap” must not appear as a descendant of the “a” element.
  • The element “img” with the attribute “usemap” must not appear as a descendant of the “button” element.
  • The “img” element with the “ismap” attribute set must have an “a” ancestor with the “href” attribute.

Tag omission #

The img element is a void element. An img element must have a start tag but must not have an end tag.

Permitted contexts #

input type=texttext-input field # T

The input element with a type attribute whose value is "text" represents a one-line plain text edit control for the input element’s value.

Content model #

Element-specific attributes #

type = "text"
Specifies that its input element is a one-line plain-text edit control for the input element’s value.
value = string
Specifies a value for this input element.

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

input type=passwordpassword-input field # T

The input element with a type attribute whose value is "password" represents a one-line plain-text edit control for entering a password.

Element-specific attributes #

type = "password"
Specifies that its input element is a one-line plain-text edit control for entering a password.
value = string
Specifies a value for this input element.

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

input type=checkboxcheckbox # T

The input element with a type attribute whose value is "checkbox" represents a state or option that can be toggled.

Element-specific attributes #

type = "checkbox"
Specifies that its input element represents a state or option that can be toggled.
value = string
Specifies a value for the input element.

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

input type=radioradio button # T

The input element with a type attribute whose value is "radio" represents a selection of one item from a list of items (a radio button).

Content model #

Element-specific attributes #

type = "radio"
Specifies that its input element represents a selection of one item from a list of items.
value = string
Specifies a value for the input element.

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

input type=buttonbutton # T

The input element with a type attribute whose value is "button" represents a button with no additional semantics.

Element-specific attributes #

type = "button"
Specifies that its input element is a button with no additional semantics.
value = string
Specifies a value for the input element.

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

input type=submitsubmit button # T

The input element with a type attribute whose value is "submit" represents a button for submitting a form.

Element-specific attributes #

type = "submit"
Specifies that its input element is a button for submitting a form.
value = string
Specifies a value for the input element.

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

input type=resetreset button # T

The input element with a type attribute whose value is "reset" represents a button for resetting a form.

Content model #

Element-specific attributes #

type = "reset"
Specifies that its input element is a button for resetting a form.
value = string
Specifies a value for the input element.

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

input type=filefile upload control # T

The input element with a type attribute whose value is "file" represents a list of file items, each consisting of a file name, a file type, and a file body (the contents of the file).

Content model #

Element-specific attributes #

type = "file"
Specifies that its input element represents a list of file items.
accept = mimetypelist
Provides the UA with a hint of what file types the server is able to accept.

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

input type=hiddenhidden input control # T

The input element with a type attribute whose value is "hidden" represents a value that is not intended to be examined or manipulated by the user.

Element-specific attributes #

type = "hidden"
Specifies that its input element represents a value that is not intended to be examined or manipulated by the user.
value = string
Specifies a value for the input element.

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

input type=imageimage-coordinates input control # T

The input element with a type attribute whose value is "image" represents either an image from which the UA enables a user to interactively select a pair of coordinates and submit the form, or alternatively a button from which the user can submit the form.

Content model #

Element-specific attributes #

type = "image"
Specifies that its input element represents either an image from which the UA enables a user to interactively select a pair of coordinates and submit the form, or alternatively a button from which the user can submit the form.
alt = string
Provides a textual label for an alternative button for users and UAs who cannot use the image specified by the src attribute.
src = uri
Specifies the location of an image.
height = integer.positive
The height of the image, in CSS pixels.
width = integer.positive
The width of the image, in CSS pixels.

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

input type=datetimeglobal date-and-time input control # T

The input element with a type attribute whose value is "datetime" represents a control for setting the element’s value to a string representing a global date and time (with timezone information).

Element-specific attributes #

type = "datetime"
Specifies that its input element is a control for setting the element’s value to a string representing a global date and time.
min = datetime
The expected lower bound for the element’s value.
max = datetime
The expected upper bound for the element’s value.
value = datetime
A string representing a global date and time.

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

input type=datetime-locallocal date-and-time input control # T

The input element with a type attribute whose value is "datetime-local" represents a control for setting the element’s value to a string representing a local date and time (with no timezone information).

Element-specific attributes #

type = "datetime-local"
Specifies that its input element is a control for setting the element’s value to a string representing a local date and time.
min = datetime-local
The expected lower bound for the element’s value.
max = datetime-local
The expected upper bound for the element’s value.
value = datetime-local
A string representing a local date and time.

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

input type=datedate input control # T

The input element with a type attribute whose value is "date" represents a control for setting the element’s value to a string representing a date.

Content model #

Element-specific attributes #

type = "date"
Specifies that its input element is a control for setting the element’s value to a string representing a date.
min = date
The expected lower bound for the element’s value.
max = date
The expected upper bound for the element’s value.
value = date
A string representing a date.

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

input type=monthyear-and-month input control # T

The input element with a type attribute whose value is "month" represents a control for setting the element’s value to a string representing a month.

Content model #

Element-specific attributes #

type = "month"
Specifies that its input element is a control for setting the element’s value to a string representing a month.
min = month
The expected lower bound for the element’s value.
max = month
The expected upper bound for the element’s value.
value = month
A string representing a month.

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

input type=timetime input control # T

The input element with a type attribute whose value is "time" represents a control for setting the element’s value to a string representing a time (with no timezone information).

Content model #

Element-specific attributes #

type = "time"
Specifies that its input element is a control for setting the element’s value to a string representing a time.
min = time
The expected lower bound for the element’s value.
max = time
The expected upper bound for the element’s value.
value = time
A string representing a time (with no timezone information).

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

input type=weekyear-and-week input control # T

The input element with a type attribute whose value is "week" represents a control for setting the element’s value to a string representing a week.

Content model #

Element-specific attributes #

type = "week"
Specifies that its input element is a control for setting the element’s value to a string representing a week.
min = week
The expected lower bound for the element’s value.
max = week
The expected upper bound for the element’s value.
value = week
A string representing a week.

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

input type=numbernumber input control # T

The input element with a type attribute whose value is "number" represents a precise control for setting the element’s value to a string representing a number.

Element-specific attributes #

type = "number"
Specifies that its input element is a precise control for setting the element’s value to a string representing a number.
min = float
The expected lower bound for the element’s value.
max = float
The expected upper bound for the element’s value.
value = float
A string representing a number.

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

input type=rangeimprecise number-input control # T

The input element with a type attribute whose value is "range" represents an imprecise control for setting the element’s value to a string representing a number.

Content model #

Element-specific attributes #

type = "range"
Specifies that its input element is an imprecise control for setting the element’s value to a string representing a number.
min = float
The expected lower bound for the element’s value.
max = float
The expected upper bound for the element’s value.
value = float
A string representing a number.

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

input type=emaile-mail address input control # T

The input element with a type attribute whose value is "email" represents a control for editing a list of e-mail addresses given in the element’s value.

Content model #

Element-specific attributes #

type = "email"
Specifies that its input element is a control for editing a list of e-mail addresses given in the element’s value.
value.multiple = emailaddresslist
A list of e-mail addresses.
value.single = emailaddress
A single e-mail address.

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

input type=urlURL input control # T

The input element with a type attribute whose value is "url" represents a control for editing an absolute URL given in the element’s value.

Content model #

Element-specific attributes #

type = "url"
Specifies that its input element is a control for editing an absolute URL given in the element’s value.
value = "" | uri.absolute
An absolute URL.

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

input type=searchsearch field # T

The input element with a type attribute whose value is "search" represents a one-line plain-text edit control for entering one or more search terms.

Element-specific attributes #

type = "search"
Specifies that its input element is a one-line plain-text edit control for entering one or more search terms.
value = string
Specifies a value for this input element.

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

input type=teltelephone-number-input field # T

The input element with a type attribute whose value is "tel" represents a one-line plain-text edit control for entering a telephone number.

Content model #

Element-specific attributes #

type = "tel"
Specifies that its input element is a one-line plain-text edit control for entering a telephone number.
value = string
Specifies a value for this input element.

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

input type=colorcolor # T

The input element with a type attribute whose value is "color" represents a color-well control, for setting the element’s value to a string representing a simple color.

Content model #

Element-specific attributes #

type = "color"
Specifies that its input element is a color-well control, for setting the element’s value to a string representing a simple color.
value = color
An string representing a simple color.

Assertions #

  • The interactive element “input” must not appear as a descendant of the “a” element.
  • The interactive element “input” must not appear as a descendant of the “button” element.
  • Any “input” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “list” attribute of the “input” element must refer to a “datalist” element or to a “select” element.

Tag omission #

The input element is a void element. An input element must have a start tag but must not have an end tag.

Permitted contexts #

insinserted text # T

The ins element represents a range of text that has been inserted (added) to a document.

Attribute model #

Element-specific attributes #

cite = uri
The address of a document that explains why the text was added.
datetime = datetime
The time and date when the text was added.

Tag omission #

An ins element must have both a start tag and an end tag.

Typical default display properties #

ins {
text-decoration: underline; }

kbduser input # T

The kbd element represents user input.

Element-specific attributes #

Tag omission #

A kbd element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

kbd {
font-family: monospace; }

Details #

The kbd element typically represents keyboard input, though it may also represent other input, such as voice commands.

keygenkey-pair generator/input control # T

The keygen element represents a control for generating a public-private key pair and for submitting the public key from that key pair.

Content model #

Element-specific attributes #

challenge = string
A challenge string that is submitted along with the public key.
keytype = "rsa"
The type of key generated.

Assertions #

  • The interactive element “keygen” must not appear as a descendant of the “a” element.
  • The interactive element “keygen” must not appear as a descendant of the “button” element.
  • Any “keygen” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.

Tag omission #

A keygen element must have both a start tag and an end tag.

Permitted contexts #

labelcaption for a form control # T

The label element represents a caption for a form control.

Element-specific attributes #

for = idref
Identifies a form control for which the label is a caption.

Assertions #

  • The “label” element must not contain any nested “label” elements.
  • The “label” element may contain at most one “input”, “button”, “select”, or “textarea” descendant.
  • The “for” attribute of the “label” element must refer to a form control.

Tag omission #

A label element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

label {
cursor: default; }

legendtitle or explanatory caption # T

The legend element represents a title or explanatory caption for the rest of the contents of the legend element’s parent element.

Element-specific attributes #

Tag omission #

A legend element must have both a start tag and an end tag.

Typical default display properties #

legend {
display: block;
padding-left: 2px;
padding-right: 2px;
border: none; }

lilist item # T

The li element represents a list item.

Element-specific attributes #

value = integer
The ordinal value of the list item.

Tag omission #

An li element must have a start tag.

An li element's end tag may be omitted if the li element is immediately followed by another li element or if there is no more content in the parent element.

Typical default display properties #

li {
display: list-item; }

mapimage-map definition # T

The map element, in conjunction with any area element descendants, defines an image map.

Attribute model #

Element-specific attributes #

name = name
A name by which the map can be referenced.

Assertions #

  • The “id” attribute on a “map” element must have an the same value as the “name” attribute.

Tag omission #

A map element must have both a start tag and an end tag.

Additional constraints #

If the id attribute and name attribute specified on the map element, both attributes must have the same value.

Typical default display properties #

map {
display: inline; }

markmarked (highlighted) text # T

The mark element represents a run of text in one document marked or highlighted for reference purposes, due to its relevance in another context.

Attribute model #

Tag omission #

A mark element must have both a start tag and an end tag.

Permitted contexts #

meta namename-value metadata # T

The meta element with a name attribute sets document metadata in the form of name/value pairs.

Content model #

Element-specific attributes #

name = string
Specifies the name part of a name/value pair.
content = string
Specifies the value part of a name/value pair.

Tag omission #

The meta element is a void element. A meta element must have a start tag but must not have an end tag.

Additional constraints #

The name attribute on the meta element must be either a defined metadata name or a registered metadata name.

A defined metadata name is any of the following:

description
When the name attribute is set to "description", the value of the content attribute must be a string that describes the page.
generator
When the name attribute is set to "generator", the value of the content attribute must be a string that identifies the software used to generate the document.
application-name
When the name attribute is set to "application-name", the value of the content attribute must be a string representing the name of the Web application that the page represents.

A registered metadata name is any metadata name registered in the central MetaExtensions registration page.

meta http-equiv=refresh“refresh” pragma directive # T

The meta element with a http-equiv attribute whose value is "refresh" represents a pragma directive that specifies either a number of seconds after which to reload the current page, or a number of seconds after which to load a different page in place of the current page, and the URL for the replacement page.

Element-specific attributes #

http-equiv = "refresh"
Indicates that the meta element is a pragma directive that specifies either a number of seconds after which to reload the current page, or a number of seconds after which to load a different page in place of the current page, and the URL for the replacement page.
content = refresh
Specifies one of the following:
  • the number of seconds after which to reload the current page
  • the number of seconds after which to load a different page in place of the current page, and the URL for the replacement page

Tag omission #

The meta element is a void element. A meta element must have a start tag but must not have an end tag.

meta http-equiv=default-style“preferred stylesheet” pragma directive # T

The meta element with a http-equiv attribute whose value is "default-style" represents a pragma directive that specifies the document’s preferred stylesheet.

Element-specific attributes #

http-equiv = "default-style"
Indicates that the meta element is a pragma directive that specifies the document’s preferred stylesheet.
content = default-style
Specifies the name of the document’s preferred stylesheet. The name must meet either of the following sets of constraints:
  • The name must match the value of the title attribute on a link element in the same document, and that link element must have an href attribute that references the location of a CSS stylesheet.
  • The name must match the value of the title attribute on a style element in the same document, and the contents of that element must be a CSS stylesheet.

Tag omission #

The meta element is a void element. A meta element must have a start tag but must not have an end tag.

meta http-equiv=content-language“default language” pragma directive # T

The meta element with a http-equiv attribute whose value is "content-language" represents a pragma directive that specifies a document-wide default language.

Element-specific attributes #

http-equiv = "content-language"
Indicates that the meta element is a pragma directive that specifies a document-wide default language.
content = langcode
Specifies a language to use as the document-wide default language.

Tag omission #

The meta element is a void element. A meta element must have a start tag but must not have an end tag.

meta charsetdocument character-encoding declaration # T

The meta element with a charset attribute represents a character encoding declaration.

Content model #

Element-specific attributes #

charset = charset
Specifies a character encoding name.

Tag omission #

The meta element is a void element. A meta element must have a start tag but must not have an end tag.

Additional constraints #

There must not be more than one meta element per document with a charset attribute.

If a document contains a meta element with a charset attribute, then the document must not contain a meta element in the encoding declaration state.

meta http-equiv=content-typedocument character-encoding declaration # T

A meta element with a http-equiv attribute whose value is "content-type" and which has an accompanying content attribute and value represents a character encoding declaration.

Element-specific attributes #

http-equiv = "content-type"
Indicates that the meta element is in the encoding declaration state and represents a character encoding declaration.
content = meta-charset
A specially formatted string providing a character encoding name.

Tag omission #

The meta element is a void element. A meta element must have a start tag but must not have an end tag.

Additional constraints #

A meta element in the encoding declaration state may be used in a document in the HTML syntax, but it must not be used in a document in the XML syntax.

There must not be more than one meta element in the encoding declaration state per document.

If a document contains a meta element in the encoding declaration state, then the document must not contain a meta element with a charset attribute.

Details #

A meta element with a http-equiv attribute whose value is "content-type" and which has an accompanying content attribute and value is said to be in the encoding declaration state.

meterscalar gauge # T

The meter element represents a scalar gauge providing a measurement within a known range, or a fractional value.

Element-specific attributes #

value = float
The “measured” value shown by meter.
min = float
The lower bound of the range for the meter.
low = float
The point that marks the upper boundary of the “low” segment of the meter.
high = float
The point that marks the lower boundary of the “high” segment of the meter.
max = float
The upper bound of the range for the meter.
optimum = float
The point that marks the “optimum” position for the meter.

Assertions #

  • The value of the “min” attribute must be less than or equal to the value of the “value” attribute.
  • The value of the “value” attribute must be greater than or equal to zero when the “min” attribute is absent.
  • The value of the “value” attribute must be less than or equal to the value of the “max” attribute.
  • The value of the “value” attribute must be less than or equal to one when the “max” attribute is absent.
  • The value of the “min” attribute must be less than or equal to the value of the “max” attribute.
  • The value of the “max” attribute must be greater than or equal to zero when the “min” attribute is absent.
  • The value of the “min” attribute must be less than or equal to one when the “max” attribute is absent.
  • The value of the “min” attribute must be less than or equal to the value of the “low” attribute.
  • The value of the “low” attribute must be greater than or equal to zero when the “min” attribute is absent.
  • The value of the “min” attribute must be less than or equal to the value of the “high” attribute.
  • The value of the “high” attribute must be greater than or equal to zero when the “min” attribute is absent.
  • The value of the “low” attribute must be less than or equal to the value of the “high” attribute.
  • The value of the “high” attribute must be less than or equal to the value of the “max” attribute.
  • The value of the “high” attribute must be less than or equal to one when the “max” attribute is absent.
  • The value of the “low” attribute must be less than or equal to the value of the “max” attribute.
  • The value of the “low” attribute must be less than or equal to one when the “max” attribute is absent.
  • The value of the “min” attribute must be less than or equal to the value of the “optimum” attribute.
  • The value of the “optimum” attribute must be greater than or equal to zero when the “min” attribute is absent.
  • The value of the “optimum” attribute must be less than or equal to the value of the “max” attribute.
  • The value of the “optimum” attribute must be less than or equal to one when the “max” attribute is absent.

Tag omission #

A meter element must have both a start tag and an end tag.

Permitted contexts #

noscriptfallback content for script # T

The noscript element is used to present different markup to user agents that don’t support scripting, by affecting how the document is parsed.

Attribute model #

Assertions #

  • The “noscript” element must not contain any nested “noscript” elements.

Tag omission #

A noscript element must have both a start tag and an end tag.

Additional constraints #

The noscript element must not be used in a document in the XML syntax.

objectgeneric external content # T

The object element represents external content.

Element-specific attributes #

data = uri
The address of the content.
type = mimetype
The MIME type of the content.
height = integer.positive
The height of the object, in CSS pixels.
width = integer.positive
The width of the object, in CSS pixels.
usemap = hash-name
A hash-name reference to a map element with which to associate the object.
name = browsing-context-name
A valid browsing context name.

Tag omission #

An object element must have both a start tag and an end tag.

Details #

The object element represents external content, which, depending on the type of the content, will either be treated as an image, as a nested browsing context, or as external content to be processed by a plugin.

olordered list # T

The ol element represents a list (or sequence) of items; that is, a list in which the items are intentionally ordered, such that changing the order would change the meaning of the list.

Content model #

Element-specific attributes #

start = integer
The ordinal value of the first list item.
reversed = "reversed" | ""
If present, indicates that the list is a descending list (…, 3, 2, 1).
If not present, indicates that the list is an ascending list (1, 2, 3, …).

Tag omission #

An ol element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

ol {
display: block;
list-style-type: decimal;
margin: 1em 0 1em 0;
padding-start: 40px; }

optgroupgroup of options # T

The optgroup element represents a group of option elements with a common label.

Content model #

Element-specific attributes #

label = string
Specifies the name of the group of options its optgroup element represents.

Tag omission #

An optgroup element must have a start tag.

An optgroup element's end tag may be omitted if the optgroup element is immediately followed by another optgroup element, or if there is no more content in the parent element.

Permitted contexts #

optionoption # T

The option element represents an option in a select control, or an option in a labelled set of options grouped together in an optgroup, or an option among the list of suggestions in a datalist.

Element-specific attributes #

selected = "selected" | ""
Specifies that this option is pre-selected.
label = string
Specifies a label for the option.
value = string
Specifies a value for the option.

Tag omission #

An option element must have a start tag.

An option element's end tag may be omitted if the option element is immediately followed by another option element, or if it is immediately followed by an optgroup element, or if there is no more content in the parent element.

outputresult of a calculation in a form # T

The output element represents the result of a calculation.

Element-specific attributes #

for = idrefs
Identifies one or more elements associated with the calculation whose result this output element represents.

Tag omission #

An output element must have both a start tag and an end tag.

Permitted contexts #

pparagraph # T

The p element represents a paragraph.

Element-specific attributes #

Tag omission #

A p element must have a start tag.

A p element's end tag may be omitted if the p element is immediately followed by an address, article, aside, blockquote, dialog, dir, div, dl, fieldset, footer, form, h1, h2, h3, h4, h5, h6, header, hr, menu, nav, ol, p, pre, section, table, or ul, element, or if there is no more content in the parent element and the parent element is not an a element.

Permitted contexts #

Typical default display properties #

p {
display: block;
margin: 1.0em 0px; }

paraminitialization parameters for plugins # T

The param element defines parameters for plugins invoked by object elements.

Content model #

param = empty & param.attrs

Attribute model #

Element-specific attributes #

name = string
The name of the parameter.
value = string
The value of the parameter.

Tag omission #

The param element is a void element. A param element must have a start tag but must not have an end tag.

Typical default display properties #

param {
display: none; }

prepreformatted text # T

The pre element represents a block of preformatted text, in which structure is represented by typographic conventions rather than by elements.

Element-specific attributes #

Tag omission #

A pre element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

pre {
display: block;
font-family: monospace;
white-space: pre;
margin: 1em 0; }

progressprogress indicator # T

The progress element represents the completion progress of a task.

Attribute model #

Element-specific attributes #

value = float.non-negative
Specifies how much of the task has been completed. The units are arbitrary and not specified.
max = float.positive
Specifies how much work the task requires in total. The units are arbitrary and not specified.

Assertions #

  • The value of the “value” attribute must be less than or equal to the value of the “max” attribute.
  • The value of the “value” attribute must be less than or equal to one when the “max” attribute is absent.

Tag omission #

A progress element must have both a start tag and an end tag.

Permitted contexts #

qquoted text # T

The q element represents phrasing content quoted from another source.

Element-specific attributes #

cite = uri
Specifies the address of the source of the quoted text.

Tag omission #

A q element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

q {
display: inline; }
q:before {
content: '"'; }
q:after {
content: '"'; }

rpruby parenthesis # T

The rp element can be used to provide parentheses around a ruby text component of a ruby annotation, to be shown by UAs that don’t support ruby annotations.

Element-specific attributes #

Tag omission #

An rp element must have a start tag.

An rp element's end tag may be omitted if the rp element is immediately followed by an rt or rp element, or if there is no more content in the parent element.

rtruby text # T

The rt element marks the ruby text component of a ruby annotation.

Element-specific attributes #

Tag omission #

An rt element must have a start tag.

An rt element's end tag may be omitted if the rt element is immediately followed by an rt or rp element, or if there is no more content in the parent element.

rubyruby annotation # T

The ruby element allows spans of phrasing content to be marked with ruby annotations.

Element-specific attributes #

Tag omission #

A ruby element must have both a start tag and an end tag.

Permitted contexts #

samp(sample) output # T

The samp element represents (sample) output from a program or computing system.

Element-specific attributes #

Tag omission #

A samp element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

samp {
font-family: monospace; }

scriptembedded script # T

The script element dynamic script and data blocks to be included in documents.

Attribute model #

script.attrs.embedded =
common.attrs & type? & language?
script.attrs.imported =
common.attrs & src & defer? & async? & type? & charset? & language?

Element-specific attributes #

type = mimetype
The language of the script or format of the data.
language = javascript
Specifies that the language of the script is JavaScript.
src = uri
The address of the external script to use.
defer = "defer" | ""
Specifies that script should be executed after the document has been parsed.
async = "async" | ""
Specifies that the script should be executed asynchronously, as soon as it becomes available.
charset = charset
The character encoding of the external script.

Assertions #

  • A “script” element with the “language="JavaScript"” attribute set must not have a “type” attribute whose value is not “text/javascript”.

Tag omission #

A script element must have both a start tag and an end tag.

Typical default display properties #

script {
display: none; }

sectionsection # T

The section element represents a section of a document, typically with a title or heading.

Element-specific attributes #

Assertions #

  • The sectioning element “section” must not appear as a descendant of the “footer” element.
  • The sectioning element “section” must not appear as a descendant of the “address” element.

Tag omission #

A section element must have both a start tag and an end tag.

Permitted contexts #

selectoption-selection form control # T

The select element represents a control for selecting among a list of options.

Element-specific attributes #

size = integer.positive
The number of options to show to the user.
multiple = "multiple" | ""
If present, indicates that its select element represents a control for selecting zero or more options from a list of options.
If not present, indicates that its select element represents a control for selecting a single option from a list of options.

Assertions #

  • The interactive element “select” must not appear as a descendant of the “a” element.
  • The interactive element “select” must not appear as a descendant of the “button” element.
  • Any “select” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.
  • The “select” element cannot have more than one selected “option” descendant unless the “multiple” attribute is specified.

Tag omission #

A select element must have both a start tag and an end tag.

Permitted contexts #

smallsmall print # T

The small element represents so-called “small print” such as legal disclaimers and caveats.

Element-specific attributes #

Tag omission #

A small element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

small {
font-size: smaller; }

sourcemedia source # T

The source element enables multiple media sources to be specified for audio video .

Content model #

Attribute model #

Element-specific attributes #

src = uri
The address of the media source.
type = mimetype
The type of the media source (used for helping the UA determine, before fetching this media source, if it can play it).
media = mediaquery
The intended media type of the media source (used for helping the UA determine, before fetching this media source, if it is useful to the user).

Tag omission #

The source element is a void element. A source element must have a start tag but must not have an end tag.

Details #

Each separate media source specified within a source element is a complete set of media data — for example, a complete video file, or a complete audio file).

spangeneric span # T

The span element is a generic wrapper for phrasing content that by itself does not represent anything.

Element-specific attributes #

Tag omission #

A span element must have both a start tag and an end tag.

Permitted contexts #

Details #

The span element is a can be used with attributes such as class, lang/xml:lang, and title to add additional semantics and structure to phrasing content.

strongstrong importance # T

The strong element represents a span of text with strong importance.

Element-specific attributes #

Tag omission #

A strong element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

strong {
font-weight: bolder; }

stylestyle (presentation) information # T

The style element allows style information to be embedded in documents.

Element-specific attributes #

type = mimetype
A valid MIME type that designates a styling language.
media = mediaquery
Specifies which media the styles apply to.
scoped = "scoped" | ""
Indicates that the specified style information is meant to apply only to the style element’s parent element, and that element’s child nodes. Otherwise, the specified styles are meant to apply to the entire document.

Tag omission #

A style element must have both a start tag and an end tag.

Typical default display properties #

style {
display: none; }

subsubscript # T

The sub element represents subscript.

Attribute model #

Tag omission #

A sub element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

sub {
vertical-align: sub;
font-size: smaller; }

supsuperscript # T

The sup element represents superscript.

Attribute model #

Tag omission #

A sup element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

sup {
vertical-align: super;
font-size: smaller; }

tabletable # T

The table element represents a table; that is, data with more than one dimension.

Element-specific attributes #

summary = string
A prose description of the structure of the table.

Tag omission #

A table element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

table {
display: table;
border-collapse: separate;
border-spacing: 2px;
border-color: gray; }

tbodytable row group # T

The tbody element represents a block of rows that consist of a body of data for its parent table element.

Content model #

Attribute model #

Tag omission #

A tbody element's start tag may be omitted if the first thing inside the tbody element is a tr element, and if the element is not immediately preceded by a tbody, thead, or tfoot element whose end tag has been omitted.

A tbody element's end tag may be omitted if the tbody element is immediately followed by a tbody or tfoot element, or if there is no more content in the parent element.

Permitted contexts #

Typical default display properties #

tbody {
display: table-row-group;
vertical-align: middle;
border-color: inherit; }

tdtable cell # T

The td element represents a data cell in a table.

Element-specific attributes #

colspan = integer.positive
Specifies the number of adjacent columns “spanned” by its td element.
rowspan = integer.non-negative
Specifies the number of following rows “spanned” by its td element.
headers = idrefs
Identifies one or more th elements that apply to its td.

Tag omission #

A td element must have a start tag.

A td element's end tag may be omitted if the td element is immediately followed by a td or th element, or if there is no more content in the parent element.

Permitted contexts #

Typical default display properties #

td {
display: table-cell;
vertical-align: inherit; }

textareatext input area # T

The textarea element represents a multi-line plain-text edit control for the element’s raw value.

Element-specific attributes #

rows = integer.positive
The number of lines of text for the UA to show.
wrap.hard = "hard"
Instructs the UA to insert line breaks into the submitted value of the textarea, such that each line has no more characters than the value specified by the cols attribute.
cols = integer.positive
The expected maximum number of characters per line of text for the UA to show.
wrap.soft = "soft"
Instructs the UA to add no line breaks to the submitted value of the textarea.

Assertions #

  • The interactive element “textarea” must not appear as a descendant of the “a” element.
  • The interactive element “textarea” must not appear as a descendant of the “button” element.
  • Any “textarea” descendant of a “label” element with a “for” attribute must have an ID value that matches that “for” attribute.

Tag omission #

A textarea element must have both a start tag and an end tag.

Permitted contexts #

Details #

The contents of the textarea element represent the control’s default value.

tfoottable footer row group # T

The tfoot element represents the block of rows that consist of the column summaries (footers) for its parent table element.

Content model #

Attribute model #

Tag omission #

A tfoot element must have a start tag.

A tfoot element's end tag may be omitted if the tfoot element is immediately followed by a tbody element, or if there is no more content in the parent element.

Permitted contexts #

Typical default display properties #

tfoot {
display: table-footer-group;
vertical-align: middle;
border-color: inherit; }

thtable header cell # T

The th element represents a header cell in a table.

Element-specific attributes #

scope = "row" | "col" | "rowgroup" | "colgroup"
Specifies what set of cells the th element applies to.
colspan = integer.positive
Specifies the number of adjacent columns “spanned” by its th element.
rowspan = integer.non-negative
Specifies the number of following rows “spanned” by its th element.
headers = idrefs
Identifies one or more th elements that apply to its th.

Tag omission #

A th element must have a start tag.

A th element's end tag may be omitted if the th element is immediately followed by a td or th element, or if there is no more content in the parent element.

Permitted contexts #

Typical default display properties #

th {
display: table-cell;
vertical-align: inherit; }
th {
font-weight: bold; }

theadtable heading group # T

The thead element represents the block of rows that consist of the column labels (headings) for its parent table element.

Content model #

Attribute model #

Tag omission #

A thead element must have a start tag.

A thead element's end tag may be omitted if the thead element is immediately followed by a tbody or tfoot element.

Permitted contexts #

Typical default display properties #

thead {
display: table-header-group;
vertical-align: middle;
border-color: inherit; }

timedate and/or time # T

The time element represents a date and/or time.

Attribute model #

Element-specific attributes #

datetime = date-or-time
Specifies the date or time that the element represents.

Tag omission #

A time element must have both a start tag and an end tag.

Permitted contexts #

Details #

If the datetime attribute is not specified, then the date or time represented is given by the contents of the element, and the character data in those contents must conform to the date-or-time datatype.

titledocument title # T

The title element represents the document’s title or name.

Attribute model #

Tag omission #

A title element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

title {
display: none; }

trtable row # T

The tr element represents a row of cells in a table.

Content model #

Element-specific attributes #

Tag omission #

A tr element must have a start tag.

A tr element's end tag may be omitted if the tr element is immediately followed by another tr element, or if there is no more content in the parent element.

Typical default display properties #

tr {
display: table-row;
vertical-align: inherit;
border-color: inherit; }

ulunordered list # T

The ul element represents an unordered list of items; that is, a list in which changing the order of the items would not change the meaning of list.

Content model #

Element-specific attributes #

Tag omission #

A ul element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

ul {
display: block;
list-style-type: disc;
margin: 1em 0 1em 0;
padding-start: 40px; }

varvariable or placeholder text # T

The var element represents either a variable in a mathematical expression or programming context, or placeholder text that the reader is meant to mentally replace with some other literal value.

Element-specific attributes #

Tag omission #

A var element must have both a start tag and an end tag.

Permitted contexts #

Typical default display properties #

var {
font-style: italic; }

videovideo # T

The video element represents a video or movie.

Element-specific attributes #

autoplay =
Instructs the UA to automatically begin playback of the video as soon as it can do so without stopping.
autobuffer =
Instructs the UA that the author believes that downloading the entire video optimistically will be worthwhile.
controls =
Instructs the UA to expose a user interface for controlling playback of the video.
loop =
Instructs the UA to seek back to the start of the video upon reaching the end.
poster = uri
The address of an image file for the UA to show while no video data is available.
height = integer.positive
The height of the video, in CSS pixels.
width = integer.positive
The width of the video, in CSS pixels.
src = uri
The URL for the video.

Assertions #

  • The interactive element “video” with the attribute “controls” must not appear as a descendant of the “a” element.
  • The interactive element “video” with the attribute “controls” must not appear as a descendant of the “button” element.

Tag omission #

A video element must have both a start tag and an end tag.

6. Common content models # T

This section defines content models that are referenced by a number of different element definitions in the Content model subsections of the per-element documentation in the HTML elements section.

7. Common attributes # T

This section defines attributes that are common to all elements in the HTML language.

7.01. Core attributes # T

accesskey = keylabellist
A key label or list of key labels with which to associate the element; each key label represents a keyboard shortcut which UAs can use to activate the element or give focus to the element.
class = tokens
A name of a classification, or list of names of classifications, to which the element belongs.
contenteditable = "true" | "false" | ""
Specifies whether the contents of the element are editable.
contextmenu = idref
Identifies a menu with which to associate the element as a context menu.
dir = "ltr" | "rtl"
Specifies the element’s text directionality.
draggable = "true" | "false"
Specifies whether the element is draggable.
hidden = "hidden" | ""
Specifies that the element represents an element that is not yet, or is no longer, relevant.
id = id
A unique identifier for the element.
There must not be multiple elements in a document that have the same id value.
lang = langcode
Specifies the primary language for the contents of the element and for any of the element’s attributes that contain text.
spellcheck = "true" | "false" | ""
Specifies whether the element represents an element whose contents are subject to spell checking and grammar checking.
style = string
Specifies zero or more CSS declarations that apply to the element [CSS].
tabindex = integer
Specifies whether the element represents an element that is is focusable (that is, an element which is part of the sequence of focusable elements in the document), and the relative order of the element in the sequence of focusable elements in the document.
title = normal-character-data
Advisory information associated with the element.

7.02. Event-handler attributes # T

7.03. XML attributes # T

xml:lang = langcode
As defined in the XML specification [XML].
xml:space = "preserve"
As defined in the XML specification [XML].
The xml:space attribute should only be used with documents in the XML syntax; it must not be used in documents in the HTML syntax.
xml:base = uri
As defined in the XML Base specification [XMLBase].
The xml:base attribute should only be used with documents in the XML syntax; it must not be used in documents in the HTML syntax.

8. Forms attributes # T

This section defines attributes that are common to a number of forms elements.

autocomplete = "on" | "off" #
Specifies whether the element represents an input control for which a UA is meant to store the value entered by the user (so that the UA can prefill the form later).
autofocus = "autofocus" | "" #
Specifies that the element represents a control to which a UA is meant to give focus as soon as the document is loaded.
checked = "checked" | "" #
Specifies that the element represents a selected control.
disabled = "disabled" | "" #
Specifies that the element represents a disabled control.
form = idref #
Identifies a form with which to associate the element.
formaction = uri #
The form-submission action for the element.
formenctype = "application/x-www-form-urlencoded" | "multipart/form-data" | "text/plain" #
A MIME type with which a UA is meant to associate this element for form submission.
formmethod = "get" | "post" | "put" | "delete" #
The HTTP method with which a UA is meant to associate this element for form submission.
formnovalidate = "formnovalidate" | "" #
Specifies that the element represents a control whose value is not meant to be validated during form submission.
formtarget = browsing-context-name-or-keyword #
A browsing context or keyword that represents the target of the control.
list = idref #
Identifies a datalist with which to associate the element.
maxlength = integer.positive #
The maximum allowed value length of the element.
multiple = "multiple" | "" #
Specifies that the element allows multiple values.
name = string #
The name part of the name/value pair associated with this element for the purposes of form submission.
pattern = pattern #
Specifies a regular expression against which a UA is meant to check the value of the control represented by its element.
placeholder = string #
A short hint (one word or a short phrase) intended to aid the user when entering data into the control represented by its element.
readonly = "readonly" | "" #
Specifies that element represents a control whose value is not meant to be edited.
required = "required" | "" #
Specifies that the element is a required part of form submission.
size = integer.positive #
The number of options meant to be shown by the control represented by its element.
step.float = "any" | float.positive #
Specifies the value granularity of the element’s value.
step.integer = "any" | integer.positive #
Specifies the value granularity of the element’s value.

9. Datatypes # T

This section defines datatypes that are referenced by attribute definitions in the HTML elements, Common attributes, and Forms attributes sections.

9.01. String #

For any attribute definition in this document that references the string datatype, a string is defined as normal character data.

The Attributes section of this document describes additional restrictions on strings in attribute values — in particular, restrictions for the following cases:

9.02. Token #

For any attribute definition in this document that references the token datatype, a token is defined as a string that does not contain any space characters.

9.03. Tokens #

tokens = #
A space-separated list of zero or more token instances.

9.04. Browsing-context-name #

browsing-context-name = #
Any string, with the following restrictions:
  • must not start with a "_" character
  • must be at least one character long

9.05. Browsing-context-name-or-keyword #

browsing-context-name-or-keyword = #
Any string that is either of the following:

9.06. ID #

id = #
Any string, with the following restrictions:

9.07. IDREF #

idref = #
Any string, with the following restrictions:

9.08. IDREFS #

idrefs = #
A space-separated list of one or more idref instances.

9.09. Name #

name = #
Any string, with the following restrictions:

9.10. Hash-name #

hash-name = #
A valid hash-name reference to an element of type type is a string that starts with a "#" character, followed by a string which exactly matches the value of the name attribute of an element in the document with type type.

9.11. Integer #

integer = #
One or more characters in the range 0—9, optionally prefixed with a "-" character.

9.12. Positive integer #

integer.positive = #
Any non-negative integer, with the following restriction:
  • must be greater than zero

9.13. Non-negative integer #

integer.non-negative = #
One or more characters in the range 0—9.

9.14. Float #

float = #
A float consists of the following parts, in exactly the following order:
  1. Optionally, the first character may be a "-" character.
  2. One or more characters in the range "0—9".
  3. Optionally, the following parts, in exactly the following order:
    1. a "." character
    2. one or more characters in the range "0—9"
  4. Optionally, the following parts, in exactly the following order:
    1. a "e" character or "E" character
    2. optionally, a "-" character or "+" character
    3. One or more characters in the range "0—9".

9.15. Positive float #

float.positive = #
A non-negative float, with the following restriction:
  • must be greater than zero

9.16. Non-negative float #

float.non-negative = #
A float, with the following restriction:
  • the first character may not be a "-" character

9.17. Datetime #

datetime = #
A valid date-time, as defined in RFC 3339 [RFC3339], with these additional qualifications:
  • the literal letters T and Z in the date/time syntax must always be uppercase
  • a date-fullyear is defined as four or more digits representing a number greater than 0

Examples:

1990-12-31T23:59:60Z
1996-12-19T16:39:57-08:00

9.18. Date-or-time #

date-or-time = #
Any one of the following:

9.19. URI #

uri = #
An IRI-reference, as defined in RFC 3987 [RFC3987].

Example:

http://example.org/hello

9.20. URIs #

uris = #
A space-separated list of zero or more IRI-reference instances.

9.21. Absolute URI #

uri.absolute = #
An IRI, as defined in RFC 3987 [RFC3987].

Examples:

/hello
#canvas
http://example.org/

9.22. Sizes #

sizes = #
An unordered set of unique space-separated tokens, each of which must be one of the following:
  • the literal string "any"
  • two valid non-negative integers that do not have a leading "0" character and that are separated by a single "x" character.

9.23. Mimetype #

mimetype = #
A string that identifies a valid MIME media type, as defined in RFC 2046 [RFC2046].

9.24. Charset #

charset = #

For documents in the HTML syntax: Any character set name listed in the IANA Character Sets list [IANACHARSET].

For documents in the XML syntax, any case-insensitive match for the string "UTF-8".

9.25. Meta-charset #

meta-charset = #
The following parts, in exactly the following order:
  1. The literal string "text/html;".
  2. Optionally, one or more space characters.
  3. The literal string "charset=".
  4. A charset.

9.26. Refresh #

refresh = #
Any one of the following:

9.27. Default-style #

default-style = #

9.28. Mediaquery #

mediaquery = #
A valid media query, as defined in Media Queries [MQ].

9.29. Langcode #

langcode = #
A valid language tag, as defined in RFC 4646 [RFC4646].

9.30. Keylabellist #

keylabellist = #
An ordered set of unique space-separated tokens, each of which must be exactly one Unicode code point in length.

9.31. Zero #

zero = #
The literal string "0".

9.32. Sandbox-allow-list #

sandbox-allow-list = #
An unordered set of unique space-separated tokens, each of which is one of the following literal strings:
  • "allow-same-origin"
  • "allow-forms"
  • "allow-scripts"

9.33. Javascript #

javascript = #
Any case-insensitive match for the literal string "javascript".

9.34. Mimetypelist #

mimetypelist = #
A set of comma-separated tokens, each of which is a valid mimetype, with no parameters.

9.35. Charsetlist #

charsetlist = #
A set of comma-separated tokens, each of which is a valid charset that specifies an ASCII-compatible character encoding.

9.36. Pattern #

pattern = #
A regular expression that must match the JavaScript Pattern production [ECMA262].

9.37. Datetime-local #

datetime-local = #
The following parts, in exactly the following order:
  1. A date.
  2. The literal string "T".
  3. A time.

Example:

1985-04-12T23:20:50.52
1996-12-19T16:39:57

9.38. Date #

date = #
A valid full-date, as defined in RFC 3339 [RFC3339], with the additional qualification that the year component is a date-fullyear as defined in this document.

Example:

1996-12-19

9.39. Month #

month = #
The following parts, in exactly the following order:
  1. A date-fullyear.
  2. The literal string "-".
  3. A date-month, as defined in RFC 3339 [RFC3339].

Example:

1996-12

9.40. Week #

week = #
The following parts, in exactly the following order:
  1. A date-fullyear.
  2. The literal string "-W".
  3. A date-week, as defined in RFC 3339 [RFC3339].

Example:

1996-W16

9.41. Time #

time = #
A valid partial-time, as defined in RFC 3339 [RFC3339].

Examples:

23:20:50.52
17:39:57

9.42. Emailaddress #

emailaddress = #
The following parts, in exactly the following order:
  1. A dot-atom, as defined in RFC 5322 [RFC5322], with the additional constraint that the CFWS production is excluded everywhere.
  2. A "@" character.
  3. A dot-atom, with the additional constraint that the CFWS production is excluded everywhere.

Examples:

foo-bar.baz@example.com

9.43. Emailaddresslist #

emailaddresslist = #
A set of comma-separated tokens, each of which is a valid emailaddress.

9.44. Color #

color = #
A string exactly seven characters long, consisting of the following parts, in exactly the following order:
  1. A "#" character.
  2. Six characters in the range 0–9, a–f, and A–F.

10. ARIA # T

This section provides information about ARIA attributes.

10.01. Common ARIA attribute sets # T

10.1.01. Alert #

aria.alert =
role="alert" & aria-expanded?

10.1.02. Alertdialog #

aria.alertdialog =
role="alertdialog" & aria-expanded?

10.1.03. Application #

aria.application =
role="application" & aria-expanded?

10.1.04. Article #

aria.article =
role="article" & aria-expanded?

10.1.06. Button #

aria.button =
role="button" & aria-pressed?

10.1.07. Checkbox #

aria.checkbox =
role="checkbox" & aria-checked

10.1.08. Combobox #

10.1.09. Complementary #

aria.complementary =
role="complementary" & aria-expanded?

10.1.10. Contentinfo #

aria.contentinfo =
role="contentinfo" & aria-expanded?

10.1.11. Definition #

aria.definition =
role="definition" & aria-expanded?

10.1.12. Dialog #

aria.dialog =
role="dialog" & aria-expanded?

10.1.13. Directory #

aria.directory =
role="directory" & aria-expanded?

10.1.14. Document #

aria.document =
role="document" & aria-expanded?

10.1.17. Group #

10.1.18. Img #

aria.img =
role="img" & aria-expanded?

10.1.20. List #

aria.list =
role="list" & aria-expanded?

10.1.22. Listitem #

10.1.23. Log #

aria.log =
role="log" & aria-expanded?

10.1.24. Main #

aria.main =
role="main" & aria-expanded?

10.1.25. Marquee #

aria.marquee =
role="marquee" & aria-expanded?

10.1.26. Math #

aria.math =
role="math" & aria-expanded?

10.1.33. Note #

aria.note =
role="note" & aria-expanded?

10.1.34. Option #

10.1.35. Presentation #

aria.presentation =
role="presentation" & aria-expanded?

10.1.36. Progressbar #

10.1.37. Radio #

10.1.38. Radiogroup #

10.1.39. Region #

aria.region =
role="region" & aria-expanded?

10.1.41. Search #

aria.search =
role="search" & aria-expanded?

10.1.42. Separator #

aria.separator =
role="separator" & aria-expanded?

10.1.45. Status #

10.1.46. Tab #

10.1.47. Tabpanel #

aria.tabpanel =
role="tabpanel" & aria-expanded?

10.1.48. Textbox #

10.1.49. Timer #

10.1.50. Toolbar #

10.1.51. Tooltip #

aria.tooltip =
role="tooltip" & aria-expanded?

10.02. ARIA attribute sets for implicit semantics # T

common.attrs.aria.implicit.region = #
aria-expanded?
common.attrs.aria.implicit.group = #
(aria-expanded? & aria-activedescendant?)
common.attrs.aria.implicit.th = #
(aria-sort? & aria-level? & aria-expanded? & aria-readonly? & aria-selected?)
common.attrs.aria.implicit.listitem = #
(aria-posinset? & aria-setsize?)

10.03. ARIA attribute sets for landmark roles # T

common.attrs.aria.landmark.application = #
aria.application
common.attrs.aria.landmark.article = #
aria.article
common.attrs.aria.landmark.banner = #
aria.banner
common.attrs.aria.landmark.complementary = #
aria.complementary
common.attrs.aria.landmark.contentinfo = #
aria.contentinfo
common.attrs.aria.landmark.document = #
aria.document
common.attrs.aria.landmark.main = #
aria.main
common.attrs.aria.landmark.navigation = #
aria.navigation

10.04. ARIA attribute models # T

The semantics of the following attributes are normatively defined in the ARIA specification.

aria-activedescendant = idref

aria-atomic = "true" | "false"

aria-autocomplete = "inline" | "list" | "both" | "none"

aria-busy = "true" | "false"

aria-checked = "true" | "false" | "mixed" | "undefined"

aria-controls = idrefs

aria-describedby = idrefs

aria-disabled = "true" | "false"

aria-dropeffect = "none" | "popup" | "execute" | list{ "copy", "execute"? } | list{ "move", "execute"? } | list{ "reference", "execute"? } | list{ "execute", "copy" } | list{ "execute", "move" } | list{ "execute", "reference" }

aria-expanded = "true" | "false" | "undefined"

aria-flowto = idrefs

aria-grabbed = "true" | "false" | "undefined"

aria-haspopup = "true" | "false"

aria-hidden = "true" | "false"

aria-invalid = "true" | "false" | "grammar" | "spelling"

aria-label = string

aria-labelledby = idrefs

aria-level = integer.positive

aria-live = "off" | "polite" | "assertive"

aria-multiline = "true" | "false"

aria-multiselectable = "true" | "false"

aria-owns = idrefs

aria-posinset = integer.positive

aria-pressed = "true" | "false" | "mixed" | "undefined"

aria-readonly = "true" | "false"

aria-relevant = "all" | list{ "additions", "removals"?, "text"? } | list{ "additions", "text"?, "removals"? } | list{ "removals", "additions"?, "text"? } | list{ "removals", "text"?, "additions"? } | list{ "text", "additions"?, "removals"? } | list{ "text", "removals"?, "additions"? }

aria-required = "true" | "false"

aria-selected = "true" | "false" | "undefined"

aria-setsize = integer.non-negative

aria-sort = "ascending" | "descending" | "none" | "other"

aria-valuemax = float

aria-valuemin = float

aria-valuenow = float

aria-valuetext = string

A. References # T

[BOCU1]
Unicode Technical Note #6: BOCU-1: Mime-Compatible Unicode Compression. Markus W. Scherer, Mark Davis. 4 February 2006.
[CESU8]
Unicode Technical Report #26: Compatibility Encoding Scheme for UTF-16: 8-bit (CESU-8). Toby Phipps. 16 April 2002.
[CSS]
Cascading Style Sheets (CSS) Snapshot 2007. Elika J. Etemad. W3C Working Draft. 16 May 2008.
[DOM2VIEWS]
Document Object Model (DOM) Level 2 Views. Arnaud Le Hors, Laurence Cable. W3C Recommendation. 13 November 2000.
(see in particular http://www.w3.org/TR/2000/REC-DOM-Level-2-Views-20001113/views.html#Views-intro-h2)
[ECMA262]
ECMAScript Language Specification. 3rd edition. December 1999.
[Entities]
XML Entity definitions for Characters. David Carlisle, Patrick Ion. W3C Working Draft. 10 December 2008.
(see in particular http://www.w3.org/2003/entities/2007doc/byalpha.html)
[IANACHARSET]
Character Sets. Internet Assigned Numbers Authority (IANA).
[MQ]
Media Queries. Håkon Wium Lie, Tantek Çelik, Daniel Glazman, Anne van Kesteren. W3C Working Draft. 15 October 2008.
(see in particular http://www.w3.org/TR/2008/WD-css3-mediaqueries-20081015/#media0)
[RFC2046]
Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types. N. Freed, N. Borenstein. July 2004.
(see in particular http://tools.ietf.org/html/rfc3340#section-5.6)
[RFC3339]
Date and Time on the Internet: Timestamps. G. Klyne, C. Newman. July 2004.
(see in particular http://tools.ietf.org/html/rfc3340#section-5.6)
[RFC3987]
Internationalized Resource Identifiers (IRIs). M. Duerst, M. Suignard. January 2005.
(see in particular http://tools.ietf.org/html/rfc3987#section-2.2)
[RFC4646]
Tags for Identifying Languages. A. Phillips, M. Davis. September 2006.
(for examples of language tags, see in particular http://tools.ietf.org/html/rfc4646#appendix-B)
[RFC5322]
Internet Message Format. P. Resnick. October 2008.
(see in particular http://tools.ietf.org/html/rfc5322#section-3.2.3)
[SCSU]
Unicode Technical Standard #6: A Standard Compression Scheme for Unicode . Misha Wolf, Ken Whistler, Charles Wicksteed, Mark Davis, Asmus Freytag, and Markus Scherer. 6 May 2005.
[UTF7]
UTF-7: A Mail-Safe Transformation Format of Unicode (RFC 2152). D. Goldsmith, M. Davis. May 1997.
[XML]
Extensible Markup Language (XML) 1.0 (Fourth Edition). Tim Bray, Jean Paoli, C. M. Sperberg-McQueen, Eve Maler, François Yergeau. W3C Recommendation. 16 August 2006.
[XMLBase]
XML Base (Second Edition). Jonathan Marsh, Richard Tobin. W3C Recommendation. 28 January 2009.
[XMLNS]
Namespaces in XML 1.0 (Second Edition). Tim Bray, Dave Hollander, Andrew Layman, Richard Tobin. W3C Recommendation. 16 August 2006.

B. Acknowledgments # T

This document incorporates a modified version of a RELAX NG schema for HTML 5 from the syntax.whattf.org source repository, distributed with the following copyright notice and license statement:

The RELAX NG Schema for (X)HTML 5 is licensed under the MIT open source license.
The following legal notice applies to all files in this directory:

Copyright (c) 2005-2007 Elika J. Etemad (fantasai) and Henri Sivonen (hsivonen)
Copyright (c) 2007-2008 Mozilla Foundation

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

This document incorporates a modified version of a CSS stylesheet from the WebKit source repository, distributed with the following copyright notice and license statement:

Copyright (C) 2000 Lars Knoll (knoll@kde.org)
Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Library General Public License for more details.

You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB.  If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.

This document incorporates modified and verbatim content from the document HTML5, distributed with the following copyright notice and license statement:

© Copyright 2004-2008 Apple Computer, Inc., Mozilla Foundation, and Opera Software ASA.
You are granted a license to use, reproduce and create derivative works of this document.