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 most recently
  formally published revision of this technical report can be found in
  the W3C technical reports index
  at http://www.w3.org/TR/.
The WHATWG
  version of this specification is available under a license that
  permits reuse of the specification text.
If you wish to make comments regarding this document, please send
  them to public-html-comments@w3.org
  (subscribe,
  archives)
    
  or whatwg@whatwg.org (subscribe,
  archives),
  
  or submit them using our
  public bug database.
  All feedback is welcome.
We maintain a list of all
  e-mails that have not yet been considered and a
  list of all bug reports that have not yet been resolved.
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) is also available.
There are various ways to follow the change history for the
  specification:
- 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
 
   - All (non-editorial) changes to the spec source: http://twitter.com/WHATWG
 
   - Browsable version-control record of all changes:
 
   - CVSWeb interface with side-by-side diffs: http://dev.w3.org/cvsweb/html5/spec/Overview.html
 
   - 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 25 August 2009 Working Draft.
  
  
  
This specification is also being produced by the WHATWG. The two specifications are
  identical from the table of contents onwards.
This specification is intended to replace (be a new version of)
  what was previously the HTML4, XHTML 1.0, and DOM2 HTML
  specifications.
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.
Stability
Different parts of this specification are at different levels of
  maturity.
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 Relationships to other specifications
    
- 1.6.1 Relationship to HTML 4.01 and DOM2 HTML
 
     - 1.6.2 Relationship to XHTML 1.x
 
 
   - 1.7 HTML vs XHTML
 
   - 1.8 Structure of this specification
    
- 1.8.1 How to read this specification
 
     - 1.8.2 Typographic conventions
 
 
   - 1.9 A quick introduction to HTML
 
 
 - 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 Dependencies
 
     - 2.2.2 Extensibility
 
 
   - 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 Non-negative integers
 
       - 2.4.4.2 Signed integers
 
       - 2.4.4.3 Real numbers
 
       - 2.4.4.4 Ratios
 
       - 2.4.4.5 Percentages and lengths
 
       - 2.4.4.6 Lists of integers
 
       - 2.4.4.7 Lists of dimensions
 
 
     - 2.4.5 Dates and times
      
- 2.4.5.1 Months
 
       - 2.4.5.2 Dates
 
       - 2.4.5.3 Times
 
       - 2.4.5.4 Local dates and times
 
       - 2.4.5.5 Global dates and times
 
       - 2.4.5.6 Weeks
 
       - 2.4.5.7 Vaguer moments in time
 
 
     - 2.4.6 Colors
 
     - 2.4.7 Space-separated tokens
 
     - 2.4.8 Comma-separated tokens
 
     - 2.4.9 Reversed DNS identifiers
 
     - 2.4.10 References
 
 
   - 2.5 URLs
    
- 2.5.1 Terminology
 
     - 2.5.2 Dynamic changes to base URLs
 
     - 2.5.3 Interfaces for URL manipulation
 
 
   - 2.6 Fetching resources
    
- 2.6.1 Protocol concepts
 
     - 2.6.2 Encrypted HTTP and related security concerns
 
     - 2.6.3 Determining the type of a resource
 
 
   - 2.7 Character encodings
 
   - 2.8 Common DOM interfaces
    
- 2.8.1 Reflecting content attributes in DOM attributes
 
     - 2.8.2 Collections
      
- 2.8.2.1 HTMLCollection
 
       - 2.8.2.2 HTMLAllCollection
 
       - 2.8.2.3 HTMLFormControlsCollection
 
       - 2.8.2.4 HTMLOptionsCollection
 
       - 2.8.2.5 HTMLPropertyCollection
 
 
     - 2.8.3 DOMTokenList
 
     - 2.8.4 DOMSettableTokenList
 
     - 2.8.5 Safe passing of structured data
 
     - 2.8.6 DOMStringMap
 
     - 2.8.7 DOM feature strings
 
     - 2.8.8 Exceptions
 
     - 2.8.9 Garbage collection
 
 
 
 - 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.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
 
 
     - 3.2.4 Element definitions
 
     - 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 Annotations for assistive technology products
 
 
   - 3.3 APIs in HTML documents
 
   - 3.4 Interactions with XPath and XSLT
 
   - 3.5 Dynamic markup insertion
    
