[html5] r3555 - [] (0) Remove <datagrid> for now. People aren't happy with the current design an [...]

whatwg at whatwg.org whatwg at whatwg.org
Fri Aug 7 13:16:25 PDT 2009


Author: ianh
Date: 2009-08-07 13:16:23 -0700 (Fri, 07 Aug 2009)
New Revision: 3555

Modified:
   index
   source
Log:
[] (0) Remove <datagrid> for now. People aren't happy with the current design and we won't have time to address it soon. We'll get back to it in a future version.

Modified: index
===================================================================
--- index	2009-08-07 10:02:22 UTC (rev 3554)
+++ index	2009-08-07 20:16:23 UTC (rev 3555)
@@ -557,44 +557,30 @@
    <li><a href=#interactive-elements><span class=secno>4.11 </span>Interactive elements</a>
     <ol>
      <li><a href=#the-details-element><span class=secno>4.11.1 </span>The <code>details</code> element</a></li>
-     <li><a href=#datagrid><span class=secno>4.11.2 </span>The <code>datagrid</code> element</a>
+     <li><a href=#the-command><span class=secno>4.11.2 </span>The <code>command</code> element</a></li>
+     <li><a href=#the-bb-element><span class=secno>4.11.3 </span>The <code>bb</code> element</a>
       <ol>
-       <li><a href=#introduction-1><span class=secno>4.11.2.1 </span>Introduction</a>
+       <li><a href=#browser-button-types><span class=secno>4.11.3.1 </span>Browser button types</a>
         <ol>
-         <li><a href=#example:-a-datagrid-backed-by-a-static-table-element><span class=secno>4.11.2.1.1 </span>Example: a <code>datagrid</code> backed by a static <code>table</code> element</a></li>
-         <li><a href=#example:-a-datagrid-backed-by-nested-ol-elements><span class=secno>4.11.2.1.2 </span>Example: a <code>datagrid</code> backed by nested <code>ol</code> elements</a></li>
-         <li><a href=#example:-a-datagrid-backed-by-a-server><span class=secno>4.11.2.1.3 </span>Example: a <code>datagrid</code> backed by a server</a></ol></li>
-       <li><a href=#populating-the-datagrid><span class=secno>4.11.2.2 </span>Populating the <code>datagrid</code></a>
-        <ol>
-         <li><a href=#the-listener><span class=secno>4.11.2.2.1 </span>The listener</a></li>
-         <li><a href=#the-columns><span class=secno>4.11.2.2.2 </span>The columns</a></li>
-         <li><a href=#the-rows><span class=secno>4.11.2.2.3 </span>The rows</a></li>
-         <li><a href=#the-cells><span class=secno>4.11.2.2.4 </span>The cells</a></ol></li>
-       <li><a href=#listening-to-notifications-from-the-datagrid><span class=secno>4.11.2.3 </span>Listening to notifications from the <code>datagrid</code></a></ol></li>
-     <li><a href=#the-command><span class=secno>4.11.3 </span>The <code>command</code> element</a></li>
-     <li><a href=#the-bb-element><span class=secno>4.11.4 </span>The <code>bb</code> element</a>
+         <li><a href=#the-make-application-state><span class=secno>4.11.3.1.1 </span>The <i>make application</i> state</a></ol></ol></li>
+     <li><a href=#menus><span class=secno>4.11.4 </span>The <code>menu</code> element</a>
       <ol>
-       <li><a href=#browser-button-types><span class=secno>4.11.4.1 </span>Browser button types</a>
-        <ol>
-         <li><a href=#the-make-application-state><span class=secno>4.11.4.1.1 </span>The <i>make application</i> state</a></ol></ol></li>
-     <li><a href=#menus><span class=secno>4.11.5 </span>The <code>menu</code> element</a>
+       <li><a href=#menus-intro><span class=secno>4.11.4.1 </span>Introduction</a></li>
+       <li><a href=#building-menus-and-tool-bars><span class=secno>4.11.4.2 </span>Building menus and tool bars</a></li>
+       <li><a href=#context-menus><span class=secno>4.11.4.3 </span>Context menus</a></li>
+       <li><a href=#tool-bars><span class=secno>4.11.4.4 </span>Tool bars</a></ol></li>
+     <li><a href=#commands><span class=secno>4.11.5 </span>Commands</a>
       <ol>
-       <li><a href=#menus-intro><span class=secno>4.11.5.1 </span>Introduction</a></li>
-       <li><a href=#building-menus-and-tool-bars><span class=secno>4.11.5.2 </span>Building menus and tool bars</a></li>
-       <li><a href=#context-menus><span class=secno>4.11.5.3 </span>Context menus</a></li>
-       <li><a href=#tool-bars><span class=secno>4.11.5.4 </span>Tool bars</a></ol></li>
-     <li><a href=#commands><span class=secno>4.11.6 </span>Commands</a>
-      <ol>
-       <li><a href=#using-the-a-element-to-define-a-command><span class=secno>4.11.6.1 </span>Using the <code>a</code> element to define a command</a></li>
-       <li><a href=#using-the-button-element-to-define-a-command><span class=secno>4.11.6.2 </span>Using the <code>button</code> element to define a command</a></li>
-       <li><a href=#using-the-input-element-to-define-a-command><span class=secno>4.11.6.3 </span>Using the <code>input</code> element to define a command</a></li>
-       <li><a href=#using-the-option-element-to-define-a-command><span class=secno>4.11.6.4 </span>Using the <code>option</code> element to define a command</a></li>
-       <li><a href=#using-the-command-element-to-define-a-command><span class=secno>4.11.6.5 </span>Using the <code>command</code> element to define
+       <li><a href=#using-the-a-element-to-define-a-command><span class=secno>4.11.5.1 </span>Using the <code>a</code> element to define a command</a></li>
+       <li><a href=#using-the-button-element-to-define-a-command><span class=secno>4.11.5.2 </span>Using the <code>button</code> element to define a command</a></li>
+       <li><a href=#using-the-input-element-to-define-a-command><span class=secno>4.11.5.3 </span>Using the <code>input</code> element to define a command</a></li>
+       <li><a href=#using-the-option-element-to-define-a-command><span class=secno>4.11.5.4 </span>Using the <code>option</code> element to define a command</a></li>
+       <li><a href=#using-the-command-element-to-define-a-command><span class=secno>4.11.5.5 </span>Using the <code>command</code> element to define
   a command</a></li>
-       <li><a href=#using-the-bb-element-to-define-a-command><span class=secno>4.11.6.6 </span>Using the <code>bb</code> element to define a command</a></li>
-       <li><a href=#using-the-accesskey-attribute-on-a-label-element-to-define-a-command><span class=secno>4.11.6.7 </span>Using the <code title=attr-accesskey>accesskey</code> attribute on a <code>label</code> element to define a command</a></li>
-       <li><a href=#using-the-accesskey-attribute-on-a-legend-element-to-define-a-command><span class=secno>4.11.6.8 </span>Using the <code title=attr-accesskey>accesskey</code> attribute on a <code>legend</code> element to define a command</a></li>
-       <li><a href=#using-the-accesskey-attribute-to-define-a-command-on-other-elements><span class=secno>4.11.6.9 </span>Using the <code title=attr-accesskey>accesskey</code> attribute to define a command on other elements</a></ol></ol></li>
+       <li><a href=#using-the-bb-element-to-define-a-command><span class=secno>4.11.5.6 </span>Using the <code>bb</code> element to define a command</a></li>
+       <li><a href=#using-the-accesskey-attribute-on-a-label-element-to-define-a-command><span class=secno>4.11.5.7 </span>Using the <code title=attr-accesskey>accesskey</code> attribute on a <code>label</code> element to define a command</a></li>
+       <li><a href=#using-the-accesskey-attribute-on-a-legend-element-to-define-a-command><span class=secno>4.11.5.8 </span>Using the <code title=attr-accesskey>accesskey</code> attribute on a <code>legend</code> element to define a command</a></li>
+       <li><a href=#using-the-accesskey-attribute-to-define-a-command-on-other-elements><span class=secno>4.11.5.9 </span>Using the <code title=attr-accesskey>accesskey</code> attribute to define a command on other elements</a></ol></ol></li>
    <li><a href=#miscellaneous-elements><span class=secno>4.12 </span>Miscellaneous elements</a>
     <ol>
      <li><a href=#the-legend-element><span class=secno>4.12.1 </span>The <code>legend</code> element</a></li>
@@ -602,7 +588,7 @@
    <li><a href=#matching-html-elements-using-selectors><span class=secno>4.13 </span>Matching HTML elements using selectors</a></ol></li>
  <li><a href=#microdata><span class=secno>5 </span>Microdata</a>
   <ol>
-   <li><a href=#introduction-2><span class=secno>5.1 </span>Introduction</a>
+   <li><a href=#introduction-1><span class=secno>5.1 </span>Introduction</a>
     <ol>
      <li><a href=#the-basic-syntax><span class=secno>5.1.1 </span>The basic syntax</a></li>
      <li><a href=#typed-items><span class=secno>5.1.2 </span>Typed items</a></li>
@@ -663,7 +649,7 @@
      <li><a href=#relaxing-the-same-origin-restriction><span class=secno>6.4.1 </span>Relaxing the same-origin restriction</a></ol></li>
    <li><a href=#scripting><span class=secno>6.5 </span>Scripting</a>
     <ol>
-     <li><a href=#introduction-3><span class=secno>6.5.1 </span>Introduction</a></li>
+     <li><a href=#introduction-2><span class=secno>6.5.1 </span>Introduction</a></li>
      <li><a href=#enabling-and-disabling-scripting><span class=secno>6.5.2 </span>Enabling and disabling scripting</a></li>
      <li><a href=#processing-model-1><span class=secno>6.5.3 </span>Processing model</a>
       <ol>
@@ -700,7 +686,7 @@
      <li><a href=#manually-releasing-the-storage-mutex><span class=secno>6.8.3 </span>Manually releasing the storage mutex</a></ol></li>
    <li><a href=#offline><span class=secno>6.9 </span>Offline Web applications</a>
     <ol>
-     <li><a href=#introduction-4><span class=secno>6.9.1 </span>Introduction</a>
+     <li><a href=#introduction-3><span class=secno>6.9.1 </span>Introduction</a>
       <ol>
        <li><a href=#event-summary><span class=secno>6.9.1.1 </span>Event summary</a></ol></li>
      <li><a href=#appcache><span class=secno>6.9.2 </span>Application caches</a></li>
@@ -799,7 +785,7 @@
    <li><a href=#spelling-and-grammar-checking><span class=secno>7.9 </span>Spelling and grammar checking</a></li>
    <li><a href=#dnd><span class=secno>7.10 </span>Drag and drop</a>
     <ol>
-     <li><a href=#introduction-5><span class=secno>7.10.1 </span>Introduction</a></li>
+     <li><a href=#introduction-4><span class=secno>7.10.1 </span>Introduction</a></li>
      <li><a href=#the-dragevent-and-datatransfer-interfaces><span class=secno>7.10.2 </span>The <code>DragEvent</code> and <code>DataTransfer</code> interfaces</a></li>
      <li><a href=#events-fired-during-a-drag-and-drop-action><span class=secno>7.10.3 </span>Events fired during a drag-and-drop action</a></li>
      <li><a href=#drag-and-drop-processing-model><span class=secno>7.10.4 </span>Drag-and-drop processing model</a>
@@ -818,7 +804,7 @@
      <li><a href=#security-risks-in-the-drag-and-drop-model><span class=secno>7.10.7 </span>Security risks in the drag-and-drop model</a></ol></li>
    <li><a href=#undo><span class=secno>7.11 </span>Undo history</a>
     <ol>
-     <li><a href=#introduction-6><span class=secno>7.11.1 </span>Introduction</a></li>
+     <li><a href=#introduction-5><span class=secno>7.11.1 </span>Introduction</a></li>
      <li><a href=#definitions-2><span class=secno>7.11.2 </span>Definitions</a></li>
      <li><a href=#the-undomanager-interface><span class=secno>7.11.3 </span>The <code>UndoManager</code> interface</a></li>
      <li><a href=#undo:-moving-back-in-the-undo-transaction-history><span class=secno>7.11.4 </span>Undo: moving back in the undo transaction history</a></li>
@@ -831,7 +817,7 @@
    <li><a href=#event-definitions><span class=secno>8.1 </span>Event definitions</a></li>
    <li><a href=#crossDocumentMessages><span class=secno>8.2 </span>Cross-document messaging</a>
     <ol>
-     <li><a href=#introduction-7><span class=secno>8.2.1 </span>Introduction</a></li>
+     <li><a href=#introduction-6><span class=secno>8.2.1 </span>Introduction</a></li>
      <li><a href=#security-4><span class=secno>8.2.2 </span>Security</a>
       <ol>
        <li><a href=#authors><span class=secno>8.2.2.1 </span>Authors</a></li>
@@ -840,7 +826,7 @@
      <li><a href=#posting-messages-with-message-ports><span class=secno>8.2.4 </span>Posting messages with message ports</a></ol></li>
    <li><a href=#channel-messaging><span class=secno>8.3 </span>Channel messaging</a>
     <ol>
-     <li><a href=#introduction-8><span class=secno>8.3.1 </span>Introduction</a></li>
+     <li><a href=#introduction-7><span class=secno>8.3.1 </span>Introduction</a></li>
      <li><a href=#message-channels><span class=secno>8.3.2 </span>Message channels</a></li>
      <li><a href=#message-ports><span class=secno>8.3.3 </span>Message ports</a>
       <ol>
@@ -968,10 +954,10 @@
    <li><a href=#parsing-xhtml-fragments><span class=secno>10.4 </span>Parsing XHTML fragments</a></ol></li>
  <li><a href=#rendering><span class=secno>11 </span>Rendering</a>
   <ol>
-   <li><a href=#introduction-9><span class=secno>11.1 </span>Introduction</a></li>
+   <li><a href=#introduction-8><span class=secno>11.1 </span>Introduction</a></li>
    <li><a href=#the-css-user-agent-style-sheet-and-presentational-hints><span class=secno>11.2 </span>The CSS user agent style sheet and presentational hints</a>
     <ol>
-     <li><a href=#introduction-10><span class=secno>11.2.1 </span>Introduction</a></li>
+     <li><a href=#introduction-9><span class=secno>11.2.1 </span>Introduction</a></li>
      <li><a href=#display-types><span class=secno>11.2.2 </span>Display types</a></li>
      <li><a href=#margins-and-padding><span class=secno>11.2.3 </span>Margins and padding</a></li>
      <li><a href=#alignment><span class=secno>11.2.4 </span>Alignment</a></li>
@@ -989,25 +975,24 @@
      <li><a href=#tool-bars-0><span class=secno>11.3.5 </span>Tool bars</a></ol></li>
    <li><a href=#bindings><span class=secno>11.4 </span>Bindings</a>
     <ol>
-     <li><a href=#introduction-11><span class=secno>11.4.1 </span>Introduction</a></li>
+     <li><a href=#introduction-10><span class=secno>11.4.1 </span>Introduction</a></li>
      <li><a href=#the-bb-element-0><span class=secno>11.4.2 </span>The <code>bb</code> element</a></li>
      <li><a href=#the-button-element-0><span class=secno>11.4.3 </span>The <code>button</code> element</a></li>
-     <li><a href=#the-datagrid-element><span class=secno>11.4.4 </span>The <code>datagrid</code> element</a></li>
-     <li><a href=#the-details-element-0><span class=secno>11.4.5 </span>The <code>details</code> element</a></li>
-     <li><a href=#the-input-element-as-a-text-entry-widget><span class=secno>11.4.6 </span>The <code>input</code> element as a text entry widget</a></li>
-     <li><a href=#the-input-element-as-domain-specific-widgets><span class=secno>11.4.7 </span>The <code>input</code> element as domain-specific widgets</a></li>
-     <li><a href=#the-input-element-as-a-range-control><span class=secno>11.4.8 </span>The <code>input</code> element as a range control</a></li>
-     <li><a href=#the-input-element-as-a-color-well><span class=secno>11.4.9 </span>The <code>input</code> element as a color well</a></li>
-     <li><a href=#the-input-element-as-a-check-box-and-radio-button-widgets><span class=secno>11.4.10 </span>The <code>input</code> element as a check box and radio button widgets</a></li>
-     <li><a href=#the-input-element-as-a-file-upload-control><span class=secno>11.4.11 </span>The <code>input</code> element as a file upload control</a></li>
-     <li><a href=#the-input-element-as-a-button><span class=secno>11.4.12 </span>The <code>input</code> element as a button</a></li>
-     <li><a href=#the-marquee-element><span class=secno>11.4.13 </span>The <code>marquee</code> element</a></li>
-     <li><a href=#the-meter-element-0><span class=secno>11.4.14 </span>The <code>meter</code> element</a></li>
-     <li><a href=#the-progress-element-0><span class=secno>11.4.15 </span>The <code>progress</code> element</a></li>
-     <li><a href=#the-select-element-0><span class=secno>11.4.16 </span>The <code>select</code> element</a></li>
-     <li><a href=#the-textarea-element-0><span class=secno>11.4.17 </span>The <code>textarea</code> element</a></li>
-     <li><a href=#the-keygen-element-0><span class=secno>11.4.18 </span>The <code>keygen</code> element</a></li>
-     <li><a href=#the-time-element-0><span class=secno>11.4.19 </span>The <code>time</code> element</a></ol></li>
+     <li><a href=#the-details-element-0><span class=secno>11.4.4 </span>The <code>details</code> element</a></li>
+     <li><a href=#the-input-element-as-a-text-entry-widget><span class=secno>11.4.5 </span>The <code>input</code> element as a text entry widget</a></li>
+     <li><a href=#the-input-element-as-domain-specific-widgets><span class=secno>11.4.6 </span>The <code>input</code> element as domain-specific widgets</a></li>
+     <li><a href=#the-input-element-as-a-range-control><span class=secno>11.4.7 </span>The <code>input</code> element as a range control</a></li>
+     <li><a href=#the-input-element-as-a-color-well><span class=secno>11.4.8 </span>The <code>input</code> element as a color well</a></li>
+     <li><a href=#the-input-element-as-a-check-box-and-radio-button-widgets><span class=secno>11.4.9 </span>The <code>input</code> element as a check box and radio button widgets</a></li>
+     <li><a href=#the-input-element-as-a-file-upload-control><span class=secno>11.4.10 </span>The <code>input</code> element as a file upload control</a></li>
+     <li><a href=#the-input-element-as-a-button><span class=secno>11.4.11 </span>The <code>input</code> element as a button</a></li>
+     <li><a href=#the-marquee-element><span class=secno>11.4.12 </span>The <code>marquee</code> element</a></li>
+     <li><a href=#the-meter-element-0><span class=secno>11.4.13 </span>The <code>meter</code> element</a></li>
+     <li><a href=#the-progress-element-0><span class=secno>11.4.14 </span>The <code>progress</code> element</a></li>
+     <li><a href=#the-select-element-0><span class=secno>11.4.15 </span>The <code>select</code> element</a></li>
+     <li><a href=#the-textarea-element-0><span class=secno>11.4.16 </span>The <code>textarea</code> element</a></li>
+     <li><a href=#the-keygen-element-0><span class=secno>11.4.17 </span>The <code>keygen</code> element</a></li>
+     <li><a href=#the-time-element-0><span class=secno>11.4.18 </span>The <code>time</code> element</a></ol></li>
    <li><a href=#frames-and-framesets><span class=secno>11.5 </span>Frames and framesets</a></li>
    <li><a href=#interactive-media><span class=secno>11.6 </span>Interactive media</a>
     <ol>
@@ -6469,7 +6454,7 @@
    <li value=20><dfn id=abort_err><code>ABORT_ERR</code></dfn></li> <!-- actually in XHR for now -->
    <li value=21><dfn id=url_mismatch_err><code>URL_MISMATCH_ERR</code></dfn></li> <!-- actually in workers for now -->
    <li value=22><dfn id=quota_exceeded_err><code>QUOTA_EXCEEDED_ERR</code></dfn></li> <!-- actually defined right here for now -->
-   <li value=23><dfn id=datagrid_model_err><code>DATAGRID_MODEL_ERR</code></dfn></li> <!-- actually defined right here for now -->
+<!--v2DATAGRID   <li value="23"><dfn><code>DATAGRID_MODEL_ERR</code></dfn></li> --> <!-- actually defined right here for now -->
    <li value=81><dfn id=parse_err><code>PARSE_ERR</code></dfn></li> <!-- actually defined in dom3ls -->
    <li value=82><dfn id=serialise_err><code>SERIALISE_ERR</code></dfn></li> <!-- actually defined in dom3ls -->
   </ol><div class=impl>
@@ -8391,7 +8376,7 @@
    <li><code><a href=#the-cite-element>cite</a></code></li>
    <li><code><a href=#the-code-element>code</a></code></li>
    <li><code><a href=#the-command>command</a></code></li>
-   <li><code><a href=#datagrid>datagrid</a></code></li>
+<!-- v2DATAGRID   <li><code>datagrid</code></li> -->
    <li><code><a href=#the-datalist-element>datalist</a></code></li>
    <li><code><a href=#the-del-element>del</a></code></li>
    <li><code><a href=#the-details-element>details</a></code></li>
@@ -8626,7 +8611,7 @@
    <li><code><a href=#audio>audio</a></code> (if the <code title=attr-media-controls><a href=#attr-media-controls>controls</a></code> attribute is present)</li>
    <li><code><a href=#the-bb-element>bb</a></code></li>
    <li><code><a href=#the-button-element>button</a></code></li>
-   <li><code><a href=#datagrid>datagrid</a></code></li>
+<!-- v2DATAGRID   <li><code>datagrid</code></li> -->
    <li><code><a href=#the-details-element>details</a></code></li>
    <li><code><a href=#the-embed-element>embed</a></code></li>
    <li><code><a href=#the-iframe-element>iframe</a></code></li>
@@ -12927,7 +12912,7 @@
 
   <ul class="brief category-list"><li><code><a href=#the-blockquote-element>blockquote</a></code></li>
    <li><code><a href=#the-body-element>body</a></code></li>
-   <li><code><a href=#datagrid>datagrid</a></code></li>
+<!-- v2DATAGRID   <li><code>datagrid</code></li> -->
    <li><code><a href=#the-figure-element>figure</a></code></li>
    <li><code><a href=#the-td-element>td</a></code></li>
   </ul><div class=example>
@@ -15992,7 +15977,7 @@
   <ul class=brief><li>minimum value &le; actual value &le; maximum value</li>
    <li>minimum value &le; low boundary &le; high boundary &le; maximum value</li>
    <li>minimum value &le; optimum point &le; maximum value</li>
-  </ul><!-- next two paragraphs are duplicated in the <datagrid> section --><p><strong>UA requirements for regions of the gauge</strong>: If the
+  </ul><!-- next two paragraphs are duplicated in the <datagrid> section [v2DATAGRID] --><p><strong>UA requirements for regions of the gauge</strong>: If the
   optimum point is equal to the low boundary or the high boundary, or
   anywhere in between them, then the region between the low and high
   boundaries of the gauge must be treated as the optimum region, and
@@ -27517,15 +27502,15 @@
   have explicit keywords:</p>
 
   <dl><dt>The <dfn id=attr-th-scope-row title=attr-th-scope-row><code>row</code></dfn>
-   keyword, which maps to the <i><a href=#row>row</a></i> state</dt>
+   keyword, which maps to the <i>row</i> state</dt>
 
-   <dd>The <i><a href=#row>row</a></i> state means the header cell applies to some of
+   <dd>The <i>row</i> state means the header cell applies to some of
    the subsequent cells in the same row(s).</dd>
 
    <dt>The <dfn id=attr-th-scope-col title=attr-th-scope-col><code>col</code></dfn>
-   keyword, which maps to the <i><a href=#column>column</a></i> state</dt>
+   keyword, which maps to the <i>column</i> state</dt>
 
-   <dd>The <i><a href=#column>column</a></i> state means the header cell applies to some
+   <dd>The <i>column</i> state means the header cell applies to some
    of the subsequent cells in the same column(s).</dd>
 
    <dt>The <dfn id=attr-th-scope-rowgroup title=attr-th-scope-rowgroup><code>rowgroup</code></dfn> keyword,
@@ -34608,9 +34593,11 @@
 
   <p>The <code><a href=#the-datalist-element>datalist</a></code> element is hooked up to an
   <code><a href=#the-input-element>input</a></code> element using the <code title=attr-input-list><a href=#attr-input-list>list</a></code> attribute on the
-  <code><a href=#the-input-element>input</a></code> element. The <code><a href=#the-datalist-element>datalist</a></code> element can
-  also be used with a <code><a href=#datagrid>datagrid</a></code> element, as the source of
-  autocompletion hints for <code title=datagrid-type-editable><a href=#datagrid-type-editable>editable</a></code> cells.</p>
+  <code><a href=#the-input-element>input</a></code> element. <!-- v2DATAGRID The
+  <code>datalist</code> element can also be used with a
+  <code>datagrid</code> element, as the source of autocompletion hints
+  for <code title="datagrid-type-editable">editable</code>
+  cells. --></p>
 
   <p>Each <code><a href=#the-option-element>option</a></code> element that is a descendant of the
   <code><a href=#the-datalist-element>datalist</a></code> element, that is not <a href=#concept-option-disabled title=concept-option-disabled>disabled</a>, and whose <a href=#concept-option-value title=concept-option-value>value</a> is a string that isn't the
@@ -37293,118 +37280,129 @@
   </div>
 
 
+<!-- v2DATAGRID
+  <h4 id="datagrid">The <dfn><code>datagrid</code></dfn> element</h4>
 
-  <h4 id=datagrid><span class=secno>4.11.2 </span>The <dfn><code>datagrid</code></dfn> element</h4>
-
-  <dl class=element><dt>Categories</dt>
-   <dd><a href=#flow-content-0>Flow content</a>.</dd>
-   <dd><a href=#interactive-content-0>Interactive content</a>.</dd>
-   <dd><a href=#sectioning-root>Sectioning root</a>.</dd>
+  <dl class="element">
+   <dt>Categories</dt>
+   <dd><span>Flow content</span>.</dd>
+   <dd><span>Interactive content</span>.</dd>
+   <dd><span>Sectioning root</span>.</dd>
    <dt>Contexts in which this element may be used:</dt>
-   <dd>Where <a href=#flow-content-0>flow content</a> is expected.</dd>
+   <dd>Where <span>flow content</span> is expected.</dd>
    <dt>Content model:</dt>
-   <dd><a href=#flow-content-0>Flow content</a>.</dd>
+   <dd><span>Flow content</span>.</dd>
    <dt>Content attributes:</dt>
-   <dd><a href=#global-attributes>Global attributes</a></dd>
-<!--v2DGS:
+   <dd><span>Global attributes</span></dd>
+<!- -v2DGS:
    <dd><code title="attr-datagrid-multiple">multiple</code></dd>
--->
-   <dd><code title=attr-datagrid-disabled><a href=#attr-datagrid-disabled>disabled</a></code></dd>
+- ->
+   <dd><code title="attr-datagrid-disabled">disabled</code></dd>
    <dt>DOM interface:</dt>
    <dd>
-<pre class=idl>interface <dfn id=htmldatagridelement>HTMLDataGridElement</dfn> : <a href=#htmlelement>HTMLElement</a> {
-<!--v2DGS:
+<pre class="idl">interface <dfn>HTMLDataGridElement</dfn> : <span>HTMLElement</span> {
+<!- -v2DGS:
            attribute boolean <span title="dom-datagrid-multiple">multiple</span>;
--->           attribute boolean <a href=#dom-datagrid-disabled title=dom-datagrid-disabled>disabled</a>;
-           attribute <a href=#datagridlistener>DataGridListener</a> <a href=#dom-datagrid-listener title=dom-datagrid-listener>listener</a>;
-<!-- v2DGS:
+- ->           attribute boolean <span title="dom-datagrid-disabled">disabled</span>;
+           attribute <span>DataGridListener</span> <span title="dom-datagrid-listener">listener</span>;
+<!- - v2DGS:
   readonly attribute <span>DataGridSelection</span> <span title="dom-datagrid-selection">selection</span>;
--->
+- ->
   // columns
-  void <a href=#dom-datagrid-addcolumn title=dom-datagrid-addColumn>addColumn</a>(in <a href=#column>Column</a> id, in DOMString label, in DOMString type, [Optional] in HTMLImageElement icon, [Optional] in boolean sortable, [Optional] in boolean hidden);
-           attribute DOMString <a href=#dom-datagrid-sortcolumn title=dom-datagrid-sortColumn>sortColumn</a>;
-           attribute boolean <a href=#dom-datagrid-sortascending title=dom-datagrid-sortAscending>sortAscending</a>;
-  void <a href=#dom-datagrid-clearcolumns title=dom-datagrid-clearColumns>clearColumns</a>();
+  void <span title="dom-datagrid-addColumn">addColumn</span>(in <span>Column</span> id, in DOMString label, in DOMString type, [Optional] in HTMLImageElement icon, [Optional] in boolean sortable, [Optional] in boolean hidden);
+           attribute DOMString <span title="dom-datagrid-sortColumn">sortColumn</span>;
+           attribute boolean <span title="dom-datagrid-sortAscending">sortAscending</span>;
+  void <span title="dom-datagrid-clearColumns">clearColumns</span>();
 
   // rows
-  void <a href=#dom-datagrid-renotify title=dom-datagrid-renotify>renotify</a>();
-  void <a href=#dom-datagrid-setrowcount title=dom-datagrid-setRowCount>setRowCount</a>(in long childCount, in long rowCount);
-  void <a href=#dom-datagrid-setrows title=dom-datagrid-setRows>setRows</a>(in <a href=#rowlist>RowList</a> rows);
-  void <a href=#dom-datagrid-insertrows title=dom-datagrid-insertRows>insertRows</a>(in <a href=#rowlist>RowList</a> rows);
-  void <a href=#dom-datagrid-deleterows title=dom-datagrid-deleteRows>deleteRows</a>(in <a href=#rowidlist>RowIDList</a> rows);
-  void <a href=#dom-datagrid-repaint title=dom-datagrid-repaint>repaint</a>(in <a href=#rowid>RowID</a> row, in DOMString column);
-  void <a href=#dom-datagrid-clearrows title=dom-datagrid-clearRows>clearRows</a>();
-<!--
+  void <span title="dom-datagrid-renotify">renotify</span>();
+  void <span title="dom-datagrid-setRowCount">setRowCount</span>(in long childCount, in long rowCount);
+  void <span title="dom-datagrid-setRows">setRows</span>(in <span>RowList</span> rows);
+  void <span title="dom-datagrid-insertRows">insertRows</span>(in <span>RowList</span> rows);
+  void <span title="dom-datagrid-deleteRows">deleteRows</span>(in <span>RowIDList</span> rows);
+  void <span title="dom-datagrid-repaint">repaint</span>(in <span>RowID</span> row, in DOMString column);
+  void <span title="dom-datagrid-clearRows">clearRows</span>();
+<!- -
  v2: opening and closing a row
      moving a row's actual ID
       - imagine new mail moving a thread up; you just want to add the new mail to the thread and move the thread's first mail to the top
       - though actually that should probably just be done using display sorting
--->
+- ->
 };
 
