Abstract
This is a strict subset of the
HTML5 specification
that omits user-agent (UA) implementation details. It is
targeted toward Web authors and others who are not UA
implementors and who want a view of the HTML specification
that focuses more precisely on details relevant to using the
HTML language to create Web documents and Web applications.
Because this document does not provide implementation
conformance criteria, UA implementors should not rely on it,
but should instead refer to the full specification.
This specification defines the 5th major revision of the core
language of the World Wide Web: the Hypertext Markup Language
(HTML). In this version, new features are introduced to help Web
application authors, new elements are introduced based on research
into prevailing authoring practices, and special attention has been
given to defining clear conformance criteria for user agents in an
effort to improve interoperability.
Status of This document
This section describes the status of this document at the
time of its publication. Other documents may supersede this
document. A list of current W3C publications and the most recently
formally published revision of this technical report can be found in
the W3C technical reports index
at http://www.w3.org/TR/.
If you wish to make comments regarding this document in a manner
that is tracked by the W3C, please submit them via using our
public bug database. If you do not have an account then you can
enter feedback using this form:
If you cannot do this then you can also e-mail feedback to public-html-comments@w3.org
(subscribe,
archives),
and arrangements will be made to transpose the comments to our
public bug database.
Alternatively, you can e-mail feedback to whatwg@whatwg.org (subscribe,
archives).
The editor guarantees that all substantive feedback sent to this
list will receive a reply. However, such feedback is not considered
formal feedback for the W3C process.
All feedback is welcome.
The working groups maintains a
list of all bug reports that the editor has not yet tried to
address and a list of issues
for which the chairs have not yet declared a decision. The
editor also maintains a list
of all e-mails that he has not yet tried to address. These bugs,
issues, and e-mails apply to multiple HTML-related specifications,
not just this one.
Implementors should be aware that this specification is not
stable. Implementors who are not taking part in the
discussions are likely to find the specification changing out from
under them in incompatible ways. Vendors interested in
implementing this specification before it eventually reaches the
Candidate Recommendation stage should join the aforementioned
mailing lists and take part in the discussions.
The publication of this document by the W3C as a W3C Working
Draft does not imply that all of the participants in the W3C HTML
working group endorse the contents of the specification. Indeed, for
any section of the specification, one can usually find many members
of the working group or of the W3C as a whole who object strongly to
the current text, the existence of the section at all, or the idea
that the working group should even spend time discussing the concept
of that section.
The latest stable version of the editor's draft of this
specification is always available on the W3C CVS server and in the WHATWG Subversion
repository. The latest
editor's working copy (which may contain unfinished text in the
process of being prepared) contains the latest draft text of this
specification (amongst others). For more details, please see the WHATWG
FAQ.
There are various ways to follow the change history for the
HTML specifications:
- E-mail notifications of changes
- HTML-Diffs mailing list (diff-marked HTML versions for each change): http://lists.w3.org/Archives/Public/public-html-diffs/latest
- Commit-Watchers mailing list (complete source diffs): http://lists.whatwg.org/listinfo.cgi/commit-watchers-whatwg.org
- Real-time notifications of changes:
- Generated diff-marked HTML versions for each change: http://twitter.com/HTML5
- Browsable version-control record of all changes:
- CVSWeb interface with side-by-side diffs: http://dev.w3.org/cvsweb/html5/
- Annotated summary with unified diffs: http://html5.org/tools/web-apps-tracker
- Raw Subversion interface:
svn checkout http://svn.whatwg.org/webapps/
The W3C HTML Working
Group is the W3C working group responsible for this
specification's progress along the W3C Recommendation
track.
This specification is the 13 January 2011 Working Draft.
Work on this specification is also done at the WHATWG. The W3C HTML working group
actively pursues convergence with the WHATWG, as required by the W3C HTML working
group charter.
This document was produced by a group operating under the 5
February 2004 W3C Patent Policy. W3C maintains a public list of
any patent disclosures made in connection with the deliverables
of the group; that page also includes instructions for disclosing a
patent. An individual who has actual knowledge of a patent which the
individual believes contains Essential
Claim(s) must disclose the information in accordance with section
6 of the W3C Patent Policy.
Table of Contents
- 1 Introduction
- 1.1 Background
- 1.2 Audience
- 1.3 Scope
- 1.4 History
- 1.5 Design notes
- 1.5.1 Serializability of script execution
- 1.5.2 Compliance with other specifications
- 1.6 HTML vs XHTML
- 1.7 Structure of this specification
- 1.7.1 How to read this specification
- 1.7.2 Typographic conventions
- 1.8 A quick introduction to HTML
- 1.9 Conformance requirements for authors
- 1.9.1 Presentational markup
- 1.9.2 Syntax errors
- 1.9.3 Restrictions on content models and on attribute values
- 1.10 Recommended reading
- 2 Common infrastructure
- 2.1 Terminology
- 2.1.1 Resources
- 2.1.2 XML
- 2.1.3 DOM trees
- 2.1.4 Scripting
- 2.1.5 Plugins
- 2.1.6 Character encodings
- 2.2 Conformance requirements
- 2.2.1 Extensibility
- 2.3 Case-sensitivity and string comparison
- 2.4 Common microsyntaxes
- 2.4.1 Boolean attributes
- 2.4.2 Keywords and enumerated attributes
- 2.4.3 Numbers
- 2.4.3.1 Non-negative integers
- 2.4.3.2 Signed integers
- 2.4.3.3 Real numbers
- 2.4.3.4 Lists of integers
- 2.4.4 Dates and times
- 2.4.4.1 Months
- 2.4.4.2 Dates
- 2.4.4.3 Times
- 2.4.4.4 Local dates and times
- 2.4.4.5 Global dates and times
- 2.4.4.6 Weeks
- 2.4.4.7 Vaguer moments in time
- 2.4.5 Colors
- 2.4.6 Space-separated tokens
- 2.4.7 Comma-separated tokens
- 2.4.8 References
- 2.4.9 Media queries
- 2.5 URLs
- 2.5.1 Terminology
- 2.5.2 Interfaces for URL manipulation
- 2.6 Common DOM interfaces
- 2.6.1 Reflecting content attributes in IDL attributes
- 2.6.2 Collections
- 2.6.2.1 HTMLCollection
- 2.6.2.2 HTMLAllCollection
- 2.6.2.3 HTMLFormControlsCollection
- 2.6.2.4 HTMLOptionsCollection
- 2.6.3 DOMTokenList
- 2.6.4 DOMSettableTokenList
- 2.6.5 DOMStringMap
- 2.6.6 DOM feature strings
- 2.6.7 Exceptions
- 2.7 Namespaces
- 3 Semantics, structure, and APIs of HTML documents
- 3.1 Documents
- 3.1.1 Documents in the DOM
- 3.1.2 Security
- 3.1.3 Resource metadata management
- 3.1.4 DOM tree accessors
- 3.1.5 Creating documents
- 3.2 Elements
- 3.2.1 Semantics
- 3.2.2 Elements in the DOM
- 3.2.3 Global attributes
- 3.2.3.1 The
id attribute
- 3.2.3.2 The
title attribute
- 3.2.3.3 The
lang and xml:lang attributes
- 3.2.3.4 The
xml:base
attribute (XML only)
- 3.2.3.5 The
dir attribute
- 3.2.3.6 The
class attribute
- 3.2.3.7 The
style attribute
- 3.2.3.8 Embedding custom non-visible data with the
data-* attributes
- 3.2.4 Element definitions
- 3.2.4.1 Attributes
- 3.2.5 Content models
- 3.2.5.1 Kinds of content
- 3.2.5.1.1 Metadata content
- 3.2.5.1.2 Flow content
- 3.2.5.1.3 Sectioning content
- 3.2.5.1.4 Heading content
- 3.2.5.1.5 Phrasing content
- 3.2.5.1.6 Embedded content
- 3.2.5.1.7 Interactive content
- 3.2.5.2 Transparent content models
- 3.2.5.3 Paragraphs
- 3.2.6 Requirements relating to bidirectional-algorithm formatting
characters
- 3.2.7 Annotations for assistive technology products (ARIA)
- 3.3 APIs in HTML documents
- 3.4 Dynamic markup insertion
- 3.4.1 Opening the input stream
- 3.4.2 Closing the input stream
- 3.4.3
document.write()
- 3.4.4
document.writeln()
- 3.4.5
innerHTML
- 3.4.6
outerHTML
- 3.4.7
insertAdjacentHTML()
- 4 The elements of HTML
- 4.1 The root element
- 4.1.1 The
html element
- 4.2 Document metadata
- 4.2.1 The
head element
- 4.2.2 The
title element
- 4.2.3 The
base element
- 4.2.4 The
link element
- 4.2.5 The
meta element
- 4.2.5.1 Standard metadata names
- 4.2.5.2 Other metadata names
- 4.2.5.3 Pragma directives
- 4.2.5.4 Other pragma directives
- 4.2.5.5 Specifying the document's character encoding
- 4.2.6 The
style element
- 4.2.7 Styling
- 4.3 Scripting
- 4.3.1 The
script element
- 4.3.1.1 Scripting languages
- 4.3.1.2 Restrictions for contents of
script elements
- 4.3.1.3 Inline documentation for external scripts
- 4.3.2 The
noscript element
- 4.4 Sections
- 4.4.1 The
body element
- 4.4.2 The
section element
- 4.4.3 The
nav element
- 4.4.4 The
article element
- 4.4.5 The
aside element
- 4.4.6 The
h1, h2,
h3, h4,
h5, and h6
elements
- 4.4.7 The
hgroup element
- 4.4.10 The
address element
- 4.4.11 Headings and sections
- 4.4.11.1 Creating an outline
- 4.5 Grouping content
- 4.5.1 The
p element
- 4.5.2 The
hr element
- 4.5.3 The
pre element
- 4.5.4 The
blockquote element
- 4.5.5 The
ol element
- 4.5.6 The
ul element
- 4.5.7 The
li element
- 4.5.8 The
dl element
- 4.5.9 The
dt element
- 4.5.10 The
dd element
- 4.5.11 The
figure element
- 4.5.12 The
figcaption element
- 4.5.13 The
div element
- 4.6 Text-level semantics
- 4.6.1 The
a element
- 4.6.2 The
em element
- 4.6.3 The
strong element
- 4.6.4 The
small element
- 4.6.5 The
s element
- 4.6.6 The
cite element
- 4.6.7 The
q element
- 4.6.8 The
dfn element
- 4.6.9 The
abbr element
- 4.6.10 The
time element
- 4.6.11 The
code element
- 4.6.12 The
var element
- 4.6.13 The
samp element
- 4.6.14 The
kbd element
- 4.6.15 The
sub and sup elements
- 4.6.16 The
i element
- 4.6.17 The
b element
- 4.6.18 The
mark element
- 4.6.19 The
ruby element
- 4.6.20 The
rt element
- 4.6.21 The
rp element
- 4.6.22 The
bdi element
- 4.6.23 The
bdo element
- 4.6.24 The
span element
- 4.6.25 The
br element
- 4.6.26 The
wbr element
- 4.6.27 Usage summary
- 4.7 Edits
- 4.7.1 The
ins element
- 4.7.2 The
del element
- 4.7.3 Attributes common to
ins and del elements
- 4.7.4 Edits and paragraphs
- 4.7.5 Edits and lists
- 4.8 Embedded content
- 4.8.1 The
img element
- 4.8.1.1 Requirements for providing text to act as an alternative for images
- 4.8.1.1.1 General guidelines
- 4.8.1.1.2 A link or button containing nothing but the image
- 4.8.1.1.3 A phrase or paragraph with an alternative graphical representation: charts, diagrams, graphs, maps, illustrations
- 4.8.1.1.4 A short phrase or label with an alternative graphical representation: icons, logos
- 4.8.1.1.5 Text that has been rendered to a graphic for typographical effect
- 4.8.1.1.6 A graphical representation of some of the surrounding text
- 4.8.1.1.7 A purely decorative image that doesn't add any information
- 4.8.1.1.8 A group of images that form a single larger picture with no links
- 4.8.1.1.9 A group of images that form a single larger picture with links
- 4.8.1.1.10 A key part of the content
- 4.8.1.1.11 An image not intended for the user
- 4.8.1.1.12 An image in an e-mail or private document intended for a specific person who is known to be able to view images
- 4.8.2 The
iframe element
- 4.8.3 The
embed element
- 4.8.4 The
object element
- 4.8.5 The
param element
- 4.8.6 The
video element
- 4.8.7 The
audio element
- 4.8.8 The
source element
- 4.8.9 The
track element
- 4.8.10 Media elements
- 4.8.10.1 Error codes
- 4.8.10.2 Location of the media resource
- 4.8.10.3 MIME types
- 4.8.10.4 Network states
- 4.8.10.5 Loading the media resource
- 4.8.10.6 Offsets into the media resource
- 4.8.10.7 The ready states
- 4.8.10.8 Playing the media resource
- 4.8.10.9 Seeking
- 4.8.10.10 Timed text tracks
- 4.8.10.10.1 Text track model
- 4.8.10.10.2 Sourcing in-band text tracks
- 4.8.10.10.3 Text track API
- 4.8.10.11 User interface
- 4.8.10.12 Time ranges
- 4.8.10.13 Event summary
- 4.8.10.14 Best practices for authors using media elements
- 4.8.11 The
canvas element
- 4.8.12 The
map element
- 4.8.13 The
area element
- 4.8.14 Image maps
- 4.8.15 MathML
- 4.8.16 SVG
- 4.8.17 Dimension attributes
- 4.9 Tabular data
- 4.9.1 The
table element
- 4.9.2 The
caption element
- 4.9.3 The
colgroup element
- 4.9.4 The
col element
- 4.9.5 The
tbody element
- 4.9.6 The
thead element
- 4.9.8 The
tr element
- 4.9.9 The
td element
- 4.9.10 The
th element
- 4.9.11 Attributes common to
td and th elements
- 4.9.12 Examples
- 4.10 Forms
- 4.10.1 Introduction
- 4.10.1.1 Writing a form's user interface
- 4.10.1.2 Implementing the server-side processing for a form
- 4.10.1.3 Configuring a form to communicate with a server
- 4.10.1.4 Client-side form validation
- 4.10.2 Categories
- 4.10.3 The
form element
- 4.10.4 The
fieldset element
- 4.10.5 The
legend element
- 4.10.6 The
label element
- 4.10.7 The
input element
- 4.10.7.1 States of the
type attribute
- 4.10.7.1.1 Hidden state
- 4.10.7.1.2 Text state and Search state
- 4.10.7.1.3 Telephone state
- 4.10.7.1.4 URL state
- 4.10.7.1.5 E-mail state
- 4.10.7.1.6 Password state
- 4.10.7.1.7 Date and Time state
- 4.10.7.1.8 Date state
- 4.10.7.1.9 Month state
- 4.10.7.1.10 Week state
- 4.10.7.1.11 Time state
- 4.10.7.1.12 Local Date and Time state
- 4.10.7.1.13 Number state
- 4.10.7.1.14 Range state
- 4.10.7.1.15 Color state
- 4.10.7.1.16 Checkbox state
- 4.10.7.1.17 Radio Button state
- 4.10.7.1.18 File Upload state
- 4.10.7.1.19 Submit Button state
- 4.10.7.1.20 Image Button state
- 4.10.7.1.21 Reset Button state
- 4.10.7.1.22 Button state
- 4.10.7.2 Common
input element attributes
- 4.10.7.2.1 The
autocomplete attribute
- 4.10.7.2.2 The
dirname attribute
- 4.10.7.2.3 The
list attribute
- 4.10.7.2.4 The
readonly attribute
- 4.10.7.2.5 The
size attribute
- 4.10.7.2.6 The
required attribute
- 4.10.7.2.7 The
multiple attribute
- 4.10.7.2.8 The
maxlength attribute
- 4.10.7.2.9 The
pattern attribute
- 4.10.7.2.10 The
min and max attributes
- 4.10.7.2.11 The
step attribute
- 4.10.7.2.12 The
placeholder attribute
- 4.10.7.3 Common
input element APIs
- 4.10.8 The
button element
- 4.10.9 The
select element
- 4.10.10 The
datalist element
- 4.10.11 The
optgroup element
- 4.10.12 The
option element
- 4.10.13 The
textarea element
- 4.10.14 The
keygen element
- 4.10.15 The
output element
- 4.10.16 The
progress element
- 4.10.17 The
meter element
- 4.10.18 Association of controls and forms
- 4.10.19 Attributes common to form controls
- 4.10.19.1 Naming form controls
- 4.10.19.2 Enabling and disabling form controls
- 4.10.19.3 Autofocusing a form control
- 4.10.19.4 Limiting user input length
- 4.10.19.5 Form submission
- 4.10.19.6 Submitting element directionality
- 4.10.20 APIs for the text field selections
- 4.10.21 Constraints
- 4.10.21.1 Definitions
- 4.10.21.2 The constraint validation API
- 4.10.21.3 Security
- 4.10.22 Form submission
- 4.11 Interactive elements
- 4.11.1 The
details element
- 4.11.2 The
summary element
- 4.11.3 The
command element
-
- 4.11.4.1 Introduction
- 4.11.5 Commands
- 4.12 Links
- 4.12.1 Introduction
- 4.12.2 Links created by
a and area elements
- 4.12.3 Link types
- 4.12.3.1 Link type "
alternate"
- 4.12.3.2 Link type "
archives"
- 4.12.3.3 Link type "
author"
- 4.12.3.4 Link type "
bookmark"
- 4.12.3.5 Link type "
external"
- 4.12.3.6 Link type "
help"
- 4.12.3.7 Link type "
icon"
- 4.12.3.8 Link type "
license"
- 4.12.3.9 Link type "
nofollow"
- 4.12.3.10 Link type "
noreferrer"
- 4.12.3.11 Link type "
pingback"
- 4.12.3.12 Link type "
prefetch"
- 4.12.3.13 Link type "
search"
- 4.12.3.14 Link type "
stylesheet"
- 4.12.3.16 Link type "
tag"
- 4.12.3.17 Hierarchical link types
- 4.12.3.17.1 Link type "
index"
- 4.12.3.17.2 Link type "
up"
- 4.12.3.18 Sequential link types
- 4.12.3.18.1 Link type "
first"
- 4.12.3.18.2 Link type "
last"
- 4.12.3.18.3 Link type "
next"
- 4.12.3.18.4 Link type "
prev"
- 4.12.3.19 Other link types
- 4.13 Common idioms without dedicated elements
- 4.13.1 The main part of the content
- 4.13.2 Tag clouds
- 4.13.3 Conversations
- 4.13.4 Footnotes
- 5 Loading Web pages
- 5.1 Browsing contexts
- 5.1.1 Nested browsing contexts
- 5.1.1.1 Navigating nested browsing contexts in the DOM
- 5.1.2 Auxiliary browsing contexts
- 5.1.2.1 Navigating auxiliary browsing contexts in the DOM
- 5.1.3 Secondary browsing contexts
- 5.1.4 Browsing context names
- 5.2 The
Window object
- 5.2.1 APIs for creating and navigating browsing contexts by name
- 5.2.2 Accessing other browsing contexts
- 5.2.3 Named access on the
Window object
- 5.2.4 Browser interface elements
- 5.3 Origin
- 5.3.1 Relaxing the same-origin restriction
- 5.4 Session history and navigation
- 5.4.1 The session history of browsing contexts
- 5.4.2 The
History interface
- 5.4.3 The
Location interface
- 5.5 Browsing the Web
- 5.5.1 History traversal
- 5.5.2 Unloading documents
- 5.6 Offline Web applications
- 5.6.1 Introduction
- 5.6.1.1 Event summary
- 5.6.2 The cache manifest syntax
- 5.6.2.1 Some sample manifests
- 5.6.2.2 Writing cache manifests
- 5.6.3 Application cache API
- 5.6.4 Browser state
- 6 Web application APIs
- 6.1 Scripting
- 6.1.1 Introduction
- 6.1.2 Events
- 6.2 Timers
- 6.3 User prompts
- 6.3.1 Simple dialogs
- 6.3.2 Printing
- 6.3.3 Dialogs implemented using separate documents
- 6.4 System state and capabilities: the
Navigator object
- 6.4.1 Client identification
- 6.4.2 Custom scheme and content handlers
- 6.4.3 Manually releasing the storage mutex
- 7 User interaction
- 7.1 The
hidden attribute
- 7.2 Activation
- 7.3 Focus
- 7.3.1 Sequential focus navigation and the
tabindex attribute
- 7.3.2 Document-level focus APIs
- 7.3.3 Element-level focus APIs
- 7.4 Assigning keyboard shortcuts
- 7.4.1 Introduction
- 7.4.2 The
accesskey attribute
- 7.5 The
contenteditable attribute
- 7.5.1 Making entire documents editable
- 7.6 Spelling and grammar checking
- 7.7 Drag and drop
- 7.7.1 Introduction
- 7.7.2 The drag data store
- 7.7.3 The
DataTransfer interface
- 7.7.3.1 The
DataTransferItems interface
- 7.7.3.2 The
DataTransferItem interface
- 7.7.4 The
DragEvent interface
- 7.7.5 Events summary
- 7.7.6 The
draggable attribute
- 7.7.7 The
dropzone attribute
- 7.8 Editing APIs
- 8 The HTML syntax
- 8.1 Writing HTML documents
- 8.1.1 The DOCTYPE
- 8.1.2 Elements
- 8.1.2.1 Start tags
- 8.1.2.2 End tags
- 8.1.2.3 Attributes
- 8.1.2.4 Optional tags
- 8.1.2.5 Restrictions on content models
- 8.1.2.6 Restrictions on the contents of raw text and RCDATA elements
- 8.1.3 Text
- 8.1.3.1 Newlines
- 8.1.4 Character references
- 8.1.5 CDATA sections
- 8.1.6 Comments
- 8.2 Named character references
- 9 The XHTML syntax
- 10 Obsolete features
- 10.1 Obsolete but conforming features
- 10.2 Non-conforming features
- 11 IANA considerations
- 11.1
text/html
- 11.2
text/html-sandboxed
- 11.3
application/xhtml+xml
- 11.4
text/cache-manifest
- Index
- Elements
- Element content categories
- Attributes
- Interfaces
- Events
- References
- Acknowledgements