- 3.5.1 Controlling the input stream
 
     - 3.5.2 
document.write() 
     - 3.5.3 
document.writeln() 
     - 3.5.4 
innerHTML 
     - 3.5.5 
outerHTML 
     - 3.5.6 
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 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.8 The 
header element 
     - 4.4.9 The 
footer element 
     - 4.4.10 The 
address element 
     - 4.4.11 Headings and sections
      
- 4.4.11.1 Creating an outline
 
       - 4.4.11.2 Distinguishing site-wide headings from page headings
 
 
 
   - 4.5 Grouping content
    
- 4.5.1 The 
p element 
     - 4.5.2 The 
hr element 
     - 4.5.3 The 
br element 
     - 4.5.4 The 
pre element 
     - 4.5.5 The 
dialog element 
     - 4.5.6 The 
blockquote element 
     - 4.5.7 The 
ol element 
     - 4.5.8 The 
ul element 
     - 4.5.9 The 
li element 
     - 4.5.10 The 
dl element 
     - 4.5.11 The 
dt element 
     - 4.5.12 The 
dd element 
     - 4.5.13 Common grouping idioms
      
- 4.5.13.1 Tag clouds
 
 
 
   - 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 
cite element 
     - 4.6.6 The 
q element 
     - 4.6.7 The 
dfn element 
     - 4.6.8 The 
abbr element 
     - 4.6.9 The 
code element 
     - 4.6.10 The 
var element 
     - 4.6.11 The 
samp element 
     - 4.6.12 The 
kbd element 
     - 4.6.13 The 
sub and sup elements 
     - 4.6.14 The 
i element 
     - 4.6.15 The 
b element 
     - 4.6.16 The 
mark element 
     - 4.6.17 The 
progress element 
     - 4.6.18 The 
meter element 
     - 4.6.19 The 
time element 
     - 4.6.20 The 
ruby element 
     - 4.6.21 The 
rt element 
     - 4.6.22 The 
rp element 
     - 4.6.23 The 
bdo element 
     - 4.6.24 The 
span element 
     - 4.6.25 Usage summary
 
     - 4.6.26 Footnotes
 
 
   - 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 
figure element 
     - 4.8.2 The 
img element
      - 4.8.2.1 Requirements for providing text to act as an alternative for images
        
- 4.8.2.1.1 A link or button containing nothing but the image
 
         - 4.8.2.1.2 A phrase or paragraph with an alternative graphical representation: charts, diagrams, graphs, maps, illustrations
 
         - 4.8.2.1.3 A short phrase or label with an alternative graphical representation: icons, logos
 
         - 4.8.2.1.4 Text that has been rendered to a graphic for typographical effect
 
         - 4.8.2.1.5 A graphical representation of some of the surrounding text
 
         - 4.8.2.1.6 A purely decorative image that doesn't add any information
 
         - 4.8.2.1.7 A group of images that form a single larger picture with no links
 
         - 4.8.2.1.8 A group of images that form a single larger picture with links
 
         - 4.8.2.1.9 A key part of the content
 
         - 4.8.2.1.10 An image not intended for the user
 
         - 4.8.2.1.11 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.1.12 General guidelines
 
         - 4.8.2.1.13 Guidance for markup generators
 
         - 4.8.2.1.14 Guidance for conformance checkers
 
 
 
     - 4.8.3 The 
iframe element 
     - 4.8.4 The 
embed element 
     - 4.8.5 The 
object element 
     - 4.8.6 The 
param element 
     - 4.8.7 The 
video element 
     - 4.8.8 The 
audio element 
     - 4.8.9 The 
source 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 User interface
 
       - 4.8.10.11 Time ranges
 
       - 4.8.10.12 Event summary
 
       - 4.8.10.13 Security and privacy considerations
 
 
     - 4.8.11 The 
canvas element
      - 4.8.11.1 The 2D context
        
