HTML5 (original) (raw)
A vocabulary and associated APIs for HTML and XHTML
W3C Recommendation 28 October 2014
This Version:
http://www.w3.org/TR/2014/REC-html5-20141028/
Latest Published Version:
Latest Version of HTML:
Latest Editor's Draft of HTML:
http://www.w3.org/html/wg/drafts/html/master/
Previous Version:
http://www.w3.org/TR/2014/PR-html5-20140916/
Previous Recommendation:
http://www.w3.org/TR/1999/REC-html401-19991224/
Editors:
WHATWG:
Ian Hickson, Google, Inc.
W3C:
Robin Berjon, W3C
Steve Faulkner, The Paciello Group
Travis Leithead, Microsoft Corporation
Erika Doyle Navara, Microsoft Corporation
Theresa O'Connor, Apple Inc.
Please check the errata for any errors or issues reported since publication.
This specification is also available as a single page HTML document. See alsotranslations.
Copyright © 2014 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3Cliability,trademark and document use rules apply.
Abstract
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 latest revision of this technical report can be found in the W3C technical reports index athttp://www.w3.org/TR/.
The W3C HTML Working Group is the W3C working group responsible for this specification's progress. This specification is the 28 October 2014 Recommendation.
If you wish to make comments regarding this document in a manner that is tracked by the W3C, please submit them via our our public bug database (open bugs). If you cannot do this then you can also e-mail feedback topublic-html@w3.org (subscribe,archives), and arrangements will be made to transpose the comments to our public bug database. All feedback is welcome.
A comprehensive test suite for this specification is maintained and kept up to date as part of the WebPlatform Tests project. Please see the Working Group's implementation report.
Work on evolutions of this specification proceeds athttp://www.w3.org/TR/html/. The HTML5 Recommendation represents a milestone in the development of HTML but far from being the end of the road and improvements are already well under way. It is possible that future versions will no longer be published as a monolithic specification but rather as a set of smaller modules. Irrespective of whether that is the case or not, http://www.w3.org/TR/html/ will be maintained as the entry point to the entirety of HTML technology.
Work on extending this specification typically proceeds throughextension specifications which should be consulted to see what new features are being reviewed.
The bulk of the text of this specification is also available in the WHATWG HTML Living Standard, under a license that permits reuse of the specification text.
This document has been reviewed by W3C Members, by software developers, and by other W3C groups and interested parties, and is endorsed by the Director as a W3C Recommendation. It is a stable document and may be used as reference material or cited from another document. W3C's role in making the Recommendation is to draw attention to the specification and to promote its widespread deployment. This enhances the functionality and interoperability of the Web.
Work on this specification is also done at the WHATWG. The W3C HTML working group actively pursues convergence of the HTML specification with the WHATWG living standard, within the bounds of the W3C HTML working group charter. There are various ways to follow this work at the WHATWG:
- Commit-Watchers mailing list (complete source diffs): http://lists.whatwg.org/listinfo.cgi/commit-watchers-whatwg.org
- Annotated summary with unified diffs: http://html5.org/tools/web-apps-tracker
- Raw Subversion interface:
svn checkout http://svn.whatwg.org/webapps/
The following editorial changes were made since Proposed Recommendation:
- The manner in which updates to this specification will be published was clarified.
- The IANA registration for
[application/xhtml+xml](iana.html#application/xhtml+xml)
was accepted during PR, leading to a small update to the corresponding section. - "Decoder error" was mistakenly listed as a URL-related definition when it is in fact Encoding-related
- "Parsed URL" has been given a proper mapping to the URL specification
- Improved the informative summary for several elements. (Mostly pointers to tag omission and ARIA rules.)
- Updated a few references to documents that have seen new revisions (RFC4281, RFC2313, RFC3490, MPEG-DASH) and provided a more stable link to BECSS.
- Added a note about and made some modifications to the URL reference.
- A number of small styling tweaks were made and typos were fixed.
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.
This document is governed by the 14 October 2005 W3C Process Document.
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.5.3 Extensibility - 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 Privacy concerns
- 1.9 A quick introduction to HTML
* 1.9.1 Writing secure applications with HTML
* 1.9.2 Common pitfalls to avoid when using the scripting APIs
* 1.9.3 How to catch mistakes when writing HTML: validators and conformance checkers - 1.10 Conformance requirements for authors
* 1.10.1 Presentational markup
* 1.10.2 Syntax errors
* 1.10.3 Restrictions on content models and on attribute values - 1.11 Suggested 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 Conformance classes
* 2.2.2 Dependencies
* 2.2.3 Extensibility
* 2.2.4 Interactions with XPath and XSLT - 2.3 Case-sensitivity and string comparison
- 2.4 Common microsyntaxes
* 2.4.1 Common parser idioms
* 2.4.2 Boolean attributes
* 2.4.3 Keywords and enumerated attributes
* 2.4.4 Numbers
* 2.4.4.1 Signed integers
* 2.4.4.2 Non-negative integers
* 2.4.4.3 Floating-point numbers
* 2.4.4.4 Percentages and lengths
* 2.4.4.5 Lists of integers
* 2.4.4.6 Lists of dimensions
* 2.4.5 Dates and times
* 2.4.5.1 Months
* 2.4.5.2 Dates
* 2.4.5.3 Yearless dates
* 2.4.5.4 Times
* 2.4.5.5 Floating dates and times
* 2.4.5.6 Time zones
* 2.4.5.7 Global dates and times
* 2.4.5.8 Weeks
* 2.4.5.9 Durations
* 2.4.5.10 Vaguer moments in time
* 2.4.6 Colors
* 2.4.7 Space-separated tokens
* 2.4.8 Comma-separated tokens
* 2.4.9 References
* 2.4.10 Media queries - 2.5 URLs
* 2.5.1 Terminology
* 2.5.2 Resolving URLs
* 2.5.3 Dynamic changes to base URLs - 2.6 Fetching resources
* 2.6.1 Terminology
* 2.6.2 Processing model
* 2.6.3 Encrypted HTTP and related security concerns
* 2.6.4 Determining the type of a resource
* 2.6.5 Extracting character encodings from meta elements
* 2.6.6 CORS settings attributes
* 2.6.7 CORS-enabled fetch - 2.7 Common DOM interfaces
* 2.7.1 Reflecting content attributes in IDL attributes
* 2.7.2 Collections
* 2.7.2.1 HTMLAllCollection
* 2.7.2.2 HTMLFormControlsCollection
* 2.7.2.3 HTMLOptionsCollection
* 2.7.3 DOMStringMap
* 2.7.4 Transferable objects
* 2.7.5 Safe passing of structured data
* 2.7.6 Callbacks
* 2.7.7 Garbage collection - 2.8 Namespaces
- 2.1 Terminology
- 3 Semantics, structure, and APIs of HTML documents
- 3.1 Documents
* 3.1.1 The Document object
* 3.1.2 Resource metadata management
* 3.1.3 DOM tree accessors - 3.2 Elements
* 3.2.1 Semantics
* 3.2.2 Elements in the DOM
* 3.2.3 Element definitions
* 3.2.3.1 Attributes
* 3.2.4 Content models
* 3.2.4.1 Kinds of content
* 3.2.4.1.1 Metadata content
* 3.2.4.1.2 Flow content
* 3.2.4.1.3 Sectioning content
* 3.2.4.1.4 Heading content
* 3.2.4.1.5 Phrasing content
* 3.2.4.1.6 Embedded content
* 3.2.4.1.7 Interactive content
* 3.2.4.1.8 Palpable content
* 3.2.4.1.9 Script-supporting elements
* 3.2.4.2 Transparent content models
* 3.2.4.3 Paragraphs
* 3.2.5 Global attributes
* 3.2.5.1 The id attribute
* 3.2.5.2 The title attribute
* 3.2.5.3 The lang and xml:lang attributes
* 3.2.5.4 The translate attribute
* 3.2.5.5 The xml:base attribute (XML only)
* 3.2.5.6 The dir attribute
* 3.2.5.7 The class attribute
* 3.2.5.8 The style attribute
* 3.2.5.9 Embedding custom non-visible data with the data-* attributes
* 3.2.6 Requirements relating to the bidirectional algorithm
* 3.2.6.1 Authoring conformance criteria for bidirectional-algorithm formatting characters
* 3.2.6.2 User agent conformance criteria
* 3.2.7 WAI-ARIA
* 3.2.7.1 ARIA Role Attribute
* 3.2.7.2 State and Property Attributes
* 3.2.7.3 Strong Native Semantics
* 3.2.7.4 Implicit ARIA Semantics
* 3.2.7.5 Allowed ARIA roles, states and properties
- 3.1 Documents
- 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 Sections
* 4.3.1 The body element
* 4.3.2 The article element
* 4.3.3 The section element
* 4.3.4 The nav element
* 4.3.5 The aside element
* 4.3.6 The h1, h2, h3, h4, h5, andh6 elements
* 4.3.7 The header element
* 4.3.8 The footer element
* 4.3.9 The address element
* 4.3.10 Headings and sections
* 4.3.10.1 Creating an outline
* 4.3.10.2 Sample outlines
* 4.3.11 Usage summary
* 4.3.11.1 Article or section? - 4.4 Grouping content
* 4.4.1 The p element
* 4.4.2 The hr element
* 4.4.3 The pre element
* 4.4.4 The blockquote element
* 4.4.5 The ol element
* 4.4.6 The ul element
* 4.4.7 The li element
* 4.4.8 The dl element
* 4.4.9 The dt element
* 4.4.10 The dd element
* 4.4.11 The figure element
* 4.4.12 The figcaption element
* 4.4.13 The div element
* 4.4.14 The main element - 4.5 Text-level semantics
* 4.5.1 The a element
* 4.5.2 The em element
* 4.5.3 The strong element
* 4.5.4 The small element
* 4.5.5 The s element
* 4.5.6 The cite element
* 4.5.7 The q element
* 4.5.8 The dfn element
* 4.5.9 The abbr element
* 4.5.10 The data element
* 4.5.11 The time element
* 4.5.12 The code element
* 4.5.13 The var element
* 4.5.14 The samp element
* 4.5.15 The kbd element
* 4.5.16 The sub and sup elements
* 4.5.17 The i element
* 4.5.18 The b element
* 4.5.19 The u element
* 4.5.20 The mark element
* 4.5.21 The ruby element
* 4.5.22 The rb element
* 4.5.23 The rt element
* 4.5.24 The rtc element
* 4.5.25 The rp element
* 4.5.26 The bdi element
* 4.5.27 The bdo element
* 4.5.28 The span element
* 4.5.29 The br element
* 4.5.30 The wbr element
* 4.5.31 Usage summary - 4.6 Edits
* 4.6.1 The ins element
* 4.6.2 The del element
* 4.6.3 Attributes common to ins and del elements
* 4.6.4 Edits and paragraphs
* 4.6.5 Edits and lists
* 4.6.6 Edits and tables - 4.7 Embedded content
* 4.7.1 The img element
* 4.7.1.1 Requirements for providing text to act as an alternative for images
* 4.7.1.1.1 Examples of scenarios where users benefit from text alternatives for images
* 4.7.1.1.2 General guidelines
* 4.7.1.1.3 A link or button containing nothing but an image
* 4.7.1.1.4 Graphical Representations: Charts, diagrams, graphs, maps, illustrations
* 4.7.1.1.5 Images of text
* 4.7.1.1.6 Images that include text
* 4.7.1.1.7 Images that enhance the themes or subject matter of the page content
* 4.7.1.1.8 A graphical representation of some of the surrounding text
* 4.7.1.1.9 A purely decorative image that doesn't add any information
* 4.7.1.1.10 Inline images
* 4.7.1.1.11 A group of images that form a single larger picture with no links
* 4.7.1.1.12 Image maps
* 4.7.1.1.13 A group of images that form a single larger picture with links
* 4.7.1.1.14 Images of Pictures
* 4.7.1.1.15 Webcam images
* 4.7.1.1.16 When a text alternative is not available at the time of publication
* 4.7.1.1.17 An image not intended for the user
* 4.7.1.1.18 Icon Images
* 4.7.1.1.19 Logos, insignia, flags, or emblems
* 4.7.1.1.20 CAPTCHA Images
* 4.7.1.1.21 Guidance for markup generators
* 4.7.1.1.22 Guidance for conformance checkers
* 4.7.2 The iframe element
* 4.7.3 The embed element
* 4.7.4 The object element
* 4.7.5 The param element
* 4.7.6 The video element
* 4.7.7 The audio element
* 4.7.8 The source element
* 4.7.9 The track element
* 4.7.10 Media elements
* 4.7.10.1 Error codes
* 4.7.10.2 Location of the media resource
* 4.7.10.3 MIME types
* 4.7.10.4 Network states
* 4.7.10.5 Loading the media resource
* 4.7.10.6 Offsets into the media resource
* 4.7.10.7 Ready states
* 4.7.10.8 Playing the media resource
* 4.7.10.9 Seeking
* 4.7.10.10 Media resources with multiple media tracks
* 4.7.10.10.1 AudioTrackList and VideoTrackList objects
* 4.7.10.10.2 Selecting specific audio and video tracks declaratively
* 4.7.10.11 Synchronising multiple media elements
* 4.7.10.11.1 Introduction
* 4.7.10.11.2 Media controllers
* 4.7.10.11.3 Assigning a media controller declaratively
* 4.7.10.12 Timed text tracks
* 4.7.10.12.1 Text track model
* 4.7.10.12.2 Sourcing in-band text tracks
* 4.7.10.12.3 Sourcing out-of-band text tracks
* 4.7.10.12.4 Guidelines for exposing cues in various formats as text track cues
* 4.7.10.12.5 Text track API
* 4.7.10.12.6 Text tracks describing chapters
* 4.7.10.12.7 Event definitions
* 4.7.10.13 User interface
* 4.7.10.14 Time ranges
* 4.7.10.15 Event definitions
* 4.7.10.16 Event summary
* 4.7.10.17 Security and privacy considerations
* 4.7.10.18 Best practices for authors using media elements
* 4.7.10.19 Best practices for implementors of media elements
* 4.7.11 The map element
* 4.7.12 The area element
* 4.7.13 Image maps
* 4.7.13.1 Authoring
* 4.7.13.2 Processing model
* 4.7.14 MathML
* 4.7.15 SVG
* 4.7.16 Dimension attributes - 4.8 Links
* 4.8.1 Links created by a and area elements
* 4.8.2 Following hyperlinks
* 4.8.3 Downloading resources
* 4.8.4 Link types
* 4.8.4.1 Link type "alternate"
* 4.8.4.2 Link type "author"
* 4.8.4.3 Link type "bookmark"
* 4.8.4.4 Link type "help"
* 4.8.4.5 Link type "icon"
* 4.8.4.6 Link type "license"
* 4.8.4.7 Link type "nofollow"
* 4.8.4.8 Link type "noreferrer"
* 4.8.4.9 Link type "prefetch"
* 4.8.4.10 Link type "search"
* 4.8.4.11 Link type "stylesheet"
* 4.8.4.12 Link type "tag"
* 4.8.4.13 Sequential link types
* 4.8.4.13.1 Link type "next"
* 4.8.4.13.2 Link type "prev"
* 4.8.4.14 Other link types - 4.9 Tabular data
* 4.9.1 The table element
* 4.9.1.1 Techniques for describing tables
* 4.9.1.2 Techniques for table design
* 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.7 The tfoot 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 Processing model
* 4.9.12.1 Forming a table
* 4.9.12.2 Forming relationships between data cells and header cells - 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.1.5 Date, time, and number formats
* 4.10.2 Categories
* 4.10.3 The form element
* 4.10.4 The label element
* 4.10.5 The input element
* 4.10.5.1 States of the type attribute
* 4.10.5.1.1 Hidden state (type=hidden)
* 4.10.5.1.2 Text (type=text) state and Search state (type=search)
* 4.10.5.1.3 Telephone state (type=tel)
* 4.10.5.1.4 URL state (type=url)
* 4.10.5.1.5 E-mail state (type=email)
* 4.10.5.1.6 Password state (type=password)
* 4.10.5.1.7 Date state (type=date)
* 4.10.5.1.8 Time state (type=time)
* 4.10.5.1.9 Number state (type=number)
* 4.10.5.1.10 Range state (type=range)
* 4.10.5.1.11 Color state (type=color)
* 4.10.5.1.12 Checkbox state (type=checkbox)
* 4.10.5.1.13 Radio Button state (type=radio)
* 4.10.5.1.14 File Upload state (type=file)
* 4.10.5.1.15 Submit Button state (type=submit)
* 4.10.5.1.16 Image Button state (type=image)
* 4.10.5.1.17 Reset Button state (type=reset)
* 4.10.5.1.18 Button state (type=button)
* 4.10.5.2 Implemention notes regarding localization of form controls
* 4.10.5.3 Common input element attributes
* 4.10.5.3.1 The maxlength and minlength attributes
* 4.10.5.3.2 The size attribute
* 4.10.5.3.3 The readonly attribute
* 4.10.5.3.4 The required attribute
* 4.10.5.3.5 The multiple attribute
* 4.10.5.3.6 The pattern attribute
* 4.10.5.3.7 The min and max attributes
* 4.10.5.3.8 The step attribute
* 4.10.5.3.9 The list attribute
* 4.10.5.3.10 The placeholder attribute
* 4.10.5.4 Common input element APIs
* 4.10.5.5 Common event behaviors
* 4.10.6 The button element
* 4.10.7 The select element
* 4.10.8 The datalist element
* 4.10.9 The optgroup element
* 4.10.10 The option element
* 4.10.11 The textarea element
* 4.10.12 The keygen element
* 4.10.13 The output element
* 4.10.14 The progress element
* 4.10.15 The meter element
* 4.10.16 The fieldset element
* 4.10.17 The legend element
* 4.10.18 Form control infrastructure
* 4.10.18.1 A form control's value
* 4.10.18.2 Mutability
* 4.10.18.3 Association of controls and forms
* 4.10.19 Attributes common to form controls
* 4.10.19.1 Naming form controls: the name attribute
* 4.10.19.2 Submitting element directionality: the dirname attribute
* 4.10.19.3 Limiting user input length: the maxlength attribute
* 4.10.19.4 Setting minimum input length requirements: the minlength attribute
* 4.10.19.5 Enabling and disabling form controls: the disabled attribute
* 4.10.19.6 Form submission
* 4.10.19.7 Autofocusing a form control: the autofocus attribute
* 4.10.19.8 Autofilling form controls: the autocomplete attribute
* 4.10.20 APIs for the text field selections
* 4.10.21 Constraints
* 4.10.21.1 Definitions
* 4.10.21.2 Constraint validation
* 4.10.21.3 The constraint validation API
* 4.10.21.4 Security
* 4.10.22 Form submission
* 4.10.22.1 Introduction
* 4.10.22.2 Implicit submission
* 4.10.22.3 Form submission algorithm
* 4.10.22.4 Constructing the form data set
* 4.10.22.5 Selecting a form submission encoding
* 4.10.22.6 URL-encoded form data
* 4.10.22.7 Multipart form data
* 4.10.22.8 Plain text form data
* 4.10.23 Resetting a form - 4.11 Scripting
* 4.11.1 The script element
* 4.11.1.1 Scripting languages
* 4.11.1.2 Restrictions for contents of script elements
* 4.11.1.3 Inline documentation for external scripts
* 4.11.1.4 Interaction of script elements and XSLT
* 4.11.2 The noscript element
* 4.11.3 The template element
* 4.11.3.1 Interaction of template elements with XSLT and XPath
* 4.11.4 The canvas element
* 4.11.4.1 Color spaces and color correction
* 4.11.4.2 Serializing bitmaps to a file
* 4.11.4.3 Security with canvas elements - 4.12 Common idioms without dedicated elements
* 4.12.1 Subheadings, subtitles, alternative titles and taglines
* 4.12.2 Bread crumb navigation
* 4.12.3 Tag clouds
* 4.12.4 Conversations
* 4.12.5 Footnotes - 4.13 Disabled elements
- 4.14 Matching HTML elements using selectors
* 4.14.1 Case-sensitivity
* 4.14.2 Pseudo-classes
- 4.1 The root element
- 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 Security
* 5.1.5 Groupings of browsing contexts
* 5.1.6 Browsing context names - 5.2 The Window object
* 5.2.1 Security
* 5.2.2 APIs for creating and navigating browsing contexts by name
* 5.2.3 Accessing other browsing contexts
* 5.2.4 Named access on the Window object
* 5.2.5 Garbage collection and browsing contexts
* 5.2.6 Closing browsing contexts
* 5.2.7 Browser interface elements
* 5.2.8 The WindowProxy object - 5.3 Origin
* 5.3.1 Relaxing the same-origin restriction - 5.4 Sandboxing
- 5.5 Session history and navigation
* 5.5.1 The session history of browsing contexts
* 5.5.2 The History interface
* 5.5.3 The Location interface
* 5.5.3.1 Security
* 5.5.4 Implementation notes for session history - 5.6 Browsing the Web
* 5.6.1 Navigating across documents
* 5.6.2 Page load processing model for HTML files
* 5.6.3 Page load processing model for XML files
* 5.6.4 Page load processing model for text files
* 5.6.5 Page load processing model for multipart/x-mixed-replace resources
* 5.6.6 Page load processing model for media
* 5.6.7 Page load processing model for content that uses plugins
* 5.6.8 Page load processing model for inline content that doesn't have a DOM
* 5.6.9 Navigating to a fragment identifier
* 5.6.10 History traversal
* 5.6.10.1 Event definitions
* 5.6.11 Unloading documents
* 5.6.11.1 Event definition
* 5.6.12 Aborting a document load - 5.7 Offline Web applications
* 5.7.1 Introduction
* 5.7.1.1 Supporting offline caching for legacy applications
* 5.7.1.2 Event summary
* 5.7.2 Application caches
* 5.7.3 The cache manifest syntax
* 5.7.3.1 Some sample manifests
* 5.7.3.2 Writing cache manifests
* 5.7.3.3 Parsing cache manifests
* 5.7.4 Downloading or updating an application cache
* 5.7.5 The application cache selection algorithm
* 5.7.6 Changes to the networking model
* 5.7.7 Expiring application caches
* 5.7.8 Disk space
* 5.7.9 Application cache API
* 5.7.10 Browser state
- 5.1 Browsing contexts
- 6 Web application APIs
- 6.1 Scripting
* 6.1.1 Introduction
* 6.1.2 Enabling and disabling scripting
* 6.1.3 Processing model
* 6.1.3.1 Definitions
* 6.1.3.2 Script settings for browsing contexts
* 6.1.3.3 Calling scripts
* 6.1.3.4 Creating scripts
* 6.1.3.5 Killing scripts
* 6.1.3.6 Runtime script errors
* 6.1.3.6.1 Runtime script errors in documents
* 6.1.3.6.2 The ErrorEvent interface
* 6.1.4 Event loops
* 6.1.4.1 Definitions
* 6.1.4.2 Processing model
* 6.1.4.3 Generic task sources
* 6.1.5 Events
* 6.1.5.1 Event handlers
* 6.1.5.2 Event handlers on elements, Document objects, and Window objects
* 6.1.5.2.1 IDL definitions
* 6.1.5.3 Event firing
* 6.1.5.4 Events and the Window object - 6.2 Base64 utility methods
- 6.3 Dynamic markup insertion
* 6.3.1 Opening the input stream
* 6.3.2 Closing the input stream
* 6.3.3 document.write()
* 6.3.4 document.writeln() - 6.4 Timers
- 6.5 User prompts
* 6.5.1 Simple dialogs
* 6.5.2 Printing - 6.6 System state and capabilities
* 6.6.1 The Navigator object
* 6.6.1.1 Client identification
* 6.6.1.2 Language preferences
* 6.6.1.3 Custom scheme and content handlers
* 6.6.1.3.1 Security and privacy
* 6.6.1.3.2 Sample user interface
* 6.6.1.4 Manually releasing the storage mutex
* 6.6.1.5 Plugins
* 6.6.2 The External interface
- 6.1 Scripting
- 7 User interaction
- 7.1 The hidden attribute
- 7.2 Inert subtrees
- 7.3 Activation
- 7.4 Focus
* 7.4.1 Sequential focus navigation and the tabindex attribute
* 7.4.2 Focus management
* 7.4.3 Document-level focus APIs
* 7.4.4 Element-level focus APIs - 7.5 Assigning keyboard shortcuts
* 7.5.1 Introduction
* 7.5.2 The accesskey attribute
* 7.5.3 Processing model - 7.6 Editing
* 7.6.1 Making document regions editable: The contenteditable content attribute
* 7.6.2 Making entire documents editable: The designMode IDL attribute
* 7.6.3 Best practices for in-page editors
* 7.6.4 Editing APIs
* 7.6.5 Spelling and grammar checking
- 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 escapable raw text 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 Parsing HTML documents
* 8.2.1 Overview of the parsing model
* 8.2.2 The input byte stream
* 8.2.2.1 Parsing with a known character encoding
* 8.2.2.2 Determining the character encoding
* 8.2.2.3 Character encodings
* 8.2.2.4 Changing the encoding while parsing
* 8.2.2.5 Preprocessing the input stream
* 8.2.3 Parse state
* 8.2.3.1 The insertion mode
* 8.2.3.2 The stack of open elements
* 8.2.3.3 The list of active formatting elements
* 8.2.3.4 The element pointers
* 8.2.3.5 Other parsing state flags
* 8.2.4 Tokenization
* 8.2.4.1 Data state
* 8.2.4.2 Character reference in data state
* 8.2.4.3 RCDATA state
* 8.2.4.4 Character reference in RCDATA state
* 8.2.4.5 RAWTEXT state
* 8.2.4.6 Script data state
* 8.2.4.7 PLAINTEXT state
* 8.2.4.8 Tag open state
* 8.2.4.9 End tag open state
* 8.2.4.10 Tag name state
* 8.2.4.11 RCDATA less-than sign state
* 8.2.4.12 RCDATA end tag open state
* 8.2.4.13 RCDATA end tag name state
* 8.2.4.14 RAWTEXT less-than sign state
* 8.2.4.15 RAWTEXT end tag open state
* 8.2.4.16 RAWTEXT end tag name state
* 8.2.4.17 Script data less-than sign state
* 8.2.4.18 Script data end tag open state
* 8.2.4.19 Script data end tag name state
* 8.2.4.20 Script data escape start state
* 8.2.4.21 Script data escape start dash state
* 8.2.4.22 Script data escaped state
* 8.2.4.23 Script data escaped dash state
* 8.2.4.24 Script data escaped dash dash state
* 8.2.4.25 Script data escaped less-than sign state
* 8.2.4.26 Script data escaped end tag open state
* 8.2.4.27 Script data escaped end tag name state
* 8.2.4.28 Script data double escape start state
* 8.2.4.29 Script data double escaped state
* 8.2.4.30 Script data double escaped dash state
* 8.2.4.31 Script data double escaped dash dash state
* 8.2.4.32 Script data double escaped less-than sign state
* 8.2.4.33 Script data double escape end state
* 8.2.4.34 Before attribute name state
* 8.2.4.35 Attribute name state
* 8.2.4.36 After attribute name state
* 8.2.4.37 Before attribute value state
* 8.2.4.38 Attribute value (double-quoted) state
* 8.2.4.39 Attribute value (single-quoted) state
* 8.2.4.40 Attribute value (unquoted) state
* 8.2.4.41 Character reference in attribute value state
* 8.2.4.42 After attribute value (quoted) state
* 8.2.4.43 Self-closing start tag state
* 8.2.4.44 Bogus comment state
* 8.2.4.45 Markup declaration open state
* 8.2.4.46 Comment start state
* 8.2.4.47 Comment start dash state
* 8.2.4.48 Comment state
* 8.2.4.49 Comment end dash state
* 8.2.4.50 Comment end state
* 8.2.4.51 Comment end bang state
* 8.2.4.52 DOCTYPE state
* 8.2.4.53 Before DOCTYPE name state
* 8.2.4.54 DOCTYPE name state
* 8.2.4.55 After DOCTYPE name state
* 8.2.4.56 After DOCTYPE public keyword state
* 8.2.4.57 Before DOCTYPE public identifier state
* 8.2.4.58 DOCTYPE public identifier (double-quoted) state
* 8.2.4.59 DOCTYPE public identifier (single-quoted) state
* 8.2.4.60 After DOCTYPE public identifier state
* 8.2.4.61 Between DOCTYPE public and system identifiers state
* 8.2.4.62 After DOCTYPE system keyword state
* 8.2.4.63 Before DOCTYPE system identifier state
* 8.2.4.64 DOCTYPE system identifier (double-quoted) state
* 8.2.4.65 DOCTYPE system identifier (single-quoted) state
* 8.2.4.66 After DOCTYPE system identifier state
* 8.2.4.67 Bogus DOCTYPE state
* 8.2.4.68 CDATA section state
* 8.2.4.69 Tokenizing character references
* 8.2.5 Tree construction
* 8.2.5.1 Creating and inserting nodes
* 8.2.5.2 Parsing elements that contain only text
* 8.2.5.3 Closing elements that have implied end tags
* 8.2.5.4 The rules for parsing tokens in HTML content
* 8.2.5.4.1 The "initial" insertion mode
* 8.2.5.4.2 The "before html" insertion mode
* 8.2.5.4.3 The "before head" insertion mode
* 8.2.5.4.4 The "in head" insertion mode
* 8.2.5.4.5 The "in head noscript" insertion mode
* 8.2.5.4.6 The "after head" insertion mode
* 8.2.5.4.7 The "in body" insertion mode
* 8.2.5.4.8 The "text" insertion mode
* 8.2.5.4.9 The "in table" insertion mode
* 8.2.5.4.10 The "in table text" insertion mode
* 8.2.5.4.11 The "in caption" insertion mode
* 8.2.5.4.12 The "in column group" insertion mode
* 8.2.5.4.13 The "in table body" insertion mode
* 8.2.5.4.14 The "in row" insertion mode
* 8.2.5.4.15 The "in cell" insertion mode
* 8.2.5.4.16 The "in select" insertion mode
* 8.2.5.4.17 The "in select in table" insertion mode
* 8.2.5.4.18 The "in template" insertion mode
* 8.2.5.4.19 The "after body" insertion mode
* 8.2.5.4.20 The "in frameset" insertion mode
* 8.2.5.4.21 The "after frameset" insertion mode
* 8.2.5.4.22 The "after after body" insertion mode
* 8.2.5.4.23 The "after after frameset" insertion mode
* 8.2.5.5 The rules for parsing tokens in foreign content
* 8.2.6 The end
* 8.2.7 Coercing an HTML DOM into an infoset
* 8.2.8 An introduction to error handling and strange cases in the parser
* 8.2.8.1 Misnested tags:
* 8.2.8.2 Misnested tags:
* 8.2.8.3 Unexpected markup in tables
* 8.2.8.4 Scripts that modify the page as it is being parsed
* 8.2.8.5 The execution of scripts that are moving across multiple documents
* 8.2.8.6 Unclosed formatting elements - 8.3 Serializing HTML fragments
- 8.4 Parsing HTML fragments
- 8.5 Named character references
- 8.1 Writing HTML documents
- 9 The XHTML syntax
- 10 Rendering
- 10.1 Introduction
- 10.2 The CSS user agent style sheet and presentational hints
- 10.3 Non-replaced elements
* 10.3.1 Hidden elements
* 10.3.2 The page
* 10.3.3 Flow content
* 10.3.4 Phrasing content
* 10.3.5 Bidirectional text
* 10.3.6 Quotes
* 10.3.7 Sections and headings
* 10.3.8 Lists
* 10.3.9 Tables
* 10.3.10 Margin collapsing quirks
* 10.3.11 Form controls
* 10.3.12 The hr element
* 10.3.13 The fieldset and legend elements - 10.4 Replaced elements
* 10.4.1 Embedded content
* 10.4.2 Images
* 10.4.3 Attributes for embedded content and images
* 10.4.4 Image maps - 10.5 Bindings
* 10.5.1 Introduction
* 10.5.2 The button element
* 10.5.3 The input element as a text entry widget
* 10.5.4 The input element as domain-specific widgets
* 10.5.5 The input element as a range control
* 10.5.6 The input element as a color well
* 10.5.7 The input element as a checkbox and radio button widgets
* 10.5.8 The input element as a file upload control
* 10.5.9 The input element as a button
* 10.5.10 The marquee element
* 10.5.11 The meter element
* 10.5.12 The progress element
* 10.5.13 The select element
* 10.5.14 The textarea element
* 10.5.15 The keygen element - 10.6 Frames and framesets
- 10.7 Interactive media
* 10.7.1 Links, forms, and navigation
* 10.7.2 The title attribute
* 10.7.3 Editing hosts
* 10.7.4 Text rendered in native user interfaces - 10.8 Print media
- 10.9 Unstyled XML documents
- 11 Obsolete features
- 12 IANA considerations
- Index
- References
- Acknowledgments