-typedef DOMString <dfn id=column>Column</dfn>;
-typedef sequence&lt;<a href=#column>Column</a>&gt; <dfn id=columnlist>ColumnList</dfn>;
-typedef sequence&lt;any&gt; <dfn id=cell>Cell</dfn>; // <a href=#column>Column</a>, [Variadic] any (exact types expected depend on the column type)
-typedef sequence&lt;<a href=#cell>Cell</a>&gt; <dfn id=celllist>CellList</dfn>;
-typedef sequence&lt;any&gt; <dfn id=row>Row</dfn>; // <a href=#rowid>RowID</a>, long, long, <a href=#celllist>CellList</a>, [Optional] boolean, [Optional] long
-typedef sequence&lt;<a href=#row>Row</a>&gt; <dfn id=rowlist>RowList</dfn>;
-typedef sequence&lt;unsigned long&gt; <dfn id=rowid>RowID</dfn>;
-typedef sequence&lt;<a href=#rowid>RowID</a>&gt; <dfn id=rowidlist>RowIDList</dfn>;
+typedef DOMString <dfn>Column</dfn>;
+typedef sequence&lt;<span>Column</span>> <dfn>ColumnList</dfn>;
+typedef sequence&lt;any> <dfn>Cell</dfn>; // <span>Column</span>, [Variadic] any (exact types expected depend on the column type)
+typedef sequence&lt;<span>Cell</span>> <dfn>CellList</dfn>;
+typedef sequence&lt;any> <dfn>Row</dfn>; // <span>RowID</span>, long, long, <span>CellList</span>, [Optional] boolean, [Optional] long
+typedef sequence&lt;<span>Row</span>> <dfn>RowList</dfn>;
+typedef sequence&lt;unsigned long> <dfn>RowID</dfn>;
+typedef sequence&lt;<span>RowID</span>> <dfn>RowIDList</dfn>;
 
 [Callback=FunctionOnly, NoInterfaceObject]
-interface <dfn id=renderingcontext2dcallback>RenderingContext2DCallback</dfn> {
-  DOMString <span title=dom-Rendering2DContextCallback-handleEvent>handleEvent</span>(in <a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a> context, in unsigned long width, in unsigned long height);
+interface <dfn>RenderingContext2DCallback</dfn> {
+  DOMString <span title="dom-Rendering2DContextCallback-handleEvent">handleEvent</span>(in <span>CanvasRenderingContext2D</span> context, in unsigned long width, in unsigned long height);
 };</pre>
    </dd>
-  </dl><p>The <code><a href=#datagrid>datagrid</a></code> element <a href=#represents>represents</a> an
+  </dl>
+
+ <!- - v2:
+   * datagrid: cells that are links (<a href=""></a>)
+  - ->
+
+  <p>The <code>datagrid</code> element <span>represents</span> an
   interactive representation of tree, list, or tabular data.</p>
 
   <p>The data being presented is provided by script using the methods
   described in the following sections.</p>
 
-<!--v2DGS:
+<!- -v2DGS:
   <p>The <dfn
   title="attr-datagrid-multiple"><code>multiple</code></dfn> attribute
   is a <span>boolean attribute</span>. When set, it indicates that the
   user can select more than one row at a time.</p>
--->
+- ->
 
-  <p>The <dfn id=attr-datagrid-disabled title=attr-datagrid-disabled><code>disabled</code></dfn> attribute
-  is a <a href=#boolean-attribute>boolean attribute</a> used to disable the
-  control. <span class=impl>When the attribute is set, the user
-  agent must disable the <code><a href=#datagrid>datagrid</a></code>, preventing the user
-  from interacting with it. The <code><a href=#datagrid>datagrid</a></code> element should
+  <p>The <dfn
+  title="attr-datagrid-disabled"><code>disabled</code></dfn> attribute
+  is a <span>boolean attribute</span> used to disable the
+  control. <span class="impl">When the attribute is set, the user
+  agent must disable the <code>datagrid</code>, preventing the user
+  from interacting with it. The <code>datagrid</code> element should
   still continue to update itself when the underlying data changes,
   though, as described in the next few sections. However, conformance
-  requirements stating that <code><a href=#datagrid>datagrid</a></code> elements must react
+  requirements stating that <code>datagrid</code> elements must react
   to users in particular ways do not apply when the
-  <code><a href=#datagrid>datagrid</a></code> is disabled.</span></p>
+  <code>datagrid</code> is disabled.</span></p>
 
-  <div class=impl>
+  <div class="impl">
 
-  <!--vsDGS: multiple -->
+  <!- -vsDGS: multiple - ->
 
-  <p>The <dfn id=dom-datagrid-disabled title=dom-datagrid-disabled><code>disabled</code></dfn> DOM
-  attribute must <a href=#reflect>reflect</a> the content attribute of the
+  <p>The <dfn
+  title="dom-datagrid-disabled"><code>disabled</code></dfn> DOM
+  attribute must <span>reflect</span> the content attribute of the
   same name.</p>
 
   </div>
 
-  <!-- v2DGPA: One possible thing to be added is a way to detect when a
+  <!- - v2DGPA: One possible thing to be added is a way to detect when a
   row/selection has been deleted, activated, etc, by the user (delete
-  key, enter key, etc). (v2DGPA = <datagrid> Perform Action) -->
+  key, enter key, etc). (v2DGPA = <datagrid> Perform Action) - ->
 
 
-  <h5 id=introduction-1><span class=secno>4.11.2.1 </span>Introduction</h5>
+  <h5>Introduction</h5>
 
   <p><i>This section is non-normative.</i></p>
 
-  <p>In the <code><a href=#datagrid>datagrid</a></code> data model, data is structured as a
+  <p>In the <code>datagrid</code> data model, data is structured as a
   set of rows representing a tree, each row being split into a number
   of columns. The columns are always present in the data model,
   although individual columns might be hidden in the presentation.</p>
 
-  <hr><p>Each row can have child rows. Child rows may be hidden or
+  <hr>
+
+  <p>Each row can have child rows. Child rows may be hidden or
   shown, by closing or opening (respectively) the parent row.</p>
 
   <p>Rows are referred to by the path along the tree that one would
@@ -37416,87 +37414,104 @@
 
   <p>The chains of numbers that give a row's path, or identifier, are
   represented by arrays of positions, represented in IDL by the
-  <a href=#rowid>RowID</a> interface.</p>
+  <span>RowID</span> interface.</p>
 
   <p>The root of the tree is represented by an empty array.</p>
 
-  <hr><p>Each column has a string that is used to identify it in the API,
+  <hr>
+
+  <p>Each column has a string that is used to identify it in the API,
   a label that is shown to users interacting with the column, a type,
   and optionally an icon.</p>
 
   <p>The possible types are as follows:</p>
 
-  <table><thead><tr><td>Keyword
+  <table>
+   <thead>
+    <tr>
+     <td>Keyword
      <td>Description
-   <tbody><tr><td><code title=datagrid-type-text><a href=#datagrid-type-text>text</a></code>
+   <tbody>
+    <tr>
+     <td><code title="datagrid-type-text">text</code>
      <td>Simple text.
-    <tr><td><code title=datagrid-type-editable><a href=#datagrid-type-editable>editable</a></code>
+    <tr>
+     <td><code title="datagrid-type-editable">editable</code>
      <td>Editable text.
-    <tr><td><code title=datagrid-type-checkable><a href=#datagrid-type-checkable>checkable</a></code>
+    <tr>
+     <td><code title="datagrid-type-checkable">checkable</code>
      <td>Text with a check box.
-    <tr><td><code title=datagrid-type-list><a href=#datagrid-type-list>list</a></code>
+    <tr>
+     <td><code title="datagrid-type-list">list</code>
      <td>A list of values that the user can switch between.
-    <tr><td><code title=datagrid-type-progress><a href=#datagrid-type-progress>progress</a></code>
+    <tr>
+     <td><code title="datagrid-type-progress">progress</code>
      <td>A progress bar.
-    <tr><td><code title=datagrid-type-meter><a href=#datagrid-type-meter>meter</a></code>
+    <tr>
+     <td><code title="datagrid-type-meter">meter</code>
      <td>A gauge.
-    <tr><td><code title=datagrid-type-custom><a href=#datagrid-type-custom>custom</a></code>
+    <tr>
+     <td><code title="datagrid-type-custom">custom</code>
      <td>A canvas onto which arbitrary content can be drawn.
-  </table><p>Each column can be flagged as sortable, in which case the user
+  </table>
+
+  <p>Each column can be flagged as sortable, in which case the user
   will be able to sort the view using that column.</p>
 
   <p>Columns are not necessarily visible. A column can be created
   invisible by default. The user can select which columns are to be
   shown.</p>
 
-  <p>When no columns have been added to the <code><a href=#datagrid>datagrid</a></code>, a
+  <p>When no columns have been added to the <code>datagrid</code>, a
   column with no name, whose identifier is the empty string, whose
-  type is <code title=datagrid-type-text><a href=#datagrid-type-text>text</a></code>, and which is
+  type is <code title="datagrid-type-text">text</code>, and which is
   not sortable, is implied. This column is removed if any explicit
   columns are declared.</p>
 
   <p>Each cell uses the type given for its column, so all cells in a
   column present the same type of information.</p>
 
-<!--v2DGS:
+<!- -v2DGS:
   <p>Selection of data in a <code>datagrid</code> operates at the row
   level. If the <code title="attr-datagrid-multiple">multiple</code>
   attribute is present, multiple rows can be selected at once,
   otherwise the user can only select one row at a time.</p>
--->
+- ->
 
-  <!-- v2DGDND: selection should draggable to and from datagrids -->
+  <!- - v2DGDND: selection should draggable to and from datagrids - ->
 
 
-  <h6 id=example:-a-datagrid-backed-by-a-static-table-element><span class=secno>4.11.2.1.1 </span>Example: a <code><a href=#datagrid>datagrid</a></code> backed by a static <code><a href=#the-table-element>table</a></code> element</h6>
+  <h6>Example: a <code>datagrid</code> backed by a static <code>table</code> element</h6>
 
-  <p class=XXX>...</p>
+  ...
 
 
-  <h6 id=example:-a-datagrid-backed-by-nested-ol-elements><span class=secno>4.11.2.1.2 </span>Example: a <code><a href=#datagrid>datagrid</a></code> backed by nested <code><a href=#the-ol-element>ol</a></code> elements</h6>
+  <h6>Example: a <code>datagrid</code> backed by nested <code>ol</code> elements</h6>
 
-  <p class=XXX>...</p>
+  ...
 
 
-  <h6 id=example:-a-datagrid-backed-by-a-server><span class=secno>4.11.2.1.3 </span>Example: a <code><a href=#datagrid>datagrid</a></code> backed by a server</h6>
+  <h6>Example: a <code>datagrid</code> backed by a server</h6>
 
-  <p class=XXX>...</p>
+  ...
 
 
-  <h5 id=populating-the-datagrid><span class=secno>4.11.2.2 </span>Populating the <code><a href=#datagrid>datagrid</a></code></h5>
+  <h5>Populating the <code>datagrid</code></h5>
 
-  <dl class=domintro><dt><var title="">datagrid</var> . <code title=dom-datagrid-listener><a href=#dom-datagrid-listener>listener</a></code> [ = <var title="">value</var> ]</dt>
+  <dl class="domintro">
+
+   <dt><var title="">datagrid</var> . <code title="dom-datagrid-listener">listener</code> [ = <var title="">value</var> ]</dt>
    <dd>
 
     <p>Return the current object that is configured as the
-    <code><a href=#datagrid>datagrid</a></code> listener, if any. Returns null if there is
+    <code>datagrid</code> listener, if any. Returns null if there is
     none.</p>
 
     <p>The listener is an object provided by the script author that
-    receives notifications when the <code><a href=#datagrid>datagrid</a></code> needs row
+    receives notifications when the <code>datagrid</code> needs row
     data to render itself, when the user opens and closes rows with
     children, when the user edits a cell, and when the user invokes a
-    row's context menu. (The <code><a href=#datagridlistener>DataGridListener</a></code> interface
+    row's context menu. (The <code>DataGridListener</code> interface
     used for this purpose is described in the next section.)</p>
 
     <p>Can be set, to change the current listener.</p>
@@ -37504,23 +37519,23 @@
    </dd>
 
 
-   <dt><var title="">datagrid</var> . <code title=dom-datagrid-renotify><a href=#dom-datagrid-renotify>renotify</a></code>()</dt>
+   <dt><var title="">datagrid</var> . <code title="dom-datagrid-renotify">renotify</code>()</dt>
    <dd>
 
-    <p>Causes the <code><a href=#datagrid>datagrid</a></code> to resend notifications to the
+    <p>Causes the <code>datagrid</code> to resend notifications to the
     listener (if any) for any rows or cells that the
-    <code><a href=#datagrid>datagrid</a></code> does not yet have information for.</p>
+    <code>datagrid</code> does not yet have information for.</p>
 
-    <!-- useful, e.g., if there is a server error and the script loses
-    track of what rows it's supposed to be reporting. -->
+    <!- - useful, e.g., if there is a server error and the script loses
+    track of what rows it's supposed to be reporting. - ->
 
    </dd>
 
 
-   <dt><var title="">datagrid</var> . <code title=dom-datagrid-addColumn><a href=#dom-datagrid-addcolumn>addColumn</a></code>(<var title="">id</var>, <var title="">label</var>, <var title="">type</var> [, <var title="">icon</var> [, <var title="">sortable</var> [, <var title="">hidden</var> ] ] ] )</dt>
+   <dt><var title="">datagrid</var> . <code title="dom-datagrid-addColumn">addColumn</code>(<var title="">id</var>, <var title="">label</var>, <var title="">type</var> [, <var title="">icon</var> [, <var title="">sortable</var> [, <var title="">hidden</var> ] ] ] )</dt>
    <dd>
 
-    <p>Adds a column to the <code><a href=#datagrid>datagrid</a></code>.</p>
+    <p>Adds a column to the <code>datagrid</code>.</p>
 
     <p>If a column with the given identifier has already been added,
     it just replaces the information for that column.</p>
@@ -37530,25 +37545,26 @@
    </dd>
 
 
-   <dt><var title="">datagrid</var> . <code title=dom-datagrid-sortColumn><a href=#dom-datagrid-sortcolumn>sortColumn</a></code> [ = <var title="">value</var> ]</dt>
+   <dt><var title="">datagrid</var> . <code title="dom-datagrid-sortColumn">sortColumn</code> [ = <var title="">value</var> ]</dt>
    <dd>
 
     <p>Returns the identifier of the column by which the data is to be
     sorted.</p>
 
     <p>Can be set, to indicate that the sort order has changed. This
-    will cause the <code><a href=#datagrid>datagrid</a></code> to clear its position
-    information for rows, so <code title=dom-datagrid-setRows><a href=#dom-datagrid-setrows>setRows()</a></code> will have to be
+    will cause the <code>datagrid</code> to clear its position
+    information for rows, so <code
+    title="dom-datagrid-setRows">setRows()</code> will have to be
     called again with the new sort order.</p>
 
     <p>The columns are not actually sorted by the
-    <code><a href=#datagrid>datagrid</a></code>; the data has to be sorted by the script
-    that adds the rows to the <code><a href=#datagrid>datagrid</a></code>.</p>
+    <code>datagrid</code>; the data has to be sorted by the script
+    that adds the rows to the <code>datagrid</code>.</p>
 
    </dd>
 
 
-   <dt><var title="">datagrid</var> . <code title=dom-datagrid-sortAscending><a href=#dom-datagrid-sortascending>sortAscending</a></code> [ = <var title="">value</var> ]</dt>
+   <dt><var title="">datagrid</var> . <code title="dom-datagrid-sortAscending">sortAscending</code> [ = <var title="">value</var> ]</dt>
    <dd>
 
     <p>Returns true if the data is to be sorted with smaller values
@@ -37560,51 +37576,54 @@
    </dd>
 
 
-   <dt><var title="">datagrid</var> . <code title=dom-datagrid-clearColumns><a href=#dom-datagrid-clearcolumns>clearColumns</a></code>()</dt>
+   <dt><var title="">datagrid</var> . <code title="dom-datagrid-clearColumns">clearColumns</code>()</dt>
    <dd>
 
-    <p>Removes all the columns in the <code><a href=#datagrid>datagrid</a></code>,
+    <p>Removes all the columns in the <code>datagrid</code>,
     reinstating the implied column.</p>
 
    </dd>
 
 
-   <dt><var title="">datagrid</var> . <code title=dom-datagrid-setRowCount><a href=#dom-datagrid-setrowcount>setRowCount</a></code>(<var title="">childCount</var>, <var title="">rowCount</var>)</dt>
+   <dt><var title="">datagrid</var> . <code title="dom-datagrid-setRowCount">setRowCount</code>(<var title="">childCount</var>, <var title="">rowCount</var>)</dt>
    <dd>
 
-    <p>Sets the numbers of rows in the <code><a href=#datagrid>datagrid</a></code>,
+    <p>Sets the numbers of rows in the <code>datagrid</code>,
     excluding rows that are descendants of rows that are closed.</p>
 
-    <p>Throws a <code><a href=#datagrid_model_err>DATAGRID_MODEL_ERR</a></code> exception if the
+    <p>Throws a <code>DATAGRID_MODEL_ERR</code> exception if the
     arguments contradict each other or previously declared information
-    (e.g. declaring that the <code><a href=#datagrid>datagrid</a></code> has three rows when
+    (e.g. declaring that the <code>datagrid</code> has three rows when
     the 12th row has been declared).</p>
 
    </dd>
 
 
-   <dt><var title="">datagrid</var> . <code title=dom-datagrid-setRows><a href=#dom-datagrid-setrows>setRows</a></code>(<var title="">rows</var>)</dt>
+   <dt><var title="">datagrid</var> . <code title="dom-datagrid-setRows">setRows</code>(<var title="">rows</var>)</dt>
    <dd>
 
-    <p>Updates data for rows in the <code><a href=#datagrid>datagrid</a></code>, or fills in
-    data for rows previously implied by a call to <code title=dom-datagrid-setRowCount><a href=#dom-datagrid-setrowcount>setRowCount()</a></code> but not
+    <p>Updates data for rows in the <code>datagrid</code>, or fills in
+    data for rows previously implied by a call to <code
+    title="dom-datagrid-setRowCount">setRowCount()</code> but not
     previously declared.</p>
 
     <p>The <var title="">rows</var> argument is an array of rows, each
     represented by a further array consisting of:</p>
 
-    <ol class=brief><li>A <code><a href=#rowid>RowID</a></code> object identifying the row.</li>
+    <ol class="brief">
 
+     <li>A <code>RowID</code> object identifying the row.</li>
+
      <li>An integer giving the position of the row in its parent,
-     given the current sort order, or &minus;1 to set other row data
+     given the current sort order, or &#x2212;1 to set other row data
      without setting a position or changing a previously declared
      position.</li>
 
      <li>An integer giving the number of children of the row, or 0 if
-     the row has no children, or &minus;1 if the row has children but
+     the row has no children, or &#x2212;1 if the row has children but
      the count is currently unknown. If the number of children has
      already been set to 0 or a positive integer, then passing
-     &minus;1 leaves the previous count unchanged.</li>
+     &#x2212;1 leaves the previous count unchanged.</li>
 
      <li>An array giving the data for zero or more cells in the row,
      as described below.</li>
@@ -37618,67 +37637,88 @@
      this row that are closed. This entry can be omitted if the row is
      closed or if it has already been declared.</li>
 
-    </ol><p>The array giving the data for the cells in the row consists of
+    </ol>
+
+    <p>The array giving the data for the cells in the row consists of
     a further set of arrays, one per cell. The first item of each of
     these arrays is the column's identifier; the subsequent values
     vary based on the type of the column, as follows:</p>
 
-    <dl><dt><code title=datagrid-type-text><a href=#datagrid-type-text>text</a></code></dt>
+    <dl>
+
+     <dt><code title="datagrid-type-text">text</code></dt>
      <dd>
-      <ol class=brief><li>A string giving the cell's value.
-       <li>Optionally, an <code><a href=#the-img-element>img</a></code> element giving an icon for the cell.
-      </ol></dd>
+      <ol class="brief">
+       <li>A string giving the cell's value.
+       <li>Optionally, an <code>img</code> element giving an icon for the cell.
+      </ol>
+     </dd>
 
-     <dt><code title=datagrid-type-editable><a href=#datagrid-type-editable>editable</a></code></dt>
+     <dt><code title="datagrid-type-editable">editable</code></dt>
      <dd>
-      <ol class=brief><li>A string giving the cell's value.
-       <li>Optionally, a <code><a href=#the-datalist-element>datalist</a></code> element giving a set of predefined options.
-       <li>Optionally, an <code><a href=#the-img-element>img</a></code> element giving an icon for the cell.
-      </ol></dd>
+      <ol class="brief">
+       <li>A string giving the cell's value.
+       <li>Optionally, a <code>datalist</code> element giving a set of predefined options.
+       <li>Optionally, an <code>img</code> element giving an icon for the cell.
+      </ol>
+     </dd>
 
-     <dt><code title=datagrid-type-checkable><a href=#datagrid-type-checkable>checkable</a></code></dt>
+     <dt><code title="datagrid-type-checkable">checkable</code></dt>
      <dd>
-      <ol class=brief><li>A string giving the cell's value.
+      <ol class="brief">
+       <li>A string giving the cell's value.
        <li>A boolean, indicating whether the cell is checked (true) or not (false).
        <li>Optionally, a boolean indicating whether the value of the cell is obscured as indeterminate (true), or not (false).
-       <li>Optionally, an <code><a href=#the-img-element>img</a></code> element giving an icon for the cell.
-      </ol></dd>
+       <li>Optionally, an <code>img</code> element giving an icon for the cell.
+      </ol>
+     </dd>
 
-     <dt><code title=datagrid-type-list><a href=#datagrid-type-list>list</a></code></dt>
+     <dt><code title="datagrid-type-list">list</code></dt>
      <dd>
-      <ol class=brief><li>A string giving the cell's current value.
-       <li>A <code><a href=#the-select-element>select</a></code> element giving the <a href=#concept-select-option-list title=concept-select-option-list>list of options</a>.
-       <li>Optionally, an <code><a href=#the-img-element>img</a></code> element giving an icon for the cell.
-      </ol></dd>
+      <ol class="brief">
+       <li>A string giving the cell's current value.
+       <li>A <code>select</code> element giving the <span title="concept-select-option-list">list of options</span>.
+       <li>Optionally, an <code>img</code> element giving an icon for the cell.
+      </ol>
+     </dd>
 
-     <dt><code title=datagrid-type-progress><a href=#datagrid-type-progress>progress</a></code></dt>
+     <dt><code title="datagrid-type-progress">progress</code></dt>
      <dd>
-      <ol class=brief><li>A value in the range 0.0 (no progress) to 1.0 (task complete).
-      </ol></dd>
+      <ol class="brief">
+       <li>A value in the range 0.0 (no progress) to 1.0 (task complete).
+      </ol>
+     </dd>
 
-     <dt><code title=datagrid-type-meter><a href=#datagrid-type-meter>meter</a></code></dt>
+     <dt><code title="datagrid-type-meter">meter</code></dt>
      <dd>
-      <ol class=brief><li>A number giving the cell's value.
+      <ol class="brief">
+       <li>A number giving the cell's value.
        <li>Optionally, a number giving the maximum value, if it's not 1.
        <li>Optionally, a number giving the minimum value, if it's not 0.
        <li>Optionally, a number giving the highest value that is considered "low".
        <li>Optionally, a number giving the lowest value that is considered "high".
        <li>Optionally, a number giving the value that is considered optimal.
-      </ol></dd>
+      </ol>
+     </dd>
 
-     <dt><code title=datagrid-type-custom><a href=#datagrid-type-custom>custom</a></code></dt>
+     <dt><code title="datagrid-type-custom">custom</code></dt>
      <dd>
-      <ol class=brief><li>A number giving the minimum width of the cell, in CSS pixels, that is desired.
+      <ol class="brief">
+       <li>A number giving the minimum width of the cell, in CSS pixels, that is desired.
        <li>A number giving the minimum height of the cell, in CSS pixels, that is desired.
-       <li>A function that is passed a <code><a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a></code> object, along with the width and height (in CSS pixels) of the cell that the context will draw on.
-      </ol></dd>
+       <li>A function that is passed a <code>CanvasRenderingContext2D</code> object, along with the width and height (in CSS pixels) of the cell that the context will draw on.
+      </ol>
+     </dd>
 
-    </dl><p>While the rows in a single call to the <code title=dom-datagrid-setRows><a href=#dom-datagrid-setrows>setRows()</a></code> method can be in any
+    </dl>
+
+    <p>While the rows in a single call to the <code
+    title="dom-datagrid-setRows">setRows()</code> method can be in any
     order, for each row, it is important that all its ancestor rows
     and all its open previous siblings are also declared, either in
     the same call or in an earlier one.</p>
 
-    <p>Throws a <code><a href=#datagrid_model_err>DATAGRID_MODEL_ERR</a></code> exception if the
+    <p>Throws a <code>DATAGRID_MODEL_ERR</code> exception if the
     arguments contradict each other or previously declared information
     (e.g. saying that a row's position is 5 when the parent row only
     has 3 children, or naming a column that doesn't exist, or
@@ -37689,83 +37729,94 @@
    </dd>
 
 
-   <dt><var title="">datagrid</var> . <code title=dom-datagrid-insertRows><a href=#dom-datagrid-insertrows>insertRows</a></code>(<var title="">rows</var>)</dt>
+   <dt><var title="">datagrid</var> . <code title="dom-datagrid-insertRows">insertRows</code>(<var title="">rows</var>)</dt>
    <dd>
 
-    <p>Inserts the given rows into the <code><a href=#datagrid>datagrid</a></code>,
-    increasing the numbers of rows that the <code><a href=#datagrid>datagrid</a></code>
+    <p>Inserts the given rows into the <code>datagrid</code>,
+    increasing the numbers of rows that the <code>datagrid</code>
     assumes are present.</p>
 
     <p>The <var title="">rows</var> argument is an array of rows in
-    the same structure as the argument to the <code title=dom-datagrid-setRows><a href=#dom-datagrid-setrows>setRows()</a></code> method described
+    the same structure as the argument to the <code
+    title="dom-datagrid-setRows">setRows()</code> method described
     above, with the same expectations of consistency (a given row's
     ancestors and earlier open siblings being listed either earlier or
-    in the same call as a given row). However, unlike with the <code title=dom-datagrid-setRows><a href=#dom-datagrid-setrows>setRows()</a></code> method, if a row is
+    in the same call as a given row). However, unlike with the <code
+    title="dom-datagrid-setRows">setRows()</code> method, if a row is
     inserted along with its child, the child is not included in the
-    child and row counts of the parent row; every row in the <var title="">rows</var> argument will increase its parent's counts
+    child and row counts of the parent row; every row in the <var
+    title="">rows</var> argument will increase its parent's counts
     automatically.</p>
 
-    <p>Throws a <code><a href=#datagrid_model_err>DATAGRID_MODEL_ERR</a></code> exception if the
+    <p>Throws a <code>DATAGRID_MODEL_ERR</code> exception if the
     arguments contradict each other or previously declared
     information.</p>
 
    </dd>
 
 
-   <dt><var title="">datagrid</var> . <code title=dom-datagrid-deleteRows><a href=#dom-datagrid-deleterows>deleteRows</a></code>(<var title="">rows</var>)</dt>
+   <dt><var title="">datagrid</var> . <code title="dom-datagrid-deleteRows">deleteRows</code>(<var title="">rows</var>)</dt>
    <dd>
 
-    <p>Removes the given rows from the <code><a href=#datagrid>datagrid</a></code>, and
+    <p>Removes the given rows from the <code>datagrid</code>, and
     updates the number of rows known to be in the
-    <code><a href=#datagrid>datagrid</a></code> accordingly. The argument is an array of
-    <code><a href=#rowid>RowID</a></code> objects identifying the rows to remove.</p>
+    <code>datagrid</code> accordingly. The argument is an array of
+    <code>RowID</code> objects identifying the rows to remove.</p>
 
-    <p>Throws a <code><a href=#datagrid_model_err>DATAGRID_MODEL_ERR</a></code> exception if the argument
-    includes a row the <code><a href=#datagrid>datagrid</a></code> doesn't know about.</p>
-    <!-- since otherwise behaviour might depend on where the user
-    scrolled! -->
+    <p>Throws a <code>DATAGRID_MODEL_ERR</code> exception if the argument
+    includes a row the <code>datagrid</code> doesn't know about.</p>
+    <!- - since otherwise behaviour might depend on where the user
+    scrolled! - ->
 
    </dd>
 
 
-   <dt><var title="">datagrid</var> . <code title=dom-datagrid-repaint><a href=#dom-datagrid-repaint>repaint</a></code>(<var title="">row</var>, <var title="">column</var>)</dt>
+   <dt><var title="">datagrid</var> . <code title="dom-datagrid-repaint">repaint</code>(<var title="">row</var>, <var title="">column</var>)</dt>
    <dd>
 
-    <p>If the given column's type is <code title=datagrid-type-custom><a href=#datagrid-type-custom>custom</a></code>, then causes the
-    <code><a href=#datagrid>datagrid</a></code> to reinvoke the function that obtains the
+    <p>If the given column's type is <code
+    title="datagrid-type-custom">custom</code>, then causes the
+    <code>datagrid</code> to reinvoke the function that obtains the
     desired rendering.</p>
 
    </dd>
 
 
-   <dt><var title="">datagrid</var> . <code title=dom-datagrid-clearRows><a href=#dom-datagrid-clearrows>clearRows</a></code>()</dt>
+   <dt><var title="">datagrid</var> . <code title="dom-datagrid-clearRows">clearRows</code>()</dt>
    <dd>
 
-    <p>Clears the <code><a href=#datagrid>datagrid</a></code> of all row data, resetting it
-    to empty<!-- v2DGS:, and clears the selection-->.</p>
+    <p>Clears the <code>datagrid</code> of all row data, resetting it
+    to empty<!- - v2DGS:, and clears the selection- ->.</p>
 
    </dd>
 
-  </dl><div class=impl>
+  </dl>
 
-  <h6 id=the-listener><span class=secno>4.11.2.2.1 </span>The listener</h6>
 
-  <p>The <dfn id=dom-datagrid-listener title=dom-datagrid-listener><code>listener</code></dfn> DOM
+  <div class="impl">
+
+  <h6>The listener</h6>
+
+  <p>The <dfn
+  title="dom-datagrid-listener"><code>listener</code></dfn> DOM
   attribute allows authors to specify an object that will receive all
-  the notifications from the <code><a href=#datagrid>datagrid</a></code>. Initially, its
+  the notifications from the <code>datagrid</code>. Initially, its
   value must be null. On getting, it must return its value. On
   setting, its value must be set to the new value, and then the user
-  agent must <a href=#queue-a-task>queue a task</a> to call the <code title=dom-listener-initialize><a href=#dom-listener-initialize>initialize()</a></code> method with the
-  <code><a href=#datagrid>datagrid</a></code> element as its only argument.</p>
+  agent must <span>queue a task</span> to call the <code
+  title="dom-listener-initialize">initialize()</code> method with the
+  <code>datagrid</code> element as its only argument.</p>
 
 
-  <h6 id=the-columns><span class=secno>4.11.2.2.2 </span>The columns</h6>
+  <h6>The columns</h6>
 
-  <p>The columns are represented by the <dfn id=column-list>column list</dfn>, an
+  <p>The columns are represented by the <dfn>column list</dfn>, an
   ordered list of entries for columns, each of which consists of:</p>
 
-  <dl><dt>An identifier</dt>
+  <dl>
 
+   <dt>An identifier</dt>
+
    <dd>A string used to identify the column in the API.</dd>
 
    <dt>A label</dt>
@@ -37778,7 +37829,7 @@
 
    <dt>An icon</dt>
 
-   <dd>An image, copied from an <code><a href=#the-img-element>img</a></code> element when the
+   <dd>An image, copied from an <code>img</code> element when the
    column was declared.</dd>
 
    <dt>Whether the column is sortable</dt>
@@ -37789,71 +37840,92 @@
    <dt>Whether the column is visible</dt>
 
    <dd>A boolean indicating whether the column is part of the
-   <code><a href=#datagrid>datagrid</a></code>'s rendering.</dd>
+   <code>datagrid</code>'s rendering.</dd>
 
-  </dl><p>Initially, the <a href=#column-list>column list</a> must have a single
-  column, the <dfn id=default-column>default column</dfn>, whose identifier is the empty
-  string, whose label is the empty string, whose type is <code title=datagrid-type-text><a href=#datagrid-type-text>text</a></code>, with no icon, which is not
+  </dl>
+
+  <p>Initially, the <span>column list</span> must have a single
+  column, the <dfn>default column</dfn>, whose identifier is the empty
+  string, whose label is the empty string, whose type is <code
+  title="datagrid-type-text">text</code>, with no icon, which is not
   sortable, and which <em>is</em> visible.</p>
 
-  <hr><p>The <dfn id=dom-datagrid-addcolumn title=dom-datagrid-addColumn><code>addColumn(<var title="">id</var>, <var title="">label</var>, <var title="">type</var>, <var title="">icon</var>, <var title="">sortable</var>, <var title="">hidden</var>)</code></dfn>
+  <hr>
+
+  <p>The <dfn title="dom-datagrid-addColumn"><code>addColumn(<var
+  title="">id</var>, <var title="">label</var>, <var
+  title="">type</var>, <var title="">icon</var>, <var
+  title="">sortable</var>, <var title="">hidden</var>)</code></dfn>
   method must run the following steps:</p>
 
-  <ol><li><p>If there is already an entry in <a href=#column-list>column list</a>,
-   other than the <a href=#default-column>default column</a>, whose identifier is
-   <var title="">id</var>, throw a <code><a href=#datagrid_model_err>DATAGRID_MODEL_ERR</a></code>
-   exception and abort these steps.</li>
+  <ol>
 
+   <li><p>If there is already an entry in <span>column list</span>,
+   other than the <span>default column</span>, whose identifier is
+   <var title="">id</var>, throw a <code>DATAGRID_MODEL_ERR</code>
+   exception and abort these steps.</p></li>
+
    <li>
 
     <p>If <var title="">type</var> is not a string equal to one of the
-    <a href=#allowed-datagrid-column-types>allowed <code>datagrid</code> column types</a>, then
-    throw a <code><a href=#datagrid_model_err>DATAGRID_MODEL_ERR</a></code> exception and abort these
+    <span>allowed <code>datagrid</code> column types</span>, then
+    throw a <code>DATAGRID_MODEL_ERR</code> exception and abort these
     steps.</p>
 
    </li>
 
    <li><p>If the <var title="">icon</var> argument is present and not
-   null, but the given <code><a href=#the-img-element>img</a></code> element's <code title=dom-img-complete><a href=#dom-img-complete>complete</a></code> attribute is false, then
-   let <var title="">icon</var> be null.</li>
+   null, but the given <code>img</code> element's <code
+   title="dom-img-complete">complete</code> attribute is false, then
+   let <var title="">icon</var> be null.</p></li>
 
    <li><p>If the <var title="">icon</var> argument is present and not
-   null, then copy the image data from that <code><a href=#the-img-element>img</a></code> element,
+   null, then copy the image data from that <code>img</code> element,
    and let <var title="">image</var> be the copy of that image
-   data. Otherwise, let <var title="">image</var> be nothing.</li>
+   data. Otherwise, let <var title="">image</var> be nothing.</p></li>
 
-   <li><p>Append a new entry to the <a href=#column-list>column list</a>, with
+   <li><p>Append a new entry to the <span>column list</span>, with
    <var title="">id</var> as its identifier, <var title="">label</var>
-   as its label, <var title="">type</var> as its type, and <var title="">image</var> as its icon. Let the column be sortable if the
+   as its label, <var title="">type</var> as its type, and <var
+   title="">image</var> as its icon. Let the column be sortable if the
    <var title="">sortable</var> argument is present and true, and make
    it visible unless the <var title="">hidden</var> argument is
-   present and true.</li>
+   present and true.</p></li>
 
-   <li><p>If the <a href=#column-list>column list</a> contains the <a href=#default-column>default
-   column</a>, then remove the <a href=#default-column>default column</a> from the
-   <a href=#column-list>column list</a>, discard any data for cells in that column
-   in any rows in the <code><a href=#datagrid>datagrid</a></code>, set <code title=dom-datagrid-sortColumn><a href=#dom-datagrid-sortcolumn>sortColumn</a></code> to <var title="">id</var>, set <code title=dom-datagrid-sortAscending><a href=#dom-datagrid-sortascending>sortAscending</a></code> to true,
-   and run the <a href=#datagrid-resort-steps><code>datagrid</code> resort
-   steps</a>.</li>
+   <li><p>If the <span>column list</span> contains the <span>default
+   column</span>, then remove the <span>default column</span> from the
+   <span>column list</span>, discard any data for cells in that column
+   in any rows in the <code>datagrid</code>, set <code
+   title="dom-datagrid-sortColumn">sortColumn</code> to <var
+   title="">id</var>, set <code
+   title="dom-datagrid-sortAscending">sortAscending</code> to true,
+   and run the <span><code>datagrid</code> resort
+   steps</span>.</p></li>
 
-  </ol><hr><p>The <dfn id=dom-datagrid-sortcolumn title=dom-datagrid-sortColumn><code>sortColumn</code></dfn> DOM
+  </ol>
+
+  <hr>
+
+  <p>The <dfn
+  title="dom-datagrid-sortColumn"><code>sortColumn</code></dfn> DOM
   attribute gives the current column used for sorting. Initially, its
   value must be the empty string. On getting, it must return its
   current value. On setting, if the new value doesn't match the
-  identifier of one of the columns in the <a href=#column-list>column list</a>,
-  then the user agent must throw a <code><a href=#datagrid_model_err>DATAGRID_MODEL_ERR</a></code>
+  identifier of one of the columns in the <span>column list</span>,
+  then the user agent must throw a <code>DATAGRID_MODEL_ERR</code>
   exception. Otherwise, if the new value is not the same as its
   current value, then the user agent must set the attribute to the new
-  value, and then run the <a href=#datagrid-resort-steps><code>datagrid</code> resort
-  steps</a>.</p>
+  value, and then run the <span><code>datagrid</code> resort
+  steps</span>.</p>
 
-  <p>The <dfn id=dom-datagrid-sortascending title=dom-datagrid-sortAscending><code>sortAscending</code></dfn>
+  <p>The <dfn
+  title="dom-datagrid-sortAscending"><code>sortAscending</code></dfn>
   DOM attribute specifies the direction that the tree is sorted in,
   ascending (true) or descending (false). Initially, its value must be
   true (ascending). On getting, it must return its current value. On
   setting, if the new value is not the same as its current value, then
   the user agent must set the attribute to the new value, and then run
-  the <a href=#datagrid-resort-steps><code>datagrid</code> resort steps</a>.</p>
+  the <span><code>datagrid</code> resort steps</span>.</p>
 
   <p>When a column is marked as being sortable, the user agent should
   allow the user to select that column to be the column used for
@@ -37861,80 +37933,94 @@
   is ascending or descending.</p>
 
   <p>When the user changes the sort order in this manner, the user
-  agent must update the <code title=dom-datagrid-sortColumn><a href=#dom-datagrid-sortcolumn>sortColumn</a></code> and <code title=dom-datagrid-sortAscending><a href=#dom-datagrid-sortascending>sortAscending</a></code> attributes
-  appropriately, and then run the <a href=#datagrid-resort-steps><code>datagrid</code> resort
-  steps</a>.</p>
+  agent must update the <code
+  title="dom-datagrid-sortColumn">sortColumn</code> and <code
+  title="dom-datagrid-sortAscending">sortAscending</code> attributes
+  appropriately, and then run the <span><code>datagrid</code> resort
+  steps</span>.</p>
 
-  <p class=note>The <a href=#datagrid-resort-steps><code>datagrid</code> resort steps</a>
+  <p class="note">The <span><code>datagrid</code> resort steps</span>
   are described in the next section.</p>
 
-  <hr><p>The <dfn id=dom-datagrid-clearcolumns title=dom-datagrid-clearColumns><code>clearColumns()</code></dfn>
-  method, if the <a href=#column-list>column list</a> doesn't contain the
-  <a href=#default-column>default column</a>, must empty the <a href=#column-list>column
-  list</a>, append the <a href=#default-column>default column</a> to the now empty
-  <a href=#column-list>column list</a>, discard any data for cells in all rows in
-  the <code><a href=#datagrid>datagrid</a></code>, set <code title=dom-datagrid-sortColumn><a href=#dom-datagrid-sortcolumn>sortColumn</a></code> to the empty
-  string, set <code title=dom-datagrid-sortAscending><a href=#dom-datagrid-sortascending>sortAscending</a></code> to true, and
-  run the <a href=#datagrid-resort-steps><code>datagrid</code> resort steps</a>. (If the
-  <a href=#column-list>column list</a> is already just the <a href=#default-column>default
-  column</a>, then the method does nothing.)</p>
+  <hr>
 