- 4.8.11.1.1 The canvas state
 
         - 4.8.11.1.2 Transformations
 
         - 4.8.11.1.3 Compositing
 
         - 4.8.11.1.4 Colors and styles
 
         - 4.8.11.1.5 Line styles
 
         - 4.8.11.1.6 Shadows
 
         - 4.8.11.1.7 Simple shapes (rectangles)
 
         - 4.8.11.1.8 Complex shapes (paths)
 
         - 4.8.11.1.9 Text
 
         - 4.8.11.1.10 Images
 
         - 4.8.11.1.11 Pixel manipulation
 
         - 4.8.11.1.12 Drawing model
 
 
       - 4.8.11.2 Color spaces and color correction
 
       - 4.8.11.3 Security with 
canvas elements 
 
     - 4.8.12 The 
map element 
     - 4.8.13 The 
area element 
     - 4.8.14 Image maps
      
- 4.8.14.1 Authoring
 
       - 4.8.14.2 Processing model
 
 
     - 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.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 The 
form element 
     - 4.10.2 The 
fieldset element 
     - 4.10.3 The 
label element 
     - 4.10.4 The 
input element
      - 4.10.4.1 States of the 
type attribute
        - 4.10.4.1.1 Hidden state
 
         - 4.10.4.1.2 Text state and Search state
 
         - 4.10.4.1.3 Telephone state
 
         - 4.10.4.1.4 URL state
 
         - 4.10.4.1.5 E-mail state
 
         - 4.10.4.1.6 Password state
 
         - 4.10.4.1.7 Date and Time state
 
         - 4.10.4.1.8 Date state
 
         - 4.10.4.1.9 Month state
 
         - 4.10.4.1.10 Week state
 
         - 4.10.4.1.11 Time state
 
         - 4.10.4.1.12 Local Date and Time state
 
         - 4.10.4.1.13 Number state
 
         - 4.10.4.1.14 Range state
 
         - 4.10.4.1.15 Color state
 
         - 4.10.4.1.16 Checkbox state
 
         - 4.10.4.1.17 Radio Button state
 
         - 4.10.4.1.18 File Upload state
 
         - 4.10.4.1.19 Submit Button state
 
         - 4.10.4.1.20 Image Button state
 
         - 4.10.4.1.21 Reset Button state
 
         - 4.10.4.1.22 Button state
 
 
       - 4.10.4.2 Common 
input element attributes
        - 4.10.4.2.1 The 
autocomplete attribute 
         - 4.10.4.2.2 The 
list attribute 
         - 4.10.4.2.3 The 
readonly attribute 
         - 4.10.4.2.4 The 
size attribute 
         - 4.10.4.2.5 The 
required attribute 
         - 4.10.4.2.6 The 
multiple attribute 
         - 4.10.4.2.7 The 
maxlength attribute 
         - 4.10.4.2.8 The 
pattern attribute 
         - 4.10.4.2.9 The 
min and max attributes 
         - 4.10.4.2.10 The 
step attribute 
         - 4.10.4.2.11 The 
placeholder attribute 
 
       - 4.10.4.3 Common 
input element APIs 
       - 4.10.4.4 Common event behaviors
 
 
     - 4.10.5 The 
button element 
     - 4.10.6 The 
select element 
     - 4.10.7 The 
datalist element 
     - 4.10.8 The 
optgroup element 
     - 4.10.9 The 
option element 
     - 4.10.10 The 
textarea element 
     - 4.10.11 The 
keygen element 
     - 4.10.12 The 
output element 
     - 4.10.13 Association of controls and forms
 
     - 4.10.14 Attributes common to form controls
      
- 4.10.14.1 Naming form controls
 
       - 4.10.14.2 Enabling and disabling form controls
 
       - 4.10.14.3 A form control's value
 
       - 4.10.14.4 Autofocusing a form control
 
       - 4.10.14.5 Limiting user input length
 
       - 4.10.14.6 Form submission
 
 
     - 4.10.15 Constraints
      
- 4.10.15.1 Definitions
 
       - 4.10.15.2 Constraint validation
 
       - 4.10.15.3 The constraint validation API
 
       - 4.10.15.4 Security
 
 
     - 4.10.16 Form submission
      
