
   HTML5
   A vocabulary and associated APIs for HTML and XHTML
   W3C Candidate Recommendation 17 December 2012
   - This Version:
 
    - http://www.w3.org/TR/2012/CR-html5-20121217/
 
    - Latest Published Version:
 
    - http://www.w3.org/TR/html5/
 
    - Latest Editor's Draft:
 
    - http://www.w3.org/html/wg/drafts/html/CR/
 
    - Previous Versions:
 
    - http://www.w3.org/TR/2012/WD-html5-20121025/
 
    - http://www.w3.org/TR/2012/WD-html5-20120329/
 
    - http://www.w3.org/TR/2011/WD-html5-20110525/
 
    - http://www.w3.org/TR/2011/WD-html5-20110405/
 
    - http://www.w3.org/TR/2011/WD-html5-20110113/
 
    - http://www.w3.org/TR/2010/WD-html5-20101019/
 
    - http://www.w3.org/TR/2010/WD-html5-20100624/
 
    - http://www.w3.org/TR/2010/WD-html5-20100304/
 
    - http://www.w3.org/TR/2009/WD-html5-20090825/
 
    - http://www.w3.org/TR/2009/WD-html5-20090423/
 
    - http://www.w3.org/TR/2009/WD-html5-20090212/
 
    - http://www.w3.org/TR/2008/WD-html5-20080610/
 
    - http://www.w3.org/TR/2008/WD-html5-20080122/
 
	- Editors:
 
	- Robin Berjon, W3C
 
	- Travis Leithead, Microsoft
 
	- Erika Doyle Navara, Microsoft
 
	- Edward O'Connor, Apple Inc.
 
	- Silvia Pfeiffer
 
	- Previous Editor:
 
    - Ian Hickson, Google, Inc.
 
   
This specification is available in the following formats: 
    single page HTML,
    multipage HTML,
    web developer edition.
   
 
     Copyright
   © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C
   liability,
   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 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 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. All feedback is welcome.
  
     
   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.
   
  
  Publication as a Candidate Recommendation 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.
  
  
    For this specification to exit the CR stage, the conditions detailed in the 
    CR Exit 
    Criteria (Public Permissive version 3) document will have to be met.
  
  
  
  The latest stable version of the editor's draft of this
  specification is always available on the W3C CVS server.
  There are various ways to follow the change history for this specification:
  
  - Browsable version-control record of all changes:
 
   - Github repository (real-time updates): https://github.com/w3c/html/commits/master
 
   - CVSWeb interface (hourly updates): http://dev.w3.org/cvsweb/html5/spec/
 
   - E-mail notifications of changes:
 
   - HTML-Commits mailing list (commit notifications for dev.w3.org/html5): http://lists.w3.org/Archives/Public/public-html-commits/latest
 
  
    This document was published by the HTML Working Group as 
    a Candidate Recommendation. This document is intended to become a 
    W3C Recommendation. 
    W3C publishes a Candidate Recommendation to indicate that the document 
    is believed to be stable and to encourage implementation by the developer community. This Candidate Recommendation is 
    expected to advance to Proposed Recommendation no earlier than 01 September 2014. All feedback is welcome.
  
  
  
  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. There are various ways to follow this work at the WHATWG:
  
  
    The following features are at risk and may be removed due to lack of
    implementation.
  
   
  
  
  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 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.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 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 Conformance classes
 
     - 2.2.2 Dependencies
 
     - 2.2.3 Extensibility
 
 
   - 2.3 Case-sensitivity and string comparison
 
   - 2.4 UTF-8
 
   - 2.5 Common microsyntaxes
    
- 2.5.1 Common parser idioms
 
     - 2.5.2 Boolean attributes
 
     - 2.5.3 Keywords and enumerated attributes
 
     - 2.5.4 Numbers
      
- 2.5.4.1 Signed integers
 
       - 2.5.4.2 Non-negative integers
 
       - 2.5.4.3 Floating-point numbers
 
       - 2.5.4.4 Percentages and lengths
 
       - 2.5.4.5 Lists of integers
 
       - 2.5.4.6 Lists of dimensions
 
 
     - 2.5.5 Dates and times
      