+  <p>The <dfn
+  title="dom-datagrid-clearColumns"><code>clearColumns()</code></dfn>
+  method, if the <span>column list</span> doesn't contain the
+  <span>default column</span>, must empty the <span>column
+  list</span>, append the <span>default column</span> to the now empty
+  <span>column list</span>, discard any data for cells in all rows in
+  the <code>datagrid</code>, set <code
+  title="dom-datagrid-sortColumn">sortColumn</code> to the empty
+  string, set <code
+  title="dom-datagrid-sortAscending">sortAscending</code> to true, and
+  run the <span><code>datagrid</code> resort steps</span>. (If the
+  <span>column list</span> is already just the <span>default
+  column</span>, then the method does nothing.)</p>
 
-  <h6 id=the-rows><span class=secno>4.11.2.2.3 </span>The rows</h6>
 
-  <p>A <code><a href=#datagrid>datagrid</a></code> element is intended to show a
+  <h6>The rows</h6>
+
+  <p>A <code>datagrid</code> element is intended to show a
   representation of a tree, where typically the user only sees a
   small part of the tree at a time.</p>
 
-  <p>To make this efficient, the <code><a href=#datagrid>datagrid</a></code> element
+  <p>To make this efficient, the <code>datagrid</code> element
   <em>actually</em> shows a small part of a <em>sparse</em> tree, so
   that only relevant parts of the data structure need be loaded at any
   time. Specifically, the model requires only that all the ancestor
   rows of the displayed rows be loaded, as well as any open earlier
   siblings (in the displayed sort order) of the displayed rows.</p>
 
-  <p>Conceptually, therefore, a <code><a href=#datagrid>datagrid</a></code> has a number of
+  <p>Conceptually, therefore, a <code>datagrid</code> has a number of
   related sparse data structures backing it.</p>
 
-  <p>The first is the <dfn id=natural-order-sparse-data-tree>natural order sparse data tree</dfn>. This
+  <p>The first is the <dfn>natural order sparse data tree</dfn>. This
   is the structure in which rows are entered as they are declared, in
   their natural order. This can differ from the order actually
   displayed to the user. It consists of nested sparse lists of
-  rows. In the <a href=#natural-order-sparse-data-tree>natural order sparse data tree</a>, a row will
+  rows. In the <span>natural order sparse data tree</span>, a row will
   always have all its parents already declared. Once a row is added to
-  this structure, it can only be removed by the <code title=dom-datagrid-deleteRows><a href=#dom-datagrid-deleterows>deleteRows()</a></code> and <code title=dom-datagrid-clearRows><a href=#dom-datagrid-clearrows>clearRows()</a></code> methods. The order of
+  this structure, it can only be removed by the <code
+  title="dom-datagrid-deleteRows">deleteRows()</code> and <code
+  title="dom-datagrid-clearRows">clearRows()</code> methods. The order of
   nodes in this tree never changes; to move a node in this tree, it
   has to be removed and then another row (with the same data)
   reinserted elsewhere.</p>
 
-  <p>The second structure is the <dfn id=display-order-sparse-data-tree>display order sparse data
+  <p>The second structure is the <dfn>display order sparse data
   tree</dfn>. This is a similar structure that contains a subset of
-  the rows in the <a href=#natural-order-sparse-data-tree>natural order sparse data tree</a>, ordered
-  in the order given by the <code title=dom-datagrid-sortAscending><a href=#dom-datagrid-sortascending>sortAscending</a></code> and <code title=dom-datagrid-sortColumn><a href=#dom-datagrid-sortcolumn>sortColumn</a></code> attributes, and
+  the rows in the <span>natural order sparse data tree</span>, ordered
+  in the order given by the <code
+  title="dom-datagrid-sortAscending">sortAscending</code> and <code
+  title="dom-datagrid-sortColumn">sortColumn</code> attributes, and
   excluding rows with one or more ancestors that are closed. This tree
-  is cleared whenever the <code title=dom-datagrid-sortAscending><a href=#dom-datagrid-sortascending>sortAscending</a></code> and <code title=dom-datagrid-sortColumn><a href=#dom-datagrid-sortcolumn>sortColumn</a></code> attributes
+  is cleared whenever the <code
+  title="dom-datagrid-sortAscending">sortAscending</code> and <code
+  title="dom-datagrid-sortColumn">sortColumn</code> attributes
   change.</p>
 
-  <p>The third structure is the <dfn id=display-order-sparse-data-list>display order sparse data
+  <p>The third structure is the <dfn>display order sparse data
   list</dfn>. This structure is a flattened representation of the
-  <a href=#display-order-sparse-data-tree>display order sparse data tree</a>.</p>
+  <span>display order sparse data tree</span>.</p>
 
-  <p>At any time, a number of consecutive rows in the <a href=#display-order-sparse-data-list>display
-  order sparse data list</a> are physically visible to the
-  user. The <code><a href=#datagrid>datagrid</a></code> fires notifications to a <a href=#dom-datagrid-listener title=dom-datagrid-listener>listener</a> (provided by script),
+  <p>At any time, a number of consecutive rows in the <span>display
+  order sparse data list</span> are physically visible to the
+  user. The <code>datagrid</code> fires notifications to a <span
+  title="dom-datagrid-listener">listener</span> (provided by script),
   and the listener, or other some script, is expected to feed the
-  <code><a href=#datagrid>datagrid</a></code> with the information needed to render the
+  <code>datagrid</code> with the information needed to render the
   control.</p>
 
-  <p>A <code><a href=#datagrid>datagrid</a></code> has a <dfn id=pending-datagrid-rows-list>pending <code>datagrid</code>
-  rows list</dfn>, which is a list of rows in the <a href=#display-order-sparse-data-list>display order
-  sparse data list</a> for which the <code><a href=#datagrid>datagrid</a></code> has sent
+  <p>A <code>datagrid</code> has a <dfn>pending <code>datagrid</code>
+  rows list</dfn>, which is a list of rows in the <span>display order
+  sparse data list</span> for which the <code>datagrid</code> has sent
   notifications requesting information but not yet received
   information about.</p>
 
-  <p>A <code><a href=#datagrid>datagrid</a></code> also has a <dfn id=pending-datagrid-cells-list>pending
+  <p>A <code>datagrid</code> also has a <dfn>pending
   <code>datagrid</code> <em>cells</em> list</dfn>, which is a list of
-  row/column pairs (cells) for which the <code><a href=#datagrid>datagrid</a></code> has
+  row/column pairs (cells) for which the <code>datagrid</code> has
   sent notifications requesting information but not yet received
   information about.</p>
 
@@ -37942,39 +38028,44 @@
   displayed and that are not ancestors or open earlier siblings of
   rows or ancestors of rows that are displayed.</p>
 
-  <hr><p>These structures are different views of the collection of rows
-  that form the <code><a href=#datagrid>datagrid</a></code>. Each row has the following
+  <hr>
+
+  <p>These structures are different views of the collection of rows
+  that form the <code>datagrid</code>. Each row has the following
   information associated with it:</p>
 
-  <dl><dt>A parent</dt>
+  <dl>
 
-   <dd><p>Either another row, or the <code><a href=#datagrid>datagrid</a></code> itself. This
-   is the parent of the row in the <a href=#natural-order-sparse-data-tree>natural order sparse data
-   tree</a> and the <a href=#display-order-sparse-data-tree>display order sparse data tree</a>
-   for the <code><a href=#datagrid>datagrid</a></code>.</dd>
+   <dt>A parent</dt>
 
+   <dd><p>Either another row, or the <code>datagrid</code> itself. This
+   is the parent of the row in the <span>natural order sparse data
+   tree</span> and the <span>display order sparse data tree</span>
+   for the <code>datagrid</code>.</p></dd>
+
    <dt>A natural order position relative to the other rows with the
    same parent</dt>
 
    <dd>
 
     <p>This is the number of rows that precede this row under the same
-    parent in the <a href=#natural-order-sparse-data-tree>natural order sparse data tree</a>. This
+    parent in the <span>natural order sparse data tree</span>. This
     number can't be changed relative to other rows in the same parent;
     to change the relative natural order of data in the
-    <code><a href=#datagrid>datagrid</a></code>, the original rows have to be removed and
+    <code>datagrid</code>, the original rows have to be removed and
     new rows (with the same data but different natural positions)
     inserted in their place. (The exact number of a row can change, as
     new rows can be inserted above it.)</p>
 
-    <p>A row can be identified by a <code><a href=#rowid>RowID</a></code> object. This is
+    <p>A row can be identified by a <code>RowID</code> object. This is
     an array of numbers, consisting of the natural order positions of
     each ancestor row and the row itself, starting from the furthest
     ancestor. Thus, for instance, the fourth child row of the first
-    child row of the second row in a <code><a href=#datagrid>datagrid</a></code> would be
-    identified by a <code><a href=#rowid>RowID</a></code> object whose value is <code title="">[1, 0, 3]</code>. A row's identifier changes if rows are
-    <a href=#dom-datagrid-insertrows title=dom-datagrid-insertRows>inserted before it</a> in
-    the <code><a href=#datagrid>datagrid</a></code>.</p>
+    child row of the second row in a <code>datagrid</code> would be
+    identified by a <code>RowID</code> object whose value is <code
+    title="">[1, 0, 3]</code>. A row's identifier changes if rows are
+    <span title="dom-datagrid-insertRows">inserted before it</span> in
+    the <code>datagrid</code>.</p>
 
    </dd>
 
@@ -37982,20 +38073,22 @@
    the same parent</dt>
 
    <dd><p>This is the number of rows that precede this row under the
-   same parent in the <a href=#display-order-sparse-data-tree>display order sparse data
-   tree</a>. This number can be unknown. If the sort order
-   changes, then this information is lost (as the <a href=#display-order-sparse-data-tree>display order
-   sparse data tree</a> is cleared).</dd>
+   same parent in the <span>display order sparse data
+   tree</span>. This number can be unknown. If the sort order
+   changes, then this information is lost (as the <span>display order
+   sparse data tree</span> is cleared).</p></dd>
 
    <dt>A child count</dt>
 
    <dd><p>The number of rows that have this row as a parent. If this is
-   zero, the row cannot be opened. If this is &minus;1, then the
+   zero, the row cannot be opened. If this is &#x2212;1, then the
    child count is unknown but the row can be opened. This value can be
-   changed by the <code title=dom-datagrid-setRows><a href=#dom-datagrid-setrows>setRows()</a></code>
-   method only if the current value is &minus;1 or if the row or one
+   changed by the <code title="dom-datagrid-setRows">setRows()</code>
+   method only if the current value is &#x2212;1 or if the row or one
    of its ancestors is closed. Otherwise, it can only be changed
-   indirectly using the <code title=dom-datagrid-insertRows><a href=#dom-datagrid-insertrows>insertRows()</a></code> and <code title=dom-datagrid-deleteRows><a href=#dom-datagrid-deleterows>deleteRows()</a></code> methods.</dd>
+   indirectly using the <code
+   title="dom-datagrid-insertRows">insertRows()</code> and <code
+   title="dom-datagrid-deleteRows">deleteRows()</code> methods.</p></dd>
 
    <dt>An open flag</dt>
 
@@ -38005,286 +38098,338 @@
    also be in a third state, "opening", which is treated as closed for
    all purposes except that the user agent may indicate that the row
    is in this special state, and except that when the row is updated
-   to have a row count, the row will switch to being open.</dd>
+   to have a row count, the row will switch to being open.</p></dd>
 
    <dt>A row count</dt>
 
    <dd><p>The number of rows that have this row as a parent or
    ancestor, and that do not have an ancestor that is a descendant of
-   this row that is itself closed. If this is &minus;1, then the row
-   count is unknown. This value can be changed by the <code title=dom-datagrid-setRows><a href=#dom-datagrid-setrows>setRows()</a></code> method only if the
+   this row that is itself closed. If this is &#x2212;1, then the row
+   count is unknown. This value can be changed by the <code
+   title="dom-datagrid-setRows">setRows()</code> method only if the
    row or one of its ancestors is closed (or opening, but not
-   open). Otherwise, it can only be changed indirectly using the <code title=dom-datagrid-insertRows><a href=#dom-datagrid-insertrows>insertRows()</a></code> and <code title=dom-datagrid-deleteRows><a href=#dom-datagrid-deleterows>deleteRows()</a></code>
-   methods.</dd>
+   open). Otherwise, it can only be changed indirectly using the <code
+   title="dom-datagrid-insertRows">insertRows()</code> and <code
+   title="dom-datagrid-deleteRows">deleteRows()</code>
+   methods.</p></dd>
 
    <dt>Cells</dt>
 
    <dd><p>The data that applies to this row. Cell data is discussed in
-   more detail below.</dd>
+   more detail below.</p></dd>
 
-  </dl><p>The <code><a href=#datagrid>datagrid</a></code> itself also has a <dfn id=datagrid-child-count title="datagrid
-  child count">child count</dfn> and a <dfn id=datagrid-row-count title="datagrid row
+  </dl>
+
+  <p>The <code>datagrid</code> itself also has a <dfn title="datagrid
+  child count">child count</dfn> and a <dfn title="datagrid row
   count">row count</dfn>, which are analogous to the child counts and
   row counts for rows. Initially, these must be zero.</p>
 
-  <hr><p>The <dfn id=datagrid-resort-steps><code>datagrid</code> resort steps</dfn>, which are
+  <hr>
+
+  <p>The <dfn><code>datagrid</code> resort steps</dfn>, which are
   invoked when the sort order changes as described in the previous
   section, are as follows:</p>
 
-  <ol><li>
+  <ol>
 
-    <p>Clear the <a href=#display-order-sparse-data-tree>display order sparse data tree</a>
+   <li>
+
+    <p>Clear the <span>display order sparse data tree</span>
     (i.e. mark the display order position of all the rows in the
-    <code><a href=#datagrid>datagrid</a></code> as unknown).</p>
+    <code>datagrid</code> as unknown).</p>
 
     <p>User agents may cache the position information of rows for
-    various values of <code title=dom-datagrid-sortColumn><a href=#dom-datagrid-sortcolumn>sortColumn</a></code> and <code title=dom-datagrid-sortAscending><a href=#dom-datagrid-sortascending>sortAscending</a></code>, instead
+    various values of <code
+    title="dom-datagrid-sortColumn">sortColumn</code> and <code
+    title="dom-datagrid-sortAscending">sortAscending</code>, instead
     of discarding the information altogether. If the user agent caches
     this information, and has information that applies to the current
-    values of <code title=dom-datagrid-sortColumn><a href=#dom-datagrid-sortcolumn>sortColumn</a></code>
-    and <code title=dom-datagrid-sortAscending><a href=#dom-datagrid-sortascending>sortAscending</a></code>,
-    then the user agent may repopulate the <a href=#display-order-sparse-data-tree>display order sparse
-    data tree</a> from this information.</p>
+    values of <code title="dom-datagrid-sortColumn">sortColumn</code>
+    and <code title="dom-datagrid-sortAscending">sortAscending</code>,
+    then the user agent may repopulate the <span>display order sparse
+    data tree</span> from this information.</p>
 
    </li>
 
    <li>
 
-    <p>Clear the <a href=#pending-datagrid-rows-list>pending <code>datagrid</code> rows list</a>
-    and the <a href=#pending-datagrid-cells-list>pending <code>datagrid</code> cells list</a>.</p>
+    <p>Clear the <span>pending <code>datagrid</code> rows list</span>
+    and the <span>pending <code>datagrid</code> cells list</span>.</p>
 
    </li>
 
    <li>
 
-    <p>Invoke the <a href=#datagrid-update-display-algorithm><code>datagrid</code> update display
-    algorithm</a>.</p>
+    <p>Invoke the <span><code>datagrid</code> update display
+    algorithm</span>.</p>
 
    </li>
 
-   <!-- v2: queue a task to fire an event, or tell the listener the
-   sort order changed, or something -->
+   <!- - v2: queue a task to fire an event, or tell the listener the
+   sort order changed, or something - ->
 
-  </ol><hr><p>The <dfn id=dom-datagrid-renotify title=dom-datagrid-renotify><code>renotify()</code></dfn> method
-  must empty the <a href=#pending-datagrid-rows-list>pending <code>datagrid</code> rows list</a>
-  and the <a href=#pending-datagrid-cells-list>pending <code>datagrid</code> cells list</a>, and
-  invoke the <a href=#datagrid-update-display-algorithm><code>datagrid</code> update display
-  algorithm</a>.</p>
+  </ol>
 
-  <hr><p>The <dfn id=dom-datagrid-setrowcount title=dom-datagrid-setRowCount><code>setRowCount(<var title="">childCount</var>, <var title="">rowCount</var>)</code></dfn> method must run the following
+  <hr>
+
+  <p>The <dfn
+  title="dom-datagrid-renotify"><code>renotify()</code></dfn> method
+  must empty the <span>pending <code>datagrid</code> rows list</span>
+  and the <span>pending <code>datagrid</code> cells list</span>, and
+  invoke the <span><code>datagrid</code> update display
+  algorithm</span>.</p>
+
+  <hr>
+
+  <p>The <dfn title="dom-datagrid-setRowCount"><code>setRowCount(<var
+  title="">childCount</var>, <var
+  title="">rowCount</var>)</code></dfn> method must run the following
   steps:</p>
 
-  <ol><li>
+  <ol>
 
-    <p>Set the <a href=#datagrid-child-count><code>datagrid</code> child count</a> to <var title="">childCount</var>, the <a href=#datagrid-row-count><code>datagrid</code> row
-    count</a> to <var title="">rowCount</var>.</p>
+   <li>
 
+    <p>Set the <span><code>datagrid</code> child count</span> to <var
+    title="">childCount</var>, the <span><code>datagrid</code> row
+    count</span> to <var title="">rowCount</var>.</p>
+
    </li>
 
    <li>
 
-    <p><a href=#audit-the-datagrid>Audit the <code>datagrid</code></a>. If this fails,
+    <p><span>Audit the <code>datagrid</code></span>. If this fails,
     then revert the changes made in the previous step, throw a
-    <code><a href=#datagrid_model_err>DATAGRID_MODEL_ERR</a></code> exception, and abort these
+    <code>DATAGRID_MODEL_ERR</code> exception, and abort these
     steps.</p>
 
    </li>
 
    <li>
 
-    <p>Invoke the <a href=#datagrid-update-display-algorithm><code>datagrid</code> update display
-    algorithm</a>.</p>
+    <p>Invoke the <span><code>datagrid</code> update display
+    algorithm</span>.</p>
 
    </li>
 
-  </ol><hr><p>The <dfn id=dom-datagrid-setrows title=dom-datagrid-setRows><code>setRows(<var title="">rows</var>)</code></dfn> method must run the following
+  </ol>
+
+  <hr>
+
+  <p>The <dfn title="dom-datagrid-setRows"><code>setRows(<var
+  title="">rows</var>)</code></dfn> method must run the following
   steps:</p>
 
-  <ol><li>
+  <ol>
 
-    <p><a href=#type-check-a-rowlist-object title="type-check a RowList object">Type-check the <var title="">rows</var> argument</a>. If this fails, throw a
+   <li>
+
+    <p><span title="type-check a RowList object">Type-check the <var
+    title="">rows</var> argument</span>. If this fails, throw a
     <code>TypeError</code> exception, and abort these steps.</p>
 
    </li>
 
    <li>
 
-    <p><a href=#partially-sort-a-rowlist-object title="partially sort a RowList object">Partially sort
-    the <var title="">rows</var> argument</a>.</p>
+    <p><span title="partially sort a RowList object">Partially sort
+    the <var title="">rows</var> argument</span>.</p>
 
    </li>
 
    <li>
 
-    <p>For each <code><a href=#row>Row</a></code> object in the <var title="">rows</var> argument, in order, perform the appropriate
+    <p>For each <code>Row</code> object in the <var
+    title="">rows</var> argument, in order, perform the appropriate
     steps from the list below.</p>
 