- 4.10.16.1 Introduction
 
       - 4.10.16.2 Implicit submission
 
       - 4.10.16.3 Form submission algorithm
 
       - 4.10.16.4 URL-encoded form data
 
       - 4.10.16.5 Multipart form data
 
       - 4.10.16.6 Plain text form data
 
 
     - 4.10.17 Resetting a form
 
     - 4.10.18 Event dispatch
 
 
   - 4.11 Interactive elements
    
- 4.11.1 The 
details element 
     - 4.11.2 The 
command element 
     - 4.11.3 The 
menu element
      - 4.11.3.1 Introduction
 
       - 4.11.3.2 Building menus and tool bars
 
       - 4.11.3.3 Context menus
 
       - 4.11.3.4 Tool bars
 
 
     - 4.11.4 Commands
      
- 4.11.4.1 Using the 
a element to define a command 
       - 4.11.4.2 Using the 
button element to define a command 
       - 4.11.4.3 Using the 
input element to define a command 
       - 4.11.4.4 Using the 
option element to define a command 
       - 4.11.4.5 Using the 
command element to define
  a command 
       - 4.11.4.6 Using the 
accesskey attribute on a label element to define a command 
       - 4.11.4.7 Using the 
accesskey attribute on a legend element to define a command 
       - 4.11.4.8 Using the 
accesskey attribute to define a command on other elements 
 
 
   - 4.12 Miscellaneous elements
    
- 4.12.1 The 
legend element 
     - 4.12.2 The 
div element 
 
   - 4.13 Matching HTML elements using selectors
 
 
 - 5 Microdata
  
- 5.1 Introduction
    
- 5.1.1 Overview
 
     - 5.1.2 The basic syntax
 
     - 5.1.3 Typed items
 
     - 5.1.4 Selecting names when defining vocabularies
 
     - 5.1.5 Predefined vocabularies
 
     - 5.1.6 Using the microdata DOM API
 
 
   - 5.2 Encoding microdata
    
- 5.2.1 The microdata model
 
     - 5.2.2 Items: the 
item attribute 
     - 5.2.3 Associating names with items
 
     - 5.2.4 Names: the 
itemprop attribute 
     - 5.2.5 Values
 
 
   - 5.3 Microdata DOM API
 
   - 5.4 Predefined vocabularies
    
- 5.4.1 General
 
     - 5.4.2 vCard
      
- 5.4.2.1 Examples
 
 
     - 5.4.3 vEvent
      
- 5.4.3.1 Examples
 
 
     - 5.4.4 Licensing works
      
- 5.4.4.1 Examples
 
 
 
   - 5.5 Converting HTML to other formats
    
- 5.5.1 JSON
 
     - 5.5.2 RDF
 
     - 5.5.3 vCard
 
     - 5.5.4 iCalendar
 
     - 5.5.5 Atom
 
 
 
 - 6 Web browsers
  
- 6.1 Browsing contexts
    
- 6.1.1 Nested browsing contexts
      
- 6.1.1.1 Navigating nested browsing contexts in the DOM
 
 
     - 6.1.2 Auxiliary browsing contexts
      
- 6.1.2.1 Navigating auxiliary browsing contexts in the DOM
 
 
     - 6.1.3 Secondary browsing contexts
 
     - 6.1.4 Security
 
     - 6.1.5 Groupings of browsing contexts
 
     - 6.1.6 Browsing context names
 
 
   - 6.2 The 
WindowProxy object 
   - 6.3 The 
Window object
    - 6.3.1 Security
 
     - 6.3.2 APIs for creating and navigating browsing contexts by name
 
     - 6.3.3 Accessing other browsing contexts
 
     - 6.3.4 Named access on the 
Window object 
     - 6.3.5 Garbage collection and browsing contexts
 
     - 6.3.6 Browser interface elements
 
 
   - 6.4 Origin
    
- 6.4.1 Relaxing the same-origin restriction
 
 
   - 6.5 Scripting
    
- 6.5.1 Introduction
 
     - 6.5.2 Enabling and disabling scripting
 
     - 6.5.3 Processing model
      
