HTML Standard Tracker

Diff (omit for latest revision)
Filter

Short URL: http://html5.org/r/2876

File a bug

SVNBugCommentTime (UTC)
2876Make it possible to hide implementation requirements with an alternative style sheet. Add author documentation for most of the APIs. Fix minor typos and oversights here and there.2009-03-18 06:49
Index: source
===================================================================
--- source	(revision 2875)
+++ source	(revision 2876)
@@ -43,11 +43,11 @@
   <p><em>This section is non-normative.</em></p>
 
   <p>This specification is intended for authors of documents and
-  scripts that use the features defined in this specification, and
-  implementors of tools that are intended to conform to this
-  specification, and individuals wishing to establish the correctness
-  of documents or implementations with respect to the requirements of
-  this specification.</p>
+  scripts that use the features defined in this specification<span
+  class="impl">, and implementors of tools that are intended to
+  conform to this specification, and individuals wishing to establish
+  the correctness of documents or implementations with respect to the
+  requirements of this specification</span>.</p>
 
   <p>This document is probably not suited to readers who do not
   already have at least a passing familiarity with Web technologies,
@@ -267,9 +267,9 @@
    <dt><a href="#semantics">Elements</a></dt>
 
    <dd>Each element has a predefined meaning, which is explained in
-   this section. User agent requirements for how to handle each
-   element are also given, along with rules for authors on how to use
-   the element.</dd>
+   this section. Rules for authors on how to use the element<span
+   class="impl">, along with user agent requirements for how to handle
+   each element,</span> are also given.</dd>
 
 
    <dt><a href="#browsers">Web Browsers</a></dt>
@@ -331,6 +331,24 @@
 
   <p class="warning">This is a warning.</p>
 
+  <pre class="idl">interface <dfn title="">Example</dfn> {
+  // this is an IDL definition
+};</pre>
+
+  <dl class="domintro">
+
+   <dt><var title="">variable</var> = <var title="">object</var> . <code title="">method</code>( [ <var title="">optionalArgument</var> ] )</dt>
+
+   <dd>
+
+    <p>This is a note to authors describing the usage of an interface.</p>
+
+   </dd>
+
+  </dl>
+
+  <pre class="css">/* this is a CSS fragment */</pre>
+
   <p>The defining instance of a term is marked up like <dfn
   title="x-this">this</dfn>. Uses of that term are marked up like
   <span title="x-this">this</span> or like <i
@@ -346,12 +364,9 @@
 
   <p>Variables are marked up like <var title="">this</var>.</p>
 
-  <pre class="idl">interface <dfn title="">Example</dfn> {
-  // this is an IDL definition
-};</pre>
+  <p class="impl">This is an implementation requirement.</p>
 
 
-
   <h2 id="infrastructure">Common infrastructure</h2>
 
   <h3>Terminology</h3>
@@ -388,13 +403,14 @@
   imply a visual medium; they must be considered to apply to other
   media in equivalent ways.</p>
 
-  <p>Some of the algorithms in this specification, for historical
-  reasons, require the user agent to <dfn>pause</dfn> until some
-  condition has been met. While a user agent is paused, it must ensure
-  that no scripts execute (e.g. no event handlers, no timers,
+  <p class="impl">Some of the algorithms in this specification, for
+  historical reasons, require the user agent to <dfn>pause</dfn> until
+  some condition has been met. While a user agent is paused, it must
+  ensure that no scripts execute (e.g. no event handlers, no timers,
   etc). User agents should remain responsive to user input while
   paused, however, albeit without letting the user interact with Web
-  pages where that would involve invoking any <span title="concept-script">script</span>.</p>
+  pages where that would involve invoking any <span
+  title="concept-script">script</span>.</p>
 
 
   <h4>XML</h4>
@@ -471,8 +487,8 @@
   <p>When it is stated that some element or attribute is <dfn
   title="ignore">ignored</dfn>, or treated as some other value, or
   handled as if it was something else, this refers only to the
-  processing of the node after it is in the DOM. A user agent must not
-  mutate the DOM in such situations.</p>
+  processing of the node after it is in the DOM. <span class="impl">A
+  user agent must not mutate the DOM in such situations.</span></p>
 
   <p>The term <dfn>text node</dfn> refers to any <code>Text</code>
   node, including <code>CDATASection</code> nodes; specifically, any
@@ -493,10 +509,11 @@
   <i>setting</i> when a new value is assigned to it.</p>
 
   <p>If a DOM object is said to be <dfn>live</dfn>, then that means
-  that any attributes returning that object must always return the
-  same object (not a new object each time), and the attributes and
-  methods on that object must operate on the actual underlying data,
-  not a snapshot of the data.</p>
+  that any attributes returning that object <span
+  class="impl">must</span> always return the same object (not a new
+  object each time), and the attributes and methods on that object
+  <span class="impl">must</span> operate on the actual underlying
+  data, not a snapshot of the data.</p>
 
   <p>The terms <i>fire</i> and <i>dispatch</i> are used
   interchangeably in the context of events, as in the DOM Events
@@ -560,24 +577,26 @@
   not appear in all uppercase letters in this specification. <a
   href="#refsRFC2119">[RFC2119]</a></p>
 
-  <p>Requirements phrased in the imperative as part of algorithms
-  (such as "strip any leading space characters" or "return false and
-  abort these steps") are to be interpreted with the meaning of the
-  key word ("must", "should", "may", etc) used in introducing the
-  algorithm.</p>
+  <p class="impl">Requirements phrased in the imperative as part of
+  algorithms (such as "strip any leading space characters" or "return
+  false and abort these steps") are to be interpreted with the meaning
+  of the key word ("must", "should", "may", etc) used in introducing
+  the algorithm.</p>
 
-  <p>This specification describes the conformance criteria for user
-  agents (relevant to implementors) and documents (relevant to
-  authors and authoring tool implementors).</p>
+  <p>This specification describes the conformance criteria for <span
+  class="impl">user agents (relevant to implementors) and</span>
+  documents<span class="impl"> (relevant to authors and authoring tool
+  implementors)</span>.</p>
 
-  <p class="note">There is no implied relationship between document
-  conformance requirements and implementation conformance
+  <p class="note impl">There is no implied relationship between
+  document conformance requirements and implementation conformance
   requirements. User agents are not free to handle non-conformant
   documents as they please; the processing model described in this
   specification applies to implementations regardless of the
   conformity of the input documents.</p>
 
 
+  <div class="impl">
 
   <!-- put this list into its own section -->
 
@@ -814,13 +833,15 @@
   e.g. to prevent denial of service attacks, to guard against running
   out of memory, or to work around platform-specific limitations.</p>
 
+  </div>
+
   <p>For compatibility with existing content and prior specifications,
   this specification describes two authoring formats: one based on XML
   (referred to as <dfn id="xhtml5" title="XHTML">XHTML5</dfn>), and
   one using a <a href="#parsing">custom format</a> inspired by SGML
-  (referred to as <dfn id="html5">HTML5</dfn>). Implementations may
-  support only one of these two formats, although supporting both is
-  encouraged.</p>
+  (referred to as <dfn id="html5">HTML5</dfn>). <span
+  class="impl">Implementations may support only one of these two
+  formats, although supporting both is encouraged.</span></p>
 
   <p id="authors-using-xhtml"><span>XHTML</span> documents (<span>XML
   documents</span> using elements from the <span>HTML
@@ -835,19 +856,22 @@
   must be labeled with the <code>text/html</code> MIME type.</p> <!--
   XXX update RFC 2854 -->
 
-  <p id="entity-references">The language in this specification assumes
-  that the user agent expands all entity references, and therefore
-  does not include entity reference nodes in the DOM. If user agents
-  do include entity reference nodes in the DOM, then user agents must
-  handle them as if they were fully expanded when implementing this
-  specification. For example, if a requirement talks about an
-  element's child text nodes, then any text nodes that are children of
-  an entity reference that is a child of that element would be used as
-  well. Entity references to unknown entities must be treated as if
-  they contained just an empty text node for the purposes of the
-  algorithms defined in this specification.</p>
+  <p id="entity-references" class="impl">The language in this
+  specification assumes that the user agent expands all entity
+  references, and therefore does not include entity reference nodes in
+  the DOM. If user agents do include entity reference nodes in the
+  DOM, then user agents must handle them as if they were fully
+  expanded when implementing this specification. For example, if a
+  requirement talks about an element's child text nodes, then any text
+  nodes that are children of an entity reference that is a child of
+  that element would be used as well. Entity references to unknown
+  entities must be treated as if they contained just an empty text
+  node for the purposes of the algorithms defined in this
+  specification.</p>
 
 
+  <div class="impl">
+
   <h4>Dependencies</h4>
 
   <p>This specification relies on several other underlying
@@ -885,7 +909,7 @@
 
    </dd>
 
-   <dt>ECMAScript</dt>
+   <dt>WebIDL</dt>
 
    <dd>
 
@@ -919,7 +943,11 @@
   requirements on character encodings, image formats, audio formats,
   and video formats in the respective sections.</p>
 
+  </div>
 
+
+  <div class="impl">
+
   <h4>Features defined in other specifications</h4>
 
   <p class="XXX">this section will be removed at some point</p>
@@ -944,7 +972,11 @@
   <!--XXX empty title attribute is equivalent to missing attribute for
   purposes of alternative style sheet processing -->
 
+  </div>
 
+
+  <div class="impl">
+
   <h4>Common conformance requirements for APIs exposed to
   JavaScript</h4>
 
@@ -977,8 +1009,8 @@
   <p>Unless otherwise specified, if a method is passed more arguments than
   is defined for that method in its IDL definition, the excess
   arguments must be ignored.</p>
-  
 
+  </div>  
 
 
   <h3>Case-sensitivity and string comparison</h3>
@@ -1002,6 +1034,9 @@
   href="#refsUNICODECASE">[UNICODECASE]</a></p> <!-- XXX refs to
   Unicode Standard Annex #21, Case Mappings -->
 
+
+  <div class="impl">
+
   <p><dfn title="converted to uppercase">Converting a string to
   uppercase</dfn> means replacing all characters in the range U+0061
   .. U+007A (i.e. LATIN SMALL LETTER A to LATIN SMALL LETTER Z) with
@@ -1014,6 +1049,9 @@
   with the corresponding characters in the range U+0061 .. U+007A
   (i.e. LATIN SMALL LETTER A to LATIN SMALL LETTER Z).</p>
 
+  </div>
+
+
   <p>A string <var title="">pattern</var> is a <dfn>prefix match</dfn>
   for a string <var title="">s</var> when <var title="">pattern</var>
   is not longer than <var title="">s</var> and truncating <var
@@ -1021,7 +1059,6 @@
   two strings as matches of each other.</p>
 
 
-
   <h3>Common microsyntaxes</h3>
 
   <p>There are various places in HTML that accept particular data
@@ -1039,6 +1076,8 @@
 
 
 
+  <div class="impl">
+
   <h4>Common parser idioms</h4>
 
   <p>The <dfn title="space character">space characters</dfn>, for the
@@ -1095,8 +1134,10 @@
   <p>The <dfn>codepoint length</dfn> of a string is the number of
   Unicode codepoints in that string.</p>
 
+  </div>
 
 
+
   <h4>Boolean attributes</h4>
 
   <p>A number of attributes in HTML5 are <dfn title="boolean
@@ -1125,6 +1166,8 @@
   <p>A <span>valid non-negative integer</span> represents the number
   that is represented in base ten by that string of digits.</p>
 
+  <div class="impl">
+
   <p>The <dfn>rules for parsing non-negative integers</dfn> are as
   given in the following algorithm. When invoked, the steps must be
   followed in the order given, aborting at the first step that returns
@@ -1189,7 +1232,9 @@
 
   </ol>
 
+  </div>
 
+
   <h5>Signed integers</h5>
 
   <p>A string is a <dfn>valid integer</dfn> if it consists of one of
@@ -1204,6 +1249,8 @@
   in base ten by the string of digits that follows the U+002D
   HYPHEN-MINUS, subtracted from zero.</p>
 
+  <div class="impl">
+
   <p>The <dfn>rules for parsing integers</dfn> are similar to the
   <span title="rules for parsing non-negative integers">rules for
   non-negative integers</span>, and are as given in the following
@@ -1288,7 +1335,9 @@
 
   </ol>
 
+  </div>
 
+
   <h5>Real numbers</h5>
 
   <p>A string is a <dfn>valid floating point number</dfn> if it
@@ -1351,6 +1400,8 @@
   title="valid floating point number">valid floating point
   numbers</span>.</p>
 
+  <div class="impl">
+
   <p>The <dfn>best representation of the floating point number</dfn>
   <var title="">n</var> is the string obtained from applying the
   ECMAScript operator ToString to <var title="">n</var>.</p>
@@ -1521,7 +1572,9 @@
 
   </ol>
 
+  </div>
 
+
   <h5>Ratios</h5>
 
   <p class="note">The algorithms described in this section are used by
@@ -1574,6 +1627,8 @@
    </tbody>
   </table>
 
+  <div class="impl">
+
   <p>The <dfn>steps for finding one or two numbers of a ratio in a
   string</dfn> are as follows:</p>
 
@@ -1675,9 +1730,12 @@
 
   </ol>
 
+  </div>
 
+
+<div class="impl">
   <h5 id="percentages-and-dimensions">Percentages and lengths</h5>
-<!--(percentages are not used in html5)
+<!--(percentages are not used in valid html5)
   <p>A string is a <dfn>valid dimension value</dfn> if it consists of
   a character in the range U+0031 DIGIT ONE (1) to U+0039 DIGIT NINE
   (9), optionally followed by zero of more characters in the range
@@ -1780,6 +1838,7 @@
 
   </ol>
 
+  </div>
 
 
   <h5>Lists of integers</h5>
@@ -1791,6 +1850,8 @@
   might be restrictions on the number of integers that can be given,
   or on the range of values allowed.</p>
 
+  <div class="impl">
+
   <p>The <dfn>rules for parsing a list of integers</dfn> are as
   follows:</p>
 
@@ -2090,7 +2151,11 @@
 
   </ol>
 
+  </div>
 
+
+  <div class="impl">
+
   <h5>Lists of dimensions</h5>
 
   <!-- no definition of a type since no conforming feature uses this
@@ -2216,7 +2281,9 @@
 
   </ol>
 
+  </div>
 
+
   <h4>Dates and times</h4>
 
   <p>In the algorithms below, the <dfn>number of days in month <var
@@ -2263,6 +2330,8 @@
 
   </ol>
 
+  <div class="impl">
+
   <p>The rules to <dfn>parse a month string</dfn> are as follows. This
   will either return a year and month, or nothing. If at any point the
   algorithm says that it "fails", this means that it is aborted at
@@ -2327,7 +2396,9 @@
 
   </ol>
 
+  </div>
 
+
   <h5>Dates</h5>
 
   <p>A <dfn title="concept-date">date</dfn> consists of a specific
@@ -2357,6 +2428,8 @@
 
   </ol>
 
+  <div class="impl">
+
   <p>The rules to <dfn>parse a date string</dfn> are as follows. This
   will either return a date, or nothing. If at any point the algorithm
   says that it "fails", this means that it is aborted at that point
@@ -2423,7 +2496,9 @@
 
   </ol>
 
+  </div>
 
+
   <h5>Times</h5>
 
   <p>A <dfn title="concept-time">time</dfn> consists of a specific
@@ -2482,6 +2557,8 @@
   <p class="note">The <var title="">second</var> component cannot be
   60 or 61; leap seconds cannot be represented.</p>
 
+  <div class="impl">
+
   <p>The rules to <dfn>parse a time string</dfn> are as follows. This
   will either return a time, or nothing. If at any point the algorithm
   says that it "fails", this means that it is aborted at that point
@@ -2593,6 +2670,7 @@
 
   </ol>
 
+  </div>
 
 
   <h5>Local dates and times</h5>
@@ -2617,6 +2695,8 @@
 
   </ol>
 
+  <div class="impl">
+
   <p>The rules to <dfn>parse a local date and time string</dfn> are as
   follows. This will either return a date and time, or nothing. If at
   any point the algorithm says that it "fails", this means that it is
@@ -2661,8 +2741,10 @@
 
   </ol>
 
+  </div>
 
 
+
   <h5>Global dates and times</h5>
 
   <p>A <dfn title="concept-datetime">global date and time</dfn>
@@ -2787,6 +2869,8 @@
 
   </div>
 
+  <div class="impl">
+
   <p>The rules to <dfn>parse a global date and time string</dfn> are
   as follows. This will either return a time in UTC, with associated
   timezone information for round tripping or display purposes, or
@@ -2932,6 +3016,8 @@
    title="">minutes</sub></var>.</p></li>
 
   </ol>
+  
+  </div>
 
 
   <h5>Weeks</h5>
@@ -2989,6 +3075,8 @@
 
   </ol>
 
+  <div class="impl">
+
   <p>The rules to <dfn>parse a week string</dfn> are as follows. This
   will either return a week-year number and week number, or
   nothing. If at any point the algorithm says that it "fails", this
@@ -3044,6 +3132,8 @@
    week number <var title="">week</var>.</p></li>
 
   </ol>
+  
+  </div>
 
 
   <h5>Vaguer moments in time</h5>
@@ -3071,6 +3161,8 @@
   followed by a <span>valid date or time string</span>, followed by
   zero or more further <span>White_Space</span> characters.</p>
 
+  <div class="impl">
+
   <p>The rules to <dfn>parse a date or time string</dfn> are as
   follows. The algorithm is invoked with a flag indicating if the
   <i>in attribute</i> variant or the <i>in content</i> variant is to
@@ -3182,6 +3274,8 @@
    </li>
 
   </ol>
+  
+  </div>
 
 
   <h4>Colors</h4>
@@ -3206,6 +3300,8 @@
   the range U+0041 LATIN CAPITAL LETTER A .. U+0046 LATIN CAPITAL
   LETTER F.</p>
 
+  <div class="impl">
+
   <p>The <dfn>rules for parsing simple color values</dfn> are as given
   in the following algorithm. When invoked, the steps must be followed
   in the order given, aborting at the first step that returns a
@@ -3394,6 +3490,8 @@
 
   </ol>
 
+  </div>
+
   <hr>
 
   <p class="note">The <span title="canvas-context-2d">2D graphics
@@ -3428,6 +3526,8 @@
   non-conforming. If no such set of allowed values is provided, then
   all values are conforming.</p>
 
+  <div class="impl">
+
   <p>When a user agent has to <dfn>split a string on spaces</dfn>, it
   must use the following algorithm:</p>
 
@@ -3543,6 +3643,8 @@
   removed from the string, and any spaces that were surrounding the
   token to be collapsed to a single space, except at the start and end
   of the string, where such spaces are removed.</p>
+  
+  </div>
 
 
 
@@ -3570,6 +3672,8 @@
   non-conforming. If no such restrictions are specified, then all
   values are conforming.</p>
 
+  <div class="impl">
+
   <p>When a user agent has to <dfn>split a string on commas</dfn>, it
   must use the following algorithm:</p>
 
@@ -3611,6 +3715,8 @@
    <li><p>Return <var title="">tokens</var>.</p></li>  
 
   </ol>
+  
+  </div>
 
 
 
@@ -3670,6 +3776,8 @@
   attribute of an element in the document with type <var
   title="">type</var>.</p>
 
+  <div class="impl">
+
   <p>The <dfn>rules for parsing a hash-name reference</dfn> to an
   element of type <var title="">type</var> are as follows:</p>
 
@@ -3701,10 +3809,10 @@
    -->
 
   </ol>
+  
+  </div>
 
 
-
-
   <h3>URLs</h3>
 
   <p>This specification defines the term <span>URL</span>, and defines
@@ -3740,6 +3848,8 @@
 
   </ul>
 
+  <div class="impl">
+
   <p>A <span>URL</span> has an associated <dfn>URL character
   encoding</dfn>, determined as follows:</p>
 
@@ -3769,7 +3879,11 @@
   <em>this</em> specification if they pretend the term "URL" as used
   herein is really called something else altogether.</p>
 
+  </div>
 
+
+  <div class="impl">
+
   <h4>Parsing URLs</h4>
 
   <p>To <dfn>parse a URL</dfn> <var title="">url</var> into its
@@ -3910,8 +4024,12 @@
   it's not clear RFC3986 does a good job of defining that anymore
   (earlier URI specs did) -->
 
+  </div>
 
 
+
+  <div class="impl">
+
   <h4>Resolving URLs</h4>
 
   <p>To <dfn>resolve a URL</dfn> to an <span>absolute URL</span>
@@ -4131,7 +4249,11 @@
   title="resolve a URL">resolving</span> it results in the same
   URL without an error.</p>
 
+  </div>
 
+
+  <div class="impl">
+
   <h4>Dynamic changes to base URLs</h4>
 
   <p>When an <code title="attr-xml-base">xml:base</code> attribute
@@ -4210,11 +4332,13 @@
 
   </dl>
 
+  </div>
 
 
+
   <h4>Interfaces for URL manipulation</h4>
 
- <p>An interface that has a complement of <dfn>URL decomposition
+  <p>An interface that has a complement of <dfn>URL decomposition
   attributes</dfn> will have seven attributes with the following
   definitions:</p>
 
@@ -4228,6 +4352,59 @@
            attribute DOMString <span title="dom-uda-hash">hash</span>;
 </pre>
 
+  <dl class="domintro">
+
+   <dt><var title="">o</var> . <code title="dom-uda-protocol">protocol</code> [ = <var title="">value</var> ]</dt>
+   <dd>
+    <p>Returns the current scheme of the underlying URL.</p>
+    <p>Can be set, to change the underlying URL's scheme.</p>
+   </dd>
+
+   <dt><var title="">o</var> . <code title="dom-uda-host">host</code> [ = <var title="">value</var> ]</dt>
+   <dd>
+    <p>Returns the current host and port (if it's not the default port) in the underlying URL.</p>
+    <p>Can be set, to change the underlying URL's host and port.</p>
+    <p>The host and the port are separated by a colon. The port part,
+    if omitted, will be assumed to be the current scheme's default
+    port.</p>
+   </dd>
+
+   <dt><var title="">o</var> . <code title="dom-uda-hostname">hostname</code> [ = <var title="">value</var> ]</dt>
+   <dd>
+    <p>Returns the current host in the underlying URL.</p>
+    <p>Can be set, to change the underlying URL's host.</p>
+   </dd>
+
+   <dt><var title="">o</var> . <code title="dom-uda-port">port</code> [ = <var title="">value</var> ]</dt>
+   <dd>
+    <p>Returns the current port in the underlying URL.</p>
+    <p>Can be set, to change the underlying URL's port.</p>
+   </dd>
+
+   <dt><var title="">o</var> . <code title="dom-uda-pathname">pathname</code> [ = <var title="">value</var> ]</dt>
+   <dd>
+    <p>Returns the current path in the underlying URL.</p>
+    <p>Can be set, to change the underlying URL's path.</p>
+   </dd>
+
+   <dt><var title="">o</var> . <code title="dom-uda-search">search</code> [ = <var title="">value</var> ]</dt>
+   <dd>
+    <p>Returns the current query component in the underlying URL.</p>
+    <p>Can be set, to change the underlying URL's query component.</p>
+   </dd>
+
+   <dt><var title="">o</var> . <code title="dom-uda-hash">hash</code> [ = <var title="">value</var> ]</dt>
+   <dd>
+    <p>Returns the current fragment identifier in the underlying URL.</p>
+    <p>Can be set, to change the underlying URL's fragment identifier.</p>
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
+  <hr>
+
   <p>The attributes defined to be URL decomposition attributes must
   act as described for the attributes with the same corresponding
   names in this section.</p>
@@ -4360,9 +4537,12 @@
   http://wp.netscape.com/eng/mozilla/3.0/handbook/javascript/ref_h-l.htm#84722
 -->
 
+  </div>
+
   <div class="example">
 
-   <p>The table below demonstrates how the getter condition for <code
+   <p>The table below demonstrates how the getter <span
+   class="impl">condition</span> for <code
    title="dom-uda-search">search</code> results in different results
    depending on the exact original syntax of the URL:</p>
 
@@ -4380,7 +4560,8 @@
      <tr>
       <td> <code title="">http://example.com/?</code>
       <td> <code title="">?</code>
-      <td> There is a <span title="url-query">&lt;query&gt;</span> component, but it is empty. The question mark in the resulting value is the prefix.
+      <td> There is a <span title="url-query">&lt;query&gt;</span> component, but it is empty.
+           <span class="impl">The question mark in the resulting value is the prefix.</span>
      <tr>
       <td> <code title="">http://example.com/?test</code>
       <td> <code title="">?test</code>
@@ -4394,6 +4575,7 @@
   </div>
 
 
+  <div class="impl">
 
   <h3>Fetching resources</h3>
 
@@ -4519,8 +4701,11 @@
 
   </div>
 
+  </div>
 
 
+  <div class="impl">
+
   <h3 id="content-type-sniffing">Determining the type of a resource</h3>
 
   <p class="warning">It is imperative that the rules in this section
@@ -5299,7 +5484,9 @@
   implement this algorithm and the algorithm for detecting the
   character encoding of HTML documents in parallel.</p>
 
+  </div>
 
+  <div class="impl">
 
   <h3>Character encodings</h3>
 
@@ -5395,6 +5582,7 @@
   and use of these encodings can thus lead to unexpected behavior in
   implementations of this specification.</p>
 
+  </div>
 
 
   <h3>Common DOM interfaces</h3>
@@ -5408,6 +5596,11 @@
   the DOM attribute changes the value of the content attribute to the
   given value.</p>
 
+  <p class="note">A list of <span>reflecting DOM attributes</span> and
+  their corresponding content attributes is given in the index.</p>
+
+  <div class="impl">
+
   <p>If a reflecting DOM attribute is a <code>DOMString</code>
   attribute whose content attribute is defined to contain a
   <span>URL</span>, then on getting, the DOM attribute must <span
@@ -5564,6 +5757,7 @@
   attribute. Otherwise, the DOM attribute must be set to the empty
   string.</p><!-- XXX or raise an exception? -->
 
+  </div>
 
 
   <h4>Collections</h4>
@@ -5588,17 +5782,21 @@
   title="represented by the collection">represents</dfn> a
   <span>live</span> view of the subtree rooted at the collection's
   root, containing only nodes that match the given filter. The view is
-  linear. In the absence of specific requirements to the contrary, the
-  nodes within the collection must be sorted in <span>tree
-  order</span>.</p>
+  linear. <span class="impl">In the absence of specific requirements
+  to the contrary, the nodes within the collection must be sorted in
+  <span>tree order</span>.</span></p>
 
+  <div class="impl">
+
   <p class="note">The <code title="dom-table-rows">rows</code> list is
   not in tree order.</p>
 
   <p>An attribute that returns a collection must return the same
   object every time it is retrieved.</p>
 
+  </div>
 
+
   <h5>HTMLCollection</h5>
 
   <p>The <code>HTMLCollection</code> interface represents a generic
@@ -5611,6 +5809,40 @@
   [NameGetter] Element <span title="dom-HTMLCollection-namedItem">namedItem</span>(in DOMString name);
 };</pre>
 
+  <dl class="domintro">
+
+   <dt><var title="">collection</var> . <code title="dom-HTMLCollection-length">length</code></dt>
+   <dd>
+    <p>Returns the number of elements in the collection.</p>
+   </dd>
+
+   <dt><var title="">element</var> = <var title="">collection</var> . <code title="dom-HTMLCollection-item">item</code>(<var title="">index</var>)</dt>
+   <dt><var title="">collection</var>[<var title="">index</var>]</dt>
+   <dd>
+    <p>Returns the item with index <var title="">index</var> from the collection. The items are sorted in <span>tree order</span>.</p>
+    <p>Returns null if <var title="">index</var> is out of range.</p>
+   </dd>
+
+   <dt><var title="">element</var> = <var title="">collection</var> . <code title="dom-HTMLCollection-item">namedItem</code>(<var title="">name</var>)</dt>
+   <dt><var title="">collection</var>[<var title="">name</var>]</dt>
+   <dd>
+    <p>Returns the first item with ID or name <var title="">name</var>
+    from the collection.</p>
+    <p>Returns null if no element with that ID or name could be found.</p>
+    <p>Only <code>a</code>, <code>applet</code>, <code>area</code>,
+    <code>embed</code>, <code>form</code>, <code>frame</code>,
+    <code>frameset</code>, <code>iframe</code>, <code>img</code>, and
+    <code>object</code> elements can have a name for the purpose of
+    this method; their name is given by the value of their <code
+    title="">name</code> attribute.</p>
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
+  <hr>
+
   <p>The object's <span>indices of the supported indexed
   properties</span> are the numbers in the range zero to one less than
   the number of nodes <span>represented by the collection</span>. If
@@ -5659,6 +5891,7 @@
   <p>If no such elements are found, then the method must return
   null.</p>
 
+  </div>
 
 
   <h5>HTMLFormControlsCollection</h5>
@@ -5675,6 +5908,34 @@
   [NameGetter] Object <span title="dom-HTMLFormControlsCollection-namedItem">namedItem</span>(in DOMString name);
 };</pre>
 
+  <dl class="domintro">
+
+   <dt><var title="">collection</var> . <code title="dom-HTMLFormControlsCollection-length">length</code></dt>
+   <dd>
+    <p>Returns the number of elements in the collection.</p>
+   </dd>
+
+   <dt><var title="">element</var> = <var title="">collection</var> . <code title="dom-HTMLFormControlsCollection-item">item</code>(<var title="">index</var>)</dt>
+   <dt><var title="">collection</var>[<var title="">index</var>]</dt>
+   <dd>
+    <p>Returns the item with index <var title="">index</var> from the collection. The items are sorted in <span>tree order</span>.</p>
+    <p>Returns null if <var title="">index</var> is out of range.</p>
+   </dd>
+
+   <dt><var title="">element</var> = <var title="">collection</var> . <code title="dom-HTMLFormControlsCollection-item">namedItem</code>(<var title="">name</var>)</dt>
+   <dt><var title="">collection</var>[<var title="">name</var>]</dt>
+   <dd>
+    <p>Returns the item with ID or <code title="attr-fe-name">name</code> <var title="">name</var> from the collection.</p>
+    <p>If there are multiple matching items, then a <code>NodeList</code> object containing all those elements is returned.</p>
+    <p>Returns null if no element with that ID or <code title="attr-fe-name">name</code> could be found.</p>
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
+  <hr>
+
   <p>The object's <span>indices of the supported indexed
   properties</span> are the numbers in the range zero to one less than
   the number of nodes <span>represented by the collection</span>. If
@@ -5731,12 +5992,13 @@
 
   </ol>
 
-
 <!--
 http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C%21DOCTYPE%20html%3E...%0A%3Cform%20name%3D%22a%22%3E%3Cinput%20id%3D%22x%22%20name%3D%22y%22%3E%3Cinput%20name%3D%22x%22%20id%3D%22y%22%3E%3C/form%3E%0A%3Cscript%3E%0A%20%20var%20x%3B%0A%20%20w%28x%20%3D%20document.forms%5B%27a%27%5D%5B%27x%27%5D%29%3B%0A%20%20w%28x.length%29%3B%0A%20%20x%5B0%5D.parentNode.removeChild%28x%5B0%5D%29%3B%0A%20%20w%28x.length%29%3B%0A%20%20w%28x%20%3D%3D%20document.forms%5B%27a%27%5D%5B%27x%27%5D%29%3B%0A%3C/script%3E%0A
 -->
 
+  </div>
 
+
   <h5>HTMLOptionsCollection</h5>
 
   <p>The <code>HTMLOptionsCollection</code> interface represents a
@@ -5754,6 +6016,51 @@
   void <span title="dom-HTMLOptionsCollection-remove">remove</span>(in long index);
 };</pre>
 
+  <dl class="domintro">
+
+   <dt><var title="">collection</var> . <code title="dom-HTMLOptionsCollection-length">length</code> [ = <var title="">value</var> ]</dt>
+   <dd>
+    <p>Returns the number of elements in the collection.</p>
+    <p>When set to a smaller number, truncates the number of <code>option</code> elements in the corresponding container.</p>
+    <p>When set to a greater number, adds new blank <code>option</code> elements to that container.</p>
+   </dd>
+
+   <dt><var title="">element</var> = <var title="">collection</var> . <code title="dom-HTMLOptionsCollection-item">item</code>(<var title="">index</var>)</dt>
+   <dt><var title="">collection</var>[<var title="">index</var>]</dt>
+   <dd>
+    <p>Returns the item with index <var title="">index</var> from the collection. The items are sorted in <span>tree order</span>.</p>
+    <p>Returns null if <var title="">index</var> is out of range.</p>
+   </dd>
+
+   <dt><var title="">element</var> = <var title="">collection</var> . <code title="dom-HTMLOptionsCollection-item">namedItem</code>(<var title="">name</var>)</dt>
+   <dt><var title="">collection</var>[<var title="">name</var>]</dt>
+   <dd>
+    <p>Returns the item with ID or <code title="attr-option-name">name</code> <var title="">name</var> from the collection.</p>
+    <p>If there are multiple matching items, then a <code>NodeList</code> object containing all those elements is returned.</p>
+    <p>Returns null if no element with that ID could be found.</p>
+   </dd>
+
+   <dt><var title="">collection</var> . <code title="dom-HTMLOptionsCollection-add">add</code>(<var title="">element</var>, <var title="">before</var>)</dt>
+   <dd>
+    <p>Inserts <var title="">element</var> before the node given by <var title="">before</var>.</p>
+    <p>The <var title="">before</var> argument can be a number, in
+    which case <var title="">element</var> is inserted before the item
+    with that number, or an element from the collection, in which case
+    <var title="">element</var> is inserted before that element.</p>
+    <p>If <var title="">before</var> is null or a number out of range,
+    then <var title="">element</var> will be added at the end of the
+    list.</p>
+    <p>This method will throw a <code>HIERARCHY_REQUEST_ERR</code>
+    exception if <var title="">element</var> is an ancestor of the
+    element into which it is to be inserted. If <var
+    title="">element</var> is not an <code>option</code> or
+    <code>optgroup</code> element, then the method does nothing.</p>
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The object's <span>indices of the supported indexed
   properties</span> are the numbers in the range zero to one less than
   the number of nodes <span>represented by the collection</span>. If
@@ -5898,6 +6205,7 @@
 
   <!-- see also http://ln.hixie.ch/?start=1161042744&count=1 -->
 
+  </div>
 
 
   <h4>DOMTokenList</h4>
@@ -5924,6 +6232,52 @@
   boolean <span title="dom-tokenlist-toggle">toggle</span>(in DOMString token);
 };</pre>
 
+  <dl class="domintro">
+
+   <dt><var title="">tokenlist</var> . <code title="dom-tokenlist-length">length</code></dt>
+   <dd>
+    <p>Returns the number of tokens in the string.</p>
+   </dd>
+
+   <dt><var title="">element</var> = <var title="">tokenlist</var> . <code title="dom-tokenlist-item">item</code>(<var title="">index</var>)</dt>
+   <dt><var title="">tokenlist</var>[<var title="">index</var>]</dt>
+   <dd>
+    <p>Returns the token with index <var title="">index</var>. The tokens are sorted alphabetically.</p>
+    <p>Returns null if <var title="">index</var> is out of range.</p>
+   </dd>
+
+   <dt><var title="">has-p</var> = <var title="">tokenlist</var> . <code title="dom-tokenlist-has">has</code>(<var title="">token</var>)</dt>
+   <dd>
+    <p>Returns true if the <var title="">token</var> is present; false otherwise.</p>
+    <p>Throws an <code>INVALID_CHARACTER_ERR</code> exception if <var title="">token</var> contains any spaces.</p>
+   </dd>
+
+   <dt><var title="">tokenlist</var> . <code title="dom-tokenlist-add">add</code>(<var title="">token</var>)</dt>
+   <dd>
+    <p>Adds <var title="">token</var>, unless it is already present.</p>
+    <p>Throws an <code>INVALID_CHARACTER_ERR</code> exception if <var title="">token</var> contains any spaces.</p>
+   </dd>
+
+   <dt><var title="">tokenlist</var> . <code title="dom-tokenlist-remove">remove</code>(<var title="">token</var>)</dt>
+   <dd>
+    <p>Removes <var title="">token</var> if it is present.</p>
+    <p>Throws an <code>INVALID_CHARACTER_ERR</code> exception if <var title="">token</var> contains any spaces.</p>
+   </dd>
+
+   <dt><var title="">has-p</var> = <var title="">tokenlist</var> . <code title="dom-tokenlist-toggle">toggle</code>(<var title="">token</var>)</dt>
+   <dd>
+    <p>Adds <var title="">token</var> if it is not present, or removes it if it is.</p>
+    <p>Throws an <code>INVALID_CHARACTER_ERR</code> exception if <var title="">token</var> contains any spaces.</p>
+   </dd>
+
+   <!-- eventually someone will complain about the has-p variable
+   names above, and we'll replace them with something better that they
+   suggest -->
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-tokenlist-length"><code>length</code></dfn>
   attribute must return the number of <em>unique</em> tokens that
   result from <span title="split a string on spaces">splitting the
@@ -6054,7 +6408,10 @@
   <dfn title="dom-tokenlist-toString">stringify</dfn> to the object's
   underlying string representation.</p>
 
+  </div>
 
+  <div class="impl">
+
   <h4>Safe passing of structured data</h4>
 
   <p>When a user agent is required to obtain a <dfn>structured
@@ -6154,16 +6511,23 @@
 
   </dl>
 
+  </div>
 
 
+
   <h4>DOMStringMap</h4>
 
   <p>The <code>DOMStringMap</code> interface represents a set of
-  name-value pairs. When a <code>DOMStringMap</code> object is
-  instantiated, it is associated with three algorithms, one for
-  getting getting the list of name-value pairs, one for setting names
-  to certain values, and one for deleting names.</p>
+  name-value pairs. It exposes these using the scripting language's
+  native mechanisms for property access.</p>
 
+  <div class="impl">
+
+  <p>When a <code>DOMStringMap</code> object is instantiated, it is
+  associated with three algorithms, one for getting getting the list
+  of name-value pairs, one for setting names to certain values, and
+  one for deleting names.</p>
+
   <pre class="idl">[NameCreator, NameDeleter, NameGetter, NameSetter]
 interface <dfn>DOMStringMap</dfn> {};</pre>
 
@@ -6195,7 +6559,43 @@
   bindings will need to define how <code>DOMStringMap</code> is to be
   implemented for those languages.</p>
 
+  </div>
 
+  <div class="example">
+
+   <p>The <code title="dom-dataset">dataset</code> attribute on
+   elements exposes the <code title="attr-data-*">data-*</code>
+   attributes on the element.</p>
+
+   <p>Given the following fragment and elements with similar
+   constructions:</p>
+
+   <pre>&lt;img class="tower" id="tower5" data-x="12" data-y="5"
+     data-ai="robotarget" data-hp="46" data-ability="flames"
+     src="towers/rocket.png alt="Rocket Tower"></pre>
+
+   <p>...one could imagine a function <code
+   title="">splashDamage()</code> that takes some arguments, the first
+   of which is the element to process:</p>
+
+   <pre>function splashDamage(node, x, y, damage) {
+  if (node.classList.has('tower') && // checking the 'class' attribute
+      node.dataset.x == x && // reading the 'data-x' attribute
+      node.dataset.y == y) { // reading the 'data-y' attribute
+    var hp = parseInt(node.dataset.hp); // reading the 'data-hp' attribute
+    hp = hp - damage;
+    if (hp &lt; 0) {
+      hp = 0;
+      node.dataset.ai = 'dead'; // setting the 'data-ai' attribute
+      delete node.dataset.ability; // removing the 'data-ability' attribute
+    }
+    node.dataset.hp = hp; // setting the 'data-hp' attribute
+  }
+}</pre>
+
+  </div>
+
+
   <h4>DOM feature strings</h4>
 
   <p>DOM3 Core defines mechanisms for checking for interface support,
@@ -6212,15 +6612,15 @@
   implementation. In addition to the feature string "<code
   title="">HTML</code>", the feature string "<code
   title="">XHTML</code>" (with version string "<code>5.0</code>") can
-  be used to check if the implementation supports XHTML. User agents
-  should respond with a true value when the <code>hasFeature</code>
-  method is queried with these values. Authors are cautioned, however,
-  that UAs returning true might not be perfectly compliant, and that
-  UAs returning false might well have support for features in this
-  specification; in general, therefore, use of this method is
-  discouraged.</p>
+  be used to check if the implementation supports XHTML. <span
+  title="impl">User agents should respond with a true value when the
+  <code>hasFeature</code> method is queried with these values.</span>
+  Authors are cautioned, however, that UAs returning true might not be
+  perfectly compliant, and that UAs returning false might well have
+  support for features in this specification; in general, therefore,
+  use of this method is discouraged.</p>
 
-  <p>The values "<code title="">HTML</code>" and "<code
+  <p class="impl">The values "<code title="">HTML</code>" and "<code
   title="">XHTML</code>" (both with version "<code>5.0</code>") should
   also be supported in the context of the <code>getFeature()</code>
   and <code>isSupported()</code> methods, as defined by DOM3 Core.</p>
@@ -6270,6 +6670,8 @@
   </ol>
 
 
+  <div class="impl">
+
   <h4>Garbage collection</h4>
 
   <p>There is an <dfn>implied strong reference</dfn> from any DOM
@@ -6286,6 +6688,7 @@
 
   </div>
 
+  </div>
 
 
 
@@ -6334,18 +6737,20 @@
   <h4>Documents in the DOM</h4>
 
   <p>All <code>Document</code> objects (in user agents implementing
-  this specification) must also implement the
-  <code>HTMLDocument</code> interface, available using
+  this specification) <span class="impl">must</span> also implement
+  the <code>HTMLDocument</code> interface, available using
   binding-specific methods. (This is the case whether or not the
   document in question is an <span title="HTML documents">HTML
   document</span> or indeed whether it contains any <span>HTML
-  elements</span> at all.) <code>Document</code> objects must also
-  implement the document-level interface of any other namespaces found
-  in the document that the UA supports. For example, if an HTML
-  implementation also supports SVG, then the <code>Document</code>
-  object must implement <code>HTMLDocument</code> and
-  <code>SVGDocument</code>.</p>
+  elements</span> at all.) <code>Document</code> objects <span
+  class="impl">must</span> also implement the document-level interface
+  of any other namespaces found in the document that the UA
+  supports.</p>
 
+  <p class="example">For example, if an HTML implementation also
+  supports SVG, then the <code>Document</code> object implements both
+  <code>HTMLDocument</code> and <code>SVGDocument</code>.</p>
+
   <p class="note">Because the <code>HTMLDocument</code> interface is
   now obtained using binding-specific casting methods instead of
   simply being the primary interface of the document object, it is no
@@ -6411,16 +6816,38 @@
 
   <h4>Security</h4>
 
-  <p>User agents must raise a <code>SECURITY_ERR</code> exception whenever
-  any of the members of an <code>HTMLDocument</code> object are
-  accessed by scripts whose <span>effective script origin</span> is
-  not the <span title="same origin">same</span> as the
-  <code>Document</code>'s <span>effective script origin</span>.</p>
+  <p>User agents <span class="impl">must</span> raise a
+  <code>SECURITY_ERR</code> exception whenever any of the members of
+  an <code>HTMLDocument</code> object are accessed by scripts whose
+  <span>effective script origin</span> is not the <span title="same
+  origin">same</span> as the <code>Document</code>'s <span>effective
+  script origin</span>.</p>
 
 
 
   <h4><dfn>Resource metadata management</dfn></h4>
 
+  <dl class="domintro">
+
+   <dt><var title="">document</var> . <code title="dom-document-URL">URL</code></dt>
+   <dd>
+    <p>Returns <span>the document's address</span>.</p>
+   </dd>
+
+   <dt><var title="">document</var> . <code title="dom-document-referrer">referrer</code></dt>
+   <dd>
+    <p>Returns <span title="the document's address">the address</span>
+    of the <code>Document</code> from which the user navigated to this
+    one, unless it was blocked or there was no such document, in which
+    case it returns the empty string.</p>
+    <p>The <code title="link-type-noreferrer">noreferrer</code> link
+    type can be used to block the referrer.</p>
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-document-URL"><code>URL</code></dfn>
   attribute must return <span>the document's address</span>.</p>
 
@@ -6451,6 +6878,28 @@
 
   <hr>
 
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">document</var> . <code title="dom-document-cookie">cookie</code> [ = <var title="">value</var> ]</dt>
+   <dd>
+    <p>Returns the HTTP cookies that apply to the
+    <code>Document</code>. If there are no cookies or cookies can't be
+    applied to this resource, the empty string will be returned.</p>
+    <p>Can be set, to add a new cookie to the element's set of HTTP
+    cookies.</p>
+    <p>If the <code>Document</code> has no <span>browsing
+    context</span> an <code>INVALID_STATE_ERR</code> exception will be
+    thrown. If the contents are <span title="sandboxed origin browsing
+    context flag">sandboxed into a unique origin</span>, a
+    <code>SECURITY_ERR</code> exception will be thrown.</p>
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-document-cookie"><code>cookie</code></dfn>
   attribute represents the cookies of the resource.</p>
 
@@ -6504,6 +6953,23 @@
 
   <hr> 
 
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">document</var> . <code title="dom-document-lastmodified">lastModified</code></dt>
+   <dd>
+    <p>Returns the date of the last modification to the document, as
+    reported by the server, in the form "<code
+    title="">MM/DD/YYYY&nbsp;hh:mm:ss</code>".</p>
+    <p>If the last modification date is not known, it is reported as
+    "<code title="">01/01/1970&nbsp;00:00:00</code>"
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-document-lastModified"><code>lastModified</code></dfn>
   attribute, on getting, must return the date and time of the
@@ -6539,7 +7005,9 @@
   <p>All the numeric components above, other than the year, must be
   given as two digits in the range U+0030 DIGIT ZERO to U+0039 DIGIT
   NINE representing the number in base ten, zero-padded if
-  necessary.</p>
+  necessary. The year must be given as four or more digits in the
+  range U+0030 DIGIT ZERO to U+0039 DIGIT NINE representing the number
+  in base ten, zero-padded if necessary.</p>
 
   <p>The <code>Document</code>'s source file's last modification date
   and time must be derived from relevant features of the networking
@@ -6547,9 +7015,27 @@
   title="">Last-Modified</code> header of the document, or from
   metadata in the file system for local files. If the last modification
   date and time are not known, the attribute must return the string
-  <code title="">01/01/1970 00:00:00</code>.</p>
+  "<code title="">01/01/1970&nbsp;00:00:00</code>".</p>
 
+  <hr>
 
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">document</var> . <code title="dom-document-compatmode">compatMode</code></dt>
+   <dd>
+    <p>In a conforming document, returns the string "<code
+    title="">CSS1Compat</code>". (In <span>quirks mode</span>
+    documents, returns the string "<code title="">BackCompat</code>",
+    but a conforming document can never trigger <span>quirks
+    mode</span>.)</p>
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>A <code>Document</code> is always set to one of three modes:
   <dfn>no quirks mode</dfn>, the default; <dfn>quirks mode</dfn>, used
   typically for legacy documents; and <dfn>limited quirks mode</dfn>,
@@ -6583,8 +7069,34 @@
 
   </div>
 
+  <hr>
 
+  </div>
 
+  <dl class="domintro">
+
+   <dt><var title="">document</var> . <code title="dom-document-charset">charset</code> [ = <var title="">value</var> ]</dt>
+   <dd>
+    <p>Returns the <span>document's character encoding</span>.</p>
+    <p>Can be set, to dynamically change the <span>document's
+    character encoding</span>.</p>
+    <p>New values that are not IANA-registered aliases are ignored.</p>
+   </dd>
+
+   <dt><var title="">document</var> . <code title="dom-document-characterSet">characterSet</code></dt>
+   <dd>
+    <p>Returns the <span>document's character encoding</span>.</p>
+   </dd>
+
+   <dt><var title="">document</var> . <code title="dom-document-defaultCharset">defaultCharset</code></dt>
+   <dd>
+    <p>Returns what might be the user agent's default character encoding.</p>
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>Documents have an associated <dfn title="document's character
   encoding">character encoding</dfn>. When a <code>Document</code>
   object is created, the <span>document's character encoding</span>
@@ -6613,6 +7125,22 @@
   encoding associated with the user's current geographical location,
   or any arbitrary encoding name.</p>
 
+  <hr>
+
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">document</var> . <code title="dom-document-readyState">readyState</code></dt>
+   <dd>
+    <p>Returns "loading" while the <code>Document</code> is loading, and "complete" once it has loaded.</p>
+    <p>The <code title="event-readystatechange">readystatechange</code> event fires on the <code>Document</code> object when this value changes.</p>
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>Each document has a <dfn>current document readiness</dfn>. When a
   <code>Document</code> object is created, it must have its
   <span>current document readiness</span> set to the string "loading"
@@ -6630,8 +7158,10 @@
   attribute must, on getting, return the <span>current document
   readiness</span>.</p>
 
+  </div>
 
 
+
   <h4><dfn>DOM tree accessors</dfn></h4>
 
   <p><dfn>The <code>html</code> element</dfn> of a document is the
@@ -6645,10 +7175,27 @@
 
   <hr>
 
+  <dl class="domintro">
+
+   <dt><var title="">document</var> . <code title="dom-document-title">title</code> [ = <var title="">value</var> ]</dt>
+   <dd>
+    <p>Returns the document's title, as given by <span>the
+    <code>title</code> element</span>.</p>
+    <p>Can be set, to update the document's title. If there is no
+    <span title="the head element"><code>head</code> element</span>,
+    the new value is ignored.</p>
+    <p>In SVG documents, the <code>SVGDocument</code> interface's
+    <code title="">title</code> attribute takes precedence.</p>
+   </dd>
+
+  </dl>
+
   <p><dfn>The <code>title</code> element</dfn> of a document is the
   first <code>title</code> element in the document (in tree order), if
   there is one, or null otherwise.</p>
 
+  <div class="impl">
+
   <p>The <dfn id="document.title"
   title="dom-document-title"><code>title</code></dfn> attribute must,
   on getting, run the following algorithm:</p>
@@ -6706,16 +7253,31 @@
   of the same name on the <code>SVGDocument</code> interface when the
   user agent supports both HTML and SVG.</p>
 
+  </div>
+
   <hr>
 
+  <dl class="domintro">
+
+   <dt><var title="">document</var> . <code title="dom-document-body">body</code> [ = <var title="">value</var> ]</dt>
+   <dd>
+    <p>Returns <span>the body element</span>.</p>
+    <p>Can be set, to replace <span>the body element</span>.</p>
+    <p>If the new value is not a <code>body</code> or <code>frameset</code> element, this will throw a <code>HIERARCHY_REQUEST_ERR</code> exception.</p>
+   </dd>
+
+  </dl>
+
   <p><dfn>The body element</dfn> of a document is the first child of
   <span>the <code>html</code> element</span> that is either a
   <code>body</code> element or a <code>frameset</code> element. If
-  there is no such element, it is null. If the body element is null,
-  then when the specification requires that events be fired at "the
-  body element", they must instead be fired at the
-  <code>Document</code> object.</p>
+  there is no such element, it is null. <span class="impl">If the body
+  element is null, then when the specification requires that events be
+  fired at "the body element", they must instead be fired at the
+  <code>Document</code> object.</span></p>
 
+  <div class="impl">
+
   <p>The <dfn title="dom-document-body"><code>body</code></dfn>
   attribute, on getting, must return <span>the body element</span> of
   the document (either a <code>body</code> element, a
@@ -6753,8 +7315,42 @@
     search for ::body
   -->
 
+  </div>
+
   <hr>
 
+  <dl class="domintro">
+
+   <dt><var title="">document</var> . <code title="dom-document-images">images</code></dt>
+   <dd>
+    <p>Returns an <code>HTMLCollection</code> of the <code>img</code> elements in the <code>Document</code>.</p>
+   </dd>
+
+   <dt><var title="">document</var> . <code title="dom-document-embeds">embeds</code></dt>
+   <dt><var title="">document</var> . <code title="dom-document-plugins">plugins</code></dt>
+   <dd>
+    <p>Return an <code>HTMLCollection</code> of the <code>embed</code> elements in the <code>Document</code>.</p>
+   </dd>
+
+   <dt><var title="">document</var> . <code title="dom-document-links">links</code></dt>
+   <dd>
+    <p>Returns an <code>HTMLCollection</code> of the <code>a</code> and <code>area</code> elements in the <code>Document</code> that have <code title="attr-hyperlink-href">href</code> attributes.</p>
+   </dd>
+
+   <dt><var title="">document</var> . <code title="dom-document-forms">forms</code></dt>
+   <dd>
+    <p>Return an <code>HTMLCollection</code> of the <code>form</code> elements in the <code>Document</code>.</p>
+   </dd>
+
+   <dt><var title="">document</var> . <code title="dom-document-scripts">scripts</code></dt>
+   <dd>
+    <p>Return an <code>HTMLCollection</code> of the <code>script</code> elements in the <code>Document</code>.</p>
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <!-- these all return the same object each time because of a rule in
   the collection section -->
 
@@ -6788,8 +7384,9 @@
   attribute must return an <code>HTMLCollection</code> rooted at the
   <code>Document</code> node, whose filter matches only <code>a</code>
   elements with <code title="attr-a-name">name</code>
-  attributes.</p><!-- XXX note that such elements are non-conforming
-  -->
+  attributes.</p><!-- XXX move this to the obsolete APIs section or
+  add it to the domintro bit above, noting that such elements are
+  invalid -->
 
   <p>The <dfn title="dom-document-scripts"><code>scripts</code></dfn>
   attribute must return an <code>HTMLCollection</code> rooted at the
@@ -6798,6 +7395,37 @@
 
   <hr>
 
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">collection</var> = <var title="">document</var> . <code title="dom-document-getElementsByName">getElementsByName</code>(<var title="">name</var>)</dt>
+   <dd>
+    <p>Returns a <code>NodeList</code> of <code>a</code>,
+    <code>applet</code>, <code>button</code>, <code>form</code>,
+    <code>frame</code>, <code>frameset</code>, <code>iframe</code>,
+    <code>img</code>, <code>input</code>, <code>map</code>,
+    <code>meta</code>, <code>object</code>, <!-- not param, per IE8
+    --> <code>select</code>, and <code>textarea</code> elements in the
+    <code>Document</code> that have a <code title="">name</code>
+    attribute with the value <var title="">name</var>.</p>
+   </dd>
+
+   <dt><var title="">collection</var> = <var title="">document</var> . <code title="dom-document-getElementsByClassName">getElementsByClassName(<var title="">classes</var>)</code></dt>
+   <dt><var title="">collection</var> = <var title="">element</var> . <code title="dom-getElementsByClassName">getElementsByClassName(<var title="">classes</var>)</code></dt>
+   <dd>
+    <p>Returns a <code>NodeList</code> of the elements in the object
+    on which the method was invoked (a <code>Document</code> or an
+    <code>Element</code>) that have all the classes given by <var
+    title="">classes</var>.</p>
+    <p>The <var title="">classes</var> argument is interpreted as a
+    space-separated list of classes.</p>
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-document-getElementsByName"><code>getElementsByName(<var
   title="">name</var>)</code></dfn> method takes a string <var
@@ -6806,11 +7434,11 @@
   <code>button</code>, <code>form</code>, <code>frame</code>,
   <code>frameset</code>, <code>iframe</code>, <code>img</code>,
   <code>input</code>, <code>map</code>, <code>meta</code>,
-  <code>object</code>,<!-- param?  XXX--> <code>select</code>, and
-  <code>textarea</code> elements in that document that have a <code
-  title="">name</code> attribute whose value is equal to the <var
-  title="">name</var> argument (in a <span>case-sensitive</span>
-  manner), in <span>tree order</span>.</p>
+  <code>object</code>, <!-- not param, per IE8 -->
+  <code>select</code>, and <code>textarea</code> elements in that
+  document that have a <code title="">name</code> attribute whose
+  value is equal to the <var title="">name</var> argument (in a
+  <span>case-sensitive</span> manner), in <span>tree order</span>.</p>
 
   <p>The <dfn
   title="dom-document-getElementsByClassName"><code>getElementsByClassName(<var
@@ -6829,8 +7457,9 @@
   <span>case-sensitive</span> manner.</p>
 
   <p>The <dfn
-  title="dom-getElementsByClassName"><code>getElementsByClassName()</code></dfn>
-  method on the <code>HTMLElement</code> interface must return a live
+  title="dom-getElementsByClassName"><code>getElementsByClassName(<var
+  title="">classNames</var>)</code></dfn> method on the
+  <code>HTMLElement</code> interface must return a live
   <code>NodeList</code> with the nodes that the
   <code>HTMLDocument</code> <code
   title="dom-document-getElementsByClassName">getElementsByClassName()</code>
@@ -6838,6 +7467,8 @@
   elements that are not descendants of the <code>HTMLElement</code>
   object on which the method was invoked.</p>
 
+  </div>
+
   <p>HTML, SVG, and MathML elements define which classes they are in
   by having an attribute in the per-element partition with the name
   <code title="">class</code> containing a space-separated list of
@@ -6878,6 +7509,8 @@
 > optional tag name.
 -->
 
+  <div class="impl">
+
   <hr>
 
   <p>The <code>HTMLDocument</code> interface <span title="support
@@ -6981,6 +7614,8 @@
   <code>param</code> elements, and no <span>text node</span>
   descendants that are not <span>inter-element whitespace</span>.</p>
 
+  </div>
+
   <hr>
 
   <p class="note">The <code title="dom-document-dir">dir</code>
@@ -7071,7 +7706,8 @@
   semantics of a document at an instant in time are those represented
   by the state of the document at that instant in time, and the
   semantics of a document can therefore change over time. User agents
-  must update their presentation of the document as this occurs.</p>
+  <span class="impl">must</span> update their presentation of the
+  document as this occurs.</p>
 
   <p class="example">HTML has a <code>progress</code> element that
   describes a progress bar. If its "value" attribute is dynamically
@@ -7082,12 +7718,12 @@
 
   <h4>Elements in the DOM</h4>
 
-  <p>The nodes representing <span>HTML elements</span> in the DOM must
-  implement, and expose to scripts, the interfaces listed for them in
-  the relevant sections of this specification. This includes
-  <span>HTML elements</span> in <span>XML documents</span>, even when
-  those documents are in another context (e.g. inside an XSLT
-  transform).</p>
+  <p>The nodes representing <span>HTML elements</span> in the DOM
+  <span class="impl">must</span> implement, and expose to scripts, the
+  interfaces listed for them in the relevant sections of this
+  specification. This includes <span>HTML elements</span> in <span>XML
+  documents</span>, even when those documents are in another context
+  (e.g. inside an XSLT transform).</p>
 
   <p>Elements in the DOM <span title="represents">represent</span>
   things; that is, they have intrinsic <em>meaning</em>, also known as
@@ -7097,9 +7733,9 @@
   represents an ordered list.</p>
 
   <p>The basic interface, from which all the <span>HTML
-  elements</span>' interfaces inherit, and which must be used by
-  elements that have no additional requirements, is the
-  <code>HTMLElement</code> interface.</p>
+  elements</span>' interfaces inherit, <span class="impl">and which
+  must be used by elements that have no additional
+  requirements,</span> is the <code>HTMLElement</code> interface.</p>
 
   <pre class="idl">interface <dfn>HTMLElement</dfn> : <span>Element</span> {
   // <span>DOM tree accessors</span>
@@ -7177,8 +7813,8 @@
   <h4><dfn>Global attributes</dfn></h4>
 
   <p>The following attributes are common to and may be specified on
-  all <span>HTML elements</span> (even those not defined in this
-  specification):</p>
+  all <span>HTML elements</span><span class="impl"> (even those not
+  defined in this specification)</span>:</p>
 
   <ul class="brief">
    <li><code title="attr-class">class</code></li>
@@ -7273,6 +7909,8 @@
   <!-- space characters are disallowed because space-separated lists
   of IDs otherwise would not be able to reach all valid IDs -->
 
+  <div class="impl">
+
   <p>If the value is not the empty string, user agents must associate
   the element with the given value (exactly, including any space
   characters) for the purposes of ID matching within the element's
@@ -7292,7 +7930,9 @@
   <span>reflect</span> the <code title="attr-id">id</code> content
   attribute.</p>
 
+  </div>
 
+
   <h5>The <dfn title="attr-title"><code>title</code></dfn> attribute</h5>
 
   <p>The <code title="attr-title">title</code> attribute
@@ -7323,11 +7963,17 @@
   title="attr-title">title</code> attribute beyond the semantics
   described above.</p>
 
+  <div class="impl">
+
+  <hr>
+
   <p>The <dfn title="dom-title"><code>title</code></dfn> DOM attribute
   must <span>reflect</span> the <code title="attr-title">title</code>
   content attribute.</p>
 
+  </div>
 
+
   <h5>The <dfn title="attr-lang"><code>lang</code></dfn> and <dfn
   title="attr-xml-lang"><code>xml:lang</code></dfn>
   attributes</h5>
@@ -7378,6 +8024,8 @@
   value when compared in an <span>ASCII case-insensitive</span>
   manner.</p>
 
+  <div class="impl">
+
   <hr>
 
   <p>To determine the language of a node, user agents must look at the
@@ -7419,11 +8067,15 @@
   directionality. (commented out because text directionality is a
   rendering-level concern.)--></p>
 
+  <hr>
+
   <p>The <dfn title="dom-lang"><code>lang</code></dfn> DOM attribute
   must <span>reflect</span> the <code title="attr-lang">lang</code>
   content attribute.</p>
 
+  </div>
 
+
   <h5>The <dfn title="attr-xml-base"><code>xml:base</code></dfn>
   attribute (XML only)</h5>
 
@@ -7445,12 +8097,16 @@
   mapping to the state <i>rtl</i>. The attribute has no
   defaults.</p>
 
+  <div class="impl">
+
   <p>The processing of this attribute is primarily performed by the
   presentation layer. For example, the rendering section in this
   specification defines a mapping from this attribute to the CSS
   'direction' and 'unicode-bidi' properties, and CSS defines rendering
   in terms of those properties.</p>
 
+  </div>
+
   <p><dfn>The directionality</dfn> of an element, which is used in
   particular by the <code>canvas</code> element's text rendering API,
   is either 'ltr' or 'rtl'. If the user agent supports CSS and the
@@ -7468,6 +8124,21 @@
   is the same as its parent element, or 'ltr' if there is no parent
   element.</p>
 
+  <hr>
+
+  <dl class="domintro">
+
+   <dt><var title="">document</var> . <code title="dom-dir">dir</code> [ = <var title="">value</var> ]</dt>
+   <dd>
+    <p>Returns <span>the <code>html</code> element</span>'s <code title="attr-dir">dir</code> attribute's value, if any.</p>
+    <p>Can be set, to either "<code title="">ltr</code>" or "<code title="">rtl</code>", to replace <span>the <code>html</code> element</span>'s <code title="attr-dir">dir</code> attribute's value.</p>
+    <p>If there is no <span title="the html element"><code>html</code> element</span>, returns the empty string and ignores new values.</p>
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-dir"><code>dir</code></dfn> DOM attribute on
   an element must <span>reflect</span> the <code
   title="attr-dir">dir</code> content attribute of that element,
@@ -7481,6 +8152,8 @@
   element, then the attribute must return the empty string and do
   nothing on setting.</p>
 
+  </div>
+
   <p class="note">Authors are strongly encouraged to use the <code
   title="attr-dir">dir</code> attribute to indicate text direction
   rather than using CSS, since that way their documents will continue
@@ -7497,12 +8170,16 @@
   <span>unordered set of unique space-separated tokens</span>
   representing the various classes that the element belongs to.</p>
 
+  <div class="impl">
+
   <p>The classes that an <span title="HTML elements">HTML
   element</span> has assigned to it consists of all the classes
   returned when the value of the <code title="attr-class">class</code>
   attribute is <span title="split a string on spaces">split on
   spaces</span>.</p>
 
+  </div>
+
   <p class="note">Assigning classes to an element affects class
   matching in selectors in CSS, the <code
   title="dom-document-getElementsByClassName">getElementsByClassName()</code>
@@ -7514,13 +8191,19 @@
   values that describe the desired presentation of the
   content.</p>
 
+  <div class="impl">
+
+  <hr>
+
   <p>The <dfn title="dom-className"><code>className</code></dfn> and
   <dfn title="dom-classList"><code>classList</code></dfn> DOM
   attributes must both <span>reflect</span> the <code
   title="attr-class">class</code> content attribute.</p>
 
+  </div>
 
 
+
   <h5>The <dfn title="attr-style"><code>style</code></dfn> attribute</h5>
 
   <p>All elements may have the <code title="attr-style">style</code>
@@ -7528,6 +8211,8 @@
   a list of zero or more semicolon-separated (;) CSS declarations. <a
   href="#refsCSS21">[CSS21]</a></p>
 
+  <div class="impl">
+
   <p>In user agents that support CSS, the attribute's value must be
   parsed when the attribute is added or has its value changed, with
   its value treated as the body (the part inside the curly brackets)
@@ -7537,8 +8222,10 @@
   url">resolved</span> relative to the element when the attribute is
   parsed.<!-- so dynamic changes to the base URL don't affect the CSS
   --> For the purposes of the CSS cascade, the attribute must be
-  considered to be a 'style' attribute at the author level. </p>
+  considered to be a 'style' attribute at the author level.</p>
 
+  </div>
+
   <p>Documents that use <code title="attr-style">style</code>
   attributes on any of their elements must still be comprehensible and
   usable if those attributes were removed.</p>
@@ -7546,8 +8233,22 @@
   <p class="note">In particular, using the <code
   title="attr-style">style</code> attribute to hide and show content,
   or to convey meaning that is otherwise not included in the document,
-  is non-conforming.</p>
+  is non-conforming. (To hide and show content, use the <code
+  title="attr-hidden">hidden</code> attribute.)</p>
 
+  <hr>
+  
+  <dl class="domintro">
+
+   <dt><var title="">element</var> . <code title="dom-style">style</code></dt>
+   <dd>
+    <p>Returns a <code>CSSStyleDeclaration</code> object for the element's <code title="attr-style">style</code> attribute.</p>
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-style"><code>style</code></dfn> DOM attribute
   must return a <code>CSSStyleDeclaration</code> whose value
   represents the declarations specified in the attribute, if
@@ -7558,6 +8259,8 @@
   <code>CSSStyleDeclaration</code> object. <a
   href="#refsCSSOM">[CSSOM]</a>
 
+  </div>
+
   <div class="example">
 
    <p>In the following example, the words that refer to colors are
@@ -7621,6 +8324,19 @@
   any number of <span title="custom data attribute">custom data
   attributes</span> specified, with any value.</p>
 
+  <hr>
+
+  <dl class="domintro">
+
+   <dt><var title="">element</var> . <code title="dom-dataset">dataset</code></dt>
+   <dd>
+    <p>Returns a <code>DOMStringMap</code> object for the element's <code title="attr-data-*">data-*</code> attributes.</p>
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-dataset"><code>dataset</code></dfn> DOM
   attribute provides convenient accessors for all the <code
   title="attr-data-*">data-*</code> attributes on an element.  On
@@ -7690,6 +8406,8 @@
 
   </dl>
 
+  </div>
+
   <div class="example">
 
    <p>If a Web page wanted an element to represent a space ship,
@@ -7714,12 +8432,16 @@
   attributes are ignored and any associated CSS dropped, the page is
   still usable.</p>
 
+  <div class="impl">
+
   <p>User agents must not derive any implementation behavior from
   these attributes or values. Specifications intended for user agents
   must not define these attributes to have any meaningful values.</p>
 
+  </div>
 
 
+
   <h3>Content models</h3>
 
   <p>All the elements in this specification have a defined content
@@ -7969,14 +8691,23 @@
   intended for user interaction.</p>
 
   <p>Certain elements in HTML have an <span>activation
-  behavior</span>, which means the user agent should allow the user to
-  manually trigger them in some way, for instance using keyboard or
-  voice input, or through mouse clicks. When the user triggers an
-  element with a defined <span>activation behavior</span> in a manner
-  other than clicking it, the default action of the interaction
-  event<!-- XXX --> must be to <span>run synthetic click activation
-  steps</span> on the element.</p>
+  behavior</span>, which means that the user can activate them. This
+  triggers a sequence of events dependent on the activation mechanism,
+  and normally culminating in a <code title="event-click">click</code>
+  event followed by a <code
+  title="event-DOMActivate">DOMActivate</code> event<span
+  title="impl">, as described below</span>.</p>
 
+  <div class="impl">
+
+  <p>The user agent should allow the user to manually trigger elements
+  that have an <span>activation behavior</span>, for instance using
+  keyboard or voice input, or through mouse clicks. When the user
+  triggers an element with a defined <span>activation behavior</span>
+  in a manner other than clicking it, the default action of the
+  interaction event<!-- XXX --> must be to <span>run synthetic click
+  activation steps</span> on the element.</p>
+
   <p>When a user agent is to <dfn>run synthetic click activation
   steps</dfn> on an element, the user agent must <span>run pre-click
   activation steps</span> on the element, then <span>fire a <code
@@ -8067,6 +8798,7 @@
   title="event-DOMActivate">DOMActivate</code> events that were fired
   by the steps above leading up to this point.</p>
 
+  </div>
 
 
   <h4>Transparent content models</h4>
@@ -8185,13 +8917,14 @@
   difficult.</p>
 
 
+
   <h3>APIs in HTML documents</h3>
 
   <p>For <span>HTML documents</span>, and for <span>HTML
   elements</span> in <span>HTML documents</span>, certain APIs defined
   in DOM3 Core become case-insensitive or case-changing, as sometimes
-  defined in DOM3 Core, and as summarized or required below. <a
-  href="#refsDOM3CORE">[DOM3CORE]</a>.</p>
+  defined in DOM3 Core, and as summarized <span class="impl">or
+  required</span> below. <a href="#refsDOM3CORE">[DOM3CORE]</a>.</p>
 
   <p>This does not apply to <span>XML documents</span> or to elements
   that are not in the <span>HTML namespace</span> despite being in
@@ -8204,9 +8937,9 @@
 
    <dd>
 
-    <p>These attributes must return element names <span>converted to
-    uppercase</span>, regardless of the case with which they were
-    created.</p>
+    <p>These attributes <span class="impl">must</span> return element
+    names <span>converted to uppercase</span>, regardless of the case
+    with which they were created.</p>
 
    </dd>
 
@@ -8217,8 +8950,9 @@
 
     <p>The canonical form of HTML markup is all-lowercase; thus, this
     method will <span title="converted to lowercase">lowercase</span>
-    the argument before creating the requisite element. Also, the
-    element created must be in the <span>HTML namespace</span>.</p>
+    the argument before creating the requisite element. <span
+    title="impl">Also, the element created must be in the <span>HTML
+    namespace</span></span>.</p>
 
     <p class="note">This doesn't apply to <code
     title="">Document.createElementNS()</code>. Thus, it is possible,
@@ -8231,44 +8965,43 @@
    </dd>
 
 
+   <dt><code title="">Element.setAttribute()</code></dt>
    <dt><code title="">Element.setAttributeNode()</code></dt>
 
    <dd>
 
-    <p>When an <code>Attr</code> node is set on an <span title="HTML
-    elements">HTML element</span>, it must have its name
-    <span>converted to lowercase</span> before the element is
-    affected.</p>
+    <p>Attribute names are <span>converted to lowercase</span>.</p>
 
-    <p class="note">This doesn't apply to <code
-    title="">Document.setAttributeNodeNS()</code>.</p>
+    <div class="impl">
 
-   </dd>
+     <p>Specifically: when an attribute is set on an <span title="HTML
+     elements">HTML element</span> using <code
+     title="">Element.setAttribute()</code>, the name argument must be
+     <span>converted to lowercase</span> before the element is
+     affected; and when an <code>Attr</code> node is set on an <span
+     title="HTML elements">HTML element</span> using <code
+     title="">Element.setAttributeNode()</code>, it must have its name
+     <span>converted to lowercase</span> before the element is
+     affected.</p>
 
+    </div>
 
-   <dt><code title="">Element.setAttribute()</code></dt>
-
-   <dd>
-
-    <p>When an attribute is set on an <span title="HTML elements">HTML
-    element</span>, the name argument must be <span>converted to
-    lowercas</span> before the element is affected.</p>
-
     <p class="note">This doesn't apply to <code
-    title="">Document.setAttributeNS()</code>.</p>
+    title="">Document.setAttributeNS()</code> and <code
+    title="">Document.setAttributeNodeNS()</code>.</p>
 
    </dd>
 
 
-   <dt><code title="">Document.getElementsByTagName()</code> and <code
-   title="">Element.getElementsByTagName()</code></dt>
+   <dt><code title="">Document.getElementsByTagName()</code></dt>
+   <dt><code title="">Element.getElementsByTagName()</code></dt>
 
    <dd>
 
-    <p>These methods (but not their namespaced counterparts) must
-    compare the given argument in an <span>ASCII
-    case-insensitive</span> manner when looking at <span title="HTML
-    elements">HTML elements</span>, and in a
+    <p>These methods (but not their namespaced counterparts) <span
+    class="impl">must</span> compare the given argument in an
+    <span>ASCII case-insensitive</span> manner when looking at <span
+    title="HTML elements">HTML elements</span>, and in a
     <span>case-sensitive</span> manner otherwise.</p>
 
     <p class="note">Thus, in an <span title="HTML documents">HTML
@@ -8283,9 +9016,12 @@
 
    <dd>
 
-    <p>If the new namespace is the <span>HTML namespace</span>, then
-    the new qualified name must be <span>converted to lowercase</span>
-    before the rename takes place.</p>
+    <p>HTML element names are <span>converted to lowercase</span> when
+    the elements are created. <span class="impl">Thus, if the new
+    namespace passed to the <code
+    title="">Document.renameNode()</code> method is the <span>HTML
+    namespace</span>, the new qualified name must be <span>converted
+    to lowercase</span> before the rename takes place.</span></p>
 
    </dd>
    
@@ -8293,7 +9029,6 @@
   </dl>
 
 
-
   <h3><dfn>Dynamic markup insertion</dfn></h3>
 
   <p class="note">APIs for dynamically inserting markup into the
@@ -8314,6 +9049,58 @@
   method comes in several variants with different numbers of
   arguments.</p>
 
+  <dl class="domintro">
+
+   <dt><var title="">document</var> = <var title="">document</var> . <code title="dom-document-open">open</code>( [ <var title="">type</var> [, <var title="">replace</var> ] ] )</dt>
+
+   <dd>
+
+    <p>Causes the <code>Document</code> to be replaced in-place, as if
+    it was a new <code>Document</code> object, but reusing the
+    previous object, which is then returned.</p>
+
+    <p>If the <var title="">type</var> argument is omitted or has the
+    value "<code title="">text/html</code>", then the resulting
+    <code>Document</code> has an HTML parser associated with it, which
+    can be given data to parse using <code
+    title="dom-document-write">document.write()</code>. Otherwise, all
+    content passed to <code
+    title="dom-document-write">document.write()</code> will be parsed
+    as plain text.</p>
+
+    <p>If the <var title="">replace</var> argument is absent or false,
+    a new entry is added to the session history to represent this
+    entry, and the previous entries for this <code>Document</code> are
+    all collapsed into one entry with a new <code>Document</code>
+    object.</p>
+
+    <p>The method has no effect if the <code>Document</code> is still
+    being parsed.</p>
+
+   </dd>
+
+   <dt><var title="">window</var> = <var title="">document</var> . <code title="dom-document-open">open</code>( <var title="">url</var>, <var title="">name</var>, <var title="">features</var> [, <var title="">replace</var> ] )</dt>
+
+   <dd>
+
+    <p>Works like the <code title="dom-open">window.open()</code>
+    method.</p>
+
+   </dd>
+
+   <dt><var title="">document</var> . <code title="dom-document-close">close</code>()</dt>
+
+   <dd>
+
+    <p>Closes the input stream that was opened by the <code
+    title="dom-document-open">document.open()</code> method.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>When called with two or fewer arguments, the method must act as
   follows:</p>
 
@@ -8481,11 +9268,32 @@
   an <span>explicit "EOF" character</span> at the end of the parser's
   <span>input stream</span>.</p>
 
+  </div>
 
 
 
   <h4><code title="dom-document-write">document.write()</code></h4>
 
+  <dl class="domintro">
+
+   <dt><var title="">document</var> . <code title="dom-document-write">write</code>(<var title="">text</var>...)</dt>
+
+   <dd>
+
+    <p>Adds the given string(s) to the <code>Document</code>'s input
+    stream. If necessary, calls the <code
+    title="dom-document-open">open()</code> method implicitly
+    first.</p>
+
+    <p>This method throws an <code>INVALID_ACCESS_ERR</code> exception
+    when invoked on <span>XML documents</span>.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-document-write"><code>document.write(...)</code></dfn>
   method must act as follows:</p>
@@ -8560,9 +9368,31 @@
 
   </ol>
 
+  </div>
 
+
   <h4><code title="dom-document-writeln">document.writeln()</code></h4>
 
+  <dl class="domintro">
+
+   <dt><var title="">document</var> . <code title="dom-document-writeln">writeln</code>(<var title="">text</var>...)</dt>
+
+   <dd>
+
+    <p>Adds the given string(s) to the <code>Document</code>'s input
+    stream, followed by a newline character. If necessary, calls the
+    <code title="dom-document-open">open()</code> method implicitly
+    first.</p>
+
+    <p>This method throws an <code>INVALID_ACCESS_ERR</code> exception
+    when invoked on <span>XML documents</span>.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-document-writeln"><code>document.writeln(...)</code></dfn>
   method, when invoked, must act as if the <code
@@ -8570,6 +9400,7 @@
   invoked with the same argument(s), plus an extra argument consisting
   of a string containing a single line feed character (U+000A).</p>
 
+  </div>
 
 
 
@@ -8578,6 +9409,44 @@
   <p>The <dfn title="dom-innerHTML"><code>innerHTML</code></dfn> DOM
   attribute represents the markup of the node's contents.</p>
 
+  <dl class="domintro">
+
+   <dt><var title="">document</var> . <code title="dom-innerHTML">innerHTML</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns a fragment of HTML or XML that represents the
+    <code>Document</code>.</p>
+
+    <p>Can be set, to replace the <code>Document</code>'s contents
+    with the result of parsing the given string.</p>
+
+    <p>In the case of <span>XML documents</span>, will throw a
+    <code>SYNTAX_ERR</code> if the <code>Document</code> cannot be
+    serialized to XML, or if the given string is not well-formed.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-innerHTML">innerHTML</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns a fragment of HTML or XML that represents the element's
+    contents.</p>
+
+    <p>Can be set, to replace the contents of the element with nodes
+    parsed from the given string.</p>
+
+    <p>In the case of <span>XML documents</span>, will throw a
+    <code>SYNTAX_ERR</code> if the element cannot be serialized to
+    XML, or if the given string is not well-formed.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>On getting, if the node's document is an <span title="HTML
   documents">HTML document</span>, then the attribute must return the
   result of running the <span>HTML fragment serialization
@@ -8664,13 +9533,37 @@
 
   </ol>
 
+  </div>
 
 
+
   <h4><code title="dom-outerHTML">outerHTML</code></h4>
 
   <p>The <dfn title="dom-outerHTML"><code>outerHTML</code></dfn> DOM
   attribute represents the markup of the element and its contents.</p>
 
+  <dl class="domintro">
+
+   <dt><var title="">element</var> . <code title="dom-outerHTML">outerHTML</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns a fragment of HTML or XML that represents the element
+    and its contents.</p>
+
+    <p>Can be set, to replace the element with nodes parsed from the
+    given string.</p>
+
+    <p>In the case of <span>XML documents</span>, will throw a
+    <code>SYNTAX_ERR</code> if the element cannot be serialized to
+    XML, or if the given string is not well-formed.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>On getting, if the node's document is an <span title="HTML
   documents">HTML document</span>, then the attribute must return the
   result of running the <span>HTML fragment serialization
@@ -8761,10 +9654,48 @@
 
   </ol>
 
+  </div>
 
 
+
   <h4><code title="dom-insertAdjacentHTML">insertAdjacentHTML()</code></h4>
 
+  <dl class="domintro">
+
+   <dt><var title="">element</var> . <code title="dom-insertAdjacentHTML">insertAdjacentHTML</code>(<var title="">position</var>, <var title="">text</var>)</dt>
+
+   <dd>
+
+    <p>Parsed the given string <var title="">text</var> as HTML or XML
+    and inserts the resulting nodes into the tree in the position
+    given by the <var title="">position</var> argument, as
+    follows:</p>
+
+    <dl>
+     <dt>"beforebegin"</dt>
+     <dd>Before the element itself.</dd>
+     <dt>"afterbegin"</dt>
+     <dd>Just inside the element, before its first child.</dd>
+     <dt>"beforeend"</dt>
+     <dd>Just inside the element, after its last child.</dd>
+     <dt>"afterend"</dt>
+     <dd>After the element itself.</dd>
+    </dl>
+
+    <p>Throws a <code>SYNTAX_ERR</code> exception the arguments have
+    invalid values (e.g., in the case of <span>XML documents</span>,
+    if the given string is not well-formed).</p>
+
+    <p>Throws a <code>NO_MODIFICATION_ALLOWED_ERR</code> exception if
+    the given position isn't possible (e.g. inserting elements after
+    the root element of a <code>Document</code>).</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-insertAdjacentHTML"><code>insertAdjacentHTML(<var
   title="">position</var>, <var title="">text</var>)</code></dfn>
@@ -8925,6 +9856,7 @@
 
   </ol>
 
+  </div>
 
 
 
@@ -9053,9 +9985,10 @@
   </div>
 
   <p>The string to use as the document's title is given by the <code
-  title="dom-document-title">document.title</code> DOM attribute. User
-  agents should use the document's title when referring to the
-  document in their user interface.</p>
+  title="dom-document-title">document.title</code> DOM
+  attribute. <span title="impl">User agents should use the document's
+  title when referring to the document in their user
+  interface.</span></p>
 
 
   <h4>The <dfn><code>base</code></dfn> element</h4>
@@ -9105,20 +10038,29 @@
   (its <code title="attr-html-manifest">manifest</code> attribute
   isn't affected by <code>base</code> elements).</p>
 
+  <div class="impl">
+
   <p class="note">If there are multiple <code>base</code> elements
   with <code title="attr-base-href">href</code> attributes, all but the
   first are ignored.</p>
 
+  </div>
+
   <p>The <dfn title="attr-base-target"><code>target</code></dfn>
   attribute, if specified, must contain a <span>valid browsing context
-  name or keyword</span>. User agents use this name when
-  <span>following hyperlinks</span>.</p>
+  name or keyword</span>, which specifies which <span>browsing
+  context</span> is to be used as the default when <span
+  title="hyperlink">hyperlinks</span> and <span
+  title="form">forms</span> in the <code>Document</code> cause <span
+  title="navigate">navigation</span>.</p>
 
   <p>A <code>base</code> element, if it has a <code
   title="attr-base-target">target</code> attribute, must come before
   any elements in the tree that represent <span
   title="hyperlink">hyperlinks</span>.</p>
 
+  <div class="impl">
+
   <p class="note">If there are multiple <code>base</code> elements
   with <code title="attr-base-target">target</code> attributes, all but
   the first are ignored.</p>
@@ -9128,7 +10070,10 @@
   must <span>reflect</span> the respective content attributes of the
   same name.</p>
 
+  </div>
 
+
+
   <h4>The <dfn><code>link</code></dfn> element</h4>
 
   <dl class="element">
@@ -9208,18 +10153,20 @@
   <p>The exact behavior for links to external resources depends on the
   exact relationship, as defined for the relevant link type. Some of
   the attributes control whether or not the external resource is to be
-  applied (as defined below). For external resources that are
-  represented in the DOM (for example, style sheets), the DOM
-  representation must be made available even if the resource is not
-  applied. To obtain the resource, the user agent must <span
-  title="resolve a url">resolve</span> the <span>URL</span> given by
-  the <code title="attr-link-href">href</code> attribute, relative to
-  the element, and then <span>fetch</span> the resulting
+  applied (as defined below). <Span class="impl">For external
+  resources that are represented in the DOM (for example, style
+  sheets), the DOM representation must be made available even if the
+  resource is not applied. To obtain the resource, the user agent must
+  <span title="resolve a url">resolve</span> the <span>URL</span>
+  given by the <code title="attr-link-href">href</code> attribute,
+  relative to the element, and then <span>fetch</span> the resulting
   <span>absolute URL</span>. User agents may opt to only
   <span>fetch</span> such resources when they are needed, instead of
   pro-actively <span title="fetch">fetching</span> all the external
-  resources that are not applied.</p>
+  resources that are not applied.</span></p>
 
+  <div class="impl">
+
   <p>The semantics of the protocol used (e.g. HTTP) must be followed
   when fetching external resources. (For example, redirects must be
   followed and 404 responses must cause the external resource to not
@@ -9257,6 +10204,8 @@
   of the resource (as given by the <code
   title="attr-link-type">type</code> attribute).</p>
 
+  </div>
+
   <p class="note">Hyperlinks created with the <code>link</code>
   element and its <code title="attr-link-rel">rel</code> attribute
   apply to the whole page. This contrasts with the <code
@@ -9270,6 +10219,8 @@
   be a valid <a href="#mq">media query</a>. <a
   href="#refsMQ">[MQ]</a></p>
 
+  <div class="impl">
+
   <p>If the link is a <span title="hyperlink link">hyperlink</span>
   then the <code title="attr-link-media">media</code> attribute is
   purely advisory, and describes for which media the document in
@@ -9289,6 +10240,8 @@
   such further restrictions or requirements.</p><!-- note similar text
   in <style> section -->
 
+  </div>
+
   <p id="default-media">The default, if the <code
   title="attr-link-media">media</code> attribute is omitted, is
   <code>all</code>, meaning that by default links apply to all
@@ -9307,20 +10260,23 @@
   <p>For <span title="external resource link">external resource
   links</span>, the <code title="attr-link-type">type</code> attribute
   is used as a hint to user agents so that they can avoid fetching
-  resources they do not support. If the attribute is present, then the
-  user agent must assume that the resource is of the given type. If
-  the attribute is omitted, but the external resource link type has a
-  default type defined, then the user agent must assume that the
-  resource is of that type. If the UA does not support the given MIME
-  type for the given link relationship, then the UA should not fetch
-  the resource; if the UA does support the given MIME type for the
-  given link relationship, then the UA should <span>fetch</span> the
-  resource. If the attribute is omitted, and the external resource
-  link type does not have a default type defined, but the user agent
-  would fetch the resource if the type was known and supported, then
-  the user agent should <span>fetch</span> the resource under the
-  assumption that it will be supported.</p>
+  resources they do not support. <span class="impl">If the attribute
+  is present, then the user agent must assume that the resource is of
+  the given type. If the attribute is omitted, but the external
+  resource link type has a default type defined, then the user agent
+  must assume that the resource is of that type. If the UA does not
+  support the given MIME type for the given link relationship, then
+  the UA should not fetch the resource; if the UA does support the
+  given MIME type for the given link relationship, then the UA should
+  <span>fetch</span> the resource. If the attribute is omitted, and
+  the external resource link type does not have a default type
+  defined, but the user agent would fetch the resource if the type was
+  known and supported, then the user agent should <span>fetch</span>
+  the resource under the assumption that it will be
+  supported.</span></p>
 
+  <div class="impl">
+
   <p>User agents must not consider the <code
   title="attr-link-type">type</code> attribute authoritative &mdash;
   upon fetching the resource, user agents must not use the <code
@@ -9376,6 +10332,8 @@
 
   </div>
 
+  </div>
+
   <p>The <dfn title="attr-link-title"><code>title</code></dfn>
   attribute gives the title of the link. With one exception, it is
   purely advisory. The value is text. The exception is for style sheet
@@ -9394,6 +10352,8 @@
   a <code title="attr-link-rel">rel</code> attribute that specifies
   the <code title="rel-icon">icon</code> keyword.</p>
 
+  <div class="impl">
+
   <p>Some versions of HTTP defined a <code title="">Link:</code>
   header, to be processed like a series of <code>link</code> elements.
   If supported, for the purposes of ordering links defined by HTTP
@@ -9415,10 +10375,12 @@
   name.</p>
 
   <p>The DOM attribute <dfn
-  title="dom-link-rellist"><code>relList</code></dfn> must
-  <span>reflect</span> the <code title="attr-link-rel">rel</code>
-  content attribute.</p>
+  title="dom-link-rellist"><code>relList</code></dfn> <span
+  class="impl">must</span> <span title="reflect">reflect</span> the <code
+  title="attr-link-rel">rel</code> content attribute.</p>
 
+  </div>
+
   <p>The DOM attribute <dfn
   title="dom-link-disabled"><code>disabled</code></dfn> only applies
   to style sheet links. When the <code>link</code> element defines a
@@ -9431,6 +10393,7 @@
 
 
 
+
   <h4 id="meta">The <dfn><code>meta</code></dfn> element</h4>
 
   <dl class="element">
@@ -9528,6 +10491,8 @@
   title="attr-meta-http-equiv">http-equiv</code> attribute specified,
   it must be in a <code>head</code> element.</p>
 
+  <div class="impl">
+
   <p>The DOM attributes <dfn
   title="dom-meta-name"><code>name</code></dfn> and <dfn
   title="dom-meta-content"><code>content</code></dfn> must
@@ -9537,7 +10502,9 @@
   <span>reflect</span> the content attribute <code
   title="attr-meta-http-equiv">http-equiv</code>.</p>
 
+  </div>
 
+
   <h5>Standard metadata names</h5>
 
   <p>This specification defines a few names for the <code
@@ -9552,11 +10519,12 @@
    name of the Web application that the page represents. If the page
    is not a Web application, the <code
    title="meta-application-name">application-name</code> metadata name
-   must not be used. User agents may use the application name in UI in
-   preference to the page's <code>title</code>, since the title might
-   include status messages and the like relevant to the status of the
-   page at a particular moment in time instead of just being the name
-   of the application.</p></dd>
+   must not be used. <span class="impl">User agents may use the
+   application name in UI in preference to the page's
+   <code>title</code>, since the title might include status messages
+   and the like relevant to the status of the page at a particular
+   moment in time instead of just being the name of the
+   application.</span></p></dd>
 
    <dt><dfn title="meta-description">description</dfn></dt>
 
@@ -9651,6 +10619,8 @@
 
   </dl>
 
+  <div class="impl">
+
   <p>Conformance checkers must use the information given on the WHATWG
   Wiki MetaExtensions page to establish if a value not explicitly
   defined in this specification is allowed or not. When an author uses
@@ -9659,6 +10629,8 @@
   Wiki, with the details described above, with the "proposal"
   status.</p>
 
+  </div>
+
   <p>This specification does not define how new values will get
   approved. It is expected that the Wiki will have a community that
   addresses this.</p>
@@ -9669,6 +10641,8 @@
   <code>meta</code> element.</p>
 
 
+
+
   <h5>Pragma directives</h5>
 
   <p>When the <dfn
@@ -9676,13 +10650,12 @@
   is specified on a <code>meta</code> element, the element is a pragma
   directive.</p>
 
-  <p>The <code
-  title="attr-meta-http-equiv">http-equiv</code> attribute
-  is an <span>enumerated attribute</span>. The following table lists
-  the keywords defined for this attribute. The states given in the
-  first cell of the rows with keywords give the states to which
-  those keywords map. Some of the keywords are non-conforming, as
-  noted in the last column.</p>
+  <p>The <code title="attr-meta-http-equiv">http-equiv</code>
+  attribute is an <span>enumerated attribute</span>. The following
+  table lists the keywords defined for this attribute. The states
+  given in the first cell of the rows with keywords give the states to
+  which those keywords map. <span class="impl">Some of the keywords
+  are non-conforming, as noted in the last column.</span></p>
 
 <!-- things that are neither conforming nor do anything are commented out -->
   <table>
@@ -9690,34 +10663,34 @@
     <tr>
      <th>State
      <th>Keywords
-     <th>Notes
+     <th class="impl">Notes
    <tbody>
-    <tr>
+    <tr class="impl">
      <td><span title="attr-meta-http-equiv-content-language">Content Language</span>
      <td><code title="">content-language</code>
-     <td>Non-conforming 
+     <td class="impl">Non-conforming 
     <tr>
      <td><span title="attr-meta-http-equiv-content-type">Encoding declaration</span>
      <td><code title="">content-type</code>
-     <td>
+     <td class="impl">
 <!--
-    <tr>
+    <tr class="impl">
      <td><span title="attr-meta-http-equiv-content-script-type">Content-Script-Type</span>
      <td><code title="">Content-Script-Type</code>
-     <td>Non-conforming
-    <tr>
+     <td class="impl">Non-conforming
+    <tr class="impl">
      <td><span title="attr-meta-http-equiv-content-style-type">Content-Style-Type</span>
      <td><code title="">Content-Style-Type</code>
-     <td>Non-conforming
+     <td class="impl">Non-conforming
 -->
     <tr>
      <td><span title="attr-meta-http-equiv-default-style">Default style</span>
      <td><code title="">default-style</code>
-     <td>
+     <td class="impl">
     <tr>
      <td><span title="attr-meta-http-equiv-refresh">Refresh</span>
      <td><code title="">refresh</code>
-     <td>
+     <td class="impl">
   </table>
 
 <!--
@@ -9760,6 +10733,8 @@
 people expect to have work and what is necessary.
 -->
 
+  <div class="impl">
+
   <p>When a <code>meta</code> element is <span title="insert an
   element into a document">inserted into the document</span>, if its
   <code title="attr-meta-http-equiv">http-equiv</code> attribute is
@@ -9767,16 +10742,20 @@
   must run the algorithm appropriate for that state, as described in
   the following list:</p>
 
+  </div>
+
   <dl>
 
-   <dt><dfn title="attr-meta-http-equiv-content-language">Content language</dfn>
+   <dt class="impl"><dfn title="attr-meta-http-equiv-content-language">Content language</dfn>
 
-   <dd>
+   <dd class="impl">
 
     <p>This non-conforming pragma sets the <dfn>document-wide default
     language</dfn>. Until the pragma is successfully processed, there
     is no <span>document-wide default language</span>.</p>
 
+    <div class="impl">
+
     <ol>
 
      <li><p>If another <code>meta</code> element in the <span
@@ -9809,6 +10788,8 @@
 
     </ol>
 
+    </div>
+
     <p>For <code>meta</code> elements in the <span
     title="attr-meta-http-equiv-content-language">Content Language
     state</span>, the <code title="attr-meta-content">content</code>
@@ -9826,11 +10807,11 @@
    <dd>
 
     <p>The <span title="attr-meta-http-equiv-content-type">Encoding
-    declaration state's</span> user agent requirements are all handled
-    by the parsing section of the specification. The state is just an
-    alternative form of setting the <code
-    title="meta-charset">charset</code> attribute: it is a
-    <span>character encoding declaration</span>.</p>
+    declaration state</span> is just an alternative form of setting
+    the <code title="meta-charset">charset</code> attribute: it is a
+    <span>character encoding declaration</span>. <span
+    class="impl">This state's user agent requirements are all handled
+    by the parsing section of the specification.</span></p>
 
     <p>For <code>meta</code> elements in the <span
     title="attr-meta-http-equiv-content-type">Encoding declaration
@@ -9860,18 +10841,30 @@
 
    <dd>
 
+    <p>This pragma sets the name of the default <span
+    title="alternative style sheet sets">alternative style sheet
+    set</span>.</p>
+
+    <div class="impl">
+
     <ol>
 
      <li class="XXX">...</li>
 
     </ol>
 
+    </div>
+
    </dd>
 
    <dt><dfn title="attr-meta-http-equiv-refresh">Refresh state</dfn>
 
    <dd>
 
+    <p>This pragma acts as timed redirect.</p>
+
+    <div class="impl">
+
     <ol>
      <!-- TESTS: http://www.hixie.ch/tests/adhoc/html/meta/refresh/ -->
 
@@ -9996,6 +10989,8 @@
 
     </ol>
 
+    </div>
+
     <p>For <code>meta</code> elements in the <span
     title="attr-meta-http-equiv-refresh">Refresh state</span>, the
     <code title="attr-meta-content">content</code> attribute must have
@@ -10190,36 +11185,54 @@
   type defaults to <code>text/css</code>. <a
   href="#refsRFC2318">[RFC2138]</a></p>
 
+  <div class="impl">
+
   <!-- XXX this is the second time we have this paragraph here... -->
   <p>When examining types to determine if they support the language,
   user agents must not ignore unknown MIME parameters &mdash; types
   with unknown parameters must be assumed to be unsupported.</p>
 
+  </div>
+
   <p>The <dfn title="attr-style-media"><code>media</code></dfn>
   attribute says which media the styles apply to. The value must be a
-  valid <a href="#mq">media query</a>. <a href="#refsMQ">[MQ]</a> User
-  agents must apply the styles to <span title="view">views</span>
-  while their state match the listed media, and must not apply them
-  otherwise.</p><!-- note similar text in <link> section -->
+  valid <a href="#mq">media query</a>. <a href="#refsMQ">[MQ]</a>
+  <span class="impl">User agents must apply the styles to <span
+  title="view">views</span> while their state match the listed media,
+  and must not apply them otherwise.</span></p><!-- note similar text
+  in <link> section -->
 
+  <div class="impl">
+
   <p class="note">The styles might be further limited in scope,
   e.g. in CSS with the use of <code title="">@media</code>
   blocks. This specification does not override such further
   restrictions or requirements.</p><!-- note similar text in <link>
   section -->
 
+  </div>
+
   <p id="style-default-media">The default, if the <code
   title="attr-style-media">media</code> attribute is omitted, is
   <code>all</code>, meaning that by default styles apply to all
   media.</p>
 
   <p>The <dfn title="attr-style-scoped"><code>scoped</code></dfn>
-  attribute is a <span>boolean attribute</span>. If the attribute is
+  attribute is a <span>boolean attribute</span>. If set, it indicates
+  that the styles are intended just for the subtree rooted at the
+  <code>style</code> element's parent element, as opposed to the whole
+  <code>Document</code>.</p>
+
+  <div class="impl">
+
+  <p>If the <code title="attr-style-scoped">scoped</code> attribute is
   present, then the user agent must apply the specified style
   information only to the <code>style</code> element's parent element
   (if any), and that element's child nodes. Otherwise, the specified
   styles must, if applied, be applied to the entire document.</p>
 
+  </div>
+
   <p id="title-on-style">The <dfn
   title="attr-style-title"><code>title</code></dfn> attribute on
   <code>style</code> elements defines <span>alternative style sheet
@@ -10237,6 +11250,8 @@
   <code>style</code> block without a title does not inherit the title
   of the parent element: it merely has no title.</p>
 
+  <div class="impl">
+
   <p>All descendant elements must be processed, according to their
   semantics, before the <code>style</code> element itself is
   evaluated. For styling languages that consist of pure text, user
@@ -10254,21 +11269,29 @@
   when the processor is invoked.<!-- so dynamic changes to the base
   URL don't affect the CSS --></p>
 
+  </div>
+
   <p class="note">This specification does not specify a style system,
   but CSS is expected to be supported by most Web browsers. <a
   href="#refsCSS21">[CSS21]</a></p>
 
+  <div class="impl">
+
   <p>The <dfn title="dom-style-media"><code>media</code></dfn>, <dfn
   title="dom-style-type"><code>type</code></dfn> and <dfn
   title="dom-style-scoped"><code>scoped</code></dfn> DOM attributes
   must <span>reflect</span> the respective content attributes of the
   same name.</p>
 
+  </div>
+
   <p>The DOM <dfn
   title="dom-style-disabled"><code>disabled</code></dfn> attribute
   behaves as defined <span title="dom-linkstyle-disabled">for the
   alternative style sheets DOM</span>.</p>
 
+
+
   <h4 id="styling"><dfn title="styling processing model">Styling</dfn></h4>
 
   <p>The <code>link</code> and <code>style</code> elements can provide
@@ -10281,6 +11304,8 @@
   the <code>LinkStyle</code> interface. <a
   href="#refsCSSOM">[CSSOM]</a></p>
 
+  <div class="impl">
+
   <p>For <code>style</code> elements, if the user agent does not
   support the specified styling language, then the <code
   title="dom-LinkStyle-sheet">sheet</code> attribute of the element's
@@ -10354,9 +11379,11 @@
   .styleSheets, HTTP Link: headers, and the stuff about the alternative
   stylesheet API.</p> XXX that will all be covered by Anne's spec -->
 
+  </div>
 
 
 
+
   <h3>Scripting</h3>
 
   <p>Scripts allow authors to add interactivity to their documents.</p>
@@ -10500,6 +11527,8 @@
   element into a document">inserted into the document</span>).</p>
   <!-- by implication, changes to the base URL also have no effect -->
 
+  <div class="impl">
+
   <p><code>script</code> elements have four associated pieces of
   metadata. The first is a flag indicating whether or not the script
   block has been <dfn>"already executed"</dfn>. Initially,
@@ -11012,6 +12041,26 @@
   <span>reflect</span> the respective content attributes of the same
   name.</p>
 
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">script</var> . <code title="dom-script-text">text</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the contents of the element, ignoring child nodes that
+    aren't <span title="text node">text nodes</span>.</p>
+
+    <p>Can be set, to replace the element's children with the given
+    value.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The DOM attribute <dfn
   title="dom-script-text"><code>text</code></dfn> must return a
   concatenation of the contents of all the <span title="text
@@ -11020,7 +12069,9 @@
   comments or elements), in tree order. On setting, it must act the
   same way as the <code>textContent</code> DOM attribute.</p>
 
+  </div>
 
+
   <div class="example">
 
    <p>In this example, two <code>script</code> elements are used. One
@@ -11056,10 +12107,14 @@
 
   <h5 id="scriptingLanguages">Scripting languages</h5>
 
+  <div class="impl">
+
   <p>A user agent is said to <dfn>support the scripting language</dfn>
   if <var>the script block's type</var> matches the MIME type of a
   scripting language that the user agent implements.</p>
 
+  </div>
+
   <p>The following lists some MIME types and the languages to which
   they refer:</p>
 
@@ -11076,6 +12131,8 @@
 
   </dl>
 
+  <div class="impl">
+
   <p>User agents may support other MIME types and other languages.</p>
 
   <p>When examining types to determine if they support the language,
@@ -11086,7 +12143,9 @@
    XXX we should reference #refsRFC4329 http://www.ietf.org/rfc/rfc4329
   -->
 
+  </div>
 
+
   <h5><dfn title="script documentation">Inline documentation for external scripts</dfn></h5>
 
   <p>If a <code>script</code> element's <code
@@ -11280,14 +12339,18 @@
   it has no effect in the <span>XML serialization</span><!-- XXX xref
   -->.</strong></p>
 
+  <div class="impl">
+
   <p>The <code>noscript</code> element has no other requirements. In
   particular, children of the <code>noscript</code> element are not
   exempt from <span>form submission</span>, scripting, and so forth,
   even when <span title="concept-n-script">scripting is enabled</span>
   for the element.</p>
 
+  </div>
 
 
+
   <h3>Sections</h3>
 
   <p id="applyToSection">Some elements, for example
@@ -11347,12 +12410,16 @@
   DOM attribute provides scripts with easy access to a document's
   <code>body</code> element.</p>
 
+  <div class="impl">
+
   <p class="note">Some DOM operations (for example, parts of the
   <span>drag and drop</span> model) are defined in terms of "<span>the
   body element</span>". This refers to a particular element in the
   DOM, as per the definition of the term, and not any arbitrary
   <code>body</code> element.</p>
 
+  </div>
+
   <p>The <code>body</code> element exposes as <span>event handler
   content attributes</span> a number of the <span>event handler
   attributes</span> of the <code>Window</code> object. It also mirrors
@@ -11438,6 +12505,7 @@
 
   </div>
 
+
   <h4>The <dfn><code>nav</code></dfn> element</h4>
 
   <dl class="element">
@@ -11831,12 +12899,14 @@
   <div class="example">
    <p>For example, the following is non-conforming use of the
    <code>address</code> element:</p>
-   <pre>&lt;ADDRESS>Last Modified: 1999/12/24 23:37:50&lt;/ADDRESS></pre>
+   <pre class="bad">&lt;ADDRESS>Last Modified: 1999/12/24 23:37:50&lt;/ADDRESS></pre>
   </div>
 
   <p>Typically, the <code>address</code> element would be included
   with other information in a <code>footer</code> element.</p>
 
+  <div class="impl">
+
   <p>To determine the contact information for a <span>sectioning
   content</span> element (such as a document's <code>body</code>
   element, which would give the contact information for the page), UAs
@@ -11847,6 +12917,8 @@
   of all the information given by those elements.</p> <!-- XXX
   exception for nested article elements? -->
 
+  </div>
+
   <p class="note">Contact information for one <span>sectioning
   content</span> element, e.g.  an <code>aside</code> element, does
   not apply to its ancestor elements, e.g. the page's
@@ -11969,6 +13041,8 @@
 
   <h5 id="outlines">Creating an outline</h5>
 
+  <div class="impl">
+
   <!-- v2 idea: It would be nice if there was a way to use this to
   autogenerate a table of contents or some such -->
 
@@ -11978,6 +13052,8 @@
   of a DOM tree, in tree order, with each node being visited when it
   is <i>entered</i> and when it is <i>exited</i> during the walk.</p>
 
+  </div>
+
   <p>The <dfn>outline</dfn> for a <span>sectioning content</span>
   element or a <span>sectioning root</span> element consists of a list
   of one or more potentially nested <span
@@ -11985,11 +13061,12 @@
   title="concept-section">section</dfn> is a container that
   corresponds to some nodes in the original DOM tree. Each section can
   have one heading associated with it, and can contain any number of
-  further nested sections. The algorithm for the outline also
-  associates each node in the DOM tree with a particular section and
-  potentially a heading. (The sections in the outline aren't
-  <code>section</code> elements, though some may correspond to such
-  elements &mdash; they are merely conceptual sections.)</p>
+  further nested sections. <span class="impl">The algorithm for the
+  outline also associates each node in the DOM tree with a particular
+  section and potentially a heading.</span> (The sections in the
+  outline aren't <code>section</code> elements, though some may
+  correspond to such elements &mdash; they are merely conceptual
+  sections.)</p>
 
   <div class="example">
 
@@ -12032,6 +13109,8 @@
 
   </div>
 
+  <div class="impl">
+
   <p>The algorithm that must be followed during a walk of a DOM
   subtree rooted at a <span>sectioning content</span> element or a
   <span>sectioning root</span> element to determine that element's
@@ -12317,9 +13396,13 @@
 
   </div>
 
+  </div>
 
+
   <h5>Distinguishing site-wide headings from page headings</h5>
 
+  <div class="impl">
+
   <p>Given the <span>outline</span> of a document, but ignoring any
   sections created for <code>nav</code> and <code>aside</code>
   elements, and any of their descendants, if the only root of the tree
@@ -12330,6 +13413,8 @@
   a site-wide heading, and the heading of the <code>article</code>
   element should be assumed to be the page's heading.</p>
 
+  </div>
+
   <p>If a page starts with a heading that is common to the whole site,
   the document must be authored such that, in the document's
   <span>outline</span>, ignoring any sections created for
@@ -12358,6 +13443,7 @@
 
 
 
+
   <h3>Grouping content</h3><!-- XXX ew, find a better section name -->
 
   <h4>The <dfn><code>p</code></dfn> element</h4>
@@ -12519,11 +13605,7 @@
   <p>If a <span>paragraph</span> consists of nothing but a single
   <code>br</code> element, it represents a placeholder blank line
   (e.g. as in a template). Such blank lines must not be used for
-  presentation purposes.</p> <!-- XXX i'm uncomfortable about
-  this. The use case is editing, e.g. contentEditable, where a user
-  has created a new paragraph but not added any text to it yet. Such
-  content shouldn't go over the wire, though. We need to make it
-  illegal while still defining what it means. Maybe. -->
+  presentation purposes.</p>
 
 
   <h4>The <dfn><code>pre</code></dfn> element</h4>
@@ -12718,16 +13800,20 @@
   attribute.</p>
 
   <p>If the <code title="attr-blockquote-cite">cite</code> attribute
-  is present, it must be a <span>valid URL</span>. To obtain the
-  corresponding citation link, the value of the attribute must be
-  <span title="resolve a url">resolved</span> relative to the
-  element. User agents should allow users to follow such citation
-  links.</p>
+  is present, it must be a <span>valid URL</span>. <span
+  title="impl">To obtain the corresponding citation link, the value of
+  the attribute must be <span title="resolve a url">resolved</span>
+  relative to the element. User agents should allow users to follow
+  such citation links.</span></p>
 
+  <div class="impl">
+
   <p>The <dfn title="dom-quote-cite"><code>cite</code></dfn> DOM
   attribute must <span>reflect</span> the element's <code
   title="">cite</code> content attribute.</p>
 
+  </div>
+
   <p class="note">The best way to represent a conversation is not with
   the <code>cite</code> and <code>blockquote</code> elements, but with
   the <code>dialog</code> element.</p>
@@ -12786,6 +13872,8 @@
   attribute, if present, must be a <span>valid integer</span> giving
   the ordinal value of the first list item.</p>
 
+  <div class="impl">
+
   <p>If the <code title="attr-ol-start">start</code> attribute is
   present, user agents must <span title="rules for parsing
   integers">parse it as an integer</span>, in order to determine the
@@ -12816,8 +13904,10 @@
   attribute must <span>reflect</span> the value of the <code
   title="attr-ol-start">start</code> content attribute.</p>
 
-  <!-- XXX resuming numbering of lists from previous lists? -->
+  </div>
 
+  <!-- v2: resuming numbering of lists from previous lists? -->
+
   <div class="example">
 
    <p>The following markup shows a list where the order matters, and
@@ -12941,6 +14031,8 @@
   attribute, if present, must be a <span>valid integer</span> giving
   the ordinal value of the list item.</p>
 
+  <div class="impl">
+
   <p>If the <code title="attr-li-value">value</code> attribute is
   present, user agents must <span title="rules for parsing
   integers">parse it as an integer</span>, in order to determine the
@@ -12957,6 +14049,8 @@
   attribute must <span>reflect</span> the value of the <code
   title="dom-li-value">value</code> content attribute.</p>
 
+  </div>
+
   <div class="example">
    <p>The following example, the top ten movies are listed (in reverse
    order). Note the way the list is given a title by using a
@@ -13041,6 +14135,8 @@
   <p>The order of the list of groups, and of the names and values
   within each group, may be significant.</p>
 
+  <div class="impl">
+
   <p>If a <code>dl</code> element is empty, it contains no groups.</p>
 
   <p>If a <code>dl</code> element contains non-<span
@@ -13072,6 +14168,7 @@
   versa. Conformance checkers can spot such mistakes and might be able
   to advise authors how to correctly use the markup.</p>
 
+  </div>
 
   <div class="example">
    <p>In the following example, one entry ("Authors") is linked to two
@@ -13310,7 +14407,6 @@
 
 
 
-
   <h3>Text-level semantics</h3><!-- XXX ew, find a better section name -->
 
   <h4>The <dfn><code>a</code></dfn> element</h4>
@@ -13389,6 +14485,8 @@
 &lt;/nav></pre>
   </div>
 
+  <div class="impl">
+
   <p>Interactive user agents should allow users to <span
   title="following hyperlinks">follow hyperlinks</span> created using
   the <code>a</code> element. The <code
@@ -13474,6 +14572,8 @@
   <span>reflect</span> the <code title="attr-hyperlink-rel">rel</code>
   content attribute.</p>
 
+  </div>
+
   <div class="example">
 
    <p>The <code>a</code> element may be wrapped around entire
@@ -13537,6 +14637,8 @@
   source may be fictional, as when quoting characters in a novel or
   screenplay.</p>
 
+  <div class="impl">
+
   <p>If the <code title="attr-q-cite">cite</code> attribute is
   present, it must be a <span>valid URL</span>. To obtain the
   corresponding citation link, the value of the attribute must be
@@ -13544,6 +14646,8 @@
   element. User agents should allow users to follow such citation
   links.</p>
 
+  </div>
+
   <p>The <code>q</code> element must not be used in place of quotation
   marks that do not represent quotes; for example, it is inappropriate
   to use the <code>q</code> element for marking up sarcastic
@@ -14305,6 +15409,8 @@
   <code>textContent</code> is a <span>valid date or time string in
   content</span>.</p>
 
+  <div class="impl">
+
   <p>The <dfn title="dom-time-datetime"><code>dateTime</code></dfn> DOM
   attribute must <span>reflect</span> the <code
   title="attr-time-datetime">datetime</code> content attribute.</p>
@@ -14345,6 +15451,50 @@
 
   </ol>
 
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">time</var> . <code title="dom-time-date">date</code></dt>
+
+   <dd>
+
+    <p>Returns a <code>Date</code> object representing the date
+    component of the element's value, at midnight in the UTC
+    timezone.</p>
+
+    <p>Returns null if there is no date.</p>
+
+   </dd>
+
+   <dt><var title="">time</var> . <code title="dom-time-time">time</code></dt>
+
+   <dd>
+
+    <p>Returns a <code>Date</code> object representing the time
+    component of the element's value, on 1970-01-01 in the UTC
+    timezone.</p>
+
+    <p>Returns null if there is no time.</p>
+
+   </dd>
+
+   <dt><var title="">time</var> . <code title="dom-time-timezone">timezone</code></dt>
+
+   <dd>
+
+    <p>Returns a <code>Date</code> object representing the time
+    corresponding to 1970-01-01 00:00 UTC in the timezone given by the
+    element's value.</p>
+
+    <p>Returns null if there is no timezone.</p>
+
+   </dd>
+
+  </dl>
+
+  <div>
+
   <p>The <dfn title="dom-time-date"><code>date</code></dfn> DOM
   attribute must return null if the <span
   title="concept-time-date">date</span> is unknown, and otherwise must
@@ -14366,6 +15516,8 @@
   timezone set to UTC (i.e. the time corresponding to 1970-01-01 at
   00:00 UTC plus the offset corresponding to the timezone).</p>
 
+  </div>
+
   <div class="example">
 
    <p>In the following snippet:</p>
@@ -14477,7 +15629,7 @@
    progress bar as the task progressed.)</p>
   </div>
 
-  <p><strong>Author requirements</strong>: The <code
+  <p><strong class="impl">Author requirements:</strong> The <code
   title="attr-progress-max">max</code> and <code
   title="attr-progress-value">value</code> attributes, when present,
   must have values that are <span title="valid floating point
@@ -14495,6 +15647,8 @@
   <code>progress</code> would be inappropriate. Instead, the
   <code>meter</code> element is available for such use cases.</p>
 
+  <div class="impl">
+
   <p><strong>User agent requirements</strong>: User agents must parse
   the <code title="attr-progress-max">max</code> and <code
   title="attr-progress-value">value</code> attributes' values
@@ -14587,15 +15741,30 @@
   attributes must return zero. The value parsed from the
   <code>textContent</code> never affects the DOM values.</p>
 
-  <p class="XXX">Would be cool to have the <code
-  title="dom-progress-value">value</code> DOM attribute update the
-  <code>textContent</code> in-line...</p>
+  </div>
 
+  <dl class="domintro">
+
+   <dt><var title="">progress</var> . <code title="dom-progress-position">position</code></dt>
+
+   <dd>
+
+    <p>For a determinate progress bar (one with known current and
+    maximum values), returns the result of dividing the current value
+    by the maximum value.</p>
+
+    <p>For an indeterminate progress bar, returns &#x2212;1.</p>
+
+  </dl>
+
+  <div>
+
   <p>If the progress bar is an indeterminate progress bar, then the
   <dfn title="dom-progress-position"><code>position</code></dfn> DOM
   attribute must return &#x2212;1. Otherwise, it must return the result of
   dividing the current value by the maximum value.</p>
 
+  </div>
 
 
   <h4>The <dfn><code>meter</code></dfn> element</h4>
@@ -14671,13 +15840,13 @@
   lower values are better, and naturally if it is in between then it
   indicates that neither high nor low values are good.</p>
 
-  <p><strong>Authoring requirements</strong>: The recommended way of
-  giving the value is to include it as contents of the element, either
-  as two numbers (the higher number represents the maximum, the other
-  number the current value, and the minimum is assumed to be zero), or
-  as a percentage or similar (using one of the characters such as
-  "%"), or as a fraction. However, it is also possible to use the
-  attributes to specify these values.</p>
+  <p><strong class="impl">Authoring requirements:</strong> The
+  recommended way of giving the value is to include it as contents of
+  the element, either as two numbers (the higher number represents the
+  maximum, the other number the current value, and the minimum is
+  assumed to be zero), or as a percentage or similar (using one of the
+  characters such as "%"), or as a fraction. However, it is also
+  possible to use the attributes to specify these values.</p>
 
   <p>One of the following conditions, along with all the requirements
   that are listed with that condition, must be met:</p>
@@ -14839,6 +16008,8 @@
 
   </div>
 
+  <div class="impl">
+
   <p><strong>User agent requirements</strong>: User agents must parse
   the <code title="attr-meter-min">min</code>, <code
   title="attr-meter-max">max</code>, <code
@@ -15081,15 +16252,8 @@
   attributes must return zero. The value parsed from the
   <code>textContent</code> never affects the DOM values.</p>
 
-  <p class="XXX">Would be cool to have the <code
-  title="dom-meter-value">value</code> DOM attribute update the
-  <code>textContent</code> in-line...</p>
+  </div>
 
-<!-- XXX
-should we also look inside the title="" attribute?
-   Disk usage: &lt;meter title="985MB of 986MB total" high="980">Full!&lt;/meter>
-should we make the contents accessible in some way, e.g. as a tooltip?
--->
 
 
 
@@ -15556,6 +16720,8 @@
   specify a left-to-right override and with the value <code>rtl</code>
   to specify a right-to-left override.</p>
 
+  <div class="impl">
+
   <p>If the element has the <code title="attr-dir">dir</code>
   attribute set to the exact value <code>ltr</code>, then for the
   purposes of the bidi algorithm, the user agent must act as if there
@@ -15576,6 +16742,8 @@
   requirements by implementing the CSS <code>unicode-bidi</code>
   property. <a href="#refsCSS21">[CSS21]</a></p>
 
+  </div>
+
   <!-- XXX need examples -->
 
 
@@ -15695,17 +16863,21 @@
   <p>The <code>rt</code> element marks the ruby text component of a
   ruby annotation.</p>
 
-  <p>An <code>rt</code> element that is a child of a <code>ruby</code>
-  element <span>represents</span> an annotation (given by its
-  children) for the zero or more nodes of phrasing content that
-  immediately precedes it in the <code>ruby</code> element, ignoring
-  <code>rp</code> elements.</p>
+  <p>An <code>rt</code> element <span class="impl">that is a child of
+  a <code>ruby</code> element</span> <span>represents</span> an
+  annotation (given by its children) for the zero or more nodes of
+  phrasing content that immediately precedes it in the
+  <code>ruby</code> element, ignoring <code>rp</code> elements.</p>
 
+  <div class="impl">
+
   <p>An <code>rt</code> element that is not a child of a
   <code>ruby</code> element represents the same thing as its
   children.</p>
 
+  </div>
 
+
   <h4>The <dfn><code>rp</code></dfn> element</h4>
 
   <dl class="element">
@@ -15726,10 +16898,12 @@
   around a ruby text component of a ruby annotation, to be shown by
   user agents that don't support ruby annotations.</p>
 
-  <p>An <code>rp</code> element that is a child of a <code>ruby</code>
-  element <span>represents</span> nothing and it and its contents must
-  be ignored. An <code>rp</code> element whose parent element is not a
-  <code>ruby</code> element <span>represents</span> its children.</p>
+  <p>An <code>rp</code> element <span class="impl">that is a child of
+  a <code>ruby</code> element</span> <span>represents</span>
+  nothing<span class="impl"> and its contents must be
+  ignored</span>. <span class="impl">An <code>rp</code> element whose
+  parent element is not a <code>ruby</code> element
+  <span>represents</span> its children.</span></p>
 
   <div class="example">
 
@@ -15979,6 +17153,8 @@
   pointing to the specific part of that document that discusses the
   change.</p>
 
+  <div class="impl">
+
   <p>If the <code title="attr-mod-cite">cite</code> attribute is
   present, it must be a <span>valid URL</span> that explains the
   change. To obtain the corresponding citation link, the value of the
@@ -15986,6 +17162,8 @@
   relative to the element. User agents should allow users to follow
   such citation links.</p>
 
+  </div>
+
   <p>The <dfn title="attr-mod-datetime"><code>datetime</code></dfn>
   attribute may be used to specify the time and date of the change.</p>
 
@@ -15993,6 +17171,8 @@
   attribute must be a <span>valid global date and time string</span>
   value.</p>
 
+  <div class="impl">
+
   <p>User agents must parse the <code
   title="attr-mod-datetime">datetime</code> attribute according to the
   <span>parse a global date and time string</span> algorithm. If that
@@ -16003,14 +17183,19 @@
   use the associated timezone information to determine which timezone
   to present the given datetime in.</p>
 
-  <p>The <code>ins</code> and <code>del</code> elements must implement
-  the <code>HTMLModElement</code> interface:</p>
+  </div>
 
+  <p>The <code>ins</code> and <code>del</code> elements <span
+  class="impl">must</span> implement the <code>HTMLModElement</code>
+  interface:</p>
+
   <pre class="idl">interface <dfn>HTMLModElement</dfn> : <span>HTMLElement</span> {
            attribute DOMString <span title="dom-mod-cite">cite</span>;
            attribute DOMString <span title="dom-mod-datetime">dateTime</span>;
 };</pre>
 
+  <div class="impl">
+
   <p>The <dfn title="dom-mod-cite"><code>cite</code></dfn> DOM
   attribute must <span>reflect</span> the element's <code
   title="attr-mod-cite">cite</code> content attribute. The <dfn
@@ -16018,7 +17203,9 @@
   must <span>reflect</span> the element's <code
   title="">datetime</code> content attribute.</p>
 
+  </div>
 
+
   <h4>Edits and paragraphs</h4>
 
   <p>Since the <code>ins</code> and <code>del</code> elements do not
@@ -16351,6 +17538,8 @@
   fully transparent images, as they rarely convey meaning and rarely
   add anything useful to the document.</p>
 
+  <div class="impl">
+
   <hr>
 
   <p>Unless the user agent cannot support images, or its support for
@@ -16595,6 +17784,8 @@
   <p>The <em>contents</em> of <code>img</code> elements, if any, are
   ignored for the purposes of rendering.</p>
 
+  </div>
+
   <hr>
 
   <p>The <code title="attr-hyperlink-usemap">usemap</code> attribute,
@@ -16617,6 +17808,8 @@
   <p>The <code>img</code> element supports <span>dimension
   attributes</span>.</p>
 
+  <div class="impl">
+
   <p>The DOM attributes <dfn
   title="dom-img-alt"><code>alt</code></dfn>, <dfn
   title="dom-img-src"><code>src</code></dfn>, <dfn
@@ -16625,6 +17818,47 @@
   <span>reflect</span> the respective content attributes of the same
   name.</p>
 
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">image</var> . <code title="dom-img-width">width</code> [ = <var title="">value</var> ]</dt>
+   <dt><var title="">image</var> . <code title="dom-img-height">height</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>These attributes return the actual rendered dimensions of the
+    image, or zero if the dimensions are not known.</p>
+
+    <p>They can be set, to change the corresponding content
+    attributes.</p>
+
+   </dd>
+
+   <dt><var title="">image</var> . <code title="dom-img-complete">complete</code></dt>
+
+   <dd>
+
+    <p>Returns true if the image has been downloaded, decoded, and
+    found to be valid; otherwise, returns false.</p>
+
+   </dd>
+
+   <dt><var title="">image</var> = new <code title="dom-image">Image</code>( [ <var title="">width</var> [, <var title="">height</var> ] ] )</dt>
+
+   <dd>
+
+    <p>Returns a new <code>img</code> element, with the <code
+    title="attr-dim-width">width</code> and <code
+    title="attr-dim-height">height</code> attributes set to the values
+    passed in the relevant arguments, if applicable.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The DOM attributes <dfn
   title="dom-img-width"><code>width</code></dfn> and <dfn
   title="dom-img-height"><code>height</code></dfn> must return the
@@ -16635,6 +17869,10 @@
   or else 0, if the image is not <i>available</i> or its dimensions
   are not known. <a href="#refsCSS21">[CSS21]</a></p>
 
+  <p>On setting, they must act as if they <span
+  title="reflect">reflected</span> the respective content attributes
+  of the same name.</p>
+
   <p>The DOM attribute <dfn
   title="dom-img-complete"><code>complete</code></dfn> must return
   true if the user agent has fetched the image specified in the <code
@@ -16666,6 +17904,7 @@
   title="attr-dim-height">height</code> content attribute must be set
   to <var title="">height</var>.</p>
 
+  </div>
 
   <div class="example">
 
@@ -17591,6 +18830,7 @@
   start for writing the alternative text.</p>
 
 
+  <div class="impl">
 
   <h6>Guidance for markup generators</h6>
 
@@ -17615,6 +18855,7 @@
   <p>Markup generators should generally avoid using the image's own
   file name as the alternative text.</p>
 
+  </diV>
 
 
 
@@ -17651,9 +18892,10 @@
   readonly attribute <span>WindowProxy</span> <span title="dom-iframe-contentWindow">contentWindow</span>;
 -->};</pre>
     <p>Objects implementing the <code>HTMLIFrameElement</code>
-    interface must also implement the <code>EmbeddingElement</code>
-    interface defined in the Window Object specification. <a
-    href="#refsWINDOW">[WINDOW]</a></p> <!-- XXX -->
+    interface <span class="impl">must</span> also implement the
+    <code>EmbeddingElement</code> interface defined in the Window
+    Object specification. <a href="#refsWINDOW">[WINDOW]</a></p> <!--
+    XXX -->
    </dd>
   </dl>
 
@@ -17663,20 +18905,24 @@
   <p>The <dfn title="attr-iframe-src"><code>src</code></dfn> attribute
   gives the address of a page that the <span>nested browsing
   context</span> is to contain. The attribute, if present, must be a
-  <span>valid URL</span>. When the browsing context is created, if the
-  attribute is present, the user agent must <span title="resolve a
-  url">resolve</span> the value of that attribute, relative to the
-  element, and if that is successful, must then <span>navigate</span>
-  the element's browsing context to the resulting <span>absolute
-  URL</span>, with <span>replacement enabled</span>, and with the
-  <code>iframe</code> element's document's <span>browsing
-  context</span> as the <span>source browsing context</span>. If the
-  user <span title="navigate">navigates</span> away from this page,
-  the <code>iframe</code>'s corresponding <code>WindowProxy</code>
-  object will proxy new <code>Window</code> objects for new
+  <span>valid URL</span>. <span class="impl">When the browsing context
+  is created, if the attribute is present, the user agent must <span
+  title="resolve a url">resolve</span> the value of that attribute,
+  relative to the element, and if that is successful, must then
+  <span>navigate</span> the element's browsing context to the
+  resulting <span>absolute URL</span>, with <span>replacement
+  enabled</span>, and with the <code>iframe</code> element's
+  document's <span>browsing context</span> as the <span>source
+  browsing context</span>. If the user <span
+  title="navigate">navigates</span> away from this page, the
+  <code>iframe</code>'s corresponding <code>WindowProxy</code> object
+  will proxy new <code>Window</code> objects for new
   <code>Document</code> objects, but the <code
-  title="attr-iframe-src">src</code> attribute will not change.</p>
+  title="attr-iframe-src">src</code> attribute will not
+  change.</span></p>
 
+  <div class="impl">
+
   <p>Whenever the <code title="attr-iframe-src">src</code> attribute
   is set, the user agent must <span title="resolve a
   url">resolve</span> the value of that attribute, relative to the
@@ -17692,13 +18938,19 @@
   title="resolve a url">resolved</span>, the browsing context will
   remain at the initial <code>about:blank</code> page.</p>
 
+  </div>
+
   <p>The <dfn title="attr-iframe-name"><code>name</code></dfn>
   attribute, if present, must be a <span>valid browsing context
-  name</span>. When the browsing context is created, if the attribute
-  is present, the <span>browsing context name</span> must be set to
-  the value of this attribute; otherwise, the <span>browsing context
-  name</span> must be set to the empty string.</p>
+  name</span>. The given value is used to name the <span>nested
+  browsing context</span>. <span class="impl">When the browsing
+  context is created, if the attribute is present, the <span>browsing
+  context name</span> must be set to the value of this attribute;
+  otherwise, the <span>browsing context name</span> must be set to the
+  empty string.</span></p>
 
+  <div class="impl">
+
   <p>Whenever the <code title="attr-iframe-name">name</code> attribute
   is set, the nested <span>browsing context</span>'s <span
   title="browsing context name">name</span> must be changed to the new
@@ -17727,23 +18979,34 @@
   title="navigate">navigated</span>, that will further <span>delay the
   <code title="event-load">load</code> event</span>.</p>
 
+  </div>
 
-
   <hr>
 
-
-
   <p>The <dfn title="attr-iframe-sandbox"><code>sandbox</code></dfn>
   attribute, when specified, enables a set of extra restrictions on
   any content hosted by the <code>iframe</code>. Its value must be an
   <span>unordered set of unique space-separated tokens</span>. The
   allowed values are <code
   title="attr-iframe-sandbox-allow-same-origin">allow-same-origin</code>,
+  <code title="attr-iframe-sandbox-allow-forms">allow-forms</code>,
+  and <code
+  title="attr-iframe-sandbox-allow-scripts">allow-scripts</code>. When
+  the attribute is set, the content is treated as being from a unique
+  <span>origin</span>, forms and scripts are disabled, links are
+  prevented from targetting other <span title="browsing
+  context">browsing contexts</span>, and plugins are disabled. The
   <code
-  title="attr-iframe-sandbox-allow-forms">allow-forms</code>,
-  and <code
-  title="attr-iframe-sandbox-allow-scripts">allow-scripts</code>.</p>
+  title="attr-iframe-sandbox-allow-same-origin">allow-same-origin</code>
+  token allows the content to be treated as being from the same origin
+  instead of forcing it into a unique origin, and the <code
+  title="attr-iframe-sandbox-allow-forms">allow-forms</code> and <code
+  title="attr-iframe-sandbox-allow-scripts">allow-scripts</code>
+  tokens re-enable forms and scripts respectively (though scripts are
+  still prevented from creating popups).</p>
 
+  <div class="impl">
+
   <p>While the <code title="attr-iframe-sandbox">sandbox</code>
   attribute is specified, the <code>iframe</code> element's
   <span>nested browsing context</span>, and all the browsing contexts
@@ -17890,6 +19153,8 @@
   <p>These flags must not be set unless the conditions listed above
   define them as being set.</p>
 
+  </div>
+
   <div class="example">
 
    <p>In this example, some completely-unknown, potentially hostile,
@@ -17940,15 +19205,17 @@
   the <code>iframe</code> element's <span>browsing context</span> is
   to be rendered in a manner that makes it appear to be part of the
   containing document (seamlessly included in the parent
-  document). Specifically, when the attribute is set on an element and
-  while the <span>browsing context</span>'s <span>active
-  document</span> has the <span>same origin</span> as the
+  document). <span class="impl">Specifically, when the attribute is
+  set on an element and while the <span>browsing context</span>'s
+  <span>active document</span> has the <span>same origin</span> as the
   <code>iframe</code> element's document, or the <span>browsing
   context</span>'s <span>active document</span>'s <em><span title="the
   document's address">address</span><!-- XXX xref --></em> has the
   <span>same origin</span> as the <code>iframe</code> element's
-  document, the following requirements apply:</p>
+  document, the following requirements apply:</span></p>
 
+  <div class="impl">
+
   <ul>
 
    <li><p>The user agent must set the <dfn>seamless browsing
@@ -18037,6 +19304,8 @@
   gets unset if the <span>nested browsing context</span> is <span
   title="navigate">navigated</span> to another origin.</p>
 
+  </div>
+
   <p class="note">The attribute can be set or removed dynamically,
   with the rendering updating in tandem.</p>
 
@@ -18088,6 +19357,8 @@
   <p class="note">The <span>HTML parser</span> treats markup inside
   <code>iframe</code> elements as text.</p>
 
+  <div class="impl">
+
   <p>The DOM attributes <dfn
   title="dom-iframe-src"><code>src</code></dfn>, <dfn
   title="dom-iframe-name"><code>name</code></dfn>, <dfn
@@ -18096,7 +19367,9 @@
   <span>reflect</span> the respective content attributes of the same
   name.</p>
 
+  </div>
 
+
   <h4>The <dfn><code>embed</code></dfn> element</h4>
 
 <!--
@@ -18139,9 +19412,11 @@
            attribute DOMString <span title="dom-dim-width">width</span>;
            attribute DOMString <span title="dom-dim-height">height</span>;
 };</pre>
+    <div class="impl">
     <p>Depending on the type of content instantiated by the
     <code>embed</code> element, the node may also support other
     interfaces.</p>
+    </div>
    </dd>
   </dl>
 
@@ -18164,6 +19439,8 @@
   resource given by the <code title="attr-embed-src">src</code>
   attribute. <a href="#refsRFC2046">[RFC2046]</a></p>
 
+  <div class="impl">
+
   <p>When the element is created with neither a <code
   title="attr-embed-src">src</code> attribute nor a <code
   title="attr-embed-type">type</code> attribute, and when attributes
@@ -18273,6 +19550,8 @@
   instantiate an appropriate <span>plugin</span> based on the value of
   the <code title="attr-embed-type">type</code> attribute.</p>
 
+  </div>
+
   <p>Any (namespace-less) attribute may be specified on the
   <code>embed</code> element, so long as its name is
   <span>XML-compatible</span> and contains no characters in the range
@@ -18283,6 +19562,8 @@
   lowercased automatically, so the restriction on uppercase letters
   doesn't affect such documents.</p>
 
+  <div class="impl">
+
   <p>The user agent should pass the names and values of all the
   attributes of the <code>embed</code> element that have no namespace
   to the <span>plugin</span> used, when it is instantiated.</p>
@@ -18297,16 +19578,22 @@
   the user agent must use a default plugin. (This default could be as
   simple as saying "Unsupported Format".)</p>
 
+  </div>
+
   <p>The <code>embed</code> element supports <span>dimension
   attributes</span>.</p>
 
+  <div class="impl">
+
   <p>The DOM attributes <dfn
   title="dom-embed-src"><code>src</code></dfn> and <dfn
   title="dom-embed-type"><code>type</code></dfn> each must
   <span>reflect</span> the respective content attributes of the same
   name.</p>
 
+  </div>
 
+
   <h4>The <dfn><code>object</code></dfn> element</h4>
 
   <dl class="element">
@@ -18343,18 +19630,20 @@
   readonly attribute <span>WindowProxy</span> <span title="dom-object-contentWindow">contentWindow</span>;
 -->};</pre>
     <p>Objects implementing the <code>HTMLObjectElement</code>
-    interface must also implement the <code>EmbeddingElement</code>
-    interface defined in the Window Object specification. <a
-    href="#refsWINDOW">[WINDOW]</a></p>
+    interface <span class="impl">must</span> also implement the
+    <code>EmbeddingElement</code> interface defined in the Window
+    Object specification. <a href="#refsWINDOW">[WINDOW]</a></p>
+    <div class="impl">
     <p>Depending on the type of content instantiated by the
     <code>object</code> element, the node may also support other
     interfaces.</p>
+    </div>
    </dd>
   </dl>
 
   <p>The <code>object</code> element can represent an external
   resource, which, depending on the type of the resource, will either
-  be treated as an image, as a nested <span>browsing context</span>,
+  be treated as an image, as a <span>nested browsing context</span>,
   or as an external resource to be processed by a
   <span>plugin</span>.</p>
 
@@ -18373,8 +19662,11 @@
 
   <p>The <dfn title="attr-object-name"><code>name</code></dfn>
   attribute, if present, must be a <span>valid browsing context
-  name</span>.</p>
+  name</span>. The given value is used to name the <span>nested
+  browsing context</span>, if applicable.</p>
 
+  <div class="impl">
+
   <p>When the element is created, and subsequently whenever the <code
   title="attr-object-classid">classid</code> attribute changes or is
   removed, or, if the <code title="attr-object-classid">classid</code>
@@ -18695,23 +19987,31 @@
   context</span>, the <span>browsing context name</span> must be set
   to the empty string.</p>
 
+  </div>
+
   <p>The <code title="attr-hyperlink-usemap">usemap</code> attribute,
   if present while the <code>object</code> element represents an
   image, can indicate that the object has an associated <span>image
-  map</span>. The attribute must be ignored if the <code>object</code>
-  element doesn't represent an image.</p>
+  map</span>. <span class="impl">The attribute must be ignored if the
+  <code>object</code> element doesn't represent an image.</span></p>
 
   <p>The <code title="attr-fae-form">form</code> attribute is used to
   explicitly associate the <code>object</code> element with its
   <span>form owner</span>.</p>
 
+  <div class="impl">
+
   <p><strong>Constraint validation:</strong> <code>object</code>
   elements are always <span>barred from constraint
   validation</span>.</p>
 
+  </div>
+
   <p>The <code>object</code> element supports <span>dimension
   attributes</span>.</p>
 
+  <div class="impl">
+
   <p>The DOM attributes <dfn
   title="dom-object-data"><code>data</code></dfn>, <dfn
   title="dom-object-type"><code>type</code></dfn>, <dfn
@@ -18720,6 +20020,8 @@
   <span>reflect</span> the respective content attributes of the same
   name.</p>
 
+  </div>
+
   <div class="example">
 
    <p>In the following example, a Java applet is embedded in a page
@@ -18754,7 +20056,6 @@
 
 
 
-
   <h4>The <dfn><code>param</code></dfn> element</h4>
 
   <dl class="element">
@@ -18789,6 +20090,8 @@
 
   <p>Both attributes must be present. They may have any value.</p>
 
+  <div class="impl">
+
   <p>If both attributes are present, and if the parent element of the
   <code>param</code> is an <code>object</code> element, then the
   element defines a <dfn
@@ -18801,8 +20104,10 @@
   <span>reflect</span> the respective content attributes of the same
   name.</p>
 
+  </div>
 
 
+
   <h4 id="video">The <dfn><code>video</code></dfn> element</h4>
 
   <dl class="element">
@@ -18841,11 +20146,11 @@
   <p>A <code>video</code> element represents a video or movie.</p>
 
   <p>Content may be provided inside the <code>video</code>
-  element. User agents should not show this content to the user; it is
-  intended for older Web browsers which do not support
-  <code>video</code>, so that legacy video plugins can be tried, or to
-  show text to the users of these older browser informing them of how
-  to access the video contents.</p>
+  element<span class="impl">. User agents should not show this content
+  to the user</span>; it is intended for older Web browsers which do
+  not support <code>video</code>, so that legacy video plugins can be
+  tried, or to show text to the users of these older browser informing
+  them of how to access the video contents.</p>
 
   <p class="note">In particular, this content is not <i>fallback
   content</i> intended to address accessibility concerns. To make
@@ -18869,15 +20174,15 @@
   <p>The <dfn title="attr-video-poster"><code>poster</code></dfn>
   attribute gives the address of an image file that the user agent can
   show while no video data is available. The attribute, if present,
-  must contain a <span>valid URL</span>. If the specified resource is
-  to be used, then, when the element is created or when the <code
-  title="attr-video-poster">poster</code> attribute is set, its value
-  must be <span title="resolve a url">resolved</span> relative to the
-  element, and if that is successful, the resulting <span>absolute
-  URL</span> must be <span title="fetch">fetched</span>. The
-  <dfn>poster frame</dfn> is then the image obtained from that
-  resource, if any.</p> <!-- thus it is unaffected by changes to the
-  base URL. -->
+  must contain a <span>valid URL</span>. <span class="impl">If the
+  specified resource is to be used, then, when the element is created
+  or when the <code title="attr-video-poster">poster</code> attribute
+  is set, its value must be <span title="resolve a
+  url">resolved</span> relative to the element, and if that is
+  successful, the resulting <span>absolute URL</span> must be <span
+  title="fetch">fetched</span>. The <dfn>poster frame</dfn> is then
+  the image obtained from that resource, if any.</span></p> <!-- thus
+  it is unaffected by changes to the base URL. -->
 
   <p class="note">The image given by the <code
   title="attr-video-poster">poster</code> attribute, the <i>poster
@@ -18885,6 +20190,8 @@
   (typically one of the first non-blank frames) that gives the user an
   idea of what the video is like.</p>
 
+  <div class="impl">
+
   <p>The <dfn title="dom-video-poster"><code>poster</code></dfn> DOM
   attribute must <span>reflect</span> the <code
   title="attr-video-poster">poster</code> content attribute.</p>
@@ -18953,6 +20260,24 @@
 
   <hr>
 
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">video</var> . <code title="dom-video-videoWidth">videoWidth</code></dt>
+   <dt><var title="">video</var> . <code title="dom-video-videoHeight">videoHeight</code></dt>
+
+   <dd>
+
+    <p>These attributes return the intrinsic dimensions of the video,
+    or zero if the dimensions are not known.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="concept-video-intrinsic-width">intrinsic
   width</dfn> and <dfn
   title="concept-video-intrinsic-height">intrinsic height</dfn> of the
@@ -18974,9 +20299,13 @@
   title="dom-media-HAVE_NOTHING">HAVE_NOTHING</code>, then the
   attributes must return 0.</p>
 
+  </div>
+
   <p>The <code>video</code> element supports <span>dimension
   attributes</span>.</p>
 
+  <div class="impl">
+
   <p>Video content should be rendered inside the element's playback
   area such that the video content is shown centered in the playback
   area at the largest possible size that fits completely within it,
@@ -19036,8 +20365,12 @@
   provided to easily allow the user to obtain a full-screen playback
   mode.</p>
 
+  </div>
 
 
+
+  <div class="impl">
+
   <h5>Video and audio codecs for <code>video</code> elements</h5>
 
   <p>User agents may support any video and audio codecs and container
@@ -19059,6 +20392,7 @@
   <p class="note">Certain user agents might support no codecs at all,
   e.g. text browsers running over SSH connections.</p>
 
+  </div>
 
 
 
@@ -19098,11 +20432,11 @@
   audio stream.</p>
 
   <p>Content may be provided inside the <code>audio</code>
-  element. User agents should not show this content to the user; it is
-  intended for older Web browsers which do not support
-  <code>audio</code>, so that legacy audio plugins can be tried, or to
-  show text to the users of these older browser informing them of how
-  to access the audio contents.</p>
+  element<span class="impl">. User agents should not show this content
+  to the user</span>; it is intended for older Web browsers which do
+  not support <code>audio</code>, so that legacy audio plugins can be
+  tried, or to show text to the users of these older browser informing
+  them of how to access the audio contents.</p>
 
   <p class="note">In particular, this content is not <i>fallback
   content</i> intended to address accessibility concerns. To make
@@ -19121,7 +20455,9 @@
   title="attr-media-controls">controls</code> attributes are <span
   title="media element attributes">the attributes common to all media
   elements</span>.</p>
- 
+
+  <div class="impl">
+
   <p>When an <code>audio</code> element is <span>potentially
   playing</span>, it must have its audio data played synchronized with
   the <span>current playback position</span>, at the specified <span
@@ -19131,6 +20467,24 @@
   <p>When an <code>audio</code> element is not <span>potentially
   playing</span>, audio must not play for the element.</p>
 
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">audio</var> = new <code title="dom-Audio">Audio</code>( [ <var title="">url</var> ] )</dt>
+
+   <dd>
+
+    <p>Returns a new <code>audio</code> element, with the <code
+    title="attr-media-src">src</code> attribute set to the value
+    passed in the argument, if applicable.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>Two constructors are provided for creating
   <code>HTMLAudioElement</code> objects (in addition to the factory
   methods from DOM Core such as <code
@@ -19146,9 +20500,12 @@
   object's <span title="concept-media-load-algorithm">resource
   selection algorithm</span> before returning.</p>
 
+  </div>
 
 
 
+  <div class="impl">
+
   <h5>Audio codecs for <code>audio</code> elements</h5>
 
   <p>User agents may support any audio codecs and container
@@ -19160,6 +20517,7 @@
   <!-- XXX mention that this spec doesn't require native support or
   plugin support, either is fine -->
 
+  </div>
 
 
   <h4>The <dfn><code>source</code></dfn> element</h4>
@@ -19306,6 +20664,8 @@
   it. Its value must be a valid <a href="#mq">media query</a>. <a
   href="#refsMQ">[MQ]</a></p>
 
+  <div class="impl">
+
   <p>The DOM attributes <dfn
   title="dom-source-src"><code>src</code></dfn>, <dfn
   title="dom-source-type"><code>type</code></dfn>, and <dfn
@@ -19313,8 +20673,10 @@
   <span>reflect</span> the respective content attributes of the same
   name.</p>
 
+  </div>
 
 
+
   <h4>Media elements</h4>
 
   <p><dfn title="media element">Media elements</dfn> implement the
@@ -19436,14 +20798,36 @@
   resource</dfn> is used to refer to the complete set of media data,
   e.g. the complete video file, or complete audio file.</p>
 
+  <div class="impl">
+
   <p>Unless otherwise specified, the <span>task source</span> for all
   the tasks <span title="queue a task">queued</span> in this section
   and its subsections is the <dfn>media element event task
   source</dfn>.</p>
 
+  </div>
 
+
+
   <h5>Error codes</h5>
 
+  <dl class="domintro">
+
+   <dt><var title="">media</var> . <code title="dom-media-error">error</code></dt>
+
+   <dd>
+
+    <p>Returns a <code>MediaError</code> object representing the
+    current error state of the element.</p>
+
+    <p>Returns null if there is no error.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>All <span title="media element">media elements</span> have an
   associated error status, which records the last error the element
   encountered since its <span
@@ -19453,6 +20837,8 @@
   getting, must return the <code>MediaError</code> object created for
   this last error, or null if there has not been an error.</p>
 
+  </div>
+
   <pre class="idl">interface <dfn>MediaError</dfn> {
   const unsigned short <span title="dom-MediaError-MEDIA_ERR_ABORTED">MEDIA_ERR_ABORTED</span> = 1;
   const unsigned short <span title="dom-MediaError-MEDIA_ERR_NETWORK">MEDIA_ERR_NETWORK</span> = 2;
@@ -19461,10 +20847,26 @@
   readonly attribute unsigned short <span title="dom-MediaError-code">code</span>;
 };</pre>
 
+  <dl class="domintro">
+
+   <dt><var title="">media</var> . <code title="dom-media-error">error</code> . <code title="dom-MediaError-code">code</code></dt>
+
+   <dd>
+
+    <p>Returns the current error's error code, from the list below.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-MediaError-code"><code>code</code></dfn>
   attribute of a <code>MediaError</code> object must return the code
   for the error, which must be one of the following:</p>
 
+  </div>
+
   <dl>
 
    <dt><dfn title="dom-MediaError-MEDIA_ERR_ABORTED"><code>MEDIA_ERR_ABORTED</code></dfn> (numeric value 1)</dt>
@@ -19499,17 +20901,39 @@
   the address of the media resource (video, audio) to show. The
   attribute, if present, must contain a <span>valid URL</span>.</p>
 
+  <div class="impl">
+
   <p>The <dfn title="dom-media-src"><code>src</code></dfn> DOM
   attribute on <span title="media element">media elements</span> must
   <span>reflect</span> the respective content attribute of the same
   name.</p>
 
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">media</var> . <code title="dom-media-currentSrc">currentSrc</code></dt>
+
+   <dd>
+
+    <p>Returns the address of the current <span>media resource</span>.</p>
+
+    <p>Returns the empty string when there is no <span>media resource</span>.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-media-currentSrc"><code>currentSrc</code></dfn> DOM
   attribute is initially the empty string. Its value is changed by the
   <span title="concept-media-load-algorithm">resource selection
   algorithm</span> defined below.</p>
 
+  </div>
+
   <p class="note">There are two ways to specify a <span>media
   resource</span>, the <code title="attr-media-src">src</code>
   attribute, or <code>source</code> elements. The attribute overrides
@@ -19540,6 +20964,22 @@
   not support, for example because it doesn't recognise the container
   type, or it doesn't support the listed codecs.</p>
 
+  <dl class="domintro">
+
+   <dt><var title="">media</var> . <code title="dom-navigator-canPlayType">canPlayType</code>(<var title="">type</var>)</dt>
+
+   <dd>
+
+    <p>Returns "no", "maybe", or "probably" based on how confident the
+    user agent is that it can play media resources of the given
+    type.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-navigator-canPlayType"><code>canPlayType(<var
   title="">type</var>)</code></dfn> method must return the string
   "<code title="">no</code>" if <var title="">type</var> is <span>a
@@ -19554,6 +20994,8 @@
   agent should never return "<code title="">probably</code>" if the
   type doesn't have a <code title="">codecs</code> parameter.</p>
 
+  </div>
+
   <div class="example">
 
    <p>This script tests to see if the user agent supports a
@@ -19595,6 +21037,21 @@
 
   <h5>Network states</h5>
 
+  <dl class="domintro">
+
+   <dt><var title="">media</var> . <code title="dom-media-networkState">networkState</code></dt>
+
+   <dd>
+
+    <p>Returns the current state of network activity for the element,
+    from the codes in the list below.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>As <span title="media element">media elements</span> interact
   with the network, their current network activity is represented by
   the <dfn
@@ -19602,6 +21059,8 @@
   attribute. On getting, it must return the current network state of
   the element, which must be one of the following values:</p>
 
+  </div>
+
   <dl>
 
    <dt><dfn title="dom-media-NETWORK_EMPTY"><code>NETWORK_EMPTY</code></dfn> (numeric value 0)</dt>
@@ -19611,10 +21070,11 @@
 
    <dt><dfn title="dom-media-NETWORK_IDLE"><code>NETWORK_IDLE</code></dfn> (numeric value 1)</dt>
 
-   <dd>The element's <span
+   <dd>The element<span class="impl">'s <span
    title="concept-media-load-algorithm">resource selection
-   algorithm</span> is active and has selected a resource, but it is
-   not actually using the network at this time.</dd>
+   algorithm</span> is active and</span> has selected a <span
+   title="media resource">resource</span>, but it is not actually
+   using the network at this time.</dd>
 
    <dt><dfn title="dom-media-NETWORK_LOADING"><code>NETWORK_LOADING</code></dfn> (numeric value 2)</dt>
 
@@ -19628,25 +21088,46 @@
 
    <dt><dfn title="dom-media-NETWORK_NO_SOURCE"><code>NETWORK_NO_SOURCE</code></dfn> (numeric value 4)</dt>
 
-   <dd>The element's <span
+   <dd>The element<span class="impl">'s <span
    title="concept-media-load-algorithm">resource selection
-   algorithm</span> is active, but it has failed to find a resource to
-   use.</dd>
+   algorithm</span> is active, but it</span> has failed to find a
+   <span title="media resource">resource</span> to use.</dd>
 
   </dl>
 
+  <div class="impl">
+
   <p>The <span title="concept-media-load-algorithm">resource selection
   algorithm</span> defined below describes exactly when the <code
   title="dom-media-networkState">networkState</code> attribute changes
   value and what events fire to indicate changes in this state.</p>
 
+  </div>
+
   <p class="note">Some resources, e.g. streaming Web radio, can never
   reach the <code
   title="dom-media-NETWORK_LOADED">NETWORK_LOADED</code> state.</p>
 
 
+
+
   <h5>Loading the media resource</h5>
 
+  <dl class="domintro">
+
+   <dt><var title="">media</var> . <code title="dom-media-load">load</code>()</dt>
+
+   <dd>
+
+    <p>Causes the element to reset and start selecting and loading a
+    new <span>media resource</span> from scratch.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>All <span title="media element">media elements</span> have an
   <dfn>autoplaying flag</dfn>, which must begin in the true state, and
   a <dfn>delaying-the-load-event flag</dfn>, which must begin in the
@@ -20413,6 +21894,8 @@
   title="concept-media-load-algorithm">resource selection
   algorithm</span>.</p>
 
+  </div>
+
   <p>The <dfn
   title="attr-media-autobuffer"><code>autobuffer</code></dfn>
   attribute is a <span>boolean attribute</span>. Its presence hints to
@@ -20421,17 +21904,21 @@
   have an <code title="attr-media-autoplay">autoplay</code>
   attribute. (The attribute has no effect if used in conjunction with
   the <code title="attr-media-autoplay">autoplay</code> attribute,
-  though including both is not an error.) This attribute may be
-  ignored altogether. The attribute must be ignored if the <code
-  title="attr-media-autoplay">autoplay</code> attribute is
-  present.</p>
+  though including both is not an error.) <span class="impl">This
+  attribute may be ignored altogether. The attribute must be ignored
+  if the <code title="attr-media-autoplay">autoplay</code> attribute
+  is present.</span></p>
 
+  <div class="impl">
+
   <p>The <dfn
   title="dom-media-autobuffer"><code>autobuffer</code></dfn> DOM
   attribute must <span>reflect</span> the content attribute of the
   same name.</p>
 
-<!--v3BUF
+  </div>
+
+<!--v3BUF (when readding this, also add a domintro block)
   <p>The <dfn
   title="dom-media-bufferingRate"><code>bufferingRate</code></dfn>
   attribute must return the average number of bits received per second
@@ -20446,6 +21933,22 @@
   otherwise.</p>
 -->
 
+  <dl class="domintro">
+
+   <dt><var title="">media</var> . <code title="dom-media-buffered">buffered</code></dt>
+
+   <dd>
+
+    <p>Returns a <code>TimeRanges</code> object that represents the
+    ranges of the <span>media resource</span> that the user agent has
+    buffered.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-media-buffered"><code>buffered</code></dfn>
   attribute must return a new static <span>normalized
   <code>TimeRanges</code> object</span> that represents the ranges of
@@ -20466,10 +21969,46 @@
   end up being not included in the range(s) of objects returned by the
   same attribute at later times.</p>
 
+  </div>
 
 
+
   <h5>Offsets into the media resource</h5>
 
+  <dl class="domintro">
+
+   <dt><var title="">media</var> . <code title="dom-media-duration">duration</code></dt>
+
+   <dd>
+
+    <p>Returns the length of the <span>media resource</span>, in
+    seconds.</p>
+
+    <p>Returns NaN if the duration isn't available.<p>
+
+    <p>Returns Infinity for unbounded streams.</p>
+
+   </dd>
+
+   <dt><var title="">media</var> . <code title="dom-media-currentTime">currentTime</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the <span>current playback position</span>, in seconds.</p>
+
+    <p>Can be set, to seek to the given time.<p>
+
+    <p>Will throw an <code>INVALID_STATE_ERR</code> exception if there
+    is no selected <span>media resources</span>. Will throw an
+    <code>INDEX_SIZE_ERR</code> exception if the given time is not
+    within the ranges to which the user agent can seek.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-media-duration"><code>duration</code></dfn>
   attribute must return the length of the <span>media resource</span>,
   in seconds. If no <span>media data</span> is available, then the
@@ -20528,19 +22067,41 @@
   title="dom-media-seek">seek</span> to the <var>earliest possible
   position</var>.</p>
 
+  </div>
+
   <p>The <dfn title="attr-media-loop"><code>loop</code></dfn>
   attribute is a <span>boolean attribute</span> that, if specified,
   indicates that the <span>media element</span> is to seek back to the
   start of the <span>media resource</span> upon reaching the end.</p>
 
+  <div class="impl">
+
   <p>The <dfn title="dom-media-loop"><code>loop</code></dfn> DOM
   attribute must <span>reflect</span> the content attribute of the
   same name.</p>
 
+  </div>
 
 
+
   <h5>The ready states</h5>
 
+  <dl class="domintro">
+
+   <dt><var title="">media</var> . <code title="dom-media-readyState">readyState</code></dt>
+
+   <dd>
+
+    <p>Returns a value that expresses the current state of the element
+    with respect to rendering the <span>current playback
+    position</span>, from the codes in the list below.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p><span title="media element">Media elements</span> have a
   <i>ready state</i>, which describes to what degree they are ready
   to be rendered at the <span>current playback position</span>. The
@@ -20548,11 +22109,13 @@
   at any particular time is the greatest value describing the state of
   the element:</p>
 
+  </div>
+
   <dl>
 
    <dt><dfn title="dom-media-HAVE_NOTHING"><code>HAVE_NOTHING</code></dfn> (numeric value 0)</dt>
 
-   <dd>No information regardig the <span>media resource</span> is
+   <dd>No information regarding the <span>media resource</span> is
    available. No data for the <span>current playback position</span>
    is available. <span title="media element">Media elements</span>
    whose <code title="dom-media-networkState">networkState</code>
@@ -20606,6 +22169,8 @@
 
   </dl>
 
+  <div class="impl">
+
   <p>When the ready state of a <span>media element</span> whose <code
   title="dom-media-networkState">networkState</code> is not <code
   title="dom-media-NETWORK_EMPTY">NETWORK_EMPTY</code> changes, the
@@ -20721,6 +22286,8 @@
 
   </dl>
 
+  </div>
+
   <p class="note">It is possible for the ready state of a media
   element to jump between these states discontinuously. For example,
   the state of a media element can jump straight from <code
@@ -20731,28 +22298,66 @@
   <code title="dom-media-HAVE_FUTURE_DATA">HAVE_FUTURE_DATA</code>
   states.</p>
 
+  <div class="impl">
+
   <p>The <dfn
   title="dom-media-readyState"><code>readyState</code></dfn> DOM
   attribute must, on getting, return the value described above that
   describes the current ready state of the <span>media
   element</span>.</p>
 
+  </div>
+
   <p>The <dfn title="attr-media-autoplay"><code>autoplay</code></dfn>
   attribute is a <span>boolean attribute</span>. When present, the
-  algorithm described herein will cause the user agent to
-  automatically begin playback of the <span>media resource</span> as
-  soon as it can do so without stopping.</p>
+  user agent <span class="impl">(as described in the algorithm
+  described herein)</span> will automatically begin playback of the
+  <span>media resource</span> as soon as it can do so without
+  stopping.</p>
 
+  <div class="impl">
+
   <p>The <dfn title="dom-media-autoplay"><code>autoplay</code></dfn>
   DOM attribute must <span>reflect</span> the content attribute of the
   same name.</p>
 
+  </div>
 
 
 
-
   <h5>Cue ranges</h5>
 
+  <dl class="domintro">
+
+   <dt><var title="">media</var> . <code title="dom-media-addCueRange">addCueRange</code>(<var title="">className</var>, <var title="">id</var>, <var title="">start</var>, <var title="">end</var>, <var title="">pauseOnExit</var>, <var title="">enterCallback</var>, <var title="">exitCallback</var>)</dt>
+
+   <dd>
+
+    <p>Registers a range of time, given in seconds, and a pair of
+    callbacks, the first of which will be invoked when the
+    <span>current playback position</span> enters the range, and the
+    second of which will be invoked when it exits the range. The
+    callbacks are invoked with the given ID as their argument.</p>
+
+    <p>In addition, if the <var title="">pauseOnExit</var> argument is
+    true, then playback will pause when it reaches the end of the
+    range.</p>
+
+   </dd>
+
+   <dt><var title="">media</var> . <code title="dom-media-removeCueRange">removeCueRange</code>(<var title="">className</var>)</dt>
+
+   <dd>
+
+    <p>Removes all the ranges that were registered with the given
+    class name.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p><span title="media element">Media elements</span> have a set of
   <dfn title="cue range">cue ranges</dfn>. Each cue range is made up
   of the following information:</p>
@@ -20813,10 +22418,91 @@
   <span>media element</span> which have the class name <var
   title="">className</var>.</p>
 
+  </div>
 
 
+
   <h5>Playing the media resource</h5>
 
+  <dl class="domintro">
+
+   <dt><var title="">media</var> . <code title="dom-media-paused">paused</code></dt>
+
+   <dd>
+
+    <p>Returns true if playback is paused; false otherwise.</p>
+
+   </dd>
+
+   <dt><var title="">media</var> . <code title="dom-media-ended">ended</code></dt>
+
+   <dd>
+
+    <p>Returns true if playback has reached the end of the <span>media resource</span>.</p>
+
+   </dd>
+
+   <dt><var title="">media</var> . <code title="dom-media-defaultPlaybackRate">defaultPlaybackRate</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the default rate of playback, for when the user is not
+    fast-forwarding or reversing through the <span>media
+    resource</span>.</p>
+
+    <p>Can be set, to change the default rate of playback.</p>
+
+    <p>The default rate has no direct effect on playback, but if the
+    user switches to a fast-forward mode, when they return to the
+    normal playback mode, it is expected that the rate of playback
+    will be returned to the default rate of playback.</p>
+
+   </dd>
+
+   <dt><var title="">media</var> . <code title="dom-media-playbackRate">playbackRate</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the current rate playback, where 1.0 is normal speed.</p>
+
+    <p>Can be set, to change the rate of playback.</p>
+
+   </dd>
+
+   <dt><var title="">media</var> . <code title="dom-media-played">played</code></dt>
+
+   <dd>
+
+    <p>Returns a <code>TimeRanges</code> object that represents the
+    ranges of the <span>media resource</span> that the user agent has
+    played.</p>
+
+   </dd>
+
+   <dt><var title="">media</var> . <code title="dom-media-play">play</code>()</dt>
+
+   <dd>
+
+    <p>Sets the <code title="dom-media-paused">paused</code> attribute
+    to false, loading the <span>media resource</span> and beginning
+    playback if necessary. If the playback had ended, will restart it
+    from the start.</p>
+
+   </dd>
+
+   <dt><var title="">media</var> . <code title="dom-media-pause">pause</code>()</dt>
+
+   <dd>
+
+    <p>Sets the <code title="dom-media-paused">paused</code> attribute
+    to true, loading the <span>media resource</span> if necessary.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-media-paused"><code>paused</code></dfn>
   attribute represents whether the <span>media element</span> is
   paused or not. The attribute must initially be true.</p>
@@ -21144,13 +22830,6 @@
    title="">current ranges</var>, in the order they were added to the
    element.</p></li>
 
-   <li><p>If none of the <span title="cue range">cue ranges</span> in
-   <var title="">current ranges</var> have their "active" boolean set
-   to "false" (inactive) and none of the <span title="cue range">cue
-   ranges</span> in <var title="">other ranges</var> have their
-   "active" boolean set to "true" (active), then abort these
-   steps.</p></li>
-
    <li><p>If the time was reached through the usual monotonic increase
    of the current playback position during normal playback, and if the
    user agent has not fired a <code
@@ -21169,6 +22848,13 @@
    not any more frequent than the user agent can comfortably handle
    while decoding the video.</p></li>
 
+   <li><p>If none of the <span title="cue range">cue ranges</span> in
+   <var title="">current ranges</var> have their "active" boolean set
+   to "false" (inactive) and none of the <span title="cue range">cue
+   ranges</span> in <var title="">other ranges</var> have their
+   "active" boolean set to "true" (active), then abort these
+   steps.</p></li>
+
    <li><p>If the time was reached through the usual monotonic increase
    of the current playback position during normal playback, and there
    are <span title="cue range">cue ranges</span> in <var
@@ -21214,15 +22900,40 @@
   title="dom-media-pause">pause()</code> method had been invoked.</p>
 
   <p class="note">If the <span>media element</span>'s
-  <code>Document</code> stops being an active document, then the
-  playback will <a href="#media-playback">stop</a> until the document
-  is active again.</p>
+  <code>Document</code> stops being a <span>fully active</span>
+  document, then the playback will <a href="#media-playback">stop</a>
+  until the document is active again.</p>
 
+  </div>
 
 
 
   <h5>Seeking</h5>
 
+  <dl class="domintro">
+
+   <dt><var title="">media</var> . <code title="dom-media-seeking">seeking</code></dt>
+
+   <dd>
+
+    <p>Returns true if the user agent is currently seeking.</p>
+
+   </dd>
+
+   <dt><var title="">media</var> . <code title="dom-media-seekable">seekable</code></dt>
+
+   <dd>
+
+    <p>Returns a <code>TimeRanges</code> object that represents the
+    ranges of the <span>media resource</span> to which it is possible
+    for the user agent to seek.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-media-seeking"><code>seeking</code></dfn>
   attribute must initially have the value false.</p>
 
@@ -21328,22 +23039,28 @@
   <span>current playback position</span> changes in a discontinuous
   fashion (so that the relevant events fire).</p>
 
+  </div>
 
 
   <h5>User interface</h5>
 
   <p>The <dfn title="attr-media-controls"><code>controls</code></dfn>
-  attribute is a <span>boolean attribute</span>. If the attribute is
-  present, or if <span title="concept-n-noscript">scripting is
-  disabled</span> for the <span>media element</span>, then the user
-  agent should <dfn>expose a user interface to the user</dfn>. This
-  user interface should include features to begin playback, pause
-  playback, seek to an arbitrary position in the content (if the
-  content supports arbitrary seeking), change the volume, and show the
-  media content in manners more suitable to the user (e.g. full-screen
-  video or in an independent resizable window). Other controls may
-  also be made available.</p>
+  attribute is a <span>boolean attribute</span>. If present, it
+  indicates that the author has not provided a scripted controller and
+  would like the user agent to provide its own set of controls.</p>
 
+  <div class="impl">
+
+  <p>If the attribute is present, or if <span
+  title="concept-n-noscript">scripting is disabled</span> for the
+  <span>media element</span>, then the user agent should <dfn>expose a
+  user interface to the user</dfn>. This user interface should include
+  features to begin playback, pause playback, seek to an arbitrary
+  position in the content (if the content supports arbitrary seeking),
+  change the volume, and show the media content in manners more
+  suitable to the user (e.g. full-screen video or in an independent
+  resizable window). Other controls may also be made available.</p>
+
   <p>If the attribute is absent, then the user agent should avoid
   making a user interface available that could conflict with an
   author-provided user interface. User agents may make the following
@@ -21365,6 +23082,43 @@
   DOM attribute must <span>reflect</span> the content attribute of the
   same name.</p>
 
+  <hr>
+
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">media</var> . <code title="dom-media-volume">volume</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the current playback volume, as a number in the range
+    0.0 to 1.0, where 0.0 is the quietest and 1.0 the loudest.</p>
+
+    <p>Can be set, to change the volume.</p>
+
+    <p>Throws an <code>INDEX_SIZE_ERR</code> if the new value is not
+    in the range 0.0 .. 1.0.</p>
+
+   </dd>
+
+   <dt><var title="">media</var> . <code title="dom-media-muted">muted</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns true if audio is muted, overriding the <code
+    title="dom-media-volume">volume</code> attribute, and false if the
+    <code title="dom-media-volume">volume</code> attribute is being
+    honored.</p>
+
+    <p>Can be set, to change whether the audio is muted or not.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-media-volume"><code>volume</code></dfn>
   attribute must return the playback volume of any audio portions of
   the <span>media element</span>, in the range 0.0 (silent) to 1.0
@@ -21399,8 +23153,11 @@
   title="event-volumechange">volumechange</code> at the <span>media
   element</span>.</p>
 
+  </div>
 
 
+
+
   <h5>Time ranges</h5>
 
   <p>Objects implementing the <code>TimeRanges</code> interface
@@ -21412,6 +23169,40 @@
   float <span title="dom-TimeRanges-end">end</span>(in unsigned long index);
 };</pre>
 
+  <dl class="intro">
+
+   <dt><var title="">media</var> . <code title="dom-TimeRanges-length">length</code></dt>
+
+   <dd>
+
+    <p>Returns the number of ranges in the object.</p>
+
+   </dd>
+
+   <dt><var title="">time</var> = <var title="">media</var> . <code title="dom-TimeRanges-start">start</code>(<var title="">index</var>)</dt>
+
+   <dd>
+
+    <p>Returns the time for the start of the range with the given index.</p>
+
+    <p>Throws an <code>INDEX_SIZE_ERR</code> if the index is out of range.</p>
+
+   </dd>
+
+   <dt><var title="">time</var> = <var title="">media</var> . <code title="dom-TimeRanges-end">end</code>(<var title="">index</var>)</dt>
+
+   <dd>
+
+    <p>Returns the time for the end of the range with the given index.</p>
+
+    <p>Throws an <code>INDEX_SIZE_ERR</code> if the index is out of range.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-TimeRanges-length"><code>length</code></dfn>
   DOM attribute must return the number of ranges represented by the object.</p>
 
@@ -21456,6 +23247,7 @@
   title="media element">media elements</span> must be the same as that
   element's <span>media resource</span>'s timeline.</p>
 
+  </div>
 
 
   <h5 id="mediaevents">Event summary</h5>
@@ -21600,6 +23392,8 @@
   </table>
 
 
+  <div class="impl">
+
   <h5>Security and privacy considerations</h5>
 
   <p>The main security and privacy implications of the
@@ -21650,10 +23444,9 @@
   being able to read the subtitles would present a confidentiality
   breach.</p>
 
+  </div>
 
 
-
-
   <h4>The <dfn id="canvas"><code>canvas</code></dfn> element</h4>
 
   <dl class="element">
@@ -21726,13 +23519,13 @@
   title="attr-canvas-height"><code>height</code></dfn>. These
   attributes, when specified, must have values that are <span
   title="valid non-negative integer">valid non-negative
-  integers</span>. The <span>rules for parsing non-negative
-  integers</span> must be used to obtain their numeric values. If an
-  attribute is missing, or if parsing its value returns an error, then
-  the default value must be used instead. The <code
-  title="attr-canvas-width">width</code> attribute defaults to 300,
-  and the <code title="attr-canvas-height">height</code> attribute
-  defaults to 150.</p>
+  integers</span>. <span class="impl">The <span>rules for parsing
+  non-negative integers</span> must be used to obtain their numeric
+  values. If an attribute is missing, or if parsing its value returns
+  an error, then the default value must be used instead.</span> The
+  <code title="attr-canvas-width">width</code> attribute defaults to
+  300, and the <code title="attr-canvas-height">height</code>
+  attribute defaults to 150.</p>
 
   <p>The intrinsic dimensions of the <code>canvas</code> element equal
   the size of the coordinate space, with the numbers interpreted in
@@ -21740,6 +23533,8 @@
   style sheet. During rendering, the image is scaled to fit this layout
   size.</p>
 
+  <div class="impl">
+
   <p>The size of the coordinate space does not necessarily represent
   the size of the actual bitmap that the user agent will use
   internally or during rendering. On high-definition displays, for
@@ -21759,6 +23554,8 @@
   attributes must <span>reflect</span> the respective content
   attributes of the same name.</p>
 
+  </div>
+
   <div class="example">
    <p>Only one square appears to be drawn in the following example:</p>
    <pre>
@@ -21771,10 +23568,12 @@
   context.fillRect(100,0,50,50); // only this square remains</pre>
   </div>
 
+  <div class="impl">
 
   <p>When the canvas is initialized it must be set to fully
   transparent black.</p>
 
+  </div>
 
   <p>To draw on the canvas, authors must first obtain a reference to a
   <dfn>context</dfn> using the <dfn
@@ -21782,14 +23581,31 @@
   title="">contextId</var>)</code></dfn> method of the
   <code>canvas</code> element.</p>
 
+  <dl class="domintro">
+
+   <dt><var title="">context</var> = <var title="">canvas</var> . <code title="dom-canvas-getContext">getContext</code>(<var title="">contextId</var>)</dt>
+
+   <dd>
+
+    <p>Returns an object that exposes an API for drawing on the canvas.</p>
+
+    <p>Returns null if the given context ID is not supported.</p>
+
+   </dd>
+
+  </dl>
+
   <p>This specification only defines one context, with the name "<code
-  title="canvas-context-2d">2d</code>". If <code
+  title="canvas-context-2d">2d</code>". <span class="impl">If <code
   title="dom-canvas-getContext">getContext()</code> is called with
   that exact string for its <var title="">contextId</var> argument,
   then the UA must return a reference to an object implementing
   <code>CanvasRenderingContext2D</code>. Other specifications may
-  define their own contexts, which would return different objects.</p>
+  define their own contexts, which would return different
+  objects.</span></p>
 
+  <div class="impl">
+
   <p>Vendors may also define experimental contexts using the syntax
   <code><var title="">vendorname</var>-<var
   title="">context</var></code>, for example, <code>moz-3d</code>.</p>
@@ -21798,8 +23614,7 @@
   context that it does not support, then it must return null. String
   comparisons must be <span>case-sensitive</span>.</p>
 
-  <p>Arguments other than the <var title="">contextId</var> must be
-  ignored.</p>
+  </div>
 
   <p class="note">A future version of this specification will probably
   define a <code>3d</code> context (probably based on the OpenGL ES
@@ -21807,6 +23622,28 @@
 
   <hr>
 
+  <dl class="domintro">
+
+   <dt><var title="">url</var> = <var title="">canvas</var> . <code title="dom-canvas-toDataURL">toDataURL</code>( [ <var title="">type</var>, ... ])</dt>
+
+   <dd>
+
+    <p>Returns a <code title="">data:</code> URL for the image in the
+    canvas.</p>
+
+    <p>The first argument, if provided, controls the type of the image
+    to be returned (e.g. PNG or JPEG). The default is <code
+    title="">image/png</code>; that type is also used if the given
+    type isn't supported. The other arguments are specific to the
+    type, and control the way that the image is generated, as given in
+    the table below.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-canvas-toDataURL"><code>toDataURL()</code></dfn> method
   must, when called with no arguments, return a <code
@@ -21844,6 +23681,8 @@
   support that type and before creating the <code
   title="">data:</code> URL.</p>
 
+  </div>
+
   <p class="note">When trying to use types other than
   <code>image/png</code>, authors can check if the image was really
   returned in the requested format by checking to see if the returned
@@ -21854,24 +23693,31 @@
   this is if the canvas has either no height or no width, in which
   case the result might simply be "<code title="">data:,</code>".)</p>
 
+  <div class="impl">
+
   <p>If the method is invoked with the first argument giving a type
   corresponding to one of the types given in the first column of the
   following table, and the user agent supports that type, then the
   subsequent arguments, if any, must be treated as described in the
   second cell of that row.</p>
 
+  </div>
+
   <table>
    <thead>
     <tr> <th> Type <th> Other arguments
    <tbody>
     <tr>
      <td> image/jpeg
-     <td> The second argument, if it is a number between 0.0 and 1.0,
-     must be treated as the desired quality level. If it is not a
-     number or is outside that range, the user agent must use its
-     default value, as if the argument had been omitted.
+     <td> The second argument<span title="impl">, if it</span> is a
+     number between 0.0 and 1.0<span class="impl">, must be</span>
+     treated as the desired quality level. <span class="impl">If it is
+     not a number or is outside that range, the user agent must use
+     its default value, as if the argument had been omitted.</span>
   </table>
 
+  <div class="impl">
+
   <p>Other arguments must be ignored and must not cause the user agent
   to raise an exception. A future version of this specification will
   probably define other parameters to be passed to <code
@@ -21879,7 +23725,9 @@
   more carefully control compression settings, image metadata,
   etc.</p>
 
+  </div>
 
+
   <h5>The 2D context</h5>
   <!-- v2: we're on v3. suggestions for next version are marked v4. -->
 
@@ -21888,12 +23736,16 @@
   title="canvas-context-2d"><code>2d</code></dfn> as the argument, a
   <code>CanvasRenderingContext2D</code> object is returned.</p>
 
+  <div class="impl">
+
   <p>There is only one <code>CanvasRenderingContext2D</code> object
   per canvas, so calling the <code
   title="dom-canvas-getContext">getContext()</code> method with the
   <code title="canvas-context-2d">2d</code> argument a second time
   must return the same object.</p>
 
+  </div>
+
   <p>The 2D context represents a flat Cartesian surface whose origin
   (0,0) is at the top left corner, with the coordinate space having
   <var title="">x</var> values increasing when going right, and <var
@@ -22016,11 +23868,24 @@
   readonly attribute unsigned long <span title="dom-canvaspixelarray-length">length</span>;
 };</pre>
 
+  <dl class="domintro">
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-canvas">canvas</code></dt>
+
+   <dd>
+
+    <p>Returns the <code>canvas</code> element.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-context-2d-canvas"><code>canvas</code></dfn>
   attribute must return the <code>canvas</code> element that the
   context paints on.</p>
 
-
   <p>Unless otherwise stated, for the 2D context interface, any method
   call with a numeric argument whose value is infinite or a NaN value
   must be ignored.</p>
@@ -22037,7 +23902,6 @@
    > exceptions when passing in non-finite arguments.
   -->
 
-
   <p>Whenever the CSS value <code title="">currentColor</code> is used
   as a color in this API, the "computed value of the 'color' property"
   for the purposes of determining the computed value of the <code
@@ -22052,6 +23916,7 @@
   title="">currentColor</code> keyword is fully opaque black. <a
   href="#refsCSS3COLOR">[CSS3COLOR]</a></p>
 
+  </div>
 
 
 
@@ -22088,6 +23953,28 @@
   current bitmap is <span title="concept-canvas-image">a property of
   the canvas</span><!-- XXX xref -->, not the context.</p>
 
+  <dl class="domintro">
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-save">save</code>()</dt>
+
+   <dd>
+
+    <p>Pushes the current state onto the stack.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-restore">restore</code>()</dt>
+
+   <dd>
+
+    <p>Pops the top state on the stack, restoring the context to that state.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-context-2d-save"><code>save()</code></dfn>
   method must push a copy of the current drawing state onto the
   drawing state stack.</p>
@@ -22116,13 +24003,17 @@
 > But how would it interact with normal calls to ctx.restore()?
   -->
 
+  </div>
 
+
   <h6><dfn title="dom-context-2d-transformation">Transformations</dfn></h6>
 
   <p>The transformation matrix is applied to coordinates when creating
   shapes and paths.</p> <!-- conformance criteria for actual drawing
   are described in the various sections below -->
 
+  <div class="impl">
+
   <p>When the context is created, the transformation matrix must
   initially be the identity transform. It may then be adjusted using
   the transformation methods.</p>
@@ -22134,6 +24025,54 @@
   tall is then drawn on the canvas, the actual result will be a
   square.</p>
 
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-scale">scale</code>(<var title="">x</var>, <var title="">y</var>)</dt>
+
+   <dd>
+
+    <p>Changes the transformation matrix to apply a scaling transformation with the given characteristics.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-rotate">rotate</code>(<var title="">angle</var>)</dt>
+
+   <dd>
+
+    <p>Changes the transformation matrix to apply a rotation transformation with the given characteristics.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-translate">translate</code>(<var title="">x</var>, <var title="">y</var>)</dt>
+
+   <dd>
+
+    <p>Changes the transformation matrix to apply a translation transformation with the given characteristics.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-transform">transform</code>(<var title="">m11</var>, <var title="">m12</var>, <var title="">m21</var>, <var title="">m22</var>, <var title="">dx</var>, <var title="">dy</var>)</dt>
+
+   <dd>
+
+    <p>Changes the transformation matrix to apply the matrix given by the arguments as described below.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-setTransform">setTransform</code>(<var title="">m11</var>, <var title="">m12</var>, <var title="">m21</var>, <var title="">m22</var>, <var title="">dx</var>, <var title="">dy</var>)</dt>
+
+   <dd>
+
+    <p>Changes the transformation matrix <em>to</em> the matrix given by the arguments as described below.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-context-2d-scale"><code>scale(<var
   title="">x</var>, <var title="">y</var>)</code></dfn> method must
   add the scaling transformation described by the arguments to the
@@ -22162,6 +24101,8 @@
   <var title="">dy</var>)</code></dfn> method must multiply the
   current transformation matrix with the matrix described by:</p>
 
+  </div>
+
   <table class="matrix">
    <tr>
     <td><var title="">m11</var></td>
@@ -22180,6 +24121,8 @@
    </tr>
   </table>
 
+  <div class="impl">
+
   <p>The <dfn
   title="dom-context-2d-setTransform"><code>setTransform(<var
   title="">m11</var>, <var title="">m12</var>, <var
@@ -22191,9 +24134,40 @@
   title="">m21</var>, <var title="">m22</var>, <var title="">dx</var>,
   <var title="">dy</var>)</code> method with the same arguments.</p>
 
+  </div>
 
+
   <h6>Compositing</h6>
 
+  <dl class="domintro">
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-globalAlpha">globalAlpha</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the current alpha value applied to rendering operations.</p>
+
+    <p>Can be set, to change the alpha value. Values outside of the
+    range 0.0 .. 1.0 are ignored.</p>
+
+   </dd>
+
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-globalCompositeOperation">globalCompositeOperation</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the current composition operation, from the list below.</p>
+
+    <p>Can be set, to change the composition operation. Unknown values
+    are ignored.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>All drawing operations are affected by the global compositing
   attributes, <code
   title="dom-context-2d-globalAlpha">globalAlpha</code> and <code
@@ -22224,6 +24198,8 @@
   and the destination image, <var title="">B</var>, is the current
   state of the bitmap.</p>
 
+  </div>
+
   <dl>
 
    <dt><dfn title="gcop-source-atop"><code>source-atop</code></dfn></dt>
@@ -22305,13 +24281,15 @@
    of the source image and destination image.</dd>
 
 
-   <dt><code><var title="">vendorName</var>-<var title="">operationName</var></code></dt>
+   <dt class="impl"><code><var title="">vendorName</var>-<var title="">operationName</var></code></dt>
 
-   <dd>Vendor-specific extensions to the list of composition operators
-   should use this syntax.</dd>
+   <dd class="impl">Vendor-specific extensions to the list of
+   composition operators should use this syntax.</dd>
 
   </dl>
 
+  <div class="impl">
+
   <p>These values are all case-sensitive &mdash; they must be used
   exactly as shown. User agents must not recognize values that are not
   a <span>case-sensitive</span> match for one of the values given
@@ -22336,9 +24314,45 @@
   attribute must initially have the value
   <code>source-over</code>.</p>
 
+  </div>
 
+
   <h6>Colors and styles</h6>
 
+  <dl class="domintro">
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-strokeStyle">strokeStyle</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the current style used for stroking shapes.</p>
+
+    <p>Can be set, to change the stroke style.</p>
+
+    <p>The style can be either a string containing a CSS color, or a
+    <code>CanvasGradient</code> or <code>CanvasPattern</code>
+    object. Invalid values are ignored.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-fillStyle">fillStyle</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the current style used for filling shapes.</p>
+
+    <p>Can be set, to change the fill style.</p>
+
+    <p>The style can be either a string containing a CSS color, or a
+    <code>CanvasGradient</code> or <code>CanvasPattern</code>
+    object. Invalid values are ignored.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-context-2d-strokeStyle"><code>strokeStyle</code></dfn>
   attribute represents the color or style to use for the lines around
@@ -22392,22 +24406,72 @@
   title="dom-context-2d-fillStyle">fillStyle</code> attributes must
   initially have the string value <code title="">#000000</code>.</p>
 
+  </div>
 
+  <hr>
+
   <p>There are two types of gradients, linear gradients and radial
   gradients, both represented by objects implementing the opaque
   <code>CanvasGradient</code> interface.</p>
 
   <p id="interpolation">Once a gradient has been created (see below),
   stops are placed along it to define how the colors are distributed
-  along the gradient. The color of the gradient at each stop is the
-  color specified for that stop. Between each such stop, the colors
-  and the alpha component must be linearly interpolated over the RGBA
-  space without premultiplying the alpha value to find the color to
-  use at that offset. Before the first stop, the color must be the
-  color of the first stop. After the last stop, the color must be the
-  color of the last stop. When there are no stops, the gradient is
-  transparent black.</p>
+  along the gradient. <span class="impl">The color of the gradient at
+  each stop is the color specified for that stop. Between each such
+  stop, the colors and the alpha component must be linearly
+  interpolated over the RGBA space without premultiplying the alpha
+  value to find the color to use at that offset. Before the first
+  stop, the color must be the color of the first stop. After the last
+  stop, the color must be the color of the last stop. When there are
+  no stops, the gradient is transparent black.</span></p>
 
+  <dl class="domintro">
+
+   <dt><var title="">gradient</var> . <code title="dom-canvasgradient-addColorStop">addColorStop</code>(<var title="">offset</var>, <var title="">color</var>)</dt>
+
+   <dd>
+
+    <p>Adds a color stop with the given color to the gradient at the
+    given offset. 0.0 is the offset at one end of the gradient, 1.0 is
+    the offset at the other end.</p>
+
+    <p>Throws an <code>INDEX_SIZE_ERR</code> exception if the offset
+    it out of range. Throws a <code>SYNTAX_ERR</code> exception if the
+    color cannot be parsed.</p>
+
+   </dd>
+
+   <dt><var title="">gradient</var> = <var title="">context</var> . <code title="dom-context-2d-createLinearGradient">createLinearGradient</code>(<var title="">x0</var>, <var title="">y0</var>, <var title="">x1</var>, <var title="">y1</var>)</dt>
+
+   <dd>
+
+    <p>Returns a <code>CanvasGradient</code> object that represents a
+    linear gradient that paints along the line given by the
+    coordinates represented by the arguments.</p>
+
+    <p>If any of the arguments are not finite numbers, throws a
+    <code>NOT_SUPPORTED_ERR</code> exception.</p>
+
+   </dd>
+
+   <dt><var title="">gradient</var> = <var title="">context</var> . <code title="dom-context-2d-createRadialGradient">createRadialGradient</code>(<var title="">x0</var>, <var title="">y0</var>, <var title="">r0</var>, <var title="">x1</var>, <var title="">y1</var>, <var title="">r1</var>)</dt>
+
+   <dd>
+
+    <p>Returns a <code>CanvasGradient</code> object that represents a
+    radial gradient that paints along the cone given by the circles
+    represented by the arguments.</p>
+
+    <p>If any of the arguments are not finite numbers, throws a
+    <code>NOT_SUPPORTED_ERR</code> exception. If either of the radii
+    are negative throws an <code>INDEX_SIZE_ERR</code> exception.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-canvasgradient-addColorStop"><code>addColorStop(<var
   title="">offset</var>, <var title="">color</var>)</code></dfn>
@@ -22449,12 +24513,10 @@
   title="dom-context-2d-transformation">current transformation
   matrix</span> when rendering.</p>
 
-  <p>If <span><var title="">x<sub>0</sub></var>&nbsp;=&nbsp;<var
-  title="">x<sub>1</sub></var></span> and <span><var
-  title="">y<sub>0</sub></var>&nbsp;=&nbsp;<var
-  title="">y<sub>1</sub></var></span>, then the linear gradient must
-  paint nothing.</p> <!-- XXX could make this paint the start color,
-  or the end color, or raise an exception -->
+  <p>If <span><var title="">x0</var>&nbsp;=&nbsp;<var
+  title="">x1</var></span> and <span><var
+  title="">y0</var>&nbsp;=&nbsp;<var title="">y1</var></span>, then
+  the linear gradient must paint nothing.</p>
 
   <p>The <dfn
   title="dom-context-2d-createRadialGradient"><code>createRadialGradient(<var
@@ -22553,10 +24615,44 @@
   must always return objects when passed valid arguments.</p>
 -->
 
+  </div>
 
+  <hr>
+
   <p>Patterns are represented by objects implementing the opaque
   <code>CanvasPattern</code> interface.</p>
 
+  <dl class="domintro">
+
+   <dt><var title="">pattern</var> = <var title="">context</var> . <code title="dom-context-2d-createPattern">createPattern</code>(<var title="">image</var>, <var title="">repetition</var>)</dt>
+
+   <dd>
+
+    <p>Returns a <code>CanvasPattern</code> object that uses the given image
+    and repeats in the direction(s) given by the <var
+    title="">repetition</var> argument.</p>
+
+    <p>The allowed values for <code title="">repeat</code> are <code
+    title="">repeat</code> (both directions), <code
+    title="">repeat-x</code> (horizontal only), <code
+    title="">repeat-y</code> (vertical only), and <code
+    title="">no-repeat</code> (neither). If the <var
+    title="">repetition</var> argument is empty or null, the value
+    <code title="">repeat</code> is used.</p>
+
+    <p>If the first argument isn't an image, throws a
+    <code>TYPE_MISMATCH_ERR</code> exception. If the image is not
+    fully decoded yet, or has no image data, throws an
+    <code>INVALID_STATE_ERR</code> exception. If the second argument
+    isn't one of the allowed values, throws a <code>SYNTAX_ERR</code>
+    exception.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>To create objects of this type, the <dfn
   title="dom-context-2d-createPattern"><code>createPattern(<var
   title="">image</var>, <var title="">repetition</var>)</code></dfn>
@@ -22623,10 +24719,68 @@
       canvas then using that canvas as the pattern.
   -->
 
+  </div>
 
 
+
   <h6>Line styles</h6>
 
+  <dl class="domintro">
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-lineWidth">lineWidth</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the current line width.</p>
+
+    <p>Can be set, to change the line width. Values that are not
+    finite values greater than zero are ignored.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-lineCap">lineCap</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the current line cap style.</p>
+
+    <p>Can be set, to change the line cap style.</p>
+
+    <p>The possible line cap styles are <code>butt</code>,
+    <code>round</code>, and <code>square</code>. Other values are
+    ignored.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-lineJoin">lineJoin</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the current line join style.</p>
+
+    <p>Can be set, to change the line join style.</p>
+
+    <p>The possible line join styles are <code>bevel</code>,
+    <code>round</code>, and <code>miter</code>. Other values are
+    ignored.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-miterLimit">miterLimit</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the current miter limit ratio.</p>
+
+    <p>Can be set, to change the miter limit ratio. Values that are
+    not finite values greater than zero are ignored.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-context-2d-lineWidth"><code>lineWidth</code></dfn>
   attribute gives the width of lines, in coordinate space units. On
@@ -22749,12 +24903,51 @@
 > allowing whatever behavior the graphics library has.)
   -->
 
+  </div>
 
+
   <h6><dfn>Shadows</dfn></h6>
 
   <p>All drawing operations are affected by the four global shadow
   attributes.</p>
 
+  <dl class="domintro">
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-shadowColor">shadowColor</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the current shadow color.</p>
+
+    <p>Can be set, to change the shadow color. Values that cannot be parsed as CSS colors are ignored.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-shadowOffsetX">shadowOffsetX</code> [ = <var title="">value</var> ]</dt>
+   <dt><var title="">context</var> . <code title="dom-context-2d-shadowOffsetY">shadowOffsetY</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the current shadow offset.</p>
+
+    <p>Can be set, to change the shadow offset. Values that are not finite numbers are ignored.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-shadowBlur">shadowBlur</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the current level of blur applied to shadows.</p>
+
+    <p>Can be set, to change the blur level. Values that are not finite numbers greater than or equal to zero are ignored.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-context-2d-shadowColor"><code>shadowColor</code></dfn>
   attribute sets the color of the shadow.</p>
@@ -22862,7 +25055,9 @@
 
   </ol>
 
+  </div>
 
+
   <h6>Simple shapes (rectangles)</h6>
 
   <p>There are three methods that immediately draw rectangles to the
@@ -22872,6 +25067,8 @@
   title="">w</var> and height <var title="">h</var> of the rectangle,
   respectively.</p>
 
+  <div class="impl">
+
   <p>The <span title="dom-context-2d-transformation">current
   transformation matrix</span> must be applied to the following four
   coordinates, which form the path that must then be closed to get the
@@ -22892,6 +25089,38 @@
   title="dom-context-2d-globalCompositeOperation">global composition
   operators</span>.</p>
 
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-clearRect">clearRect</code>(<var title="">x</var>, <var title="">y</var>, <var title="">w</var>, <var title="">h</var>)</dt>
+
+   <dd>
+
+    <p>Clears all pixels on the canvas in the given rectangle to transparent black.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-fillRect">fillRect</code>(<var title="">x</var>, <var title="">y</var>, <var title="">w</var>, <var title="">h</var>)</dt>
+
+   <dd>
+
+    <p>Paints the given rectangle onto the canvas, using the current fill style.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-strokeRect">strokeRect</code>(<var title="">x</var>, <var title="">y</var>, <var title="">w</var>, <var title="">h</var>)</dt>
+
+   <dd>
+
+    <p>Paints the box that outlines the given rectangle onto the canvas, using the current stroke style.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-context-2d-clearRect"><code>clearRect(<var
   title="">x</var>, <var title="">y</var>, <var title="">w</var>, <var
   title="">h</var>)</code></dfn> method must clear the pixels in the
@@ -22920,12 +25149,13 @@
   zero, then the method will draw a line instead (the path for the
   outline is just a straight line along the non-zero dimension).</p>
 
+  </div>
 
+
   <h6>Complex shapes (paths)</h6>
 
   <p>The context always has a current path. There is only one current
-  path, it is not part of the <span title="dom-context-2d-">drawing
-  state</span>.</p>
+  path, it is not part of the <span>drawing state</span>.</p>
 
   <p>A <dfn>path</dfn> has a list of zero or more subpaths. Each
   subpath consists of a list of one or more points, connected by
@@ -22935,6 +25165,129 @@
   straight line. Subpaths with fewer than two points are ignored when
   painting the path.</p>
 
+  <dl class="domintro">
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-beginPath">beginPath</code>()</dt>
+
+   <dd>
+
+    <p>Resets the current path.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-moveTo">moveTo</code>(<var title="">x</var>, <var title="">y</var>)</dt>
+
+   <dd>
+
+    <p>Creates a new subpath with the given point.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-closePath">closePath</code>()</dt>
+
+   <dd>
+
+    <p>Marks the current subpath as closed, and starts a new subpath with a point the same as the start and end of the newly closed subpath.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-lineTo">lineTo</code>(<var title="">x</var>, <var title="">y</var>)</dt>
+
+   <dd>
+
+    <p>Adds the given point to the current subpath, connected to the previous one by a straight line.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-quadraticCurveTo">quadraticCurveTo</code>(<var title="">cpx</var>, <var title="">cpy</var>, <var title="">x</var>, <var title="">y</var>)</dt>
+
+   <dd>
+
+    <p>Adds the given point to the current path, connected to the previous one by a quadratic B&eacute;zier curve with the given control point.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-bezierCurveTo">bezierCurveTo</code>(<var title="">cpx</var>, <var title="">cpy</var>, <var title="">x</var>, <var title="">y</var>)</dt>
+
+   <dd>
+
+    <p>Adds the given point to the current path, connected to the previous one by a cubic B&eacute;zier curve with the given control points.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-arcTo">arcTo</code>(<var title="">x1</var>, <var title="">y1</var>, <var title="">x2</var>, <var title="">y2</var>, <var title="">radius</var>)</dt>
+
+   <dd>
+
+    <p>Adds a point to the current path, connected to the previous one
+    by a straight line, then adds a second point to the current path,
+    connected to the previous one by an arc whose properties are
+    described by the arguments.</p>
+
+    <p>Throws an <code>INDEX_SIZE_ERR</code> exception if the given
+    radius is negative.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-arc">arc</code>(<var title="">x</var>, <var title="">y</var>, <var title="">radius</var>, <var title="">startAngle</var>, <var title="">endAngle</var>, <var title="">anticlockwise</var>)</dt>
+
+   <dd>
+
+    <p>Adds points to the subpath such that the arc described by the
+    circumference of the circle described by the arguments, starting
+    at the given start angle and ending at the given end angle, going
+    in the given direction, is added the the path, connected to the
+    previous point by a straight line.</p>
+
+    <p>Throws an <code>INDEX_SIZE_ERR</code> exception if the given
+    radius is negative.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-rect">rect</code>(<var title="">x</var>, <var title="">y</var>, <var title="">w</var>, <var title="">h</var>)</dt>
+
+   <dd>
+
+    <p>Adds a new closed subpath to the path, representing the given rectangle.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-fill">fill</code>()</dt>
+
+   <dd>
+
+    <p>Fills the subpaths with the current fill style.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-stroke">stroke</code>()</dt>
+
+   <dd>
+
+    <p>Strokes the subpaths with the current stroke style.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-clip">clip</code>()</dt>
+
+   <dd>
+
+    <p>Further constrains the clipping region to the given path.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-isPointInPath">isPointInPath</code>(<var title="">x</var>, <var title="">y</var>)</dt>
+
+   <dd>
+
+    <p>Returns true if the given point is in the current path.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>Initially, the context's path must have zero subpaths.</p>
 
   <p>The points and lines added to the path by these methods must be
@@ -23219,9 +25572,87 @@
   path. If either of the arguments is infinite or NaN, then the method
   must return false.</p>
 
+  </div>
 
+
   <h6>Text</h6> <!-- a v3 feature -->
 
+  <dl class="domintro">
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-font">font</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the current font settings.</p>
+
+    <p>Can be set, to change the font. The syntax is the same as for
+    the CSS 'font' property; values that cannot be parsed as CSS font
+    values are ignored.</p>
+
+    <p>Relative keywords and lengths are computed relative to the
+    default font, 10px sans-serif.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-textAlign">textAlign</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the current text alignment settings.</p>
+
+    <p>Can be set, to change the alignment. The possible values are
+    <code title="">start</code>, <code title="">end</code>, <code
+    title="">left</code>, <code title="">right</code>, and <code
+    title="">center</code>. The default is <code
+    title="">start</code>. Other values are ignored.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-textBaseline">textBaseline</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the current baseline alignment settings.</p>
+
+    <p>Can be set, to change the baseline alignment. The possible
+    values and their meanings are given below. The default is <code
+    title="">alphabetic</code>. Other values are ignored.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-fillText">fillText</code>(<var title="">text</var>, <var title="">x</var>, <var title="">y</var> [, <var title="">maxWidth</var> ] )</dt>
+   <dt><var title="">context</var> . <code title="dom-context-2d-strokeText">strokeText</code>(<var title="">text</var>, <var title="">x</var>, <var title="">y</var> [, <var title="">maxWidth</var> ] )</dt>
+
+   <dd>
+
+    <p>Fills or strokes (respectively) the given text at the given
+    position. If a maximum width is provided, the text will be scaled
+    to fit that width if necessary.</p>
+
+   </dd>
+
+   <dt><var title="">metrics</var> = <var title="">context</var> . <code title="dom-context-2d-measureText">measureText</code>(<var title="">text</var>)</dt>
+
+   <dd>
+
+    <p>Returns a <code>TextMetrics</code> object with the metrics of the given text in the current font.</p>
+
+   </dd>
+
+   <dt><var title="">metrics</var> . <code title="dom-textmetrics-width">width</code></dt>
+
+   <dd>
+
+    <p>Returns the advance width of the text that was passed to the
+    <code title="dom-context-2d-measureText">measureText()</code>
+    method.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-context-2d-font"><code>font</code></dfn> DOM
   attribute, on setting, must be parsed the same way as the 'font'
   property of CSS (but without supporting property-independent
@@ -23288,6 +25719,8 @@
   title="dom-context-2d-textBaseline">textBaseline</code> attribute
   must initially have the value <code title="">alphabetic</code>.</p>
 
+  </div>
+
   <p>The <code title="dom-context-2d-textBaseline">textBaseline</code>
   attribute's allowed keywords correspond to alignment points in the
   font:</p>
@@ -23327,6 +25760,8 @@
 
   </dl>
 
+  <div class="impl">
+
   <p>The <dfn
   title="dom-context-2d-fillText"><code>fillText()</code></dfn> and
   <dfn
@@ -23708,12 +26143,15 @@
   <!-- see also: http://www.w3.org/TR/SVG11/text.html#TextpathLayoutRules -->
   <!-- see also: http://developer.mozilla.org/en/docs/Drawing_text_using_a_canvas -->
 
+  </div>
+
   <p class="note">A future version of the 2D context API may provide a
   way to render fragments of documents, rendered using CSS, straight
   to the canvas. This would be provided in preference to a dedicated
   way of doing multiline layout.</p>
 
 
+
   <h6>Images</h6>
 
   <p>To draw images onto the canvas, the <dfn
@@ -23733,6 +26171,22 @@
   an <code>HTMLVideoElement</code> for the <var title="">image</var>
   argument.</p>
 
+  <dl class="domintro">
+
+   <dt><var title="">context</var> . <code title="">drawImage</code>(<var title="">image</var>, <var title="">dx</var>, <var title="">dy</var>)</dt>
+   <dt><var title="">context</var> . <code title="">drawImage</code>(<var title="">image</var>, <var title="">dx</var>, <var title="">dy</var>, <var title="">dw</var>, <var title="">dh</var>)</dt>
+   <dt><var title="">context</var> . <code title="">drawImage</code>(<var title="">image</var>, <var title="">sx</var>, <var title="">sy</var>, <var title="">sw</var>, <var title="">sh</var>, <var title="">dx</var>, <var title="">dy</var>, <var title="">dw</var>, <var title="">dh</var>)</dt>
+
+   <dd>
+
+    <p>Draws the given image onto the canvas. The arguments are interpreted as per the diagram below.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>If not specified, the <var title="">dw</var> and <var
   title="">dh</var> arguments must default to the values of <var
   title="">sw</var> and <var title="">sh</var>, interpreted such that
@@ -23802,10 +26256,14 @@
   title="dom-context-2d-transformation">current transformation
   matrix</span> to the points of the destination rectangle.</p>
 
+  </div>
+
   <p><img src="images/drawImage.png" alt=""></p> <!-- no alt="" text
   since the image is just repeating what was stated in the previous
   paragraph. -->
 
+  <div class="impl">
+
   <p class="note">When a canvas is drawn onto itself, the drawing
   model requires the source to be copied before the image is drawn
   back onto the canvas, so it is possible to copy parts of a canvas
@@ -23834,10 +26292,75 @@
   of the target element, not the rendered image (e.g. height/width
   attributes don't affect it -->
 
+  </div>
 
 
+
   <h6><dfn>Pixel manipulation</dfn></h6>
 
+  <dl class="domintro">
+
+   <dt><var title="">imagedata</var> = <var title="">context</var> . <code title="dom-context-2d-createImageData">createImageData</code>(<var title="">sw</var>, <var title="">sh</var>)</dt>
+
+   <dd>
+
+    <p>Returns an <code>ImageData</code> object with the given
+    dimensions in CSS pixels (which might map to a different number of
+    actual device pixels exposed by the object itself). All the pixels
+    in the returned object are transparent black.</p>
+
+   </dd>
+
+   <dt><var title="">imagedata</var> = <var title="">context</var> . <code title="dom-context-2d-getImageData">getImageData</code>(<var title="">sx</var>, <var title="">sy</var>, <var title="">sw</var>, <var title="">sh</var>)</dt>
+
+   <dd>
+
+    <p>Returns an <code>ImageData</code> object containing the image
+    data for the given rectangle of the canvas.</p>
+
+    <p>Throws a <code>NOT_SUPPORTED_ERR</code> exception if any of the
+    arguments are not finite. Throws an <code>INDEX_SIZE_ERR</code>
+    exception if the either of the width or height arguments are
+    zero.</p>
+
+   </dd>
+
+   <dt><var title="">imagedata</var> . <code title="dom-imagedata-width">width</code></dt>
+   <dt><var title="">imagedata</var> . <code title="dom-imagedata-height">height</code></dt>
+
+   <dd>
+
+    <p>Returns the actual dimensions of the data in the <code>ImageData</code> object, in device pixels.</p>
+
+   </dd>
+
+   <dt><var title="">imagedata</var> . <code title="dom-imagedata-data">data</code></dt>
+
+   <dd>
+
+    <p>Returns the one-dimensional array containing the data.</p>
+
+   </dd>
+
+   <dt><var title="">context</var> . <code title="dom-context-2d-putImageData">putImageData</code>(<var title="">imagedata</var>, <var title="">dx</var>, <var title="">dy</var> [, <var title="">dirtyX</var>, <var title="">dirtyY</var>, <var title="">dirtyWidth</var>, <var title="">dirtyHeight</var> ])</dt>
+
+   <dd>
+
+    <p>Paints the data from the given <code>ImageData</code> object
+    onto the canvas. If a dirty rectangle is provided, only the pixels
+    from that rectangle are painted.</p>
+
+    <p>If the first argument isn't an <code>ImageData</code> object,
+    throws a <code>TYPE_MISMATCH_ERR</code> exception. Throws a
+    <code>NOT_SUPPORTED_ERR</code> exception if any of the other
+    arguments are not finite.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-context-2d-createImageData"><code>createImageData(<var
   title="">sw</var>, <var title="">sh</var>)</code></dfn> method must
@@ -24089,6 +26612,8 @@
   title="dom-context-2d-putImageData">putImageData()</code>
   methods.</p>
 
+  </div>
+
   <div class="example">
 
    <p>The data returned by <code
@@ -24185,6 +26710,8 @@
   </div>
 
 
+  <div class="impl">
+
   <h6>Drawing model</h6>
 
   <p>When a shape or image is painted, user agents must follow these
@@ -24222,8 +26749,10 @@
 
   <!-- XXX add xrefs in the list above -->
 
+  </div>
 
 
+
 <!--
   <h5 id="3d">The 3D context</h5>
 
@@ -24232,6 +26761,7 @@
 
 
 
+  <div class="impl">
 
   <h5>Color spaces and color correction</h5>
 
@@ -24276,7 +26806,11 @@
   title="dom-canvas-toDataURL">toDataURL()</code> method to the
   canvas, given the appropriate dimensions, has no visible effect.</p>
 
+  </div>
 
+
+  <div class="impl">
+
   <h5>Security with <code>canvas</code> elements</h5>
 
   <p><strong>Information leakage</strong> can occur if scripts from
@@ -24352,8 +26886,10 @@
   title="attr-canvas-height">height</code> attributes doesn't reset
   the <i>origin-clean</i> flag.</p>
 
+  </div>
 
 
+
   <h4>The <dfn><code>map</code></dfn> element</h4>
 
   <dl class="element">
@@ -24387,6 +26923,28 @@
   title="attr-id">id</code> attribute is also specified, both
   attributes must have the same value.</p>
 
+  <dl class="domintro">
+
+   <dt><var title="">map</var> . <code title="dom-map-areas">areas</code></dt>
+
+   <dd>
+
+    <p>Returns an <code>HTMLCollection</code> of the <code>area</code> elements in the <code>map</code>.</p>
+
+   </dd>
+
+   <dt><var title="">map</var> . <code title="dom-map-images">images</code></dt>
+
+   <dd>
+
+    <p>Returns an <code>HTMLCollection</code> of the <code>img</code> and <code>object</code> elements that use the <code>map</code>.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-map-areas"><code>areas</code></dfn> attribute
   must return an <code>HTMLCollection</code> rooted at the
   <code>map</code> element, whose filter matches only
@@ -24402,9 +26960,11 @@
   <p>The DOM attribute <dfn
   title="dom-map-name"><code>name</code></dfn> must
   <span>reflect</span> the content attribute of the same name.</p>
-  
 
+  </div>
 
+
+
   <h4>The <dfn><code>area</code></dfn> element</h4>
 
   <dl class="element">
@@ -24477,42 +27037,42 @@
   <p>The <dfn title="attr-area-shape"><code>shape</code></dfn>
   attribute is an <span>enumerated attribute</span>. The following
   table lists the keywords defined for this attribute. The states
-  given in the first cell of the rows with keywords give the
-  states to which those keywords map. Some of the keywords are
-  non-conforming, as noted in the last column.</p>
+  given in the first cell of the rows with keywords give the states to
+  which those keywords map. <span class="impl">Some of the keywords
+  are non-conforming, as noted in the last column.</span></p>
 
   <table>
    <thead>
     <tr>
      <th>State
      <th>Keywords
-     <th>Notes
+     <th class="impl">Notes
    <tbody>
     <tr>
      <td rowspan=2><span title="attr-area-shape-circle">Circle state</span>
-     <td><dfn title="attr-area-shape-keyword-circ"><code>circ</code></dfn>
-     <td>Non-conforming
-    <tr>
      <td><dfn title="attr-area-shape-keyword-circle"><code>circle</code></dfn>
-     <td>
+     <td class="impl">
     <tr>
+     <td class="impl"><dfn title="attr-area-shape-keyword-circ"><code>circ</code></dfn>
+     <td class="impl">Non-conforming
+    <tr>
      <td><span title="attr-area-shape-default">Default state</span>
      <td><dfn title="attr-area-shape-keyword-default"><code>default</code></dfn>
-     <td>
+     <td class="impl">
     <tr>
      <td rowspan=2><span title="attr-area-shape-poly">Polygon state</span>
      <td><dfn title="attr-area-shape-keyword-poly"><code>poly</code></dfn>
-     <td>
+     <td class="impl">
     <tr>
-     <td><dfn title="attr-area-shape-keyword-polygon"><code>polygon</code></dfn>
-     <td>Non-conforming
+     <td class="impl"><dfn title="attr-area-shape-keyword-polygon"><code>polygon</code></dfn>
+     <td class="impl">Non-conforming
     <tr>
      <td rowspan=2><span title="attr-area-shape-rect">Rectangle state</span>
      <td><dfn title="attr-area-shape-keyword-rect"><code>rect</code></dfn>
-     <td>
+     <td class="impl">
     <tr>
-     <td><dfn title="attr-area-shape-keyword-rectangle"><code>rectangle</code></dfn>
-     <td>Non-conforming
+     <td class="impl"><dfn title="attr-area-shape-keyword-rectangle"><code>rectangle</code></dfn>
+     <td class="impl">Non-conforming
   </table>
 
   <p>The attribute may be omitted. The <i>missing value default</i> is
@@ -24522,8 +27082,9 @@
   attribute must, if specified, contain a <span>valid list of
   integers</span>. This attribute gives the coordinates for the shape
   described by the <code title="attr-area-shape">shape</code>
-  attribute. The processing for this attribute is described as part of
-  the <span>image map</span> processing model.</p>
+  attribute. <span title="impl">The processing for this attribute is
+  described as part of the <span>image map</span> processing
+  model.</span></p>
 
   <!-- v2: It was suggested by John S. Urban that coords should
   support percentages as well as pixels, so that one could use the
@@ -24564,6 +27125,8 @@
   right side, and the distance from the top edge to the bottom side,
   all in CSS pixels.</p>
 
+  <div class="impl">
+
   <p>When user agents allow users to <span title="following
   hyperlinks">follow hyperlinks</span> created using the
   <code>area</code> element, as described in the next section, the
@@ -24577,6 +27140,8 @@
   indicate to the user the likely nature of the target resource before
   the user follows the link.</p>
 
+  </div>
+
   <p>The <code title="attr-hyperlink-target">target</code>, <code
   title="attr-hyperlink-ping">ping</code>, <code
   title="attr-hyperlink-rel">rel</code>, <code
@@ -24586,6 +27151,8 @@
   if the <code title="attr-hyperlink-href">href</code> attribute is
   not present.</p>
 
+  <div class="impl">
+
   <p>The <span>activation behavior</span> of <code>area</code>
   elements is to run the following steps:</p>
 
@@ -24629,6 +27196,7 @@
   <span>reflect</span> the <code title="attr-hyperlink-rel">rel</code>
   content attribute.</p>
 
+  </div>
 
 
   <h4 id="image-maps">Image maps</h4>
@@ -24640,8 +27208,12 @@
   http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C%21DOCTYPE%20html%3E%0D%0A%3Cp%3E%3Cimg%20src%3D%22http%3A//hixie.ch/resources/images/astrophy/128%22%20usemap%3D%23a%3E%0D%0A%3Cmap%20name%3Da%3E%3Carea%20shape%3Dcirc%20coords%3D%2220%2C20%2C10%25%22%20href%3D%23%3E%3Carea%20shape%3Dcirc%20coords%3D%2220%2C20%2C10%22%20href%3D%23%3E%3C/map%3E%0D%0A%3Cscript%3Edocument.write%28document.getElementsByTagName%28%27area%27%29%5B0%5D.coords%29%3C/script%3E
   -->
 
+  <div class="impl">
+
   <h5>Authoring</h5>
 
+  </div>
+
   <p>An <dfn>image map</dfn> allows geometric areas on an image to be
   associated with <span title="hyperlink">hyperlinks</span>.</p>
 
@@ -24680,6 +27252,7 @@
 
   </div>
 
+  <div class="impl">
 
   <h5>Processing model</h5>
 
@@ -24943,8 +27516,10 @@
   user agent must act as if it had rerun the algorithms for image
   maps.</p>
 
+  </div>
 
 
+
   <h4>MathML</h4>
 
   <p>The <code>math</code> element from the <span>MathML
@@ -24952,6 +27527,8 @@
   category for the purposes of the content models in this
   specification.</p>
 
+  <div class="impl">
+
   <!-- apparently we get to define error handling, so: -->
 
   <p>User agents must handle text other than <span>inter-element
@@ -24972,18 +27549,24 @@
   provide a way to export any MathML fragment as a
   namespace-well-formed XML fragment.</p>
 
+  </div>
 
+
   <h4>SVG</h4>
 
   <p>The <code>svg</code> element from the <span>SVG namespace</span>
   falls into the <span>embedded content</span> category for the
   purposes of the content models in this specification.</p>
 
+  <div class="impl">
+
   <p>To enable authors to use SVG tools that only accept SVG in its
   XML form, interactive HTML user agents are encouraged to provide a
   way to export any SVG fragment as a namespace-well-formed XML
   fragment.</p>
 
+  </div>
+
   <p>When the SVG <code>foreignObject</code> element contains elements
   from the HTML namespace, such elements must all be <span>flow
   content</span> and must not be interleaved with non-HTML
@@ -24992,7 +27575,7 @@
 
   <h4><dfn>Dimension attributes</dfn></h4>
 
-  <p><strong>Author requirements:</strong> The <dfn
+  <p><strong class="impl">Author requirements:</strong> The <dfn
   title="attr-dim-width"><code>width</code></dfn> and <dfn
   title="attr-dim-height"><code>height</code></dfn> attributes on
   <code>img</code>, <code>iframe</code>, <code>embed</code>,
@@ -25038,6 +27621,8 @@
   <p class="note">Basically, the dimension attributes can't be used to
   stretch the image.</p>
 
+  <div class="impl">
+
   <p><strong>User agent requirements:</strong> User agents are
   expected to use these attributes <a href="#dimRendering">as hints
   for the rendering</a>.</p>
@@ -25049,6 +27634,7 @@
   respective content attributes of the same name.</p> <!-- XXX check
   that this is defined right in the face of percentages -->
 
+  </div>
 
 
 
@@ -25105,9 +27691,13 @@
   more than one dimension, in the form of a <span
   title="concept-table">table</span>.</p>
 
+  <div class="impl">
+
   <p>The <code>table</code> element takes part in the <span>table
   model</span>.</p>
 
+  </div>
+
   <p>Tables must not be used as layout aids. Historically, some Web
   authors have misused tables in HTML as a way to control their page
   layout. This usage is non-conforming, because tools attempting to
@@ -25125,6 +27715,14 @@
   contain data and which are merely being used for layout. This
   specification does not define a precise heuristic.</p>
 
+  <p>Tables have rows and columns given by their descendants. A table
+  must not have an empty row or column<span title="impl">, as
+  described in the description of the <span>table
+  model</span></span>. <!-- conformance criteria for detecting this
+  are in the table model section --></p>
+
+  <div class="impl">
+
   <p>If a <code>table</code> element has a <code
   title="attr-table-summary">summary</code> attribute, the user agent
   may report the contents of that attribute to the user.</p>
@@ -25133,6 +27731,97 @@
   <code>caption</code> element instead of the <code
   title="attr-table-summary">summary</code> attribute.</p>
 
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">table</var> . <code title="dom-table-caption">caption</code> [ = <var title="">value</var> ]</dt>
+   <dd>
+    <p>Returns the table's <code>caption</code> element.</p>
+    <p>Can be set, to replace the <code>caption</code> element. If the
+    new value is not a <code>caption</code> element, throws a
+    <code>HIERARCHY_REQUEST_ERR</code> exception.</p>
+   <dd>
+
+   <dt><var title="">caption</var> = <var title="">table</var> . <code title="dom-table-createCaption">createCaption</code>()</dt>
+   <dd>
+    <p>Ensures the table has a <code>caption</code> element, and returns it.</p>
+   <dd>
+
+   <dt><var title="">table</var> . <code title="dom-table-deleteCaption">deleteCaption</code>()</dt>
+   <dd>
+    <p>Ensures the table does not have a <code>caption</code> element.</p>
+   <dd>
+
+   <dt><var title="">table</var> . <code title="dom-table-tHead">tHead</code> [ = <var title="">value</var> ]</dt>
+   <dd>
+    <p>Returns the table's <code>thead</code> element.</p>
+    <p>Can be set, to replace the <code>thead</code> element. If the
+    new value is not a <code>thead</code> element, throws a
+    <code>HIERARCHY_REQUEST_ERR</code> exception.</p>
+   <dd>
+
+   <dt><var title="">thead</var> = <var title="">table</var> . <code title="dom-table-createTHead">createTHead</code>()</dt>
+   <dd>
+    <p>Ensures the table has a <code>thead</code> element, and returns it.</p>
+   <dd>
+
+   <dt><var title="">table</var> . <code title="dom-table-deleteTHead">deleteTHead</code>()</dt>
+   <dd>
+    <p>Ensures the table does not have a <code>thead</code> element.</p>
+   <dd>
+
+   <dt><var title="">table</var> . <code title="dom-table-tFoot">tFoot</code> [ = <var title="">value</var> ]</dt>
+   <dd>
+    <p>Returns the table's <code>tfoot</code> element.</p>
+    <p>Can be set, to replace the <code>tfoot</code> element. If the
+    new value is not a <code>tfoot</code> element, throws a
+    <code>HIERARCHY_REQUEST_ERR</code> exception.</p>
+   <dd>
+
+   <dt><var title="">tfoot</var> = <var title="">table</var> . <code title="dom-table-createTFoot">createTFoot</code>()</dt>
+   <dd>
+    <p>Ensures the table has a <code>tfoot</code> element, and returns it.</p>
+   <dd>
+
+   <dt><var title="">table</var> . <code title="dom-table-deleteTFoot">deleteTFoot</code>()</dt>
+   <dd>
+    <p>Ensures the table does not have a <code>tfoot</code> element.</p>
+   <dd>
+
+   <dt><var title="">table</var> . <code title="dom-table-tBodies">tBodies</code></dt>
+   <dd>
+    <p>Returns an <code>HTMLCollection</code> of the <code>tbody</code> elements of the table.</p>
+   <dd>
+
+   <dt><var title="">tbody</var> = <var title="">table</var> . <code title="dom-table-createTBody">createTBody</code>()</dt>
+   <dd>
+    <p>Creates a <code>tbody</code> element, inserts it into the table, and returns it.</p>
+   <dd>
+
+   <dt><var title="">table</var> . <code title="dom-table-rows">rows</code></dt>
+   <dd>
+    <p>Returns an <code>HTMLCollection</code> of the <code>tr</code> elements of the table.</p>
+   <dd>
+
+   <dt><var title="">tr</var> = <var title="">table</var> . <code title="dom-table-insertRow">insertRow</code>(<var title="">index</var>)</dt>
+   <dd>
+    <p>Creates a <code>tr</code> element, along with a <code>tbody</code> if required, inserts them into the table at the position given by the argument, and returns the <code>tr</code>.</p>
+    <p>The position is relative to the rows in the table. The index &#x2212;1 is equivalent to inserting at the end of the table.</p>
+    <p>If the given position is less than &#x2212;1 or greater than the number of rows, throws an <code>INDEX_SIZE_ERR</code> exception.</p>
+   <dd>
+
+   <dt><var title="">table</var> . <code title="dom-table-deleteRow">deleteRow</code>(<var title="">index</var>)</dt>
+   <dd>
+    <p>Removes the <code>tr</code> element with the given position in the table.</p>
+    <p>The position is relative to the rows in the table. The index &#x2212;1 is equivalent to deleting the last row of the table.</p>
+    <p>If the given position is less than &#x2212;1 or greater than the index of the last row, or if there are no rows, throws an <code>INDEX_SIZE_ERR</code> exception.</p>
+   <dd>
+
+  </dl>
+
+  <div class="impl"> 
+
   <p>The <dfn title="dom-table-caption"><code>caption</code></dfn> DOM
   attribute must return, on getting, the first <code>caption</code>
   element child of the <code>table</code> element, if any, or null
@@ -25318,7 +28007,9 @@
 
   </ol>
 
+  </div>
 
+
   <h4>The <dfn><code>caption</code></dfn> element</h4>
 
   <dl class="element">
@@ -25338,9 +28029,13 @@
   <code>table</code> that is its parent, if it has a parent and that
   is a <code>table</code> element.</p>
 
+  <div class="impl">
+
   <p>The <code>caption</code> element takes part in the <span>table
   model</span>.</p>
 
+  </div>
+
   <p>The <code>caption</code> element should be included for any table
   where the reader might have difficulty understanding the content or
   where the table's structure would not be obvious to the user of a
@@ -25438,6 +28133,8 @@
   specified, whose value must be a <span>valid non-negative
   integer</span> greater than zero.</p>
 
+  <div class="impl">
+
   <p>The <code>colgroup</code> element and its <code
   title="attr-colgroup-span">span</code> attribute take part in the
   <span>table model</span>.</p>
@@ -25447,7 +28144,9 @@
   of the same name. The value must be <span>limited to only positive
   non-zero numbers</span>.</p>
 
+  </div>
 
+
   <h4>The <dfn><code>col</code></dfn> element</h4>
 
   <dl class="element">
@@ -25473,15 +28172,18 @@
   <p>If a <code>col</code> element has a parent and that is a
   <code>colgroup</code> element that itself has a parent that is a
   <code>table</code> element, then the <code>col</code> element
-  <span>represents</span> one or more <span title="concept-column">columns</span>
-  in the <span title="concept-column-group">column group</span>
-  represented by that <code>colgroup</code>.</p>
+  <span>represents</span> one or more <span
+  title="concept-column">columns</span> in the <span
+  title="concept-column-group">column group</span> represented by that
+  <code>colgroup</code>.</p>
 
   <p>The element may have a <dfn
   title="attr-col-span"><code>span</code></dfn> content attribute
   specified, whose value must be a <span>valid non-negative
   integer</span> greater than zero.</p>
 
+  <div class="impl">
+
   <p>The <code>col</code> element and its <code
   title="attr-col-span">span</code> attribute take part in the
   <span>table model</span>.</p>
@@ -25491,7 +28193,9 @@
   same name. The value must be <span>limited to only positive non-zero
   numbers</span>.</p>
 
+  </div>
 
+
   <h4>The <dfn><code>tbody</code></dfn> element</h4>
 
   <dl class="element">
@@ -25525,9 +28229,38 @@
   the parent <code>table</code> element, if the <code>tbody</code>
   element has a parent and it is a <code>table</code>.</p>
 
+  <div class="impl">
+
   <p>The <code>tbody</code> element takes part in the <span>table
   model</span>.</p>
 
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">tbody</var> . <code title="dom-tbody-rows">rows</code></dt>
+   <dd>
+    <p>Returns an <code>HTMLCollection</code> of the <code>tr</code> elements of the table section.</p>
+   <dd>
+
+   <dt><var title="">tr</var> = <var title="">tbody</var> . <code title="dom-tbody-insertRow">insertRow</code>( [ <var title="">index</var> ] )</dt>
+   <dd>
+    <p>Creates a <code>tr</code> element, inserts it into the table section at the position given by the argument, and returns the <code>tr</code>.</p>
+    <p>The position is relative to the rows in the table section. The index &#x2212;1, which is the default if the argument is omitted, is equivalent to inserting at the end of the table section.</p>
+    <p>If the given position is less than &#x2212;1 or greater than the number of rows, throws an <code>INDEX_SIZE_ERR</code> exception.</p>
+   <dd>
+
+   <dt><var title="">tbody</var> . <code title="dom-tbody-deleteRow">deleteRow</code>(<var title="">index</var>)</dt>
+   <dd>
+    <p>Removes the <code>tr</code> element with the given position in the table section.</p>
+    <p>The position is relative to the rows in the table section. The index &#x2212;1 is equivalent to deleting the last row of the table section.</p>
+    <p>If the given position is less than &#x2212;1 or greater than the index of the last row, or if there are no rows, throws an <code>INDEX_SIZE_ERR</code> exception.</p>
+   <dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-tbody-rows"><code>rows</code></dfn> attribute
   must return an <code>HTMLCollection</code> rooted at the element,
   whose filter matches only <code>tr</code> elements that are children
@@ -25565,6 +28298,7 @@
   title="dom-tbody-rows">rows</code> collection, the method must
   instead raise an <code>INDEX_SIZE_ERR</code> exception.</p>
 
+  </div>
 
 
   <h4>The <dfn><code>thead</code></dfn> element</h4>
@@ -25595,10 +28329,14 @@
   <code>thead</code> element has a parent and it is a
   <code>table</code>.</p>
 
+  <div class="impl">
+
   <p>The <code>thead</code> element takes part in the <span>table
   model</span>.</p>
 
+  </div>
 
+
   <h4>The <dfn><code>tfoot</code></dfn> element</h4>
 
   <dl class="element">
@@ -25631,10 +28369,14 @@
   <code>tfoot</code> element has a parent and it is a
   <code>table</code>.</p>
 
+  <div class="impl">
+
   <p>The <code>tfoot</code> element takes part in the <span>table
   model</span>.</p>
 
+  </div>
 
+
   <h4>The <dfn><code>tr</code></dfn> element</h4>
 
   <dl class="element">
@@ -25659,7 +28401,7 @@
   readonly attribute long <span title="dom-tr-sectionRowIndex">sectionRowIndex</span>;
   readonly attribute <span>HTMLCollection</span> <span title="dom-tr-cells">cells</span>;
   <span>HTMLElement</span> <span title="dom-tr-insertCell">insertCell</span>([Optional] in long index);
-  void <span>deleteCell</span>(in long index);
+  void <span title="dom-tr-deleteCell">deleteCell</span>(in long index);
 };</pre>
    </dd>
   </dl>
@@ -25669,9 +28411,81 @@
   title="concept-cell">cells</span> in a <span
   title="concept-table">table</span>.</p>
 
+  <div class="impl">
+
   <p>The <code>tr</code> element takes part in the <span>table
   model</span>.</p>
 
+  </div>
+
+  <dl class="intro">
+
+   <dt><var title="">tr</var> . <code title="dom-tr-rowIndex">rowIndex</code></dt>
+
+   <dd>
+
+    <p>Returns the position of the row in the table's <code
+    title="dom-table-rows">rows</code> list.</p>
+
+    <p>Returns &#x2212;1 if the element isn't in a table.</p>
+
+   </dd>
+
+   <dt><var title="">tr</var> . <code title="dom-tr-sectionRowIndex">sectionRowIndex</code></dt>
+
+   <dd>
+
+    <p>Returns the position of the row in the table section's <code
+    title="dom-tbody-rows">rows</code> list.</p>
+
+    <p>Returns &#x2212;1 if the element isn't in a table section.</p>
+
+   </dd>
+
+   <dt><var title="">tr</var> . <code title="dom-tr-cells">cells</code></dt>
+   <dd>
+
+    <p>Returns an <code>HTMLCollection</code> of the <code>td</code> and <code>th</code> elements of the row.</p>
+
+   <dd>
+
+   <dt><var title="">cell</var> = <var title="">tr</var> . <code title="dom-tr-insertCell">insertCell</code>( [ <var title="">index</var> ] )</dt>
+
+   <dd>
+
+    <p>Creates a <code>td</code> element, inserts it into the table
+    row at the position given by the argument, and returns the
+    <code>td</code>.</p>
+
+    <p>The position is relative to the cells in the row. The
+    index &#x2212;1, which is the default if the argument is omitted,
+    is equivalent to inserting at the end of the row.</p>
+
+    <p>If the given position is less than &#x2212;1 or greater than
+    the number of cells, throws an <code>INDEX_SIZE_ERR</code>
+    exception.</p>
+
+   </dd>
+
+   <dt><var title="">tr</var> . <code title="dom-tr-deleteCell">deleteCell</code>(<var title="">index</var>)</dt>
+   <dd>
+
+    <p>Removes the <code>td</code> or <code>th</code> element with the
+    given position in the row.</p>
+
+    <p>The position is relative to the cells in the row. The index
+    &#x2212;1 is equivalent to deleting the last cell of the row.</p>
+
+    <p>If the given position is less than &#x2212;1 or greater than
+    the index of the last cell, or if there are no cells, throws an
+    <code>INDEX_SIZE_ERR</code> exception.</p>
+
+   <dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-tr-rowIndex"><code>rowIndex</code></dfn>
   attribute must, if the element has a parent <code>table</code>
   element, or a parent <code>tbody</code>, <code>thead</code>, or
@@ -25729,7 +28543,9 @@
   title="dom-tr-cells">cells</code> collection, the method must
   instead raise an <code>INDEX_SIZE_ERR</code> exception.</p>
 
+  </div>
 
+
   <h4>The <dfn><code>td</code></dfn> element</h4>
 
   <dl class="element">
@@ -25754,13 +28570,17 @@
   <p>The <code>td</code> element <span>represents</span> a data <span
   title="concept-cell">cell</span> in a table.</p>
 
-  <p class="note">The <code>td</code> element and its <code
+  <div class="impl">
+
+  <p>The <code>td</code> element and its <code
   title="attr-tdth-colspan">colspan</code>, <code
   title="attr-tdth-rowspan">rowspan</code>, and <code
   title="attr-tdth-headers">headers</code> attributes take part in the
   <span>table model</span>.</p>
 
+  </div>
 
+
   <h4>The <dfn><code>th</code></dfn> element</h4>
 
   <dl class="element">
@@ -25839,7 +28659,9 @@
   <p>The <code title="attr-th-scope">scope</code> attribute's
   <i>missing value default</i> is the <i>auto</i> state.</p>
 
-  <p class="note">The <code>th</code> element and its <code
+  <div class="impl">
+
+  <p>The <code>th</code> element and its <code
   title="attr-tdth-colspan">colspan</code>, <code
   title="attr-tdth-rowspan">rowspan</code>, <code
   title="attr-tdth-headers">headers</code>, and <code
@@ -25850,7 +28672,10 @@
   attribute must <span>reflect</span> the content attribute of the
   same name.</p>
 
+  </div>
 
+
+
   <h4>Attributes common to <code>td</code> and <code>th</code> elements</h4>
 
   <p>The <code>td</code> and <code>th</code> elements may have a <dfn
@@ -25863,6 +28688,15 @@
   attribute specified, whose value must be a <span>valid non-negative
   integer</span>.</p>
 
+  <p>These attributes give the number of columns and rows respectively
+  that the cell is to span. These attributes must not be used to
+  overlap cells<span title="impl">, as described in the description of
+  the <span>table model</span></span>.</p> <!-- conformance criteria
+  for determining when this is violated are given in the processing
+  model -->
+
+  <hr>
+
   <p>The <code>td</code> and <code>th</code> element may have a <dfn
   title="attr-tdth-headers"><code>headers</code></dfn> content
   attribute specified. The <code
@@ -25871,8 +28705,8 @@
   space-separated tokens</span>, each of which must have the value of
   an ID of a <code>th</code> element taking part in the same <span
   title="concept-table">table</span> as the <code>td</code> or
-  <code>th</code> element (as defined by the <span>table
-  model</span>).</p>
+  <code>th</code> element<span class="impl"> (as defined by the
+  <span>table model</span>)</span>.</p>
 
   <p>A <code>th</code> element with ID <var title="">id</var> is said
   to be <i>directly targetted</i> by all <code>td</code> and
@@ -25891,11 +28725,15 @@
   <p>A <code>th</code> element must not be <i>targetted</i> by
   itself.</p>
 
-  <p class="note">The <code title="attr-tdth-colspan">colspan</code>,
-  <code title="attr-tdth-rowspan">rowspan</code>, and <code
+  <div class="impl">
+
+  <p>The <code title="attr-tdth-colspan">colspan</code>, <code
+  title="attr-tdth-rowspan">rowspan</code>, and <code
   title="attr-tdth-headers">headers</code> attributes take part in the
   <span>table model</span>.</p>
 
+  </div>
+
   <hr>
 
   <p>The <code>td</code> and <code>th</code> elements implement
@@ -25909,6 +28747,23 @@
   readonly attribute long <span title="dom-tdth-cellIndex">cellIndex</span>;
 };</pre>
 
+  <dl class="domintro">
+
+   <dt><var title="">cell</var> . <code title="dom-tdth-cellIndex">cellIndex</code></dt>
+
+   <dd>
+
+    <p>Returns the position of the cell in the row's <code
+    title="dom-tr-cells">cells</code> list.</p>
+
+    <p>Returns 0 if the element isn't in a row.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-tdth-colSpan"><code>colSpan</code></dfn> DOM
   attribute must <span>reflect</span> the content attribute of the
   same name. The value must be <span>limited to only positive non-zero
@@ -25932,7 +28787,11 @@
   there is no such parent element, then the attribute must return
   0.</p>
 
+  </div>
 
+
+  <div class="impl">
+
   <h4>Processing model</h4>
 
   <p>The various table elements and their content attributes together
@@ -27178,10 +30037,10 @@
   elements and its text content, if any, consists only of
   <span>White_Space</span> characters.</p>
 
+  </div>
 
 
 
-
   <h3 id="forms">Forms</h3>
 
   <p>Forms allow unscripted client-server interaction: given a form, a
@@ -27339,6 +30198,105 @@
   title="attr-fs-target">target</code> attributes are <span>attributes
   for form submission</span>.</p>
 
+  <dl class="domintro">
+
+   <dt><var title="">form</var> . <code title="dom-form-elements">elements</code></dt>
+
+   <dd>
+
+    <p>Returns an <code>HTMLCollection</code> of the form controls in
+    the form (excluding image buttons for historical reasons).</p>
+
+   </dd>
+
+   <dt><var title="">form</var> . <code title="dom-form-length">length</code></dt>
+
+   <dd>
+
+    <p>Returns the number of form controls in the form (excluding
+    image buttons for historical reasons).</p>
+
+   </dd>
+
+   <dt><var title="">element</var> = <var title="">form</var> . <code title="dom-form-item">item</code>(<var title="">index</var>)</dt>
+   <dt><var title="">form</var>[<var title="">index</var>]</dt>
+
+   <dd>
+
+    <p>Returns the <var title="">index</var>th element in the form
+    (excluding image buttons for historical reasons).</p>
+
+   </dd>
+
+   <dt><var title="">element</var> = <var title="">form</var> . <code title="dom-form-namedItem">namedItem</code>(<var title="">name</var>)</dt>
+   <dt><var title="">form</var>[<var title="">name</var>]</dt>
+
+   <dd>
+
+    <p>Returns the form control in the form with the given ID or <code
+    title="attr-fe-name">name</code> (excluding image buttons for
+    historical reasons).</p>
+
+    <p>Once an element has been referenced using a particular name,
+    that name will continue being available as a way to reference that
+    element in this method, even if the element's actual ID or <code
+    title="attr-fe-name">name</code> changes, for as long as the
+    element remains in the <code>Document</code>.</p>
+
+    <p>If there are multiple matching items, then a
+    <code>NodeList</code> object containing all those elements is
+    returned.</p>
+
+    <p>Returns null if no element with that ID or <code
+    title="attr-fe-name">name</code> could be found.</p>
+
+   </dd>
+
+   <dt><var title="">form</var> . <code title="dom-form-submit">submit</code>()</dt>
+
+   <dd>
+
+    <p>Submits the form.</p>
+
+   </dd>
+
+   <dt><var title="">form</var> . <code title="dom-form-reset">reset</code>()</dt>
+
+   <dd>
+
+    <p>Resets the form.</p>
+
+   </dd>
+
+   <dt><var title="">form</var> . <code title="dom-form-checkValidity">checkValidity</code>()</dt>
+
+   <dd>
+
+    <p>Returns true if the form's controls are all valid; otherwise,
+    returns false.</p>
+
+   </dd>
+
+   <dt><var title="">form</var> . <code title="dom-form-dispatchFormInput">dispatchFormInput</code>()</dt>
+
+   <dd>
+
+    <p>Dispatches a <code title="event-forminput">forminput</code> event at all the form controls.</p>
+
+   </dd>
+
+   <dt><var title="">form</var> . <code title="dom-form-dispatchFormChange">dispatchFormChange</code>()</dt>
+
+   <dd>
+
+    <p>Dispatches a <code title="event-formchange">formchange</code> event at all the form controls.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-form-autocomplete"><code>autocomplete</code></dfn> and
   <dfn title="dom-form-name"><code>name</code></dfn> DOM attributes
@@ -27351,6 +30309,8 @@
   title="attr-form-accept-charset">accept-charset</code> content
   attribute.</p>
 
+  <hr>
+
   <p>The <dfn title="dom-form-elements"><code>elements</code></dfn>
   DOM attribute must return an <code>HTMLFormControlsCollection</code>
   rooted at the <code>Document</code> node, whose filter matches <span
@@ -27362,8 +30322,6 @@
   for historical reasons, be excluded from this particular
   collection.</p>
 
-  <hr>
-
   <p>The <dfn title="dom-form-length"><code>length</code></dfn> DOM
   attribute must return the number of nodes <span title="represented
   by the collection">represented</span> by the <code
@@ -27489,7 +30447,10 @@
   title="event-formchange">formchange</code> events</span> from the
   <code>form</code> element.</p>
 
+  </div>
 
+
+
   <h4>The <dfn><code>fieldset</code></dfn> element</h4>
 
   <dl class="element">
@@ -27543,6 +30504,29 @@
   <span>form owner</span>. The <code title="attr-fe-name">name</code>
   attribute represents the element's name.</p>
 
+  <dl class="domintro">
+
+   <dt><var title="">fieldset</var> . <code title="dom-fieldset-type">type</code></dt>
+
+   <dd>
+
+    <p>Returns the string "fieldset".</p>
+
+   </dd>
+
+   <dt><var title="">fieldset</var> . <code title="dom-form-elements">elements</code></dt>
+
+   <dd>
+
+    <p>Returns an <code>HTMLCollection</code> of the form controls in
+    the element.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-fieldset-disabled"><code>disabled</code></dfn> DOM
   attribute must <span>reflect</span> the content attribute of the
@@ -27571,8 +30555,10 @@
   elements are always <span>barred from constraint
   validation</span>.</p>
 
+  </div>
 
 
+
   <h4>The <dfn><code>label</code></dfn> element</h4>
 
   <dl class="element">
@@ -27599,27 +30585,35 @@
    </dd> 
   </dl>
 
-  <p>The <code>label</code> <span>represents</span> a caption in a user
-  interface. The caption can be associated with a specific form
-  control, known as the <code>label</code> element's <dfn>labeled
-  control</dfn>.</p>
+  <p>The <code>label</code> <span>represents</span> a caption in a
+  user interface. The caption can be associated with a specific form
+  control<span class="impl">, known as the <code>label</code>
+  element's <dfn>labeled control</dfn></span>, either using <code
+  title="attr-label-for">for</code> attribute, or by putting the form
+  control inside the <code>label</code> element itself.</p>
 
+  <div class="impl">
+
   <p>Unless otherwise specified by the following rules, a
   <code>label</code> element has no <span>labeled control</span>.</p>
 
+  </div>
+
   <p>The <dfn title="attr-label-for"><code>for</code></dfn> attribute
   may be specified to indicate a form control with which the caption
   is to be associated. If the attribute is specified, the attribute's
   value must be the ID of a <span title="category-label">labelable
   form-associated element</span> in the same <code>Document</code> as
-  the <code>label</code> element. If the attribute is specified and
-  there is an element in the <code>Document</code> whose ID is equal
-  to the value of the <code title="attr-label-for">for</code>
-  attribute, and the first such element is a <span
-  title="category-label">labelable form-associated element</span>,
-  then that element is the <code>label</code> element's <span>labeled
-  control</span>.</p>
+  the <code>label</code> element. <span class="impl">If the attribute
+  is specified and there is an element in the <code>Document</code>
+  whose ID is equal to the value of the <code
+  title="attr-label-for">for</code> attribute, and the first such
+  element is a <span title="category-label">labelable form-associated
+  element</span>, then that element is the <code>label</code>
+  element's <span>labeled control</span>.</span></p>
 
+  <div class="impl">
+
   <p>If the <code title="attr-label-for">for</code> attribute is not
   specified, but the <code>label</code> element has a <span>labelable
   form-associated element</span> descendant, then the first such
@@ -27646,6 +30640,22 @@
 
   </div>
 
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">label</var> . <code title="dom-label-control">control</code></dt>
+
+   <dd>
+
+    <p>Returns the form control that is associated with this element.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <code title="attr-fae-form">form</code> attribute is used to
   explicitly associate the <code>label</code> element with its
   <span>form owner</span>.</p>
@@ -27658,8 +30668,25 @@
   attribute must return the <code>label</code> element's <span>labeled
   control</span>, if any, or null if there isn't one.</p>
 
+  </div>
+
   <hr>
 
+  <dl class="domintro">
+
+   <dt><var title="">control</var> . <code title="dom-lfe-labels">labels</code></dt>
+
+   <dd>
+
+    <p>Returns a <code>NodeList</code> of all the <code>label</code>
+    elements that the form control is associated with.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p><span title="category-label">Labelable form-associated
   elements</span> have a <code>NodeList</code> object associated with
   them that represents the list of <code>label</code> elements, in
@@ -27670,7 +30697,10 @@
   elements</span>, on getting, must return that <code>NodeList</code>
   object.</p>
 
+  </div>
 
+
+
   <h4>The <dfn><code>input</code></dfn> element</h4>
 
   <dl class="element">
@@ -27936,9 +30966,9 @@
   title="dom-input-selectedOption">selectedOption</code> DOM
   attributes, and the <code title="dom-input-stepUp">stepUp()</code>
   and <code title="dom-input-stepDown">stepDown()</code> methods, are
-  specific to certain states. The following table is non-normative and
-  summarises which content attributes, DOM attrbutes, and methods
-  apply to each state:</p>
+  specific to certain states. The following table <span
+  class="impl">is non-normative and</span> summarises which content
+  attributes, DOM attrbutes, and methods apply to each state:</p>
 
   <table class="applies">
    <thead>
@@ -28570,7 +31600,7 @@
      <td class="no"> &middot; <!-- Reset Button -->
 <!-- <td class="no"> &middot;      Button -->
 
-    <tr>
+    <tr class="impl">
      <th> <code title="dom-input-value">value</code>
      <td class="yes"> <span title="dom-input-value-value">value</span> <!-- Hidden -->
      <td class="yes"> <span title="dom-input-value-value">value</span> <!-- Text -->
@@ -28897,6 +31927,8 @@
 
   </table>
 
+  <div class="impl">
+
   <p>When an <code>input</code> element's <code
   title="attr-input-type">type</code> attribute changes state, and
   when the element is first created, the element's rendering and
@@ -28933,18 +31965,24 @@
   be set to true whenever the user interacts with the control in a way
   that changes the <span title="concept-fe-value">value</span>.</p>
 
+  </div>
+
   <p>The <dfn title="attr-input-value"><code>value</code></dfn>
   content attribute gives the default <span
   title="concept-fe-value">value</span> of the <code>input</code>
-  element. When the <code title="attr-input-value">value</code>
-  content attribute is added, set, or removed, if the control does not
-  have a <i title="concept-input-value-dirty">dirty value</i>, the
-  user agent must set the <span title="concept-fe-value">value</span>
-  of the element to the value of the <code
+  element. <span class="impl">When the <code
+  title="attr-input-value">value</code> content attribute is added,
+  set, or removed, if the control does not have a <i
+  title="concept-input-value-dirty">dirty value</i>, the user agent
+  must set the <span title="concept-fe-value">value</span> of the
+  element to the value of the <code
   title="attr-input-value">value</code> content attribute, if there is
   one, or the empty string otherwise, and then run the current
-  <span>value sanitization algorithm</span>, if one is defined.</p>
+  <span>value sanitization algorithm</span>, if one is
+  defined.</span></p>
 
+  <div class="impl">
+
   <p>Each <code>input</code> element has a <span
   title="concept-fe-checked">checkedness</span>, which is exposed by
   the <code title="dom-input-checked">checked</code> DOM
@@ -28961,10 +31999,12 @@
   the control in a way that changes the <span
   title="concept-fe-checked">checkedness</span>.</p>
 
+  </div>
+
   <p>The <dfn title="attr-input-checked"><code>checked</code></dfn>
   content attribute gives the default <span
   title="concept-fe-checked">checkedness</span> of the
-  <code>input</code> element. When the <code
+  <code>input</code> element. <span class="impl">When the <code
   title="attr-input-checked">checked</code> content attribute is
   added, if the control does not have <i
   title="concept-input-checked-dirty">dirty checkedness</i>, the user
@@ -28975,8 +32015,10 @@
   title="concept-input-checked-dirty">dirty checkedness</i>, the user
   agent must set the <span
   title="concept-fe-checked">checkedness</span> of the element to
-  false.</p>
+  false.</span></p>
 
+  <div class="impl">
+
   <p>The <span title="concept-form-reset-control">reset
   algorithm</span> for <code>input</code> elements is to set the <span
   title="concept-input-value-dirty-flag">dirty value flag</span> and
@@ -29022,6 +32064,8 @@
   <code>input</code> element <i
   title="concept-input-immutable">immutable</i>.</p>
 
+  </div>
+
   <p>The <code title="attr-fae-form">form</code> attribute is used to
   explicitly associate the <code>input</code> element with its
   <span>form owner</span>. The <code title="attr-fe-name">name</code>
@@ -29031,6 +32075,8 @@
   submitted. The <code title="attr-fe-autofocus">autofocus</code>
   attribute controls focus.</p>
 
+  <div class="impl">
+
   <p>The <dfn
   title="dom-input-indeterminate"><code>indeterminate</code></dfn> DOM
   attribute must initially be set to false. On getting, it must return
@@ -29083,6 +32129,7 @@
   title="dom-textarea/input-setSelectionRange">setSelectionRange()</code>
   methods and attributes expose the element's text selection.</p>
 
+  </div>
 
 
 
@@ -29097,26 +32144,34 @@
 
   <h6><dfn title="attr-input-type-hidden">Hidden</dfn> state</h6>
 
+  <div class="impl">
+
   <p>When an <code>input</code> element's <code
   title="attr-input-type">type</code> attribute is in the <span
   title="attr-input-type-hidden">Hidden</span> state, the rules in
   this section apply.</p>
 
-  <p>The <code>input</code> element <span>represents</span> a value that is not
-  intended to be examined or manipulated by the user.</p>
+  </div>
 
+  <p>The <code>input</code> element <span>represents</span> a value
+  that is not intended to be examined or manipulated by the user.</p>
+
+  <div class="impl">
+
   <p><strong>Constraint validation:</strong> If an <code>input</code>
   element's <code title="attr-input-type">type</code> attribute is in
   the <span title="attr-input-type-hidden">Hidden</span> state, it is
   <span>barred from constraint validation</span>.</p>
 
+  </div>
+
   <p>If the <code title="attr-input-value">name</code> attribute is
   present and has a value that is a <span>case-sensitive</span> match
   for the string "<code title="">_charset_</code>", then the element's
   <code title="attr-input-value">value</code> attribute must be
   omitted.</p>
 
-  <div class="bookkeeping">
+  <div class="bookkeeping impl">
 
    <p>The 
    <code title="dom-input-value">value</code>
@@ -29176,32 +32231,42 @@
        data with slashes and dashes (ack Greg Kilwein)
   -->
 
+  <div class="impl">
+
   <p>When an <code>input</code> element's <code
   title="attr-input-type">type</code> attribute is in the <span
   title="attr-input-type-text">Text</span> state or the <span
   title="attr-input-type-search">Search</span> state, the rules in
   this section apply.</p>
+  </div>
 
-  <p>The <code>input</code> element <span>represents</span> a one line plain text
-  edit control for the element's <span
+  <p>The <code>input</code> element <span>represents</span> a one line
+  plain text edit control for the element's <span
   title="concept-fe-value">value</span>.</p>
 
+  <div class="impl">
+
   <p>If the element is <i title="concept-input-mutable">mutable</i>,
   its <span title="concept-fe-value">value</span> should be editable
   by the user. User agents must not allow users to insert U+000A LINE
   FEED (LF) or U+000D CARRIAGE RETURN (CR) characters into the
   element's <span title="concept-fe-value">value</span>.</p>
+  </div>
 
   <p>The <code title="attr-input-value">value</code> attribute, if
   specified, must have a value that contains no U+000A LINE FEED (LF)
   or U+000D CARRIAGE RETURN (CR) characters.</p>
 
+  <div class="impl">
+
   <p><strong>The <span>value sanitization algorithm</span> is as
   follows:</strong> <span>Strip line breaks</span> from the <span
   title="concept-fe-value">value</span>.</p>
 
-  <div class="bookkeeping">
+  </div>
 
+  <div class="bookkeeping impl">
+
    <p>The following common <code>input</code> element content
    attributes, DOM attributes, and methods apply to the element:
    <code title="attr-input-autocomplete">autocomplete</code>,
@@ -29257,15 +32322,21 @@
 
   <h6><dfn title="attr-input-type-url">URL</dfn> state</h6>
 
+  <div class="impl">
+
   <p>When an <code>input</code> element's <code
   title="attr-input-type">type</code> attribute is in the <span
   title="attr-input-type-url">URL</span> state, the rules in this
   section apply.</p>
 
-  <p>The <code>input</code> element <span>represents</span> a control for editing a
-  single <span>absolute URL</span> given in the element's <span
-  title="concept-fe-value">value</span>.</p>
+  </div>
 
+  <p>The <code>input</code> element <span>represents</span> a control
+  for editing a single <span>absolute URL</span> given in the
+  element's <span title="concept-fe-value">value</span>.</p>
+
+  <div class="impl">
+
   <p>If the is <i title="concept-input-mutable">mutable</i>, the user
   agent should allow the user to change the URL represented by its
   <span title="concept-fe-value">value</span>. User agents may allow
@@ -29281,11 +32352,15 @@
   agents must not allow users to insert U+000A LINE FEED (LF) or
   U+000D CARRIAGE RETURN (CR) characters into the <span
   title="concept-fe-value">value</span>.</p>
+  
+  </div>
 
   <p>The <code title="attr-input-value">value</code> attribute, if
   specified, must have a value that is a <span title="valid
   URL">valid</span> <span>absolute URL</span>.</p>
 
+  <div class="impl">
+
   <p><strong>The <span>value sanitization algorithm</span> is as
   follows:</strong> <span>Strip line breaks</span> from the <span
   title="concept-fe-value">value</span>.</p>
@@ -29294,8 +32369,10 @@
   title="concept-fe-value">value</span> of the element is not a <span
   title="valid URL">valid</span> <span>absolute URL</span>, the
   element is <span>suffering from a type mismatch</span>.</p>
+  
+  </div>
 
-  <div class="bookkeeping">
+  <div class="bookkeeping impl">
 
    <p>The following common <code>input</code> element content
    attributes, DOM attributes, and methods apply to the element:
@@ -29352,15 +32429,21 @@
 
   <h6><dfn title="attr-input-type-email">E-mail</dfn> state</h6>
 
+  <div class="impl">
+
   <p>When an <code>input</code> element's <code
   title="attr-input-type">type</code> attribute is in the <span
   title="attr-input-type-email">E-mail</span> state, the rules in this
   section apply.</p>
+  
+  </div>
 
-  <p>The <code>input</code> element <span>represents</span> a control for editing a
-  list of e-mail addresses given in the element's <span
+  <p>The <code>input</code> element <span>represents</span> a control
+  for editing a list of e-mail addresses given in the element's <span
   title="concept-fe-value">value</span>.</p>
 
+  <div class="impl">
+
   <p>If the element is <i title="concept-input-mutable">mutable</i>,
   the user agent should allow the user to change the e-mail addresses
   represented by its <span title="concept-fe-value">value</span>. If
@@ -29379,6 +32462,8 @@
   (e.g. converting punycode in the <span
   title="concept-fe-value">value</span> to IDN in the display and vice
   versa).</p>
+  
+  </div>
 
   <p>If the <code title="attr-input-multiple">multiple</code>
   attribute is specified on the element, then the <code
@@ -29388,6 +32473,8 @@
   attribute, if specified, must have a value that is a single
   <span>valid e-mail address</span>.</p>
 
+  <div class="impl">
+
   <p><strong>The <span>value sanitization algorithm</span> is as
   follows:</strong> <span>Strip line breaks</span> from the <span
   title="concept-fe-value">value</span>.</p>
@@ -29401,13 +32488,15 @@
   <span title="concept-fe-value">value</span> of the element is not a
   single <span>valid e-mail address</span>, the element is
   <span>suffering from a type mismatch</span>.</p>
+  
+  </div>
 
   <p>A <dfn>valid e-mail address list</dfn> is a <span>set of
   comma-separated tokens</span>, where each token is itself a
-  <span>valid e-mail address</span>. To obtain the list of tokens from
-  a <span>valid e-mail address list</span>, the user agent must <span
-  title="split a string on commas">split the string on
-  commas</span>.</p>
+  <span>valid e-mail address</span>. <span class="impl">To obtain the
+  list of tokens from a <span>valid e-mail address list</span>, the
+  user agent must <span title="split a string on commas">split the
+  string on commas</span>.</span></p>
 
   <p>A <dfn>valid e-mail address</dfn> is a string that matches the
   production <code title="">dot-atom&nbsp;"@"&nbsp;dot-atom</code>
@@ -29415,7 +32504,7 @@
   3.2.4, excluding the <code>CFWS</code> production everywhere. <a
   href="#refsRFC2822">[RFC2822]</a></p>
 
-  <div class="bookkeeping">
+  <div class="bookkeeping impl">
 
    <p>The following common <code>input</code> element content
    attributes, DOM attributes, and methods apply to the element:
@@ -29472,31 +32561,43 @@
 
   <h6><dfn title="attr-input-type-password">Password</dfn> state</h6>
 
+  <div class="impl">
+
   <p>When an <code>input</code> element's <code
   title="attr-input-type">type</code> attribute is in the <span
   title="attr-input-type-password">Password</span> state, the rules in
   this section apply.</p>
+  
+  </div>
 
-  <p>The <code>input</code> element <span>represents</span> a one line plain text
-  edit control for the element's <span
+  <p>The <code>input</code> element <span>represents</span> a one line
+  plain text edit control for the element's <span
   title="concept-fe-value">value</span>. The user agent should obscure
   the value so that people other than the user cannot see it.</p>
 
+  <div class="impl">
+
   <p>If the element is <i title="concept-input-mutable">mutable</i>,
   its <span title="concept-fe-value">value</span> should be editable
   by the user. User agents must not allow users to insert U+000A LINE
   FEED (LF) or U+000D CARRIAGE RETURN (CR) characters into the <span
   title="concept-fe-value">value</span>.</p>
+  
+  </div>
 
   <p>The <code title="attr-input-value">value</code> attribute, if
   specified, must have a value that contains no U+000A LINE FEED (LF)
   or U+000D CARRIAGE RETURN (CR) characters.</p>
 
+  <div class="impl">
+
   <p><strong>The <span>value sanitization algorithm</span> is as
   follows:</strong> <span>Strip line breaks</span> from the <span
   title="concept-fe-value">value</span>.</p>
+  
+  </div>
 
-  <div class="bookkeeping">
+  <div class="bookkeeping impl">
 
    <p>The following common <code>input</code> element content
    attributes, DOM attributes, and methods apply to the element:
@@ -29550,17 +32651,24 @@
 
   <h6><dfn title="attr-input-type-datetime">Date and Time</dfn> state</h6>
 
+  <div class="impl">
+
   <p>When an <code>input</code> element's <code
   title="attr-input-type">type</code> attribute is in the <span
   title="attr-input-type-datetime">Date and Time</span> state, the
   rules in this section apply.</p>
+  
+  </div>
 
-  <p>The <code>input</code> element <span>represents</span> a control for setting
-  the element's <span title="concept-fe-value">value</span> to a
-  string representing a specific <span title="concept-datetime">global
-  date and time</span>. User agents may display the date and time in
-  whatever timezone is appropriate for the user.</p>
+  <p>The <code>input</code> element <span>represents</span> a control
+  for setting the element's <span
+  title="concept-fe-value">value</span> to a string representing a
+  specific <span title="concept-datetime">global date and
+  time</span>. <span class="impl">User agents may display the date and
+  time in whatever timezone is appropriate for the user.</span></p>
 
+  <div class="impl">
+
   <p>If the element is <i title="concept-input-mutable">mutable</i>,
   the user agent should allow the user to change the <span
   title="concept-datetime">global date and time</span> represented by
@@ -29578,12 +32686,16 @@
   global date and time string</span> expressed in UTC representing the
   user's selection. User agents should allow the user to set the <span
   title="concept-fe-value">value</span> to the empty string.</p>
+  
+  </div>
 
   <p>The <code title="attr-input-value">value</code> attribute, if
   specified, must have a value that is a <span>valid global date and
   time string</span>.</p> <!-- ok to set out-of-range value, we never
   know when we might have to represent bogus input -->
 
+  <div class="impl">
+
   <p><strong>The <span>value sanitization algorithm</span> is as
   follows:</strong> If the <span title="concept-fe-value">value</span>
   of the element is a <span>valid global date and time string</span>,
@@ -29591,6 +32703,8 @@
   title="concept-fe-value">value</span> represents the same point in
   time but expressed in the UTC timezone, otherwise, set it to the
   empty string instead.</p>
+  
+  </div>
 
   <p>The <code title="attr-input-min">min</code> attribute, if
   specified, must have a value that is a <span>valid global date and
@@ -29599,12 +32713,15 @@
   global date and time string</span>.</p>
 
   <p>The <code title="attr-input-step">step</code> attribute is
-  expressed in seconds. The <span
+  expressed in seconds. <span class="impl">The <span
   title="concept-input-step-scale">step scale factor</span> is 1000
   (which converts the seconds to milliseconds, as used in the other
-  algorithms). The <span title="concept-input-step-default">default
-  step</span> is 60 seconds.</p>
+  algorithms).</span> The <span
+  title="concept-input-step-default">default step</span> is 60
+  seconds.</p>
 
+  <div class="impl">
+
   <p>When the element is <span>suffering from a step mismatch</span>,
   the user agent may round the element's <span
   title="concept-fe-value">value</span> to the nearest <span
@@ -29652,8 +32769,10 @@
   string</span> expressed in UTC that represents the <span
   title="concept-datetime">global date and time</span> that is
   represented by <var title="">input</var>.</p>
+  
+  </div>
 
-  <div class="bookkeeping">
+  <div class="bookkeeping impl">
 
    <p>The following common <code>input</code> element content
    attributes, DOM attributes, and methods apply to the element:
@@ -29710,16 +32829,22 @@
 
   <h6><dfn title="attr-input-type-date">Date</dfn> state</h6>
 
+  <div class="impl">
+
   <p>When an <code>input</code> element's <code
   title="attr-input-type">type</code> attribute is in the <span
   title="attr-input-type-date">Date</span> state, the rules in this
   section apply.</p>
+  
+  </div>
 
-  <p>The <code>input</code> element <span>represents</span> a control for setting
-  the element's <span title="concept-fe-value">value</span> to a
-  string representing a specific <span
-  title="concept-date">date</span>.</p>
+  <p>The <code>input</code> element <span>represents</span> a control
+  for setting the element's <span
+  title="concept-fe-value">value</span> to a string representing a
+  specific <span title="concept-date">date</span>.</p>
 
+  <div class="impl">
+
   <p>If the element is <i title="concept-input-mutable">mutable</i>,
   the user agent should allow the user to change the <span
   title="concept-date">date</span> represented by its <span
@@ -29733,16 +32858,22 @@
   a <span>valid date string</span> representing the user's
   selection. User agents should allow the user to set the <span
   title="concept-fe-value">value</span> to the empty string.</p>
+  
+  </div>
 
   <p>The <code title="attr-input-value">value</code> attribute, if
   specified, must have a value that is a <span>valid date
   string</span>.</p> <!-- ok to set out-of-range value, we never know
   when we might have to represent bogus input -->
 
+  <div class="impl">
+
   <p><strong>The <span>value sanitization algorithm</span> is as
   follows:</strong> If the <span title="concept-fe-value">value</span>
   of the element is not a <span>valid date string</span>, then set it
   to the empty string instead.</p>
+  
+  </div>
 
   <p>The <code title="attr-input-min">min</code> attribute, if
   specified, must have a value that is a <span>valid date
@@ -29751,11 +32882,14 @@
   date string</span>.</p>
 
   <p>The <code title="attr-input-step">step</code> attribute is
-  expressed in days. The <span title="concept-input-step-scale">step
-  scale factor</span> is 86,400,000 (which converts the days to
-  milliseconds, as used in the other algorithms). The <span
+  expressed in days. <span class="impl">The <span
+  title="concept-input-step-scale">step scale factor</span> is
+  86,400,000 (which converts the days to milliseconds, as used in the
+  other algorithms).</span> The <span
   title="concept-input-step-default">default step</span> is 1 day.</p>
 
+  <div class="impl">
+
   <p>When the element is <span>suffering from a step mismatch</span>,
   the user agent may round the element's <span
   title="concept-fe-value">value</span> to the nearest <span
@@ -29801,8 +32935,10 @@
   represents the <span title="concept-date">date</span> current at the
   time represented by <var title="">input</var> in the UTC
   timezone.</p>
+  
+  </div>
 
-  <div class="bookkeeping">
+  <div class="bookkeeping impl">
 
    <p>The following common <code>input</code> element content
    attributes, DOM attributes, and methods apply to the element:
@@ -29859,16 +32995,22 @@
 
   <h6><dfn title="attr-input-type-month">Month</dfn> state</h6>
 
+  <div class="impl">
+
   <p>When an <code>input</code> element's <code
   title="attr-input-type">type</code> attribute is in the <span
   title="attr-input-type-month">Month</span> state, the rules in this
   section apply.</p>
+  
+  </div>
 
-  <p>The <code>input</code> element <span>represents</span> a control for setting
-  the element's <span title="concept-fe-value">value</span> to a
-  string representing a specific <span
-  title="concept-month">month</span>.</p>
+  <p>The <code>input</code> element <span>represents</span> a control
+  for setting the element's <span
+  title="concept-fe-value">value</span> to a string representing a
+  specific <span title="concept-month">month</span>.</p>
 
+  <div class="impl">
+
   <p>If the element is <i title="concept-input-mutable">mutable</i>,
   the user agent should allow the user to change the <span
   title="concept-month">month</span> represented by its <span
@@ -29882,16 +33024,22 @@
   a <span>valid month string</span> representing the user's
   selection. User agents should allow the user to set the <span
   title="concept-fe-value">value</span> to the empty string.</p>
+  
+  </div>
 
   <p>The <code title="attr-input-value">value</code> attribute, if
   specified, must have a value that is a <span>valid month
   string</span>.</p> <!-- ok to set out-of-range value, we never know
   when we might have to represent bogus input -->
 
+  <div class="impl">
+
   <p><strong>The <span>value sanitization algorithm</span> is as
   follows:</strong> If the <span title="concept-fe-value">value</span>
   of the element is not a <span>valid month string</span>, then set it
   to the empty string instead.</p>
+  
+  </div>
 
   <p>The <code title="attr-input-min">min</code> attribute, if
   specified, must have a value that is a <span>valid month
@@ -29900,12 +33048,14 @@
   month string</span>.</p>
 
   <p>The <code title="attr-input-step">step</code> attribute is
-  expressed in months. The <span title="concept-input-step-scale">step
-  scale factor</span> is 1 (there is no conversion needed as the
-  algorithms use months). The <span
-  title="concept-input-step-default">default step</span> is 1
-  month.</p>
+  expressed in months. <span class="impl">The <span
+  title="concept-input-step-scale">step scale factor</span> is 1
+  (there is no conversion needed as the algorithms use months).</span>
+  The <span title="concept-input-step-default">default step</span> is
+  1 month.</p>
 
+  <div class="impl">
+
   <p>When the element is <span>suffering from a step mismatch</span>,
   the user agent may round the element's <span
   title="concept-fe-value">value</span> to the nearest <span
@@ -29952,8 +33102,10 @@
   represents the <span title="concept-month">month</span> current at
   the time represented by <var title="">input</var> in the UTC
   timezone.</p>
+  
+  </div>
 
-  <div class="bookkeeping">
+  <div class="bookkeeping impl">
 
    <p>The following common <code>input</code> element content
    attributes, DOM attributes, and methods apply to the element:
@@ -30010,16 +33162,22 @@
 
   <h6><dfn title="attr-input-type-week">Week</dfn> state</h6>
 
+  <div class="impl">
+
   <p>When an <code>input</code> element's <code
   title="attr-input-type">type</code> attribute is in the <span
   title="attr-input-type-week">Week</span> state, the rules in this
   section apply.</p>
+  
+  </div>
 
-  <p>The <code>input</code> element <span>represents</span> a control for setting
-  the element's <span title="concept-fe-value">value</span> to a
-  string representing a specific <span
-  title="concept-week">week</span>.</p>
+  <p>The <code>input</code> element <span>represents</span> a control
+  for setting the element's <span
+  title="concept-fe-value">value</span> to a string representing a
+  specific <span title="concept-week">week</span>.</p>
 
+  <div class="impl">
+
   <p>If the element is <i title="concept-input-mutable">mutable</i>,
   the user agent should allow the user to change the <span
   title="concept-week">week</span> represented by its <span
@@ -30033,16 +33191,22 @@
   a <span>valid week string</span> representing the user's
   selection. User agents should allow the user to set the <span
   title="concept-fe-value">value</span> to the empty string.</p>
+  
+  </div>
 
   <p>The <code title="attr-input-value">value</code> attribute, if
   specified, must have a value that is a <span>valid week
   string</span>.</p> <!-- ok to set out-of-range value, we never know
   when we might have to represent bogus input -->
 
+  <div class="impl">
+
   <p><strong>The <span>value sanitization algorithm</span> is as
   follows:</strong> If the <span title="concept-fe-value">value</span>
   of the element is not a <span>valid week string</span>, then set it
   to the empty string instead.</p>
+  
+  </div>
 
   <p>The <code title="attr-input-min">min</code> attribute, if
   specified, must have a value that is a <span>valid week
@@ -30051,12 +33215,15 @@
   week string</span>.</p>
 
   <p>The <code title="attr-input-step">step</code> attribute is
-  expressed in weeks. The <span title="concept-input-step-scale">step
-  scale factor</span> is 604,800,000 (which converts the weeks to
-  milliseconds, as used in the other algorithms). The <span
+  expressed in weeks. <span class="impl">The <span
+  title="concept-input-step-scale">step scale factor</span> is
+  604,800,000 (which converts the weeks to milliseconds, as used in
+  the other algorithms).</span> The <span
   title="concept-input-step-default">default step</span> is 1
   week.</p>
 
+  <div class="impl">
+
   <p>When the element is <span>suffering from a step mismatch</span>,
   the user agent may round the element's <span
   title="concept-fe-value">value</span> to the nearest <span
@@ -30102,8 +33269,10 @@
   represents the <span title="concept-week">week</span> current at the
   time represented by <var title="">input</var> in the UTC
   timezone.</p>
+  
+  </div>
 
-  <div class="bookkeeping">
+  <div class="bookkeeping impl">
 
    <p>The following common <code>input</code> element content
    attributes, DOM attributes, and methods apply to the element:
@@ -30160,16 +33329,22 @@
 
   <h6><dfn title="attr-input-type-time">Time</dfn> state</h6>
 
+  <div class="impl">
+
   <p>When an <code>input</code> element's <code
   title="attr-input-type">type</code> attribute is in the <span
   title="attr-input-type-time">Time</span> state, the rules in this
   section apply.</p>
+  
+  </div>
 
-  <p>The <code>input</code> element <span>represents</span> a control for setting
-  the element's <span title="concept-fe-value">value</span> to a
-  string representing a specific <span
-  title="concept-time">time</span>.</p>
+  <p>The <code>input</code> element <span>represents</span> a control
+  for setting the element's <span
+  title="concept-fe-value">value</span> to a string representing a
+  specific <span title="concept-time">time</span>.</p>
 
+  <div class="impl">
+
   <p>If the element is <i title="concept-input-mutable">mutable</i>,
   the user agent should allow the user to change the <span
   title="concept-time">time</span> represented by its <span
@@ -30183,16 +33358,22 @@
   a <span>valid time string</span> representing the user's
   selection. User agents should allow the user to set the <span
   title="concept-fe-value">value</span> to the empty string.</p>
+  
+  </div>
 
   <p>The <code title="attr-input-value">value</code> attribute, if
   specified, must have a value that is a <span>valid time
   string</span>.</p> <!-- ok to set out-of-range value, we never know
   when we might have to represent bogus input -->
 
+  <div class="impl">
+
   <p><strong>The <span>value sanitization algorithm</span> is as
   follows:</strong> If the <span title="concept-fe-value">value</span>
   of the element is not a <span>valid time string</span>, then set it
   to the empty string instead.</p>
+  
+  </div>
 
   <p>The <code title="attr-input-min">min</code> attribute, if
   specified, must have a value that is a <span>valid time
@@ -30201,12 +33382,15 @@
   time string</span>.</p>
 
   <p>The <code title="attr-input-step">step</code> attribute is
-  expressed in seconds. The <span
+  expressed in seconds. <span class="impl">The <span
   title="concept-input-step-scale">step scale factor</span> is 1000
   (which converts the seconds to milliseconds, as used in the other
-  algorithms). The <span title="concept-input-step-default">default
-  step</span> is 60 seconds.</p>
+  algorithms).</span> The <span
+  title="concept-input-step-default">default step</span> is 60
+  seconds.</p>
 
+  <div class="impl">
+
   <p>When the element is <span>suffering from a step mismatch</span>,
   the user agent may round the element's <span
   title="concept-fe-value">value</span> to the nearest <span
@@ -30247,8 +33431,10 @@
   follows:</strong> Return a <span>valid time string</span> that
   represents the UTC <span title="concept-time">time</span> component
   that is represented by <var title="">input</var>.</p>
+  
+  </div>
 
-  <div class="bookkeeping">
+  <div class="bookkeeping impl">
 
    <p>The following common <code>input</code> element content
    attributes, DOM attributes, and methods apply to the element:
@@ -30305,16 +33491,23 @@
 
   <h6><dfn title="attr-input-type-datetime-local">Local Date and Time</dfn> state</h6>
 
+  <div class="impl">
+
   <p>When an <code>input</code> element's <code
   title="attr-input-type">type</code> attribute is in the <span
   title="attr-input-type-datetime-local">Local Date and Time</span>
   state, the rules in this section apply.</p>
+  
+  </div>
 
-  <p>The <code>input</code> element <span>represents</span> a control for setting
-  the element's <span title="concept-fe-value">value</span> to a
-  string representing a <span title="concept-datetime-local">local
-  date and time</span>, with no time zone information.</p>
+  <p>The <code>input</code> element <span>represents</span> a control
+  for setting the element's <span
+  title="concept-fe-value">value</span> to a string representing a
+  <span title="concept-datetime-local">local date and time</span>,
+  with no time zone information.</p>
 
+  <div class="impl">
+
   <p>If the element is <i title="concept-input-mutable">mutable</i>,
   the user agent should allow the user to change the <span
   title="concept-datetime-local">date and time</span> represented by
@@ -30329,16 +33522,22 @@
   <span>valid local date and time string</span> representing the
   user's selection. User agents should allow the user to set the <span
   title="concept-fe-value">value</span> to the empty string.</p>
+  
+  </div>
 
   <p>The <code title="attr-input-value">value</code> attribute, if
   specified, must have a value that is a <span>valid local date and
   time string</span>.</p> <!-- ok to set out-of-range value, we never
   know when we might have to represent bogus input -->
 
+  <div class="impl">
+
   <p><strong>The <span>value sanitization algorithm</span> is as
   follows:</strong> If the <span title="concept-fe-value">value</span>
   of the element is not a <span>valid local date and time
   string</span>, then set it to the empty string instead.</p>
+  
+  </div>
 
   <p>The <code title="attr-input-min">min</code> attribute, if
   specified, must have a value that is a <span>valid local date and
@@ -30347,12 +33546,15 @@
   local date and time string</span>.</p>
 
   <p>The <code title="attr-input-step">step</code> attribute is
-  expressed in seconds. The <span
+  expressed in seconds. <span class="impl">The <span
   title="concept-input-step-scale">step scale factor</span> is 1000
   (which converts the seconds to milliseconds, as used in the other
-  algorithms). The <span title="concept-input-step-default">default
-  step</span> is 60 seconds.</p>
+  algorithms).</span> The <span
+  title="concept-input-step-default">default step</span> is 60
+  seconds.</p>
 
+  <div class="impl">
+
   <p>When the element is <span>suffering from a step mismatch</span>,
   the user agent may round the element's <span
   title="concept-fe-value">value</span> to the nearest <span
@@ -30380,8 +33582,10 @@
   title="">input</var> milliseconds after midnight on the morning of
   1970-01-01 (the time represented by the value "<code
   title="">1970-01-01T00:00:00.0</code>").</p>
+  
+  </div>
 
-  <div class="bookkeeping">
+  <div class="bookkeeping impl">
 
    <p>The following common <code>input</code> element content
    attributes, DOM attributes, and methods apply to the element:
@@ -30438,15 +33642,22 @@
 
   <h6><dfn title="attr-input-type-number">Number</dfn> state</h6>
 
+  <div class="impl">
+
   <p>When an <code>input</code> element's <code
   title="attr-input-type">type</code> attribute is in the <span
   title="attr-input-type-number">Number</span> state, the rules in
   this section apply.</p>
+  
+  </div>
 
-  <p>The <code>input</code> element <span>represents</span> a control for setting
-  the element's <span title="concept-fe-value">value</span> to a
-  string representing a number.</p>
+  <p>The <code>input</code> element <span>represents</span> a control
+  for setting the element's <span
+  title="concept-fe-value">value</span> to a string representing a
+  number.</p>
 
+  <div class="impl">
+
   <p>If the element is <i title="concept-input-mutable">mutable</i>,
   the user agent should allow the user to change the number
   represented by its <span title="concept-fe-value">value</span>, as
@@ -30459,16 +33670,22 @@
   representation of the floating point number</span> representing the
   user's selection. User agents should allow the user to set the <span
   title="concept-fe-value">value</span> to the empty string.</p>
+  
+  </div>
 
   <p>The <code title="attr-input-value">value</code> attribute, if
   specified, must have a value that is a <span>valid floating point
   number</span>.</p> <!-- ok to set out-of-range value, we never know
   when we might have to represent bogus input -->
 
+  <div class="impl">
+
   <p><strong>The <span>value sanitization algorithm</span> is as
   follows:</strong> If the <span title="concept-fe-value">value</span>
   of the element is not a <span>valid floating point number</span>,
   then set it to the empty string instead.</p>
+  
+  </div>
 
   <p>The <code title="attr-input-min">min</code> attribute, if
   specified, must have a value that is a <span>valid floating point
@@ -30476,13 +33693,15 @@
   attribute, if specified, must have a value that is a <span>valid
   floating point number</span>.</p>
 
-  <p>The <span title="concept-input-step-scale">step scale
-  factor</span> is 1. The <span
-  title="concept-input-step-default">default step</span> is 1
-  (allowing only integers, unless the <code
+  <p><span class="impl">The <span
+  title="concept-input-step-scale">step scale factor</span> is
+  1.</span> The <span title="concept-input-step-default">default
+  step</span> is 1 (allowing only integers, unless the <code
   title="attr-input-min">min</code> attribute has a non-integer
   value).</p>
 
+  <div class="impl">
+
   <p>When the element is <span>suffering from a step mismatch</span>,
   the user agent may round the element's <span
   title="concept-fe-value">value</span> to the nearest number for
@@ -30502,8 +33721,10 @@
   number to a string</span>, given a number <var title="">input</var>,
   is as follows:</strong> Return a <span>valid floating point
   number</span> that represents <var title="">input</var>.</p>
+  
+  </div>
 
-  <div class="bookkeeping">
+  <div class="bookkeeping impl">
 
    <p>The following common <code>input</code> element content
    attributes, DOM attributes, and methods apply to the element:
@@ -30560,18 +33781,24 @@
 
   <h6><dfn title="attr-input-type-range">Range</dfn> state</h6>
 
+  <div class="impl">
+
   <p>When an <code>input</code> element's <code
   title="attr-input-type">type</code> attribute is in the <span
   title="attr-input-type-range">Range</span> state, the rules in this
   section apply.</p>
+  
+  </div>
 
-  <p>The <code>input</code> element <span>represents</span> a control for setting
-  the element's <span title="concept-fe-value">value</span> to a
-  string representing a number, but with the caveat that the exact
-  value is not important, letting UAs provide a simpler interface than
-  they do for the <span title="attr-input-type-number">Number</span>
-  state.</p>
+  <p>The <code>input</code> element <span>represents</span> a control
+  for setting the element's <span
+  title="concept-fe-value">value</span> to a string representing a
+  number, but with the caveat that the exact value is not important,
+  letting UAs provide a simpler interface than they do for the <span
+  title="attr-input-type-number">Number</span> state.</p>
 
+  <div class="impl">
+
   <p class="note">In this state, the range and step constraints are
   enforced even during user input, and there is no way to set the
   value to the empty string.</p>
@@ -30588,18 +33815,24 @@
   representation of the floating point number</span> representing the
   user's selection. User agents must not allow the user to set the
   <span title="concept-fe-value">value</span> to the empty string.</p>
+  
+  </div>
 
   <p>The <code title="attr-input-value">value</code> attribute, if
   specified, must have a value that is a <span>valid floating point
   number</span>.</p> <!-- ok to set out-of-range value, we never know
   when we might have to represent bogus input -->
 
+  <div class="impl">
+
   <p><strong>The <span>value sanitization algorithm</span> is as
   follows:</strong> If the <span title="concept-fe-value">value</span>
   of the element is not a <span>valid floating point number</span>,
   then set it to a <span>valid floating point number</span> that
   represents the <span
   title="concept-input-value-default-range">default value</span>.</p>
+  
+  </div>
 
   <p>The <code title="attr-input-min">min</code> attribute, if
   specified, must have a value that is a <span>valid floating point
@@ -30619,6 +33852,8 @@
   title="concept-input-value-default-range">default value</span> is
   the <span title="concept-input-min">minimum</span>.</p>
 
+  <div class="impl">
+
   <p>When the element is <span>suffering from a range
   underflow</span>, the user agent must set the element's <span
   title="concept-fe-value">value</span> to a <span>valid floating point
@@ -30632,14 +33867,18 @@
   title="concept-fe-value">value</span> to a <span>valid floating point
   number</span> that represents the <span
   title="concept-input-max">maximum</span>.</p>
+  
+  </div>
 
-  <p>The <span title="concept-input-step-scale">step scale
-  factor</span> is 1. The <span
-  title="concept-input-step-default">default step</span> is 1
-  (allowing only integers, unless the <code
+  <p><span class="impl">The <span
+  title="concept-input-step-scale">step scale factor</span> is
+  1.</span> The <span title="concept-input-step-default">default
+  step</span> is 1 (allowing only integers, unless the <code
   title="attr-input-min">min</code> attribute has a non-integer
   value).</p>
 
+  <div class="impl">
+
   <p>When the element is <span>suffering from a step mismatch</span>,
   the user agent must round the element's <span
   title="concept-fe-value">value</span> to the nearest number for
@@ -30664,8 +33903,10 @@
   number to a string</span>, given a number <var title="">input</var>,
   is as follows:</strong> Return a <span>valid floating point
   number</span> that represents <var title="">input</var>.</p>
+  
+  </div>
 
-  <div class="bookkeeping">
+  <div class="bookkeeping impl">
 
    <p>The following common <code>input</code> element content
    attributes, DOM attributes, and methods apply to the element:
@@ -30722,16 +33963,22 @@
 
   <h6><dfn title="attr-input-type-color">Color</dfn> state</h6>
 
+  <div class="impl">
+
   <p>When an <code>input</code> element's <code
   title="attr-input-type">type</code> attribute is in the <span
   title="attr-input-type-color">Color</span> state, the rules in this
   section apply.</p>
+  
+  </div>
 
-  <p>The <code>input</code> element <span>represents</span> a color well control,
-  for setting the element's <span
+  <p>The <code>input</code> element <span>represents</span> a color
+  well control, for setting the element's <span
   title="concept-fe-value">value</span> to a string representing a
   <span>simple color</span>.</p>
 
+  <div class="impl">
+
   <p class="note">In this state, there is always a color picked, and
   there is no way to set the value to the empty string.</p>
 
@@ -30747,19 +33994,25 @@
   using the <span>rules for serialising simple color values</span> to
   the user's selection. User agents must not allow the user to set the
   <span title="concept-fe-value">value</span> to the empty string.</p>
+  
+  </div>
 
   <p>The <code title="attr-input-value">value</code> attribute, if
   specified, must have a value that is a <span>valid simple
   color</span>.</p>
 
+  <div class="impl">
+
   <p><strong>The <span>value sanitization algorithm</span> is as
   follows:</strong> If the <span title="concept-fe-value">value</span>
   of the element is a <span>valid simple color</span>, then set it to
   the <span title="concept-fe-value">value</span> of the element
   <span>converted to lowercase</span>; otherwise, set it to the string
   "<code title="">#000000</code>".</p>
+  
+  </div>
 
-  <div class="bookkeeping">
+  <div class="bookkeeping impl">
 
    <p>The following common <code>input</code> element content
    attributes, DOM attributes, and methods apply to the element:
@@ -30816,13 +34069,17 @@
 
   <h6><dfn title="attr-input-type-checkbox">Checkbox</dfn> state</h6>
 
+  <div class="impl">
+
   <p>When an <code>input</code> element's <code
   title="attr-input-type">type</code> attribute is in the <span
   title="attr-input-type-checkbox">Checkbox</span> state, the rules in
   this section apply.</p>
+  
+  </div>
 
-  <p>The <code>input</code> element <span>represents</span> a two-state control
-  that represents the element's <span
+  <p>The <code>input</code> element <span>represents</span> a
+  two-state control that represents the element's <span
   title="concept-fe-checked">checkedness</span> state. If the
   element's <span title="concept-fe-checked">checkedness</span> state
   is true, the control represents a positive selection, and if it is
@@ -30838,6 +34095,8 @@
   title="dom-input-indeterminate">indeterminate</code> DOM attribute
   only gives the appearance of a third state.</p>
 
+  <div class="impl">
+
   <p>If the element is <i title="concept-input-mutable">mutable</i>,
   then: The <span>pre-click activation steps</span> consist of setting
   the element's <span title="concept-fe-checked">checkedness</span> to
@@ -30859,9 +34118,25 @@
   title="concept-input-required">required</i> and its <span
   title="concept-fe-checked">checkedness</span> is false, then the
   element is <span>suffering from being missing</span>.</p>
+  
+  </div>
 
-  <div class="bookkeeping">
+  <dl class="domintro">
 
+   <dt><var title="">input</var> . <code title="dom-input-indeterminate">indeterminate</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>When set, overrides the rendering of <span
+    title="attr-input-type-checkbox">checkbox</span> controls so that
+    the current value is not visible.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="bookkeeping impl">
+
    <p>The following common <code>input</code> element content
    attributes and DOM attributes apply to the element:
    <code title="attr-input-checked">checked</code>, and
@@ -30917,21 +34192,27 @@
   </div>
 
 
+
   <h6><dfn title="attr-input-type-radio">Radio Button</dfn> state</h6>
 
+  <div class="impl">
+
   <p>When an <code>input</code> element's <code
   title="attr-input-type">type</code> attribute is in the <span
   title="attr-input-type-radio">Radio Button</span> state, the rules
   in this section apply.</p>
+  
+  </div>
 
-  <p>The <code>input</code> element <span>represents</span> a control that, when
-  used in conjunction with other <code>input</code> elements, forms a
-  <i>radio button group</i> in which only one control can have its
-  <span title="concept-fe-checked">checkedness</span> state set to
-  true. If the element's <span
-  title="concept-fe-checked">checkedness</span> state is true, the
-  control represents the selected control in the group, and if it is
-  false, it indicates a control in the group that is not selected.</p>
+  <p>The <code>input</code> element <span>represents</span> a control
+  that, when used in conjunction with other <code>input</code>
+  elements, forms a <i>radio button group</i> in which only one
+  control can have its <span
+  title="concept-fe-checked">checkedness</span> state set to true. If
+  the element's <span title="concept-fe-checked">checkedness</span>
+  state is true, the control represents the selected control in the
+  group, and if it is false, it indicates a control in the group that
+  is not selected.</p>
 
   <p>The <dfn><i>radio button group</i></dfn> that contains an
   <code>input</code> element <var title="">a</var> also contains all
@@ -30960,6 +34241,8 @@
   <p>A document must not contain an <code>input</code> element whose
   <i>radio button group</i> contains only that element.</p>
 
+  <div class="impl">
+
   <p>When any of the following events occur, if the element's <span
   title="concept-fe-checked">checkedness</span> state is true after
   the event, the <span
@@ -30999,13 +34282,15 @@
   false, then the element is <span>suffering from being
   missing</span>.</p>
 
+  </div>
+
   <p class="note">If none of the radio buttons in a <span>radio button
   group</span> are checked when they are inserted into the document,
   then they will all be initially unchecked in the interface, until
   such time as one of them is checked (either by the user or by
   script).</p>
 
-  <div class="bookkeeping">
+  <div class="bookkeeping impl">
 
    <p>The following common <code>input</code> element content
    attributes and DOM attributes apply to the element:
@@ -31065,16 +34350,22 @@
 
   <h6><dfn title="attr-input-type-file">File Upload</dfn> state</h6>
 
+  <div class="impl">
+
   <p>When an <code>input</code> element's <code
   title="attr-input-type">type</code> attribute is in the <span
   title="attr-input-type-file">File Upload</span> state, the rules in this
   section apply.</p>
+  
+  </div>
 
-  <p>The <code>input</code> element <span>represents</span> a list of <dfn
-  title="concept-input-type-file-selected">selected files</dfn>, each
-  file consisting of a file name, a file type, and a file body (the
-  contents of the file).</p>
+  <p>The <code>input</code> element <span>represents</span> a list of
+  <dfn title="concept-input-type-file-selected">selected files</dfn>,
+  each file consisting of a file name, a file type, and a file body
+  (the contents of the file).</p>
 
+  <div class="impl">
+
   <p>If the element is <i title="concept-input-mutable">mutable</i>,
   the user agent should allow the user to change the files on the
   list, e.g. adding or removing files. Files can be from the
@@ -31091,6 +34382,8 @@
   attribute is set, there must be no more than one file in the list of
   <span title="concept-input-type-file-selected">selected
   files</span>.</p>
+  
+  </div>
 
   <hr>
 
@@ -31126,16 +34419,20 @@
 
   <p>The tokens must not be <span>ASCII case-insensitive</span>
   matches for any of the other tokens (i.e. duplicates are not
-  allowed). To obtain the list of tokens from the attribute, the user
-  agent must <span title="split a string on commas">split the
-  attribute value on commas</span>.</p>
+  allowed). <span class="impl">To obtain the list of tokens from the
+  attribute, the user agent must <span title="split a string on
+  commas">split the attribute value on commas</span>.</span></p>
 
+  <div class="impl">
+
   <p>User agents should prevent the user from selecting files that are
   not accepted by one (or more) of these tokens.</p>
+  
+  </div>
 
   <hr>
 
-  <div class="bookkeeping">
+  <div class="bookkeeping impl">
 
    <p>The following common <code>input</code> element content
    attributes apply to the element:
@@ -31197,20 +34494,26 @@
 
   <h6><dfn title="attr-input-type-submit">Submit Button</dfn> state</h6>
 
+  <div class="impl">
+
   <p>When an <code>input</code> element's <code
   title="attr-input-type">type</code> attribute is in the <span
   title="attr-input-type-submit">Submit Button</span> state, the rules
   in this section apply.</p>
+  
+  </div>
 
-  <p>The <code>input</code> element <span>represents</span> a button that, when
-  activated, submits the form. If the element has a <code
-  title="attr-input-value">value</code> attribute, the button's label
-  must be the value of that attribute; otherwise, it must be an
-  implementation-defined string that means "Submit" or some such. The
-  element is a <span title="concept-button">button</span>,
-  specifically a <span title="concept-submit-button">submit
-  button</span>.</p>
+  <p>The <code>input</code> element <span>represents</span> a button
+  that, when activated, submits the form. <span class="impl">If the
+  element has a <code title="attr-input-value">value</code> attribute,
+  the button's label must be the value of that attribute; otherwise,
+  it must be an implementation-defined string that means "Submit" or
+  some such.</span> The element is a <span
+  title="concept-button">button</span>, specifically a <span
+  title="concept-submit-button">submit button</span>.</p>
 
+  <div class="impl">
+
   <p>If the element is <i title="concept-input-mutable">mutable</i>,
   the user agent should allow the user to activate the element.</p>
 
@@ -31219,6 +34522,8 @@
   title="concept-form-submit">submit</span> the <span>form
   owner</span> from the <code>input</code> element; otherwise, it is
   to do nothing.</p>
+  
+  </div>
 
   <p>The <code title="attr-fs-action">action</code>, <code
   title="attr-fs-enctype">enctype</code>, <code
@@ -31227,7 +34532,7 @@
   title="attr-fs-target">target</code> attributes are <span>attributes
   for form submission</span>.</p>
 
-  <div class="bookkeeping">
+  <div class="bookkeeping impl">
 
    <p>The following common <code>input</code> element content
    attributes and DOM attributes apply to the element:
@@ -31285,15 +34590,19 @@
 
   <h6><dfn title="attr-input-type-image">Image Button</dfn> state</h6>
 
+  <div class="impl">
+
   <p>When an <code>input</code> element's <code
   title="attr-input-type">type</code> attribute is in the <span
   title="attr-input-type-image">Image Button</span> state, the rules
   in this section apply.</p>
+  
+  </div>
 
-  <p>The <code>input</code> element <span>represents</span> either an image from
-  which a user can select a coordinate and submit the form, or
-  alternatively a button from which the user can submit the form. The
-  element is a <span title="concept-button">button</span>,
+  <p>The <code>input</code> element <span>represents</span> either an
+  image from which a user can select a coordinate and submit the form,
+  or alternatively a button from which the user can submit the
+  form. The element is a <span title="concept-button">button</span>,
   specifically a <span title="concept-submit-button">submit
   button</span>.</p>
 
@@ -31306,6 +34615,8 @@
   optionally animated, image resource that is neither paged nor
   scripted.</p>
 
+  <div class="impl">
+
   <p>When any of the following events occur, unless the user agent
   cannot support images, or its support for images has been disabled,
   or the user agent only fetches elements on demand, the user agent
@@ -31381,6 +34692,8 @@
   <code>input</code> element.</p>
 
   <hr>
+  
+  </div>
 
   <p>The <dfn title="attr-input-alt"><code>alt</code></dfn> attribute
   provides the textual label for the alternative button for users and
@@ -31391,12 +34704,14 @@
   <p>The <code>input</code> element supports <span>dimension
   attributes</span>.</p>
 
+  <div class="impl">
+
   <hr>
 
   <p>If the <code title="attr-input-src">src</code> attribute is set,
   and the image is <i>available</i> and the user agent is configured
-  to display that image, then: The element <span>represents</span> a control for
-  selecting a <span
+  to display that image, then: The element <span>represents</span> a
+  control for selecting a <span
   title="concept-input-type-image-coordinate">coordinate</span> from
   the image specified by the <code title="attr-input-src">src</code>
   attribute; if the element is <i
@@ -31413,9 +34728,9 @@
   selecting a coordinate, then the coordinate (0,0) must be
   assumed.</p>
 
-  <p>Otherwise, the element <span>represents</span> a submit button whose label is
-  given by the value of the <code title="attr-input-alt">alt</code>
-  attribute; if the element is <i
+  <p>Otherwise, the element <span>represents</span> a submit button
+  whose label is given by the value of the <code
+  title="attr-input-alt">alt</code> attribute; if the element is <i
   title="concept-input-mutable">mutable</i>, the user agent should
   allow the user to activate the button. The <span>activation
   behavior</span> in this case consists of setting the <span
@@ -31441,6 +34756,8 @@
   behavior sometimes does some sure wacky things. -->
 
   <hr>
+  
+  </div>
 
   <p>The <code title="attr-fs-action">action</code>, <code
   title="attr-fs-enctype">enctype</code>, <code
@@ -31449,7 +34766,7 @@
   title="attr-fs-target">target</code> attributes are <span>attributes
   for form submission</span>.</p>
 
-  <div class="bookkeeping">
+  <div class="bookkeeping impl">
 
    <p>The following common <code>input</code> element content
    attributes and DOM attributes apply to the element:
@@ -31516,18 +34833,25 @@
 
   <h6><dfn title="attr-input-type-reset">Reset Button</dfn> state</h6>
 
+  <div class="impl">
+
   <p>When an <code>input</code> element's <code
   title="attr-input-type">type</code> attribute is in the <span
   title="attr-input-type-reset">Reset Button</span> state, the rules
   in this section apply.</p>
+  
+  </div>
 
-  <p>The <code>input</code> element <span>represents</span> a button that, when
-  activated, resets the form. If the element has a <code
-  title="attr-input-value">value</code> attribute, the button's label
-  must be the value of that attribute; otherwise, it must be an
-  implementation-defined string that means "Reset" or some such. The
-  element is a <span title="concept-button">button</span>.</p>
+  <p>The <code>input</code> element <span>represents</span> a button
+  that, when activated, resets the form. <span class="impl">If the
+  element has a <code title="attr-input-value">value</code> attribute,
+  the button's label must be the value of that attribute; otherwise,
+  it must be an implementation-defined string that means "Reset" or
+  some such.</span> The element is a <span
+  title="concept-button">button</span>.</p>
 
+  <div class="impl">
+
   <p>If the element is <i title="concept-input-mutable">mutable</i>,
   the user agent should allow the user to activate the element.</p>
 
@@ -31538,12 +34862,14 @@
 
   <p><strong>Constraint validation:</strong> The element is
   <span>barred from constraint validation</span>.</p>
+  
+  </div>
 
-  <p>The <code title="dom-input-value">value</code> DOM attribute
-  applies to this element and is in mode <span
-  title="dom-input-value-default">default</span>.</p>
+  <div class="bookkeeping impl">
 
-  <div class="bookkeeping">
+   <p>The <code title="dom-input-value">value</code> DOM attribute
+   applies to this element and is in mode <span
+   title="dom-input-value-default">default</span>.</p>
 
    <p>The following content attributes must not be specified and do not
    apply to the element:
@@ -31594,30 +34920,38 @@
 
   <h6><dfn title="attr-input-type-button">Button</dfn> state</h6>
 
+  <div class="impl">
+
   <p>When an <code>input</code> element's <code
   title="attr-input-type">type</code> attribute is in the <span
   title="attr-input-type-button">Button</span> state, the rules in
   this section apply.</p>
+  
+  </div>
 
-  <p>The <code>input</code> element <span>represents</span> a button with no
-  default behavior. If the element has a <code
-  title="attr-input-value">value</code> attribute, the button's label
-  must be the value of that attribute; otherwise, it must be the empty
-  string. The element is a <span
+  <p>The <code>input</code> element <span>represents</span> a button
+  with no default behavior. <span class="impl">If the element has a
+  <code title="attr-input-value">value</code> attribute, the button's
+  label must be the value of that attribute; otherwise, it must be the
+  empty string.</span> The element is a <span
   title="concept-button">button</span>.</p>
 
+  <div class="impl">
+
   <p>If the element is <i title="concept-input-mutable">mutable</i>,
   the user agent should allow the user to activate the element. The
   element's <span>activation behavior</span> is to do nothing.</p>
 
   <p><strong>Constraint validation:</strong> The element is
   <span>barred from constraint validation</span>.</p>
+  
+  </div>
 
-  <p>The <code title="dom-input-value">value</code> DOM attribute
-  applies to this element and is in mode <span
-  title="dom-input-value-default">default</span>.</p>
+  <div class="bookkeeping impl">
 
-  <div class="bookkeeping">
+   <p>The <code title="dom-input-value">value</code> DOM attribute
+   applies to this element and is in mode <span
+   title="dom-input-value-default">default</span>.</p>
 
    <p>The following content attributes must not be specified and do not
    apply to the element:
@@ -31667,16 +35001,19 @@
 
 
 
-
   <h5>Common <code>input</code> element attributes</h5>
 
+  <div class="impl">
+
   <p>These attributes only apply to an <code>input</code> element if
   its <code title="attr-input-type">type</code> attribute is in a
   state whose definition declares that the attribute applies. When an
   attribute doesn't apply to an <code>input</code> element, user
   agents must <span>ignore</span> the attribute.</p>
 
+  </div>
 
+
   <h6>The <code title="attr-input-autocomplete">autocomplete</code> attribute</h6>
 
   <p>The <dfn
@@ -31712,6 +35049,8 @@
   title="attr-form-autocomplete">autocomplete</code> attribute on the
   element's <span>form owner</span> instead.</p>
 
+  <div class="impl">
+
   <p>Each <code>input</code> element has a <dfn>resulting
   autocompletion state</dfn>, which is either <i title="">on</i> or <i
   title="">off</i>.</p>
@@ -31751,6 +35090,8 @@
   when the user agent <span title="stop parsing">stops
   parsing</span>).</p>
 
+  </div>
+
   <div class="example">
 
    <p>Banks frequently do not want UAs to prefill login
@@ -31761,6 +35102,8 @@
 
   </div>
 
+  <div class="impl">
+
   <p>A user agent may allow the user to override the <span>resulting
   autocompletion state</span> and set it to always <i title="">on</i>,
   always allowing values to be remembered and prefilled), or always <i
@@ -31770,8 +35113,10 @@
   significant security implications for the user if all values are
   always remembered, regardless of the site's preferences.</p>
 
+  </div>
 
 
+
   <h6>The <code title="attr-input-list">list</code> attribute</h6>
 
   <p>The <dfn title="attr-input-list"><code>list</code></dfn>
@@ -31781,6 +35126,8 @@
   <p>If present, its value must be the ID of a <code>datalist</code>
   element in the same document.</p>
 
+  <div class="impl">
+
   <p>The <dfn title="concept-input-list">suggestions source
   element</dfn> is the first element in the document in <span>tree
   order</span> to have an ID equal to the value of the <code
@@ -31825,20 +35172,28 @@
   not apply, there is no <span title="concept-input-list">suggestions
   source element</span>.</p>
 
+  </div>
 
+
   <h6>The <code title="attr-input-readonly">readonly</code> attribute</h6>
 
   <p>The <dfn title="attr-input-readonly"><code>readonly</code></dfn>
-  attribute is a <span>boolean attribute</span>. When specified, the
-  element is <i title="concept-input-immutable">immutable</i>.</p>
+  attribute is a <span>boolean attribute</span> that controls whether
+  or not the use can edit the form control. <span class="impl">When
+  specified, the element is <i
+  title="concept-input-immutable">immutable</i>.</span></p>
 
+  <div class="impl">
+
   <p><strong>Constraint validation:</strong> If the <code
   title="attr-input-readonly">readonly</code> attribute is specified
   on an <code>input</code> element, the element is <span>barred from
   constraint validation</span>.</p>
 
+  </div>
 
 
+
   <h6>The <code title="attr-input-size">size</code> attribute</h6>
 
   <p>The <dfn title="attr-input-size"><code>size</code></dfn>
@@ -31850,6 +35205,8 @@
   specified, must have a value that is a <span>valid non-negative
   integer</span> greater than zero.</p>
 
+  <div class="impl">
+
   <p>If the attribute is present, then its value must be parsed using
   the <span>rules for parsing non-negative integers</span>, and if the
   result is a number greater than zero, then the user agent should
@@ -31858,8 +35215,10 @@
   <p>The <code title="dom-input-size">size</code> DOM attribute
   <span>limited to only positive non-zero numbers</span>.</p>
 
+  </div>
 
 
+
   <h6>The <code title="attr-input-required">required</code> attribute</h6>
 
   <p>The <dfn title="attr-input-required"><code>required</code></dfn>
@@ -31867,6 +35226,8 @@
   element is <dfn
   title="concept-input-required"><i>required</i></dfn>.</p>
 
+  <div class="impl">
+
   <p><strong>Constraint validation:</strong> If the element is <i
   title="concept-input-required">required</i>, and its <code
   title="dom-input-value">value</code> DOM attribute applies and is in
@@ -31876,8 +35237,10 @@
   string, then the element is <span>suffering from being
   missing</span>.</p>
 
+  </div>
 
 
+
   <h6>The <code title="attr-input-multiple">multiple</code> attribute</h6>
 
   <p>The <dfn title="attr-input-multiple"><code>multiple</code></dfn>
@@ -31889,11 +35252,13 @@
   <h6>The <code title="attr-input-maxlength">maxlength</code> attribute</h6>
 
   <p>The <dfn
-  title="attr-input-maxlength"><code>maxlength</code></dfn> attribute,
-  when it applies, is a <span title="attr-fe-maxlength">form control
-  <code title="">maxlength</code> attribute</span> controlled by the
-  <code>input</code> element's <span
-  title="concept-input-value-dirty-flag">dirty value flag</span>.</p>
+  title="attr-input-maxlength"><code>maxlength</code></dfn>
+  attribute<span class="impl">, when it applies,</span> is a <span
+  title="attr-fe-maxlength">form control <code
+  title="">maxlength</code> attribute</span><span class="impl">
+  controlled by the <code>input</code> element's <span
+  title="concept-input-value-dirty-flag">dirty value
+  flag</span></span>.</p>
 
   <p>If the <code>input</code> element has a <span>maximum allowed
   value length</span>, then the <span>codepoint length</span> of the
@@ -31913,6 +35278,8 @@
   title="">Pattern</i> production of ECMA 262's grammar. <a
   href="#refsECMA262">[ECMA262]</a></p>
 
+  <div class="impl">
+
   <p><strong>Constraint validation:</strong> If the element's <span
   title="concept-fe-value">value</span> is not the empty string, and
   the element's <code title="attr-input-pattern">pattern</code>
@@ -31933,6 +35300,8 @@
   as if it implied a <code title="">^(?:</code> at the start of the
   pattern and a <code title="">)$</code> at the end).</p>
 
+  </div>
+
   <p>When an <code>input</code> element has a <code
   title="attr-input-pattern">pattern</code> attribute specified,
   authors should include a <code title="attr-title">title</code>
@@ -31966,13 +35335,17 @@
   something like <samp>The text you have entered does not match the
   required pattern. Birthday</samp>, which is not useful.</p>
 
+  <div class="impl">
+
   <p>UAs may still show the <code>title</code> in non-error situations
   (for example, as a tooltip when hovering over the control), so
   authors should be careful not to word <code>title</code>s as if an
   error has necessarily occurred.</p>
 
+  </div>
 
 
+
   <h6>The <code title="attr-input-min">min</code> and <code
   title="attr-input-max">max</code> attributes</h6>
 
@@ -31980,6 +35353,8 @@
   title="attr-input-max"><code>max</code></dfn> attributes indicate
   the allowed range of values for the element.</p>
 
+  <div class="impl">
+
   <p>Their syntax is defined by the section that defines the <code
   title="attr-input-type">type</code> attribute's current state.</p>
 
@@ -32045,18 +35420,20 @@
   <span>suffering from an underflow</span> or <span>suffering from an
   overflow</span>.</p>
 
+  </div>
 
+
   <h6>The <code title="attr-input-step">step</code> attribute</h6>
 
   <p>The <dfn title="attr-input-step"><code>step</code></dfn>
   attribute indicates the granularity that is expected (and required)
-  of the <span title="concept-fe-value">value</span>, by limiting
-  the allowed values. The section that defines the <code
-  title="attr-input-type">type</code> attribute's current state also
-  defines the <dfn title="concept-input-step-default">default
-  step</dfn> and the <dfn title="concept-input-step-scale">step
-  scale factor</dfn>, which are used in processing the attribute as
-  described below.</p>
+  of the <span title="concept-fe-value">value</span>, by limiting the
+  allowed values. <span class="impl">The section that defines the
+  <code title="attr-input-type">type</code> attribute's current state
+  also defines the <dfn title="concept-input-step-default">default
+  step</dfn> and the <dfn title="concept-input-step-scale">step scale
+  factor</dfn>, which are used in processing the attribute as
+  described below.</span></p>
 
   <p>The <code title="attr-input-step">step</code> attribute, if
   specified, must either have a value that is a <span>valid floating
@@ -32066,6 +35443,8 @@
   case-insensitive</span> match for the string "<code
   title="">any</code>".</p>
 
+  <div class="impl">
+
   <p>The attribute provides the <dfn
   title="concept-input-step">allowed value step</dfn> for the element,
   as follows:</p>
@@ -32120,8 +35499,10 @@
   title="concept-input-step">allowed value step</span>, the element is
   <span>suffering from a step mismatch</span>.</p>
 
+  </div>
 
 
+
   <h6>The <code title="attr-input-placeholder">placeholder</code> attribute</h6>
 
   <p>The <dfn
@@ -32139,12 +35520,16 @@
   attribute should not be used as an alternative to a
   <code>label</code>.</p>
 
+  <div class="impl">
+
   <p>User agents should present this hint to the user, after having
   <span title="strip line breaks">stripped line breaks</span> from it,
   when the element's <span title="concept-fe-value">value</span> is
   the empty string and the control is not focused (e.g. by displaying
   it inside a blank unfocused control).</p>
 
+  </div>
+
   <div class="example">
 
    <p>Here is an example of a mail configuration user interface that
@@ -32165,6 +35550,108 @@
 
   <h5>Common <code>input</code> element APIs</h5>
 
+  <dl class="domintro">
+
+   <dt><var title="">input</var> . <code title="dom-input-value">value</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the current <span title="concept-fe-value">value</span>
+    of the form control.</p>
+
+    <p>Can be set, to change the value.</p>
+
+    <p>Throws an <code>INVALID_ACCESS_ERR</code> exception if it is
+    set when the control is a file upload control.</p>
+
+   </dd>
+
+   <dt><var title="">input</var> . <code title="dom-input-checked">checked</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the current <span
+    title="concept-fe-checked">checkedness</span> of the form
+    control.</p>
+
+    <p>Can be set, to change the <span
+    title="concept-fe-checked">checkedness</span>.</p>
+
+   </dd>
+
+   <dt><var title="">input</var> . <code title="dom-input-valueAsDate">valueAsDate</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns a <code>Date</code> object representing the form
+    control's <span title="concept-fe-value">value</span>, if
+    applicable; otherwise, returns null.</p>
+
+    <p>Can be set, to change the value.</p>
+
+    <p>Throws an <code>INVALID_ACCESS_ERR</code> exception if the
+    control isn't date- or time-based.</p>
+
+   </dd>
+
+   <dt><var title="">input</var> . <code title="dom-input-valueAsNumber">valueAsNumber</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns a number representing the form control's <span
+    title="concept-fe-value">value</span>, if applicable; otherwise,
+    returns null.</p>
+
+    <p>Can be set, to change the value.</p>
+
+    <p>Throws an <code>INVALID_ACCESS_ERR</code> exception if the
+    control is neither date- or time-based nor numeric.</p>
+
+   </dd>
+
+   <dt><var title="">input</var> . <code title="dom-input-stepUp">stepUp</code>()</dt>
+   <dt><var title="">input</var> . <code title="dom-input-stepDown">stepDown</code>()</dt>
+
+   <dd>
+
+    <p>Changes the the form control's <span
+    title="concept-fe-value">value</span> by the value given in the
+    <code title="attr-input-step">step</code> attribute.</p>
+
+    <p>Throws <code>INVALID_ACCESS_ERR</code> exception if the control
+    is neither date- or time-based nor numeric, if the <code
+    title="attr-input-step">step</code> attribute's value is "<code
+    title="">any</code>", if the current <span
+    title="concept-fe-value">value</span> could not be parsed, or if
+    stepping in the given direction would take the value out of
+    range.</p>
+
+   </dd>
+
+   <dt><var title="">input</var> . <code title="dom-input-list">list</code></dt>
+
+   <dd>
+
+    <p>Returns the <code>datalist</code> element indicated by the
+    <code title="attr-input-list">list</code> attribute.</p>
+
+   </dd>
+
+   <dt><var title="">input</var> . <code title="dom-input-selectedOption">selectedOption</code></dt>
+
+   <dd>
+
+    <p>Returns the <code>option</code> element from the
+    <code>datalist</code> element indicated by the <code
+    title="attr-input-list">list</code> attribute that matches the
+    form control's <span title="concept-fe-value">value</span>.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-input-value"><code>value</code></dfn> DOM
   attribute allows scripts to manipulate the <span
   title="concept-fe-value">value</span> of an <code>input</code>
@@ -32331,21 +35818,16 @@
    these steps; otherwise, let <var title="">value</var> be the result
    of that algorithm.</p></li>
 
+   <li><p>Let <var title="">delta</var> be the <span
+   title="concept-input-step">allowed value step</span>.</p></li>
+
    <li><p>If the method invoked was the <code
    title="dom-input-stepDown">stepDown()</code> method, negate <var
-   title="">value</var>.</p></li>
+   title="">delta</var>.</p></li>
 
-   <li><p>Let <var title="">value</var> be the result of adding the
-   <span title="concept-input-step">allowed value step</span> to <var
-   title="">value</var>.</p></li>
+   <li><p>Let <var title="">value</var> be the result of adding <var
+   title="">delta</var> to <var title="">value</var>.</p></li>
 
-   <li><p>Let <var title="">value as string</var> be the result of
-   running the <span
-   title="concept-input-value-number-string">algorithm to convert a
-   number to a string</span>, as defined for the <code>input</code>
-   element's <code title="attr-input-type">type</code> attribute's
-   current state, on <var title="">value</var>.</p></li>
-
    <li><p>If the element has a <span
    title="concept-input-min">minimum</span>, and the <var
    title="">value</var> is less than that <span
@@ -32358,6 +35840,13 @@
    title="concept-input-max">maximum</span>, then throw a
    <code>INVALID_ACCESS_ERR</code> exception.</p></li>
 
+   <li><p>Let <var title="">value as string</var> be the result of
+   running the <span
+   title="concept-input-value-number-string">algorithm to convert a
+   number to a string</span>, as defined for the <code>input</code>
+   element's <code title="attr-input-type">type</code> attribute's
+   current state, on <var title="">value</var>.</p></li>
+
    <li><p>Set the <span title="concept-fe-value">value</span> of the
    element to <var title="">value as string</var>.</p></li>
 
@@ -32383,7 +35872,11 @@
   title="dom-input-selectedOption">selectedOption</code> attribute
   must return null.</p>
 
+  </div>
 
+
+  <div class="impl">
+
   <h5>Common event behaviors</h5>
 
   <p>When the <dfn title="event-input-input"><code>input</code></dfn>
@@ -32477,8 +35970,10 @@
   title="concept-tasks">task</span> is the <span>user interaction task
   source</span>.</p>
 
+  </div>
 
 
+
   <h4>The <dfn><code>button</code></dfn> element</h4>
 
   <dl class="element">
@@ -32530,10 +36025,10 @@
    </dd> 
   </dl>
 
-  <p>The <code>button</code> element <span>represents</span> a button. If the
-  element is not <span title="concept-fe-disabled">disabled</span>,
-  then the user agent should allow the user to activate the
-  button.</p>
+  <p>The <code>button</code> element <span>represents</span> a
+  button. <span class="impl">If the element is not <span
+  title="concept-fe-disabled">disabled</span>, then the user agent
+  should allow the user to activate the button.</span></p>
 
   <p>The element is a <span title="concept-button">button</span>.</p>
 
@@ -32574,6 +36069,8 @@
   state, the element is specifically a <span
   title="concept-submit-button">submit button</span>.</p>
 
+  <div class="impl">
+
   <p>If the element is not <span
   title="concept-fe-disabled">disabled</span>, the <span>activation
   behavior</span> of the <code>button</code> element is to run the
@@ -32600,6 +36097,8 @@
 
   </dl>
 
+  </div>
+
   <p>The <code title="attr-fae-form">form</code> attribute is used to
   explicitly associate the <code>button</code> element with its
   <span>form owner</span>. The <code title="attr-fe-name">name</code>
@@ -32628,6 +36127,8 @@
   form submission if the button itself was used to initiate the form
   submission.</p>
 
+  <div class="impl">
+
   <p>The <dfn title="dom-button-value"><code>value</code></dfn> and
   <dfn title="dom-button-type"><code>type</code></dfn> DOM attributes
   must <span>reflect</span> the respective content attributes of the
@@ -32643,8 +36144,11 @@
   <code title="dom-lfe-labels">labels</code> attribute provides a list
   of the element's <code>label</code>s.</p>
 
+  </div>
 
 
+
+
   <h4>The <dfn><code>select</code></dfn> element</h4>
 
   <dl class="element">
@@ -32718,11 +36222,12 @@
 
   <p>The <dfn title="attr-select-multiple"><code>multiple</code></dfn>
   attribute is a <span>boolean attribute</span>. If the attribute is
-  present, then the <code>select</code> element <span>represents</span> a control
-  for selecting zero or more options from the <span
-  title="concept-select-option-list">list of options</span>. If the
-  attribute is absent, then the <code>select</code> element <span>represents</span>
-  a control for selecting a single option from the <span
+  present, then the <code>select</code> element
+  <span>represents</span> a control for selecting zero or more options
+  from the <span title="concept-select-option-list">list of
+  options</span>. If the attribute is absent, then the
+  <code>select</code> element <span>represents</span> a control for
+  selecting a single option from the <span
   title="concept-select-option-list">list of options</span>.</p>
 
   <p>The <dfn title="concept-select-option-list">list of options</dfn>
@@ -32744,6 +36249,8 @@
   then the <code title="attr-input-size">size</code> attribute's
   default value is 1.</p>
 
+  <div class="impl">
+
   <p>If the <code title="attr-select-multiple">multiple</code>
   attribute is absent, and the element is not <span
   title="concept-fe-disabled">disabled</span>, then the user agent
@@ -32827,6 +36334,8 @@
   title="attr-option-selected">selected</code> attribute, and false
   otherwise.</p>
 
+  </div>
+
   <p>The <code title="attr-fae-form">form</code> attribute is used to
   explicitly associate the <code>select</code> element with its
   <span>form owner</span>. The <code title="attr-fe-name">name</code>
@@ -32836,6 +36345,104 @@
   submitted. The <code title="attr-fe-autofocus">autofocus</code>
   attribute controls focus.</p>
 
+  <dl class="domintro">
+
+   <dt><var title="">select</var> . <code title="dom-select-type">type</code></dt>
+
+   <dd>
+
+    <p>Returns "<code title="">select-multiple</code>" if the element
+    has a <code title="attr-select-multiple">multiple</code>
+    attribute, and "<code title="">select-one</code>"
+    otherwise.</p>
+
+   </dd>
+
+   <dt><var title="">select</var> . <code title="dom-select-options">options</code></dt>
+
+   <dd>
+
+    <p>Returns an <code>HTMLOptionsCollection</code> of the <span
+    title="concept-select-option-list">list of options</span>.</p>
+
+   </dd>
+
+   <dt><var title="">select</var> . <code title="dom-select-length">length</code> [ = <var title="">value</var> ]</dt>
+   <dd>
+    <p>Returns the number of elements in the <span title="concept-select-option-list">list of options</span>.</p>
+    <p>When set to a smaller number, truncates the number of <code>option</code> elements in the <code>select</code>.</p>
+    <p>When set to a greater number, adds new blank <code>option</code> elements to the <code>select</code>.</p>
+   </dd>
+
+   <dt><var title="">element</var> = <var title="">select</var> . <code title="dom-select-item">item</code>(<var title="">index</var>)</dt>
+   <dt><var title="">select</var>[<var title="">index</var>]</dt>
+   <dd>
+    <p>Returns the item with index <var title="">index</var> from the <span title="concept-select-option-list">list of options</span>. The items are sorted in <span>tree order</span>.</p>
+    <p>Returns null if <var title="">index</var> is out of range.</p>
+   </dd>
+
+   <dt><var title="">element</var> = <var title="">select</var> . <code title="dom-select-item">namedItem</code>(<var title="">name</var>)</dt>
+   <dt><var title="">select</var>[<var title="">name</var>]</dt>
+   <dd>
+    <p>Returns the item with ID or <code title="attr-option-name">name</code> <var title="">name</var> from the <span title="concept-select-option-list">list of options</span>.</p>
+    <p>If there are multiple matching items, then a <code>NodeList</code> object containing all those elements is returned.</p>
+    <p>Returns null if no element with that ID could be found.</p>
+   </dd>
+
+   <dt><var title="">select</var> . <code title="dom-select-add">add</code>(<var title="">element</var>, <var title="">before</var>)</dt>
+   <dd>
+    <p>Inserts <var title="">element</var> before the node given by <var title="">before</var>.</p>
+    <p>The <var title="">before</var> argument can be a number, in
+    which case <var title="">element</var> is inserted before the item
+    with that number, or an element from the <span title="concept-select-option-list">list of options</span>, in which case
+    <var title="">element</var> is inserted before that element.</p>
+    <p>If <var title="">before</var> is null or a number out of range,
+    then <var title="">element</var> will be added at the end of the
+    list.</p>
+    <p>This method will throw a <code>HIERARCHY_REQUEST_ERR</code>
+    exception if <var title="">element</var> is an ancestor of the
+    element into which it is to be inserted. If <var
+    title="">element</var> is not an <code>option</code> or
+    <code>optgroup</code> element, then the method does nothing.</p>
+   </dd>
+
+   <dt><var title="">select</var> . <code title="dom-select-selectedOptions">selectedOptions</code></dt>
+
+   <dd>
+
+    <p>Returns an <code>HTMLCollection</code> of the <span
+    title="concept-select-option-list">list of options</span> that are
+    selected.</p>
+
+   </dd>
+
+   <dt><var title="">select</var> . <code title="dom-select-selectedIndex">selectedIndex</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the index of the first selected item, if any, or
+    &#x2212;1 if there is no selected item.</p>
+
+    <p>Can be set, to change the selection.</p>
+
+   </dd>
+
+   <dt><var title="">select</var> . <code title="dom-select-value">value</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the <span title="concept-fe-value">value</span> of the
+    first selected item, if any, or the empty string if there is no
+    selected item.</p>
+
+    <p>Can be set, to change the selection.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-select-type"><code>type</code></dfn> DOM
   attribute, on getting, must return the string "<code
   title="">select-one</code>" if the <code
@@ -32851,11 +36458,7 @@
   options</span>.</p>
 
   <p>The <code title="dom-select-options">options</code> collection is
-  also mirrored on the <code>HTMLSelectElement</code> object. The <dfn
-  title="dom-select-length"><code>length</code></dfn> DOM attribute
-  must return the number of nodes <span title="represented by the
-  collection">represented</span> by the <code
-  title="dom-select-options">options</code> collection. The
+  also mirrored on the <code>HTMLSelectElement</code> object. The
   <span>indices of the supported indexed properties</span> at any
   instant are the indicies supported by the object returned by the
   <code title="dom-select-options">options</code> attribute at that
@@ -32864,6 +36467,13 @@
   <code title="dom-select-options">options</code> attribute at that
   instant.</p>
 
+  <p>The <dfn title="dom-select-length"><code>length</code></dfn> DOM
+  attribute must return the number of nodes <span title="represented
+  by the collection">represented</span> by the <code
+  title="dom-select-options">options</code> collection. On setting, it
+  must act like the attribute of the same name on the <code
+  title="dom-select-options">options</code> collection.</p>
+
   <p>The <dfn title="dom-select-item"><code>item(<var
   title="">index</var>)</code></dfn> method must return the value
   returned by the method of the same name on the <code
@@ -32899,7 +36509,7 @@
   title="concept-select-option-list">list of options</span> in
   <span>tree order</span> that has its <span
   title="concept-option-selectedness">selectedness</span> set to true,
-  if any. If there isn't one, then it must return -1.</p>
+  if any. If there isn't one, then it must return &#x2212;1.</p>
 
   <p>On setting, the <code
   title="dom-select-selectedIndex">selectedIndex</code> attribute must
@@ -32954,6 +36564,7 @@
   <code title="dom-lfe-labels">labels</code> attribute provides a list
   of the element's <code>label</code>s.</p>
 
+  </div>
 
 
   <h4>The <dfn><code>datalist</code></dfn> element</h4>
@@ -32982,14 +36593,27 @@
   other controls. The contents of the element represents fallback
   content for legacy user agents, intermixed with <code>option</code>
   elements that represent the predefined options. In the rendering,
-  the <code>datalist</code> element <span>represents</span> nothing and it, along
-  with its children, should be hidden.</p>
+  the <code>datalist</code> element <span>represents</span>
+  nothing<span class="impl"> and it, along with its children, should
+  be hidden</span>.</p>
 
   <p>The <code>datalist</code> element is hooked up to an
   <code>input</code> element using the <code
   title="attr-input-list">list</code> attribute on the
   <code>input</code> element.</p>
 
+  <dl class="domintro">
+
+   <dt><var title="">datalist</var> . <code title="dom-datalist-options">options</code></dt>
+
+   <dd>
+    <p>Returns an <code>HTMLCollection</code> of the <code>options</code> elements of the table.</p>
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-datalist-options"><code>options</code></dfn>
   DOM attribute must return an <code>HTMLCollection</code> rooted at
   the <code>datalist</code> node, whose filter matches
@@ -32999,7 +36623,9 @@
   <code>datalist</code> element ancestor, it is <span>barred from
   constraint validation</span>.</p>
 
+  </div>
 
+
   <h4>The <dfn><code>optgroup</code></dfn> element</h4>
 
   <dl class="element">
@@ -33029,11 +36655,15 @@
   the <code>option</code> elements that are children of the
   <code>optgroup</code> element.</p>
 
+  <Div class="impl">
+
   <p>When showing <code>option</code> elements in <code>select</code>
   elements, user agents should show the <code>option</code> elements
   of such groups as being related to each other and separate from
   other <code>option</code> elements.</p>
 
+  </div>
+
   <p>The <dfn
   title="attr-optgroup-disabled"><code>disabled</code></dfn> attribute
   is a <span>boolean attribute</span> and can be used to <span
@@ -33042,17 +36672,22 @@
 
   <p>The <dfn title="attr-optgroup-label"><code>label</code></dfn>
   attribute must be specified. Its value gives the name of the group,
-  for the purposes of the user interface. User agents should use this
-  attribute's value when labelling the group of <code>option</code>
-  elements in a <code>select</code> element.</p>
+  for the purposes of the user interface. <span class="impl">User
+  agents should use this attribute's value when labelling the group of
+  <code>option</code> elements in a <code>select</code>
+  element.</span></p>
 
+  <div class="impl">
+
   <p>The <dfn
   title="dom-optgroup-disabled"><code>disabled</code></dfn> and <dfn
   title="dom-optgroup-label"><code>label</code></dfn> attributes must
   <span>reflect</span> the respective content attributes of the same
   name.</p>
 
+  </div>
 
+
   <h4>The <dfn><code>option</code></dfn> element</h4>
 
   <dl class="element">
@@ -33091,9 +36726,9 @@
    </dd> 
   </dl>
 
-  <p>The <code>option</code> element <span>represents</span> an option in a
-  <code>select</code> element or as part of a list of suggestions in a
-  <code>datalist</code> element.</p>
+  <p>The <code>option</code> element <span>represents</span> an option
+  in a <code>select</code> element or as part of a list of suggestions
+  in a <code>datalist</code> element.</p>
 
   <p>The <dfn title="attr-option-disabled"><code>disabled</code></dfn>
   attribute is a <span>boolean attribute</span>. An
@@ -33104,12 +36739,16 @@
   title="attr-optgroup-disabled">disabled</code> attribute is
   present.</p>
 
+  <div class="impl">
+
   <p>An <code>option</code> element that is <span
   title="attr-option-disabled">disabled</span> must prevent any <code
   title="event-click">click</code> events that are <span title="queue
   a task">queued</span> on the <span>user interaction task
   source</span> from being dispatched on the element.</p>
 
+  </div>
+
   <p>The <dfn title="attr-option-label"><code>label</code></dfn>
   attribute provides a label for element. The <dfn
   title="concept-option-label">label</dfn> of an <code>option</code>
@@ -33129,12 +36768,14 @@
   title="concept-option-selectedness">selectedness</span> of the
   element.</p>
 
+  <div class="impl">
+
   <p>The <dfn title="concept-option-selectedness">selectedness</dfn>
   of an <code>option</code> element is a boolean state, initially
   false. If the element is <span
   title="concept-option-disabled">disabled</span>, then the element's
   <span title="concept-option-selectedness">selectedness</span> is
-  always false and cannot be set to true. Unless othewise specified,
+  always false and cannot be set to true. Unless otherwise specified,
   when the element is created, its <span
   title="concept-option-selectedness">selectedness</span> must be set
   to true if the element has a <code
@@ -33161,6 +36802,54 @@
   <code>option</code> element's <span
   title="concept-option-index">index</span> is zero.</p>
 
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">option</var> . <code title="dom-option-selected">selected</code></dt>
+
+   <dd>
+
+    <p>Returns true if the element is selected, and false otherwise.</p>
+
+   </dd>
+
+   <dt><var title="">option</var> . <code title="dom-option-index">index</code></dt>
+
+   <dd>
+
+    <p>Returns the index of the element in its <code>select</code>
+    element's <code title="dom-select-options">options</code>
+    list.</p>
+
+   </dd>
+
+   <dt><var title="">option</var> . <code title="dom-option-form">form</code></dt>
+
+   <dd>
+
+    <p>Returns the element's <code>form</code> element, if any, or
+    null otherwise.</p>
+
+   </dd>
+
+   <dt><var title="">option</var> = new <code title="dom-option">Option</code>( [ <var title="">text</var> [, <var title="">value</var> [, <var title="">defaultSelected</var> [, <var title="">selected</var> ] ] ] ] )</dt>
+
+   <dd>
+
+    <p>Returns a new <code>option</code> element.</p>
+
+    <p>The <var title="">text</var> argument sets the contents of the element.</p>
+    <p>The <var title="">value</var> argument sets the <code title="attr-option-value">value</code> attribute.</p>
+    <p>The <var title="">defaultSelected</var> argument sets the <code title="attr-option-selected">selected</code> attribute.</p>
+    <p>The <var title="">selected</var> argument sets whether or not the element is selected. If it is omitted, even if the <var title="">defaultSelected</var> argument is true, the element is not selected.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-option-disabled"><code>disabled</code></dfn>,
   <dfn title="dom-option-label"><code>label</code></dfn>, and <dfn
   title="dom-option-value"><code>value</code></dfn> DOM attributes
@@ -33230,7 +36919,10 @@
   to false, even if the <var title="">defaultSelected</var> argument
   is present and true.</p>
 
+  </div>
 
+
+
   <h4>The <dfn><code>textarea</code></dfn> element</h4>
 
   <dl class="element">
@@ -33289,20 +36981,27 @@
    </dd> 
   </dl>
 
-  <p>The <code>textarea</code> element <span>represents</span> a multiline plain
-  text edit control for the element's <dfn
-  title="concept-textarea-raw-value">raw value</dfn>. The contents of
-  the control represent the control's default value.</p>
+  <p>The <code>textarea</code> element <span>represents</span> a
+  multiline plain text edit control<span class="impl"> for the
+  element's <dfn title="concept-textarea-raw-value">raw
+  value</dfn></span>. The contents of the control represent the
+  control's default value.</p>
 
+  <div class="impl">
+
   <p>The <span title="concept-textarea-raw-value">raw value</span> of
   a <code>textarea</code> control must be initially the empty
   string.</p>
 
+  </div>
+
   <p>The <dfn
   title="attr-textarea-readonly"><code>readonly</code></dfn> attribute
   is a <span>boolean attribute</span> used to control whether the text
   can be edited by the user or not.</p>
 
+  <div class="impl">
+
   <p><strong>Constraint validation:</strong> If the <code
   title="attr-textarea-readonly">readonly</code> attribute is
   specified on a <code>textarea</code> element, the element is
@@ -33349,16 +37048,20 @@
   the value of the element's <code>textContent</code> DOM
   attribute.</p>
 
+  </div>
+
   <p>The <dfn title="attr-textarea-cols"><code>cols</code></dfn>
   attribute specifies the expected maximum number of characters per
   line. If the <code title="attr-textarea-cols">cols</code> attribute
   is specified, its value must be a <span>valid non-negative
-  integer</span> greater than zero. If applying the <span>rules for
-  parsing non-negative integers</span> to the attribute's value
-  results in a number greater than zero, then the element's <dfn
-  title="attr-textarea-cols-value">character width</dfn> is that value;
-  otherwise, it is 20.</p>
+  integer</span> greater than zero. <span class="impl">If applying the
+  <span>rules for parsing non-negative integers</span> to the
+  attribute's value results in a number greater than zero, then the
+  element's <dfn title="attr-textarea-cols-value">character
+  width</dfn> is that value; otherwise, it is 20.</span></p>
 
+  <div class="impl">
+
   <p>The user agent may use the <code>textarea</code> element's <span
   title="attr-textarea-cols-value">character width</span> as a hint to
   the user as to how many characters the server prefers per line
@@ -33367,20 +37070,26 @@
   wrap the user's input in the rendering so that each line is no wider
   than this number of characters.</p>
 
+  </div>
+
   <p>The <dfn title="attr-textarea-rows"><code>rows</code></dfn>
   attribute specifies the number of lines to show. If the <code
   title="attr-textarea-rows">rows</code> attribute is specified, its
   value must be a <span>valid non-negative integer</span> greater than
-  zero. If applying the <span>rules for parsing non-negative
-  integers</span> to the attribute's value results in a number greater
-  than zero, then the element's <dfn
+  zero. <span class="impl">If applying the <span>rules for parsing
+  non-negative integers</span> to the attribute's value results in a
+  number greater than zero, then the element's <dfn
   title="attr-textarea-rows-value">character height</dfn> is that
-  value; otherwise, it is 2.</p>
+  value; otherwise, it is 2.</span></p>
 
+  <div class="impl">
+
   <p>Visual user agents should set the height of the control to the
   number of lines given by <span
   title="attr-textarea-rows-value">character height</span>.</p>
 
+  </div>
+
   <p>The <dfn title="attr-textarea-wrap"><code>wrap</code></dfn>
   attribute is an <span>enumerated attribute</span> with two keywords
   and states: the <dfn
@@ -33399,6 +37108,8 @@
   title="attr-textarea-cols">cols</code> attribute must be
   specified.</p>
 
+  <div class="impl">
+
   <p>The element's <span title="concept-fe-value">value</span> is
   defined to be the element's <span
   title="concept-textarea-raw-value">raw value</span> with the
@@ -33440,10 +37151,15 @@
   <code>textContent</code> DOM attribute is equal to or less than the
   element's <span>maximum allowed value length</span>.</p>
 
+  </div>
+
   <p>The <dfn
   title="attr-textarea-required"><code>required</code></dfn> attribute
-  is a <span>boolean attribute</span>.</p>
+  is a <span>boolean attribute</span>. When specified, the user will
+  be required to enter a value before submitting the form.</p>
 
+  <div class="impl">
+
   <p><strong>Constraint validation:</strong> If the element has its
   <code title="attr-textarea-required">required</code> attribute
   specified, and the element is <span
@@ -33451,6 +37167,8 @@
   <span title="concept-fe-value">value</span> is the empty string,
   then the element is <span>suffering from being missing</span>.</p>
 
+  </div>
+
   <p>The <code title="attr-fae-form">form</code> attribute is used to
   explicitly associate the <code>textarea</code> element with its
   <span>form owner</span>. The <code title="attr-fe-name">name</code>
@@ -33460,6 +37178,30 @@
   submitted. The <code title="attr-fe-autofocus">autofocus</code>
   attribute controls focus.</p>
 
+  <dl class="domintro">
+
+   <dt><var title="">textarea</var> . <code title="attr-textarea-type">type</code></dt>
+
+   <dd>
+
+    <p>Returns the string "<code title="">textarea</code>".</p>
+
+   </dd>
+
+   <dt><var title="">textarea</var> . <code title="attr-textarea-value">value</code></dt>
+
+   <dd>
+
+    <p>Returns the current value of the element.</p>
+
+    <p>Can be set, to change the value.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-textarea-cols"><code>cols</code></dfn>, <dfn
   title="dom-textarea-required"><code>required</code></dfn>, <dfn
   title="dom-textarea-rows"><code>rows</code></dfn>, and <dfn
@@ -33506,8 +37248,10 @@
   title="dom-textarea/input-setSelectionRange">setSelectionRange()</code>
   methods and attributes expose the element's text selection.</p>
 
+  </div>
 
 
+
   <h4>The <dfn><code>output</code></dfn> element</h4>
 
   <dl class="element">
@@ -33562,6 +37306,8 @@
   <span>form owner</span>. The <code title="attr-fe-name">name</code>
   attribute represents the element's name.</p>
 
+  <div class="impl">
+
   <p>The element has a <dfn title="concept-output-mode">value mode
   flag</dfn> which is either <i
   title="concept-output-mode-value">value</i> or <i
@@ -33602,6 +37348,42 @@
   flag</span> to <i
   title="concept-output-mode-default">default</i>.</p>
 
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">output</var> . <code title="dom-output-value">value</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the element's current value.</p>
+
+    <p>Can be set, to change the value.</p>
+
+   </dd>
+
+   <dt><var title="">output</var> . <code title="dom-output-defaultValue">defaultValue</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the element's current default value.</p>
+
+    <p>Can be set, to change the default value.</p>
+
+   </dd>
+
+   <dt><var title="">output</var> . <code title="dom-output-type">type</code></dt>
+
+   <dd>
+
+    <p>Returns the string "<code title="">output</code>".</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-output-value"><code>value</code></dfn> DOM
   attribute must act like the element's <code>textContent</code> DOM
   attribute, except that on setting, in addition, before the child
@@ -33640,8 +37422,10 @@
   elements are always <span>barred from constraint
   validation</span>.</p>
 
+  </div>
 
 
+
   <h4>Association of controls and forms</h4>
 
   <!-- XXX consider xreffing the 'ID' term in this section -->
@@ -33653,8 +37437,8 @@
   owner</span> is said to be null.</p>
 
   <p>A <span>form-associated element</span> is, by default, associated
-  with its nearest ancestor <code>form</code> element (as described
-  below), but may have a <dfn
+  with its nearest ancestor <code>form</code> element<span
+  class="impl"> (as described below)</span>, but may have a <dfn
   title="attr-fae-form"><code>form</code></dfn> attribute specified to
   override this.</p>
 
@@ -33663,6 +37447,8 @@
   value must be the ID of a <code>form</code> element in the element's
   owner <code>Document</code>.</p>
 
+  <div class="impl">
+
   <p>When a <span>form-associated element</span> is created, its
   <span>form owner</span> must be initialized to null (no owner).</p>
 
@@ -33733,6 +37519,24 @@
 
   </ol>
 
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">element</var> . <code title="dom-fae-form">form</code></dt>
+
+   <dd>
+
+    <p>Returns the element's <span>form owner</span>.</p>
+
+    <p>Returns null if there isn't one.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p><span title="form-associated element">Form-associated
   elements</span> have a <dfn
   title="dom-fae-form"><code>form</code></dfn> DOM attribute, which,
@@ -33743,8 +37547,10 @@
   <span>form owner</span>, it is <span>barred from constraint
   validation</span>.</p>
 
+  </div>
 
 
+
   <h4><dfn>Attributes common to form controls</dfn></h4>
 
   <h5>Naming form controls</h5>
@@ -33755,6 +37561,8 @@
   title="dom-form-elements">elements</code> object. If the attribute
   is specified, its value must not be the empty string.</p>
 
+  <div class="impl">
+
   <p><strong>Constraint validation:</strong> If an element does not
   have a <code title="attr-fe-name">name</code> attribute specified,
   or its <code title="attr-fe-name">name</code> attribute's value is
@@ -33765,6 +37573,7 @@
   attribute must <span>reflect</span> the <code
   title="attr-fe-name">name</code> content attribute.</p>
 
+  </div>
 
 
   <h5>Enabling and disabling form controls</h5>
@@ -33778,6 +37587,8 @@
   whose <code title="attr-fieldset-disabled">disabled</code> attribute
   is set.</p>
 
+  <div class="impl">
+
   <p>A form control that is <span
   title="concept-fe-disabled">disabled</span> must prevent any <code
   title="event-click">click</code> events that are <span title="queue
@@ -33792,8 +37603,12 @@
   attribute must <span>reflect</span> the <code
   title="attr-fe-disabled">disabled</code> content attribute.</p>
 
+  </div>
 
 
+
+  <div class="impl">
+
   <h5>A form control's value</h5>
 
   <p>Form controls have a <dfn title="concept-fe-value">value</dfn>
@@ -33801,8 +37616,10 @@
   is only used by <code>input</code> elements.) These are used to
   describe how the user interacts with the control.</p>
 
+  </div>
 
 
+
   <h5>Autofocusing a form control</h5>
 
   <p>The <dfn title="attr-fe-autofocus"><code>autofocus</code></dfn>
@@ -33817,6 +37634,8 @@
   <code title="attr-fe-autofocus">autofocus</code> attribute
   specified.</p>
 
+  <div class="impl">
+
   <p>Whenever an element with the <code
   title="attr-fe-autofocus">autofocus</code> attribute specified is
   <span title="insert an element into a document">inserted into a
@@ -33839,6 +37658,8 @@
   DOM attribute must <span>reflect</span> the content attribute of the
   same name.</p>
 
+  </div>
+
   <div class="example">
    <p>In the following snippet, the text control would be focused when
    the document was loaded.</p>
@@ -33864,6 +37685,8 @@
   its value results in an error, then there is no <span>maximum
   allowed value length</span>.</p>
 
+  <div class="impl">
+
   <p><strong>Constraint validation:</strong> If an element has a
   <span>maximum allowed value length</span>, and its <var
   title="">dirty value flag</var> is false, and the <span>codepoint
@@ -33877,8 +37700,10 @@
   <span>codepoint length</span> is greater than the element's
   <span>maximum allowed value length</span>.</p>
 
+  </div>
 
 
+
   <h5><dfn title="attributes for form submission">Form submission</dfn></h5>
 
   <p>Attributes for form submission can be specified both on
@@ -33987,6 +37812,8 @@
   title="attr-fs-novalidate">novalidate</code> attribute is present,
   and false otherwise.</p>
 
+  <div class="impl">
+
   <p>The <dfn title="dom-fs-action"><code>action</code></dfn>, <dfn
   title="dom-fs-method"><code>method</code></dfn>, <dfn
   title="dom-fs-enctype"><code>enctype</code></dfn>, and <dfn
@@ -33996,6 +37823,8 @@
   title="dom-fs-noValidate"><code>noValidate</code></dfn> DOM
   attribute must reflect the <code
   title="attr-fs-novalidate">novalidate</code> content attribute.</p>
+
+  </div>
   
 
 
@@ -34003,6 +37832,8 @@
 
   <h5>Definitions</h5>
 
+  <div class="impl">
+
   <p>A <span title="category-listed">listed form-associated
   element</span> is a <dfn>candidate for constraint validation</dfn>
   unless a condition has <dfn title="barred from constraint
@@ -34040,9 +37871,10 @@
 
    <dt> <dfn>Suffering from a type mismatch</dfn> </dt>
 
-   <dd> <p class="note">When a control that allows arbitrary user input has a <span
-   title="concept-fe-value">value</span> that is not in the correct
-   syntax (<span title="attr-input-type-email">E-mail</span>, <span
+   <dd> <p class="note">When a control that allows arbitrary user
+   input has a <span title="concept-fe-value">value</span> that is not
+   in the correct syntax (<span
+   title="attr-input-type-email">E-mail</span>, <span
    title="attr-input-type-url">URL</span>). </p></dd>
 
    <dt> <dfn>Suffering from a pattern mismatch</dfn> </dt>
@@ -34082,8 +37914,8 @@
 
    <dt> <dfn>Suffering from a custom error</dfn> </dt>
 
-   <dd> <p class="note">When a control's <span>custom validity error message</span>
-   (as set by the element's <code
+   <dd> <p class="note">When a control's <span>custom validity error
+   message</span> (as set by the element's <code
    title="dom-cva-setCustomValidity">setCustomValidity()</code>
    method) is not the empty string.</p> </dd>
 
@@ -34099,8 +37931,12 @@
   constraints</dfn> if it is not suffering from any of the above
   <span>validity states</span>.</p>
 
+  </div>
 
 
+
+  <div class="impl">
+
   <h5>Constraint validation</h5>
 
   <p>When the user agent is required to <dfn>statically validate the
@@ -34209,10 +38045,130 @@
 
   </ol>
 
+  </div>
 
 
+
   <h5>The <dfn>constraint validation API</dfn></h5>
 
+  <dl class="domintro">
+
+   <dt><var title="">element</var> . <code title="dom-cva-willValidate">willValidate</code></dt>
+
+   <dd>
+
+    <p>Returns true if the element will be validated when the form is submitted; false otherwise.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-cva-setCustomValidity">setCustomValidity</code>(<var title="">message</var>)</dt>
+
+   <dd>
+
+    <p>Sets a custom error, so that the elemnt would fail to
+    validate. The given message is the message to be shown to the user
+    when reporting the problem to the user.</p>
+
+    <p>If the argument is the empty string, clears the custom error.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-cva-validity">validity</code> . <code title="dom-validitystate-valueMissing">valueMissing</code></dt>
+
+   <dd>
+
+    <p>Returns true if the element has no value but is a required field; false otherwise.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-cva-validity">validity</code> . <code title="dom-validitystate-typeMismatch">typeMismatch</code></dt>
+
+   <dd>
+
+    <p>Returns true if the element's value is not in the correct syntax; false otherwise.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-cva-validity">validity</code> . <code title="dom-validitystate-patternMismatch">patternMismatch</code></dt>
+
+   <dd>
+
+    <p>Returns true if the element's value doesn't match the provided pattern; false otherwise.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-cva-validity">validity</code> . <code title="dom-validitystate-tooLong">tooLong</code></dt>
+
+   <dd>
+
+    <p>Returns true if the element's value is longer than the provided maximum length; false otherwise.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-cva-validity">validity</code> . <code title="dom-validitystate-rangeUnderflow">rangeUnderflow</code></dt>
+
+   <dd>
+
+    <p>Returns true if the element's value is lower than the provided minimum; false otherwise.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-cva-validity">validity</code> . <code title="dom-validitystate-rangeOverflow">rangeOverflow</code></dt>
+
+   <dd>
+
+    <p>Returns true if the element's value is higher than the provided maximum; false otherwise.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-cva-validity">validity</code> . <code title="dom-validitystate-stepMismatch">stepMismatch</code></dt>
+
+   <dd>
+
+    <p>Returns true if the element's value doesn't fit the rules given by the <code title="attr-input-step">step</code> attribute; false otherwise.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-cva-validity">validity</code> . <code title="dom-validitystate-customError">customError</code></dt>
+
+   <dd>
+
+    <p>Returns true if the element has a custom error; false otherwise.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-cva-validity">validity</code> . <code title="dom-validitystate-valid">valid</code></dt>
+
+   <dd>
+
+    <p>Returns true if the element's value has no validity problems; false otherwise.</p>
+
+   </dd>
+
+   <dt><var title="">valid</var> = <var title="">element</var> . <code title="dom-cva-checkValidatity">checkValidity</code>()</dt>
+
+   <dd>
+
+    <p>Returns true if the element's value has no validity problems;
+    false otherwise. Fires an <code
+    title="event-invalid">invalid</code> event at the element in the
+    latter case.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-cva-validationMessage">validationMessage</code></dt>
+
+   <dd>
+
+    <p>Returns the error message that would be shown to the user if
+    the element was to be checked for validity.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-cva-willValidate"><code>willValidate</code></dfn>
   attribute must return true if an element is a <span>candidate for
@@ -34301,8 +38257,11 @@
   error</span>, then the <span>custom validity error message</span>
   should be present in the return value.</p>
 
+  </div>
 
 
+  <div class="impl">
+
   <h5>Security</h5>
 
   <p>Servers should not rely on client-side validation. Client-side
@@ -34312,12 +38271,27 @@
   validation features are only intended to improve the user
   experience, not to provide any kind of security mechanism.</p>
 
+  </div>
 
 
 
 
   <h4><dfn>Form submission</dfn></h4>
 
+  <div class="impl">
+
+  <h5>Introduction</h5>
+
+  <p><em>This section is non-normative.</em></p>
+
+  </div>
+
+  <p class="XXX"> ... </p>
+
+
+
+  <div class="impl">
+
   <h5>Implicit submission</h5>
 
   <p>User agents may establish a <span
@@ -34344,7 +38318,11 @@
   <code>form</code> element from the <code>form</code> element
   itself.</p>
 
+  </div>
 
+
+  <div class="impl">
+
   <h5>Form submission algorithm</h5>
 
   <p>When a form <var title="">form</var> is <dfn
@@ -35011,7 +38989,11 @@
 
   </ol>
 
+  </div>
 
+
+  <div class="impl">
+
   <h5>URL-encoded form data</h5>
 
   <p>The <dfn><code
@@ -35125,7 +39107,12 @@
 
   </ol>
 
+  </div>
 
+
+
+  <div class="impl">
+
   <h5>Multipart form data</h5>
 
   <p>The <dfn><code title="">multipart/form-data</code> encoding
@@ -35142,7 +39129,12 @@
   <var title="">form data set</var>. Multiple entries with the same
   name must be treated as distinct fields.</p>
 
+  </div>
 
+
+
+  <div class="impl">
+
   <h5>Plain text form data</h5>
 
   <p>The <dfn><code title="">text/plain</code> encoding
@@ -35210,8 +39202,12 @@
 
   </ol>
 
+  </div>
 
 
+
+  <div class="impl">
+
   <h4>Resetting a form</h4>
 
   <p>When a form <var title="">form</var> is <dfn
@@ -35230,8 +39226,12 @@
   e.g., do not cause <code title="event-input">input</code> events to
   fire).</p>
 
+  </div>
 
 
+
+  <div class="impl">
+
   <h4>Event dispatch</h4>
 
   <p>When the user agent is to <dfn>broadcast <code
@@ -35261,8 +39261,10 @@
 
   </ol>
 
+  </div>
 
 
+
   <h3 id="interactive-elements">Interactive elements</h3>
 
   <h4>The <dfn><code>details</code></dfn> element</h4>
@@ -35293,18 +39295,24 @@
   for footnotes. Please see <a href="#footnotes">the section on
   footnotes</a> for details on how to mark up footnotes.</p>
 
-  <p>The first element child of a <code>details</code> element, if it
-  is a <code>legend</code> element, <span>represents</span> the summary of the
-  details.</p>
+  <p>The first element child of a <code>details</code> element, <span
+  class="impl">if it is</span> a <code>legend</code> element,
+  <span>represents</span> the summary of the details.</p>
 
+  <div class="impl">
+
   <p>If the first element is not a <code>legend</code> element, the
   UA should provide its own legend (e.g. "Details").</p>
 
+  </div>
+
   <p>The <dfn title="attr-details-open"><code>open</code></dfn>
   content attribute is a <span>boolean attribute</span>. If present,
-  it indicates that the details should be shown to the user. If the
-  attribute is absent, the details should not be shown.</p>
+  it indicates that the details are to be shown to the user. If the
+  attribute is absent, the details are not to be shown.</p>
 
+  <div class="impl">
+
   <p>If the attribute is removed, then the details should be
   hidden. If the attribute is added, the details should be shown.</p>
 
@@ -35321,8 +39329,10 @@
   attribute must <span>reflect</span> the <code
   title="attr-details-open">open</code> content attribute.</p>
 
+  </div>
 
 
+
 <div class="bad">
   <h4 id="datagrid">The <dfn><code>datagrid</code></dfn> element</h4>
 
@@ -37125,7 +41135,7 @@
 
   <pre class="idl">interface <dfn>DataGridSelection</dfn> {
   readonly attribute unsigned long <span title="dom-DataGridSelection-count">length</span>;
-  [IndexGetter] <span>RowSpecification</span> <span title="dom-DataGridSelection-">item</span>(in unsigned long index);
+  [IndexGetter] <span>RowSpecification</span> <span title="dom-DataGridSelection-item">item</span>(in unsigned long index);
   boolean <span title="dom-DataGridSelection-isSelected">isSelected</span>(in <span>RowSpecification</span> row);
   void <span title="dom-DataGridSelection-setSelected">setSelected</span>(in <span>RowSpecification</span> row, in boolean selected);
 <!--  void <span title="dom-DataGridSelection-addRange">addRange</span>(in <span>RowSpecification</span> first, in <span>RowSpecification</span> last);
@@ -37392,12 +41402,12 @@
   <p>The <dfn title="attr-command-icon"><code>icon</code></dfn>
   attribute gives a picture that represents the command. If the
   attribute is specified, the attribute's value must contain a
-  <span>valid URL</span>. To obtain the <span>absolute URL</span> of
-  the icon, the attribute's value must be <span title="resolve a
-  url">resolved</span> relative to the element.</p> <!-- this is
-  affected by the base URL being changed, so users of this should
-  cache the image once they've fetched it once, at least until the
-  relative url changes again -->
+  <span>valid URL</span>. <span class="impl">To obtain the
+  <span>absolute URL</span> of the icon, the attribute's value must be
+  <span title="resolve a url">resolved</span> relative to the
+  element.</span></p> <!-- this is affected by the base URL being
+  changed, so users of this should cache the image once they've
+  fetched it once, at least until the relative url changes again -->
 
   <p>The <dfn
   title="attr-command-disabled"><code>disabled</code></dfn> attribute
@@ -37406,9 +41416,9 @@
 
   <p class="note">The distinction between <code
   title="attr-command-disabled">disabled</code> and <code
-  title="attr-hidden">hidden</code> is subtle. A command should be
+  title="attr-hidden">hidden</code> is subtle. A command would be
   disabled if, in the same context, it could be enabled if only
-  certain aspects of the situation were changed. A command should be
+  certain aspects of the situation were changed. A command would be
   marked as hidden if, in that situation, the command will never be
   enabled. For example, in the context menu for a water faucet, the
   command "open" might be disabled if the faucet is already open, but
@@ -37442,9 +41452,9 @@
   been invoked if the user had directly activated the menu's subject
   instead of using its context menu. The <code
   title="attr-command-default">default</code> attribute is a
-  <span>boolean attribute</span>.  The attribute must be omitted
-  unless the <code title="attr-command-type">type</code> attribute is
-  in the <span title="attr-command-type-state-command">Command</span>
+  <span>boolean attribute</span>. The attribute must be omitted unless
+  the <code title="attr-command-type">type</code> attribute is in the
+  <span title="attr-command-type-state-command">Command</span>
   state.</p>
 
   <div class="example">
@@ -37456,6 +41466,8 @@
 
   </div>
 
+  <div class="impl">
+
   <p>The <dfn title="dom-command-type"><code>type</code></dfn>, <dfn
   title="dom-command-label"><code>label</code></dfn>, <dfn
   title="dom-command-icon"><code>icon</code></dfn>, <dfn
@@ -37521,11 +41533,14 @@
   title="event-click">click</code> event at the element does not cause
   any of the actions described above to happen.</p>
 
-  <!-- v2: the command="" attribute to make a <command> element
+  <!-- v2COMMAND: the command="" attribute to make a <command> element
   reflect the state of another command, so that the script can update
   one place in the page and have context menus, toolbars, shortcuts,
-  etc, automatically update -->
+  etc, automatically update. Once we add this, expose the Triggers
+  facet again. -->
 
+  </div>
+
   <p class="note"><code>command</code> elements are not rendered
   unless they <span title="menu">form part of a menu</span>.</p>
 
@@ -37587,6 +41602,8 @@
   <i>action</i> is to not do anything, and the <i>relevance</i> is
   unconditionally false.</p>
 
+  <div class="impl">
+
   <p>A <code>bb</code> element whose <code
   title="attr-bb-type">type</code> attribute is in a state whose
   <i>relevance</i> is true must be enabled. Conversely, a
@@ -37604,6 +41621,8 @@
   element, its <code title="attr-bb-type">type</code> attribute's
   state's <i>action</i> must be invoked.</p>
 
+  </div>
+
   <p>When the element has no descendant element children and has no
   descendant <span>text node</span> children of non-zero length, the
   element <span>represents</span> a browser button with a
@@ -37612,6 +41631,32 @@
   and <i>relevance</i> (enabled vs disabled). Otherwise, the element
   <span>represents</span> its children.</p>
 
+  <dl class="domintro">
+ 
+   <dt><var title="">bb</var> . <code title="dom-bb-supported">supported</code></dt>
+
+   <dd>
+
+    <p>Returns true if the value in the <code
+    title="attr-bb-type">type</code> attribute is a value that the
+    user agent supports. Otherwise, returns false.</p>
+
+   </dd>
+
+   <dt><var title="">bb</var> . <code title="dom-bb-disabled">disabled</code></dt>
+
+   <dd>
+
+    <p>Returns false if the user can invoke the element's
+    <i>action</i> (i.e. if the element's <i>relevance</i> is
+    true). Otherwise, returns true.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-bb-type"><code>type</code></dfn> DOM
   attribute must <span>reflect</span> the content attribute of the
   same name.</p>
@@ -37630,7 +41675,9 @@
   title="attr-bb-type">type</code> attribute's state's
   <i>relevance</i>).</p>
 
+  </div>
 
+
   <h5>Browser button types</h5>
 
   <h6>The <dfn title="attr-bb-type-makeapp-state"><i>make application</i></dfn> state</h6>
@@ -37648,6 +41695,8 @@
   user a way to make the resource identified by <span>the document's
   address</span> available in such a fashion.</p>
 
+  <div class="impl">
+
   <p class="warning">The confirmation is needed because it is
   relatively easy to trick users into activating buttons. The
   confirmation could, e.g. take the form of asking the user where to
@@ -37655,6 +41704,8 @@
   clearly from the user agent and gives the user the opportunity to
   drag an icon to their system's application launcher.</p>
 
+  </div>
+
   <p>The <i>relevance</i> of the <i
   title="attr-bb-type-makeapp-state">make application</i> state is
   false if the user agent is already handling the site in such a
@@ -37760,22 +41811,22 @@
   <p>If a <code>menu</code> element's <code
   title="attr-menu-type">type</code> attribute is in the <span
   title="context menu state">context menu</span> state, then the
-  element <span>represents</span> the commands of a context menu, and the user can
-  only interact with the commands if that context menu is
+  element <span>represents</span> the commands of a context menu, and
+  the user can only interact with the commands if that context menu is
   activated.</p>
 
   <p>If a <code>menu</code> element's <code
   title="attr-menu-type">type</code> attribute is in the <span
   title="tool bar state">tool bar</span> state, then the element
-  <span>represents</span> a list of active commands that the user can immediately
-  interact with.</p>
+  <span>represents</span> a list of active commands that the user can
+  immediately interact with.</p>
 
   <p>If a <code>menu</code> element's <code
   title="attr-menu-type">type</code> attribute is in the <span
   title="list state">list</span> state, then the element either
-  <span>represents</span> an unordered list of items (each represented by an
-  <code>li</code> element), each of which represents a command that
-  the user can perform or activate, or, if the element has no
+  <span>represents</span> an unordered list of items (each represented
+  by an <code>li</code> element), each of which represents a command
+  that the user can perform or activate, or, if the element has no
   <code>li</code> element children, <span>flow content</span>
   describing available commands.</p>
 
@@ -37786,13 +41837,17 @@
   title="attr-menu-label">label</code> attribute for the submenu's
   menu label.</p>
 
+  <div class="impl">
+
   <p>The <dfn title="dom-menu-type"><code>type</code></dfn> and <dfn
   title="dom-menu-label"><code>label</code></dfn> DOM attributes must
   <span>reflect</span> the respective content attributes of the same
   name.</p>
 
+  </div>
 
 
+
   <h5 id="menus-intro">Introduction</h5>
 
   <p><em>This section is non-normative.</em></p>
@@ -37896,6 +41951,9 @@
 -->
 
 
+
+  <div class="impl">
+
   <h5><dfn>Building menus and tool bars</dfn></h5>
 
   <p>A menu (or tool bar) consists of a list of zero or more of the
@@ -37992,18 +42050,25 @@
 
   </ol>
 
+  </div>
 
+
+
+
   <h5><dfn>Context menus</dfn></h5>
 
   <p>The <dfn title="attr-contextmenu"><code>contextmenu</code></dfn>
   attribute gives the element's <span title="context menus">context
   menu</span>. The value must be the ID of a <code>menu</code> element
-  in the DOM. If the node that would be obtained by the invoking the
-  <code>getElementById()</code> method using the attribute's value as
-  the only argument is null or not a <code>menu</code> element, then
-  the element has no assigned context menu. Otherwise, the element's
-  assigned context menu is the element so identified.</p>
+  in the DOM. <span class="impl">If the node that would be obtained by
+  the invoking the <code>getElementById()</code> method using the
+  attribute's value as the only argument is null or not a
+  <code>menu</code> element, then the element has no assigned context
+  menu. Otherwise, the element's assigned context menu is the element
+  so identified.</span></p>
 
+  <div class="impl">
+
   <p>When an element's context menu is requested (e.g. by the user
   right-clicking the element, or pressing a context menu key), the UA
   must <span>fire a <code title="">contextmenu</code> event</span> on
@@ -38061,7 +42126,12 @@
   attribute must <span>reflect</span> the <code
   title="attr-contextmenu">contextmenu</code> content attribute.</p>
 
+  </div>
 
+
+
+  <div class="impl">
+
   <h5><dfn>Tool bars</dfn></h5>
 
   <p>When a <code>menu</code> element has a <code
@@ -38075,8 +42145,10 @@
   <code>menu</code>'s DOM, by immediately <span title="building menus
   and tool bars">rebuilding</span> the menu.</p>
 
+  </div>
 
 
+
   <h4 id="commands">Commands</h4>
 
   <p>A <dfn title="concept-command">command</dfn> is the abstraction
@@ -38140,6 +42212,7 @@
    could be a scripted event handler, a <span>URL</span> to which to
    <span>navigate</span>, or a form submission.</dd>
 
+<!-- v2COMMAND
    <dt><dfn title="command-facet-Triggers">Triggers</dfn></dt>
 
    <dd>The list of elements that can trigger the command. The element
@@ -38147,6 +42220,7 @@
    trigger the command. For anonymous commands, only the element
    defining the command is on the list, since other elements have no
    way to refer to it.</dd>
+-->
 
   </dl>
 
@@ -38170,22 +42244,112 @@
   readonly attribute boolean <span title="dom-command-ro-hidden">hidden</span>;
   readonly attribute boolean <span title="dom-command-ro-disabled">disabled</span>;              
   readonly attribute boolean <span title="dom-command-ro-checked">checked</span>;              
-  void <span title="dom-command-ro-click">click</span>();
-  readonly attribute <span>HTMLCollection</span> <span title="dom-command-ro-triggers">triggers</span>;
-  readonly attribute <span>Command</span> <span title="dom-command-ro-command">command</span>;
+  void <span title="dom-command-ro-click">click</span>();<!-- v2COMMAND
+  readonly attribute <span>HTMLCollection</span> <span title="dom-command-ro-triggers">triggers</span>;-->
 };</pre>
 
-  <p>The <code title="command-ro">Command</code> interface is
-  implemented by any element capable of defining a command. (If an
-  element can define a command, its definition will list this
-  interface explicitly.) All the attributes of the <code
-  title="command-ro">Command</code> interface are read-only. Elements
-  implementing this interface may implement other interfaces that have
-  attributes with identical names but that are mutable; in bindings
-  that flatten all supported interfaces on the object, the mutable
-  attributes must shadow the readonly attributes defined in the <code
-  title="command-ro">Command</code> interface.</p>
+  <div class="impl">
 
+  <p>The <code title="command-ro">Command</code> interface must be
+  implemented by any element capable of defining a command. All the
+  attributes of the <code title="command-ro">Command</code> interface
+  are read-only. Elements implementing this interface might implement
+  other interfaces that have attributes with identical names but that
+  are mutable; in bindings that flatten all supported interfaces on
+  the object, the mutable attributes must shadow the readonly
+  attributes defined in the <code title="command-ro">Command</code>
+  interface.</p>
+
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">element</var> . <code title="dom-command-ro-commandType">commandType</code></dt>
+
+   <dd>
+
+    <p>Exposes the <span title="command-facet-Type">Type</span> facet of the command.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-command-ro-id">id</code></dt>
+
+   <dd>
+
+    <p>Exposes the <span title="command-facet-ID">ID</span> facet of the command.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-command-ro-label">label</code></dt>
+
+   <dd>
+
+    <p>Exposes the <span title="command-facet-Label">Label</span> facet of the command.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-command-ro-title">title</code></dt>
+
+   <dd>
+
+    <p>Exposes the <span title="command-facet-Hint">Hint</span> facet of the command.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-command-ro-icon">icon</code></dt>
+
+   <dd>
+
+    <p>Exposes the <span title="command-facet-Icon">Icon</span> facet of the command.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-command-ro-hidden">hidden</code></dt>
+
+   <dd>
+
+    <p>Exposes the <span title="command-facet-HiddenState">Hidden State</span> facet of the command.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-command-ro-disabled">disabled</code></dt>
+
+   <dd>
+
+    <p>Exposes the <span title="command-facet-DisabledState">Disabled State</span> facet of the command.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-command-ro-checked">checked</code></dt>
+
+   <dd>
+
+    <p>Exposes the <span title="command-facet-CheckedState">Checked State</span> facet of the command.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-command-ro-click">click</code></dt>
+
+   <dd>
+
+    <p>Triggers the <span title="command-facet-Action">Action</span> of the command.</p>
+
+   </dd>
+
+<!--v2COMMAND
+   <dt><var title="">element</var> . <code title="dom-command-ro-triggers">triggers</code></dt>
+
+   <dd>
+
+    <p>Exposes the <span title="command-facet-Triggers">Triggers</span> facet of the command.</p>
+
+   </dd>
+-->
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-command-ro-commandType"><code>commandType</code></dfn>
   attribute must return a string whose value is either "<code
@@ -38265,7 +42429,7 @@
   method will be shadowed by the <code
   title="dom-click">click()</code> method on <span>HTML
   elements</span>, and is included only for completeness.</p>
-
+<!--v2COMMAND
   <p>The <dfn
   title="dom-command-ro-triggers"><code>triggers</code></dfn>
   attribute must return a list containing the elements that can
@@ -38273,7 +42437,7 @@
   title="command-facet-Triggers">Triggers</span>). The list must be
   <span>live</span>. While the element does not define a command, the
   list must be empty.</p>
-
+-->
   <p>The <dfn
   title="dom-document-commands"><code>commands</code></dfn> attribute
   of the document's <code>HTMLDocument</code> interface must return an
@@ -38281,6 +42445,8 @@
   node, whose filter matches only elements that define commands and
   have IDs.</p>
 
+  </div>
+
   <p>The following elements can define commands: <code
   title="a-command">a</code>, <code
   title="button-command">button</code>, <code
@@ -38290,6 +42456,9 @@
   title="bb-command">bb</code>.</p>
 
 
+
+  <div class="impl">
+
   <h5><dfn title="a-command">Using the <code>a</code> element to define a command</dfn></h5>
 
   <p>An <code>a</code> element with an <code
@@ -38614,6 +42783,7 @@
   element's <code title="attr-bb-type">type</code> attribute's
   state.</p>
 
+  </div>
 
 
   <h3>Miscellaneous elements</h3>
@@ -38639,10 +42809,25 @@
    </dd>
   </dl>
 
-  <p>The <code>legend</code> element <span>represents</span> a title or explanatory
-  caption for the rest of the contents of the <code>legend</code>
-  element's parent element.</p>
+  <p>The <code>legend</code> element <span>represents</span> a title
+  or explanatory caption for the rest of the contents of the
+  <code>legend</code> element's parent element.</p>
 
+  <dl class="domintro">
+
+   <dt><var title="">legend</var> . <code title="dom-legend-form">form</code></dt>
+
+   <dd>
+
+    <p>Returns the element's <code>form</code> element, if any, or
+    null otherwise.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-legend-form"><code>form</code></dfn> DOM
   attribute's behavior depends on whether the <code>legend</code>
   element is in a <code>fieldset</code> element or not. If the
@@ -38652,7 +42837,9 @@
   title="dom-fae-form">form</code> DOM attribute on that
   <code>fieldset</code> element. Otherwise, it must return null.</p>
 
+  </div>
 
+
   <h4>The <dfn><code>div</code></dfn> element</h4>
 
   <dl class="element">
@@ -38688,6 +42875,9 @@
 
 
 
+
+  <div class="impl">
+
   <h3>Matching HTML elements using selectors</h3>
 
   <p>There are a number of dynamic selectors that can be used with
@@ -39090,28 +43280,42 @@
   fashion in the Selectors specification. <a
   href="#refsSELECTORS">[SELECTORS]</a></p>
 
+  </div>
 
 
 
+
   <h2 id="browsers">Web browsers</h2>
 
+  <div class="impl">
+
   <p>This section describes features that apply most directly to Web
   browsers. Having said that, unless specified elsewhere, the
   requirements defined in this section <em>do</em> apply to all user
   agents, whether they are Web browsers or not.</p>
 
+  </div>
 
+
+
   <h3 id="windows">Browsing contexts</h3>
 
   <p>A <dfn>browsing context</dfn> is an environment in which
-  <code>Document</code> objects are presented to the user. At any
-  time, one <code>Document</code> is designated the <dfn>active
-  document</dfn>. The collection of <code>Document</code>s is the
-  <span>browsing context</span>'s <span>session history</span>.</p>
+  <code>Document</code> objects are presented to the user.</p>
 
+  <p class="note">A tab or window in a Web browser typically contains
+  a <span>browsing context</span>, as does an <code>iframe</code><span
+  class="impl"> or <code>frame</code>s in a
+  <code>frameset</code></span>.</p>
+
   <p>Each <span>browsing context</span> has a corresponding
   <code>WindowProxy</code> object.</p>
 
+  <p>The collection of <code>Document</code>s is the <span>browsing
+  context</span>'s <span>session history</span>. At any time, one
+  <code>Document</code> in each <span>browsing context</span> is
+  designated the <dfn>active document</dfn>.</p>
+
   <p>Each <code>Document</code> has a collection of one or more <span
   title="view">views</span>.</p>
 
@@ -39124,27 +43328,42 @@
 
   <p>The main <span>view</span> through which a user primarily
   interacts with a user agent is the <dfn>default view</dfn>. The
-  <code>AbstractView</code> object that represents this view must also
-  implement the <code>Window</code> interface, and is referred to as
-  the <code>Document</code>'s <code>Window</code> object.</p>
+  <code>AbstractView</code> object that represents this view <span
+  class="impl">must also implement the <code>Window</code> interface,
+  and</span> is referred to as the <code>Document</code>'s
+  <code>Window</code> object. <code>WindowProxy</code> objects forward
+  everything to the <span>active document</span>'s <span>default
+  view</span>'s <code>Window</code> object.</p>
 
-  <p class="note">The <span>default view</span> of a
-  <code>Document</code> is given by the <code
-  title="">defaultView</code> attribute on the <code>Document</code>
-  object's <code>DocumentView</code> interface. <a
-  href="#refsDOM3VIEWS">[DOM3VIEWS]</a></p>
+  <div class="impl">
 
+  <p>The <code title="">defaultView</code> attribute on the
+  <code>Document</code> object's <code>DocumentView</code> interface
+  must return the <span>browsing context</span>'s
+  <code>WindowProxy</code> object, not the actual
+  <code>AbstractView</code> object of the <span>default
+  view</span>. <a href="#refsDOM3VIEWS">[DOM3VIEWS]</a></p>
+
+  </div>
+
   <p class="note">The <code title="">document</code> attribute of an
   <code>AbstractView</code> object representing a <span>view</span>
   gives the view's corresponding <code>Document</code> object. <a
   href="#refsDOM2VIEWS">[DOM2VIEWS]</a></p>
 
-  <p class="note">Events that use the <code>UIEvent</code> interface
-  are related to a specific <span>view</span> (the view in which the
-  event happened); the <code>AbstractView</code> of that view is given
-  in the event object's <code title="">view</code> attribute. <a
-  href="#refsDOM3EVENTS">[DOM3EVENTS]</a></p>
+  <div class="impl">
 
+  <p>Events that use the <code>UIEvent</code> interface are related to
+  a specific <span>view</span> (the view in which the event happened);
+  when that <span>view</span> is the <span>default view</span>, the
+  event object's <code title="">view</code> attribute's must return
+  the <code>WindowProxy</code> object of the <span>browsing
+  context</span> of that <span>view</span>, not the actual
+  <code>AbstractView</code> object of the <span>default
+  view</span>. <a href="#refsDOM3EVENTS">[DOM3EVENTS]</a></p>
+
+  </div>
+
   <p class="note">A typical Web browser has one obvious
   <span>view</span> per <code>Document</code>: the browser's window
   (screen media). This is typically the <span>default view</span>. If
@@ -39163,9 +43382,9 @@
 
   <p>A <span>browsing context</span> can have a <dfn>creator browsing
   context</dfn>, the <span>browsing context</span> that was
-  responsible for its creation. Unless otherwise specified, a
-  <span>browsing context</span> has no <span>creator browsing
-  context</span>.</p>
+  responsible for its creation. <span class="impl">Unless otherwise
+  specified, a <span>browsing context</span> has no <span>creator
+  browsing context</span>.</span></p>
 
   <p>If a <span>browsing context</span> <var title="">A</var> has a
   <span>creator browsing context</span>, then the
@@ -39174,6 +43393,8 @@
   title="">A</var> was created is the <dfn>creator
   <code>Document</code></dfn>.</p>
 
+  <div class="impl">
+
   <p>When a <span>browsing context</span> is first created, it must be
   created with a single <code>Document</code> in its session history,
   whose <span title="the document's address">address</span> is
@@ -39197,7 +43418,9 @@
   <code>Document</code> is a globally unique identifier assigned when
   the new <span>browsing context</span> is created.</p>
 
+  </div>
 
+
   <h4>Nested browsing contexts</h4>
 
   <p>Certain elements (for example, <code>iframe</code> elements) can
@@ -39259,6 +43482,40 @@
 
   <h5>Navigating nested browsing contexts in the DOM</h5>
 
+  <dl class="domintro">
+
+   <dt><var title="">window</var> . <code title="dom-top">top</code></dt>
+
+   <dd>
+
+    <p>Returns the <code>WindowProxy</code> for the <span>top-level browsing context</span>.</p>
+
+   </dd>
+
+   <dt><var title="">window</var> . <code title="dom-parent">parent</code></dt>
+
+   <dd>
+
+    <p>Returns the <code>WindowProxy</code> for the <span>parent browsing context</span>.</p>
+
+   </dd>
+
+   <dt><var title="">window</var> . <code title="dom-frameElement">frameElement</code></dt>
+
+   <dd>
+
+    <p>Returns the <code>Element</code> for the <span>browsing context container</span>.</p>
+
+    <p>Returns null if there isn't one.</p>
+
+    <p>Throws a <code>SECURITY_ERR</code> exception in cross-origin situations.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-top"><code>top</code></dfn> DOM attribute on
   the <code>Window</code> object of a <code>Document</code> in a
   <span>browsing context</span> <var title="">b</var> must return the
@@ -39299,8 +43556,10 @@
 
   </ol>
 
+  </div>
 
 
+
   <h4>Auxiliary browsing contexts</h4>
 
   <p>It is possible to create new browsing contexts that are related
@@ -39340,6 +43599,8 @@
   the user agent's interface, apart from the main content area.</p>
 
 
+  <div class="impl">
+
   <h4>Security</h4>
 
   <p>A <span>browsing context</span> <var title="">A</var> is
@@ -39373,7 +43634,11 @@
 
   </ul>
 
+  </div>
 
+
+  <div class="impl">
+
   <h4>Groupings of browsing contexts</h4>
 
   <p>Each <span>browsing context</span> is defined as having a list of
@@ -39419,8 +43684,10 @@
   of related similar-origin browsing contexts</span>. Initially there
   is no <span>first script</span>.</p>
 
+  </div>
 
 
+
   <h4>Browsing context names</h4>
 
   <p>Browsing contexts can have a <dfn>browsing context name</dfn>. By
@@ -39437,6 +43704,8 @@
   title="">_blank</code>, <code title="">_self</code>, <code
   title="">_parent</code>, or <code title="">_top</code>.</p>
 
+  <div class="impl">
+
   <p><dfn>The rules for choosing a browsing context given a browsing
   context name</dfn> are as follows. The rules assume that they are
   being applied in the context of a <span>browsing context</span>.</p>
@@ -39547,8 +43816,11 @@
 
   </ol>
 
+  </div>
 
 
+  <div class="impl">
+
   <h3>The <code>WindowProxy</code> object</h3>
 
   <p>As mentioned earlier, each <span>browsing context</span> has a
@@ -39558,8 +43830,10 @@
   thus indistinguishable from that <code>Window</code> object in every
   way, except that it is not equal to it.</p>
 
+  </div>
 
 
+
   <h3>The <code>Window</code> object</h3>
 
   <pre class="idl">[<span title="dom-window-item">IndexGetter</span>, <span title="dom-window-namedItem">NameGetter</span>=OverrideBuiltins]
@@ -39568,7 +43842,7 @@
   readonly attribute <span>WindowProxy</span> <span title="dom-window">window</span>;
   readonly attribute <span>WindowProxy</span> <span title="dom-self">self</span>;
            attribute DOMString <span title="dom-name">name</span>;
-  [PutForwards=href] readonly attribute <span>Location</span> <span title="dom-document-location">location</span>;
+  [PutForwards=href] readonly attribute <span>Location</span> <span title="dom-location">location</span>;
   readonly attribute <span>History</span> <span title="dom-history">history</span>;
   readonly attribute <span>UndoManager</span> <span title="dom-undoManager">undoManager</span>;
   <span>Selection</span> <span title="dom-getSelection">getSelection</span>();
@@ -39657,6 +43931,22 @@
           http://lxr.mozilla.org/mozilla/source/dom/public/idl/base/nsIDOMWindowInternal.idl - DOM level 0
    -->
 
+  <dl class="domintro">
+
+   <dt><var title="">window</var> . <code title="dom-window">window</code></dt>
+   <dt><var title="">window</var> . <code title="dom-frames">frames</code></dt>
+   <dt><var title="">window</var> . <code title="dom-self">self</code></dt>
+
+   <dd>
+
+    <p>These attributes all return <var title="">window</var>.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <code>Window</code> object must also implement the
   <code>EventTarget</code> interface.</p>
 
@@ -39666,8 +43956,11 @@
   return the <code>Window</code> object's <span>browsing
   context</span>'s <code>WindowProxy</code> object.</p>
 
+  </div>
 
 
+  <div class="impl">
+
   <h4>Security</h4>
 
   <p>User agents must raise a <code>SECURITY_ERR</code> exception
@@ -39696,11 +43989,51 @@
   <p>User agents must not allow scripts to override the <code
   title="dom-location">location</code> object's setter.</p>
 
+  </div>
 
 
 
   <h4>APIs for creating and navigating browsing contexts by name</h4>
 
+  <dl class="domintro">
+
+   <dt><var title="">window</var> = <var title="">window</var> . <code title="dom-open">open</code>( [ <var title="">url</var> [, <var title="">target</var> [, <var title="">features</var> [, <var title="">replace</var> ] ] ] ] )</dt>
+
+   <dd>
+
+    <p>Opens a window to show <var title="">url</var> (defaults to
+    <code>about:blank</code>), and returns it. The <var
+    title="">target</var> argument gives the name of the new
+    window. If a window exists with that name already, it is
+    reused. The <var title="">replace</var> attribute, if true, means
+    that whatever page is currently open in that window will be
+    removed from the window's session history. The <var
+    title="">features</var> argument is ignored.</p>
+
+   </dd>
+
+   <dt><var title="">window</var> . <code title="dom-name">name</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the name of the window.</p>
+
+    <p>Can be set, to change the name.</p>
+
+   </dd>
+
+   <dt><var title="">window</var> . <code title="dom-close">close</code>()</dt>
+
+   <dd>
+
+    <p>Closes the window.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-open"><code>open()</code></dfn> method on
   <code>Window</code> objects provides a mechanism for <span
   title="navigate">navigating</span> an existing <span>browsing
@@ -39797,10 +44130,34 @@
   context</span> <var title="">A</var> (and may <span title="a
   browsing context is discarded">discard</span> it too).</p>
 
+  </div>
 
 
   <h4>Accessing other browsing contexts</h4>
 
+  <dl class="domintro">
+
+   <dt><var title="">window</var> . <code title="dom-length">length</code></dt>
+
+   <dd>
+
+    <p>Returns the number of <span title="child browsing
+    context">child browsing contexts</span>.</p>
+
+   </dd>
+
+   <dt><var title="">window</var>[<var title="">index</var>]</dt>
+
+   <dd>
+
+    <p>Returns the indicated <span>child browsing context</span>.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-length"><code>length</code></dfn> DOM
   attribute on the <code>Window</code> interface must return the
   number of <span title="child browsing context">child browsing
@@ -39825,49 +44182,25 @@
   <p>These properties are the <dfn>dynamic nested browsing context
   properties</dfn>.</p>
 
+  </div>
 
-  <h4>Garbage collection and browsing contexts</h4>
 
-  <p>A <span>browsing context</span> has a strong reference to each of
-  its <code>Document</code>s and its <code>WindowProxt</code> object,
-  and the user agent itself has a strong reference to its <span
-  title="top-level browsing context">top-level browsing
-  contexts</span>.</p>
 
-  <p>A <code>Document</code> has a strong reference to each of its
-  <span title="view">views</span> and their <code>AbstractView</code>
-  objects.</p>
+  <h4>Named access on the <code>Window</code> object</h4>
 
-  <p>When a <span>browsing context</span> is to <dfn>discard a
-  <code>Document</code></dfn>, that means that it is to lose the
-  strong reference from the <code>Document</code>'s <span>browsing
-  context</span> to the <code>Document</code>.</p>
+  <dl class="domintro">
 
-  <p class="note">The <span>browsing context</span>'s <span>default
-  view</span>'s <code>Window</code> object <span title="implied strong
-  reference">has a strong reference of its own</span> to its
-  <code>Document</code> object.</p>
+   <dt><var title="">window</var>[<var title="">name</var>]</dt>
 
-  <p>When <dfn>a <em><span>browsing context</span></em> is
-  discarded</dfn>, the strong reference from the user agent itself to
-  the <span>browsing context</span> must be severed, and all the
-  <code>Document</code> objects for all the entries in the
-  <span>browsing context</span>'s session history must be <span
-  title="discard a document">discarded</span> as well.</p>
+   <dd>
 
-  <p>User agents may <span title="a browsing context is
-  discarded">discard</span> <span title="top-level browsing
-  context">top-level browsing contexts</span> at any time (typically,
-  in response to user requests, e.g. when a user closes a window
-  containing one or more <span title="top-level browsing
-  context">top-level browsing contexts</span>). Other <span
-  title="browsing context">browsing contexts</span> must be discarded
-  once their <code>WindowProxy</code> object is eligible for garbage
-  collection.</p>
+    <p>Returns the indicated <span>child browsing context</span>.</p>
 
+   </dd>
 
+  </dl>
 
-  <h4>Named access on the <code>Window</code> object</h4>
+  <div class="impl">
 
   <p>The <code>Window</code> interface <span title="support named
   properties">supports named properties</span>. The <span>names of the
@@ -39956,8 +44289,54 @@
 
   </ul>
 
+  </div>
 
 
+  <div class="impl">
+
+  <h4>Garbage collection and browsing contexts</h4>
+
+  <p>A <span>browsing context</span> has a strong reference to each of
+  its <code>Document</code>s and its <code>WindowProxy</code> object,
+  and the user agent itself has a strong reference to its <span
+  title="top-level browsing context">top-level browsing
+  contexts</span>.</p>
+
+  <p>A <code>Document</code> has a strong reference to each of its
+  <span title="view">views</span> and their <code>AbstractView</code>
+  objects.</p>
+
+  <p>When a <span>browsing context</span> is to <dfn>discard a
+  <code>Document</code></dfn>, that means that it is to lose the
+  strong reference from the <code>Document</code>'s <span>browsing
+  context</span> to the <code>Document</code>.</p>
+
+  <p class="note">The <span>browsing context</span>'s <span>default
+  view</span>'s <code>Window</code> object <span title="implied strong
+  reference">has a strong reference of its own</span> to its
+  <code>Document</code> object.</p>
+
+  <p>When <dfn>a <em><span>browsing context</span></em> is
+  discarded</dfn>, the strong reference from the user agent itself to
+  the <span>browsing context</span> must be severed, and all the
+  <code>Document</code> objects for all the entries in the
+  <span>browsing context</span>'s session history must be <span
+  title="discard a document">discarded</span> as well.</p>
+
+  <p>User agents may <span title="a browsing context is
+  discarded">discard</span> <span title="top-level browsing
+  context">top-level browsing contexts</span> at any time (typically,
+  in response to user requests, e.g. when a user closes a window
+  containing one or more <span title="top-level browsing
+  context">top-level browsing contexts</span>). Other <span
+  title="browsing context">browsing contexts</span> must be discarded
+  once their <code>WindowProxy</code> object is eligible for garbage
+  collection.</p>
+
+  </div>
+
+
+
   <h4>Browser interface elements</h4>
 
   <p>To allow Web pages to integrate with Web browsers, certain Web
@@ -39971,6 +44350,43 @@
            attribute boolean <span title="dom-BarProp-visible">visible</span>;
 };</pre>
 
+  <dl class="domintro">
+
+   <dt><var title="">window</var> . <code title="dom-window-locationbar">locationbar</code> . <code title="dom-BarProp-visible">visible</code></dt>
+   <dd>
+    <p>Returns true if the location bar is visible; otherwise, returns false.</p>
+   </dd>
+
+   <dt><var title="">window</var> . <code title="dom-window-menubar">menubar</code> . <code title="dom-BarProp-visible">visible</code></dt>
+   <dd>
+    <p>Returns true if the menu bar is visible; otherwise, returns false.</p>
+   </dd>
+
+   <dt><var title="">window</var> . <code title="dom-window-personalbar">personalbar</code> . <code title="dom-BarProp-visible">visible</code></dt>
+   <!--<dt><var title="">window</var> . <code title="dom-window-directories">directories</code> . <code title="dom-BarProp-visible">visible</code></dt>-->
+   <dd>
+    <p>Returns true if the personal bar is visible; otherwise, returns false.</p>
+   </dd>
+
+   <dt><var title="">window</var> . <code title="dom-window-scrollbars">scrollbars</code> . <code title="dom-BarProp-visible">visible</code></dt>
+   <dd>
+    <p>Returns true if the scroll bars are visible; otherwise, returns false.</p>
+   </dd>
+
+   <dt><var title="">window</var> . <code title="dom-window-statusbar">statusbar</code> . <code title="dom-BarProp-visible">visible</code></dt>
+   <dd>
+    <p>Returns true if the status bar is visible; otherwise, returns false.</p>
+   </dd>
+
+   <dt><var title="">window</var> . <code title="dom-window-toolbar">toolbar</code> . <code title="dom-BarProp-visible">visible</code></dt>
+   <dd>
+    <p>Returns true if the tool bar is visible; otherwise, returns false.</p>
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-BarProp-visible">visible</dfn> attribute, on
   getting, must return either true or a value determined by the user
   agent to most accurately represent the visibility state of the user
@@ -40066,7 +44482,11 @@
   <code>BarProp</code> object</span>.</p>
 -->
 
+  </div>
 
+
+  <div class="impl">
+
   <h3>Origin</h3>
   <!-- Hallowed are the Ori -->
 
@@ -40457,9 +44877,29 @@
 
   </ol>
 
+  </div>
 
+
   <h4>Relaxing the same-origin restriction</h4>
 
+  <dl class="domintro">
+
+   <dt><var title="">document</var> . <code title="dom-document-domain">domain</code> [ = <var title="">domain</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the current domain used for security checks.</p>
+
+    <p>Can be set to a value that removes subdomains, to allow pages
+    on other subdomains of the same domain (if they do the same thing)
+    to access each other.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-document-domain"><code>domain</code></dfn>
   attribute on <code>Document</code> objects must be initialized to
   <span>the document's domain</span>, if it has one, and the empty
@@ -40578,6 +45018,8 @@
   <span>origin</span>, if that is a scheme/host/port tuple. If it
   isn't, then the document does not have a domain.</p>
 
+  </div>
+
   <p class="note">The <code title="dom-document-domain">domain</code>
   attribute is used to enable pages on different hosts of a domain to
   access each others' DOMs.</p>
@@ -40613,8 +45055,8 @@
   </ul>
 
 
+  <div class="impl">
 
-
   <h4>Enabling and disabling scripting</h4>
 
   <p><dfn title="concept-bc-script">Scripting is enabled</dfn> in a
@@ -40655,8 +45097,11 @@
   title="concept-bc-noscript">scripting is disabled</span> in that
   <span>browsing context</span>.</p>
 
+  </div>
 
 
+  <div class="impl">
+
   <!-- SCRIPT EXEC (marks areas related to creation of scripts) -->
   <h4>Processing model</h4>
 
@@ -40770,8 +45215,11 @@
 
   </dl>
 
+  </div>
 
 
+  <div class="impl">
+
   <h5>Calling scripts</h5>
 
   <p>When a user agent is to <dfn>jump to a code entry-point</dfn> for
@@ -40802,7 +45250,11 @@
 
   <p>This algorithm is not invoked by one script calling another.</p>
 
+  </div>
 
+
+  <div class="impl">
+
   <h5 id="creating-scripts">Creating scripts</h5>
 
   <p>When the specification says that a <span
@@ -40889,7 +45341,11 @@
 
   </ol>
 
+  </div>
 
+
+  <div class="impl">
+
   <h5>Killing scripts</h5>
 
   <p>User agents may impose resource limitations on scripts, for
@@ -40919,7 +45375,11 @@
   <p>If scripting is disabled while a script is executing, the script
   should be terminated immediately.</p>
 
+  </div>
 
+
+  <div class="impl">
+
   <h4>Event loops</h4>
 
   <p>To coordinate events, user interaction, scripts, rendering,
@@ -41039,8 +45499,11 @@
 
   </ol>
 
+  </div>
 
 
+  <div class="impl">
+
   <h5>Generic task sources</h5>
 
   <p>The following <span title="task source">task sources</span> are
@@ -41093,8 +45556,12 @@
 
   </dl>
 
+  </div>
 
 
+
+  <div class="impl">
+
   <!-- SCRIPT EXEC -->
   <h4 id="javascript-protocol"><dfn title="javascript protocol">The <code title="">javascript:</code> protocol</dfn></h4>
 
@@ -41238,12 +45705,18 @@
 
   </div>
 
+  </div>
 
+
+
   <h4>Events</h4>
 
+  <div class="impl">
 
   <h5 id="event-handler-attributes">Event handler attributes</h5>
 
+  </div>
+
   <!--test: <a href="http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%0A...%3Cscript%3E%0Aw(a%3Ddocument.implementation.createDocument(null%2C%20null%2C%20null))%3B%0Aw(a.appendChild(a.createElementNS('http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml'%2C%20'html')))%3B%0Aw(b%3Da.firstChild.appendChild(a.createElementNS('http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml'%2C%20'body')))%3B%0Aw(b.test%20%3D%20w)%3B%0Aw(b.setAttribute('onclick'%2C%20'test(%22fire%3A%20%22%20%2B%20event)'))%3B%0Aw(b.onclick)%3B%0Aw(e%3Da.createEvent('Event'))%3B%0Aw(e.initEvent('click'%2C%20false%2C%20false))%3B%0Aw(b.dispatchEvent(e))%3B%0A%3C%2Fscript%3E">test</a>-->
 
   <p>Many objects can have <dfn>event handler attributes</dfn>
@@ -41252,9 +45725,9 @@
 
   <p>An <span title="event handler attributes">event handler
   attribute</span>, unless otherwise specified, can either have the
-  value null or be set to a <code>Function</code> object. Initially,
-  unless otherwise specified, an event handler attribute must be set
-  to null.</p>
+  value null or be set to a <code>Function</code> object. <span
+  class="impl">Initially, an event handler attribute must be set to
+  null.</span></p>
 
   <p>Event handler attributes are exposed in one or two ways.</p>
 
@@ -41267,6 +45740,8 @@
   <span>HTML elements</span> and some of the event handlers on
   <code>Window</code> objects are exposed in this way.</p>
 
+  <div class="impl">
+
   <hr>
 
   <p><dfn>Event handler DOM attributes</dfn>, on setting, must set the
@@ -41281,11 +45756,15 @@
 
   <hr>
 
+  </div>
+
   <p><dfn>Event handler content attributes</dfn>, when specified, must
   contain valid ECMAScript code matching the ECMAScript <code
   title="">FunctionBody</code> production. <a
   href="#refsECMA262">[ECMA262]</a></p>
 
+  <div class="impl">
+
   <!-- SCRIPT EXEC -->
   <p>When an event handler content attribute is set, if the element is
   owned by a <code>Document</code> that is in a <span>browsing
@@ -41353,6 +45832,8 @@
 
   </ol>
 
+  </div>
+
   <p class="note">When an event handler content attribute is set on an
   element owned by a <code>Document</code> that is not in a
   <span>browsing context</span>, the corresponding event handler
@@ -41364,6 +45845,8 @@
 
   <p class="XXX">How do we allow non-JS event handlers?</p>
 
+  <div class="impl">
+
   <hr>
 
   <p>All event handler attributes on an element, whether set to null
@@ -41440,8 +45923,11 @@
   <p class="note">In JavaScript, any <code title="">Function</code>
   object implements this interface.</p>
 
+  </div>
 
 
+  <div class="impl">
+
   <h5>Event handler attributes on elements and on <code>Window</code> objects</h5>
 
   <p>The following are the event handler attributes that must be
@@ -41750,7 +46236,11 @@
 
   </dl>
 
+  </div>
 
+
+  <div class="impl">
+
   <h5>Event firing</h5>
 
   <p class="XXX">maybe this should be moved higher up
@@ -41764,7 +46254,7 @@
   elements. For example, the <code title="dom-click">click()</code>
   method on the <code>HTMLElement</code> interface is defined as
   firing a <code title="event-click">click</code> event on the
-  element.  <a href="#refsDOM3EVENTS">[DOM3EVENTS]</a></p>
+  element. <a href="#refsDOM3EVENTS">[DOM3EVENTS]</a></p>
 
   <p><dfn title="fire a click event">Firing a <code
   title="event-click">click</code> event</dfn> means that a <a
@@ -41840,7 +46330,11 @@
   event of the right type on that element, not those that are
   dispatched in expected ways.</p>
 
+  </div>
 
+
+  <div class="impl">
+
   <h5>Events and the <code>Window</code> object</h5>
 
   <p>When an event is dispatched at a DOM node in a
@@ -41861,8 +46355,11 @@
 
   </ol>
 
+  </div>
 
 
+  <div class="impl">
+
   <h5 id="runtime-script-errors">Runtime script errors</h5>
 
   <p><em>This section only applies to user agents that support
@@ -41920,10 +46417,10 @@
 
   </dl>
 
+  </div>
 
 
 
-
   <h3>User prompts</h3>
 
   <!--
@@ -41937,6 +46434,39 @@
 
   <h4>Simple dialogs</h4>
 
+  <dl class="domintro">
+
+   <dt><var title="">window</var> . <code title="dom-alert">alert</code>(<var title="">message</var>)</dt>
+   <dd>
+
+    <p>Displays a modal alert with the given message, and waits for the user to dismiss it.</p>
+
+   </dd>
+
+   <dt><var title="">result</var> = <var title="">window</var> . <code title="dom-confirm">confirm</code>(<var title="">message</var>)</dt>
+   <dd>
+
+    <p>Displays a modal OK/Cancel prompt with the given message, waits
+    for the user to dismiss it, and returns true if the user clicks OK
+    and false if the user clicks Cancel.</p>
+
+   </dd>
+
+   <dt><var title="">result</var> = <var title="">window</var> . <code title="dom-prompt">prompt</code>(<var title="">message</var> [, <var title="">default</var>] )</dt>
+   <dd>
+
+    <p>Displays a modal text field prompt with the given message,
+    waits for the user to dismiss it, and returns the value that the
+    user entered. If the user cancels the prompt, then returns null
+    instead. If the second argument is present, then the given value
+    is used as a default.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-alert"><code>alert(<var
   title="">message</var>)</code></dfn> method, when invoked, must show
   the given <var title="">message</var> to the user. The user agent
@@ -41965,9 +46495,25 @@
   user aborts, then the method must return null; otherwise, the method
   must return the string that the user responded with.</p>
 
+  </div>
 
+
   <h4>Printing</h4>
 
+  <dl class="domintro">
+
+   <dt><var title="">window</var> . <code title="dom-print">print</code>()</dt>
+
+   <dd>
+
+    <p>Prompts the user to print the page.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-print"><code>print()</code></dfn> method,
   when invoked, must run the <span>printing steps</span>.</p>
 
@@ -42045,9 +46591,26 @@
 
   </ol>
 
+  </div>
 
+
   <h4>Dialogs implemented using separate documents</h4>
 
+  <dl class="domintro">
+
+   <dt><var title="">result</var> = <var title="">window</var> . <code title="dom-showModalDialog">showModalDialog</code>(<var title="">url</var> [, <var title="">argument</var>] )</dt>
+
+   <dd>
+
+    <p>Prompts the user with the given page, waits for that page to
+    close, and returns the return value.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-showModalDialog"><code>showModalDialog(<var
   title="">url</var>, <var title="">argument</var><!--, <var
   title="">features</var>-->)</code></dfn> method, when invoked, must
@@ -42198,11 +46761,41 @@
   attributes, as if they were on the Window prototype. That's the XXX
   below.</p>
 
+  </div>
+
   <pre class="idl">[NoInterfaceObject, ImplementedOn=<span>Window</span>, XXX] interface <dfn>WindowModal</dfn> {
   readonly attribute any <span title="dom-WindowModal-dialogArguments">dialogArguments</span>;
            attribute DOMString <span title="dom-WindowModal-returnValue">returnValue</span>;
 };</pre>
 
+  <dl class="domintro">
+
+   <dt><var title="">window</var> . <code title="dom-WindowModal-dialogArguments">dialogArguments</code></dt>
+
+   <dd>
+
+    <p>Returns the <var title="">argument</var> argument that was
+    passed to the <code
+    title="dom-showModalDialog">showModalDialog()</code> method.</p>
+
+   </dd>
+
+   <dt><var title="">window</var> . <code title="dom-WindowModal-returnValue">returnValue</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the current return value for the window.</p>
+
+    <p>Can be set, to change the value that will be returned by the
+    <code title="dom-showModalDialog">showModalDialog()</code>
+    method.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>Such browsing contexts have associated <dfn>dialog
   arguments</dfn>, which are stored along with the <dfn>dialog
   arguments' origin</dfn>. These values are set by the <code
@@ -42233,6 +46826,8 @@
   of its browsing context, and on setting, must set the <span>return
   value</span> to the given new value.</p>
 
+  </div>
+
   <p class="note">The <code
   title="dom-window-close">window.close()</code> method can be used to
   close the browsing context.</p>
@@ -42438,6 +47033,8 @@
 
   <h3>System state and capabilities</h3>
 
+  <div class="impl">
+
   <p>The <dfn title="dom-navigator"><code>navigator</code></dfn>
   attribute of the <code>Window</code> interface must return an
   instance of the <code>Navigator</code> interface, which represents
@@ -42445,6 +47042,8 @@
   Web pages to register themselves as potential protocol and content
   handlers:</p>
 
+  </div>
+
   <pre class="idl">interface <dfn>Navigator</dfn> {
   // objects implementing this interface also implement the interfaces given below
 };
@@ -42471,6 +47070,8 @@
   (the latter is used in a <video> element demo now)
 -->};</pre>
 
+  <div class="impl">
+
   <p>Objects implementing the <code>Navigator</code> interface must
   also implement the <span>NavigatorID</span>,
   <span>NavigatorOnLine</span>, and
@@ -42488,7 +47089,9 @@
    <dd><p>Must return either null or a language code representing the user's preferred language.</p></dd>
    -->
 
+  </div>
 
+
   <h4>Client identification</h4>
 
   <p>In certain cases, despite the best efforts of the entire
@@ -42503,6 +47106,32 @@
   current versions; future versions and unknown versions should always
   be assumed to be fully compliant.</p>
 
+  <dl class="domintro">
+
+   <dt><var title="">window</var> . <code title="dom-navigator">navigator</code> . <code title="dom-navigator-appName">appName</code></dt>
+   <dd>
+    <p>Returns the name of the browser.</p>
+   </dd>
+
+   <dt><var title="">window</var> . <code title="dom-navigator">navigator</code> . <code title="dom-navigator-appVersion">appVersion</code></dt>
+   <dd>
+    <p>Returns the version of the browser.</p>
+   </dd>
+
+   <dt><var title="">window</var> . <code title="dom-navigator">navigator</code> . <code title="dom-navigator-platform">platform</code></dt>
+   <dd>
+    <p>Returns the name of the platform.</p>
+   </dd>
+
+   <dt><var title="">window</var> . <code title="dom-navigator">navigator</code> . <code title="dom-navigator-userAgent">userAgent</code></dt>
+   <dd>
+    <p>Returns the complete User-Agent header.</p>
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <dl>
 
    <!-- redundant
@@ -42542,7 +47171,9 @@
 
   </dl>
 
+  </div>
 
+
   <h4 id="custom-handlers">Custom protocol and content handlers</h4>
 
   <p>The <dfn
@@ -42563,6 +47194,33 @@
   his Web browser can instead suggest he use that site to view the
   image.</p>
 
+  <dl class="domintro">
+
+   <dt><var title="">window</var> . <code title="dom-navigator">navigator</code> . <code title="dom-navigator-registerProtocolHandler">registerProtocolHandler</code>(<var title="">protocol</var>, <var title="">url</var>, <var title="">title</var>)</dt>
+   <dt><var title="">window</var> . <code title="dom-navigator">navigator</code> . <code title="dom-navigator-registerContentHandler">registerContentHandler</code>(<var title="">mimeType</var>, <var title="">url</var>, <var title="">title</var>)</dt>
+
+   <dd>
+
+    <p>Registers a handler for the given protocol or content type, at
+    the given URL, with the given title.</p>
+
+    <p>The string "<code title="">%s</code>" in the URL is used as a
+    placeholder for where to put the URL of the content to be
+    handled.</p>
+
+    <p>Throws a <code>SECURITY_ERR</code> exception if the user agent
+    blocks the registration (this might happen if trying to register
+    as a handler for "http", for instance).</p>
+
+    <p>Throws a <code>SYNTAX_ERR</code> if the "<code
+    title="">%s</code>" string is missing in the URL.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>User agents may, within the constraints described in this
   section, do whatever they like when the methods are called. A UA
   could, for instance, prompt the user and offer the user the
@@ -42718,7 +47376,11 @@
   part of any non-idempotent transaction), as the remote site would
   not be able to fetch the same data.</p>
 
+  </div>
 
+
+  <div class="impl">
+
   <h5>Security and privacy</h5>
 
   <p>These mechanisms can introduce a number of concerns, in
@@ -42803,7 +47465,11 @@
   require the user to know whether to trust the third-party handler, a
   decision many users are unable to make or even understand).</p>
 
+  </div>
 
+
+  <div class="impl">
+
   <h5 id="sample-handler-impl">Sample user interface</h5>
 
   <p><em>This section is non-normative.</em></p>
@@ -42886,8 +47552,10 @@
   method would work equivalently, but for unknown MIME types instead
   of unknown protocols.</p>
 
+  </div>
 
 
+
   <h3 id="offline">Offline Web applications</h3>
 
   <h4>Introduction</h4>
@@ -42897,6 +47565,8 @@
   <p class="XXX">...</p>
 
 
+  <div class="impl">
+
   <h4 id="appcache">Application caches</h4>
 
   <p>An <dfn>application cache</dfn> is a set of cached resources
@@ -43050,6 +47720,7 @@
 
   </ul>
 
+  </div>
 
 
   <h4 id="manifests">The cache manifest syntax</h4>
@@ -43222,6 +47893,8 @@
   manifests).</p>
 
 
+  <div class="impl">
+
   <h5>Parsing cache manifests</h5>
 
   <p>When a user agent is to <dfn>parse a manifest</dfn>, it means
@@ -44419,7 +49092,10 @@
   primed the first time), making the testing of offline applications
   simpler.</p>
 
+  </div>
 
+
+
   <h4>Application cache API</h4>
 
   <pre class="idl">interface <dfn>ApplicationCache</dfn> {
@@ -44449,6 +49125,35 @@
 
 };</pre>
 
+  <dl class="domintro">
+
+   <dt><var title="">window</var> . <code title="dom-applicationCache">applicationCache</code> . <code title="dom-appcache-status">status</code></dt>
+   <dd>
+
+    <p>Returns the current status of the application cache, as given by the constants defined below.</p>
+
+   </dd>
+
+   <dt><var title="">window</var> . <code title="dom-applicationCache">applicationCache</code> . <code title="dom-appcache-update">update</code>()</dt>
+   <dd>
+
+    <p>Invokes the application cache update process.</p>
+
+    <p>Throws an <code>INVALID_ACCESS_ERR</code> exception if there is no application cache to update.</p>
+
+   </dd>
+
+   <dt><var title="">window</var> . <code title="dom-applicationCache">applicationCache</code> . <code title="dom-appcache-swapCache">swapCache</code>()</dt>
+   <dd>
+
+    <p>Switches to the most recent application cache, if there is a newer one. If there isn't, throws an <code>INVALID_ACCESS_ERR</code> exception.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>Objects implementing the <code>ApplicationCache</code> interface
   must also implement the <code>EventTarget</code> interface.</p>
 
@@ -44472,6 +49177,8 @@
   is associated with, if any. This must be the appropriate value from
   the following list:</p>
 
+  </div>
+
   <dl>
 
    <dt><dfn title="dom-appcache-UNCACHED"><code>UNCACHED</code></dfn>
@@ -44532,6 +49239,8 @@
 
   </dl>
 
+  <div class="impl">
+
   <hr>
 
   <p>If the <dfn
@@ -44658,9 +49367,27 @@
 
   </dl>
 
+  </div>
 
+
   <h4>Browser state</h4>
 
+  <dl class="domintro">
+
+   <dt><var title="">window</var> . <code title="dom-navigator">navigator</code> . <code title="dom-navigator-onLine">onLine</code></dt>
+
+   <dd>
+
+    <p>Returns false if the user agent is definitely offline
+    (disconnected from the network). Returns true if the user agent
+    might be online.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-navigator-onLine"><code>navigator.onLine</code></dfn>
   attribute must return false if the user agent will not contact the
@@ -44682,6 +49409,8 @@
   title="event-online"><code>online</code></dfn> at the
   <code>Window</code> object.</p>
 
+  </div>
+
   <p class="note">This attribute is inherently unreliable. A computer
   can be connected to a network without having Internet access.</p>
 
@@ -44705,22 +49434,31 @@
   unique instance of the <code>History</code> object, although they
   all must model the same underlying <span>session history</span>.</p>
 
+  <div class="impl">
+
   <p>The <dfn title="dom-history"><code>history</code></dfn> attribute
   of the <code>Window</code> interface must return the object
   implementing the <code>History</code> interface for that
   <code>Window</code> object's <code>Document</code>.</p>
 
+  </div>
+
   <p><code>History</code> objects represent their <span>browsing
   context</span>'s session history as a flat list of <span
   title="session history entry">session history entries</span>. Each
   <dfn>session history entry</dfn> consists of either a
-  <span>URL</span> or a <span>state object</span>, or both, and may in
-  addition have a title, a <code>Document</code> object, form data, a
-  scroll position, and other information associated with it.</p>
+  <span>URL</span> or a <span>state object</span>, or both<span
+  class="impl">, and may in addition have a title, a
+  <code>Document</code> object, form data, a scroll position, and
+  other information associated with it</span>.</p>
 
+  <div class="impl">
+
   <p class="note">This does not imply that the user interface need be
   linear. See the <a href="#history-notes">notes below</a>.</p>
 
+  </div>
+
   <p>URLs without associated <span title="state object">state
   objects</span> are added to the session history as the user (or
   script) navigates from page to page.</p>
@@ -44755,6 +49493,8 @@
   <code>Document</code> (and that are therefore merely different
   states of one particular document) are contiguous by definition.</p>
 
+  <div class="impl">
+
   <p>User agents may <span title="discard a Document">discard</span>
   the <code>Document</code> objects of entries other than the
   <span>current entry</span> that are not referenced from any script,
@@ -44770,6 +49510,8 @@
   entries that shared the same <code>Document</code> object with it
   must share the new object as well.</p>
 
+  </div>
+
   <p>When state object entries are added, a URL can be provided. This
   URL is used to replace the state object entry if the
   <code>Document</code> is evicted.</p>
@@ -44786,6 +49528,68 @@
   void <span title="dom-history-clearState">clearState</span>();
 };</pre>
 
+  <dl class="domintro">
+
+   <dt><var title="">window</var> . <code title="dom-history">history</code> . <code title="dom-history-length">length</code></dt>
+
+   <dd>
+
+    <p>Returns the number of entries in the session history.</p>
+
+   </dd>
+
+   <dt><var title="">window</var> . <code title="dom-history">history</code> . <code title="dom-history-go">go</code>( [ <var title="">delta</var> ] )</dt>
+
+   <dd>
+
+    <p>Goes back or forward the specified number of steps in the history.</p>
+
+    <p>A zero delta will reload the current page.</p>
+
+    <p>If the delta is out of range, does nothing.</p>
+
+   </dd>
+
+   <dt><var title="">window</var> . <code title="dom-history">history</code> . <code title="dom-history-back">back</code>()</dt>
+
+   <dd>
+
+    <p>Goes back one step in the history.</p>
+
+    <p>If there is no previous page, does nothing.</p>
+
+   </dd>
+
+   <dt><var title="">window</var> . <code title="dom-history">history</code> . <code title="dom-history-forward">forward</code>()</dt>
+
+   <dd>
+
+    <p>Goes forward one step in the history.</p>
+
+    <p>If there is no next page, does nothing.</p>
+
+   </dd>
+
+   <dt><var title="">window</var> . <code title="dom-history">history</code> . <code title="dom-history-pushState">pushstate</code>(<var title="">data</var>, <var title="">title</var> [, <var title="">url</var> ] )</dt>
+
+   <dd>
+
+    <p>Pushes the given data onto the session history, with the given title, and, if provided, the given URL.</p>
+
+   </dd>
+
+   <dt><var title="">window</var> . <code title="dom-history">history</code> . <code title="dom-history-clearState">clearState</code>()</dt>
+
+   <dd>
+
+    <p>Removes all state objects for the current page from the session history.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-history-length"><code>length</code></dfn>
   attribute of the <code>History</code> interface must return the
   number of entries in this <span>session history</span>.</p>
@@ -44934,9 +49738,13 @@
   last entry for that <code>Document</code> object in the session
   history.</p>
 
+  </div>
 
+
   <h4><dfn title="activate the state object">Activating state object entries</dfn></h4>
 
+  <div class="impl">
+
   <p>When an entry in the session history is activated (which happens
   during <span title="traverse the history">session traversal</span>,
   as described above), the user agent must run the following
@@ -44990,12 +49798,28 @@
 
   <hr>
 
+  </div>
+
   <pre class="idl">interface <dfn>PopStateEvent</dfn> : Event {
   readonly attribute any <span title="dom-PopStateEvent-state">state</span>;
   void <span title="dom-PopStateEvent-initPopStateEvent">initPopStateEvent</span>(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in any stateArg);
   void <span title="dom-PopStateEvent-initPopStateEventNS">initPopStateEventNS</span>(in DOMString namespaceURIArg, in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in any stateArg);
 };</pre>
 
+  <dl class="domintro">
+
+   <dt><var title="">event</var> . <code title="dom-PopStateEvent-state">state</code></dt>
+
+   <dd>
+
+    <p>Returns the information that was provided to <code title="dom-history-pushState">pushState()</code>.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-PopStateEvent-initPopStateEvent"><code>initPopStateEvent()</code></dfn>
   and <dfn
@@ -45009,14 +49833,33 @@
   if the state represented is the initial state of the
   <code>Document</code>.</p>
 
+  </div>
 
 
+
   <h4>The <code>Location</code> interface</h4>
 
   <p>Each <code>Document</code> object in a <span>browsing
   context</span>'s session history is associated with a unique
   instance of a <code>Location</code> object.</p>
 
+  <dl class="domintro">
+
+   <dt><var title="">document</var> . <code title="dom-document-location">location</code> [ = <var title="">value</var> ]</dt>
+   <dt><var title="">window</var> . <code title="dom-location">location</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns a <code>Location</code> object with the current page's location.</p>
+
+    <p>Can be set, to navigate to another page.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-document-location"><code>location</code></dfn> attribute
   of the <code>HTMLDocument</code> interface must return the
@@ -45028,6 +49871,8 @@
   <code>Location</code> object for that <code>Window</code> object's
   <code>Document</code>.</p>
 
+  </div>
+
   <p><code>Location</code> objects provide a representation of <span
   title="the document's address">their document's address</span>, and
   allow the <span>current entry</span> of the <span>browsing
@@ -45054,6 +49899,54 @@
   DOMString <span title="dom-location-resolveURL">resolveURL</span>(in DOMString url);
 };</pre>
 
+  <dl class="domintro">
+
+   <dt><var title="">location</var> . <code title="dom-location-href">href</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the current page's location.</p>
+
+    <p>Can be set, to navigate to another page.</p>
+
+   </dd>
+
+   <dt><var title="">location</var> . <code title="dom-location-assign">assign</code>(<var title="">url</var>)</dt>
+
+   <dd>
+
+    <p>Navigates to the given page.</p>
+
+   </dd>
+
+   <dt><var title="">location</var> . <code title="dom-location-replace">replace</code>(<var title="">url</var>)</dt>
+
+   <dd>
+
+    <p>Removes the current page from the session history and navigates to the given page.</p>
+
+   </dd>
+
+   <dt><var title="">location</var> . <code title="dom-location-reload">reload</code>()</dt>
+
+   <dd>
+
+    <p>Reloads the current page.</p>
+
+   </dd>
+
+   <dt><var title="">url</var> = <var title="">location</var> . <code title="dom-location-resolveURL">resolveURL</code>(<var title="">url</var>)</dt>
+
+   <dd>
+
+    <p>Resolves the given relative URL to an absolute URL.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-location-href"><code>href</code></dfn>
   attribute must return <span title="the document's address">the
   address</span> of the associated <code>Document</code> object, as an
@@ -45120,6 +50013,8 @@
 user reload must be equivalent to .reload()
 -->
 
+  </div>
+
   <p>The <code>Location</code> interface also has the complement of
   <span>URL decomposition attributes</span>, <dfn
   title="dom-location-protocol"><code>protocol</code></dfn>, <dfn
@@ -45128,17 +50023,19 @@
   title="dom-location-hostname"><code>hostname</code></dfn>, <dfn
   title="dom-location-pathname"><code>pathname</code></dfn>, <dfn
   title="dom-location-search"><code>search</code></dfn>, and <dfn
-  title="dom-location-hash"><code>hash</code></dfn>. These must follow
-  the rules given for URL decomposition attributes, with the <span
-  title="concept-uda-input">input</span> being <span title="the
-  document's address">the address</span> of the associated
-  <code>Document</code> object, as an <span>absolute URL</span> (same
-  as the <code title="dom-location-href">href</code> attribute), and
-  the <span title="concept-uda-setter">common setter action</span>
-  being the same as setting the <code
+  title="dom-location-hash"><code>hash</code></dfn>. <span
+  class="impl">These must follow the rules given for URL decomposition
+  attributes, with the <span title="concept-uda-input">input</span>
+  being <span title="the document's address">the address</span> of the
+  associated <code>Document</code> object, as an <span>absolute
+  URL</span> (same as the <code title="dom-location-href">href</code>
+  attribute), and the <span title="concept-uda-setter">common setter
+  action</span> being the same as setting the <code
   title="dom-location-href">href</code> attribute to the new output
-  value.</p>
+  value.</span></p>
 
+  <div class="impl">
+
   <hr>
 
   <p>The <dfn title="dom-location-resolveURL"><code>resolveURL(<var
@@ -45149,7 +50046,11 @@
   <span>absolute URL</span>. If it fails, it must throw a
   <code>SYNTAX_ERR</code> exception instead.</p>
 
+  </div>
 
+
+  <div class="impl">
+
   <h5>Security</h5>
 
   <p>User agents must raise a <code>SECURITY_ERR</code> exception whenever
@@ -45171,7 +50072,11 @@
   <p>User agents must not allow scripts to override the <code
   title="dom-location-href">href</code> attribute's setter.</p>
 
+  </div>
 
+
+  <div class="impl">
+
   <h4 id="history-notes">Implementation notes for session history</h4>
 
   <p><em>This section is non-normative.</em></p>
@@ -45209,11 +50114,13 @@
   a timer, or from event handlers that do not represent a clear user
   action, or that are invoked in rapid succession.</p>
 
+  </div>
 
 
-
   <h3>Browsing the Web</h3>
 
+  <div class="impl">
+
   <h4>Navigating across documents</h4>
 
   <p>Certain actions cause the <span>browsing context</span> to
@@ -46063,10 +50970,13 @@
 
   </ol>
 
+  </div>
 
 
   <h4>Unloading documents</h4>
 
+  <div class="impl">
+
   <p>When a user agent is to <dfn>unload a document</dfn>, it must run
   the following steps. These steps are passed an argument, <var
   title="">recycle</var>, which is either true or false, indicating
@@ -46136,13 +51046,31 @@
 
   <h5>Event definition</h5>
 
+  </div>
+
   <pre class="idl">interface <dfn>BeforeUnloadEvent</dfn> : Event {
            attribute DOMString <span title="dom-BeforeUnloadEvent-returnValue">returnValue</span>;
 };</pre>
 
+  <dl class="domintro">
+
+   <dt><var title="">event</var> . <code title="dom-BeforeUnloadEvent-returnValue">returnValue</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the current return value of the event (the message to show the user).</p>
+
+    <p>Can be set, to update the message.</p>
+
+   </dd>
+
+  </dl>
+
   <p class="note">There are no <code>BeforeUnloadEvent</code>-specific
   initialization methods.</p>
 
+  <div class="impl">
+
   <p>The <dfn
   title="dom-BeforeUnloadEvent-returnValue"><code>returnValue</code></dfn>
   attribute represents the message to show the user. When the event is
@@ -46150,9 +51078,11 @@
   it must return the last value it was set to. On setting, the
   attribute must be set to the new value.</p>
 
+  </div>
 
 
 
+
   <h3>Structured client-side storage</h3>
 
   <h4 id="storage">Storing name/value pairs</h4>
@@ -46261,6 +51191,7 @@
   convert it to a string.</p>
 
 
+
   <h5>The <code>Storage</code> interface</h5>
 
   <pre class="idl">interface <dfn>Storage</dfn> {
@@ -46624,8 +51555,6 @@
   above is met.</p>
 
 
-
-
   <h4 id="sql">Database storage</h4>
 
   <!-- Feature requests for future versions (v2):
@@ -46649,6 +51578,7 @@
    executeSql('SELECT rowid FROM t WHERE c IN (' + q + ')', array, ...);
 -->
 
+
   <h5>Databases</h5>
 
   <p>Each <i>origin</i> has an associated set of databases. Each
@@ -47459,7 +52389,6 @@
 
 
 
-
   <h3 id="links">Links</h3>
 
 
@@ -47493,16 +52422,17 @@
 
   <p>The <dfn title="attr-hyperlink-target"><code>target</code></dfn>
   attribute, if present, must be a <span>valid browsing context name
-  or keyword</span>. User agents use this name when <span>following
-  hyperlinks</span>.</p>
+  or keyword</span>. It gives the name of the <span>browsing
+  context</span> that will be used. <span class="impl">User agents use
+  this name when <span>following hyperlinks</span>.</span></p>
 
   <p>The <dfn id="ping"
   title="attr-hyperlink-ping"><code>ping</code></dfn> attribute, if
   present, gives the URLs of the resources that are interested in
   being notified if the user follows the hyperlink. The value must be
-  a space separated list of one or more <span>valid URLs</span>. The
-  value is used by the user agent for <span>hyperlink
-  auditing</span>.</p>
+  a space separated list of one or more <span>valid URLs</span>. <span
+  class="impl">The value is used by the user agent for <span>hyperlink
+  auditing</span>.</span></p>
 
   <p>For <code>a</code> and <code>area</code> elements that represent
   hyperlinks, the relationship between the document containing the
@@ -47513,9 +52443,9 @@
   href="#linkTypes">allowed values and their meanings</a> are defined
   below. The <code title="attr-hyperlink-rel">rel</code> attribute has
   no default value. If the attribute is omitted or if none of the
-  values in the attribute are recognized by the UA, then the document
-  has no particular relationship with the destination resource other
-  than there being a hyperlink between the two.</p>
+  values in the attribute are recognized by the user agent, then the
+  document has no particular relationship with the destination
+  resource other than there being a hyperlink between the two.</p>
 
   <p>The <dfn title="attr-hyperlink-media"><code>media</code></dfn>
   attribute describes for which media the target document was
@@ -47529,22 +52459,24 @@
   attribute on hyperlink elements, if present, gives the language of
   the linked resource. It is purely advisory. The value must be a
   valid RFC 3066 language code. <a href="#refsRFC3066">[RFC3066]</a>
-  User agents must not consider this attribute authoritative &mdash;
-  upon fetching the resource, user agents must use only language
-  information associated with the resource to determine its language,
-  not metadata included in the link to the resource.</p>
+  <span class="impl">User agents must not consider this attribute
+  authoritative &mdash; upon fetching the resource, user agents must
+  use only language information associated with the resource to
+  determine its language, not metadata included in the link to the
+  resource.</span></p>
 
   <p>The <dfn title="attr-hyperlink-type"><code>type</code></dfn>
   attribute, if present, gives the MIME type of the linked
   resource. It is purely advisory. The value must be a valid MIME
   type, optionally with parameters. <a
-  href="#refsRFC2046">[RFC2046]</a> User agents must not consider the
-  <code title="attr-hyperlink-type">type</code> attribute
-  authoritative &mdash; upon fetching the resource, user agents must
-  not use metadata included in the link to the resource to determine
-  its type.</p>
+  href="#refsRFC2046">[RFC2046]</a> <span class="impl">User agents
+  must not consider the <code title="attr-hyperlink-type">type</code>
+  attribute authoritative &mdash; upon fetching the resource, user
+  agents must not use metadata included in the link to the resource to
+  determine its type.</span></p>
 
 
+  <div class="impl">
 
   <h4><dfn>Following hyperlinks</dfn></h4>
 
@@ -47719,6 +52651,8 @@
   the hostnames of the target ping URLs along with the hyperlink's
   actual URL in a status bar or tooltip.</p>
 
+  </div>
+
   <div class="note">
 
    <p>The <code title="attr-hyperlink-ping">ping</code> attribute is redundant
@@ -47771,18 +52705,22 @@
   the term <i>current document</i> refers to the resource within
   which the element representing the link finds itself.</p>
 
+  <div class="impl">
+
   <p>To determine which link types apply to a <code>link</code>,
   <code>a</code>, or <code>area</code> element, the element's <code
   title="">rel</code> attribute must be <span title="split a string on
   spaces">split on spaces</span>. The resulting tokens are the link
   types that apply to that element.</p>
 
+  </div>
+
   <p>Unless otherwise specified, a keyword must not be specified more
   than once per <code title="attr-rel-hyperlink">rel</code>
   attribute.</p>
 
-  <p>The link types are <span>ASCII case-insensitive</span> values,
-  and must be compared as such.</p>
+  <p>The link types are <span>ASCII case-insensitive</span>
+  values<span class="impl">, and must be compared as such</span>.</p>
 
   <p class="example">Thus, <code title="">rel="next"</code> is the
   same as <code title="">rel="NEXT"</code>.</p>
@@ -47972,11 +52910,16 @@
    </tbody>
   </table>
 
+  <div class="impl">
+
   <p>Some of the types described below list synonyms for these
-  values. These are to be handled as specified by user agents, but
-  must not be used in documents.</p>
+  values. These <!--<span class="impl">-->are to be handled as
+  specified by user agents, but<!--</span>--> must not be used in
+  documents.</p>
 
+  </div>
 
+
   <!--XXX
 
   issues for rel="", etc:
@@ -48036,8 +52979,8 @@
 
   <p>If the <code title="rel-alternate">alternate</code> keyword is
   used with the <code title="attr-hyperlink-media">media</code>
-  attribute, it indicates that the referenced document is intended for use
-  with the media specified.</p>
+  attribute, it indicates that the referenced document is intended for
+  use with the media specified.</p>
 
   <p>If the <code title="rel-alternate">alternate</code> keyword is
   used with the <code title="attr-hyperlink-hreflang">hreflang</code>
@@ -48065,6 +53008,8 @@
 
   </div>
 
+  <div class="impl">
+
   <p>If the <code title="rel-alternate">alternate</code> keyword is
   used with the <code title="attr-hyperlink-type">type</code>
   attribute set to the value <code title="">application/rss+xml</code>
@@ -48072,6 +53017,8 @@
   user agent must treat the link as it would if it had the <code
   title="rel-feed">feed</code> keyword specified as well.</p>
 
+  </div>
+
   <p>The <code title="rel-alternate">alternate</code> link
   relationship is transitive &mdash; that is, if a document links to
   two other documents with the link type "<code
@@ -48095,11 +53042,15 @@
   <p class="example">A blog's index page could link to an index of the
   blog's past posts with <code title="">rel="archives"</code>.</p>
 
+  <div class="impl">
+
   <p><strong>Synonyms</strong>: For historical reasons, user agents
   must also treat the keyword "<code title="">archive</code>" like the
   <code title="rel-archives">archives</code> keyword.</p>
 
+  </div>
 
+
   <h5>Link type "<dfn title="rel-author"><code>author</code></dfn>"</h5>
 
   <p>The <code title="rel-author">author</code> keyword may be
@@ -48122,6 +53073,8 @@
   <code title="">mailto:</code> URL giving the e-mail address of the
   author. <a href="#refsMAILTO">[MAILTO]</a></p>
 
+  <div class="impl">
+
   <p><strong>Synonyms</strong>: For historical reasons, user agents
   must also treat <code>link</code>, <code>a</code>, and
   <code>area</code> elements that have a <code title="">rev</code>
@@ -48129,7 +53082,9 @@
   title="rel-author">author</code> keyword specified as a link
   relationship.</p>
 
+  </div>
 
+
   <h5>Link type "<dfn title="rel-bookmark"><code>bookmark</code></dfn>"</h5>
 
   <p>The <code title="rel-bookmark">bookmark</code> keyword may be
@@ -48182,16 +53137,21 @@
   section that the element defining the hyperlink <a
   href="#applyToSection">applies</a> to.</p>
 
+  <div class="impl">
+
   <p>User agents must treat any hyperlink in an <code>address</code>
   element as having the <code title="rel-contact">contact</code> link
   type specified.</p>
 
+  </div>
+
   <p>For <code>link</code> elements, the <code
   title="rel-contact">contact</code> keyword indicates that the
   referenced document provides further contact information for the
   page as a whole.</p>
 -->
 
+
   <h5>Link type "<dfn title="rel-external"><code>external</code></dfn>"</h5>
 
   <p>The <code title="rel-external">external</code> keyword may be
@@ -48216,6 +53176,8 @@
   otherwise, the feed is just a syndication feed, not necessarily
   associated with a particular Web page.</p>
 
+  <div class="impl">
+
   <p>The first <code>link</code>, <code>a</code>, or <code>area</code>
   element in the document (in tree order) that creates a hyperlink
   with the link type <code title="rel-feed">feed</code> must be
@@ -48241,7 +53203,9 @@
  &lt;/ul></pre>
   </div>
 
+  </div>
 
+
   <h5>Link type "<dfn title="rel-help"><code>help</code></dfn>"</h5>
 
   <p>The <code title="rel-help">help</code> keyword may be used with
@@ -48276,13 +53240,17 @@
   <code>link</code> elements, for which it creates an <span
   title="external resource link">external resource link</span>.</p>
 
+  <div class="impl">
+
   <p>The specified resource is an icon representing the page or site,
   and should be used by the user agent when representing the page in
   the user interface.</p>
 
+  </div>
+
   <p>Icons could be auditory icons, visual icons, or other kinds of
-  icons. If multiple icons are provided, the user agent must select
-  the most appropriate icon according to the <code
+  icons. <span class="impl">If multiple icons are provided, the user
+  agent must select the most appropriate icon according to the <code
   title="attr-link-type">type</code>, <code
   title="attr-link-media">media</code>, and <code
   title="attr-link-sizes">sizes</code> attributes. If there are
@@ -48291,13 +53259,17 @@
   use an icon but that icon is determined, upon closer examination, to
   in fact be inappropriate (e.g. because it uses an unsupported
   format), then the user agent must try the next-most-appropriate icon
-  as determined by the attributes.</p>
+  as determined by the attributes.</span></p>
 
+  <div class="impl">
+
   <p>There is no default type for resources given by the <code
   title="rel-icon">icon</code> keyword. However, for the purposes of
   <a href="#concept-link-type-sniffing">determining the type of the
   resource</a>, user agents must expect the resource to be an image.</p>
 
+  </div>
+
   <p>The <dfn title="attr-link-sizes"><code>sizes</code></dfn>
   attribute gives the sizes of icons for visual media.</p>
 
@@ -48312,15 +53284,21 @@
 
   <p>The keywords represent icon sizes.</p>
 
+  <div class="impl">
+
   <p>To parse and process the attribute's value, the user agent must
   first <span title="split a string on spaces">split the attribute's
   value on spaces</span>, and must then parse each resulting keyword
   to determine what it represents.</p>
 
+  </div>
+
   <p>The <dfn title="attr-link-sizes-any"><code>any</code></dfn> keyword
   represents that the resource contains a scalable icon, e.g. as
   provided by an SVG image.</p>
 
+  <div class="impl">
+
   <p>Other keywords must be further parsed as follows to determine
   what they represent:</p>
 
@@ -48357,15 +53335,21 @@
 
   </ul>
 
+  </div>
+
   <p>The keywords specified on the <code
   title="attr-link-sizes">sizes</code> attribute must not represent
   icon sizes that are not actually available in the linked
   resource.</p>
 
+  <div class="impl">
+
   <p>If the attribute is not specified, then the user agent must
   assume that the given icon is appropriate, but less appropriate than
   an icon of a known and appropriate size.</p>
 
+  </div>
+
   <div class="example">
 
    <p>The following snippet shows the top part of an application with
@@ -48401,11 +53385,15 @@
   that the referenced document provides the copyright license terms
   under which the current document is provided.</p>
 
+  <div class="impl">
+
   <p><strong>Synonyms</strong>: For historical reasons, user agents
   must also treat the keyword "<code title="">copyright</code>" like
   the <code title="rel-license">license</code> keyword.</p>
 
+  </div>
 
+
   <h5>Link type "<dfn title="rel-nofollow"><code>nofollow</code></dfn>"</h5>
 
   <p>The <code title="rel-nofollow">nofollow</code> keyword may be
@@ -48423,6 +53411,11 @@
   <p>The <code title="rel-noreferrer">noreferrer</code> keyword may be
   used with <code>a</code> and <code>area</code> elements.</p>
 
+  <p>It indicates that the no referrer information is to be leaked
+  when following the link.</p>
+
+  <div class="impl">
+
   <p>If a user agent follows a link defined by an <code>a</code> or
   <code>area</code> element that has the <code
   title="rel-noreferrer">noreferrer</code> keyword, the user agent
@@ -48434,7 +53427,9 @@
   title="dom-opener">opener</code> attribute to remain null</a> if the
   hyperlink creates a new <span>browsing context</span>.</p>
 
+  </div>
 
+
   <h5>Link type "<dfn title="rel-pingback"><code>pingback</code></dfn>"</h5>
 
   <p>The <code title="rel-pingback">pingback</code> keyword may be
@@ -48502,13 +53497,17 @@
   title="rel-stylesheet">stylesheet</code> keyword is <code
   title="">text/css</code>.</p>
 
+  <div class="impl">
+
   <p><strong>Quirk:</strong> If the document has been set to
   <span>quirks mode</span> and the <span
   title="Content-Type">Content-Type metadata</span> of the external
   resource is not a supported style sheet type, the user agent must
   instead assume it to be <code title="">text/css</code>.</p>
 
+  </div>
 
+
   <h5>Link type "<dfn title="rel-sidebar"><code>sidebar</code></dfn>"</h5>
 
   <p>The <code title="rel-sidebar">sidebar</code> keyword may be used
@@ -48569,12 +53568,16 @@
   conveys more information when used with the <code
   title="rel-up">up</code> keyword (q.v.).</p>
 
+  <div class="impl">
+
   <p><strong>Synonyms</strong>: For historical reasons, user agents
   must also treat the keywords "<code title="">top</code>", "<code
   title="">contents</code>", and "<code title="">toc</code>" like the
   <code title="rel-index">index</code> keyword.</p>
 
+  </div>
 
+
   <h6>Link type "<dfn title="rel-up"><code>up</code></dfn>"</h6>
 
   <p>The <code title="rel-up">up</code> keyword may be used with
@@ -48600,12 +53603,15 @@
 
   <p>If the page is part of multiple hierarchies, then they should be
   described in different <span
-  title="paragraph">paragraphs</span>. User agents must scope any
-  interpretation of the <code title="rel-up">up</code> and <code
-  title="rel-index">index</code> keywords together indicating the
-  depth of the hierarchy to the <span>paragraph</span> in which the
-  link finds itself, if any, or to the document otherwise.</p>
+  title="paragraph">paragraphs</span>. <span class="impl">User agents
+  must scope any interpretation of the <code title="rel-up">up</code>
+  and <code title="rel-index">index</code> keywords together
+  indicating the depth of the hierarchy to the <span>paragraph</span>
+  in which the link finds itself, if any, or to the document
+  otherwise.</span></p>
 
+  <div class="impl">
+
   <p>When two links have both the <code title="rel-up">up</code> and
   <code title="rel-index">index</code> keywords specified together in
   the same scope and contradict each other by having a different
@@ -48613,6 +53619,8 @@
   greater number of <code title="rel-up">up</code> keywords must be
   taken as giving the depth of the document.</p>
 
+  </div>
+
   <div class="example">
 
    <p>This can be used to mark up a navigation style sometimes known
@@ -48664,12 +53672,16 @@
   the document is part of a sequence, and that the link is leading to
   the document that is the first logical document in the sequence.</p>
 
+  <div class="impl">
+
   <p><strong>Synonyms</strong>: For historical reasons, user agents
   must also treat the keywords "<code title="">begin</code>" and
   "<code title="">start</code>" like the <code
   title="rel-first">first</code> keyword.</p>
 
+  </div>
 
+
   <h6>Link type "<dfn title="rel-last"><code>last</code></dfn>"</h6>
 
   <p>The <code title="rel-last">last</code> keyword may be used with
@@ -48681,11 +53693,15 @@
   document is part of a sequence, and that the link is leading to the
   document that is the last logical document in the sequence.</p>
 
+  <div class="impl">
+
   <p><strong>Synonyms</strong>: For historical reasons, user agents
   must also treat the keyword "<code title="">end</code>" like the
   <code title="rel-last">last</code> keyword.</p>
 
+  </div>
 
+
   <h6>Link type "<dfn title="rel-next"><code>next</code></dfn>"</h6>
 
   <p>The <code title="rel-next">next</code> keyword may be used with
@@ -48709,11 +53725,15 @@
   document is part of a sequence, and that the link is leading to the
   document that is the previous logical document in the sequence.</p>
 
+  <div class="impl">
+
   <p><strong>Synonyms</strong>: For historical reasons, user agents
   must also treat the keyword "<code title="">previous</code>" like
   the <code title="rel-prev">prev</code> keyword.</p>
 
+  </div>
 
+
   <h5>Other link types</h5>
 
   <p>Other than the types defined above, only types defined as
@@ -48853,6 +53873,8 @@
 
   </dl>
 
+  <div class="impl">
+
   <p>Conformance checkers must use the information given on the WHATWG
   Wiki RelExtensions page to establish if a value not explicitly
   defined in this specification is allowed or not. When an author uses
@@ -48861,19 +53883,22 @@
   Wiki, with the details described above, with the "proposal"
   status.</p>
 
+  </div>
+
   <p>This specification does not define how new values will get
   approved. It is expected that the Wiki will have a community that
   addresses this.</p>
 
 
 
-
   <h2 id="editing"><dfn>User Interaction</dfn></h2>
 
   <p>This section describes various features that allow authors to
   enable users to edit documents and parts of documents
   interactively.</p>
 
+
+
   <h3 id="editing-intro">Introduction</h3>
 
   <p><em>This section is non-normative.</em></p>
@@ -48889,8 +53914,9 @@
   content attribute set. The <code title="attr-hidden">hidden</code>
   attribute is a <span>boolean attribute</span>. When specified on an
   element, it indicates that the element is not yet, or is no longer,
-  relevant. User agents should not render elements that have the <code
-  title="attr-hidden">hidden</code> attribute specified.</p>
+  relevant. <span class="impl">User agents should not render elements
+  that have the <code title="attr-hidden">hidden</code> attribute
+  specified.</span></p>
 
   <div class="example">
 
@@ -48950,6 +53976,20 @@
        coords? (ack Csaba Gabor)
   -->
 
+  <dl class="domintro">
+
+   <dt><var title="">element</var> . <code title="dom-click">click</code>()</dt>
+
+   <dd>
+
+    <p>Acts as if the element was clicked.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>Each element has a <var title="">click in progress</var> flag,
   initially set to false.</p>
 
@@ -48974,10 +54014,28 @@
 
   </ol>
 
+  </div>
 
 
   <h3>Scrolling elements into view</h3>
 
+  <dl class="domintro">
+
+   <dt><var title="">element</var> . <code title="dom-scrollIntoView">scrollIntoView</code>( [ <var title="">top</var> ] )</dt>
+
+   <dd>
+
+    <p>Scrolls the element into view. If the <var title="">top</var>
+    argument is true, then the element will be scrolled to the top of
+    the viewport, otherwise it'll be scrolled to the bottom. The
+    default is the top.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-scrollIntoView"><code>scrollIntoView([<var
   title="">top</var>])</code></dfn> method, when called, must cause
   the element on which the method was called to have the attention of
@@ -49005,7 +54063,9 @@
 
   <!-- XXX maybe this should move to CSSOM -->
 
+  </div>
 
+
   <h3>Focus</h3>
 
   <!-- http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%20%0A...%3Cform%3E%3Cinput%20name%3Da%20onfocus%3D%22value%2B%3D1%3Bd.name%3D%27a%27%3Bname%3D%27d%27%3Bb.focus()%22%3E%0A%3Cinput%20name%3Db%20onfocus%3D%22value%2B%3D1%3Bc.focus()%22%3E%0A%3Cinput%20name%3Dc%20onfocus%3D%22value%2B%3D1%3Bd.focus()%22%3E%0A%3Cinput%20name%3Dd%20onfocus%3D%22value%2B%3D1%3Ba.focus()%22%3E -->
@@ -49026,6 +54086,8 @@
        http://msdn.microsoft.com/workshop/author/dhtml/reference/events/onbeforeactivate.asp
   -->
 
+  <div class="impl">
+
   <p>When an element is <i>focused</i>, key events received by the
   document must be targeted at that element. There may be no element
   focused; when no element is focused, key events received by the
@@ -49045,7 +54107,9 @@
   <p class="note">When an element is focused, the element matches the
   CSS <code>:focus</code> pseudo-class.</p>
 
+  </div>
 
+
   <h4>Sequential focus navigation</h4>
 
   <p>The <dfn title="attr-tabindex"><code>tabindex</code></dfn>
@@ -49061,6 +54125,8 @@
   specified, must have a value that is a <span>valid
   integer</span>.</p>
 
+  <div class="impl">
+
   <p>If the attribute is specified, it must be parsed using the
   <span>rules for parsing integers</span>. The attribute's values have
   the following meanings:</p>
@@ -49217,7 +54283,11 @@
   then the DOM attribute must return 0 for elements that are focusable
   and &#x2212;1 for elements that are not focusable.</p>
 
+  </div>
 
+
+  <div class="impl">
+
   <h4 id="focus-management">Focus management</h4>
 
   <p>The <dfn>focusing steps</dfn> are as follows:</p>
@@ -49288,9 +54358,49 @@
   happen to an <code>input</code> element when the element gets <span
   title="concept-fe-disabled">disabled</span>.</p>
 
+  </div>
 
+
   <h4>Document-level focus APIs</h4>
 
+  <dl class="domintro">
+
+   <dt><var title="">document</var> . <code title="dom-document-activeElement">activeElement</code></dt>
+
+   <dd>
+
+    <p>Returns the currently focused element.</p>
+
+   </dd>
+
+   <dt><var title="">document</var> . <code title="dom-document-hasFocus">hasFocus</code>()</dt>
+
+   <dd>
+
+    <p>Returns true if the document has focus; otherwise, returns false.</p>
+
+   </dd>
+
+   <dt><var title="">window</var> . <code title="dom-window-focus">focus</code>()</dt>
+
+   <dd>
+
+    <p>Focuses the window. Use of this method is discouraged. Allow the user to control window focus instead.</p>
+
+   </dd>
+
+   <dt><var title="">window</var> . <code title="dom-window-blur">blur</code>()</dt>
+
+   <dd>
+
+    <p>Unfocuses the window. Use of this method is discouraged. Allow the user to control window focus instead.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-document-activeElement"><code>activeElement</code></dfn>
   attribute on <code>DocumentHTML</code> objects must return the
@@ -49333,9 +54443,33 @@
   system focus, but hostile sites widely abuse this behavior to the
   user's detriment.</p>
 
+  </div>
 
+
   <h4>Element-level focus APIs</h4>
 
+  <dl class="domintro">
+
+   <dt><var title="">element</var> . <code title="dom-focus">focus</code>()</dt>
+
+   <dd>
+
+    <p>Focuses the element.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-blur">blur</code>()</dt>
+
+   <dd>
+
+    <p>Unfocuses the element. Use of this method is discouraged. Focus another element instead.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-focus"><code>focus()</code></dfn> method,
   when invoked, must run the following algorithm:</p>
 
@@ -49363,8 +54497,10 @@
   which the method was called instead. User agents may selectively or
   uniformly ignore calls to this method for usability reasons.</p>
 
+  </div>
 
 
+
   <h3 id="selection">The text selection APIs</h3>
 
   <p>Every <span>browsing context</span> has <dfn title="the
@@ -49383,6 +54519,8 @@
   the document. (Editing hosts that are not inside a document cannot
   have a selection.)</p>
 
+  <div class="impl">
+
   <p>If the selection is empty (collapsed, so that it has only one
   segment and that segment's start and end points are the same) then
   the selection's position should equal the caret position. When the
@@ -49397,12 +54535,16 @@
   platforms, user agents may ignore the requirement that the cursor
   position be linked to the position of the selection altogether.</p>
 
+  </div>
+
   <p>Mostly for historical reasons, in addition to the <span>browsing
   context</span>'s <span title="the selection">selection</span>, each
   <code>textarea</code> and <code>input</code> element has an
   independent selection. These are the <dfn title="text field
   selection">text field selections</dfn>.</p>
 
+  <div class="impl">
+
   <p>User agents may selectively ignore attempts to use the API to
   adjust the selection made after the user has modified the
   selection. For example, if the user has just selected part of a
@@ -49413,6 +54555,8 @@
   <p>User agents may also allow the user to create selections that are
   not exposed to the API.</p>
 
+  </div>
+
   <p>The <code>datagrid</code> and <code>select</code> elements also
   have selections, indicating which items have been picked by the
   user. These are not discussed in this section.</p>
@@ -49428,6 +54572,22 @@
 
   <h4 id="documentSelection">APIs for the browsing context selection</h4>
 
+  <dl class="domintro">
+
+   <dt><var title="">window</var> . <code title="dom-getSelection">getSelection</code>()</dt>
+   <dt><var title="">document</var> . <code title="dom-document-getSelection">getSelection</code>()</dt>
+
+   <dd>
+
+    <p>Returns the <code>Selection</code> object for the window, which
+    stringifies to the text of the current selection.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-getSelection"><code>getSelection()</code></dfn> method on
   the <code>Window</code> interface must return the
@@ -49439,6 +54599,8 @@
   title="dom-document-getSelection"><code>getSelection()</code></dfn>
   method on the <code>HTMLDocument</code> interface must return the
   same <code>Selection</code> object.</p>
+
+  </div>
                                    
   <pre class="idl">[<span title="dom-selection-toString">Stringifies</span>] interface <dfn>Selection</dfn> {
   readonly attribute Node <span title="dom-selection-anchorNode">anchorNode</span>;
@@ -49488,6 +54650,150 @@
   raising exceptions as well, in addition to any explicitly called out
   below.</p> <!-- XXX example -->
 
+  <dl class="domintro">
+
+   <dt><var title="">selection</var> . <code title="dom-selection-anchorNode">anchorNode</code></dt>
+
+   <dd>
+
+    <p>Returns the element that contains the start of the selection.</p>
+
+    <p>Returns null if there's no selection.</p>
+
+   </dd>
+
+   <dt><var title="">selection</var> . <code title="dom-selection-anchorOffset">anchorOffset</code></dt>
+
+   <dd>
+
+    <p>Returns the offset of the start of the selection relative to the element that contains the start of the selection.</p>
+
+    <p>Returns 0 if there's no selection.</p>
+
+   </dd>
+
+   <dt><var title="">selection</var> . <code title="dom-selection-focusNode">focusNode</code></dt>
+
+   <dd>
+
+    <p>Returns the element that contains the end of the selection.</p>
+
+    <p>Returns null if there's no selection.</p>
+
+   </dd>
+
+   <dt><var title="">selection</var> . <code title="dom-selection-focusOffset">focusOffset</code></dt>
+
+   <dd>
+
+    <p>Returns the offset of the end of the selection relative to the element that contains the end of the selection.</p>
+
+    <p>Returns 0 if there's no selection.</p>
+
+   </dd>
+
+   <dt><var title="">collapsed</var> = <var title="">selection</var> . <code title="dom-selection-isCollapsed">isCollapsed</code>()</dt>
+
+   <dd>
+
+    <p>Returns true if there's no selection or if the selection is empty. Otherwise, returns false.</p>
+
+   </dd>
+
+   <dt><var title="">selection</var> . <code title="dom-selection-collapsed">collapsed</code>(<var title="">parentNode</var>, <var title="">offset</var>)</dt>
+
+   <dd>
+
+    <p>Replaces the selection with an empty one at the given position.</p>
+
+    <p>Throws a <code>WRONG_DOCUMENT_ERR</code> exception if the given node is in a different document.</p>
+
+   </dd>
+
+   <dt><var title="">selection</var> . <code title="dom-selection-collapseToStart">collapseToStart</code>()</dt>
+
+   <dd>
+
+    <p>Replaces the selection with an empty one at the position of the start of the current selection.</p>
+
+    <p>Throws an <code>INVALID_STATE_ERR</code> exception if there is no selection.</p>
+
+   </dd>
+
+   <dt><var title="">selection</var> . <code title="dom-selection-collapseToEnd">collapseToEnd</code>()</dt>
+
+   <dd>
+
+    <p>Replaces the selection with an empty one at the position of the end of the current selection.</p>
+
+    <p>Throws an <code>INVALID_STATE_ERR</code> exception if there is no selection.</p>
+
+   </dd>
+
+   <dt><var title="">selection</var> . <code title="dom-selection-selectAllChildren">selectAllChildren</code>(<var title="">parentNode</var>)</dt>
+
+   <dd>
+
+    <p>Replaces the selection with one that contains all the contents of the given element.</p>
+
+    <p>Throws a <code>WRONG_DOCUMENT_ERR</code> exception if the given node is in a different document.</p>
+
+   </dd>
+
+   <dt><var title="">selection</var> . <code title="dom-selection-deleteFromDocument">deleteFromDocument</code>()</dt>
+
+   <dd>
+
+    <p>Deletes the selection.</p>
+
+   </dd>
+
+   <dt><var title="">selection</var> . <code title="dom-selection-rangeCount">rangeCount</code></dt>
+
+   <dd>
+
+    <p>Returns the number of ranges in the selection.</p>
+
+   </dd>
+
+   <dt><var title="">selection</var> . <code title="dom-selection-getRangeAt">getRangeAt</code>(<var title="">index</var>)</dt>
+
+   <dd>
+
+    <p>Returns the given range.</p>
+
+    <p>Throws an <code>INVALID_STATE_ERR</code> exception if the value is out of range.</p>
+
+   </dd>
+
+   <dt><var title="">selection</var> . <code title="dom-selection-addRange">addRange</code>(<var title="">range</var>)</dt>
+
+   <dd>
+
+    <p>Adds the given range to the selection.</p>
+
+   </dd>
+
+   <dt><var title="">selection</var> . <code title="dom-selection-removeRange">removeRange</code>(<var title="">range</var>)</dt>
+
+   <dd>
+
+    <p>Removes the given range from the selection, if the range was one of the ones in the selection.</p>
+
+   </dd>
+
+   <dt><var title="">selection</var> . <code title="dom-selection-removeAllRanges">removeAllRanges</code>()</dt>
+
+   <dd>
+
+    <p>Removes all the ranges in the selection.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-selection-anchorNode"><code>anchorNode</code></dfn>
   attribute must return the value returned by the <code
@@ -49610,6 +54916,8 @@
   method of the <code>Range</code> object on each of the ranges of the
   selection, in the order they appear in the list (first to last).</p>
 
+  </div>
+
   <div class="example">
    <p>In the following document fragment, the emphasised parts
    indicate the selection.</p>
@@ -49629,8 +54937,8 @@
   value (ack martijnw) -->
 
   <p>The <code>input</code> and <code>textarea</code> elements define
-  four members in their DOM interfaces for handling their text
-  selection:</p>
+  the following members in their DOM interfaces for handling their
+  text selection:</p>
 
   <pre class="idl">  void <span title="dom-textarea/input-select">select</span>();
            attribute unsigned long <span title="dom-textarea/input-selectionStart">selectionStart</span>;
@@ -49641,6 +54949,48 @@
   <p>These methods and attributes expose and control the selection of
   <code>input</code> and <code>textarea</code> text fields.</p>
 
+  <dl class="domintro">
+
+   <dt><var title="">element</var> . <code title="dom-textarea/input-select">select</code>()</dt>
+
+   <dd>
+
+    <p>Selects everything in the text field.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-textarea/input-selecionStart">selectionStart</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the offset to the start of the selection.</p>
+
+    <p>Can be set, to change the start of the selection.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-textarea/input-selecionEnd">selectionEnd</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the offset to the end of the selection.</p>
+
+    <p>Can be set, to change the end of the selection.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-textarea/input-setSelectionRange">setSelectionRange</code>(<var title="">start</var>, <var title="">end</var>)</dt>
+
+   <dd>
+
+    <p>Changes the selection to cover the given substring.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>When these methods and attributes are used with
   <code>input</code> elements while they don't apply, they must raise
   an <code>INVALID_STATE_ERR</code> exception. Otherwise, they must
@@ -49699,6 +55049,8 @@
   concept of an empty selection, this must set the cursor to be just
   before the character with offset <var title="">end</var>.</p>
 
+  </div>
+
   <div class="example">
 
    <p>To obtain the currently selected text, the following JavaScript
@@ -49718,7 +55070,6 @@
 
 
 
-
   <h3 id="contenteditable">The <code
   title="attr-contenteditable">contenteditable</code> attribute</h3>
 
@@ -49733,7 +55084,15 @@
   the <i>missing value default</i> (and the <i>invalid value
   default</i>).</p>
 
-  <p>If an <span title="HTML elements">HTML element</span> has a <code
+  <p>The <i>true</i> state indicates that the element is editable. The
+  <i>inherit</i> state indicates that the element is editable if its
+  parent is. The <i>false</i> state indicates that the element is not
+  editable.</p>
+
+  <div class="impl">
+
+  <p>Specifically, if an <span title="HTML elements">HTML
+  element</span> has a <code
   title="attr-contenteditable">contenteditable</code> attribute set to
   the true state, or it has its <code
   title="attr-contenteditable">contenteditable</code> attribute set to
@@ -49763,6 +55122,38 @@
   title="dom-document-designMode">designMode</code> disabled; either
   way, the element is not editable.</p>
 
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">element</var> . <code title="dom-contentEditable">contentEditable</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns "<code title="">true</code>", "<code
+    title="">false</code>", or "<code title="">inherit</code>", based
+    on the state of the <code
+    title="attr-contenteditable">contenteditable</code> attribute.</p>
+
+    <p>Can be set, to change that state.</p>
+
+    <p>Throws a <code>SYNTAX_ERR</code> exception if the new value
+    isn't one of those strings.</p>
+
+   </dd>
+
+   <dt><var title="">element</var> . <code title="dom-isContentEditable">isContentEditable</code></dt>
+
+   <dd>
+
+    <p>Returns true if the element is editable; otherwise, returns false.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-contentEditable"><code>contentEditable</code></dfn> DOM
   attribute, on getting, must return the string "<code
@@ -49809,7 +55200,11 @@
   <!-- XXX would be useful to have a way to mark an element as
   unremovable. -->
 
+  </div>
 
+
+  <div class="impl">
+
   <h4>User editing actions</h4>
 
   <p>There are several actions that the user agent should allow the
@@ -50005,13 +55400,37 @@
   request to delete the content of <span>the selection</span> followed
   by a request to break the paragraph at that position.</p>
 
+  </div>
 
+
+
   <h4>Making entire documents editable</h4>
 
+  <div class="impl">
+
   <p>Documents have a <dfn id="designMode"
   title="dom-document-designMode"><code>designMode</code></dfn>, which
   can be either enabled or disabled.</p>
 
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">document</var> . <code title="dom-document-designMode">designMode</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns "<code title="">on</code>" if the document is editable,
+    and "<code title="">off</code>" if it isn't.</p>
+
+    <p>Can be set, to change the document's current state.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <code title="dom-document-designMode">designMode</code> DOM
   attribute on the <code>Document</code> object takes two values,
   "<code title="">on</code>" and "<code title="">off</code>". When it
@@ -50032,10 +55451,14 @@
   or the state is changed. Initially, documents must have their <code
   title="dom-document-designMode">designMode</code> disabled.</p>
 
+  </div>
 
 
+
   <h3>Spelling and grammar checking</h3>
 
+  <div class="impl">
+
   <p>User agents can support the checking of spelling and grammar of
   editable text, either in form controls (such as the value of
   <code>textarea</code> elements), or in elements in an <span>editing
@@ -50068,6 +55491,8 @@
 
   <hr>
 
+  </div>
+
   <p>The <dfn title="attr-spellcheck"><code>spellcheck</code></dfn>
   attribute is an <span>enumerated attribute</span> whose keywords are
   <code title="">true</code> and <code
@@ -50078,8 +55503,36 @@
   the <i>missing value default</i> (and the <i>invalid value
   default</i>).</p>
 
+  <p>The <i>true</i> state indicates that the element is to have its
+  spelling and grammar checked. The <i>inherit</i> state indicates
+  that the element is to act the same way as its parent. The
+  <i>false</i> state indicates that the element is not to be
+  checked.</p>
+
+  <div class="impl">
+
   <hr>
 
+  </div>
+
+  <dl class="domintro">
+
+   <dt><var title="">element</var> . <code title="dom-spellcheck">spellcheck</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns true if the element is to have its spelling and grammar
+    checked; otherwise, returns false.</p>
+
+    <p>Can be set, to override the default and set the <code
+    title="attr-spellcheck">spellcheck</code> content attribute.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-spellcheck"><code>spellcheck</code></dfn> DOM
   attribute, on getting, must return true if the element's <code
   title="attr-spellcheck">spellcheck</code> content attribute is in
@@ -50229,10 +55682,12 @@
  &lt;label>Name: &lt;input spellcheck=" false" id="b">&lt;/label>
 &lt;/p></pre>
 
-   </div>
+  </div>
 
+  </div>
 
 
+
   <h3 id="dnd"><dfn>Drag and drop</dfn></h3>
 
 <!--XXX
@@ -50278,6 +55733,8 @@
   operation, stating what he wishes to drag and what he wishes to
   drop, respectively.</p>
 
+  <div class="impl">
+
   <p>However it is implemented, drag-and-drop operations must have a
   starting point (e.g. where the mouse was clicked, or the start of
   <span>the selection</span> or element that was selected for the
@@ -50291,7 +55748,9 @@
   not canceled, there must be at least one element in the middle
   step).</p>
 
+  </div>
 
+
   <h4>Introduction</h4>
 
   <p><em>This section is non-normative.</em></p>
@@ -50311,6 +55770,20 @@
   void <span title="dom-DragEvent-initDragEventNS">initDragEventNS</span>(in DOMString namespaceURIArg, in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in AbstractView viewArg, in long detailArg, in long screenXArg, in long screenYArg, in long clientXArg, in long clientYArg, in unsigned short buttonArg, in EventTarget relatedTargetArg, in DOMString modifiersListArg, in <span>DataTransfer</span> dataTransferArg);
 };</pre>
 
+  <dl class="domintro">
+
+   <dt><var title="">event</var> . <code title="dom-DragEvent-dataTransfer">dataTransfer</code></dt>
+
+   <dd>
+
+    <p>Returns the <code>DataTransfer</code> object for the event.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-DragEvent-initDragEvent"><code>initDragEvent()</code></dfn>
   and <dfn
@@ -50330,6 +55803,8 @@
   attribute of the <code>DragEvent</code> interface represents the
   context information for the event.</p>
 
+  </div>
+
   <pre class="idl">interface <dfn>DataTransfer</dfn> {
            attribute DOMString <span title="dom-DataTransfer-dropEffect">dropEffect</span>;
            attribute DOMString <span title="dom-DataTransfer-effectAllowed">effectAllowed</span>;
@@ -50339,12 +55814,103 @@
   DOMString <span title="dom-DataTransfer-getData">getData</span>(in DOMString format);
   void <span title="dom-DataTransfer-setDragImage">setDragImage</span>(in Element image, in long x, in long y);
   void <span title="dom-DataTransfer-addElement">addElement</span>(in Element element);
-};
-</pre>
+};</pre>
 
-  <p><code>DataTransfer</code> objects can conceptually contain
-  various kinds of data.</p>
+  <p><code>DataTransfer</code> objects can hold pieces of data, each
+  associated with a unique format. Formats are generally given by MIME
+  types, with some values special-cased for legacy reasons. For the
+  purposes of this API, however, the format strings are opaque,
+  <span>case-sensitive</span>, strings, and the empty string is a
+  valid format string.</p>
 
+  <dl class="domintro">
+
+   <dt><var title="">dataTransfer</var> . <code title="dom-DataTransfer-dropEffect">dropEffect</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the kind of operation that is currently selected. If
+    the kind of operation isn't one of those that is allowed by the
+    <code title="dom-DataTransfer-effectAllowed">effectAllowed</code>
+    attribute, then the operation will fail.</p>
+
+    <p>Can be set, to change the selected operation.</p>
+
+    <p>The possible values are <code title="">none</code>, <code
+    title="">copy</code>, <code title="">link</code>, and <code
+    title="">move</code>.</p>
+
+   </dd>
+
+   <dt><var title="">dataTransfer</var> . <code title="dom-DataTransfer-effectAllowed">effectAllowed</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns the kinds of operations that are to be allowed.</p>
+
+    <p>Can be set, to change the allowed operations.</p>
+
+    <p>The possible values are <code title="">none</code>, <code
+    title="">copy</code>, <code title="">copyLink</code>, <code
+    title="">copyMove</code>, <code title="">link</code>, <code
+    title="">linkMove</code>, <code title="">move</code>, <code
+    title="">all</code>, and <code title="">uninitialized</code>,</p>
+
+   </dd>
+
+   <dt><var title="">dataTransfer</var> . <code title="dom-DataTransfer-types">types</code></dt>
+
+   <dd>
+
+    <p>Returns a <code>DOMStringList</code> of the formats available.</p>
+
+   </dd>
+
+   <dt><var title="">dataTransfer</var> . <code title="dom-DataTransfer-clearData">clearData</code>( [ <var title="">format</var> ] )</dt>
+
+   <dd>
+
+    <p>Removes the data of the specified formats. Removes all data if
+    the argument is omitted.</p>
+
+   </dd>
+
+   <dt><var title="">dataTransfer</var> . <code title="dom-DataTransfer-setData">setData</code>(<var title="">format</var>, <var title="">data</var>)</dt>
+
+   <dd>
+
+    <p>Adds the specified data.</p>
+
+   </dd>
+
+   <dt><var title="">data</var> = <var title="">dataTransfer</var> . <code title="dom-DataTransfer-getData">getData</code>(<var title="">format</var>)</dt>
+
+   <dd>
+
+    <p>Returns the specified data. If there is no such data, returns the empty string.</p>
+
+   </dd>
+
+   <dt><var title="">dataTransfer</var> . <code title="dom-DataTransfer-setDragImage">setDragImage</code>(<var title="">element</var>, <var title="">x</var>, <var title="">y</var>)</dt>
+
+   <dd>
+
+    <p>Uses the given element to update the drag feedback, replacing any previously specified feedback.</p>
+
+   </dd>
+
+   <dt><var title="">dataTransfer</var> . <code title="dom-DataTransfer-addElement">addElement</code>(<var title="">element</var>)</dt>
+
+   <dd>
+
+    <p>Adds the given element to the list of elements used to render the drag feedback.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>When a <code>DataTransfer</code> object is created, it must be
   initialized as follows:</p>
 
@@ -50390,17 +55956,15 @@
   title="">uninitialized</code>. On getting, the attribute must return
   the last of those values that it was set to.</p>
 
-  <p><code>DataTransfer</code> objects can hold pieces of data, each
-  associated with a unique format. Formats are generally given by MIME
-  types, with some values special-cased for legacy reasons. For the
-  purposes of this API, however, the format strings are opaque,
-  <span>case-sensitive</span>, strings, and the empty string is a
-  valid format string.</p>
+  <p>The <dfn title="dom-DataTransfer-types"><code>types</code></dfn>
+  attribute must return a live <code>DOMStringList</code> that
+  contains the list of formats that are stored in the
+  <code>DataTransfer</code> object.</p>
 
   <p>The <dfn
   title="dom-DataTransfer-clearData"><code>clearData()</code></dfn>
   method, when called with no arguments, must clear the
-  <code>DataTransfer</code> object of al data (for all formats).</p>
+  <code>DataTransfer</code> object of all data (for all formats).</p>
 
   <p>When called with an argument, the <code
   title="dom-DataTransfer-clearData">clearData(<var
@@ -50437,11 +56001,6 @@
   is but it has no URLs, then the method must return the empty
   string. <a href="#refsRFC2483">[RFC2483]</a></p>
 
-  <p>The <dfn title="dom-DataTransfer-types"><code>types</code></dfn>
-  attribute must return a live <code>DOMStringList</code> that
-  contains the list of formats that are stored in the
-  <code>DataTransfer</code> object.</p>
-
   <p>The <dfn
   title="dom-DataTransfer-setDragImage"><code>setDragImage(<var
   title="">element</var>, <var title="">x</var>, <var
@@ -50468,22 +56027,24 @@
   current rendering of the elements added, whereas the former uses the
   exact specified image.</p>
 
+  </div>
 
+
   <h4>Events fired during a drag-and-drop action</h4>
 
   <p>The following events are involved in the drag-and-drop
-  model. Whenever the processing model described below causes one of
-  these events to be fired, the event fired must use the
-  <code>DragEvent</code> interface defined above, must have the
-  bubbling and cancelable behaviors given in the table below, and must
-  have the context information set up as described after the table,
-  with the <code title="dom-UIEvent-view">view</code> attribute set to
-  the view with which the user interacted to trigger the drag-and-drop
-  event, the <code title="dom-UIEvent-detail">detail</code> attribute
-  set to zero, the mouse and key attributes set according to the state
-  of the input devices as they would be for user interaction events,
-  and the <code title="">relatedTarget</code> attribute set to
-  null.</p>
+  model. <span class="impl">Whenever the processing model described
+  below causes one of these events to be fired, the event fired must
+  use the <code>DragEvent</code> interface defined above, must have
+  the bubbling and cancelable behaviors given in the table below, and
+  must have the context information set up as described after the
+  table, with the <code title="dom-UIEvent-view">view</code> attribute
+  set to the view with which the user interacted to trigger the
+  drag-and-drop event, the <code
+  title="dom-UIEvent-detail">detail</code> attribute set to zero, the
+  mouse and key attributes set according to the state of the input
+  devices as they would be for user interaction events, and the <code
+  title="">relatedTarget</code> attribute set to null.</span></p>
 
   <table>
 
@@ -50583,6 +56144,8 @@
 
   </table>
 
+  <div class="impl">
+
   <p>The <code title="dom-DragEvent-dataTransfer">dataTransfer</code>
   object's contents are empty except for <code
   title="event-dragstart">dragstart</code> events and <code
@@ -50656,7 +56219,11 @@
    </tr>
   </table>
 
+  </div>
 
+
+  <div class="impl">
+
   <h4>Drag-and-drop processing model</h4>
 
   <p>When the user attempts to begin a drag operation, the user agent
@@ -51121,7 +56688,11 @@
 
   </ol>
 
+  </div>
 
+
+  <div class="impl">
+
   <h5>When the drag-and-drop operation starts or ends in another
   document</h5>
 
@@ -51135,7 +56706,12 @@
   source in the events to the target, or is that obvious enough from
   the requirements in the event section above? -->
 
+  </div>
 
+
+
+  <div class="impl">
+
   <h5>When the drag-and-drop operation starts or ends in another
   application</h5>
 
@@ -51160,6 +56736,7 @@
   drag-and-drop operation being started or ended in another document
   from another domain.</p>
 
+  </div>
 
 
   <h4>The <dfn title="attr-draggable"><code>draggable</code></dfn> attribute</h4>
@@ -51174,6 +56751,28 @@
   <i>auto</i>; it has no keywords but it is the <i>missing value
   default</i>.</p>
 
+  <p>The <i>true</i> state means the element is draggable; the
+  <i>false</i> state means that it is not. The <i>auto</i> state
+  uses the default behavior of the user agent.</p>
+
+  <dl class="domintro">
+
+   <dt><var title="">element</var> . <code title="dom-draggable">draggable</code> [ = <var title="">value</var> ]</dt>
+
+   <dd>
+
+    <p>Returns true if the element is draggable; otherwise, returns
+    false.</p>
+
+    <p>Can be set, to override the default and set the <code
+    title="attr-draggable">draggable</code> content attribute.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-draggable"><code>draggable</code></dfn> DOM
   attribute, whose value depends on the content attribute's in the way
   described below, controls whether or not the element is
@@ -51212,8 +56811,10 @@
   content attribute must be set to the literal value <code
   title="">true</code>.</p>
 
+  </div>
 
 
+
   <h4>Copy and paste</h4>
 
   <p>Copy-and-paste is a form of drag-and-drop: the "copy" part is
@@ -51226,6 +56827,8 @@
   source is the selection.</p>
 
 
+  <div class="impl">
+
   <h5>Copy to clipboard</h5>
 
   <p>When the user invokes a copy operation, the user agent must act
@@ -51270,8 +56873,12 @@
   element with the keyboard focus, and then ended the drag-and-drop
   operation without canceling it.</p>
 
+  </div>
 
 
+
+  <div class="impl">
+
   <h4>Security risks in the drag-and-drop model</h4>
 
   <p>User agents must not make the data added to the
@@ -51296,14 +56903,23 @@
   data to be dragged from sensitive sources and dropped into hostile
   documents without the user's consent.</p>
 
+  </div>
 
 
-
-
   <h3 id="undo"><dfn>Undo history</dfn></h3>
 
   <p class="XXX">There has got to be a better way of doing this, surely.</p>
 
+
+  <h4>Introduction</h4>
+
+  <p class="XXX">...</p>
+
+
+  <div class="impl">
+
+  <h4>Definitions</h4>
+
   <p>The user agent must associate an <dfn>undo transaction
   history</dfn> with each <code>HTMLDocument</code> object.</p>
 
@@ -51344,9 +56960,13 @@
   interactions with server-side state, or in the implementation of a
   drawing tool).</p>
 
+  </div>
 
+
   <h4>The <code>UndoManager</code> interface</h4>
 
+  <div class="impl">
+
   <div class="XXX">
 
    <p>This API sucks. Seriously. It's a terrible API. Really bad. I
@@ -51373,6 +56993,8 @@
 
   </div>
 
+  </div>
+
   <p>To manage <span>undo object</span> entries in the <span>undo
   transaction history</span>, the <code>UndoManager</code>
   interface can be used:</p>
@@ -51387,6 +57009,74 @@
   void <span title="dom-UndoManager-clearRedo">clearRedo</span>();
 };</pre>
 
+  <dl class="domintro">
+
+   <dt><var title="">window</var> . <code title="dom-undoManager">undoManager</code></dt>
+
+   <dd>
+
+    <p>Returns the <code>UndoManager</code> object.</p>
+
+   </dd>
+
+   <dt><var title="">undoManager</var> . <code title="dom-UndoManager-length">length</code></dt>
+   <dd>
+
+    <p>Returns the number of entries in the undo history.</p>
+
+   </dd>
+
+   <dt><var title="">data</var> = <var title="">undoManager</var> . <code title="dom-UndoManager-item">item</code>(<var title="">index</var>)</dt>
+   <dt><var title="">undoManager</var>[<var title="">index</var>]</dt>
+   <dd>
+
+    <p>Returns the entry with index <var title="">index</var> in the undo history.</p>
+
+    <p>Returns null if <var title="">index</var> is out of range.</p>
+
+   </dd>
+
+   <dt><var title="">undoManager</var> . <code title="dom-UndoManager-position">position</code></dt>
+   <dd>
+
+    <p>Returns the number of the current entry in the undo history. (Entries at and past this point are <em>redo</em> entries.)</p>
+
+   </dd>
+
+   <dt><var title="">undoManager</var> . <code title="dom-UndoManager-add">add</code>(<var title="">data</var>, <var title="">title</var>)</dt>
+   <dd>
+
+    <p>Adds the specified entry to the undo history.</p>
+
+   </dd>
+
+   <dt><var title="">undoManager</var> . <code title="dom-UndoManager-remove">remove</code>(<var title="">index</var>)</dt>
+   <dd>
+
+    <p>Removes the specified entry to the undo history.</p>
+
+    <p>Throws an <code>INDEX_SIZE_ERR</code> exception if the given index is out of range.</p>
+
+   </dd>
+
+   <dt><var title="">undoManager</var> . <code title="dom-UndoManager-clearUndo">clearUndo</code>()</dt>
+   <dd>
+
+    <p>Removes all entries before the current position in the undo history.</p>
+
+   </dd>
+
+   <dt><var title="">undoManager</var> . <code title="dom-UndoManager-clearRedo">clearRedo</code>()</dt>
+   <dd>
+
+    <p>Removes all entries at and after the current position in the undo history.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn title="dom-undoManager"><code>undoManager</code></dfn>
   attribute of the <code>Window</code> interface must return the
   object implementing the <code>UndoManager</code> interface for that
@@ -51413,7 +57103,7 @@
   <p>The <dfn title="dom-UndoManager-item"><code>item(<var
   title="">n</var>)</code></dfn> method must return the <var
   title="">n</var>th <span>undo object</span> entry in the <span>undo
-  transaction history</span>.</p>
+  transaction history</span>.</p> <!-- XXX out of range handling? -->
 
   <p>The <span>undo transaction history</span> has a <dfn title="undo
   position">current position</dfn>. This is the position between two
@@ -51498,7 +57188,11 @@
   say "startBatchingDOMChangesForUndo()" and after that the changes to
   the DOM go in as if the user had done them.</p>
 
+  </div>
 
+
+  <div class="impl">
+
   <h4><dfn title="do-undo">Undo: moving back in the undo transaction history</dfn></h4>
 
   <p>When the user invokes an undo operation, or when the <code
@@ -51574,6 +57268,9 @@
   object, using the <span>undo object</span> entry's associated undo
   object as the event's data.</p>
 
+  </div>
+
+
   <h4>The <code>UndoManagerEvent</code> interface and the <code title="event-undo">undo</code> and <code title="event-redo">redo</code> events</h4>
 
   <pre class="idl">interface <dfn>UndoManagerEvent</dfn> : Event {
@@ -51582,6 +57279,21 @@
   void <span title="dom-UndoManagerEvent-initUndoManagerEventNS">initUndoManagerEventNS</span>(in DOMString namespaceURIArg, in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in any dataArg);
 };</pre>
 
+  <dl class="domintro">
+
+   <dt><var title="">event</var>  . <code title="dom-UndoManagerEvent-data">data</code></dt>
+
+   <dd>
+
+    <p>Returns the data that was passed to the <code
+    title="dom-undomanager-add">add()</code> method.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-UndoManagerEvent-initUndoManagerEvent"><code>initUndoManagerEvent()</code></dfn>
   and <dfn><code
@@ -51601,7 +57313,11 @@
   title="dom-UndoManagerEvent-data">data</code> field containing the
   relevant <span>undo object</span>.</p>
 
+  </div>
 
+
+  <div class="impl">
+
   <h4>Implementation notes</h4>
 
   <p>How user agents present the above conceptual model to the user is
@@ -51619,12 +57335,70 @@
   described in this section, however, such that to a script there is
   no detectable difference.</p>
 
+  </div>
 
 
 
 
+
   <h3>Command APIs</h3>
 
+  <dl class="domintro">
+
+   <dt><var title="">document</var> . <code title="dom-document-execCommand">execCommand</code>(<var title="">commandId</var> [, <var title="">showUI</var> [, <var title="">value</var> ] ] )</dt>
+
+   <dd>
+
+    <p>Runs the action specified by the first argument, as described
+    in the list below. The second and third arguments sometimes affect
+    the action. (If they don't they are ignored.)</p>
+
+   </dd>
+
+   <dt><var title="">document</var> . <code title="dom-document-queryCommandEnabled">queryCommandEnabled</code>(<var title="">commandId</var>)</dt>
+
+   <dd>
+
+    <p>Returns whether the given command is enabled, as described in the list below.</p>
+
+   </dd>
+
+   <dt><var title="">document</var> . <code title="dom-document-queryCommandIndeterm">queryCommandIndeterm</code>(<var title="">commandId</var>)</dt>
+
+   <dd>
+
+    <p>Returns whether the given command is indeterminate, as described in the list below.</p>
+
+   </dd>
+
+   <dt><var title="">document</var> . <code title="dom-document-queryCommandState">queryCommandState</code>(<var title="">commandId</var>)</dt>
+
+   <dd>
+
+    <p>Returns the state of the command, as described in the list below.</p>
+
+   </dd>
+
+   <dt><var title="">document</var> . <code title="dom-document-queryCommandSupported">queryCommandSupported</code>(<var title="">commandId</var>)</dt>
+
+   <dd>
+
+    <p>Returns true if the command is supported; otherwise, returns false.</p>
+
+   </dd>
+
+   <dt><var title="">document</var> . <code title="dom-document-queryCommandValue">queryCommandValue</code>(<var title="">commandId</var>)</dt>
+
+   <dd>
+
+    <p>Returns teh value of the command, as described in the list below.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn id="execCommand"
   title="dom-document-execCommand"><code>execCommand(<var
   title="">commandId</var>, <var title="">showUI</var>, <var
@@ -51654,11 +57428,15 @@
 
   </ol>
 
+  </div>
+
   <p>A document is <dfn>ready for editing host commands</dfn> if it
   has a selection that is entirely within an <span>editing
   host</span>, or if it has no selection but its caret is inside an
   <span>editing host</span>.</p>
 
+  <div class="impl">
+
   <p>The <dfn
   title="dom-document-queryCommandEnabled"><code>queryCommandEnabled(<var
   title="">commandId</var>)</code></dfn> method, when invoked, must
@@ -51691,15 +57469,18 @@
   return the value expressed below under "Value" for the given <var
   title="">commandId</var>.</p>
 
+  </div>
+
   <p>The possible values for <var title="">commandId</var>, and their
-  corresponding meanings, are as follows. These values must be
-  compared to the argument in an <span>ASCII case-insensitive</span>
-  manner.</p>
+  corresponding meanings, are as follows. <span class="impl">These
+  values must be compared to the argument in an <span>ASCII
+  case-insensitive</span> manner.</span></p>
 
   <dl>
 
    <dt><dfn title="command-bold"><code>bold</code></dfn></dt>
-   <dd><strong>Action:</strong> The user agent must act as if the user
+   <dd><strong>Summary:</strong> Toggles whether the selection is bold.</dd>
+   <dd class="impl"><strong>Action:</strong> The user agent must act as if the user
    had requested that the selection <a
    href="#contenteditable-wrapSemantic">be wrapped in the
    semantics</a> of the <em><code>b</code></em> element (or, again,
@@ -51716,7 +57497,11 @@
    "<code title="">false</code>" otherwise.</dd>
 
    <dt><dfn title="command-createLink"><code>createLink</code></dfn></dt>
-   <dd><strong>Action:</strong> The user agent must act as if the user
+   <dd><strong>Summary:</strong> Toggles whether the selection is a
+   link or not. If the second argument is true, and a link is to be
+   added, the user agent will ask the user for the address. Otherwise,
+   the third argument will be used as the address.</dd>
+   <dd class="impl"><strong>Action:</strong> The user agent must act as if the user
    had requested that the selection <a
    href="#contenteditable-wrapSemantic">be wrapped in the
    semantics</a> of the <em><code>a</code></em> element (or, again,
@@ -51734,7 +57519,9 @@
    <dd><strong>Value:</strong> Always the string "<code title="">false</code>".</dd>
 
    <dt><dfn title="command-delete"><code>delete</code></dfn></dt>
-   <dd><strong>Action:</strong> The user agent must act as if the user
+   <dd><strong>Summary:</strong> Deletes the selection or the
+   character before the cursor.</dd>
+   <dd class="impl"><strong>Action:</strong> The user agent must act as if the user
    had performed <a href="#contenteditable-delete">a backspace
    operation</a>.</dd>
    <dd><strong>Enabled When:</strong> The document is <span>ready for
@@ -51744,7 +57531,11 @@
    <dd><strong>Value:</strong> Always the string "<code title="">false</code>".</dd>
 
    <dt><dfn title="command-formatBlock"><code>formatBlock</code></dfn></dt>
-   <dd>
+   <dd><strong>Summary:</strong> Wraps the selection in the element
+   given by the second argument. If the second argument doesn't
+   specify an element that is <span>prose content</span> but not
+   <span>phrasing content</span>, does nothing.</dd>
+   <dd class="impl">
     <p><strong>Action:</strong> The user agent must run the following
     steps:</p>
     <ol>
@@ -51757,20 +57548,20 @@
      <li>
       <p>If <var title="">value</var> is (now) an <span>ASCII
       case-insensitive</span> match for the tag name of an element
-      defined by this specification that is defined to be a
-      <span>prose element</span> but not a <span>phrasing
-      element</span>, then, for every position in the selection, take
-      the furthest <span>flow content</span> ancestor element of that
-      position that contains only <span>phrasing content</span>, and,
-      if that element is <span>editable</span>, and has a content
-      model that allows it to contain <span>prose content</span> other
-      than <span>phrasing content</span>, and has a parent element
-      whose content model allows that parent to contain any
-      <span>prose content</span>, rename the element (as if the <code
+      defined by this specification that is defined to be <span>prose
+      content</span> but not <span>phrasing content</span>, then, for
+      every position in the selection, take the furthest <span>flow
+      content</span> ancestor element of that position that contains
+      only <span>phrasing content</span>, and, if that element is
+      <span>editable</span>, and has a content model that allows it to
+      contain <span>prose content</span> other than <span>phrasing
+      content</span>, and has a parent element whose content model
+      allows that parent to contain any <span>prose content</span>,
+      rename the element (as if the <code
       title="">Element.renameNode()</code> method had been used) to
-      <var title="">value</var>, using the HTML namespace.</p> <p>If
-      there is no selection, then, where in the description above
-      refers to the selection, the user agent must act as if the
+      <var title="">value</var>, using the HTML namespace.</p>
+      <p>If there is no selection, then, where in the description
+      above refers to the selection, the user agent must act as if the
       selection was an empty range (with just one position) at the
       caret position.</p>
      </li>
@@ -51783,7 +57574,9 @@
    <dd><strong>Value:</strong> Always the string "<code title="">false</code>".</dd>
 
    <dt><dfn title="command-forwardDelete"><code>forwardDelete</code></dfn></dt>
-   <dd><strong>Action:</strong> The user agent must act as if the user
+   <dd><strong>Summary:</strong> Deletes the selection or the
+   character after the cursor.</dd>
+   <dd class="impl"><strong>Action:</strong> The user agent must act as if the user
    had performed <a href="#contenteditable-delete">a forward delete
    operation</a>.</dd>
    <dd><strong>Enabled When:</strong> The document is <span>ready for
@@ -51793,8 +57586,12 @@
    <dd><strong>Value:</strong> Always the string "<code title="">false</code>".</dd>
 
    <dt><dfn title="command-insertImage"><code>insertImage</code></dfn></dt>
-   <dd><strong>Action:</strong> The user agent must act as if the user
-   had requested that the selection <a
+   <dd><strong>Summary:</strong> Toggles whether the selection is an
+   image or not. If the second argument is true, and an image is to be
+   added, the user agent will ask the user for the address. Otherwise,
+   the third argument will be used as the address.</dd>
+   <dd class="impl"><strong>Action:</strong> The user agent must act
+   as if the user had requested that the selection <a
    href="#contenteditable-wrapSemantic">be wrapped in the
    semantics</a> of the <em><code>img</code></em> element (or, again,
    unwrapped, or have that semantic inserted or removed, as defined by
@@ -51811,7 +57608,9 @@
    <dd><strong>Value:</strong> Always the string "<code title="">false</code>".</dd>
 
    <dt><dfn title="command-insertHTML"><code>insertHTML</code></dfn></dt>
-   <dd>
+   <dd><strong>Summary:</strong> Replaces the selection with the value
+   of the third argument parsed as HTML.</dd>
+   <dd class="impl">
     <p><strong>Action:</strong> The user agent must run the following
     steps:</p>
     <ol>
@@ -51839,7 +57638,8 @@
    <dd><strong>Value:</strong> Always the string "<code title="">false</code>".</dd>
 
    <dt><dfn title="command-insertLineBreak"><code>insertLineBreak</code></dfn></dt>
-   <dd><strong>Action:</strong> The user agent must act as if the user
+   <dd><strong>Summary:</strong> Inserts a line break.</dd>
+   <dd class="impl"><strong>Action:</strong> The user agent must act as if the user
    had <a href="#contenteditable-br">requested a line
    separator</a>.</dd>
    <dd><strong>Enabled When:</strong> The document is <span>ready for
@@ -51849,7 +57649,8 @@
    <dd><strong>Value:</strong> Always the string "<code title="">false</code>".</dd>
 
    <dt><dfn title="command-insertOrderedList"><code>insertOrderedList</code></dfn></dt>
-   <dd><strong>Action:</strong> The user agent must act as if the user
+   <dd><strong>Summary:</strong> Toggles whether the selection is an ordered list.</dd>
+   <dd class="impl"><strong>Action:</strong> The user agent must act as if the user
    had requested that the selection <a
    href="#contenteditable-wrapSemantic">be wrapped in the
    semantics</a> of the <code>ol</code> element (or unwrapped, or, if
@@ -51862,7 +57663,8 @@
    <dd><strong>Value:</strong> Always the string "<code title="">false</code>".</dd>
 
    <dt><dfn title="command-insertUnorderedList"><code>insertUnorderedList</code></dfn></dt>
-   <dd><strong>Action:</strong> The user agent must act as if the user
+   <dd><strong>Summary:</strong> Toggles whether the selection is an unordered list.</dd>
+   <dd class="impl"><strong>Action:</strong> The user agent must act as if the user
    had requested that the selection <a
    href="#contenteditable-wrapSemantic">be wrapped in the
    semantics</a> of the <code>ul</code> element (or unwrapped, or, if
@@ -51875,7 +57677,8 @@
    <dd><strong>Value:</strong> Always the string "<code title="">false</code>".</dd>
 
    <dt><dfn title="command-insertParagraph"><code>insertParagraph</code></dfn></dt>
-   <dd><strong>Action:</strong> The user agent must act as if the user
+   <dd><strong>Summary:</strong> Inserts a paragraph break.</dd>
+   <dd class="impl"><strong>Action:</strong> The user agent must act as if the user
    had performed a <a href="#contenteditable-breakBlock">break
    block</a> editing action.</dd>
    <dd><strong>Enabled When:</strong> The document is <span>ready for
@@ -51885,7 +57688,8 @@
    <dd><strong>Value:</strong> Always the string "<code title="">false</code>".</dd>
 
    <dt><dfn title="command-insertText"><code>insertText</code></dfn></dt>
-   <dd><strong>Action:</strong> The user agent must act as if the user
+   <dd><strong>Summary:</strong> Inserts the text given in the third parameter.</dd>
+   <dd class="impl"><strong>Action:</strong> The user agent must act as if the user
    had <a href="#contenteditable-insertText">inserted text</a>
    corresponding to the <var title="">value</var> parameter.</dd>
    <dd><strong>Enabled When:</strong> The document is <span>ready for
@@ -51895,7 +57699,8 @@
    <dd><strong>Value:</strong> Always the string "<code title="">false</code>".</dd>
 
    <dt><dfn title="command-italic"><code>italic</code></dfn></dt>
-   <dd><strong>Action:</strong> The user agent must act as if the user
+   <dd><strong>Summary:</strong> Toggles whether the selection is italic.</dd>
+   <dd class="impl"><strong>Action:</strong> The user agent must act as if the user
    had requested that the selection <a
    href="#contenteditable-wrapSemantic">be wrapped in the
    semantics</a> of the <em><code>i</code></em> element (or, again,
@@ -51912,7 +57717,8 @@
    "<code title="">false</code>" otherwise.</dd>
 
    <dt><dfn title="command-redo"><code>redo</code></dfn></dt>
-   <dd><strong>Action:</strong> The user agent must <span
+   <dd><strong>Summary:</strong> Acts as if the user had requested a redo.</dd>
+   <dd class="impl"><strong>Action:</strong> The user agent must <span
    title="do-redo">move forward one step</span> in its <span>undo
    transaction history</span>, restoring the associated state. If the
    <span>undo position</span> is at the end of the <span>undo
@@ -51926,7 +57732,8 @@
    <dd><strong>Value:</strong> Always the string "<code title="">false</code>".</dd>
 
    <dt><dfn title="command-selectAll"><code>selectAll</code></dfn></dt>
-   <dd><strong>Action:</strong> The user agent must change the
+   <dd><strong>Summary:</strong> Selects all the editable content.</dd>
+   <dd class="impl"><strong>Action:</strong> The user agent must change the
    selection so that all the content in the currently focused
    <span>editing host</span> is selected. If no <span>editing
    host</span> is focused, then the content of the entire document
@@ -51937,7 +57744,8 @@
    <dd><strong>Value:</strong> Always the string "<code title="">false</code>".</dd>
 
    <dt><dfn title="command-subscript"><code>subscript</code></dfn></dt>
-   <dd><strong>Action:</strong> The user agent must act as if the user
+   <dd><strong>Summary:</strong> Toggles whether the selection is subscripted.</dd>
+   <dd class="impl"><strong>Action:</strong> The user agent must act as if the user
    had requested that the selection <a
    href="#contenteditable-wrapSemantic">be wrapped in the
    semantics</a> of the <em><code>sub</code></em> element (or, again,
@@ -51954,7 +57762,8 @@
    "<code title="">false</code>" otherwise.</dd>
 
    <dt><dfn title="command-superscript"><code>superscript</code></dfn></dt>
-   <dd><strong>Action:</strong> The user agent must act as if the user
+   <dd><strong>Summary:</strong> Toggles whether the selection is superscripted.</dd>
+   <dd class="impl"><strong>Action:</strong> The user agent must act as if the user
    had requested that the selection <a
    href="#contenteditable-wrapSemantic">be wrapped in the
    semantics</a> of the <code>sup</code> element (or unwrapped, or, if
@@ -51971,7 +57780,8 @@
    "<code title="">false</code>" otherwise.</dd>
 
    <dt><dfn title="command-undo"><code>undo</code></dfn></dt>
-   <dd><strong>Action:</strong> The user agent must <span
+   <dd><strong>Summary:</strong> Acts as if the user had requested an undo.</dd>
+   <dd class="impl"><strong>Action:</strong> The user agent must <span
    title="do-undo">move back one step</span> in its <span>undo
    transaction history</span>, restoring the associated state. If the
    <span>undo position</span> is at the start of the <span>undo
@@ -51985,7 +57795,8 @@
    <dd><strong>Value:</strong> Always the string "<code title="">false</code>".</dd>
 
    <dt><dfn title="command-unlink"><code>unlink</code></dfn></dt>
-   <dd><strong>Action:</strong> The user agent must remove all
+   <dd><strong>Summary:</strong> Removes all links from the selection.</dd>
+   <dd class="impl"><strong>Action:</strong> The user agent must remove all
    <code>a</code> elements that have <code
    title="attr-a-href">href</code> attributes and that are partially
    or completely included in the current selection.</dd>
@@ -51999,31 +57810,32 @@
    <dd><strong>Value:</strong> Always the string "<code title="">false</code>".</dd>
 
    <dt><dfn title="command-unselect"><code>unselect</code></dfn></dt>
-   <dd><strong>Action:</strong> The user agent must change the
+   <dd><strong>Summary:</strong> Unselects everything.</dd>
+   <dd class="impl"><strong>Action:</strong> The user agent must change the
    selection so that nothing is selected.</dd>
    <dd><strong>Enabled When:</strong> Always.</dd>
    <dd><strong>Indeterminate When:</strong> Never.</dd>
    <dd><strong>State:</strong> Always false.</dd>
    <dd><strong>Value:</strong> Always the string "<code title="">false</code>".</dd>
 
-   <dt><code><var title="">vendorID</var>-<var title="">customCommandID</var></code></dt>
-   <dd><strong>Action:</strong> User agents may implement
+   <dt class="impl"><code><var title="">vendorID</var>-<var title="">customCommandID</var></code></dt>
+   <dd class="impl"><strong>Action:</strong> User agents may implement
    vendor-specific extensions to this API. Vendor-specific extensions
    to the list of commands should use the syntax <code><var
    title="">vendorID</var>-<var title="">customCommandID</var></code>
    so as to prevent clashes between extensions from different vendors
    and future additions to this specification.</dd>
-   <dd><strong>Enabled When:</strong> UA-defined.</dd>
-   <dd><strong>Indeterminate When:</strong> UA-defined.</dd>
-   <dd><strong>State:</strong> UA-defined.</dd>
-   <dd><strong>Value:</strong> UA-defined.</dd>
+   <dd class="impl"><strong>Enabled When:</strong> UA-defined.</dd>
+   <dd class="impl"><strong>Indeterminate When:</strong> UA-defined.</dd>
+   <dd class="impl"><strong>State:</strong> UA-defined.</dd>
+   <dd class="impl"><strong>Value:</strong> UA-defined.</dd>
 
-   <dt>Anything else</dt>
-   <dd><strong>Action:</strong> User agents must do nothing.</dd>
-   <dd><strong>Enabled When:</strong> Never.</dd>
-   <dd><strong>Indeterminate When:</strong> Never.</dd>
-   <dd><strong>State:</strong> Always false.</dd>
-   <dd><strong>Value:</strong> Always the string "<code title="">false</code>".</dd>
+   <dt class="impl">Anything else</dt>
+   <dd class="impl"><strong>Action:</strong> User agents must do nothing.</dd>
+   <dd class="impl"><strong>Enabled When:</strong> Never.</dd>
+   <dd class="impl"><strong>Indeterminate When:</strong> Never.</dd>
+   <dd class="impl"><strong>State:</strong> Always false.</dd>
+   <dd class="impl"><strong>Value:</strong> Always the string "<code title="">false</code>".</dd>
 
   </dl>
 
@@ -52036,7 +57848,6 @@
 
 
 
-
   <h2 id="comms">Communication</h2>
 
 
@@ -52059,6 +57870,57 @@
   void <span title="dom-MessageEvent-initMessageEventNS">initMessageEventNS</span>(in DOMString namespaceURI, in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in any dataArg, in DOMString originArg, in DOMString lastEventIdArg, in <span>WindowProxy</span> sourceArg, in <span>MessagePort</span> messagePortArg);
 };</pre>
 
+  <dl class="domintro">
+
+   <dt><var title="">event</var> . <code title="dom-MessageEvent-data">data</code></dt>
+
+   <dd>
+
+    <p>Returns the data of the message.</p>
+
+   </dd>
+
+   <dt><var title="">event</var> . <code title="dom-MessageEvent-origin">origin</code></dt>
+
+   <dd>
+
+    <p>Returns the origin of the message, for <span>server-sent
+    events</span> and <span>cross-document messaging</span>.</p>
+
+   </dd>
+
+   <dt><var title="">event</var> . <code title="dom-MessageEvent-lastEventId">lastEventId</code></dt>
+
+   <dd>
+
+    <p>Returns the last event ID, for <span>server-sent
+    events</span>.</p>
+
+   </dd>
+
+   <dt><var title="">event</var> . <code title="dom-MessageEvent-source">source</code></dt>
+
+   <dd>
+
+    <p>Returns the <code>WindowProxy</code> of the source window, for
+    <span>cross-document messaging</span>.</p>
+
+   </dd>
+
+   <dt><var title="">event</var> . <code title="dom-MessageEvent-messagePort">messagePort</code></dt>
+
+   <dd>
+
+    <p>Returns the <code>MessagePort</code> sent with the message, for
+    <span>cross-document messaging</span> and <span>channel
+    messaging</span>.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>The <dfn
   title="dom-MessageEvent-initMessageEvent"><code>initMessageEvent()</code></dfn>
   and <dfn
@@ -52107,8 +57969,10 @@
   null, and the <code title="dom-MessageEvent-messagePort">messagePort</code>
   attribute must be null.</p>
 
+  </div>
 
 
+
   <h3 id="server-sent-events"><dfn>Server-sent events</dfn></h3>
   <!-- eventsource -->
 
@@ -53844,11 +59708,15 @@
   domain, in a way designed to not enable cross-site scripting
   attacks.</p>
 
+  <div class="impl">
+
   <p>The <span>task source</span> for the <span
   title="concept-task">tasks</span> in <span>cross-document
   messaging</span> is the <dfn>posted message task source</dfn>.</p>
 
+  </div>
 
+
   <h4>Introduction</h4>
 
   <p><em>This section is non-normative.</em></p>
@@ -53892,8 +59760,12 @@
 
   <h4>Security</h4>
 
+  <div class="impl">
+
   <h5>Authors</h5>
 
+  </div>
+
   <p class="warning">Use of this API requires extra care to protect
   users from hostile entities abusing a site for their own
   purposes.</p>
@@ -53911,6 +59783,8 @@
   intended.</p>
 
 
+  <div class="impl">
+
   <h5>User agents</h5>
 
   <p>The integrity of this API is based on the inability for scripts
@@ -53925,9 +59799,30 @@
   disallowed for security reasons. It also requires that UAs be
   careful to allow access to certain properties but not others.</p>
 
+  </div>
 
+
   <h4>Posting messages</h4>
 
+  <dl class="domintro">
+
+   <dt><var title="">window</var> . <code title="dom-window-postMessage-2">postMessage</code>(<var title="">message</var>, [ <var title="">port</var>, ] <var title="">targetOrigin</var>)</dt>
+
+   <dd>
+
+    <p>Posts a message, optionally with a port, to the given window.</p>
+
+    <p>If the origin of the target window doesn't match the given
+    origin, the message is discarded, to avoid information leakage. To
+    send the message to the target regardless of origin, set the
+    target origin to "<code title="">*</code>".</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>When a script invokes the <dfn
   title="dom-window-postMessage-2"><code>postMessage(<var
   title="">message</var>, <var
@@ -54010,7 +59905,11 @@
 
   </ol>
 
+  </div>
 
+
+  <div class="impl">
+
   <h4>Posting messages with message ports</h4>
 
   <p>When a script invokes the <dfn
@@ -54136,6 +60035,7 @@
   sections be kept separate so that implementors can avoid getting
   confused with the 'port' step. -->
 
+  </div>
 
 
 
@@ -54158,6 +60058,36 @@
   readonly attribute <span>MessagePort</span> <span title="dom-channel-port2">port2</span>;
 };</pre>
 
+  <dl class="domintro">
+
+   <dt><var title="">channel</var> = new <code title="dom-MessageChannel">MessageChannel</code>()</dt>
+
+   <dd>
+
+    <p>Returns a new <code>MessageChannel</code> object with two new <code>MessagePort</code> objects.</p>
+
+   </dd>
+
+   <dt><var title="">channel</var> . <code title="dom-MessageChannel-port1">port1</code></dt>
+
+   <dd>
+
+    <p>Returns the first <code>MessagePort</code> object.</p>
+
+   </dd>
+
+   <dt><var title="">channel</var> . <code title="dom-MessageChannel-port2">port2</code></dt>
+
+   <dd>
+
+    <p>Returns the second <code>MessagePort</code> object.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>When the <dfn
   title="dom-MessageChannel"><code>MessageChannel()</code></dfn>
   constructor is called, it must run the following algorithm:</p>
@@ -54195,7 +60125,10 @@
   must return the values they were assigned when the
   <code>MessageChannel</code> object was created.</p>
 
+  </div>
 
+
+
   <h4>Message ports</h4>
 
   <p>Each channel has two message ports. Data sent through one port is
@@ -54212,6 +60145,47 @@
            attribute <span>Function</span> <span title="handler-MessagePort-onmessage">onmessage</span>;
 };</pre>
 
+  <dl class="domintro">
+
+   <dt><var title="">port</var> . <code title="dom-MessagePort-active">active</code></dt>
+
+   <dd>
+
+    <p>Returns true if the port is still active; otherwise, returns false.</p>
+
+   </dd>
+
+   <dt><var title="">port</var> . <code title="dom-MessagePort-poseMessage">postMessage</code>(<var title="">message</var> [, <var title="">port</var>] )</dt>
+
+   <dd>
+
+    <p>Posts a message through the channel, optionally with the given port.</p>
+
+    <p>Throws an <code>INVALID_ACCESS_ERR</code> if the port to be
+    sent is one of the ports involved in the communication.</p>
+
+   </dd>
+
+   <dt><var title="">port</var> . <code title="dom-MessagePort-start">start</code>()</dt>
+
+   <dd>
+
+    <p>Begins dispatching messages received on the port.</p>
+
+   </dd>
+
+   <dt><var title="">port</var> . <code title="dom-MessagePort-close">close</code>()</dt>
+
+   <dd>
+
+    <p>Disconnects the port, so that it is no longer active.</p>
+
+   </dd>
+
+  </dl>
+
+  <div class="impl">
+
   <p>Objects implementing the <code>MessagePort</code> interface must
   also implement the <code>EventTarget</code> interface.</p>
 
@@ -54478,8 +60452,11 @@
 
   </dl>
 
+  </div>
 
 
+  <div class="impl">
+
   <h5>Ports and garbage collection</h5>
 
   <p>User agents must act as if <code>MessagePort</code> objects have
@@ -54509,8 +60486,10 @@
   <!-- we might not need to explicitly say the first part of DOM
   Events is fixed to say that events on a task queue prevent GC -->
 
+  </div>
 
 
+
   <h2 id="syntax"><dfn>The HTML syntax</dfn></h2>
 
   <p class="note">This section only describes the rules for <code
@@ -54520,11 +60499,15 @@
 
   <h3>Writing HTML documents</h3>
 
+  <div class="impl">
+
   <p><em>This section only applies to documents, authoring tools, and
   markup generators. In particular, it does not apply to conformance
   checkers; conformance checkers must use the requirements given in
   the next section ("parsing HTML documents").</em></p>
 
+  </div>
+
   <p>Documents must consist of the following parts, in the given
   order:</p>
 
@@ -55342,6 +61325,7 @@
   title="">--&gt;</code>).</p>
 
 
+  <div class="impl">
 
   <h3 id="parsing">Parsing HTML documents</h3>
 
@@ -62415,8 +68399,10 @@
 
   </ol>
 
+  </div>
 
 
+
   <h3><dfn>Named character references</dfn></h3>
 
   <p>This table lists the character reference names that are supported
@@ -62441,7 +68427,6 @@
 
 
 
-
   <h2><dfn>The XHTML syntax</dfn></h2>
 
   <p class="note">This section only describes the rules for XML
@@ -62450,8 +68435,12 @@
   syntax</span>".</p>
 
 
+  <div class="impl">
+
   <h3>Writing XHTML documents</h3>
 
+  </div>
+
   <p>The syntax for using HTML with XML, whether in XHTML documents or
   embedded in other XML documents, is defined in the XML and
   Namespaces in XML specifications. <a href="#refsXML">[XML]</a> <a
@@ -62475,6 +68464,8 @@
   title="">&amp;apos;</code>).</p>
 
 
+  <div class="impl">
+
   <h3>Parsing XHTML documents</h3>
 
   <p>This section describes the relationship between XML and the DOM,
@@ -62689,8 +68680,11 @@
 
   </ol>
 
+  </div>
 
 
+  <div class="impl">
+
   <h2 id="rendering">Rendering</h2>
 
   <p><em>User agents are not required present HTML documents in any
@@ -64991,8 +70985,11 @@
 
   -->
 
+  </div>
 
 
+  <div class="impl">
+
   <h2>Obsolete features</h2>
 
   <p>Authors and documents must not use the features listed in this
@@ -65247,10 +71244,10 @@
 
   </ul>  
 
+  </div>
 
 
 
-
   <h2 id="no">Things that you can't do with this specification because
   they are better handled using other technologies that are further
   described herein</h2>
@@ -65454,6 +71451,9 @@
 
   <p class="XXX">List of attributes</p>
 
+  <p class="XXX">List of <dfn>reflecting DOM attributes</dfn> and their corresponding content attributes</p>
+  <!-- include option.text; textarea.defaultValue, and other attributes that "reflect" the element's textContent -->
+
   <p class="XXX">List of interfaces</p>
 
   <p class="XXX">List of events</p>
@@ -65561,11 +71561,15 @@
   features first widely deployed by the Windows Internet Explorer
   browser.</p>
 
+  <div class="impl">
+
   <p>Special thanks and $10,000 to David Hyatt who came up with a
   broken implementation of the <a href="#adoptionAgency">adoption
   agency algorithm</a> that the editor had to reverse engineer and fix
   before using it in the parsing section.</p>
 
+  </div>
+
   <p>Thanks to the many sources that provided inspiration for the
   examples used in the specification.</p>
 
@@ -65843,6 +71847,7 @@
           that vary more than HTMLFormControlCollection allows?
  XXX * should check all cases of 'active document' and change the
        relevant ones to 'fully active document'.
+ XXX * use <code>Document</code> consistently instead of 'document'.
 -->
 
  </body>

|