-    <p class=note>The changes made to the <code><a href=#datagrid>datagrid</a></code>'s
+    <p class="note">The changes made to the <code>datagrid</code>'s
     data structures in this step get reverted (as required below) if
     any consistency errors are detected either in this step or the
     next.</p>
 
-    <dl><dt>If there already exists a row in the <code><a href=#datagrid>datagrid</a></code>'s
-     <a href=#natural-order-sparse-data-tree>natural order sparse data tree</a> with the same
-     identifier as given by the <code><a href=#row>Row</a></code> object's
-     <code><a href=#rowid>RowID</a></code> object, and that row and all its ancestors are
+    <dl>
+
+     <dt>If there already exists a row in the <code>datagrid</code>'s
+     <span>natural order sparse data tree</span> with the same
+     identifier as given by the <code>Row</code> object's
+     <code>RowID</code> object, and that row and all its ancestors are
      open</dt>
 
      <dd>
 
       <p>If one of the following conditions is true, then revert all
       the changes done in this step, throw a
-      <code><a href=#datagrid_model_err>DATAGRID_MODEL_ERR</a></code> exception, and abort these
+      <code>DATAGRID_MODEL_ERR</code> exception, and abort these
       steps:</p>
 
-      <ul><li>The value of the <code><a href=#row>Row</a></code> object's second entry is
-       neither &minus;1 nor equal to the child count of the
+      <ul>
+
+       <li>The value of the <code>Row</code> object's second entry is
+       neither &#x2212;1 nor equal to the child count of the
        preexisting row.</li>
 
-       <li>The <code><a href=#row>Row</a></code> object has fewer than four
+       <li>The <code>Row</code> object has fewer than four
        entries or more than six entries.</li>
 
-       <li>The <code><a href=#row>Row</a></code> object has five or more entries, and
+       <li>The <code>Row</code> object has five or more entries, and
        its fifth entry is false.</li>
 
-       <li>The <code><a href=#row>Row</a></code> object has six entries, and its sixth
+       <li>The <code>Row</code> object has six entries, and its sixth
        entry is not equal to the row count of the preexisting
        row.</li>
 
-      </ul></dd>
+      </ul>
 
-     <dt>If there already exists a row in the <code><a href=#datagrid>datagrid</a></code>'s
-     <a href=#natural-order-sparse-data-tree>natural order sparse data tree</a> with the same
-     identifier as given by the <code><a href=#row>Row</a></code> object's
-     <code><a href=#rowid>RowID</a></code> object, but either that row or one of its
+     </dd>
+
+     <dt>If there already exists a row in the <code>datagrid</code>'s
+     <span>natural order sparse data tree</span> with the same
+     identifier as given by the <code>Row</code> object's
+     <code>RowID</code> object, but either that row or one of its
      ancestors is closed</dt>
 
      <dd>
 
       <p>Set the preexisting row's child count to the value of the
-      <code><a href=#row>Row</a></code> object's second entry.</p>
+      <code>Row</code> object's second entry.</p>
 
-      <p>If the <code><a href=#row>Row</a></code> object has five or more entries, and
+      <p>If the <code>Row</code> object has five or more entries, and
       either its fifth entry is true and the preexisting row is closed
       but not opening, or its fifth entry is false and the preexisting
       row is open, then: if the preexisting row has no ancestor row
       that is closed, then revert all the changes done in this step,
-      throw a <code><a href=#datagrid_model_err>DATAGRID_MODEL_ERR</a></code> exception, and abort
+      throw a <code>DATAGRID_MODEL_ERR</code> exception, and abort
       these steps; otherwise, if the fifth entry is false, then close
       the row; otherwise, open the row.</p>
 
-      <p>If the <code><a href=#row>Row</a></code> object has six entries, set the
-      preexisting row's row count to the value of the <code><a href=#row>Row</a></code>
+      <p>If the <code>Row</code> object has six entries, set the
+      preexisting row's row count to the value of the <code>Row</code>
       object's sixth entry.</p>
 
       <p>If the preexisting row is opening, then: increase the
-      <a href=#datagrid-row-count><code>datagrid</code> row count</a> and the row counts
+      <span><code>datagrid</code> row count</span> and the row counts
       of any ancestor rows by the number of rows that the preexisting
-      row now has in its row count, then open the row.</p> <!-- we
+      row now has in its row count, then open the row.</p> <!- - we
       should also "update the <span>pending <code>datagrid</code> rows
       list</span> and the <span>pending <code>datagrid</code> cells
-      list</span> accordingly" -->
+      list</span> accordingly" - ->
 
 
      </dd>
 
-     <dt>There does not exist a row in the <code><a href=#datagrid>datagrid</a></code>'s
-     <a href=#natural-order-sparse-data-tree>natural order sparse data tree</a> with the same
-     identifier as given by the <code><a href=#row>Row</a></code> object's
-     <code><a href=#rowid>RowID</a></code> object</dt>
+     <dt>There does not exist a row in the <code>datagrid</code>'s
+     <span>natural order sparse data tree</span> with the same
+     identifier as given by the <code>Row</code> object's
+     <code>RowID</code> object</dt>
 
      <dd>
 
-      <p>If the <code><a href=#rowid>RowID</a></code> object has a length greater than 1,
+      <p>If the <code>RowID</code> object has a length greater than 1,
       then verify that there is a row identified by the
-      <code><a href=#rowid>RowID</a></code> consisting of all but the last number in the
-      <code><a href=#row>Row</a></code> object's <code><a href=#rowid>RowID</a></code>. If there is no
-      such row present in the <a href=#natural-order-sparse-data-tree>natural order sparse data
-      tree</a>, then revert all the changes done in this step,
-      throw a <code><a href=#datagrid_model_err>DATAGRID_MODEL_ERR</a></code> exception, and abort
+      <code>RowID</code> consisting of all but the last number in the
+      <code>Row</code> object's <code>RowID</code>. If there is no
+      such row present in the <span>natural order sparse data
+      tree</span>, then revert all the changes done in this step,
+      throw a <code>DATAGRID_MODEL_ERR</code> exception, and abort
       these steps.</p>
 
-      <p>Create a row and insert it into the <a href=#natural-order-sparse-data-tree>natural order
-      sparse data tree</a>, such that its parent is the row
-      identified by the <code><a href=#rowid>RowID</a></code> consisting of all but the
-      last number in the <code><a href=#row>Row</a></code> object's <code><a href=#rowid>RowID</a></code>,
-      or the <code><a href=#datagrid>datagrid</a></code> if the length of the
-      <code><a href=#row>Row</a></code> object's <code><a href=#rowid>RowID</a></code> is 1; with its
+      <p>Create a row and insert it into the <span>natural order
+      sparse data tree</span>, such that its parent is the row
+      identified by the <code>RowID</code> consisting of all but the
+      last number in the <code>Row</code> object's <code>RowID</code>,
+      or the <code>datagrid</code> if the length of the
+      <code>Row</code> object's <code>RowID</code> is 1; with its
       natural order position being the last number of the
-      <code><a href=#row>Row</a></code> object's <code><a href=#rowid>RowID</a></code>; with the child
-      count being the value of the third entry of the <code><a href=#row>Row</a></code>
+      <code>Row</code> object's <code>RowID</code>; with the child
+      count being the value of the third entry of the <code>Row</code>
       object; with the row being marked closed unless the
-      <code><a href=#row>Row</a></code> object has five or more entries and its fifth
+      <code>Row</code> object has five or more entries and its fifth
       entry is true, in which case the row is open; and with its row
-      count being &minus;1 unless the <code><a href=#row>Row</a></code> object has six
+      count being &#x2212;1 unless the <code>Row</code> object has six
       entries, in which case the row count is equal to the value of
-      the <code><a href=#row>Row</a></code> object's sixth entry.</p>
+      the <code>Row</code> object's sixth entry.</p>
 
      </dd>
 
-    </dl></li>
+    </dl>
 
+   </li>
+
    <li>
 
-    <p><a href=#audit-the-datagrid>Audit the <code>datagrid</code></a>. If this fails,
+    <p><span>Audit the <code>datagrid</code></span>. If this fails,
     then revert the changes made in the previous step, throw a
-    <code><a href=#datagrid_model_err>DATAGRID_MODEL_ERR</a></code> exception, and abort these
+    <code>DATAGRID_MODEL_ERR</code> exception, and abort these
     steps.</p>
 
    </li>
 
    <li>
 
-    <p>For each <code><a href=#row>Row</a></code> object in the <var title="">rows</var> argument, in order, <a href=#apply-a-row-object title="apply a Row
-    object">apply the <code>Row</code> object</a>.</p>
+    <p>For each <code>Row</code> object in the <var
+    title="">rows</var> argument, in order, <span title="apply a Row
+    object">apply the <code>Row</code> object</span>.</p>
 
    </li>
 
    <li>
 
-    <p>Invoke the <a href=#datagrid-update-display-algorithm><code>datagrid</code> update display
-    algorithm</a>.</p>
+    <p>Invoke the <span><code>datagrid</code> update display
+    algorithm</span>.</p>
 
    </li>
 
-  </ol><hr><p>The <dfn id=dom-datagrid-insertrows title=dom-datagrid-insertRows><code>insertRows(<var title="">rows</var>)</code></dfn> method must run the following
+  </ol>
+
+  <hr>
+
+  <p>The <dfn title="dom-datagrid-insertRows"><code>insertRows(<var
+  title="">rows</var>)</code></dfn> method must run the following
   steps:</p>
 
-  <ol><li>
+  <ol>
 
-    <p><a href=#type-check-a-rowlist-object title="type-check a RowList object">Type-check the <var title="">rows</var> argument</a>. If this fails, throw a
+   <li>
+
+    <p><span title="type-check a RowList object">Type-check the <var
+    title="">rows</var> argument</span>. If this fails, throw a
     <code>TypeError</code> exception, and abort these steps.</p>
 
    </li>
 
    <li>
 
-    <p><a href=#partially-sort-a-rowlist-object title="partially sort a RowList object">Partially sort
-    the <var title="">rows</var> argument</a>.</p>
+    <p><span title="partially sort a RowList object">Partially sort
+    the <var title="">rows</var> argument</span>.</p>
 
    </li>
 
    <li>
 
-    <p>For each <code><a href=#row>Row</a></code> object in the <var title="">rows</var> argument, in order, run the following
+    <p>For each <code>Row</code> object in the <var
+    title="">rows</var> argument, in order, run the following
     steps:</p>
 
-    <p class=note>The changes made to the <code><a href=#datagrid>datagrid</a></code>'s
+    <p class="note">The changes made to the <code>datagrid</code>'s
     data structures in this step get reverted (as required below) if
     any consistency errors are detected either in this step or the
     next.</p>
 
-    <ol><li>
+    <ol>
 
+     <li>
+
       <p>Let <var title="">parent</var> be the row identified by the
-      <code><a href=#rowid>RowID</a></code> consisting of all but the last number in the
-      <code><a href=#row>Row</a></code> object's <code><a href=#rowid>RowID</a></code>, or the
-      <code><a href=#datagrid>datagrid</a></code> itself if the <code><a href=#row>Row</a></code> object's
-      <code><a href=#rowid>RowID</a></code> has length 0.</p>
+      <code>RowID</code> consisting of all but the last number in the
+      <code>Row</code> object's <code>RowID</code>, or the
+      <code>datagrid</code> itself if the <code>Row</code> object's
+      <code>RowID</code> has length 0.</p>
 
-      <p>If there is no such row present in the <a href=#natural-order-sparse-data-tree>natural order
-      sparse data tree</a>, then revert all the changes done in
-      this algorithm, throw a <code><a href=#datagrid_model_err>DATAGRID_MODEL_ERR</a></code>
+      <p>If there is no such row present in the <span>natural order
+      sparse data tree</span>, then revert all the changes done in
+      this algorithm, throw a <code>DATAGRID_MODEL_ERR</code>
       exception, and abort these steps.</p>
 
      </li>
@@ -38294,149 +38439,165 @@
       <p>Increment by one the natural order position of all rows whose
       parent is <var title="">parent</var> and whose natural order
       position is equal to or greater than the last number of the
-      <code><a href=#row>Row</a></code> object's <code><a href=#rowid>RowID</a></code>.</p>
+      <code>Row</code> object's <code>RowID</code>.</p>
 
      </li>
 
      <li>
 
-      <p>If the value of the <code><a href=#row>Row</a></code> object's second entry is
-      not &minus;1, then increment by one the display order position
+      <p>If the value of the <code>Row</code> object's second entry is
+      not &#x2212;1, then increment by one the display order position
       of all rows whose parent is <var title="">parent</var> and whose
       display order position is equal to or greater than the value of
-      the <code><a href=#row>Row</a></code> object's second entry.</p>
+      the <code>Row</code> object's second entry.</p>
 
-     <!--(Not sure how to really say this.)
+     <!- -(Not sure how to really say this.)
       <p>Update the <span>pending <code>datagrid</code> rows
       list</span> and the <span>pending <code>datagrid</code> cells
       list</span> accordingly.</p>
-     -->
+     - ->
 
      </li>
 
      <li>
 
-      <p>Create a row and insert it into the <a href=#natural-order-sparse-data-tree>natural order
-      sparse data tree</a>, such that its parent is <var title="">parent</var>; with its natural order position being the
-      last number of the <code><a href=#row>Row</a></code> object's <code><a href=#rowid>RowID</a></code>;
+      <p>Create a row and insert it into the <span>natural order
+      sparse data tree</span>, such that its parent is <var
+      title="">parent</var>; with its natural order position being the
+      last number of the <code>Row</code> object's <code>RowID</code>;
       with the child count being the value of the third entry of the
-      <code><a href=#row>Row</a></code> object; with the row being marked closed unless
-      the <code><a href=#row>Row</a></code> object has five or more entries and its
+      <code>Row</code> object; with the row being marked closed unless
+      the <code>Row</code> object has five or more entries and its
       fifth entry is true, in which case the row is open; and with its
-      row count being &minus;1 unless the <code><a href=#row>Row</a></code> object has
+      row count being &#x2212;1 unless the <code>Row</code> object has
       six entries, in which case the row count is equal to the value
-      of the <code><a href=#row>Row</a></code> object's sixth entry.</p>
+      of the <code>Row</code> object's sixth entry.</p>
 
      </li>
 
-    </ol></li>
+    </ol>
 
+   </li>
+
    <li>
 
-    <p>For each <code><a href=#row>Row</a></code> object in the <var title="">rows</var> argument, in order, <a href=#apply-a-row-object title="apply a Row
-    object">apply the <code>Row</code> object</a>.</p>
+    <p>For each <code>Row</code> object in the <var
+    title="">rows</var> argument, in order, <span title="apply a Row
+    object">apply the <code>Row</code> object</span>.</p>
 
    </li>
 
    <li>
 
-    <p>Invoke the <a href=#datagrid-update-display-algorithm><code>datagrid</code> update display
-    algorithm</a>.</p>
+    <p>Invoke the <span><code>datagrid</code> update display
+    algorithm</span>.</p>
 
    </li>
 
-  </ol><hr><p>When an algorithm requires the user agent to <dfn id=type-check-a-rowlist-object>type-check a
+  </ol>
+
+  <hr>
+
+  <p>When an algorithm requires the user agent to <dfn>type-check a
   <code>RowList</code> object</dfn> (an array), each entry in the
   object must be checked against the following requirements. If any
   are false, then the type-check fails, otherwise it passes.</p>
 
-  <ul><li><p>The entry is a <code><a href=#row>Row</a></code> object (an
-   array).</li>
+  <ul>
 
-   <li><p>The first value in the <code><a href=#row>Row</a></code> is a
-   <code><a href=#rowid>RowID</a></code> object (also an array), whose length is at least
+   <li><p>The entry is a <code>Row</code> object (an
+   array).</p></li>
+
+   <li><p>The first value in the <code>Row</code> is a
+   <code>RowID</code> object (also an array), whose length is at least
    1, and whose values are all integers greater than or equal to
-   zero.</li>
+   zero.</p></li>
 
-   <li><p>The numbers in the <code><a href=#rowid>RowID</a></code> object do not exactly
-   match any of the other entries in the <code><a href=#rowlist>RowList</a></code> object
-   (i.e. no two <code><a href=#row>Row</a></code> objects have the same
-   identifier).</li>
+   <li><p>The numbers in the <code>RowID</code> object do not exactly
+   match any of the other entries in the <code>RowList</code> object
+   (i.e. no two <code>Row</code> objects have the same
+   identifier).</p></li>
 
-   <li><p>The second value in the <code><a href=#row>Row</a></code> is an integer that
-   is either &minus;1, zero, or a positive integer.</li>
+   <li><p>The second value in the <code>Row</code> is an integer that
+   is either &#x2212;1, zero, or a positive integer.</p></li>
 
-   <li><p>The third value in the <code><a href=#row>Row</a></code> is an integer that
-   is either &minus;1, zero, or a positive integer.</li>
+   <li><p>The third value in the <code>Row</code> is an integer that
+   is either &#x2212;1, zero, or a positive integer.</p></li>
 
-   <li><p>The fourth value in the <code><a href=#row>Row</a></code> is a
-   <code><a href=#celllist>CellList</a></code> object (yet another array).</li>
+   <li><p>The fourth value in the <code>Row</code> is a
+   <code>CellList</code> object (yet another array).</p></li>
 
-   <li><p>Each entry in the <a href=#celllist>CellList</a> object is a
-   <code><a href=#cell>Cell</a></code> object (again, an array).</li>
+   <li><p>Each entry in the <span>CellList</span> object is a
+   <code>Cell</code> object (again, an array).</p></li>
 
-   <li><p>Each <code><a href=#cell>Cell</a></code> object in the <a href=#celllist>CellList</a>
-   object has as its first value a <code><a href=#column>Column</a></code> object (a
+   <li><p>Each <code>Cell</code> object in the <span>CellList</span>
+   object has as its first value a <code>Column</code> object (a
    string), and its value is the identifier of one of the columns in
-   the <a href=#column-list>column list</a>.</li>
+   the <span>column list</span>.</p></li>
 
    <li>
 
-    <p>Each <code><a href=#cell>Cell</a></code> object in the <a href=#celllist>CellList</a>
+    <p>Each <code>Cell</code> object in the <span>CellList</span>
     object has as its second and subsequent entries values that match
     the following requirements, as determined by the type of the
     column identified by the first entry:</p>
 
-    <dl><dt>If the column's type is <code title=datagrid-type-text><a href=#datagrid-type-text>text</a></code></dt>
+    <dl>
+
+     <dt>If the column's type is <code title="datagrid-type-text">text</code></dt>
      <dd>
 
       <p>The second entry's value is a string, and either there are
       only two entries, or there are three, and the third entry is
-      an <code><a href=#the-img-element>img</a></code> element.</p>
+      an <code>img</code> element.</p>
 
-      <p>If there is an <code><a href=#the-img-element>img</a></code> element specified, its <code title=dom-img-complete><a href=#dom-img-complete>complete</a></code> attribute is true.</p>
+      <p>If there is an <code>img</code> element specified, its <code
+      title="dom-img-complete">complete</code> attribute is true.</p>
 
      </dd>
 
-     <dt>If the column's type is <code title=datagrid-type-editable><a href=#datagrid-type-editable>editable</a></code></dt>
+     <dt>If the column's type is <code title="datagrid-type-editable">editable</code></dt>
      <dd>
 
       <p>The second entry's value is a string, and either there are
       only two entries, or the third entry is a
-      <code><a href=#the-datalist-element>datalist</a></code> element, and either there are only three
+      <code>datalist</code> element, and either there are only three
       entries, or there are four, and the fourth entry is an
-      <code><a href=#the-img-element>img</a></code> element.</p>
+      <code>img</code> element.</p>
 
-      <p>If there is an <code><a href=#the-img-element>img</a></code> element specified, its <code title=dom-img-complete><a href=#dom-img-complete>complete</a></code> attribute is true.</p>
+      <p>If there is an <code>img</code> element specified, its <code
+      title="dom-img-complete">complete</code> attribute is true.</p>
 
      </dd>
 
-     <dt>If the column's type is <code title=datagrid-type-checkable><a href=#datagrid-type-checkable>checkable</a></code></dt>
+     <dt>If the column's type is <code title="datagrid-type-checkable">checkable</code></dt>
      <dd>
 
       <p>The second entry's value is a string, the third entry is a
       boolean, and either there are only three entries, or the
       fourth entry is also a boolean, and either there are only four
       entries, or there are five, and the fifth entry is an
-      <code><a href=#the-img-element>img</a></code> element.</p>
+      <code>img</code> element.</p>
 
-      <p>If there is an <code><a href=#the-img-element>img</a></code> element specified, its <code title=dom-img-complete><a href=#dom-img-complete>complete</a></code> attribute is true.</p>
+      <p>If there is an <code>img</code> element specified, its <code
+      title="dom-img-complete">complete</code> attribute is true.</p>
 
      </dd>
 
-     <dt>If the column's type is <code title=datagrid-type-list><a href=#datagrid-type-list>list</a></code></dt>
+     <dt>If the column's type is <code title="datagrid-type-list">list</code></dt>
      <dd>
 
       <p>The second entry's value is a string, the third entry is a
-      <code><a href=#the-select-element>select</a></code> element, and either there are only three
+      <code>select</code> element, and either there are only three
       entries, or there are four, and the fourth entry is an
-      <code><a href=#the-img-element>img</a></code> element.</p>
+      <code>img</code> element.</p>
 
-      <p>If there is an <code><a href=#the-img-element>img</a></code> element specified, its <code title=dom-img-complete><a href=#dom-img-complete>complete</a></code> attribute is true.</p>
+      <p>If there is an <code>img</code> element specified, its <code
+      title="dom-img-complete">complete</code> attribute is true.</p>
 
      </dd>
 
-     <dt>If the column's type is <code title=datagrid-type-progress><a href=#datagrid-type-progress>progress</a></code></dt>
+     <dt>If the column's type is <code title="datagrid-type-progress">progress</code></dt>
      <dd>
 
       <p>There are only two entries, the second entry's value is a
@@ -38445,14 +38606,16 @@
 
      </dd>
 
-     <dt>If the column's type is <code title=datagrid-type-meter><a href=#datagrid-type-meter>meter</a></code></dt>
+     <dt>If the column's type is <code title="datagrid-type-meter">meter</code></dt>
      <dd>
 
       <p>There are at least two, but possibly up to seven, entries,
       all entries but the first one are numbers, and the following
       relationships hold:</p>
 
-      <ul class=brief><li>The second entry is less than the third, or less than 1.0
+      <ul class="brief">
+
+       <li>The second entry is less than the third, or less than 1.0
        if the third is absent.</li>
 
        <li>The second entry is greater than the fourth, or greater
@@ -38471,9 +38634,11 @@
        <li>If there are at least seven entries, the fifth is not
        greater than the third and not less than the fourth.</li>
 
-      </ul></dd>
+      </ul>
 
-     <dt>If the column's type is <code title=datagrid-type-custom><a href=#datagrid-type-custom>custom</a></code></dt>
+     </dd>
+
+     <dt>If the column's type is <code title="datagrid-type-custom">custom</code></dt>
      <dd>
 
       <p>There are four entries, the second and third are numbers
@@ -38483,21 +38648,25 @@
 
      </dd>
 
-    </dl></li>
+    </dl>
 
-   <li><p>Either there are only four values in the <code><a href=#row>Row</a></code>,
-   or the fifth value in the <code><a href=#row>Row</a></code> is a boolean.</li>
+   </li>
 
+   <li><p>Either there are only four values in the <code>Row</code>,
+   or the fifth value in the <code>Row</code> is a boolean.</p></li>
+
    <li><p>Either there are only four or five values in the
-   <code><a href=#row>Row</a></code>, or there are six, and the sixth value in the
-   <code><a href=#row>Row</a></code> an integer that is greater than or equal to
-   zero.</li>
+   <code>Row</code>, or there are six, and the sixth value in the
+   <code>Row</code> an integer that is greater than or equal to
+   zero.</p></li>
 
-  </ul><p>Where the above requirements say that a value is to be a string,
+  </ul>
+
+  <p>Where the above requirements say that a value is to be a string,
   the user agent must apply the ToString() conversion operator to the
   value, assume that the value was indeed a string, and use the result
   in the rest of the algorithm as if it had that had been the value
-  passed to the method. <a href=#refsECMA262>[ECMA262]</a></p>
+  passed to the method. <a href="#refsECMA262">[ECMA262]</a></p>
 
   <p>Where the above requirements say that a value is to be a number,
   the user agent must first apply the ToNumber() conversion operator
@@ -38505,82 +38674,101 @@
   value nor a Not-a-Number (NaN) value. If this result is indeed
   acceptable (i.e. finite), the user agent must use the result in the
   rest of the algorithm as if it had that had been the value passed to
-  the method. <a href=#refsECMA262>[ECMA262]</a></p>
+  the method. <a href="#refsECMA262">[ECMA262]</a></p>
 
   <p>Where the above requirements say that a value is to be an
   integer, the user agent must first apply the ToNumber() conversion
   operator to the value, and then verify that the result is a finite
   integer. If so, the user agent must use the result in the rest of
   the algorithm as if it had that had been the value passed to the
-  method. <a href=#refsECMA262>[ECMA262]</a></p>
+  method. <a href="#refsECMA262">[ECMA262]</a></p>
 
   <p>Where the above requirements say that a value is to be a boolean,
   the user agent must apply the ToBoolean() conversion operator to the
   value, assume that the value was indeed a boolean, and use the
   result in the rest of the algorithm as if it had that had been the
-  value passed to the method. <a href=#refsECMA262>[ECMA262]</a></p>
+  value passed to the method. <a href="#refsECMA262">[ECMA262]</a></p>
 
-  <hr><p>When an algorithm requires the user agent to <dfn id=audit-the-datagrid>audit the
-  <code>datagrid</code></dfn>, the <code><a href=#datagrid>datagrid</a></code> must be
+  <hr>
+
+  <p>When an algorithm requires the user agent to <dfn>audit the
+  <code>datagrid</code></dfn>, the <code>datagrid</code> must be
   checked against the following requirements. If any are false, then
   the audit fails, otherwise it passes.</p>
 
-  <ul><li>There is no row whose natural order position is greater than or
-   equal to the child count of its parent row in the <a href=#natural-order-sparse-data-tree>natural
-   order sparse data tree</a>.</li>
+  <ul>
 
+   <li>There is no row whose natural order position is greater than or
+   equal to the child count of its parent row in the <span>natural
+   order sparse data tree</span>.</li>
+
    <li>There is no row whose display order position is greater than or
-   equal to the child count of its parent row in the <a href=#display-order-sparse-data-tree>display
-   order sparse data tree</a>.</li>
+   equal to the child count of its parent row in the <span>display
+   order sparse data tree</span>.</li>
 
    <li>There is no row such that the sum of that row's child count and
    the row counts all the open rows that are direct children of that
-   row in the <a href=#natural-order-sparse-data-tree>natural order sparse data tree</a> is less than
+   row in the <span>natural order sparse data tree</span> is less than
    that row's row count.</li>
 
    <li>Of the rows whose child count is equal to the number of rows
-   that are direct children of that row in the <a href=#natural-order-sparse-data-tree>natural order
-   sparse data tree</a>, there is none such that the sum of that
+   that are direct children of that row in the <span>natural order
+   sparse data tree</span>, there is none such that the sum of that
    row's child count and the row counts of all the open rows that are
-   direct children of that row in the <a href=#natural-order-sparse-data-tree>natural order sparse data
-   tree</a> is greater than that row's row count.</li>
+   direct children of that row in the <span>natural order sparse data
+   tree</span> is greater than that row's row count.</li>
 
-  </ul><p>For the purposes of this audit, the <code><a href=#datagrid>datagrid</a></code> must be
+  </ul>
+
+  <p>For the purposes of this audit, the <code>datagrid</code> must be
   treated as the parent row of all the rows that are direct children
-  of the <code><a href=#datagrid>datagrid</a></code> in the <a href=#natural-order-sparse-data-tree>natural order sparse data
-  tree</a> and the <a href=#display-order-sparse-data-tree>display order sparse data tree</a>. The
-  child count of this implied row is the <a href=#datagrid-child-count><code>datagrid</code>
-  child count</a>, and the row count of this implied row is the
-  <a href=#datagrid-row-count><code>datagrid</code> row count</a>.</p>
+  of the <code>datagrid</code> in the <span>natural order sparse data
+  tree</span> and the <span>display order sparse data tree</span>. The
+  child count of this implied row is the <span><code>datagrid</code>
+  child count</span>, and the row count of this implied row is the
+  <span><code>datagrid</code> row count</span>.</p>
 
-  <hr><p>When an algorithm requires the user agent to <dfn id=partially-sort-a-rowlist-object>partially sort
+  <hr>
+
+  <p>When an algorithm requires the user agent to <dfn>partially sort
   a <code>RowList</code> object</dfn> (an array), the entries in the
-  object must be resorted such that <code><a href=#row>Row</a></code> objects are
+  object must be resorted such that <code>Row</code> objects are
   listed after any of their ancestors and after any of their earlier
-  siblings. In other words, for any two <code><a href=#row>Row</a></code> objects <var title="">a</var> and <var title="">b</var> in the
-  <code><a href=#rowlist>RowList</a></code>, where <var title="">a</var> is before <var title="">b</var> after the sort, the following conditions must
+  siblings. In other words, for any two <code>Row</code> objects <var
+  title="">a</var> and <var title="">b</var> in the
+  <code>RowList</code>, where <var title="">a</var> is before <var
+  title="">b</var> after the sort, the following conditions must
   hold:</p>
 
-  <ul><li><p>If their <code><a href=#rowid>RowID</a></code> objects are the same length and
+  <ul>
+
+   <li><p>If their <code>RowID</code> objects are the same length and
    have values that are equal except for the last value, then the last
-   value of <var title="">a</var>'s <code><a href=#rowid>RowID</a></code>'s last value
-   must be less than <var title="">b</var>'s <code><a href=#rowid>RowID</a></code>'s last
+   value of <var title="">a</var>'s <code>RowID</code>'s last value
+   must be less than <var title="">b</var>'s <code>RowID</code>'s last
    value (i.e. earlier siblings must come before their later
-   siblings).</li>
+   siblings).</p></li>
 
-   <li><p>If their <code><a href=#rowid>RowID</a></code> objects are not the same length,
+   <li><p>If their <code>RowID</code> objects are not the same length,
    but the values in the shorter of the two are the same as the first
    few values in the longer one, then <var title="">a</var>'s
-   <code><a href=#rowid>RowID</a></code> must be the shorter one (i.e. ancestors must
-   come before their descendants).</li>
+   <code>RowID</code> must be the shorter one (i.e. ancestors must
+   come before their descendants).</p></li>
 