- 6.5.3.1 Definitions
 
       - 6.5.3.2 Calling scripts
 
       - 6.5.3.3 Creating scripts
 
       - 6.5.3.4 Killing scripts
 
 
     - 6.5.4 Event loops
      
- 6.5.4.1 Definitions
 
       - 6.5.4.2 Processing model
 
       - 6.5.4.3 Generic task sources
 
 
     - 6.5.5 The 
javascript: protocol 
     - 6.5.6 Events
      
- 6.5.6.1 Event handler attributes
 
       - 6.5.6.2 Event handler attributes on elements, 
Document objects, and Window objects 
       - 6.5.6.3 Event firing
 
       - 6.5.6.4 Events and the 
Window object 
       - 6.5.6.5 Runtime script errors
 
 
 
   - 6.6 Timers
 
   - 6.7 User prompts
    
- 6.7.1 Simple dialogs
 
     - 6.7.2 Printing
 
     - 6.7.3 Dialogs implemented using separate documents
 
 
   - 6.8 System state and capabilities
    
- 6.8.1 Client identification
 
     - 6.8.2 Custom scheme and content handlers
      
- 6.8.2.1 Security and privacy
 
       - 6.8.2.2 Sample user interface
 
 
     - 6.8.3 Manually releasing the storage mutex
 
 
   - 6.9 Offline Web applications
    
- 6.9.1 Introduction
      
- 6.9.1.1 Event summary
 
 
     - 6.9.2 Application caches
 
     - 6.9.3 The cache manifest syntax
      
- 6.9.3.1 A sample manifest
 
       - 6.9.3.2 Writing cache manifests
 
       - 6.9.3.3 Parsing cache manifests
 
 
     - 6.9.4 Updating an application cache
 
     - 6.9.5 Matching a fallback namespace
 
     - 6.9.6 The application cache selection algorithm
 
     - 6.9.7 Changes to the networking model
 
     - 6.9.8 Expiring application caches
 
     - 6.9.9 Application cache API
 
     - 6.9.10 Browser state
 
 
   - 6.10 Session history and navigation
    
- 6.10.1 The session history of browsing contexts
 
     - 6.10.2 The 
History interface 
     - 6.10.3 Activating state object entries
 
     - 6.10.4 The 
Location interface
      - 6.10.4.1 Security
 
 
     - 6.10.5 Implementation notes for session history
 
 
   - 6.11 Browsing the Web
    
- 6.11.1 Navigating across documents
 
     - 6.11.2 Page load processing model for HTML files
 
     - 6.11.3 Page load processing model for XML files
 
     - 6.11.4 Page load processing model for text files
 
     - 6.11.5 Page load processing model for images
 
     - 6.11.6 Page load processing model for content that uses plugins
 
     - 6.11.7 Page load processing model for inline content that doesn't have a DOM
 
     - 6.11.8 Navigating to a fragment identifier
 
     - 6.11.9 History traversal
 
     - 6.11.10 Unloading documents
      
- 6.11.10.1 Event definition
 
 
 
   - 6.12 Links
    
- 6.12.1 Hyperlink elements
 
     - 6.12.2 Following hyperlinks
      
- 6.12.2.1 Hyperlink auditing
 
 
     - 6.12.3 Link types
      
- 6.12.3.1 Link type "
alternate" 
       - 6.12.3.2 Link type "
archives" 
       - 6.12.3.3 Link type "
author" 
       - 6.12.3.4 Link type "
bookmark" 
       - 6.12.3.5 Link type "
external" 
       - 6.12.3.6 Link type "
feed" 
       - 6.12.3.7 Link type "
help" 
       - 6.12.3.8 Link type "
icon" 
       - 6.12.3.9 Link type "
license" 
       - 6.12.3.10 Link type "
nofollow" 
       - 6.12.3.11 Link type "
noreferrer" 
       - 6.12.3.12 Link type "
pingback" 
       - 6.12.3.13 Link type "
prefetch" 
       - 6.12.3.14 Link type "
search" 
       - 6.12.3.15 Link type "
stylesheet" 
       - 6.12.3.16 Link type "
sidebar" 
       - 6.12.3.17 Link type "
tag" 
       - 6.12.3.18 Hierarchical link types
        