- 2.5.5.1 Months
 
       - 2.5.5.2 Dates
 
       - 2.5.5.3 Yearless dates
 
       - 2.5.5.4 Times
 
       - 2.5.5.5 Local dates and times
 
       - 2.5.5.6 Time zones
 
       - 2.5.5.7 Global dates and times
 
       - 2.5.5.8 Weeks
 
       - 2.5.5.9 Durations
 
       - 2.5.5.10 Vaguer moments in time
 
 
     - 2.5.6 Colors
 
     - 2.5.7 Space-separated tokens
 
     - 2.5.8 Comma-separated tokens
 
     - 2.5.9 References
 
     - 2.5.10 Media queries
 
 
   - 2.6 URLs
    
- 2.6.1 Terminology
 
     - 2.6.2 Parsing URLs
 
     - 2.6.3 Base URLs
 
     - 2.6.4 Resolving URLs
 
     - 2.6.5 URL manipulation and creation
 
     - 2.6.6 Dynamic changes to base URLs
 
     - 2.6.7 Interfaces for URL manipulation
 
 
   - 2.7 Fetching resources
    
- 2.7.1 Terminology
 
     - 2.7.2 Processing model
 
     - 2.7.3 Encrypted HTTP and related security concerns
 
     - 2.7.4 Determining the type of a resource
 
     - 2.7.5 Extracting character encodings from 
meta elements 
     - 2.7.6 CORS settings attributes
 
     - 2.7.7 CORS-enabled fetch
 
 
   - 2.8 Common DOM interfaces
    
- 2.8.1 Reflecting content attributes in IDL attributes
 
     - 2.8.2 Collections
      
- 2.8.2.1 HTMLAllCollection
 
       - 2.8.2.2 HTMLFormControlsCollection
 
       - 2.8.2.3 HTMLOptionsCollection
 
 
     - 2.8.3 DOMStringMap
 
     - 2.8.4 Transferable objects
 
     - 2.8.5 Safe passing of structured data
 
     - 2.8.6 DOM feature strings
 
     - 2.8.7 Garbage collection
 
 
   - 2.9 Namespaces
 
 
 - 3 Semantics, structure, and APIs of HTML documents
  
- 3.1 Documents
    
- 3.1.1 The 
Document object 
     - 3.1.2 Security
 
     - 3.1.3 Resource metadata management
 
     - 3.1.4 DOM tree accessors
 
     - 3.1.5 Loading XML 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 
translate attribute 
       - 3.2.3.5 The 
xml:base
  attribute (XML only) 
       - 3.2.3.6 The 
dir attribute 
       - 3.2.3.7 The 
class attribute 
       - 3.2.3.8 The 
style attribute 
       - 3.2.3.9 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.1.8 Palpable 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 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.3 Interactions with XPath and XSLT
 
   - 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() 
 
 
 - 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.1.4 Interaction of 
script elements and XSLT 
 
     - 4.3.2 The 
noscript element 
 
   - 4.4 Sections
    
- 4.4.1 The 
body element 
     - 4.4.2 The 
article element 
     - 4.4.3 The 
section element 
     - 4.4.4 The 
nav 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.12 Usage summary
 
 
   - 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 
u element 
     - 4.6.19 The 
mark element 
     - 4.6.20 The 
ruby element 
     - 4.6.21 The 
rt element 
     - 4.6.22 The 
rp element 
     - 4.6.23 The 
bdi element 
     - 4.6.24 The 
bdo element 
     - 4.6.25 The 
span element 
     - 4.6.26 The 
br element 
     - 4.6.27 The 
wbr element 
     - 4.6.28 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.7.6 Edits and tables
 
 
   - 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 Guidance for markup generators
 
         - 4.8.1.1.13 Guidance for conformance checkers
 
 
 
     - 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 Ready states
 
       - 4.8.10.8 Playing the media resource
 
       - 4.8.10.9 Seeking
 
       - 4.8.10.10 Media resources with multiple media tracks
        