-  </ul><hr><p>The <dfn id=dom-datagrid-deleterows title=dom-datagrid-deleteRows><code>deleteRows(<var title="">rows</var>)</code></dfn> method must run the following
+  </ul>
+
+  <hr>
+
+  <p>The <dfn title="dom-datagrid-deleteRows"><code>deleteRows(<var
+  title="">rows</var>)</code></dfn> method must run the following
   steps:</p>
 
-  <ol><li>
+  <ol>
 
+   <li>
+
     <p>If any of the entries in <var title="">rows</var> are not
-    <code><a href=#rowid>RowID</a></code> objects consisting of one or more entries whose
+    <code>RowID</code> objects consisting of one or more entries whose
     values are all integers that are greater than or equal to zero,
     then throw a <code>TypeError</code> exception and abort these
     steps.</p>
@@ -38589,15 +38777,17 @@
     apply the ToNumber() conversion operator to the value, and then
     verify that the result is a finite integer. If so, the user agent
     must use the result in the rest of the algorithm as if it had that
-    had been the value passed to the method. <a href=#refsECMA262>[ECMA262]</a></p>
+    had been the value passed to the method. <a
+    href="#refsECMA262">[ECMA262]</a></p>
 
    </li>
 
    <li>
 
-    <p>If any of the <code><a href=#rowid>RowID</a></code> objects in the <var title="">rows</var> argument identify a row that isn't present in
-    the <a href=#natural-order-sparse-data-tree>natural order sparse data tree</a>, then throw a
-    <code><a href=#datagrid_model_err>DATAGRID_MODEL_ERR</a></code> exception and abort these
+    <p>If any of the <code>RowID</code> objects in the <var
+    title="">rows</var> argument identify a row that isn't present in
+    the <span>natural order sparse data tree</span>, then throw a
+    <code>DATAGRID_MODEL_ERR</code> exception and abort these
     steps.</p>
 
    </li>
@@ -38605,7 +38795,7 @@
    <li>
 
     <p>If any row is listed twice in the <var title="">rows</var>
-    argument, then throw a <code><a href=#datagrid_model_err>DATAGRID_MODEL_ERR</a></code> exception
+    argument, then throw a <code>DATAGRID_MODEL_ERR</code> exception
     and abort these steps.</p>
 
    </li>
@@ -38615,7 +38805,7 @@
     <p>Sort the <var title="">rows</var> argument such that the
     entries are given in the same order as the rows they identify
     would be visited in a pre-order, depth first traversal of the
-    <a href=#natural-order-sparse-data-tree>natural order sparse data tree</a>.</p>
+    <span>natural order sparse data tree</span>.</p>
 
    </li>
 
@@ -38624,12 +38814,14 @@
     <p>For each row identified by entries in <var title="">rows</var>,
     <em>in reverse order</em>, run the following steps:</p>
 
-    <ol><li>
+    <ol>
 
+     <li>
+
       <p>Decrement the child count of the row's parent row, if that
       child count is greater than zero. If the row has no parent,
-      decrement the <a href=#datagrid-child-count><code>datagrid</code> child
-      count</a>.</p>
+      decrement the <span><code>datagrid</code> child
+      count</span>.</p>
 
       <p>If the row has a parent row, and its child count is now zero,
       then close that row.</p>
@@ -38661,8 +38853,10 @@
      <li>
 
       <p>If <var title="">ancestor</var> is null, then decrement the
-      <a href=#datagrid-row-count><code>datagrid</code> row count</a> by <var title="">delta</var>. Otherwise, if <var title="">ancestor</var>
-      is open, then decrement its row count by <var title="">delta</var>.</p>
+      <span><code>datagrid</code> row count</span> by <var
+      title="">delta</var>. Otherwise, if <var title="">ancestor</var>
+      is open, then decrement its row count by <var
+      title="">delta</var>.</p>
 
      </li>
 
@@ -38676,7 +38870,7 @@
      <li>
 
       <p>Let <var title="">parent</var> be the row's parent, or the
-      <code><a href=#datagrid>datagrid</a></code> if the row has no parent.</p>
+      <code>datagrid</code> if the row has no parent.</p>
 
      </li>
 
@@ -38691,8 +38885,8 @@
 
      <li>
 
-      <p>If the row is in the <a href=#display-order-sparse-data-tree>display order sparse data
-      tree</a>, then decrement by one the display order position of
+      <p>If the row is in the <span>display order sparse data
+      tree</span>, then decrement by one the display order position of
       all rows whose parent is <var title="">parent</var> and whose
       display order position is equal to or greater than the row's own
       display order position.</p>
@@ -38702,112 +38896,135 @@
      <li>
 
       <p>Clear the row and its descendants from the
-      <code><a href=#datagrid>Datagrid</a></code>.</p>
+      <code>Datagrid</code>.</p>
 
      </li>
 
-    </ol></li>
+    </ol>
 
+   </li>
+
    <li>
 
-    <p>Invoke the <a href=#datagrid-update-display-algorithm><code>datagrid</code> update display
-    algorithm</a>.</p>
+    <p>Invoke the <span><code>datagrid</code> update display
+    algorithm</span>.</p>
 
    </li>
 
-  </ol><hr><p>The <dfn id=dom-datagrid-clearrows title=dom-datagrid-clearRows><code>clearRows()</code></dfn> method
-  must empty the <a href=#natural-order-sparse-data-tree>natural order sparse data tree</a>, reset
-  both the <a href=#datagrid-child-count><code>datagrid</code> child count</a> and the
-  <a href=#datagrid-row-count><code>datagrid</code> row count</a> to zero, and invoke the
-  <a href=#datagrid-update-display-algorithm><code>datagrid</code> update display algorithm</a>.</p>
+  </ol>
 
-  <hr><p>The <dfn id=dom-datagrid-repaint title=dom-datagrid-repaint><code>repaint(<var title="">row</var>, <var title="">column</var>)</code></dfn> method
+  <hr>
+
+  <p>The <dfn
+  title="dom-datagrid-clearRows"><code>clearRows()</code></dfn> method
+  must empty the <span>natural order sparse data tree</span>, reset
+  both the <span><code>datagrid</code> child count</span> and the
+  <span><code>datagrid</code> row count</span> to zero, and invoke the
+  <span><code>datagrid</code> update display algorithm</span>.</p>
+
+  <hr>
+
+  <p>The <dfn title="dom-datagrid-repaint"><code>repaint(<var
+  title="">row</var>, <var title="">column</var>)</code></dfn> method
   must cause the user agent to clear its cache for the cell specified
-  by the identifier <var title="">row</var> and the column <var title="">column</var>, if that column's type is <code title=datagrid-type-custom><a href=#datagrid-type-custom>custom</a></code>. If the given column has
-  not been declared, or its type is not <code title=datagrid-type-custom><a href=#datagrid-type-custom>custom</a></code>, then the user agent must
-  throw a <code><a href=#datagrid_model_err>DATAGRID_MODEL_ERR</a></code> exception. If the given row
+  by the identifier <var title="">row</var> and the column <var
+  title="">column</var>, if that column's type is <code
+  title="datagrid-type-custom">custom</code>. If the given column has
+  not been declared, or its type is not <code
+  title="datagrid-type-custom">custom</code>, then the user agent must
+  throw a <code>DATAGRID_MODEL_ERR</code> exception. If the given row
   is not known, then the method must do nothing. If the cell is indeed
   cleared, the user agent must reinvoke the previously registered
-  <code><a href=#renderingcontext2dcallback>RenderingContext2DCallback</a></code> callback when it needs to
+  <code>RenderingContext2DCallback</code> callback when it needs to
   repaint that row.</p>
 
-  <hr><p>If a row has a child count that isn't zero, then the user agent
+  <hr>
+
+  <p>If a row has a child count that isn't zero, then the user agent
   should offer to the user the option of opening and closing the
   row.</p>
 
   <p>When a row is opened, if the row's row count is greater than
   zero, then the user agent must increase the
-  <a href=#datagrid-row-count><code>datagrid</code> row count</a> and the row counts of
+  <span><code>datagrid</code> row count</span> and the row counts of
   any ancestor rows by the number of rows that the newly opened row
-  has in its row count<!-- we should also "update the <span>pending
+  has in its row count<!- - we should also "update the <span>pending
   <code>datagrid</code> rows list</span> and the <span>pending
-  <code>datagrid</code> cells list</span> accordingly" -->, then must
-  mark the row as open, then may fill in the <a href=#display-order-sparse-data-tree>display order
-  sparse data tree</a> with any information that the user agent has
+  <code>datagrid</code> cells list</span> accordingly" - ->, then must
+  mark the row as open, then may fill in the <span>display order
+  sparse data tree</span> with any information that the user agent has
   cached about the display order positions of descendants of the newly
-  opened row, and then must invoke the <code title=dom-listener-rowOpened><a href=#dom-listener-rowopened>rowOpened()</a></code> method on the
-  current <code title=dom-datagrid-listener><a href=#dom-datagrid-listener>listener</a></code> with as
-  its first argument a <code><a href=#rowid>RowID</a></code> object identifying the row
+  opened row, and then must invoke the <code
+  title="dom-listener-rowOpened">rowOpened()</code> method on the
+  current <code title="dom-datagrid-listener">listener</code> with as
+  its first argument a <code>RowID</code> object identifying the row
   that was opened and as its second argument the boolean false, and
-  then must invoke the <a href=#datagrid-update-display-algorithm><code>datagrid</code> update display
-  algorithm</a>.</p>
+  then must invoke the <span><code>datagrid</code> update display
+  algorithm</span>.</p>
 
   <p>On the other hand, when a row is opened and the row's row count
-  is &minus;1, then the user agent must mark the row as opening, and
-  then must invoke the <code title=dom-listener-rowOpened><a href=#dom-listener-rowopened>rowOpened()</a></code> method on the
-  current <code title=dom-datagrid-listener><a href=#dom-datagrid-listener>listener</a></code> with as
-  its first argument a <code><a href=#rowid>RowID</a></code> object identifying the row
+  is &#x2212;1, then the user agent must mark the row as opening, and
+  then must invoke the <code
+  title="dom-listener-rowOpened">rowOpened()</code> method on the
+  current <code title="dom-datagrid-listener">listener</code> with as
+  its first argument a <code>RowID</code> object identifying the row
   that was opened and as its second argument the boolean true.</p>
 
   <p>When a row is closed, the user agent must decrease the
-  <a href=#datagrid-row-count><code>datagrid</code> row count</a> and the row counts of
+  <span><code>datagrid</code> row count</span> and the row counts of
   any ancestor rows by the number of rows that the newly closed row
-  has in its row count, and then must invoke the <code title=dom-listener-rowOpened><a href=#dom-listener-rowopened>rowOpened()</a></code> method on the
-  current <code title=dom-datagrid-listener><a href=#dom-datagrid-listener>listener</a></code> with as
-  its first and only argument a <code><a href=#rowid>RowID</a></code> object identifying
+  has in its row count, and then must invoke the <code
+  title="dom-listener-rowOpened">rowOpened()</code> method on the
+  current <code title="dom-datagrid-listener">listener</code> with as
+  its first and only argument a <code>RowID</code> object identifying
   the row that was opened.</p>
 
 
 
-  <h6 id=the-cells><span class=secno>4.11.2.2.4 </span>The cells</h6>
+  <h6>The cells</h6>
 
   <p>Each row has one cell per column. Each cell has the same type as
-  its column. The <dfn id=allowed-datagrid-column-types>allowed <code>datagrid</code> column
+  its column. The <dfn>allowed <code>datagrid</code> column
   types</dfn>, what they represent, and the requirements for when the
   user interacts with them, are as follows:</p>
 
-  <dl><dt><dfn id=datagrid-type-text title=datagrid-type-text><code>text</code></dfn></dt>
+  <dl>
+
+   <dt><dfn title="datagrid-type-text"><code>text</code></dfn></dt>
    <dd>
 
     <p>The cell represents some text and an optional image.</p>
 
    </dd>
 
-   <dt><dfn id=datagrid-type-editable title=datagrid-type-editable><code>editable</code></dfn></dt>
+   <dt><dfn title="datagrid-type-editable"><code>editable</code></dfn></dt>
    <dd>
 
     <p>The cells represents some editable text, an optional
-    <code><a href=#the-datalist-element>datalist</a></code> giving autocompletion hints, and an
+    <code>datalist</code> giving autocompletion hints, and an
     optional image.</p>
 
-    <p>If there is a <code><a href=#the-datalist-element>datalist</a></code> element, the user agent
+    <p>If there is a <code>datalist</code> element, the user agent
     should offer the suggestions represented by that element to the
-    user. The user agent may use the suggestion's <a href=#concept-option-label title=concept-option-label>label</a> to identify the
+    user. The user agent may use the suggestion's <span
+    title="concept-option-label">label</span> to identify the
     suggestion. If the user selects a suggestion, then the editable
-    text must be set to the selected suggestion's <a href=#concept-option-value title=concept-option-value>value</a>, as if the user had
+    text must be set to the selected suggestion's <span
+    title="concept-option-value">value</span>, as if the user had
     written that value himself.</p>
 
     <p>When the user edits the value, either directly or using the
-    <code><a href=#the-datalist-element>datalist</a></code>, the user agent must invoke the <code title=dom-listener-cellChanged><a href=#dom-listener-cellchanged>cellChanged()</a></code> method on
-    the current <code title=dom-datagrid-listener><a href=#dom-datagrid-listener>listener</a></code>
-    with as its first argument a <code><a href=#rowid>RowID</a></code> identifying the
+    <code>datalist</code>, the user agent must invoke the <code
+    title="dom-listener-cellChanged">cellChanged()</code> method on
+    the current <code title="dom-datagrid-listener">listener</code>
+    with as its first argument a <code>RowID</code> identifying the
     cell's row, as its second argument the identifier of the cell's
     column, as its third argument the new value, and as its fourth
     argument the previous value.</p>
 
    </dd>
 
-   <dt><dfn id=datagrid-type-checkable title=datagrid-type-checkable><code>checkable</code></dfn></dt>
+   <dt><dfn title="datagrid-type-checkable"><code>checkable</code></dfn></dt>
    <dd>
 
     <p>The cell represents some text, a check box that optionally has
@@ -38816,9 +39033,10 @@
     <p>When the user checks or unchecks the check box, the user agent
     must change the check box's state appropriately and stop obscuring
     the check box as indeterminate (if it is obscuring it), and then
-    must invoke the <code title=dom-listener-cellChanged><a href=#dom-listener-cellchanged>cellChanged()</a></code> method on
-    the current <code title=dom-datagrid-listener><a href=#dom-datagrid-listener>listener</a></code>
-    with as its first argument a <code><a href=#rowid>RowID</a></code> identifying the
+    must invoke the <code
+    title="dom-listener-cellChanged">cellChanged()</code> method on
+    the current <code title="dom-datagrid-listener">listener</code>
+    with as its first argument a <code>RowID</code> identifying the
     cell's row, as its second argument the identifier of the cell's
     column, as its third argument true if the check box is now checked
     and false otherwise, and as its fourth argument true if the check
@@ -38826,32 +39044,35 @@
 
    </dd>
 
-   <dt><dfn id=datagrid-type-list title=datagrid-type-list><code>list</code></dfn></dt>
+   <dt><dfn title="datagrid-type-list"><code>list</code></dfn></dt>
    <dd>
 
     <p>The cell represents some text giving the current value selected
-    from a dropdown list of options, a <code><a href=#the-select-element>select</a></code> element
+    from a dropdown list of options, a <code>select</code> element
     giving the list of options, and an optional image.</p>
 
     <p>The user agent should allow the user to change the value of the
-    cell from its current value to one of the <a href=#concept-option-value title=concept-option-value>values</a> given by
-    <code><a href=#the-option-element>option</a></code> elements in the <a href=#concept-select-option-list title=concept-select-option-list>list of options</a> (if
-    any). The user agent may use the <code><a href=#the-option-element>option</a></code> elements'
-    <a href=#concept-option-label title=concept-option-label>labels</a> to annotate each
+    cell from its current value to one of the <span
+    title="concept-option-value">values</span> given by
+    <code>option</code> elements in the <span
+    title="concept-select-option-list">list of options</span> (if
+    any). The user agent may use the <code>option</code> elements'
+    <span title="concept-option-label">labels</span> to annotate each
     option.</p>
 
-    <p>When the user selects a new value from the <code><a href=#the-select-element>select</a></code>
-    element's <a href=#concept-select-option-list title=concept-select-option-list>list of
-    options</a>, the user agent must invoke the <code title=dom-listener-cellChanged><a href=#dom-listener-cellchanged>cellChanged()</a></code> method on
-    the current <code title=dom-datagrid-listener><a href=#dom-datagrid-listener>listener</a></code>
-    with as its first argument a <code><a href=#rowid>RowID</a></code> identifying the
+    <p>When the user selects a new value from the <code>select</code>
+    element's <span title="concept-select-option-list">list of
+    options</span>, the user agent must invoke the <code
+    title="dom-listener-cellChanged">cellChanged()</code> method on
+    the current <code title="dom-datagrid-listener">listener</code>
+    with as its first argument a <code>RowID</code> identifying the
     cell's row, as its second argument the identifier of the cell's
     column, as its third argument the new value, and as its fourth
     argument the previous value.</p>
 
    </dd>
 
-   <dt><dfn id=datagrid-type-progress title=datagrid-type-progress><code>progress</code></dfn></dt>
+   <dt><dfn title="datagrid-type-progress"><code>progress</code></dfn></dt>
    <dd>
 
     <p>The cell represents a (determinate) progress bar whose value is
@@ -38860,7 +39081,7 @@
 
    </dd>
 
-   <dt><dfn id=datagrid-type-meter title=datagrid-type-meter><code>meter</code></dfn></dt>
+   <dt><dfn title="datagrid-type-meter"><code>meter</code></dfn></dt>
    <dd>
 
     <p>The cell represents a gauge, described by one to six
@@ -38884,7 +39105,7 @@
     number. Otherwise, the optimum point is the midpoint between the
     minimum value and the maximum value.</p>
 
-    <!-- next two paragraphs copied from <meter>: -->
+    <!- - next two paragraphs copied from <meter>: - ->
 
     <p>If the optimum point is equal to the low boundary or the high
     boundary, or anywhere in between them, then the region between the
@@ -38910,31 +39131,31 @@
 
    </dd>
 
-   <dt><dfn id=datagrid-type-custom title=datagrid-type-custom><code>custom</code></dfn></dt>
+   <dt><dfn title="datagrid-type-custom"><code>custom</code></dfn></dt>
    <dd>
 
     <p>The cell represents a dynamically generated graphical image.</p>
 
     <p>The cell will have minimum dimensions (specified in CSS
     pixels), and a callback (in the form of a
-    <code><a href=#renderingcontext2dcallback>RenderingContext2DCallback</a></code> object) to get a rendering
+    <code>RenderingContext2DCallback</code> object) to get a rendering
     for the cell.</p>
 
     <p>The user agent should not allow the cell to be rendered with
     dimensions less than the given minimum width and height.</p>
 
     <p>When the user agent needs to render the cell, the user agent
-    must <a href=#queue-a-task>queue a task</a> to invoke the
-    <a href=#renderingcontext2dcallback>RenderingContext2DCallback</a> callback, passing it a
-    newly created <code><a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a></code> object whose
-    <code title=dom-context-2d-canvas><a href=#dom-context-2d-canvas>canvas</a></code> DOM attribute is
+    must <span>queue a task</span> to invoke the
+    <span>RenderingContext2DCallback</span> callback, passing it a
+    newly created <code>CanvasRenderingContext2D</code> object whose
+    <code title="dom-context-2d-canvas">canvas</code> DOM attribute is
     null as the first argument, the actual cell width in CSS pixels as
     the second argument, and the actual cell height in CSS pixels as
     the third argument.</p>
 
     <p>If the user agent is able to render graphics, then it must
     render the graphics commands that the callback executed on the
-    provided <code><a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a></code> object onto the
+    provided <code>CanvasRenderingContext2D</code> object onto the
     cell once the callback returns. The image must be clipped to the
     dimensions of the cell. The coordinate space of the cell must be
     aligned with that used by the 2D context such that the top left
@@ -38946,229 +39167,252 @@
     space used by the 2D context).</p>
 
     <p>The user agent must then decouple the