- 6.12.3.18.1 Link type "
index" 
         - 6.12.3.18.2 Link type "
up" 
 
       - 6.12.3.19 Sequential link types
        
- 6.12.3.19.1 Link type "
first" 
         - 6.12.3.19.2 Link type "
last" 
         - 6.12.3.19.3 Link type "
next" 
         - 6.12.3.19.4 Link type "
prev" 
 
       - 6.12.3.20 Other link types
 
 
 
 
 - 7 User Interaction
  
- 7.1 The 
hidden attribute 
   - 7.2 Activation
 
   - 7.3 Scrolling elements into view
 
   - 7.4 Focus
    
- 7.4.1 Sequential focus navigation
 
     - 7.4.2 Focus management
 
     - 7.4.3 Document-level focus APIs
 
     - 7.4.4 Element-level focus APIs
 
 
   - 7.5 The 
accesskey attribute 
   - 7.6 The text selection APIs
    
- 7.6.1 APIs for the browsing context selection
 
     - 7.6.2 APIs for the text field selections
 
 
   - 7.7 The 
contenteditable attribute
    - 7.7.1 User editing actions
 
     - 7.7.2 Making entire documents editable
 
 
   - 7.8 Spelling and grammar checking
 
   - 7.9 Drag and drop
    
- 7.9.1 Introduction
 
     - 7.9.2 The 
DragEvent and DataTransfer interfaces 
     - 7.9.3 Events fired during a drag-and-drop action
 
     - 7.9.4 Drag-and-drop processing model
      
- 7.9.4.1 When the drag-and-drop operation starts or ends in another
  document
 
       - 7.9.4.2 When the drag-and-drop operation starts or ends in another
  application
 
 
     - 7.9.5 The 
draggable attribute 
     - 7.9.6 Copy and paste
      
- 7.9.6.1 Copy to clipboard
 
       - 7.9.6.2 Cut to clipboard
 
       - 7.9.6.3 Paste from clipboard
 
       - 7.9.6.4 Paste from selection
 
 
     - 7.9.7 Security risks in the drag-and-drop model
 
 
   - 7.10 Undo history
    
- 7.10.1 Introduction
 
     - 7.10.2 Definitions
 
     - 7.10.3 The 
UndoManager interface 
     - 7.10.4 Undo: moving back in the undo transaction history
 
     - 7.10.5 Redo: moving forward in the undo transaction history
 
     - 7.10.6 The 
UndoManagerEvent interface and the undo and redo events 
     - 7.10.7 Implementation notes
 
 
   - 7.11 Editing APIs
 
 
 - 8 Communication
  
- 8.1 Event definitions
 
   - 8.2 Cross-document messaging
    
- 8.2.1 Introduction
 
     - 8.2.2 Security
      
- 8.2.2.1 Authors
 
       - 8.2.2.2 User agents
 
 
     - 8.2.3 Posting messages
 
     - 8.2.4 Posting messages with message ports
 
 
   - 8.3 Channel messaging
    
- 8.3.1 Introduction
 
     - 8.3.2 Message channels
 
     - 8.3.3 Message ports
      
- 8.3.3.1 Ports and garbage collection
 
 
 
 
 - 9 The HTML syntax
  
- 9.1 Writing HTML documents
    
- 9.1.1 The DOCTYPE
 
     - 9.1.2 Elements
      
- 9.1.2.1 Start tags
 
       - 9.1.2.2 End tags
 
       - 9.1.2.3 Attributes
 
       - 9.1.2.4 Optional tags
 
       - 9.1.2.5 Restrictions on content models
 
       - 9.1.2.6 Restrictions on the contents of raw text and RCDATA elements
 
 
     - 9.1.3 Text
      
- 9.1.3.1 Newlines
 
 
     - 9.1.4 Character references
 
     - 9.1.5 CDATA sections
 
     - 9.1.6 Comments
 
 
   - 9.2 Parsing HTML documents
    
- 9.2.1 Overview of the parsing model
 
     - 9.2.2 The input stream
      
- 9.2.2.1 Determining the character encoding
 
       - 9.2.2.2 Preprocessing the input stream
 
       - 9.2.2.3 Changing the encoding while parsing
 
 
     - 9.2.3 Parse state
      
