HTML 5

Draft Recommendation — 9 January 2009

You can take part in this work. Join the working group's discussion list.

Web designers! We have a FAQ, a forum, and a help mailing list for you!

Multiple-page version:
http://whatwg.org/html5
One-page version:
http://www.whatwg.org/specs/web-apps/current-work/
PDF print versions:
A4: http://www.whatwg.org/specs/web-apps/current-work/html5-a4.pdf
Letter: http://www.whatwg.org/specs/web-apps/current-work/html5-letter.pdf
Version history:
Twitter messages (non-editorial changes only): http://twitter.com/WHATWG
Commit-Watchers mailing list: http://lists.whatwg.org/listinfo.cgi/commit-watchers-whatwg.org
Interactive Web interface: http://html5.org/tools/web-apps-tracker
Subversion interface: http://svn.whatwg.org/
HTML diff with the last version in Subversion: http://whatwg.org/specs/web-apps/current-work/index-diff
Issues:
To send feedback: whatwg@whatwg.org
To view and vote on feedback: http://www.whatwg.org/issues/
Editor:
Ian Hickson, Google, ian@hixie.ch

Abstract

This specification evolves HTML and its related APIs to ease the authoring of Web-based applications. Additions include context menus, a direct-mode graphics canvas, a full duplex client-server communication channel, more semantics, audio and video, various features for offline Web applications, sandboxed iframes, and scoped styling. Heavy emphasis is placed on keeping the language backwards compatible with existing legacy user agents and on keeping user agents backwards compatible with existing legacy documents.

Status of this document

This is a work in progress! This document is changing on a daily if not hourly basis in response to comments and as a general part of its development process. Comments are very welcome, please send them to whatwg@whatwg.org. Thank you.

The current focus is in responding to the outstanding feedback. (There is a chart showing current progress.)

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 call for implementations should join the WHATWG mailing list and take part in the discussions.

This specification is also being produced by the W3C HTML WG. The two specifications are identical from the table of contents onwards.

This specification is intended to replace (be the new version of) what was previously the HTML4, XHTML 1.x, and DOM2 HTML specifications.

Stability

Different parts of this specification are at different levels of maturity.