-    <code><a href=#canvasrenderingcontext2d>CanvasRenderingContext2D</a></code> object and any objects that
-    it created (such as <code><a href=#canvaspattern>CanvasPattern</a></code> objects or
-    <code><a href=#imagedata>ImageData</a></code> objects) from any real drawing surface.</p>
+    <code>CanvasRenderingContext2D</code> object and any objects that
+    it created (such as <code>CanvasPattern</code> objects or
+    <code>ImageData</code> objects) from any real drawing surface.</p>
 
     <p>If the user agent is unable to render graphics, then it must
     render the text string returned by the callback instead.</p>
 
    </dd>
 
-  </dl><hr><p>When an algorithm requires the user agent to <dfn id=apply-a-row-object>apply a
+  </dl>
+
+  <hr>
+
+  <p>When an algorithm requires the user agent to <dfn>apply a
   <code>Row</code> object</dfn>, the user agent must run the following
   steps:</p>
 
-  <ol><li>
+  <ol>
 
-    <p>If the value of the <code><a href=#row>Row</a></code> object's second entry is
-    not &minus;1, then run these substeps:</p>
+   <li>
 
-    <ol><li><p>If there is a row with the same parent as the row
-     specified by the <code><a href=#row>Row</a></code> object's <code><a href=#rowid>RowID</a></code>
+    <p>If the value of the <code>Row</code> object's second entry is
+    not &#x2212;1, then run these substeps:</p>
+
+    <ol>
+
+     <li><p>If there is a row with the same parent as the row
+     specified by the <code>Row</code> object's <code>RowID</code>
      object, whose display order position is currently the same as the
-     value of the <code><a href=#row>Row</a></code> object's second entry, then remove
-     that row from the <a href=#display-order-sparse-data-tree>display order sparse data
-     tree</a>.</li>
+     value of the <code>Row</code> object's second entry, then remove
+     that row from the <span>display order sparse data
+     tree</span>.</p></li>
 
      <li><p>Set the display order position of the row specified by the
-     <code><a href=#row>Row</a></code> object's <code><a href=#rowid>RowID</a></code> to the value of the
-     <code><a href=#row>Row</a></code> object's second entry, updating its position in
-     the <a href=#display-order-sparse-data-tree>display order sparse data tree</a>
-     accordingly.</li>
+     <code>Row</code> object's <code>RowID</code> to the value of the
+     <code>Row</code> object's second entry, updating its position in
+     the <span>display order sparse data tree</span>
+     accordingly.</p></li>
 
-     <li><p>If the row is in the <a href=#pending-datagrid-rows-list>pending
-     <code>datagrid</code> rows list</a>, remove it.</li>
+     <li><p>If the row is in the <span>pending
+     <code>datagrid</code> rows list</span>, remove it.</p></li>
 
-    </ol></li>
+    </ol>
 
+   </li>
+
    <li>
 
-    <p>If the fourth entry in the <code><a href=#row>Row</a></code> object (a
-    <code><a href=#celllist>CellList</a></code> object, an array) is not empty, then for
-    each <code><a href=#cell>Cell</a></code> object in that array update the cell that
+    <p>If the fourth entry in the <code>Row</code> object (a
+    <code>CellList</code> object, an array) is not empty, then for
+    each <code>Cell</code> object in that array update the cell that
     corresponds to the column identified by the value of the first
-    entry of the <code><a href=#cell>Cell</a></code> object, by using the appropriate
+    entry of the <code>Cell</code> object, by using the appropriate
     set of steps given below as determined by the type of the
-    column. Then, if the cell is in the <a href=#pending-datagrid-cells-list>pending
-    <code>datagrid</code> cells list</a>, remove it.</p>
+    column. Then, if the cell is in the <span>pending
+    <code>datagrid</code> cells list</span>, remove it.</p>
 
-    <dl><dt>If the column's type is <code title=datagrid-type-text><a href=#datagrid-type-text>text</a></code></dt>
+    <dl>
+
+     <dt>If the column's type is <code title="datagrid-type-text">text</code></dt>
      <dd>
 
       <p>Update the cell's text to the value given in the
-      <code><a href=#cell>Cell</a></code> object's second entry.</p>
+      <code>Cell</code> object's second entry.</p>
 
-      <p>If the <code><a href=#cell>Cell</a></code> object has three entries, then copy
-      the image data from the <code><a href=#the-img-element>img</a></code> element given in the
+      <p>If the <code>Cell</code> object has three entries, then copy
+      the image data from the <code>img</code> element given in the
       third entry, and let the cell's image be given by that image
       data. Otherwise, update the cell to have no image.</p>
 
      </dd>
 
-     <dt>If the column's type is <code title=datagrid-type-editable><a href=#datagrid-type-editable>editable</a></code></dt>
+     <dt>If the column's type is <code title="datagrid-type-editable">editable</code></dt>
      <dd>
 
       <p>Update the cell's text to the value given in the
-      <code><a href=#cell>Cell</a></code> object's second entry.</p>
+      <code>Cell</code> object's second entry.</p>
 
-      <p>If the <code><a href=#cell>Cell</a></code> object has three entries, then let
-      the <code><a href=#the-datalist-element>datalist</a></code> element given in the third entry be
-      the <code><a href=#the-datalist-element>datalist</a></code> element giving autocompletion
+      <p>If the <code>Cell</code> object has three entries, then let
+      the <code>datalist</code> element given in the third entry be
+      the <code>datalist</code> element giving autocompletion
       hints. Otherwise, update the cell to have no
-      <code><a href=#the-datalist-element>datalist</a></code> element.</p>
+      <code>datalist</code> element.</p>
 
-      <p>If the <code><a href=#cell>Cell</a></code> object has four entries, then copy
-      the image data from the <code><a href=#the-img-element>img</a></code> element given in the
+      <p>If the <code>Cell</code> object has four entries, then copy
+      the image data from the <code>img</code> element given in the
       fourth entry, and let the cell's image be given by that image
       data. Otherwise, update the cell to have no image.</p>
 
      </dd>
 
-     <dt>If the column's type is <code title=datagrid-type-checkable><a href=#datagrid-type-checkable>checkable</a></code></dt>
+     <dt>If the column's type is <code title="datagrid-type-checkable">checkable</code></dt>
      <dd>
 
       <p>Update the cell's text to the value given in the
-      <code><a href=#cell>Cell</a></code> object's second entry.</p>
+      <code>Cell</code> object's second entry.</p>
 
       <p>Update the cell's checked state to match the value of the
       third entry: checked if true, unchecked otherwise.</p>
 
-      <p>If the <code><a href=#cell>Cell</a></code> object has four entries and the
+      <p>If the <code>Cell</code> object has four entries and the
       fourth entry is true, then update the cell to be obscured as
       indeterminate. Otherwise, the cell's state is not obscured.</p>
 
-      <p>If the <code><a href=#cell>Cell</a></code> object has five entries, then copy
-      the image data from the <code><a href=#the-img-element>img</a></code> element given in the
+      <p>If the <code>Cell</code> object has five entries, then copy
+      the image data from the <code>img</code> element given in the
       fifth entry, and let the cell's image be given by that image
       data. Otherwise, update the cell to have no image.</p>
 
      </dd>
 
-     <dt>If the column's type is <code title=datagrid-type-list><a href=#datagrid-type-list>list</a></code></dt>
+     <dt>If the column's type is <code title="datagrid-type-list">list</code></dt>
      <dd>
 
       <p>Update the cell's text to the value given in the
-      <code><a href=#cell>Cell</a></code> object's second entry, and the
-      <code><a href=#the-select-element>select</a></code> element to be the one given in the
-      <code><a href=#cell>Cell</a></code> object's third entry</p>
+      <code>Cell</code> object's second entry, and the
+      <code>select</code> element to be the one given in the
+      <code>Cell</code> object's third entry</p>
 
-      <p>If the <code><a href=#cell>Cell</a></code> object has four entries, then copy
-      the image data from the <code><a href=#the-img-element>img</a></code> element given in the
+      <p>If the <code>Cell</code> object has four entries, then copy
+      the image data from the <code>img</code> element given in the
       fourth entry, and let the cell's image be given by that image
       data. Otherwise, update the cell to have no image.</p>
 
      </dd>
 
-     <dt>If the column's type is <code title=datagrid-type-progress><a href=#datagrid-type-progress>progress</a></code></dt>
+     <dt>If the column's type is <code title="datagrid-type-progress">progress</code></dt>
      <dd>
 
       <p>Update the cell to be a progress bar whose progress, on the
       scale of 0.0 (no progress) to 1.0 (task complete) is given by
-      the value in the <code><a href=#cell>Cell</a></code> object's second entry.</p>
+      the value in the <code>Cell</code> object's second entry.</p>
 
      </dd>
 
-     <dt>If the column's type is <code title=datagrid-type-meter><a href=#datagrid-type-meter>meter</a></code></dt>
+     <dt>If the column's type is <code title="datagrid-type-meter">meter</code></dt>
      <dd>
 
       <p>Update the cell to be a gauge configured with the numbers
       given by the second and subsequent entries of the
-      <code><a href=#cell>Cell</a></code> object.</p>
+      <code>Cell</code> object.</p>
 
      </dd>
 
-     <dt>If the column's type is <code title=datagrid-type-custom><a href=#datagrid-type-custom>custom</a></code></dt>
+     <dt>If the column's type is <code title="datagrid-type-custom">custom</code></dt>
      <dd>
 
       <p>Update the cell's minimum width to be the length in CSS
-      pixels given by the <code><a href=#cell>Cell</a></code> object's second entry.</p>
+      pixels given by the <code>Cell</code> object's second entry.</p>
 
       <p>Update the cell's minimum height to be the length in CSS
-      pixels given by the <code><a href=#cell>Cell</a></code> object's third entry.</p>
+      pixels given by the <code>Cell</code> object's third entry.</p>
 
       <p>Update the cell's callback to be the
-      <code><a href=#renderingcontext2dcallback>RenderingContext2DCallback</a></code> object given by the
-      <code><a href=#cell>Cell</a></code> object's fourth entry.</p>
+      <code>RenderingContext2DCallback</code> object given by the
+      <code>Cell</code> object's fourth entry.</p>
 
      </dd>
 
-    </dl></li>
+    </dl>
 
-  </ol><hr><p>When the user agent is to run the <dfn id=datagrid-update-display-algorithm><code>datagrid</code>
-  update display algorithm</dfn>, the user agent must invoke the <code title=dom-listener-getRows><a href=#dom-listener-getrows>getRows()</a></code> and <code title=dom-listener-getCells><a href=#dom-listener-getcells>getCells()</a></code> methods on the
-  current <code title=dom-datagrid-listener><a href=#dom-datagrid-listener>listener</a></code> such
-  that all the current visible rows in the <a href=#display-order-sparse-data-list>display order sparse
-  data list</a>, and all the cells in the currently visible columns
+   </li>
+
+  </ol>
+
+  <hr>
+
+  <p>When the user agent is to run the <dfn><code>datagrid</code>
+  update display algorithm</dfn>, the user agent must invoke the <code
+  title="dom-listener-getRows">getRows()</code> and <code
+  title="dom-listener-getCells">getCells()</code> methods on the
+  current <code title="dom-datagrid-listener">listener</code> such
+  that all the current visible rows in the <span>display order sparse
+  data list</span>, and all the cells in the currently visible columns
   on all the currently visible rows, have been covered.</p>
 
-  <p>A row is considered covered if it is present in the <a href=#pending-datagrid-rows-list>pending
-  <code>datagrid</code> rows list</a>, or if the <code title=dom-listener-getRows><a href=#dom-listener-getrows>getRows()</a></code> method is invoked with
+  <p>A row is considered covered if it is present in the <span>pending
+  <code>datagrid</code> rows list</span>, or if the <code
+  title="dom-listener-getRows">getRows()</code> method is invoked with
   a range that includes the row in question.</p>
 
   <p>A cell is considered covered if it is present in the
-  <a href=#pending-datagrid-cells-list>pending <code>datagrid</code> cells list</a>, or if the
-  <code title=dom-listener-getRows><a href=#dom-listener-getrows>getRows()</a></code> method is
+  <span>pending <code>datagrid</code> cells list</span>, or if the
+  <code title="dom-listener-getRows">getRows()</code> method is
   invoked with a range that includes the row in question and a list of
-  columns that includes the cell's column, or if the <code title=dom-listener-getCells><a href=#dom-listener-getcells>getCells()</a></code> method is invoked
+  columns that includes the cell's column, or if the <code
+  title="dom-listener-getCells">getCells()</code> method is invoked
   with a list of rows and columns that intersects the cell in
-  question. However, the <code title=dom-listener-getCells><a href=#dom-listener-getcells>getCells()</a></code> method can only be
-  used if the row is already present in the <a href=#display-order-sparse-data-list>display order sparse
-  data list</a>.</p>
+  question. However, the <code
+  title="dom-listener-getCells">getCells()</code> method can only be
+  used if the row is already present in the <span>display order sparse
+  data list</span>.</p>
 
-  <p>The <code title=dom-listener-getRows><a href=#dom-listener-getrows>getRows()</a></code> method,
+  <p>The <code title="dom-listener-getRows">getRows()</code> method,
   if used, must be invoked with five arguments. The first argument
-  must be the index in the <a href=#display-order-sparse-data-list>display order sparse data list</a>
+  must be the index in the <span>display order sparse data list</span>
   to the first row that the user agent is requesting, known as the
   <i>anchor row</i>. The second argument must be the number of
   consecutive cells for which the user agent is requesting
-  information. The third argument must be the <code><a href=#rowid>RowID</a></code> of
-  the row that is the nearest ancestor in the <a href=#display-order-sparse-data-tree>display order
-  sparse data <em>tree</em></a> of the anchor row. If this is the
-  <code><a href=#datagrid>datagrid</a></code>, then the <code><a href=#rowid>RowID</a></code> object must be an
+  information. The third argument must be the <code>RowID</code> of
+  the row that is the nearest ancestor in the <span>display order
+  sparse data <em>tree</em></span> of the anchor row. If this is the
+  <code>datagrid</code>, then the <code>RowID</code> object must be an
   empty array. The fourth argument must be the display order position
-  of the anchor row in the <a href=#display-order-sparse-data-tree>display order sparse data
-  tree</a>, assuming that the row identified in the third argument
+  of the anchor row in the <span>display order sparse data
+  tree</span>, assuming that the row identified in the third argument
   is indeed the anchor row's parent row. The fifth and final argument
   must be an array of the identifiers of the columns for which the
   user agent is requesting information, in the order they were added
-  to the <code><a href=#datagrid>datagrid</a></code>.</p>
+  to the <code>datagrid</code>.</p>
 
-  <p>As the <code title=dom-listener-getRows><a href=#dom-listener-getrows>getRows()</a></code> method
-  is invoked, the <a href=#pending-datagrid-rows-list>pending <code>datagrid</code> rows list</a>
+  <p>As the <code title="dom-listener-getRows">getRows()</code> method
+  is invoked, the <span>pending <code>datagrid</code> rows list</span>
   must be updated to include the rows for which information has been
   requested, excluding rows for which information is already
-  available; and the <a href=#pending-datagrid-cells-list>pending <code>datagrid</code> cells
-  list</a> must be updated to include the cells for which
+  available; and the <span>pending <code>datagrid</code> cells
+  list</span> must be updated to include the cells for which
   information has been requested on those rows.</p>
 
-  <p>The <code title=dom-listener-getCells><a href=#dom-listener-getcells>getCells()</a></code> method,
+  <p>The <code title="dom-listener-getCells">getCells()</code> method,
   if used, must be invoked with two arguments. The first argument must
-  be an array of <code><a href=#rowid>RowID</a></code> objects identifying the rows for
+  be an array of <code>RowID</code> objects identifying the rows for
   which information is being requested. The second argument must be an
   array of the identifiers of the columns for which the user agent is
   requesting information, in the order they were added to the
-  <code><a href=#datagrid>datagrid</a></code>.</p>
+  <code>datagrid</code>.</p>
 
-  <p>As the <code title=dom-listener-getCells><a href=#dom-listener-getcells>getCells()</a></code>
-  method is invoked, the <a href=#pending-datagrid-cells-list>pending <code>datagrid</code> cells
-  list</a> must be updated to include the cells for which
+  <p>As the <code title="dom-listener-getCells">getCells()</code>
+  method is invoked, the <span>pending <code>datagrid</code> cells
+  list</span> must be updated to include the cells for which
   information has been requested.</p>
 
   <p>Calls to these methods should be batched so that the rows and
   cells to be covered are handled by the fewest number of calls to
   these methods as possible. To this end, user agents may invoke the
-  <code title=dom-listener-getRows><a href=#dom-listener-getrows>getRows()</a></code> method for a set
+  <code title="dom-listener-getRows">getRows()</code> method for a set
   of rows that includes some rows that are already in the
-  <a href=#display-order-sparse-data-list>display order sparse data list</a>, and similarly may
-  invoke the <code title=dom-listener-getCells><a href=#dom-listener-getcells>getCells()</a></code>
+  <span>display order sparse data list</span>, and similarly may
+  invoke the <code title="dom-listener-getCells">getCells()</code>
   method with row/column combinations that cover some cells for which
   data is already known. Generally, however, user agents should avoid
   invoking these methods with arguments that cause information to be
   requested when it has already been requested or is already
   known.</p>
 
-  <div class=example>
+  <div class="example">
 
    <p>For example, consider a case represented by the following table,
    where the cells marked "Yes" indicate that the data has already
@@ -39178,270 +39422,308 @@
    obtained, or any information that had been obtained has now been
    discarded.</p>
 
-   <table><tr><td>        <th> Row   <th> Column A  <th> Column B
-    <tr><th> Row 1  <td> -     <td> -         <td> -
-    <tr><th> Row 2  <td> Yes   <td> Yes       <td> Yes
-    <tr><th> Row 3  <td> Yes   <td> Yes       <td> Yes
-    <tr><th> Row 4  <td> Yes   <td> Yes       <td> Yes
-    <tr><th> Row 5  <td> -     <td> -         <td> -
-    <tr><th> Row 6  <td> -     <td> -         <td> -
-    <tr><th> Row 7  <td> Yes   <td> Pending   <td> -
-    <tr><th> Row 8  <td> Yes   <td> Pending   <td> Pending
-   </table><p>Thus, rows 2, 3, 4, 7, and 8 are already covered, as are the
+   <table>
+    <tr> <td>        <th> Row   <th> Column A  <th> Column B
+    <tr> <th> Row 1  <td> -     <td> -         <td> -
+    <tr> <th> Row 2  <td> Yes   <td> Yes       <td> Yes
+    <tr> <th> Row 3  <td> Yes   <td> Yes       <td> Yes
+    <tr> <th> Row 4  <td> Yes   <td> Yes       <td> Yes
+    <tr> <th> Row 5  <td> -     <td> -         <td> -
+    <tr> <th> Row 6  <td> -     <td> -         <td> -
+    <tr> <th> Row 7  <td> Yes   <td> Pending   <td> -
+    <tr> <th> Row 8  <td> Yes   <td> Pending   <td> Pending
+   </table>
+
+   <p>Thus, rows 2, 3, 4, 7, and 8 are already covered, as are the
    cells from those rows except for the cell in column B of row 7.</p>
 
    <p>Now consider what happens if all of these rows become visible at
    once. The user agent has several choices, including (but not
    limited to) the following:</p>
 
-   <ul><li>Fire the <code title=dom-listener-getRows><a href=#dom-listener-getrows>getRows()</a></code>
+   <ul>
+
+    <li>Fire the <code title="dom-listener-getRows">getRows()</code>
     method for rows 1 through 8 and columns A and B all at once.</li>
 
-    <li>Fire the <code title=dom-listener-getRows><a href=#dom-listener-getrows>getRows()</a></code>
+    <li>Fire the <code title="dom-listener-getRows">getRows()</code>
     method for row 1, then fire it again for rows 5 through 7.</li>
 
-    <li>Fire the <code title=dom-listener-getRows><a href=#dom-listener-getrows>getRows()</a></code>
+    <li>Fire the <code title="dom-listener-getRows">getRows()</code>
     method for row 1, then fire it again for rows 5 and 6, and then
-    fire the <code title=dom-listener-getCells><a href=#dom-listener-getcells>getCells()</a></code>
+    fire the <code title="dom-listener-getCells">getCells()</code>
     method for row 7 column B.</li>
 
-   </ul><p>All three options are allowed, but the latter two are preferable
+   </ul>
+
+   <p>All three options are allowed, but the latter two are preferable
    to the former, as they minimise the amount of redundant information
    requested.</p>
 
    <p>In any case, the data model now looks like this:</p>
 
-   <table><tr><td>        <th> Row     <th> Column A  <th> Column B  <th> Column C
-    <tr><th> Row 1  <td> Pending <td> Pending   <td> Pending   <td> -
-    <tr><th> Row 2  <td> Yes     <td> Yes       <td> Yes       <td> -
-    <tr><th> Row 3  <td> Yes     <td> Yes       <td> Yes       <td> -
-    <tr><th> Row 4  <td> Yes     <td> Yes       <td> Yes       <td> -
-    <tr><th> Row 5  <td> Pending <td> Pending   <td> Pending   <td> -
-    <tr><th> Row 6  <td> Pending <td> Pending   <td> Pending   <td> -
-    <tr><th> Row 7  <td> Yes     <td> Pending   <td> Pending   <td> -
-    <tr><th> Row 8  <td> Yes     <td> Pending   <td> Pending   <td> -
-   </table><p>Now consider the case where a third column, column C, is added
+   <table>
+    <tr> <td>        <th> Row     <th> Column A  <th> Column B  <th> Column C
+    <tr> <th> Row 1  <td> Pending <td> Pending   <td> Pending   <td> -
+    <tr> <th> Row 2  <td> Yes     <td> Yes       <td> Yes       <td> -
+    <tr> <th> Row 3  <td> Yes     <td> Yes       <td> Yes       <td> -
+    <tr> <th> Row 4  <td> Yes     <td> Yes       <td> Yes       <td> -
+    <tr> <th> Row 5  <td> Pending <td> Pending   <td> Pending   <td> -
+    <tr> <th> Row 6  <td> Pending <td> Pending   <td> Pending   <td> -
+    <tr> <th> Row 7  <td> Yes     <td> Pending   <td> Pending   <td> -
+    <tr> <th> Row 8  <td> Yes     <td> Pending   <td> Pending   <td> -
+   </table>
+
+   <p>Now consider the case where a third column, column C, is added
    to the data model. The user agent once again has several choices,
    including (but not limited to) the following:</p>
 
-   <ul><li>Fire the <code title=dom-listener-getRows><a href=#dom-listener-getrows>getRows()</a></code>
+   <ul>
+
+    <li>Fire the <code title="dom-listener-getRows">getRows()</code>
     method for rows 1 through 8 again, this time listing just column
     C.</li>
 
-    <li>Fire the <code title=dom-listener-getRows><a href=#dom-listener-getrows>getRows()</a></code>
+    <li>Fire the <code title="dom-listener-getRows">getRows()</code>
     method for row 1, then fire it again for rows 5 and 6, and then
-    fire the <code title=dom-listener-getCells><a href=#dom-listener-getcells>getCells()</a></code>
+    fire the <code title="dom-listener-getCells">getCells()</code>
     method for the other rows (in all three cases, listing just column
     C).</li>
 
-   </ul><p>The two options here are as bad as each other; the former
+   </ul>
+
+   <p>The two options here are as bad as each other; the former
    involves a lot of overlap, but the latter involves a lot of method
    calls. Unfortunately the user agent can't do the obvious thing,
-   namely just to invoke the <code title=dom-listener-getCells><a href=#dom-listener-getcells>getCells()</a></code> method for all the
+   namely just to invoke the <code
+   title="dom-listener-getCells">getCells()</code> method for all the
    rows listing just column C, because it doesn't have the row
    information for all the rows yet (rows 1, 5 and 6 are still
    pending).</p>
 
    <p>In any case, the data model now looks like this:</p>
 
-   <table><tr><td>        <th> Row     <th> Column A  <th> Column B  <th> Column C
-    <tr><th> Row 1  <td> Pending <td> Pending   <td> Pending   <td> Pending
-    <tr><th> Row 2  <td> Yes     <td> Yes       <td> Yes       <td> Pending
-    <tr><th> Row 3  <td> Yes     <td> Yes       <td> Yes       <td> Pending
-    <tr><th> Row 4  <td> Yes     <td> Yes       <td> Yes       <td> Pending
-    <tr><th> Row 5  <td> Pending <td> Pending   <td> Pending   <td> Pending
-    <tr><th> Row 6  <td> Pending <td> Pending   <td> Pending   <td> Pending
-    <tr><th> Row 7  <td> Yes     <td> Pending   <td> Pending   <td> Pending
-    <tr><th> Row 8  <td> Yes     <td> Pending   <td> Pending   <td> Pending
-   </table><p>If at this point the user scrolls around anywhere within this
-   <code><a href=#datagrid>datagrid</a></code>, the user agent won't fire the <code title=dom-listener-getRows><a href=#dom-listener-getrows>getRows()</a></code> and <code title=dom-listener-getCells><a href=#dom-listener-getcells>getCells()</a></code> methods, because
+   <table>
+    <tr> <td>        <th> Row     <th> Column A  <th> Column B  <th> Column C
+    <tr> <th> Row 1  <td> Pending <td> Pending   <td> Pending   <td> Pending
+    <tr> <th> Row 2  <td> Yes     <td> Yes       <td> Yes       <td> Pending
+    <tr> <th> Row 3  <td> Yes     <td> Yes       <td> Yes       <td> Pending
+    <tr> <th> Row 4  <td> Yes     <td> Yes       <td> Yes       <td> Pending
+    <tr> <th> Row 5  <td> Pending <td> Pending   <td> Pending   <td> Pending
+    <tr> <th> Row 6  <td> Pending <td> Pending   <td> Pending   <td> Pending
+    <tr> <th> Row 7  <td> Yes     <td> Pending   <td> Pending   <td> Pending
+    <tr> <th> Row 8  <td> Yes     <td> Pending   <td> Pending   <td> Pending
+   </table>
+
+   <p>If at this point the user scrolls around anywhere within this
+   <code>datagrid</code>, the user agent won't fire the <code
+   title="dom-listener-getRows">getRows()</code> and <code
+   title="dom-listener-getCells">getCells()</code> methods, because
    all of the rows and cells are covered.</p>
 
    <p>Now consider the case where the user agent receives row
    information, but no cell information, for rows 1, 5, and 6:</p>
 
-   <table><tr><td>        <th> Row     <th> Column A  <th> Column B  <th> Column C
-    <tr><th> Row 1  <td> Yes     <td> Pending   <td> Pending   <td> Pending
-    <tr><th> Row 2  <td> Yes     <td> Yes       <td> Yes       <td> Pending
-    <tr><th> Row 3  <td> Yes     <td> Yes       <td> Yes       <td> Pending
-    <tr><th> Row 4  <td> Yes     <td> Yes       <td> Yes       <td> Pending
-    <tr><th> Row 5  <td> Yes     <td> Pending   <td> Pending   <td> Pending
-    <tr><th> Row 6  <td> Yes     <td> Pending   <td> Pending   <td> Pending
-    <tr><th> Row 7  <td> Yes     <td> Pending   <td> Pending   <td> Pending
-    <tr><th> Row 8  <td> Yes     <td> Pending   <td> Pending   <td> Pending
-   </table><p>The user agent still won't fire any methods when the user
+   <table>
+    <tr> <td>        <th> Row     <th> Column A  <th> Column B  <th> Column C
+    <tr> <th> Row 1  <td> Yes     <td> Pending   <td> Pending   <td> Pending
+    <tr> <th> Row 2  <td> Yes     <td> Yes       <td> Yes       <td> Pending
+    <tr> <th> Row 3  <td> Yes     <td> Yes       <td> Yes       <td> Pending
+    <tr> <th> Row 4  <td> Yes     <td> Yes       <td> Yes       <td> Pending
+    <tr> <th> Row 5  <td> Yes     <td> Pending   <td> Pending   <td> Pending
+    <tr> <th> Row 6  <td> Yes     <td> Pending   <td> Pending   <td> Pending
+    <tr> <th> Row 7  <td> Yes     <td> Pending   <td> Pending   <td> Pending
+    <tr> <th> Row 8  <td> Yes     <td> Pending   <td> Pending   <td> Pending
+   </table>
+
+   <p>The user agent still won't fire any methods when the user
    scrolls, because the data is still covered. But if the script then
-   calls the <code title=dom-datagrid-renotify><a href=#dom-datagrid-renotify>renotify()</a></code>
+   calls the <code title="dom-datagrid-renotify">renotify()</code>
    method, the "Pending" flags would get reset, and the model would
    now look like this:</p>
 
-   <table><tr><td>        <th> Row     <th> Column A  <th> Column B  <th> Column C
-    <tr><th> Row 1  <td> Yes     <td> -         <td> -         <td> -
-    <tr><th> Row 2  <td> Yes     <td> Yes       <td> Yes       <td> -
-    <tr><th> Row 3  <td> Yes     <td> Yes       <td> Yes       <td> -
-    <tr><th> Row 4  <td> Yes     <td> Yes       <td> Yes       <td> -
-    <tr><th> Row 5  <td> Yes     <td> -         <td> -         <td> -
-    <tr><th> Row 6  <td> Yes     <td> -         <td> -         <td> -
-    <tr><th> Row 7  <td> Yes     <td> -         <td> -         <td> -
-    <tr><th> Row 8  <td> Yes     <td> -         <td> -         <td> -
-   </table><p>Now, assuming that all eight rows and all three columns are
+   <table>
+    <tr> <td>        <th> Row     <th> Column A  <th> Column B  <th> Column C
+    <tr> <th> Row 1  <td> Yes     <td> -         <td> -         <td> -
+    <tr> <th> Row 2  <td> Yes     <td> Yes       <td> Yes       <td> -
+    <tr> <th> Row 3  <td> Yes     <td> Yes       <td> Yes       <td> -
+    <tr> <th> Row 4  <td> Yes     <td> Yes       <td> Yes       <td> -
+    <tr> <th> Row 5  <td> Yes     <td> -         <td> -         <td> -
+    <tr> <th> Row 6  <td> Yes     <td> -         <td> -         <td> -
+    <tr> <th> Row 7  <td> Yes     <td> -         <td> -         <td> -
+    <tr> <th> Row 8  <td> Yes     <td> -         <td> -         <td> -
+   </table>
+
+   <p>Now, assuming that all eight rows and all three columns are
    still visible, the user agent has the following choices (amongst
    others):</p>
 
-   <ul><li>Fire the <code title=dom-listener-getRows><a href=#dom-listener-getrows>getCells()</a></code>
+   <ul>
+
+    <li>Fire the <code title="dom-listener-getRows">getCells()</code>
     method for rows 1 through 8, listing all three columns.</li>
 
-    <li>Fire the <code title=dom-listener-getRows><a href=#dom-listener-getrows>getCells()</a></code>
+    <li>Fire the <code title="dom-listener-getRows">getCells()</code>
     method for rows 1 and 5 through 8, listing all three columns, and
     then fire the method for rows 2 through 4, listing just column
     C.</li>
 
-    <li>Fire the <code title=dom-listener-getRows><a href=#dom-listener-getrows>getCells()</a></code>
+    <li>Fire the <code title="dom-listener-getRows">getCells()</code>
     method for rows 1 and 5 through 8, listing just columns A abd B,
     and then fire the method for rows 1 through 8, listing just column
     C.</li>
 
-   </ul><p>Here the latter two are preferable because they result in less
+   </ul>
+
+   <p>Here the latter two are preferable because they result in less
    overlap than the first.</p>
 
   </div>
 
-  <hr><p>The <a href=#task-source>task source</a> for tasks queued on behalf of a
-  <code><a href=#datagrid>datagrid</a></code> is the <a href=#dom-manipulation-task-source>DOM manipulation task
-  source</a>.</p>
+  <hr>
 
+  <p>The <span>task source</span> for tasks queued on behalf of a
+  <code>datagrid</code> is the <span>DOM manipulation task
+  source</span>.</p>
+
   </div>
 
 
-  <h5 id=listening-to-notifications-from-the-datagrid><span class=secno>4.11.2.3 </span>Listening to notifications from the <code><a href=#datagrid>datagrid</a></code></h5>
+  <h5>Listening to notifications from the <code>datagrid</code></h5>
 
   <p><i>The conformance criteria in this section apply to any
-  implementation of the <code><a href=#datagridlistener>DataGridListener</a></code> interface,
+  implementation of the <code>DataGridListener</code> interface,
   including (and most commonly) the content author's
   implementation(s).</i></p>
 
-  <pre class=idl>// To be implemented by Web authors as a JS object
-[NoInterfaceObject] interface <dfn id=datagridlistener>DataGridListener</dfn> {
-  void <a href=#dom-listener-initialize title=dom-listener-initialize>initialize</a>(in <a href=#htmldatagridelement>HTMLDataGridElement</a> datagrid);
+  <pre class="idl">// To be implemented by Web authors as a JS object
+[NoInterfaceObject] interface <dfn>DataGridListener</dfn> {
+  void <span title="dom-listener-initialize">initialize</span>(in <span>HTMLDataGridElement</span> datagrid);
 
-  void <a href=#dom-listener-getrows title=dom-listener-getRows>getRows</a>(in unsigned long rowIndex, in unsigned long rowCount, in <a href=#rowid>RowID</a> parentRow, in unsigned long position, in <a href=#columnlist>ColumnList</a> columns);
-  void <a href=#dom-listener-getcells title=dom-listener-getCells>getCells</a>(in <a href=#rowidlist>RowIDList</a> rows, in <a href=#columnlist>ColumnList</a> columns);
-  void <a href=#dom-listener-rowopened title=dom-listener-rowOpened>rowOpened</a>(in <a href=#rowid>RowID</a> row, in boolean rowCountNeeded);
-  void <a href=#dom-listener-rowclosed title=dom-listener-rowClosed>rowClosed</a>(in <a href=#rowid>RowID</a> row);
+  void <span title="dom-listener-getRows">getRows</span>(in unsigned long rowIndex, in unsigned long rowCount, in <span>RowID</span> parentRow, in unsigned long position, in <span>ColumnList</span> columns);
+  void <span title="dom-listener-getCells">getCells</span>(in <span>RowIDList</span> rows, in <span>ColumnList</span> columns);
+  void <span title="dom-listener-rowOpened">rowOpened</span>(in <span>RowID</span> row, in boolean rowCountNeeded);
+  void <span title="dom-listener-rowClosed">rowClosed</span>(in <span>RowID</span> row);
 
-  void <a href=#dom-listener-cellchanged title=dom-listener-cellChanged>cellChanged</a>(in <a href=#rowid>RowID</a> row, in <a href=#column>Column</a> column, in any newValue, in any prevValue);
-  <a href=#htmlmenuelement>HTMLMenuElement</a> <a href=#dom-listener-getrowmenu title=dom-listener-getRowMenu>getRowMenu</a>(in <a href=#rowid>RowID</a> row);
-<!--vsDGDND
+  void <span title="dom-listener-cellChanged">cellChanged</span>(in <span>RowID</span> row, in <span>Column</span> column, in any newValue, in any prevValue);
+  <span>HTMLMenuElement</span> <span title="dom-listener-getRowMenu">getRowMenu</span>(in <span>RowID</span> row);
+<!- -vsDGDND
   boolean <span title="dom-listener-canDrop">canDrop</span>(in <span>RowID</span> row, in <span>RowID</span> position, data);
   boolean <span title="dom-listener-dropped">dropped</span>(in <span>RowID</span> row, in <span>RowID</span> position, data);
---><!--v2DGPA
+- -><!- -v2DGPA
   void <span title="dom-listener-performAction">performAction</span>(in <span>RowID</span> row, in DOMString action);
--->};</pre>
+- ->};</pre>
 
-  <p>The <code><a href=#datagridlistener>DataGridListener</a></code> interface, once implemented by
-  an object in a script and hooked up to a <code><a href=#datagrid>datagrid</a></code> using
-  the <code title=dom-datagrid-listener><a href=#dom-datagrid-listener>listener</a></code> DOM
-  attribute, receives notifications when the <code><a href=#datagrid>datagrid</a></code>
+  <p>The <code>DataGridListener</code> interface, once implemented by
+  an object in a script and hooked up to a <code>datagrid</code> using
+  the <code title="dom-datagrid-listener">listener</code> DOM
+  attribute, receives notifications when the <code>datagrid</code>
   needs information (such as which rows exist) for display.</p>
 
   <p>The following methods may be usefully implemented:</p>
 
-  <dl><dt><dfn id=dom-listener-initialize title=dom-listener-initialize><code>initialize(<var title="">datagrid</var>)</code></dfn></dt>
+  <dl>
 
+   <dt><dfn title="dom-listener-initialize"><code>initialize(<var title="">datagrid</var>)</code></dfn></dt>
+
    <dd>
 
-    <p>Called by the <code><a href=#datagrid>datagrid</a></code> element (the one given by
-    the <var title="">datagrid</var> argument) when the <code title=dom-datagrid-listener><a href=#dom-datagrid-listener>listener</a></code> attribute is
+    <p>Called by the <code>datagrid</code> element (the one given by
+    the <var title="">datagrid</var> argument) when the <code
+    title="dom-datagrid-listener">listener</code> attribute is
     set.</p>
 
    </dd>
 
-   <dt><dfn id=dom-listener-getrows title=dom-listener-getRows><code>getRows(<var title="">rowIndex</var>, <var title="">rowCount</var>, <var title="">parentRow</var>, <var title="">position</var>, <var title="">columns</var>)</code></dfn></dt>
+   <dt><dfn title="dom-listener-getRows"><code>getRows(<var title="">rowIndex</var>, <var title="">rowCount</var>, <var title="">parentRow</var>, <var title="">position</var>, <var title="">columns</var>)</code></dfn></dt>
 
    <dd>
 
-    <p>Called by the <code><a href=#datagrid>datagrid</a></code> element when the user agent
+    <p>Called by the <code>datagrid</code> element when the user agent
     finds itself needing to render rows for which it is lacking
     information.</p>
 
     <p>The <var title="">rowIndex</var> argument gives the flattened
     index of the first row for which it needs information, ignoring
-    the tree structure of the <code><a href=#datagrid>datagrid</a></code> model, where zero
+    the tree structure of the <code>datagrid</code> model, where zero
     is the first row of the entire tree.</p>
 
     <p>The <var title="">rowCount</var> argument gives the number of
     rows for which the user agent would like information.</p>
 
     <p>The <var title="">parentRow</var> argument gives the
-    <code><a href=#rowid>RowID</a></code> object identifying the nearest ancestor of the
+    <code>RowID</code> object identifying the nearest ancestor of the
     first row that the user agent is aware of. After the sort order
     has changed, this will typically be the root of the tree