- 9.2.3.1 The insertion mode
 
       - 9.2.3.2 The stack of open elements
 
       - 9.2.3.3 The list of active formatting elements
 
       - 9.2.3.4 The element pointers
 
       - 9.2.3.5 Other parsing state flags
 
 
     - 9.2.4 Tokenization
      
- 9.2.4.1 Data state
 
       - 9.2.4.2 Character reference data state
 
       - 9.2.4.3 Tag open state
 
       - 9.2.4.4 Close tag open state
 
       - 9.2.4.5 Tag name state
 
       - 9.2.4.6 Before attribute name state
 
       - 9.2.4.7 Attribute name state
 
       - 9.2.4.8 After attribute name state
 
       - 9.2.4.9 Before attribute value state
 
       - 9.2.4.10 Attribute value (double-quoted) state
 
       - 9.2.4.11 Attribute value (single-quoted) state
 
       - 9.2.4.12 Attribute value (unquoted) state
 
       - 9.2.4.13 Character reference in attribute value state
 
       - 9.2.4.14 After attribute value (quoted) state
 
       - 9.2.4.15 Self-closing start tag state
 
       - 9.2.4.16 Bogus comment state
 
       - 9.2.4.17 Markup declaration open state
 
       - 9.2.4.18 Comment start state
 
       - 9.2.4.19 Comment start dash state
 
       - 9.2.4.20 Comment state
 
       - 9.2.4.21 Comment end dash state
 
       - 9.2.4.22 Comment end state
 
       - 9.2.4.23 Comment end bang state
 
       - 9.2.4.24 Comment end space state
 
       - 9.2.4.25 DOCTYPE state
 
       - 9.2.4.26 Before DOCTYPE name state
 
       - 9.2.4.27 DOCTYPE name state
 
       - 9.2.4.28 After DOCTYPE name state
 
       - 9.2.4.29 Before DOCTYPE public identifier state
 
       - 9.2.4.30 DOCTYPE public identifier (double-quoted) state
 
       - 9.2.4.31 DOCTYPE public identifier (single-quoted) state
 
       - 9.2.4.32 After DOCTYPE public identifier state
 
       - 9.2.4.33 Before DOCTYPE system identifier state
 
       - 9.2.4.34 DOCTYPE system identifier (double-quoted) state
 
       - 9.2.4.35 DOCTYPE system identifier (single-quoted) state
 
       - 9.2.4.36 After DOCTYPE system identifier state
 
       - 9.2.4.37 Bogus DOCTYPE state
 
       - 9.2.4.38 CDATA section state
 
       - 9.2.4.39 Tokenizing character references
 
 
     - 9.2.5 Tree construction
      
- 9.2.5.1 Creating and inserting elements
 
       - 9.2.5.2 Closing elements that have implied end tags
 
       - 9.2.5.3 Foster parenting
 
       - 9.2.5.4 The "initial" insertion mode
 
       - 9.2.5.5 The "before html" insertion mode
 
       - 9.2.5.6 The "before head" insertion mode
 
       - 9.2.5.7 The "in head" insertion mode
 
       - 9.2.5.8 The "in head noscript" insertion mode
 
       - 9.2.5.9 The "after head" insertion mode
 
       - 9.2.5.10 The "in body" insertion mode
 
       - 9.2.5.11 The "in RAWTEXT/RCDATA" insertion mode
 
       - 9.2.5.12 The "in table" insertion mode
 
       - 9.2.5.13 The "in table text" insertion mode
 
       - 9.2.5.14 The "in caption" insertion mode
 
       - 9.2.5.15 The "in column group" insertion mode
 
       - 9.2.5.16 The "in table body" insertion mode
 
       - 9.2.5.17 The "in row" insertion mode
 
       - 9.2.5.18 The "in cell" insertion mode
 
       - 9.2.5.19 The "in select" insertion mode
 
       - 9.2.5.20 The "in select in table" insertion mode
 
       - 9.2.5.21 The "in foreign content" insertion mode
 
       - 9.2.5.22 The "after body" insertion mode
 
       - 9.2.5.23 The "in frameset" insertion mode
 
       - 9.2.5.24 The "after frameset" insertion mode
 
       - 9.2.5.25 The "after after body" insertion mode
 
       - 9.2.5.26 The "after after frameset" insertion mode
 
 
     - 9.2.6 The end
 
     - 9.2.7 Coercing an HTML DOM into an infoset
 
     - 9.2.8 An introduction to error handling and strange cases in the parser
      