- 4.8.10.10.1 
AudioTrackList and VideoTrackList objects 
         - 4.8.10.10.2 Selecting specific audio and video tracks declaratively
 
 
       - 4.8.10.11 Synchronising multiple media elements
        
- 4.8.10.11.1 Introduction
 
         - 4.8.10.11.2 Media controllers
 
         - 4.8.10.11.3 Assigning a media controller declaratively
 
 
       - 4.8.10.12 Timed text tracks
        
- 4.8.10.12.1 Text track model
 
         - 4.8.10.12.2 Sourcing in-band text tracks
 
         - 4.8.10.12.3 Sourcing out-of-band text tracks
 
         - 4.8.10.12.4 Guidelines for exposing cues in various formats as
  text track cues
 
         - 4.8.10.12.5 Text track API
 
         - 4.8.10.12.6 Text tracks describing chapters
 
         - 4.8.10.12.7 Event definitions
 
 
       - 4.8.10.13 User interface
 
       - 4.8.10.14 Time ranges
 
       - 4.8.10.15 Event definitions
 
       - 4.8.10.16 Event summary
 
       - 4.8.10.17 Security and privacy considerations
 
       - 4.8.10.18 Best practices for authors using media elements
 
       - 4.8.10.19 Best practices for implementors of media elements
 
 
     - 4.8.11 The 
canvas element
      - 4.8.11.1 Color spaces and color correction
 
       - 4.8.11.2 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.1.1 Techniques for describing tables
 
       - 4.9.1.2 Techniques for table layout
 
 
     - 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.9.13 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.1.5 Date, time, and number formats
 
 
     - 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 (
type=hidden) 
         - 4.10.7.1.2 Text (
type=text) state and Search state (type=search) 
         - 4.10.7.1.3 Telephone state (
type=tel) 
         - 4.10.7.1.4 URL state (
type=url) 
         - 4.10.7.1.5 E-mail state (
type=email) 
         - 4.10.7.1.6 Password state (
type=password) 
         - 4.10.7.1.7 Date and Time state (
type=datetime) 
         - 4.10.7.1.8 Date state (
type=date) 
         - 4.10.7.1.9 Month state (
type=month) 
         - 4.10.7.1.10 Week state (
type=week) 
         - 4.10.7.1.11 Time state (
type=time) 
         - 4.10.7.1.12 Local Date and Time state (
type=datetime-local) 
         - 4.10.7.1.13 Number state (
type=number) 
         - 4.10.7.1.14 Range state (
type=range) 
         - 4.10.7.1.15 Color state (
type=color) 
         - 4.10.7.1.16 Checkbox state (
type=checkbox) 
         - 4.10.7.1.17 Radio Button state (
type=radio) 
         - 4.10.7.1.18 File Upload state (
type=file) 
         - 4.10.7.1.19 Submit Button state (
type=submit) 
         - 4.10.7.1.20 Image Button state (
type=image) 
         - 4.10.7.1.21 Reset Button state (
type=reset) 
         - 4.10.7.1.22 Button state (
type=button) 
 
       - 4.10.7.2 Implemention notes regarding localization of form controls
 
       - 4.10.7.3 Common 
input element attributes
        - 4.10.7.3.1 The 
autocomplete attribute 
         - 4.10.7.3.2 The 
dirname attribute 
         - 4.10.7.3.3 The 
list attribute 
         - 4.10.7.3.4 The 
readonly attribute 
         - 4.10.7.3.5 The 
size attribute 
         - 4.10.7.3.6 The 
required attribute 
         - 4.10.7.3.7 The 
multiple attribute 
         - 4.10.7.3.8 The 
maxlength attribute 
         - 4.10.7.3.9 The 
pattern attribute 
         - 4.10.7.3.10 The 
min and max attributes 
         - 4.10.7.3.11 The 
step attribute 
         - 4.10.7.3.12 The 