Some of the more major known issues are marked like this. There are many other issues that have been raised as well; the issues given in this document are not the only known issues! Also, firing of events needs to be unified (right now some bubble, some don't, they all use different text to fire events, etc).

Table of contents

  1. 1 Introduction
    1. 1.1 Background
    2. 1.2 Audience
    3. 1.3 Scope
    4. 1.4 History
    5. 1.5 Relationships to other specifications
      1. 1.5.1 Relationship to HTML 4.01 and DOM2 HTML
      2. 1.5.2 Relationship to XHTML 1.x
      3. 1.5.3 Relationship to XHTML2 and XForms
      4. 1.5.4 Relationship to Flash, Silverlight, XUL and similar proprietary languages
    6. 1.6 HTML vs XHTML
    7. 1.7 Structure of this specification
      1. 1.7.1 How to read this specification
      2. 1.7.2 Typographic conventions
  2. 2 Common infrastructure
    1. 2.1 Terminology
      1. 2.1.1 XML
      2. 2.1.2 DOM trees
      3. 2.1.3 Scripting
      4. 2.1.4 Plugins
      5. 2.1.5 Character encodings
    2. 2.2 Conformance requirements
      1. 2.2.1 Dependencies
      2. 2.2.2 Features defined in other specifications
      3. 2.2.3 Common conformance requirements for APIs exposed to JavaScript
    3. 2.3 Case-sensitivity and string comparison
    4. 2.4 Common microsyntaxes
      1. 2.4.1 Common parser idioms
      2. 2.4.2 Boolean attributes
      3. 2.4.3 Numbers
        1. 2.4.3.1 Non-negative integers
        2. 2.4.3.2 Signed integers
        3. 2.4.3.3 Real numbers
        4. 2.4.3.4 Ratios
        5. 2.4.3.5 Percentages and dimensions
        6. 2.4.3.6 Lists of integers
      4. 2.4.4 Dates and times
        1. 2.4.4.1 Months
        2. 2.4.4.2 Dates
        3. 2.4.4.3 Times
        4. 2.4.4.4 Local dates and times
        5. 2.4.4.5 Global dates and times
        6. 2.4.4.6 Weeks
        7. 2.4.4.7 Vaguer moments in time
      5. 2.4.5 Colors
      6. 2.4.6 Space-separated tokens
      7. 2.4.7 Comma-separated tokens
      8. 2.4.8 Keywords and enumerated attributes
      9. 2.4.9 References
    5. 2.5 URLs
      1. 2.5.1 Terminology
      2. 2.5.2 Parsing URLs
      3. 2.5.3 Resolving URLs
      4. 2.5.4 Dynamic changes to base URLs
      5. 2.5.5 Interfaces for URL manipulation
    6. 2.6 Fetching resources
      1. 2.6.1 Protocol concepts
      2. 2.6.2 Encrypted HTTP and related security concerns
    7. 2.7 Determining the type of a resource
      1. 2.7.1 Content-Type metadata
      2. 2.7.2 Content-Type sniffing: Web pages
      3. 2.7.3 Content-Type sniffing: text or binary
      4. 2.7.4 Content-Type sniffing: unknown type
      5. 2.7.5 Content-Type sniffing: image
      6. 2.7.6 Content-Type sniffing: feed or HTML
    8. 2.8 Common DOM interfaces
      1. 2.8.1 Reflecting content attributes in DOM attributes
      2. 2.8.2 Collections
        1. 2.8.2.1 HTMLCollection
        2. 2.8.2.2 HTMLFormControlsCollection
        3. 2.8.2.3 HTMLOptionsCollection
      3. 2.8.3 DOMTokenList
      4. 2.8.4 Safe passing of structured data
      5. 2.8.5 DOMStringMap
      6. 2.8.6 DOM feature strings
      7. 2.8.7 Exceptions
      8. 2.8.8 Garbage collection
  3. 3 Semantics and structure of HTML documents
    1. 3.1 Introduction
    2. 3.2 Documents
      1. 3.2.1 Documents in the DOM
      2. 3.2.2 Security
      3. 3.2.3 Resource metadata management
      4. 3.2.4 DOM tree accessors
    3. 3.3 Elements
      1. 3.3.1 Semantics
      2. 3.3.2 Elements in the DOM
      3. 3.3.3 Global attributes
        1. 3.3.3.1 The id attribute
        2. 3.3.3.2 The title attribute
        3. 3.3.3.3 The lang and xml:lang attributes
        4. 3.3.3.4 The xml:base attribute (XML only)
        5. 3.3.3.5 The dir attribute
        6. 3.3.3.6 The class attribute
        7. 3.3.3.7 The style attribute
        8. 3.3.3.8 Embedding custom non-visible data
    4. 3.4 Content models
      1. 3.4.1 Kinds of content
        1. 3.4.1.1 Metadata content
        2. 3.4.1.2 Flow content
        3. 3.4.1.3 Sectioning content
        4. 3.4.1.4 Heading content
        5. 3.4.1.5 Phrasing content
        6. 3.4.1.6 Embedded content
        7. 3.4.1.7 Interactive content
      2. 3.4.2 Transparent content models
    5. 3.5 Paragraphs
    6. 3.6 APIs in HTML documents
    7. 3.7 Dynamic markup insertion
      1. 3.7.1 Controlling the input stream
      2. 3.7.2 Dynamic markup insertion in HTML
      3. 3.7.3 Dynamic markup insertion in XML
  4. 4 The elements of HTML
    1. 4.1 The root element
      1. 4.1.1 The html element
    2. 4.2 Document metadata
      1. 4.2.1 The head element
      2. 4.2.2 The title element
      3. 4.2.3 The base element
      4. 4.2.4 The link element
      5. 4.2.5 The meta element
        1. 4.2.5.1 Standard metadata names
        2. 4.2.5.2 Other metadata names
        3. 4.2.5.3 Pragma directives
        4. 4.2.5.4 Other pragma directives
        5. 4.2.5.5 Specifying the document's character encoding
      6. 4.2.6 The style element
      7. 4.2.7 Styling
    3. 4.3 Scripting
      1. 4.3.1 The script element
        1. 4.3.1.1 Scripting languages
      2. 4.3.2 The noscript element
      3. 4.3.3 The eventsource element
    4. 4.4 Sections
      1. 4.4.1 The body element
      2. 4.4.2 The section element
      3. 4.4.3 The nav element
      4. 4.4.4 The article element
      5. 4.4.5 The aside element
      6. 4.4.6 The h1, h2, h3, h4, h5, and h6 elements
      7. 4.4.7 The header element
      8. 4.4.8 The footer element
      9. 4.4.9 The address element
      10. 4.4.10 Headings and sections
        1. 4.4.10.1 Creating an outline
        2. 4.4.10.2 Distinguishing site-wide headings from page headings
    5. 4.5 Grouping content
      1. 4.5.1 The p element
      2. 4.5.2 The hr element
      3. 4.5.3 The br element
      4. 4.5.4 The pre element
      5. 4.5.5 The dialog element
      6. 4.5.6 The blockquote element
      7. 4.5.7 The ol element
      8. 4.5.8 The ul element
      9. 4.5.9 The li element
      10. 4.5.10 The dl element
      11. 4.5.11 The dt element
      12. 4.5.12 The dd element
      13. 4.5.13 Common grouping idioms
        1. 4.5.13.1 Tag clouds
    6. 4.6 Text-level semantics
      1. 4.6.1 The a element
      2. 4.6.2 The q element
      3. 4.6.3 The cite element
      4. 4.6.4 The em element
      5. 4.6.5 The strong element
      6. 4.6.6 The small element
      7. 4.6.7 The mark element
      8. 4.6.8 The dfn element
      9. 4.6.9 The abbr element
      10. 4.6.10 The time element
      11. 4.6.11 The progress element
      12. 4.6.12 The meter element
      13. 4.6.13 The code element
      14. 4.6.14 The var element
      15. 4.6.15 The samp element
      16. 4.6.16 The kbd element
      17. 4.6.17 The sub and sup elements
      18. 4.6.18 The span element
      19. 4.6.19 The i element
      20. 4.6.20 The b element
      21. 4.6.21 The bdo element
      22. 4.6.22 The ruby element
      23. 4.6.23 The rt element
      24. 4.6.24 The rp element
      25. 4.6.25 Usage summary
      26. 4.6.26 Footnotes
    7. 4.7 Edits
      1. 4.7.1 The ins element
      2. 4.7.2 The del element
      3. 4.7.3 Attributes common to ins and del elements
      4. 4.7.4 Edits and paragraphs
      5. 4.7.5 Edits and lists
    8. 4.8 Embedded content
      1. 4.8.1 The figure element
      2. 4.8.2 The img element
        1. 4.8.2.1 Requirements for providing text to act as an alternative for images
          1. 4.8.2.1.1 A link or button containing nothing but the image
          2. 4.8.2.1.2 A phrase or paragraph with an alternative graphical representation: charts, diagrams, graphs, maps, illustrations
          3. 4.8.2.1.3 A short phrase or label with an alternative graphical representation: icons, logos
          4. 4.8.2.1.4 Text that has been rendered to a graphic for typographical effect
          5. 4.8.2.1.5 A graphical representation of some of the surrounding text
          6. 4.8.2.1.6 A purely decorative image that doesn't add any information
          7. 4.8.2.1.7 A group of images that form a single larger picture with no links
          8. 4.8.2.1.8 A group of images that form a single larger picture with links
          9. 4.8.2.1.9 A key part of the content
          10. 4.8.2.1.10 An image not intended for the user
          11. 4.8.2.1.11 An image in an e-mail or document intended for a specific person who is known to be able to view images
          12. 4.8.2.1.12 General guidelines
          13. 4.8.2.1.13 Guidance for markup generators
      3. 4.8.3 The iframe element
      4. 4.8.4 The embed element
      5. 4.8.5 The object element
      6. 4.8.6 The param element
      7. 4.8.7 The video element
        1. 4.8.7.1 Video and audio codecs for video elements
      8. 4.8.8 The audio element
        1. 4.8.8.1 Audio codecs for audio elements
      9. 4.8.9 The source element
      10. 4.8.10 Media elements
        1. 4.8.10.1 Error codes
        2. 4.8.10.2 Location of the media resource
        3. 4.8.10.3 Media types
        4. 4.8.10.4 Network states
        5. 4.8.10.5 Loading the media resource
        6. 4.8.10.6 Offsets into the media resource
        7. 4.8.10.7 The ready states
        8. 4.8.10.8 Cue ranges
        9. 4.8.10.9 Playing the media resource
        10. 4.8.10.10 Seeking
        11. 4.8.10.11 User interface
        12. 4.8.10.12 Time ranges
        13. 4.8.10.13 Event summary
        14. 4.8.10.14 Security and privacy considerations
      11. 4.8.11 The canvas element
        1. 4.8.11.1 The 2D context
          1. 4.8.11.1.1 The canvas state
          2. 4.8.11.1.2 Transformations
          3. 4.8.11.1.3 Compositing
          4. 4.8.11.1.4 Colors and styles
          5. 4.8.11.1.5 Line styles
          6. 4.8.11.1.6 Shadows
          7. 4.8.11.1.7 Simple shapes (rectangles)
          8. 4.8.11.1.8 Complex shapes (paths)
          9. 4.8.11.1.9 Text
          10. 4.8.11.1.10 Images
          11. 4.8.11.1.11 Pixel manipulation
          12. 4.8.11.1.12 Drawing model
        2. 4.8.11.2 Color spaces and color correction
        3. 4.8.11.3 Security with canvas elements
      12. 4.8.12 The map element
      13. 4.8.13 The area element
      14. 4.8.14 Image maps
        1. 4.8.14.1 Authoring
        2. 4.8.14.2 Processing model
      15. 4.8.15 MathML
      16. 4.8.16 SVG
      17. 4.8.17 Dimension attributes
    9. 4.9 Tabular data
      1. 4.9.1 Introduction
      2. 4.9.2 The table element
      3. 4.9.3 The caption element
      4. 4.9.4 The colgroup element
      5. 4.9.5 The col element
      6. 4.9.6 The tbody element
      7. 4.9.7 The thead element
      8. 4.9.8 The tfoot element
      9. 4.9.9 The tr element
      10. 4.9.10 The td element
      11. 4.9.11 The th element
      12. 4.9.12 Attributes common to td and th elements
      13. 4.9.13 Processing model
        1. 4.9.13.1 Forming a table
        2. 4.9.13.2 Forming relationships between data cells and header cells
    10. 4.10 Forms
      1. 4.10.1 The form element
      2. 4.10.2 The fieldset element
      3. 4.10.3 The label element
      4. 4.10.4 The input element
        1. 4.10.4.1 States of the type attribute
          1. 4.10.4.1.1 Hidden state
          2. 4.10.4.1.2 Text state and Search state
          3. 4.10.4.1.3 URL state
          4. 4.10.4.1.4 E-mail state
          5. 4.10.4.1.5 Password state
          6. 4.10.4.1.6 Date and Time state
          7. 4.10.4.1.7 Date state
          8. 4.10.4.1.8 Month state
          9. 4.10.4.1.9 Week state
          10. 4.10.4.1.10 Time state
          11. 4.10.4.1.11 Local Date and Time state
          12. 4.10.4.1.12 Number state
          13. 4.10.4.1.13 Range state
          14. 4.10.4.1.14 Color state
          15. 4.10.4.1.15 Checkbox state
          16. 4.10.4.1.16 Radio Button state
          17. 4.10.4.1.17 File Upload state
          18. 4.10.4.1.18 Submit Button state
          19. 4.10.4.1.19 Image Button state
          20. 4.10.4.1.20 Reset Button state
          21. 4.10.4.1.21 Button state
        2. 4.10.4.2 Common input element attributes
          1. 4.10.4.2.1 The autocomplete attribute
          2. 4.10.4.2.2 The list attribute
          3. 4.10.4.2.3 The readonly attribute
          4. 4.10.4.2.4 The size attribute
          5. 4.10.4.2.5 The required attribute
          6. 4.10.4.2.6 The multiple attribute
          7. 4.10.4.2.7 The maxlength attribute
          8. 4.10.4.2.8 The pattern attribute
          9. 4.10.4.2.9 The min and max attributes
          10. 4.10.4.2.10 The step attribute
          11. 4.10.4.2.11 The placeholder attribute
        3. 4.10.4.3 Common input element APIs
        4. 4.10.4.4 Common event behaviors
      5. 4.10.5 The button element
      6. 4.10.6 The select element
      7. 4.10.7 The datalist element
      8. 4.10.8 The optgroup element
      9. 4.10.9 The option element
      10. 4.10.10 The textarea element
      11. 4.10.11 The output element
      12. 4.10.12 Association of controls and forms
      13. 4.10.13 Attributes common to form controls
        1. 4.10.13.1 Naming form controls
        2. 4.10.13.2 Enabling and disabling form controls
        3. 4.10.13.3 A form control's value
        4. 4.10.13.4 Autofocusing a form control
        5. 4.10.13.5 Limiting user input length
        6. 4.10.13.6 Form submission
      14. 4.10.14 Constraints
        1. 4.10.14.1 Definitions
        2. 4.10.14.2 Constraint validation
        3. 4.10.14.3 The constraint validation API
        4. 4.10.14.4 Security
      15. 4.10.15 Form submission
        1. 4.10.15.1 Implicit submission
        2. 4.10.15.2 Form submission algorithm
        3. 4.10.15.3 URL-encoded form data
        4. 4.10.15.4 Multipart form data
        5. 4.10.15.5 Plain text form data
      16. 4.10.16 Resetting a form
      17. 4.10.17 Event dispatch
    11. 4.11 Interactive elements
      1. 4.11.1 The details element
      2. 4.11.2 The datagrid element
        1. 4.11.2.1 The datagrid data model
        2. 4.11.2.2 How rows are identified
        3. 4.11.2.3 The data provider interface
        4. 4.11.2.4 The default data provider
          1. 4.11.2.4.1 Common default data provider method definitions for cells
        5. 4.11.2.5 Populating the datagrid element
        6. 4.11.2.6 Updating the datagrid
        7. 4.11.2.7 Requirements for interactive user agents
        8. 4.11.2.8 The selection
        9. 4.11.2.9 Columns and captions
      3. 4.11.3 The command element
      4. 4.11.4 The bb element
        1. 4.11.4.1 Browser button types
          1. 4.11.4.1.1 The make application state
      5. 4.11.5 The menu element
        1. 4.11.5.1 Introduction
        2. 4.11.5.2 Building menus and tool bars
        3. 4.11.5.3 Context menus
        4. 4.11.5.4 Toolbars
      6. 4.11.6 Commands
        1. 4.11.6.1 Using the a element to define a command
        2. 4.11.6.2 Using the button element to define a command
        3. 4.11.6.3 Using the input element to define a command
        4. 4.11.6.4 Using the option element to define a command
        5. 4.11.6.5 Using the command element to define a command
        6. 4.11.6.6 Using the bb element to define a command
    12. 4.12 Miscellaneous elements
      1. 4.12.1 The legend element
      2. 4.12.2 The div element
  5. 5 Web browsers
    1. 5.1 Browsing contexts
      1. 5.1.1 Nested browsing contexts
        1. 5.1.1.1 Navigating nested browsing contexts in the DOM
      2. 5.1.2 Auxiliary browsing contexts
        1. 5.1.2.1 Navigating auxiliary browsing contexts in the DOM
      3. 5.1.3 Secondary browsing contexts
      4. 5.1.4 Security
      5. 5.1.5 Groupings of browsing contexts
      6. 5.1.6 Browsing context names
    2. 5.2 The default view
      1. 5.2.1 Security
      2. 5.2.2 APIs for creating and navigating browsing contexts by name
      3. 5.2.3 Accessing other browsing contexts
      4. 5.2.4 Garbage collection and browsing contexts
    3. 5.3 Origin
      1. 5.3.1 Relaxing the same-origin restriction
    4. 5.4 Scripting
      1. 5.4.1 Introduction
      2. 5.4.2 Enabling and disabling scripting
      3. 5.4.3 Processing model
        1. 5.4.3.1 Definitions
        2. 5.4.3.2 Calling scripts
        3. 5.4.3.3 Creating scripts
        4. 5.4.3.4 Killing scripts
      4. 5.4.4 Event loops
        1. 5.4.4.1 Generic task sources
      5. 5.4.5 The javascript: protocol
      6. 5.4.6 Events
        1. 5.4.6.1 Event handler attributes
        2. 5.4.6.2 Event firing
        3. 5.4.6.3 Events and the Window object
        4. 5.4.6.4 Runtime script errors
    5. 5.5 User prompts
      1. 5.5.1 Simple dialogs
      2. 5.5.2 Printing
      3. 5.5.3 Dialogs implemented using separate documents
    6. 5.6 System state and capabilities
      1. 5.6.1 Client identification
      2. 5.6.2 Custom protocol and content handlers
        1. 5.6.2.1 Security and privacy
        2. 5.6.2.2 Sample user interface
    7. 5.7 Offline Web applications
      1. 5.7.1 Introduction
      2. 5.7.2 Application caches
      3. 5.7.3 The cache manifest syntax
        1. 5.7.3.1 A sample manifest
        2. 5.7.3.2 Writing cache manifests
        3. 5.7.3.3 Parsing cache manifests
      4. 5.7.4 Updating an application cache
      5. 5.7.5 Processing model
        1. 5.7.5.1 Changes to the networking model
      6. 5.7.6 Application cache API
      7. 5.7.7 Browser state
    8. 5.8 Session history and navigation
      1. 5.8.1 The session history of browsing contexts
      2. 5.8.2 The History interface
      3. 5.8.3 Activating state object entries
      4. 5.8.4 The Location interface
        1. 5.8.4.1 Security
      5. 5.8.5 Implementation notes for session history
    9. 5.9 Browsing the Web
      1. 5.9.1 Navigating across documents
      2. 5.9.2 Page load processing model for HTML files
      3. 5.9.3 Page load processing model for XML files
      4. 5.9.4 Page load processing model for text files
      5. 5.9.5 Page load processing model for images
      6. 5.9.6 Page load processing model for content that uses plugins
      7. 5.9.7 Page load processing model for inline content that doesn't have a DOM
      8. 5.9.8 Navigating to a fragment identifier
      9. 5.9.9 History traversal
      10. 5.9.10 Unloading documents
        1. 5.9.10.1 Event definition
    10. 5.10 Structured client-side storage
      1. 5.10.1 Storing name/value pairs
        1. 5.10.1.1 Introduction
        2. 5.10.1.2 The Storage interface
        3. 5.10.1.3 The sessionStorage attribute
        4. 5.10.1.4 The localStorage attribute
        5. 5.10.1.5 The storage event
          1. 5.10.1.5.1 Event definition
        6. 5.10.1.6 Threads
      2. 5.10.2 Database storage
        1. 5.10.2.1 Introduction
        2. 5.10.2.2 Databases
        3. 5.10.2.3 Executing SQL statements
        4. 5.10.2.4 Database query results
        5. 5.10.2.5 Errors
        6. 5.10.2.6 Processing model
      3. 5.10.3 Disk space
      4. 5.10.4 Privacy
        1. 5.10.4.1 User tracking
        2. 5.10.4.2 Cookie resurrection
      5. 5.10.5 Security
        1. 5.10.5.1 DNS spoofing attacks
        2. 5.10.5.2 Cross-directory attacks
        3. 5.10.5.3 Implementation risks
        4. 5.10.5.4 SQL and user agents
        5. 5.10.5.5 SQL injection
    11. 5.11 Links
      1. 5.11.1 Hyperlink elements
      2. 5.11.2 Following hyperlinks
        1. 5.11.2.1 Hyperlink auditing
      3. 5.11.3 Link types
        1. 5.11.3.1 Link type "alternate"
        2. 5.11.3.2 Link type "archives"
        3. 5.11.3.3 Link type "author"
        4. 5.11.3.4 Link type "bookmark"
        5. 5.11.3.5 Link type "external"
        6. 5.11.3.6 Link type "feed"
        7. 5.11.3.7 Link type "help"
        8. 5.11.3.8 Link type "icon"
        9. 5.11.3.9 Link type "license"
        10. 5.11.3.10 Link type "nofollow"
        11. 5.11.3.11 Link type "noreferrer"
        12. 5.11.3.12 Link type "pingback"
        13. 5.11.3.13 Link type "prefetch"
        14. 5.11.3.14 Link type "search"
        15. 5.11.3.15 Link type "stylesheet"
        16. 5.11.3.16 Link type "sidebar"
        17. 5.11.3.17 Link type "tag"
        18. 5.11.3.18 Hierarchical link types
          1. 5.11.3.18.1 Link type "index"
          2. 5.11.3.18.2 Link type "up"
        19. 5.11.3.19 Sequential link types
          1. 5.11.3.19.1 Link type "first"
          2. 5.11.3.19.2 Link type "last"
          3. 5.11.3.19.3 Link type "next"
          4. 5.11.3.19.4 Link type "prev"
        20. 5.11.3.20 Other link types
  6. 6 User Interaction
    1. 6.1 Introduction
    2. 6.2 The hidden attribute
    3. 6.3 Activation
    4. 6.4 Scrolling elements into view
    5. 6.5 Focus
      1. 6.5.1 Sequential focus navigation
      2. 6.5.2 Focus management
      3. 6.5.3 Document-level focus APIs
      4. 6.5.4 Element-level focus APIs
    6. 6.6 The text selection APIs
      1. 6.6.1 APIs for the browsing context selection
      2. 6.6.2 APIs for the text field selections
    7. 6.7 The contenteditable attribute
      1. 6.7.1 User editing actions
      2. 6.7.2 Making entire documents editable
    8. 6.8 Drag and drop
      1. 6.8.1 Introduction
      2. 6.8.2 The DragEvent and DataTransfer interfaces
      3. 6.8.3 Events fired during a drag-and-drop action
      4. 6.8.4 Drag-and-drop processing model
        1. 6.8.4.1 When the drag-and-drop operation starts or ends in another document
        2. 6.8.4.2 When the drag-and-drop operation starts or ends in another application
      5. 6.8.5 The draggable attribute
      6. 6.8.6 Copy and paste
        1. 6.8.6.1 Copy to clipboard
        2. 6.8.6.2 Cut to clipboard
        3. 6.8.6.3 Paste from clipboard
        4. 6.8.6.4 Paste from selection
      7. 6.8.7 Security risks in the drag-and-drop model
    9. 6.9 Undo history
      1. 6.9.1 The UndoManager interface
      2. 6.9.2 Undo: moving back in the undo transaction history
      3. 6.9.3 Redo: moving forward in the undo transaction history
      4. 6.9.4 The UndoManagerEvent interface and the undo and redo events
      5. 6.9.5 Implementation notes
    10. 6.10 Command APIs
  7. 7 Communication
    1. 7.1 Event definitions
    2. 7.2 Server-sent events
      1. 7.2.1 The RemoteEventTarget interface
      2. 7.2.2 Connecting to an event stream
      3. 7.2.3 Parsing an event stream
      4. 7.2.4 Interpreting an event stream
      5. 7.2.5 Notes
    3. 7.3 Web sockets
      1. 7.3.1 Introduction
      2. 7.3.2 The WebSocket interface
      3. 7.3.3 WebSocket Events
      4. 7.3.4 Feedback from the protocol
      5. 7.3.5 The Web Socket protocol
        1. 7.3.5.1 Introduction
        2. 7.3.5.2 Client-side requirements
          1. 7.3.5.2.1 Handshake
          2. 7.3.5.2.2 Data framing
        3. 7.3.5.3 Server-side requirements
          1. 7.3.5.3.1 Minimal handshake
          2. 7.3.5.3.2 Handshake details
          3. 7.3.5.3.3 Data framing
        4. 7.3.5.4 Closing the connection
        5. 7.3.5.5 Security considerations
    4. 7.4 Cross-document messaging
      1. 7.4.1 Introduction
      2. 7.4.2 Security
        1. 7.4.2.1 Authors
        2. 7.4.2.2 User agents
      3. 7.4.3 Posting messages
      4. 7.4.4 Posting messages with message ports
    5. 7.5 Channel messaging
      1. 7.5.1 Introduction
      2. 7.5.2 Message channels
      3. 7.5.3 Message ports
        1. 7.5.3.1 Ports and garbage collection
  8. 8 The HTML syntax
    1. 8.1 Writing HTML documents
      1. 8.1.1 The DOCTYPE
      2. 8.1.2 Elements
        1. 8.1.2.1 Start tags
        2. 8.1.2.2 End tags
        3. 8.1.2.3 Attributes
        4. 8.1.2.4 Optional tags
        5. 8.1.2.5 Restrictions on content models
        6. 8.1.2.6 Restrictions on the contents of CDATA and RCDATA elements
      3. 8.1.3 Text
        1. 8.1.3.1 Newlines
      4. 8.1.4 Character references
      5. 8.1.5 CDATA sections
      6. 8.1.6 Comments
    2. 8.2 Parsing HTML documents
      1. 8.2.1 Overview of the parsing model
      2. 8.2.2 The input stream
        1. 8.2.2.1 Determining the character encoding
        2. 8.2.2.2 Character encoding requirements
        3. 8.2.2.3 Preprocessing the input stream
        4. 8.2.2.4 Changing the encoding while parsing
      3. 8.2.3 Parse state
        1. 8.2.3.1 The insertion mode
        2. 8.2.3.2 The stack of open elements
        3. 8.2.3.3 The list of active formatting elements
        4. 8.2.3.4 The element pointers
        5. 8.2.3.5 The scripting state
      4. 8.2.4 Tokenization
        1. 8.2.4.1 Data state
        2. 8.2.4.2 Character reference data state
        3. 8.2.4.3 Tag open state
        4. 8.2.4.4 Close tag open state
        5. 8.2.4.5 Tag name state
        6. 8.2.4.6 Before attribute name state
        7. 8.2.4.7 Attribute name state
        8. 8.2.4.8 After attribute name state
        9. 8.2.4.9 Before attribute value state
        10. 8.2.4.10 Attribute value (double-quoted) state
        11. 8.2.4.11 Attribute value (single-quoted) state
        12. 8.2.4.12 Attribute value (unquoted) state
        13. 8.2.4.13 Character reference in attribute value state
        14. 8.2.4.14 After attribute value (quoted) state
        15. 8.2.4.15 Self-closing start tag state
        16. 8.2.4.16 Bogus comment state
        17. 8.2.4.17 Markup declaration open state
        18. 8.2.4.18 Comment start state
        19. 8.2.4.19 Comment start dash state
        20. 8.2.4.20 Comment state
        21. 8.2.4.21 Comment end dash state
        22. 8.2.4.22 Comment end state
        23. 8.2.4.23 DOCTYPE state
        24. 8.2.4.24 Before DOCTYPE name state
        25. 8.2.4.25 DOCTYPE name state
        26. 8.2.4.26 After DOCTYPE name state
        27. 8.2.4.27 Before DOCTYPE public identifier state
        28. 8.2.4.28 DOCTYPE public identifier (double-quoted) state
        29. 8.2.4.29 DOCTYPE public identifier (single-quoted) state
        30. 8.2.4.30 After DOCTYPE public identifier state
        31. 8.2.4.31 Before DOCTYPE system identifier state
        32. 8.2.4.32 DOCTYPE system identifier (double-quoted) state
        33. 8.2.4.33 DOCTYPE system identifier (single-quoted) state
        34. 8.2.4.34 After DOCTYPE system identifier state
        35. 8.2.4.35 Bogus DOCTYPE state
        36. 8.2.4.36 CDATA section state
        37. 8.2.4.37 Tokenizing character references
      5. 8.2.5 Tree construction
        1. 8.2.5.1 Creating and inserting elements
        2. 8.2.5.2 Closing elements that have implied end tags
        3. 8.2.5.3 Foster parenting
        4. 8.2.5.4 The "initial" insertion mode
        5. 8.2.5.5 The "before html" insertion mode
        6. 8.2.5.6 The "before head" insertion mode
        7. 8.2.5.7 The "in head" insertion mode
        8. 8.2.5.8 The "in head noscript" insertion mode
        9. 8.2.5.9 The "after head" insertion mode
        10. 8.2.5.10 The "in body" insertion mode
        11. 8.2.5.11 The "in CDATA/RCDATA" insertion mode
        12. 8.2.5.12 The "in table" insertion mode
        13. 8.2.5.13 The "in caption" insertion mode
        14. 8.2.5.14 The "in column group" insertion mode
        15. 8.2.5.15 The "in table body" insertion mode
        16. 8.2.5.16 The "in row" insertion mode
        17. 8.2.5.17 The "in cell" insertion mode
        18. 8.2.5.18 The "in select" insertion mode
        19. 8.2.5.19 The "in select in table" insertion mode
        20. 8.2.5.20 The "in foreign content" insertion mode
        21. 8.2.5.21 The "after body" insertion mode
        22. 8.2.5.22 The "in frameset" insertion mode
        23. 8.2.5.23 The "after frameset" insertion mode
        24. 8.2.5.24 The "after after body" insertion mode
        25. 8.2.5.25 The "after after frameset" insertion mode
      6. 8.2.6 The end
      7. 8.2.7 Coercing an HTML DOM into an infoset
    3. 8.3 Namespaces
    4. 8.4 Serializing HTML fragments
    5. 8.5 Parsing HTML fragments
    6. 8.6 Named character references
  9. 9 Rendering
    1. 9.1 Rendering and menus/toolbars
      1. 9.1.1 The 'icon' property
  10. 10 Obsolete features
    1. 10.1 Obsolete elements
      1. 10.1.1 The body element
      2. 10.1.2 The applet element
    2. 10.2 Conformance checkers
  11. 11 Things that you can't do with this specification because they are better handled using other technologies that are further described herein
    1. 11.1 Localization
    2. 11.2 Declarative 2D vector graphics and animation
    3. 11.3 Declarative 3D scenes
    4. 11.4 Timers
    5. 11.5 Rendering and the DOM
  12. Index
  13. References
  14. Acknowledgements