-    (identified by a <code><a href=#rowid>RowID</a></code> object consisting of an empty
+    (identified by a <code>RowID</code> object consisting of an empty
     array).
 
     <p>The <var title="">columns</var> argument gives the columns for
     which the user agent is lacking information, as an array of column
-    identifiers (as passed to <code title=dom-datagrid-addColumn><a href=#dom-datagrid-addcolumn>addColumn()</a></code>).</p>
+    identifiers (as passed to <code
+    title="dom-datagrid-addColumn">addColumn()</code>).</p>
 
    </dd>
 
-   <dt><dfn id=dom-listener-getcells title=dom-listener-getCells><code>getCells(<var title="">rows</var>, <var title="">columns</var>)</code></dfn></dt>
+   <dt><dfn title="dom-listener-getCells"><code>getCells(<var title="">rows</var>, <var title="">columns</var>)</code></dfn></dt>
 
    <dd>
 
-    <p>Called by the <code><a href=#datagrid>datagrid</a></code> element when the user agent
+    <p>Called by the <code>datagrid</code> element when the user agent
     finds itself needing to render cells for which it is lacking
     information in rows that it does know about.</p>
 
     <p>The <var title="">rows</var> argument gives an array of
-    <code><a href=#rowid>RowID</a></code> objects identifying the various rows for which
+    <code>RowID</code> objects identifying the various rows for which
     the user agent is lacking information.</p>
 
     <p>The <var title="">columns</var> argument gives the columns for
     which the user agent is lacking information, as an array of column
-    identifiers (as passed to <code title=dom-datagrid-addColumn><a href=#dom-datagrid-addcolumn>addColumn()</a></code>).</p>
+    identifiers (as passed to <code
+    title="dom-datagrid-addColumn">addColumn()</code>).</p>
 
    </dd>
 
-   <dt><dfn id=dom-listener-rowopened title=dom-listener-rowOpened><code>rowOpened(<var title="">row</var>, <var title="">rowCountNeeded</var>)</code></dfn></dt>
+   <dt><dfn title="dom-listener-rowOpened"><code>rowOpened(<var title="">row</var>, <var title="">rowCountNeeded</var>)</code></dfn></dt>
 
    <dd>
 
-    <p>Called by the <code><a href=#datagrid>datagrid</a></code> element when the user has
+    <p>Called by the <code>datagrid</code> element when the user has
     opened a row.</p>
 
     <p>The <var title="">row</var> argument gives an
-    <code><a href=#rowid>RowID</a></code> object identifying the row that was opened.</p>
+    <code>RowID</code> object identifying the row that was opened.</p>
 
     <p>If the user agent also knows how many children that row has,
     then the <var title="">rowCountNeeded</var> argument will be
     false. Otherwise, the argument will be true, and the row will
-    remain closed until the <code title=dom-datagrid-setRows><a href=#dom-datagrid-setrows>setRows()</a></code> method is called
+    remain closed until the <code
+    title="dom-datagrid-setRows">setRows()</code> method is called
     with an accurate row count.</p>
 
    </dd>
 
-   <dt><dfn id=dom-listener-rowclosed title=dom-listener-rowClosed><code>rowClosed(<var title="">row</var>)</code></dfn></dt>
+   <dt><dfn title="dom-listener-rowClosed"><code>rowClosed(<var title="">row</var>)</code></dfn></dt>
 
    <dd>
 
-    <p>Called by the <code><a href=#datagrid>datagrid</a></code> element when the user has
+    <p>Called by the <code>datagrid</code> element when the user has
     opened a row.</p>
 
     <p>The <var title="">row</var> argument gives an
-    <code><a href=#rowid>RowID</a></code> object identifying the row that was closed.</p>
+    <code>RowID</code> object identifying the row that was closed.</p>
 
    </dd>
 
-   <dt><dfn id=dom-listener-cellchanged title=dom-listener-cellChanged><code>cellChanged(<var title="">row</var>, <var title="">column</var>, <var title="">newValue</var>, <var title="">prevValue</var>)</code></dfn></dt>
+   <dt><dfn title="dom-listener-cellChanged"><code>cellChanged(<var title="">row</var>, <var title="">column</var>, <var title="">newValue</var>, <var title="">prevValue</var>)</code></dfn></dt>
 
    <dd>
 
-    <p>Called by the <code><a href=#datagrid>datagrid</a></code> element when the user has
+    <p>Called by the <code>datagrid</code> element when the user has
     edited a cell or checked a check box in a cell.</p>
 
     <p>The <var title="">row</var> argument gives an
-    <code><a href=#rowid>RowID</a></code> object identifying the row of the cell, and the
+    <code>RowID</code> object identifying the row of the cell, and the
     <var title="">column</var> argument gives the identifier of the
     cell's column.</p>
 
@@ -39451,20 +39733,22 @@
 
    </dd>
 
-   <dt><dfn id=dom-listener-getrowmenu title=dom-listener-getRowMenu><code>getRowMenu(<var title="">row</var>)</code></dfn></dt>
+   <dt><dfn title="dom-listener-getRowMenu"><code>getRowMenu(<var title="">row</var>)</code></dfn></dt>
 
-   <dd>Must return an <code><a href=#htmlmenuelement>HTMLMenuElement</a></code> object that is to
+   <dd>Must return an <code>HTMLMenuElement</code> object that is to
    be used as a context menu for row <var title="">row</var>, or null
    if there is no particular context menu. May be omitted if none of
    the rows have a special context menu. As this method is called
    immediately before showing the menu in question, no precautions
    need to be taken if the return value of this method changes.</dd>
 
-   <!--v2DGDND, v2DFPA-->
+   <!- -v2DGDND, v2DFPA- ->
 
-  </dl><div class=impl>
+  </dl>
 
-  <p>Objects that implement the <code><a href=#datagridlistener>DataGridListener</a></code>
+  <div class="impl">
+
+  <p>Objects that implement the <code>DataGridListener</code>
   interface may omit any or all of the methods. When a method is
   omitted, a user agent intending to call that method must instead
   skip the method call, and must assume that the method's return value
@@ -39474,7 +39758,7 @@
 
 
 
-<!-- v2DGS: <datagrid> selection (search for the bits marked "..." to see what needs filling in, at a minimum)
+<!- - v2DGS: <datagrid> selection (search for the bits marked "..." to see what needs filling in, at a minimum)
 
   <h5>The selection</h5>
 
@@ -39577,20 +39861,21 @@
   <p class="note">The <code>DataGridSelection</code> interface has no
   relation to the <code>Selection</code> interface.</p>
 
--->
+- ->
 
 
-<!--vsDGDND
+<!- -vsDGDND
   <h5>Drag and drop in <code>datagrid</code>s</h5>
 
   <p><i>This section only applies to interactive user agents.</i></p>
 
   ...define drag and drop in datagrids; selectiondraggable...
+- ->
+
 -->
 
+  <h4 id=the-command><span class=secno>4.11.2 </span>The <dfn><code>command</code></dfn> element</h4>
 
-  <h4 id=the-command><span class=secno>4.11.3 </span>The <dfn><code>command</code></dfn> element</h4>
-
   <dl class=element><dt>Categories</dt>
    <dd><a href=#metadata-content-0>Metadata content</a>.</dd>
    <dd><a href=#flow-content-0>Flow content</a>.</dd>
@@ -39775,7 +40060,7 @@
 
 
 
-  <h4 id=the-bb-element><span class=secno>4.11.4 </span>The <dfn><code>bb</code></dfn> element</h4>
+  <h4 id=the-bb-element><span class=secno>4.11.3 </span>The <dfn><code>bb</code></dfn> element</h4>
 
   <dl class=element><dt>Categories</dt>
    <dd><a href=#flow-content-0>Flow content</a>.</dd>
@@ -39884,9 +40169,9 @@
   </div>
 
 
-  <h5 id=browser-button-types><span class=secno>4.11.4.1 </span>Browser button types</h5>
+  <h5 id=browser-button-types><span class=secno>4.11.3.1 </span>Browser button types</h5>
 
-  <h6 id=the-make-application-state><span class=secno>4.11.4.1.1 </span>The <dfn title=attr-bb-type-makeapp-state><i>make application</i></dfn> state</h6>
+  <h6 id=the-make-application-state><span class=secno>4.11.3.1.1 </span>The <dfn title=attr-bb-type-makeapp-state><i>make application</i></dfn> state</h6>
 
   <p>Some user agents support making sites accessible as independent
   applications, as if they were not Web sites at all. The <i title=attr-bb-type-makeapp-state><a href=#the-make-application-state>make application</a></i> state exists
@@ -39970,7 +40255,7 @@
 
 
 
-  <h4 id=menus><span class=secno>4.11.5 </span>The <dfn><code>menu</code></dfn> element</h4>
+  <h4 id=menus><span class=secno>4.11.4 </span>The <dfn><code>menu</code></dfn> element</h4>
 
   <dl class=element><dt>Categories</dt>
    <dd><a href=#flow-content-0>Flow content</a>.</dd>
@@ -40038,7 +40323,7 @@
 
 
 
-  <h5 id=menus-intro><span class=secno>4.11.5.1 </span>Introduction</h5>
+  <h5 id=menus-intro><span class=secno>4.11.4.1 </span>Introduction</h5>
 
   <p><i>This section is non-normative.</i></p>
 
@@ -40144,7 +40429,7 @@
 
   <div class=impl>
 
-  <h5 id=building-menus-and-tool-bars><span class=secno>4.11.5.2 </span><dfn>Building menus and tool bars</dfn></h5>
+  <h5 id=building-menus-and-tool-bars><span class=secno>4.11.4.2 </span><dfn>Building menus and tool bars</dfn></h5>
 
   <p>A menu (or tool bar) consists of a list of zero or more of the
   following components:</p>
@@ -40225,7 +40510,7 @@
 
 
 
-  <h5 id=context-menus><span class=secno>4.11.5.3 </span><dfn>Context menus</dfn></h5>
+  <h5 id=context-menus><span class=secno>4.11.4.3 </span><dfn>Context menus</dfn></h5>
 
   <p>The <dfn id=attr-contextmenu title=attr-contextmenu><code>contextmenu</code></dfn>
   attribute gives the element's <a href=#context-menus title="context menus">context
@@ -40296,7 +40581,7 @@
 
   <div class=impl>
 
-  <h5 id=tool-bars><span class=secno>4.11.5.4 </span><dfn>Tool bars</dfn></h5>
+  <h5 id=tool-bars><span class=secno>4.11.4.4 </span><dfn>Tool bars</dfn></h5>
 
   <p>When a <code><a href=#menus>menu</a></code> element has a <code title=attr-menu-type><a href=#attr-menu-type>type</a></code> attribute in the <a href=#tool-bar-state title="tool bar state">tool bar</a> state, then the user agent
   must <a href=#building-menus-and-tool-bars title="building menus and tool bars">build</a> the
@@ -40311,7 +40596,7 @@
 
 
 
-  <h4 id=commands><span class=secno>4.11.6 </span>Commands</h4>
+  <h4 id=commands><span class=secno>4.11.5 </span>Commands</h4>
 
   <p>A <dfn id=concept-command title=concept-command>command</dfn> is the abstraction
   behind menu items, buttons, and links.<!--v2COMMAND: Once a command
@@ -40559,7 +40844,7 @@
 
   <div class=impl>
 
-  <h5 id=using-the-a-element-to-define-a-command><span class=secno>4.11.6.1 </span><dfn title=a-command>Using the <code>a</code> element to define a command</dfn></h5>
+  <h5 id=using-the-a-element-to-define-a-command><span class=secno>4.11.5.1 </span><dfn title=a-command>Using the <code>a</code> element to define a command</dfn></h5>
 
   <p>An <code><a href=#the-a-element>a</a></code> element with an <code title=attr-hyperlink-href><a href=#attr-hyperlink-href>href</a></code> attribute <a href=#concept-command title=concept-command>defines a command</a>.</p>
 
@@ -40605,7 +40890,7 @@
   command is to <a href=#fire-a-click-event title="fire a click event">fire a <code title=event-click>click</code> event</a> at the element.</p>
 
 
-  <h5 id=using-the-button-element-to-define-a-command><span class=secno>4.11.6.2 </span><dfn title=button-command>Using the <code>button</code> element to define a command</dfn></h5>
+  <h5 id=using-the-button-element-to-define-a-command><span class=secno>4.11.5.2 </span><dfn title=button-command>Using the <code>button</code> element to define a command</dfn></h5>
 
   <p>A <code><a href=#the-button-element>button</a></code> element always <a href=#concept-command title=concept-command>defines a command</a>.</p>
 
@@ -40617,7 +40902,7 @@
   State</a> of the command mirrors the <a href=#concept-fe-disabled title=concept-fe-disabled>disabled</a> state of the button.</p>
 
 
-  <h5 id=using-the-input-element-to-define-a-command><span class=secno>4.11.6.3 </span><dfn title=input-command>Using the <code>input</code> element to define a command</dfn></h5>
+  <h5 id=using-the-input-element-to-define-a-command><span class=secno>4.11.5.3 </span><dfn title=input-command>Using the <code>input</code> element to define a command</dfn></h5>
 
   <p>An <code><a href=#the-input-element>input</a></code> element whose <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute is in one of the <a href=#submit-button-state title=attr-input-type-submit>Submit Button</a>, <a href=#reset-button-state title=attr-input-type-reset>Reset Button</a>, <a href=#image-button-state title=attr-input-type-image>Image Button</a>, <a href=#button-state title=attr-input-type-button>Button</a>, <a href=#radio-button-state title=attr-input-type-radio>Radio Button</a>, or <a href=#checkbox-state title=attr-input-type-checkbox>Checkbox</a> states <a href=#concept-command title=concept-command>defines a command</a>.</p>
 
@@ -40688,7 +40973,7 @@
   element.</p>
 
 
-  <h5 id=using-the-option-element-to-define-a-command><span class=secno>4.11.6.4 </span><dfn title=option-command>Using the <code>option</code> element to define a command</dfn></h5>
+  <h5 id=using-the-option-element-to-define-a-command><span class=secno>4.11.5.4 </span><dfn title=option-command>Using the <code>option</code> element to define a command</dfn></h5>
 
   <p>An <code><a href=#the-option-element>option</a></code> element with an ancestor
   <code><a href=#the-select-element>select</a></code> element and either no <code title=attr-option-value><a href=#attr-option-value>value</a></code> attribute or a <code title=attr-option-value><a href=#attr-option-value>value</a></code> attribute that is not the
@@ -40741,7 +41026,7 @@
   element.</p>
 
 
-  <h5 id=using-the-command-element-to-define-a-command><span class=secno>4.11.6.5 </span>Using the <dfn title=command-element><code>command</code></dfn> element to define
+  <h5 id=using-the-command-element-to-define-a-command><span class=secno>4.11.5.5 </span>Using the <dfn title=command-element><code>command</code></dfn> element to define
   a command</h5>
 
   <p>A <code><a href=#the-command>command</a></code> element <a href=#concept-command title=concept-command>defines a command</a>.</p>
@@ -40797,7 +41082,7 @@
 
 
 
-  <h5 id=using-the-bb-element-to-define-a-command><span class=secno>4.11.6.6 </span><dfn title=bb-command>Using the <code>bb</code> element to define a command</dfn></h5>
+  <h5 id=using-the-bb-element-to-define-a-command><span class=secno>4.11.5.6 </span><dfn title=bb-command>Using the <code>bb</code> element to define a command</dfn></h5>
 
   <p>A <code><a href=#the-bb-element>bb</a></code> element always <a href=#concept-command title=concept-command>defines a command</a>.</p>
 
@@ -40853,7 +41138,7 @@
 
 
 
-  <h5 id=using-the-accesskey-attribute-on-a-label-element-to-define-a-command><span class=secno>4.11.6.7 </span><dfn title=label-command>Using the <code title=attr-accesskey>accesskey</code> attribute on a <code>label</code> element to define a command</dfn></h5>
+  <h5 id=using-the-accesskey-attribute-on-a-label-element-to-define-a-command><span class=secno>4.11.5.7 </span><dfn title=label-command>Using the <code title=attr-accesskey>accesskey</code> attribute on a <code>label</code> element to define a command</dfn></h5>
 
   <p>A <code><a href=#the-label-element>label</a></code> element that has an <a href=#assigned-access-key>assigned access
   key</a> and a <a href=#labeled-control>labeled control</a> and whose
@@ -40894,7 +41179,7 @@
 
 
 
-  <h5 id=using-the-accesskey-attribute-on-a-legend-element-to-define-a-command><span class=secno>4.11.6.8 </span><dfn title=legend-command>Using the <code title=attr-accesskey>accesskey</code> attribute on a <code>legend</code> element to define a command</dfn></h5>
+  <h5 id=using-the-accesskey-attribute-on-a-legend-element-to-define-a-command><span class=secno>4.11.5.8 </span><dfn title=legend-command>Using the <code title=attr-accesskey>accesskey</code> attribute on a <code>legend</code> element to define a command</dfn></h5>
 
   <p>A <code><a href=#the-legend-element>legend</a></code> element that has an <a href=#assigned-access-key>assigned access
   key</a> and is a child of a <code><a href=#the-fieldset-element>fieldset</a></code> element that
@@ -40938,7 +41223,7 @@
 
 
 
-  <h5 id=using-the-accesskey-attribute-to-define-a-command-on-other-elements><span class=secno>4.11.6.9 </span><dfn title=accesskey-command>Using the <code title=attr-accesskey>accesskey</code> attribute to define a command on other elements</dfn></h5>
+  <h5 id=using-the-accesskey-attribute-to-define-a-command-on-other-elements><span class=secno>4.11.5.9 </span><dfn title=accesskey-command>Using the <code title=attr-accesskey>accesskey</code> attribute to define a command on other elements</dfn></h5>
 
   <p>An element that has an <a href=#assigned-access-key>assigned access key</a> <a href=#concept-command title=concept-command>defines a command</a>.</p>
 
@@ -41438,7 +41723,7 @@
 
 -->
 
-  <h3 id=introduction-2><span class=secno>5.1 </span>Introduction</h3>
+  <h3 id=introduction-1><span class=secno>5.1 </span>Introduction</h3>
 
   <h4 id=the-basic-syntax><span class=secno>5.1.1 </span>The basic syntax</h4>
 
@@ -47183,7 +47468,7 @@
 
   <h3 id=scripting><span class=secno>6.5 </span>Scripting</h3>
 
-  <h4 id=introduction-3><span class=secno>6.5.1 </span>Introduction</h4>
+  <h4 id=introduction-2><span class=secno>6.5.1 </span>Introduction</h4>
 
   <p>Various mechanisms can cause author-provided executable code to
   run in the context of a document. These mechanisms include, but are
@@ -49481,7 +49766,7 @@
 
   -->
 
-  <h4 id=introduction-4><span class=secno>6.9.1 </span>Introduction</h4>
+  <h4 id=introduction-3><span class=secno>6.9.1 </span>Introduction</h4>
 
   <p><i>This section is non-normative.</i></p>
 
@@ -54803,7 +55088,7 @@
 
   </div>
 
-  <!-- v2DGS:
+  <!-- v2DATAGRID v2DGS:
   <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>
@@ -55134,7 +55419,7 @@
    would be "<code>the Oxford English</code>".</p>
   </div>
 
-  <!-- v2DGS:
+  <!-- v2DATAGRID v2DGS:
   <p class="note">The <code>Selection</code> interface has no relation
   to the <code>DataGridSelection</code> interface.</p>
   -->
@@ -55865,7 +56150,7 @@
   </div>
 
 
-  <h4 id=introduction-5><span class=secno>7.10.1 </span>Introduction</h4>
+  <h4 id=introduction-4><span class=secno>7.10.1 </span>Introduction</h4>
 
   <p><i>This section is non-normative.</i></p>
 
@@ -56902,7 +57187,7 @@
   <p class=XXX>There has got to be a better way of doing this, surely.</p>
 
 
-  <h4 id=introduction-6><span class=secno>7.11.1 </span>Introduction</h4>
+  <h4 id=introduction-5><span class=secno>7.11.1 </span>Introduction</h4>
 
   <p class=XXX>...</p>
 
@@ -57879,7 +58164,7 @@
   </div>
 
 
-  <h4 id=introduction-7><span class=secno>8.2.1 </span>Introduction</h4>
+  <h4 id=introduction-6><span class=secno>8.2.1 </span>Introduction</h4>
 
   <p><i>This section is non-normative.</i></p>
 
@@ -58184,7 +58469,7 @@
 
   <h3 id=channel-messaging><span class=secno>8.3 </span><dfn>Channel messaging</dfn></h3>
 
-  <h4 id=introduction-8><span class=secno>8.3.1 </span>Introduction</h4>
+  <h4 id=introduction-7><span class=secno>8.3.1 </span>Introduction</h4>
 
   <p><i>This section is non-normative.</i></p>
 
@@ -59074,13 +59359,13 @@
   tag</a> may be omitted if the <code><a href=#the-p-element>p</a></code> element is
   immediately followed by an <code><a href=#the-address-element>address</a></code>,
   <code><a href=#the-article-element>article</a></code>, <code><a href=#the-aside-element>aside</a></code>, <code><a href=#the-blockquote-element>blockquote</a></code>,
-  <code><a href=#datagrid>datagrid</a></code>, <code><a href=#the-dialog-element>dialog</a></code>, <code><a href=#dir>dir</a></code>,
-  <code><a href=#the-div-element>div</a></code>, <code><a href=#the-dl-element>dl</a></code>, <code><a href=#the-fieldset-element>fieldset</a></code>,
-  <code><a href=#the-footer-element>footer</a></code>, <code><a href=#the-form-element>form</a></code>, <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h1</a></code>,
-  <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h2</a></code>, <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h3</a></code>, <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h4</a></code>, <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h5</a></code>,
-  <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h6</a></code>, <code><a href=#the-header-element>header</a></code>, <code><a href=#the-hgroup-element>hgroup</a></code>,
-  <code><a href=#the-hr-element>hr</a></code>, <code><a href=#menus>menu</a></code>, <code><a href=#the-nav-element>nav</a></code>,
-  <code><a href=#the-ol-element>ol</a></code>, <code><a href=#the-p-element>p</a></code>, <code><a href=#the-pre-element>pre</a></code>,
+  <!--v2DATAGRID <code>datagrid</code>,--> <code><a href=#the-dialog-element>dialog</a></code>,
+  <code><a href=#dir>dir</a></code>, <code><a href=#the-div-element>div</a></code>, <code><a href=#the-dl-element>dl</a></code>,
+  <code><a href=#the-fieldset-element>fieldset</a></code>, <code><a href=#the-footer-element>footer</a></code>, <code><a href=#the-form-element>form</a></code>,
+  <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h1</a></code>, <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h2</a></code>, <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h3</a></code>, <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h4</a></code>,
+  <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h5</a></code>, <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h6</a></code>, <code><a href=#the-header-element>header</a></code>,
+  <code><a href=#the-hgroup-element>hgroup</a></code>, <code><a href=#the-hr-element>hr</a></code>, <code><a href=#menus>menu</a></code>,
+  <code><a href=#the-nav-element>nav</a></code>, <code><a href=#the-ol-element>ol</a></code>, <code><a href=#the-p-element>p</a></code>, <code><a href=#the-pre-element>pre</a></code>,
   <code><a href=#the-section-element>section</a></code>, <code><a href=#the-table-element>table</a></code>, or <code><a href=#the-ul-element>ul</a></code>,
   element, or if there is no more content in the parent element and
   the parent element is not an <code><a href=#the-a-element>a</a></code> element.</p>
@@ -60177,27 +60462,27 @@
    <code><a href=#basefont>basefont</a></code>, <code>bgsound</code>,
    <code><a href=#the-blockquote-element>blockquote</a></code>, <code><a href=#the-body-element>body</a></code>, <code><a href=#the-br-element>br</a></code>,
    <code><a href=#center>center</a></code>, <code><a href=#the-col-element>col</a></code>, <code><a href=#the-colgroup-element>colgroup</a></code>,
-   <code><a href=#the-command>command</a></code>, <code><a href=#datagrid>datagrid</a></code>, <code><a href=#the-dd-element>dd</a></code>,
-   <code><a href=#the-details-element>details</a></code>, <code><a href=#the-dialog-element>dialog</a></code>, <code><a href=#dir>dir</a></code>,
-   <code><a href=#the-div-element>div</a></code>, <code><a href=#the-dl-element>dl</a></code>, <code><a href=#the-dt-element>dt</a></code>,
-   <code><a href=#the-embed-element>embed</a></code>, <code><a href=#the-fieldset-element>fieldset</a></code>, <code><a href=#the-figure-element>figure</a></code>,
-   <code><a href=#the-footer-element>footer</a></code>, <code><a href=#the-form-element>form</a></code>, <code><a href=#frame>frame</a></code>,
-   <code><a href=#frameset>frameset</a></code>, <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h1</a></code>, <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h2</a></code>,
-   <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h3</a></code>, <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h4</a></code>, <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h5</a></code>, <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h6</a></code>,
-   <code><a href=#the-head-element>head</a></code>, <code><a href=#the-header-element>header</a></code>, <code><a href=#the-hgroup-element>hgroup</a></code>,
-   <code><a href=#the-hr-element>hr</a></code>, <code><a href=#the-iframe-element>iframe</a></code>, <!-- <code>image</code>,
-   (commented out because this isn't an element that can end up on the
-   stack, so it doesn't matter) --> <code><a href=#the-img-element>img</a></code>,
-   <code><a href=#the-input-element>input</a></code>, <code><a href=#isindex-0>isindex</a></code>, <code><a href=#the-li-element>li</a></code>,
-   <code><a href=#the-link-element>link</a></code>, <code><a href=#listing>listing</a></code>, <code><a href=#menus>menu</a></code>,
-   <code><a href=#meta>meta</a></code>, <code><a href=#the-nav-element>nav</a></code>, <code><a href=#noembed>noembed</a></code>,
-   <code><a href=#noframes>noframes</a></code>, <code><a href=#the-noscript-element>noscript</a></code>, <code><a href=#the-ol-element>ol</a></code>,
-   <code><a href=#the-p-element>p</a></code>, <code><a href=#the-param-element>param</a></code>, <code><a href=#plaintext>plaintext</a></code>,
-   <code><a href=#the-pre-element>pre</a></code>, <code><a href=#script>script</a></code>, <code><a href=#the-section-element>section</a></code>,
-   <code><a href=#the-select-element>select</a></code>, <code><a href=#spacer>spacer</a></code>, <code><a href=#the-style-element>style</a></code>,
-   <code><a href=#the-tbody-element>tbody</a></code>, <code><a href=#the-textarea-element>textarea</a></code>, <code><a href=#the-tfoot-element>tfoot</a></code>,
-   <code><a href=#the-thead-element>thead</a></code>, <code><a href=#the-title-element>title</a></code>, <code><a href=#the-tr-element>tr</a></code>,
-   <code><a href=#the-ul-element>ul</a></code>, and <code>wbr</code>.</dd>
+   <code><a href=#the-command>command</a></code>, <!--v2DDATAGRID--><code>datagrid</code>,
+   <code><a href=#the-dd-element>dd</a></code>, <code><a href=#the-details-element>details</a></code>, <code><a href=#the-dialog-element>dialog</a></code>,
+   <code><a href=#dir>dir</a></code>, <code><a href=#the-div-element>div</a></code>, <code><a href=#the-dl-element>dl</a></code>,
+   <code><a href=#the-dt-element>dt</a></code>, <code><a href=#the-embed-element>embed</a></code>, <code><a href=#the-fieldset-element>fieldset</a></code>,
+   <code><a href=#the-figure-element>figure</a></code>, <code><a href=#the-footer-element>footer</a></code>, <code><a href=#the-form-element>form</a></code>,
+   <code><a href=#frame>frame</a></code>, <code><a href=#frameset>frameset</a></code>, <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h1</a></code>,
+   <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h2</a></code>, <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h3</a></code>, <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h4</a></code>, <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h5</a></code>,
+   <code><a href=#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements>h6</a></code>, <code><a href=#the-head-element>head</a></code>, <code><a href=#the-header-element>header</a></code>,
+   <code><a href=#the-hgroup-element>hgroup</a></code>, <code><a href=#the-hr-element>hr</a></code>, <code><a href=#the-iframe-element>iframe</a></code>, <!--
+   <code>image</code>, (commented out because this isn't an element
+   that can end up on the stack, so it doesn't matter) -->
+   <code><a href=#the-img-element>img</a></code>, <code><a href=#the-input-element>input</a></code>, <code><a href=#isindex-0>isindex</a></code>,
+   <code><a href=#the-li-element>li</a></code>, <code><a href=#the-link-element>link</a></code>, <code><a href=#listing>listing</a></code>,
+   <code><a href=#menus>menu</a></code>, <code><a href=#meta>meta</a></code>, <code><a href=#the-nav-element>nav</a></code>,
+   <code><a href=#noembed>noembed</a></code>, <code><a href=#noframes>noframes</a></code>, <code><a href=#the-noscript-element>noscript</a></code>,
+   <code><a href=#the-ol-element>ol</a></code>, <code><a href=#the-p-element>p</a></code>, <code><a href=#the-param-element>param</a></code>,
+   <code><a href=#plaintext>plaintext</a></code>, <code><a href=#the-pre-element>pre</a></code>, <code><a href=#script>script</a></code>,
+   <code><a href=#the-section-element>section</a></code>, <code><a href=#the-select-element>select</a></code>, <code><a href=#spacer>spacer</a></code>,
+   <code><a href=#the-style-element>style</a></code>, <code><a href=#the-tbody-element>tbody</a></code>, <code><a href=#the-textarea-element>textarea</a></code>,
+   <code><a href=#the-tfoot-element>tfoot</a></code>, <code><a href=#the-thead-element>thead</a></code>, <code><a href=#the-title-element>title</a></code>,
+   <code><a href=#the-tr-element>tr</a></code>, <code><a href=#the-ul-element>ul</a></code>, and <code>wbr</code>.</dd>
 
    <dt><dfn id=scoping>Scoping</dfn></dt>
    <dd><p>The following HTML elements introduce new <a href=#has-an-element-in-scope title="has
@@ -62923,9 +63208,10 @@
 
    <!-- the normal ones -->
    <dt>A start tag whose tag name is one of: "address", "article",
-   "aside", "blockquote", "center", "datagrid", "details", "dialog",
-   "dir", "div", "dl", "fieldset", "figure", "footer", "header",
-   "hgroup", "menu", "nav", "ol", "p", "section", "ul"</dt>
+   "aside", "blockquote", "center", <!--v2DATAGRID-->"datagrid",
+   "details", "dialog", "dir", "div", "dl", "fieldset", "figure",
+   "footer", "header", "hgroup", "menu", "nav", "ol", "p", "section",
+   "ul"</dt>
    <dd>
 
     <!-- As of May 2008 this doesn't match any browser exactly, but is
@@ -63126,10 +63412,10 @@
 
    <!-- the normal ones -->
    <dt>An end tag whose tag name is one of: "address", "article",
-   "aside", "blockquote", "center", "datagrid", "details", "dialog",
-   "dir", "div", "dl", "fieldset", "figure", "footer", "header",
-   "hgroup", "listing", "menu", "nav", "ol", "pre", "section",
-   "ul"</dt>
+   "aside", "blockquote", "center", <!--v2DATAGRID-->"datagrid",
+   "details", "dialog", "dir", "div", "dl", "fieldset", "figure",
+   "footer", "header", "hgroup", "listing", "menu", "nav", "ol",
+   "pre", "section", "ul"</dt>
    <dd>
 
     <p>If the <a href=#stack-of-open-elements>stack of open elements</a> does not <a href=#has-an-element-in-scope title="has an element in scope">have an element in scope</a>
@@ -68637,7 +68923,7 @@
   lead to this experience.</i></p>
 
 
-  <h3 id=introduction-9><span class=secno>11.1 </span>Introduction</h3>
+  <h3 id=introduction-8><span class=secno>11.1 </span>Introduction</h3>
 
   <p>In general, user agents are expected to support CSS, and many of
   the suggestions in this section are expressed in CSS terms. User
@@ -68659,7 +68945,7 @@
 
   <h3 id=the-css-user-agent-style-sheet-and-presentational-hints><span class=secno>11.2 </span>The CSS user agent style sheet and presentational hints</h3>
 
-  <h4 id=introduction-10><span class=secno>11.2.1 </span>Introduction</h4>
+  <h4 id=introduction-9><span class=secno>11.2.1 </span>Introduction</h4>
 
   <p>The CSS rules given in these subsections are, unless otherwise
   specified, expected to be used as part of the user-agent level style
@@ -69777,7 +70063,7 @@
 
   <h3 id=bindings><span class=secno>11.4 </span>Bindings</h3>
 
-  <h4 id=introduction-11><span class=secno>11.4.1 </span>Introduction</h4>
+  <h4 id=introduction-10><span class=secno>11.4.1 </span>Introduction</h4>
 
   <p>A number of elements have their rendering defined in terms of the
   'binding' property. <a href=#refsBECSS>[BECSS]</a></p>
@@ -69823,18 +70109,18 @@
   contents of the element.</p>
 
 
+<!--v2DATAGRID
+  <h4>The <code>datagrid</code> element</h4>
 
-  <h4 id=the-datagrid-element><span class=secno>11.4.4 </span>The <code><a href=#datagrid>datagrid</a></code> element</h4>
+  This section will probably include details on how to render DATAGRID
+  (including <span id="datagridPseudos">its pseudo-elements</span>),
+  drag-and-drop, etc, in a visual medium, in concert with
+  CSS. Implementation experience is desired before this section is
+  filled in.
+-->
 
-  <p class=XXX>This section will probably include details on how to
-  render DATAGRID (including <span id=datagridPseudos>its
-  pseudo-elements</span>), drag-and-drop, etc, in a visual medium, in
-  concert with CSS. Implementation experience is desired before this
-  section is filled in.</p>
+  <h4 id=the-details-element-0><span class=secno>11.4.4 </span>The <code><a href=#the-details-element>details</a></code> element</h4>
 
-
-  <h4 id=the-details-element-0><span class=secno>11.4.5 </span>The <code><a href=#the-details-element>details</a></code> element</h4>
-
   <pre class=css>@namespace url(http://www.w3.org/1999/xhtml);
 
 details { binding: <i title="">details</i>; }</pre>
@@ -69866,7 +70152,7 @@
 
 
 
-  <h4 id=the-input-element-as-a-text-entry-widget><span class=secno>11.4.6 </span>The <code><a href=#the-input-element>input</a></code> element as a text entry widget</h4>
+  <h4 id=the-input-element-as-a-text-entry-widget><span class=secno>11.4.5 </span>The <code><a href=#the-input-element>input</a></code> element as a text entry widget</h4>
 
   <pre class=css>@namespace url(http://www.w3.org/1999/xhtml);
 
@@ -69910,7 +70196,7 @@
 
 
 
-  <h4 id=the-input-element-as-domain-specific-widgets><span class=secno>11.4.7 </span>The <code><a href=#the-input-element>input</a></code> element as domain-specific widgets</h4>
+  <h4 id=the-input-element-as-domain-specific-widgets><span class=secno>11.4.6 </span>The <code><a href=#the-input-element>input</a></code> element as domain-specific widgets</h4>
 
   <pre class=css>@namespace url(http://www.w3.org/1999/xhtml);
 
@@ -69962,7 +70248,7 @@
 
 
 
-  <h4 id=the-input-element-as-a-range-control><span class=secno>11.4.8 </span>The <code><a href=#the-input-element>input</a></code> element as a range control</h4>
+  <h4 id=the-input-element-as-a-range-control><span class=secno>11.4.7 </span>The <code><a href=#the-input-element>input</a></code> element as a range control</h4>
 
   <pre class=css>@namespace url(http://www.w3.org/1999/xhtml);
 
@@ -69985,7 +70271,7 @@
 
 
 
-  <h4 id=the-input-element-as-a-color-well><span class=secno>11.4.9 </span>The <code><a href=#the-input-element>input</a></code> element as a color well</h4>
+  <h4 id=the-input-element-as-a-color-well><span class=secno>11.4.8 </span>The <code><a href=#the-input-element>input</a></code> element as a color well</h4>
 
   <pre class=css>@namespace url(http://www.w3.org/1999/xhtml);
 
@@ -70004,7 +70290,7 @@
 
 
 
-  <h4 id=the-input-element-as-a-check-box-and-radio-button-widgets><span class=secno>11.4.10 </span>The <code><a href=#the-input-element>input</a></code> element as a check box and radio button widgets</h4>
+  <h4 id=the-input-element-as-a-check-box-and-radio-button-widgets><span class=secno>11.4.9 </span>The <code><a href=#the-input-element>input</a></code> element as a check box and radio button widgets</h4>
 
   <pre class=css>@namespace url(http://www.w3.org/1999/xhtml);
 
@@ -70023,7 +70309,7 @@
 
 
 
-  <h4 id=the-input-element-as-a-file-upload-control><span class=secno>11.4.11 </span>The <code><a href=#the-input-element>input</a></code> element as a file upload control</h4>
+  <h4 id=the-input-element-as-a-file-upload-control><span class=secno>11.4.10 </span>The <code><a href=#the-input-element>input</a></code> element as a file upload control</h4>
 
   <pre class=css>@namespace url(http://www.w3.org/1999/xhtml);
 
@@ -70038,7 +70324,7 @@
 
 
 
-  <h4 id=the-input-element-as-a-button><span class=secno>11.4.12 </span>The <code><a href=#the-input-element>input</a></code> element as a button</h4>
+  <h4 id=the-input-element-as-a-button><span class=secno>11.4.11 </span>The <code><a href=#the-input-element>input</a></code> element as a button</h4>
 
   <pre class=css>@namespace url(http://www.w3.org/1999/xhtml);
 
@@ -70056,7 +70342,7 @@
 
 
 
-  <h4 id=the-marquee-element><span class=secno>11.4.13 </span>The <code><a href=#the-marquee-element-0>marquee</a></code> element</h4>
+  <h4 id=the-marquee-element><span class=secno>11.4.12 </span>The <code><a href=#the-marquee-element-0>marquee</a></code> element</h4>
 
   <pre class=css>@namespace url(http://www.w3.org/1999/xhtml);
 
@@ -70218,7 +70504,7 @@
   hidden.</p>
 
 
-  <h4 id=the-meter-element-0><span class=secno>11.4.14 </span>The <code><a href=#the-meter-element>meter</a></code> element</h4>
+  <h4 id=the-meter-element-0><span class=secno>11.4.13 </span>The <code><a href=#the-meter-element>meter</a></code> element</h4>
 
   <pre class=css>@namespace url(http://www.w3.org/1999/xhtml);
 
@@ -70248,7 +70534,7 @@
 
 
 
-  <h4 id=the-progress-element-0><span class=secno>11.4.15 </span>The <code><a href=#the-progress-element>progress</a></code> element</h4>
+  <h4 id=the-progress-element-0><span class=secno>11.4.14 </span>The <code><a href=#the-progress-element>progress</a></code> element</h4>
 
   <pre class=css>@namespace url(http://www.w3.org/1999/xhtml);
 
@@ -70284,7 +70570,7 @@
 
 
 
-  <h4 id=the-select-element-0><span class=secno>11.4.16 </span>The <code><a href=#the-select-element>select</a></code> element</h4>
+  <h4 id=the-select-element-0><span class=secno>11.4.15 </span>The <code><a href=#the-select-element>select</a></code> element</h4>
 
   <pre class=css>@namespace url(http://www.w3.org/1999/xhtml);
 
@@ -70340,7 +70626,7 @@
 
 
 
-  <h4 id=the-textarea-element-0><span class=secno>11.4.17 </span>The <code><a href=#the-textarea-element>textarea</a></code> element</h4>
+  <h4 id=the-textarea-element-0><span class=secno>11.4.16 </span>The <code><a href=#the-textarea-element>textarea</a></code> element</h4>
 
   <pre class=css>@namespace url(http://www.w3.org/1999/xhtml);
 
@@ -70389,7 +70675,7 @@
 
 
 
-  <h4 id=the-keygen-element-0><span class=secno>11.4.18 </span>The <code><a href=#the-keygen-element>keygen</a></code> element</h4>
+  <h4 id=the-keygen-element-0><span class=secno>11.4.17 </span>The <code><a href=#the-keygen-element>keygen</a></code> element</h4>
 
   <pre class=css>@namespace url(http://www.w3.org/1999/xhtml);
 
@@ -70402,7 +70688,7 @@
 
 
 
-  <h4 id=the-time-element-0><span class=secno>11.4.19 </span>The <code><a href=#the-time-element>time</a></code> element</h4>
+  <h4 id=the-time-element-0><span class=secno>11.4.18 </span>The <code><a href=#the-time-element>time</a></code> element</h4>
 
   <pre class=css>@namespace url(http://www.w3.org/1999/xhtml);
 
@@ -70787,13 +71073,11 @@
 
   <h3 id=interaction-with-css><span class=secno>11.8 </span>Interaction with CSS</h3>
 
-  <!-- XXX
-
+  <!--
     Extensions to CSS
-      for drag and drop
-      for datagrid
+      for drag and drop (XXX)
+      for datagrid [v2DATAGRID]
       ...
-
   -->
 
   </div>
@@ -73156,7 +73440,6 @@
 
 <!--
 TODO (or delay):
- XXX * datagrid: cells that are links (<a href=""></a>)
  XXX * we should fix The Great Key Problem
  XXX * library of resources:
         var library = new ZipFile("data.zip");

Modified: source
===================================================================
--- source	2009-08-07 10:02:22 UTC (rev 3554)
+++ source	2009-08-07 20:16:23 UTC (rev 3555)
@@ -6397,7 +6397,7 @@
    <li value="20"><dfn><code>ABORT_ERR</code></dfn></li> <!-- actually in XHR for now -->
    <li value="21"><dfn><code>URL_MISMATCH_ERR</code></dfn></li> <!-- actually in workers for now -->
    <li value="22"><dfn><code>QUOTA_EXCEEDED_ERR</code></dfn></li> <!-- actually defined right here for now -->
-   <li value="23"><dfn><code>DATAGRID_MODEL_ERR</code></dfn></li> <!-- actually defined right here for now -->
+<!--v2DATAGRID   <li value="23"><dfn><code>DATAGRID_MODEL_ERR</code></dfn></li> --> <!-- actually defined right here for now -->
    <li value="81"><dfn><code>PARSE_ERR</code></dfn></li> <!-- actually defined in dom3ls -->
    <li value="82"><dfn><code>SERIALISE_ERR</code></dfn></li> <!-- actually defined in dom3ls -->
   </ol>
@@ -8572,7 +8572,7 @@
    <li><code>cite</code></li>
    <li><code>code</code></li>
    <li><code>command</code></li>
-   <li><code>datagrid</code></li>
+<!-- v2DATAGRID   <li><code>datagrid</code></li> -->
    <li><code>datalist</code></li>
    <li><code>del</code></li>
    <li><code>details</code></li>
@@ -8827,7 +8827,7 @@
    <li><code>audio</code> (if the <code title="attr-media-controls">controls</code> attribute is present)</li>
    <li><code>bb</code></li>
    <li><code>button</code></li>
-   <li><code>datagrid</code></li>
+<!-- v2DATAGRID   <li><code>datagrid</code></li> -->
    <li><code>details</code></li>
    <li><code>embed</code></li>
    <li><code>iframe</code></li>
@@ -13697,7 +13697,7 @@
   <ul class="brief category-list">
    <li><code>blockquote</code></li>
    <li><code>body</code></li>
-   <li><code>datagrid</code></li>
+<!-- v2DATAGRID   <li><code>datagrid</code></li> -->
    <li><code>figure</code></li>
    <li><code>td</code></li>
   </ul>
@@ -17058,7 +17058,7 @@
    <li>minimum value &le; optimum point &le; maximum value</li>
   </ul>
 
-  <!-- next two paragraphs are duplicated in the <datagrid> section -->
+  <!-- next two paragraphs are duplicated in the <datagrid> section [v2DATAGRID] -->
 
   <p><strong>UA requirements for regions of the gauge</strong>: If the
   optimum point is equal to the low boundary or the high boundary, or
@@ -38615,10 +38615,11 @@
   <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. The <code>datalist</code> element can
-  also be used with a <code>datagrid</code> element, as the source of
-  autocompletion hints for <code
-  title="datagrid-type-editable">editable</code> cells.</p>
+  <code>input</code> element. <!-- v2DATAGRID The
+  <code>datalist</code> element can also be used with a
+  <code>datagrid</code> element, as the source of autocompletion hints
+  for <code title="datagrid-type-editable">editable</code>
+  cells. --></p>
 
   <p>Each <code>option</code> element that is a descendant of the
   <code>datalist</code> element, that is not <span
@@ -41863,7 +41864,7 @@
   </div>
 
 
-
+<!-- v2DATAGRID
   <h4 id="datagrid">The <dfn><code>datagrid</code></dfn> element</h4>
 
   <dl class="element">
@@ -41877,20 +41878,20 @@
    <dd><span>Flow content</span>.</dd>
    <dt>Content attributes:</dt>
    <dd><span>Global attributes</span></dd>
-<!--v2DGS:
+<!- -v2DGS:
    <dd><code title="attr-datagrid-multiple">multiple</code></dd>
--->
+- ->
    <dd><code title="attr-datagrid-disabled">disabled</code></dd>
    <dt>DOM interface:</dt>
    <dd>
 <pre class="idl">interface <dfn>HTMLDataGridElement</dfn> : <span>HTMLElement</span> {
-<!--v2DGS:
+<!- -v2DGS:
            attribute boolean <span title="dom-datagrid-multiple">multiple</span>;
--->           attribute boolean <span title="dom-datagrid-disabled">disabled</span>;
+- ->           attribute boolean <span title="dom-datagrid-disabled">disabled</span>;
            attribute <span>DataGridListener</span> <span title="dom-datagrid-listener">listener</span>;
-<!-- v2DGS:
+<!- - v2DGS:
   readonly attribute <span>DataGridSelection</span> <span title="dom-datagrid-selection">selection</span>;
--->
+- ->
   // columns
   void <span title="dom-datagrid-addColumn">addColumn</span>(in <span>Column</span> id, in DOMString label, in DOMString type, [Optional] in HTMLImageElement icon, [Optional] in boolean sortable, [Optional] in boolean hidden);
            attribute DOMString <span title="dom-datagrid-sortColumn">sortColumn</span>;
@@ -41905,12 +41906,12 @@
   void <span title="dom-datagrid-deleteRows">deleteRows</span>(in <span>RowIDList</span> rows);
   void <span title="dom-datagrid-repaint">repaint</span>(in <span>RowID</span> row, in DOMString column);
   void <span title="dom-datagrid-clearRows">clearRows</span>();
-<!--
+<!- -
  v2: opening and closing a row
      moving a row's actual ID
       - imagine new mail moving a thread up; you just want to add the new mail to the thread and move the thread's first mail to the top
       - though actually that should probably just be done using display sorting
--->
+- ->
 };
 
 typedef DOMString <dfn>Column</dfn>;
@@ -41929,18 +41930,22 @@
    </dd>
   </dl>
 
+ <!- - v2:
+   * datagrid: cells that are links (<a href=""></a>)
+  - ->
+
   <p>The <code>datagrid</code> element <span>represents</span> an
   interactive representation of tree, list, or tabular data.</p>
 
   <p>The data being presented is provided by script using the methods
   described in the following sections.</p>
 
-<!--v2DGS:
+<!- -v2DGS:
   <p>The <dfn
   title="attr-datagrid-multiple"><code>multiple</code></dfn> attribute
   is a <span>boolean attribute</span>. When set, it indicates that the
   user can select more than one row at a time.</p>
--->
+- ->
 
   <p>The <dfn
   title="attr-datagrid-disabled"><code>disabled</code></dfn> attribute
@@ -41956,7 +41961,7 @@
 
   <div class="impl">
 
-  <!--vsDGS: multiple -->
+  <!- -vsDGS: multiple - ->
 
   <p>The <dfn
   title="dom-datagrid-disabled"><code>disabled</code></dfn> DOM
@@ -41965,9 +41970,9 @@
 
   </div>
 
-  <!-- v2DGPA: One possible thing to be added is a way to detect when a
+  <!- - v2DGPA: One possible thing to be added is a way to detect when a
   row/selection has been deleted, activated, etc, by the user (delete
-  key, enter key, etc). (v2DGPA = <datagrid> Perform Action) -->
+  key, enter key, etc). (v2DGPA = <datagrid> Perform Action) - ->
 
 
   <h5>Introduction</h5>
@@ -42050,29 +42055,29 @@
   <p>Each cell uses the type given for its column, so all cells in a
   column present the same type of information.</p>
 
-<!--v2DGS:
+<!- -v2DGS:
   <p>Selection of data in a <code>datagrid</code> operates at the row
   level. If the <code title="attr-datagrid-multiple">multiple</code>
   attribute is present, multiple rows can be selected at once,
   otherwise the user can only select one row at a time.</p>
--->
+- ->
 
-  <!-- v2DGDND: selection should draggable to and from datagrids -->
+  <!- - v2DGDND: selection should draggable to and from datagrids - ->
 
 
   <h6>Example: a <code>datagrid</code> backed by a static <code>table</code> element</h6>
 
-  <p class="XXX">...</p>
+  ...
 
 
   <h6>Example: a <code>datagrid</code> backed by nested <code>ol</code> elements</h6>
 
-  <p class="XXX">...</p>
+  ...
 
 
   <h6>Example: a <code>datagrid</code> backed by a server</h6>
 
-  <p class="XXX">...</p>
+  ...
 
 
   <h5>Populating the <code>datagrid</code></h5>
@@ -42105,8 +42110,8 @@
     listener (if any) for any rows or cells that the
     <code>datagrid</code> does not yet have information for.</p>
 
-    <!-- useful, e.g., if there is a server error and the script loses
-    track of what rows it's supposed to be reporting. -->
+    <!- - useful, e.g., if there is a server error and the script loses
+    track of what rows it's supposed to be reporting. - ->
 
    </dd>
 
@@ -42344,8 +42349,8 @@
 
     <p>Throws a <code>DATAGRID_MODEL_ERR</code> exception if the argument
     includes a row the <code>datagrid</code> doesn't know about.</p>
-    <!-- since otherwise behaviour might depend on where the user
-    scrolled! -->
+    <!- - since otherwise behaviour might depend on where the user
+    scrolled! - ->
 
    </dd>
 
@@ -42365,7 +42370,7 @@
    <dd>
 
     <p>Clears the <code>datagrid</code> of all row data, resetting it
-    to empty<!-- v2DGS:, and clears the selection-->.</p>
+    to empty<!- - v2DGS:, and clears the selection- ->.</p>
 
    </dd>
 
@@ -42745,8 +42750,8 @@
 
    </li>
 
-   <!-- v2: queue a task to fire an event, or tell the listener the
-   sort order changed, or something -->
+   <!- - v2: queue a task to fire an event, or tell the listener the
+   sort order changed, or something - ->
 
   </ol>
 
@@ -42890,10 +42895,10 @@
       <p>If the preexisting row is opening, then: increase the
       <span><code>datagrid</code> row count</span> and the row counts
       of any ancestor rows by the number of rows that the preexisting
-      row now has in its row count, then open the row.</p> <!-- we
+      row now has in its row count, then open the row.</p> <!- - we
       should also "update the <span>pending <code>datagrid</code> rows
       list</span> and the <span>pending <code>datagrid</code> cells
-      list</span> accordingly" -->
+      list</span> accordingly" - ->
 
 
      </dd>
@@ -43030,11 +43035,11 @@
       display order position is equal to or greater than the value of
       the <code>Row</code> object's second entry.</p>
 
-     <!--(Not sure how to really say this.)
+     <!- -(Not sure how to really say this.)
       <p>Update the <span>pending <code>datagrid</code> rows
       list</span> and the <span>pending <code>datagrid</code> cells
       list</span> accordingly.</p>
-     -->
+     - ->
 
      </li>
 
@@ -43527,9 +43532,9 @@
   zero, then the user agent must increase the
   <span><code>datagrid</code> row count</span> and the row counts of
   any ancestor rows by the number of rows that the newly opened row
-  has in its row count<!-- we should also "update the <span>pending
+  has in its row count<!- - we should also "update the <span>pending
   <code>datagrid</code> rows list</span> and the <span>pending
-  <code>datagrid</code> cells list</span> accordingly" -->, then must
+  <code>datagrid</code> cells list</span> accordingly" - ->, then must
   mark the row as open, then may fill in the <span>display order
   sparse data tree</span> with any information that the user agent has
   cached about the display order positions of descendants of the newly
@@ -43684,7 +43689,7 @@
     number. Otherwise, the optimum point is the midpoint between the
     minimum value and the maximum value.</p>
 
-    <!-- next two paragraphs copied from <meter>: -->
+    <!- - next two paragraphs copied from <meter>: - ->
 
     <p>If the optimum point is equal to the low boundary or the high
     boundary, or anywhere in between them, then the region between the
@@ -44186,12 +44191,12 @@
 
   void <span title="dom-listener-cellChanged">cellChanged</span>(in <span>RowID</span> row, in <span>Column</span> column, in any newValue, in any prevValue);
   <span>HTMLMenuElement</span> <span title="dom-listener-getRowMenu">getRowMenu</span>(in <span>RowID</span> row);
-<!--vsDGDND
+<!- -vsDGDND
   boolean <span title="dom-listener-canDrop">canDrop</span>(in <span>RowID</span> row, in <span>RowID</span> position, data);
   boolean <span title="dom-listener-dropped">dropped</span>(in <span>RowID</span> row, in <span>RowID</span> position, data);
---><!--v2DGPA
+- -><!- -v2DGPA
   void <span title="dom-listener-performAction">performAction</span>(in <span>RowID</span> row, in DOMString action);
--->};</pre>
+- ->};</pre>
 
   <p>The <code>DataGridListener</code> interface, once implemented by
   an object in a script and hooked up to a <code>datagrid</code> using
@@ -44321,7 +44326,7 @@
    immediately before showing the menu in question, no precautions
    need to be taken if the return value of this method changes.</dd>
 
-   <!--v2DGDND, v2DFPA-->
+   <!- -v2DGDND, v2DFPA- ->
 
   </dl>
 
@@ -44337,7 +44342,7 @@
 
 
 
-<!-- v2DGS: <datagrid> selection (search for the bits marked "..." to see what needs filling in, at a minimum)
+<!- - v2DGS: <datagrid> selection (search for the bits marked "..." to see what needs filling in, at a minimum)
 
   <h5>The selection</h5>
 
@@ -44440,18 +44445,19 @@
   <p class="note">The <code>DataGridSelection</code> interface has no
   relation to the <code>Selection</code> interface.</p>
 
--->
+- ->
 
 
-<!--vsDGDND
+<!- -vsDGDND
   <h5>Drag and drop in <code>datagrid</code>s</h5>
 
   <p><i>This section only applies to interactive user agents.</i></p>
 
   ...define drag and drop in datagrids; selectiondraggable...
+- ->
+
 -->
 
-
   <h4 id="the-command">The <dfn><code>command</code></dfn> element</h4>
 
   <dl class="element">
@@ -64153,7 +64159,7 @@
 
   </div>
 
-  <!-- v2DGS:
+  <!-- v2DATAGRID v2DGS:
   <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>
@@ -64528,7 +64534,7 @@
    would be "<code>the Oxford English</code>".</p>
   </div>
 
-  <!-- v2DGS:
+  <!-- v2DATAGRID v2DGS:
   <p class="note">The <code>Selection</code> interface has no relation
   to the <code>DataGridSelection</code> interface.</p>
   -->
@@ -73225,13 +73231,13 @@
   tag</span> may be omitted if the <code>p</code> element is
   immediately followed by an <code>address</code>,
   <code>article</code>, <code>aside</code>, <code>blockquote</code>,
-  <code>datagrid</code>, <code>dialog</code>, <code>dir</code>,
-  <code>div</code>, <code>dl</code>, <code>fieldset</code>,
-  <code>footer</code>, <code>form</code>, <code>h1</code>,
-  <code>h2</code>, <code>h3</code>, <code>h4</code>, <code>h5</code>,
-  <code>h6</code>, <code>header</code>, <code>hgroup</code>,
-  <code>hr</code>, <code>menu</code>, <code>nav</code>,
-  <code>ol</code>, <code>p</code>, <code>pre</code>,
+  <!--v2DATAGRID <code>datagrid</code>,--> <code>dialog</code>,
+  <code>dir</code>, <code>div</code>, <code>dl</code>,
+  <code>fieldset</code>, <code>footer</code>, <code>form</code>,
+  <code>h1</code>, <code>h2</code>, <code>h3</code>, <code>h4</code>,
+  <code>h5</code>, <code>h6</code>, <code>header</code>,
+  <code>hgroup</code>, <code>hr</code>, <code>menu</code>,
+  <code>nav</code>, <code>ol</code>, <code>p</code>, <code>pre</code>,
   <code>section</code>, <code>table</code>, or <code>ul</code>,
   element, or if there is no more content in the parent element and
   the parent element is not an <code>a</code> element.</p>
@@ -74481,27 +74487,27 @@
    <code>basefont</code>, <code>bgsound</code>,
    <code>blockquote</code>, <code>body</code>, <code>br</code>,
    <code>center</code>, <code>col</code>, <code>colgroup</code>,
-   <code>command</code>, <code>datagrid</code>, <code>dd</code>,
-   <code>details</code>, <code>dialog</code>, <code>dir</code>,
-   <code>div</code>, <code>dl</code>, <code>dt</code>,
-   <code>embed</code>, <code>fieldset</code>, <code>figure</code>,
-   <code>footer</code>, <code>form</code>, <code>frame</code>,
-   <code>frameset</code>, <code>h1</code>, <code>h2</code>,
-   <code>h3</code>, <code>h4</code>, <code>h5</code>, <code>h6</code>,
-   <code>head</code>, <code>header</code>, <code>hgroup</code>,
-   <code>hr</code>, <code>iframe</code>, <!-- <code>image</code>,
-   (commented out because this isn't an element that can end up on the
-   stack, so it doesn't matter) --> <code>img</code>,
-   <code>input</code>, <code>isindex</code>, <code>li</code>,
-   <code>link</code>, <code>listing</code>, <code>menu</code>,
-   <code>meta</code>, <code>nav</code>, <code>noembed</code>,
-   <code>noframes</code>, <code>noscript</code>, <code>ol</code>,
-   <code>p</code>, <code>param</code>, <code>plaintext</code>,
-   <code>pre</code>, <code>script</code>, <code>section</code>,
-   <code>select</code>, <code>spacer</code>, <code>style</code>,
-   <code>tbody</code>, <code>textarea</code>, <code>tfoot</code>,
-   <code>thead</code>, <code>title</code>, <code>tr</code>,
-   <code>ul</code>, and <code>wbr</code>.</p></dd>
+   <code>command</code>, <!--v2DDATAGRID--><code>datagrid</code>,
+   <code>dd</code>, <code>details</code>, <code>dialog</code>,
+   <code>dir</code>, <code>div</code>, <code>dl</code>,
+   <code>dt</code>, <code>embed</code>, <code>fieldset</code>,
+   <code>figure</code>, <code>footer</code>, <code>form</code>,
+   <code>frame</code>, <code>frameset</code>, <code>h1</code>,
+   <code>h2</code>, <code>h3</code>, <code>h4</code>, <code>h5</code>,
+   <code>h6</code>, <code>head</code>, <code>header</code>,
+   <code>hgroup</code>, <code>hr</code>, <code>iframe</code>, <!--
+   <code>image</code>, (commented out because this isn't an element
+   that can end up on the stack, so it doesn't matter) -->
+   <code>img</code>, <code>input</code>, <code>isindex</code>,
+   <code>li</code>, <code>link</code>, <code>listing</code>,
+   <code>menu</code>, <code>meta</code>, <code>nav</code>,
+   <code>noembed</code>, <code>noframes</code>, <code>noscript</code>,
+   <code>ol</code>, <code>p</code>, <code>param</code>,
+   <code>plaintext</code>, <code>pre</code>, <code>script</code>,
+   <code>section</code>, <code>select</code>, <code>spacer</code>,
+   <code>style</code>, <code>tbody</code>, <code>textarea</code>,
+   <code>tfoot</code>, <code>thead</code>, <code>title</code>,
+   <code>tr</code>, <code>ul</code>, and <code>wbr</code>.</p></dd>
 
    <dt><dfn>Scoping</dfn></dt>
    <dd><p>The following HTML elements introduce new <span title="has
@@ -77586,9 +77592,10 @@
 
    <!-- the normal ones -->
    <dt>A start tag whose tag name is one of: "address", "article",
-   "aside", "blockquote", "center", "datagrid", "details", "dialog",
-   "dir", "div", "dl", "fieldset", "figure", "footer", "header",
-   "hgroup", "menu", "nav", "ol", "p", "section", "ul"</dt>
+   "aside", "blockquote", "center", <!--v2DATAGRID-->"datagrid",
+   "details", "dialog", "dir", "div", "dl", "fieldset", "figure",
+   "footer", "header", "hgroup", "menu", "nav", "ol", "p", "section",
+   "ul"</dt>
    <dd>
 
     <!-- As of May 2008 this doesn't match any browser exactly, but is
@@ -77797,10 +77804,10 @@
 
    <!-- the normal ones -->
    <dt>An end tag whose tag name is one of: "address", "article",
-   "aside", "blockquote", "center", "datagrid", "details", "dialog",
-   "dir", "div", "dl", "fieldset", "figure", "footer", "header",
-   "hgroup", "listing", "menu", "nav", "ol", "pre", "section",
-   "ul"</dt>
+   "aside", "blockquote", "center", <!--v2DATAGRID-->"datagrid",
+   "details", "dialog", "dir", "div", "dl", "fieldset", "figure",
+   "footer", "header", "hgroup", "listing", "menu", "nav", "ol",
+   "pre", "section", "ul"</dt>
    <dd>
 
     <p>If the <span>stack of open elements</span> does not <span
@@ -82907,16 +82914,16 @@
   contents of the element.</p>
 
 
-
+<!--v2DATAGRID
   <h4>The <code>datagrid</code> element</h4>
 
-  <p class="XXX">This section will probably include details on how to
-  render DATAGRID (including <span id="datagridPseudos">its
-  pseudo-elements</span>), drag-and-drop, etc, in a visual medium, in
-  concert with CSS. Implementation experience is desired before this
-  section is filled in.</p>
+  This section will probably include details on how to render DATAGRID
+  (including <span id="datagridPseudos">its pseudo-elements</span>),
+  drag-and-drop, etc, in a visual medium, in concert with
+  CSS. Implementation experience is desired before this section is
+  filled in.
+-->
 
-
   <h4>The <code>details</code> element</h4>
 
   <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
@@ -84026,13 +84033,11 @@
 
   <h3>Interaction with CSS</h3>
 
-  <!-- XXX
-
+  <!--
     Extensions to CSS
-      for drag and drop
-      for datagrid
+      for drag and drop (XXX)
+      for datagrid [v2DATAGRID]
       ...
-
   -->
 
   </div>
@@ -86794,7 +86799,6 @@
 
 <!--
 TODO (or delay):
- XXX * datagrid: cells that are links (<a href=""></a>)
  XXX * we should fix The Great Key Problem
  XXX * library of resources:
         var library = new ZipFile("data.zip");



More information about the Commit-Watchers mailing list