placeholder attribute 
 
       - 4.10.7.4 Common 
input element APIs 
       - 4.10.7.5 Common event behaviors
 
 
     - 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 A form control's value
 
       - 4.10.19.4 Autofocusing a form control
 
       - 4.10.19.5 Limiting user input length
 
       - 4.10.19.6 Form submission
 
       - 4.10.19.7 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 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 URL-encoded form data
 
       - 4.10.22.6 Multipart form data
 
       - 4.10.22.7 Plain text form data
 
 
     - 4.10.23 Resetting a form
 
 
   - 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 The 
menu element
      - 4.11.4.1 Introduction
 
       - 4.11.4.2 Building menus and toolbars
 
       - 4.11.4.3 Context menus
 
       - 4.11.4.4 Toolbars
 
 
     - 4.11.5 Commands
      
- 4.11.5.1 Using the 
a element to define a command 
       - 4.11.5.2 Using the 
button element to define a command 
       - 4.11.5.3 Using the 
input element to define a command 
       - 4.11.5.4 Using the 
option element to define a command 
       - 4.11.5.5 Using the 
command element to define
  a command 
       - 4.11.5.6 Using the 
command attribute on command elements to define a command indirectly 
       - 4.11.5.7 Using the 
accesskey attribute on a label element to define a command 
       - 4.11.5.8 Using the 
accesskey attribute on a legend element to define a command 
       - 4.11.5.9 Using the 
accesskey attribute to define a command on other elements 
 
     - 4.11.6 The 
dialog element
      - 4.11.6.1 Anchor points
 
 
 
   - 4.12 Links
    
- 4.12.1 Introduction
 
     - 4.12.2 Links created by 
a and area elements 
     - 4.12.3 Following hyperlinks
 
     - 4.12.4 Downloading resources
      
- 4.12.4.1 Hyperlink auditing
 
 
     - 4.12.5 Link types
      
- 4.12.5.1 Link type "
alternate" 
       - 4.12.5.2 Link type "
author" 
       - 4.12.5.3 Link type "
bookmark" 
       - 4.12.5.4 Link type "
help" 
       - 4.12.5.5 Link type "
icon" 
       - 4.12.5.6 Link type "
license" 
       - 4.12.5.7 Link type "
nofollow" 
       - 4.12.5.8 Link type "
noreferrer" 
       - 4.12.5.9 Link type "
prefetch" 
       - 4.12.5.10 Link type "
search" 
       - 4.12.5.11 Link type "
stylesheet" 
       - 4.12.5.12 Link type "
tag" 
       - 4.12.5.13 Sequential link types
        
- 4.12.5.13.1 Link type "
next" 
         - 4.12.5.13.2 Link type "
prev" 
 
       - 4.12.5.14 Other link types
 
 
 
   - 4.13 Common idioms without dedicated elements
    
- 4.13.1 The main part of the content
 
     - 4.13.2 Bread crumb navigation
 
     - 4.13.3 Tag clouds
 
     - 4.13.4 Conversations
 
     - 4.13.5 Footnotes
 
 
   - 4.14 Matching HTML elements using selectors
    
- 4.14.1 Case-sensitivity
 
     - 4.14.2 Pseudo-classes
 
 
 
 - 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
 
 
 
 - 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 Calling scripts
 
       - 6.1.3.3 Creating scripts
 
       - 6.1.3.4 Killing scripts
 
       - 6.1.3.5 Runtime script errors
        
- 6.1.3.5.1 Runtime script errors in documents
 
 
 
     - 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 The 
javascript: URL scheme 
     - 6.1.6 Events
      
- 6.1.6.1 Event handlers
 
       - 6.1.6.2 Event handlers on elements, 
Document objects, and Window objects 
       - 6.1.6.3 Event firing
 
       - 6.1.6.4 Events and the 
Window object 
 
 
   - 6.2 Base64 utility methods
 
   - 6.3 Timers
 
   - 6.4 User prompts
    