- 9.2.8.1 Misnested tags: <b><i></b></i>
 
       - 9.2.8.2 Misnested tags: <b><p></b></p>
 
       - 9.2.8.3 Unexpected markup in tables
 
       - 9.2.8.4 Scripts that modify the page as it is being parsed
 
 
 
   - 9.3 Namespaces
 
   - 9.4 Serializing HTML fragments
 
   - 9.5 Parsing HTML fragments
 
   - 9.6 Named character references
 
 
 - 10 The XHTML syntax
  
- 10.1 Writing XHTML documents
 
   - 10.2 Parsing XHTML documents
 
   - 10.3 Serializing XHTML fragments
 
   - 10.4 Parsing XHTML fragments
 
 
 - 11 Rendering
  
- 11.1 Introduction
 
   - 11.2 The CSS user agent style sheet and presentational hints
    
- 11.2.1 Introduction
 
     - 11.2.2 Display types
 
     - 11.2.3 Margins and padding
 
     - 11.2.4 Alignment
 
     - 11.2.5 Fonts and colors
 
     - 11.2.6 Punctuation and decorations
 
     - 11.2.7 Resetting rules for inherited properties
 
     - 11.2.8 The 
hr element 
     - 11.2.9 The 
fieldset element 
 
   - 11.3 Replaced elements
    
- 11.3.1 Embedded content
 
     - 11.3.2 Images
 
     - 11.3.3 Attributes for embedded content and images
 
     - 11.3.4 Image maps
 
     - 11.3.5 Tool bars
 
 
   - 11.4 Bindings
    
- 11.4.1 Introduction
 
     - 11.4.2 The 
button element 
     - 11.4.3 The 
details element 
     - 11.4.4 The 
input element as a text entry widget 
     - 11.4.5 The 
input element as domain-specific widgets 
     - 11.4.6 The 
input element as a range control 
     - 11.4.7 The 
input element as a color well 
     - 11.4.8 The 
input element as a check box and radio button widgets 
     - 11.4.9 The 
input element as a file upload control 
     - 11.4.10 The 
input element as a button 
     - 11.4.11 The 
marquee element 
     - 11.4.12 The 
meter element 
     - 11.4.13 The 
progress element 
     - 11.4.14 The 
select element 
     - 11.4.15 The 
textarea element 
     - 11.4.16 The 
keygen element 
     - 11.4.17 The 
time element 
 
   - 11.5 Frames and framesets
 
   - 11.6 Interactive media
    
- 11.6.1 Links, forms, and navigation
 
     - 11.6.2 The 
mark element 
     - 11.6.3 The 
title attribute 
     - 11.6.4 Editing hosts
 
 
   - 11.7 Print media
 
   - 11.8 Interaction with CSS
    
- 11.8.1 Selectors
 
 
 
 - 12 Obsolete features
  
- 12.1 Obsolete but conforming features
    
- 12.1.1 Warnings for obsolete but conforming features
 
 
   - 12.2 Non-conforming features
 
   - 12.3 Requirements for implementations
    
- 12.3.1 The 
applet element 
     - 12.3.2 The 
marquee element 
     - 12.3.3 Frames
 
     - 12.3.4 Other elements, attributes and APIs
 
 
 
 - 13 Things that you can't do with this specification because
  they are better handled using other technologies that are further
  described herein
  
- 13.1 Localization
 
   - 13.2 Declarative 3D scenes
 
 
 - IANA considerations
  
- 13.1 
text/html 
   - 13.2 
application/xhtml+xml 
   - 13.3 
text/cache-manifest 
   - 13.4 
text/ping 
   - 13.5 
application/microdata+json 
 
 - Index
 
 - References
 
 - Acknowledgements