- 6.4.1 Simple dialogs
 
     - 6.4.2 Printing
 
     - 6.4.3 Dialogs implemented using separate documents
 
 
   - 6.5 System state and capabilities
    
- 6.5.1 The 
Navigator object
      - 6.5.1.1 Client identification
 
       - 6.5.1.2 Custom scheme and content handlers
 
       - 6.5.1.3 Security and privacy
 
       - 6.5.1.4 Sample user interface
 
       - 6.5.1.5 Manually releasing the storage mutex
 
 
     - 6.5.2 The 
External interface 
 
 
 - 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
 
 
   - 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 
DataTransferItemList interface 
       - 7.7.3.2 The 
DataTransferItem interface 
 
     - 7.7.4 The 
DragEvent interface 
     - 7.7.5 Drag-and-drop processing model
 
     - 7.7.6 Events summary
 
     - 7.7.7 The 
draggable attribute 
     - 7.7.8 The 
dropzone attribute 
     - 7.7.9 Security risks in the drag-and-drop model
 
 
 
 - 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 Parsing HTML documents
    
- 8.2.1 Overview of the parsing model
 
     - 8.2.2 The input byte stream
      
- 8.2.2.1 Determining the character encoding
 
       - 8.2.2.2 Character encodings
 
       - 8.2.2.3 Changing the encoding while parsing
 
       - 8.2.2.4 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 elements
 
       - 8.2.5.2 Closing elements that have implied end tags
 
       - 8.2.5.3 Foster parenting
 
       - 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 "after body" insertion mode
 
         - 8.2.5.4.19 The "in frameset" insertion mode
 
         - 8.2.5.4.20 The "after frameset" insertion mode
 
         - 8.2.5.4.21 The "after after body" insertion mode
 
         - 8.2.5.4.22 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: <b><i></b></i>
 
       - 8.2.8.2 Misnested tags: <b><p></b></p>
 
       - 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
 
 
 - 9 The XHTML syntax
  
- 9.1 Writing XHTML documents
 
   - 9.2 Parsing XHTML documents
 
   - 9.3 Serializing XHTML fragments
 
   - 9.4 Parsing XHTML fragments
 
 
 - 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 Form controls
 
     - 10.3.11 The 
hr element 
     - 10.3.12 The 
fieldset element 
 
   - 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.4.5 Toolbars
 
 
   - 10.5 Bindings
    
- 10.5.1 Introduction
 
     - 10.5.2 The 
button element 
     - 10.5.3 The 
details element 
     - 10.5.4 The 
input element as a text entry widget 
     - 10.5.5 The 
input element as domain-specific widgets 
     - 10.5.6 The 
input element as a range control 
     - 10.5.7 The 
input element as a color well 
     - 10.5.8 The 
input element as a checkbox and radio button widgets 
     - 10.5.9 The 
input element as a file upload control 
     - 10.5.10 The 
input element as a button 
     - 10.5.11 The 
marquee element 
     - 10.5.12 The 
meter element 
     - 10.5.13 The 
progress element 
     - 10.5.14 The 
select element 
     - 10.5.15 The 
textarea element 
     - 10.5.16 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
  
- 11.1 Obsolete but conforming features
    
- 11.1.1 Warnings for obsolete but conforming features
 
 
   - 11.2 Non-conforming features
 
   - 11.3 Requirements for implementations
    
- 11.3.1 The 
applet element 
     - 11.3.2 The 
marquee element 
     - 11.3.3 Frames
 
     - 11.3.4 Other elements, attributes and APIs
 
 
 
 - 12 IANA considerations
  
- 12.1 
text/html 
   - 12.2 
multipart/x-mixed-replace 
   - 12.3 
application/xhtml+xml 
   - 12.4 
application/x-www-form-urlencoded 
   - 12.5 
text/cache-manifest 
   - 12.6 
Ping-To 
   - 12.7 
web+ scheme prefix 
 
 - Index
  
- Elements
 
   - Element content categories
 
   - Attributes
 
   - Element Interfaces
 
   - All Interfaces
 
   - Events
 
 
 - References
 
 - Acknowledgements