HTML Standard Tracker

Filter

File a bug

SVNBugCommentTime (UTC)
3555Remove <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.2009-08-07 20:16
@@ -6390,21 +6390,21 @@ interface <dfn>DOMStringMap</dfn> {};</pre>
    <li value="13"><dfn><code>INVALID_MODIFICATION_ERR</code></dfn></li>
    <li value="14"><dfn><code>NAMESPACE_ERR</code></dfn></li>
    <li value="15"><dfn><code>INVALID_ACCESS_ERR</code></dfn></li>
    <li value="16"><dfn><code>VALIDATION_ERR</code></dfn></li>
    <li value="17"><dfn><code>TYPE_MISMATCH_ERR</code></dfn></li>
    <li value="18"><dfn><code>SECURITY_ERR</code></dfn></li> <!-- actually in XHR for now -->
    <li value="19"><dfn><code>NETWORK_ERR</code></dfn></li> <!-- actually in XHR for now -->
    <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>
 
 
   <div class="impl">
 
   <h4>Garbage collection</h4>
 
   <p>There is an <dfn>implied strong reference</dfn> from any DOM
@@ -8565,21 +8565,21 @@ background: transparent">blue&lt;/span>.&lt;/p></pre>
    <li><code>b</code></li>
    <li><code>bb</code></li>
    <li><code>bdo</code></li>
    <li><code>blockquote</code></li>
    <li><code>br</code></li>
    <li><code>button</code></li>
    <li><code>canvas</code></li>
    <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>
    <li><code>dfn</code></li>
    <li><code>dialog</code></li>
    <li><code>div</code></li>
    <li><code>dl</code></li>
    <li><code>em</code></li>
    <li><code>embed</code></li>
    <li><code>fieldset</code></li>
@@ -8820,21 +8820,21 @@ http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C%21DOCTYPE%20HTML%3E%0
 -->
 
   <p><dfn>Interactive content</dfn> is content that is specifically
   intended for user interaction.</p>
 
   <ul class="brief category-list">
    <li><code>a</code></li>
    <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>
    <li><code>img</code> (if the <code title="attr-hyperlink-usemap">usemap</code> attribute is present)</li>
    <li><code>input</code> (if the <code title="attr-input-type">type</code> attribute is <em>not</em> in the <span title="attr-input-type-hidden">Hidden</span> state)</li>
    <li><code>keygen</code></li>
    <li><code>label</code></li>
    <li><code>menu</code> (if the <code title="attr-menu-type">type</code> attribute is in the <span title="tool bar state">tool bar</span> state)</li>
    <li><code>object</code> (if the <code title="attr-hyperlink-usemap">usemap</code> attribute is present)<!-- see also comment in <object> section --></li>
    <li><code>select</code></li>
@@ -13690,21 +13690,21 @@ isn't his only passion. He also enjoys other pleasures.&lt;/p>
 
   <p>Certain elements are said to be <dfn title="sectioning
   root">sectioning roots</dfn>, including <code>blockquote</code> and
   <code>td</code> elements. These elements can have their own
   outlines, but the sections and headings inside these elements do not
   contribute to the outlines of their ancestors.</p>
 
   <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>
 
   <div class="example">
    <p>For the following fragment:</p>
    <pre>&lt;body&gt;
  &lt;h1&gt;Foo&lt;/h1&gt;
  &lt;h2&gt;Bar&lt;/h2&gt;
  &lt;blockquote&gt;
@@ -17051,21 +17051,21 @@ and a height of &lt;meter>2cm&lt;/meter>.&lt;/p> &lt;!-- <strong>BAD!</strong> -
 
   <p>All of which will result in the following inequalities all being
   true:</p>
 
   <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 -->
+  <!-- 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
   the low and high parts, if any, must be treated as
   suboptimal. Otherwise, if the optimum point is less than the low
   boundary, then the region between the minimum value and the low
   boundary must be treated as the optimum region, the region between
   the low boundary and the high boundary must be treated as a
@@ -38608,24 +38608,25 @@ interface <dfn>HTMLSelectElement</dfn> : <span>HTMLElement</span> {
   other controls. The contents of the element represents fallback
   content for legacy user agents, intermixed with <code>option</code>
   elements that represent the predefined options. In the rendering,
   the <code>datalist</code> element <span>represents</span>
   nothing<span class="impl"> and it, along with its children, should
   be hidden</span>.</p>
 
   <p>The <code>datalist</code> element is hooked up to an
   <code>input</code> element using the <code
   title="attr-input-list">list</code> attribute on the
-  <code>input</code> element. 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
   title="concept-option-disabled">disabled</span>, and whose <span
   title="concept-option-value">value</span> is a string that isn't the
   empty string, represents a suggestion. Each suggestion has a <span
   title="concept-option-value">value</span> and a <span
   title="concept-option-label">label</span>.
 
   <dl class="domintro">
@@ -41856,125 +41857,129 @@ interface <dfn>HTMLOptionElement</dfn> : <span>HTMLElement</span> {
   title="attr-details-open">open</code> attribute from the
   element.</p>
 
   <p>The <dfn title="dom-details-open"><code>open</code></dfn>
   attribute must <span>reflect</span> the <code
   title="attr-details-open">open</code> content attribute.</p>
 
   </div>
 
 
-
+<!-- v2DATAGRID
   <h4 id="datagrid">The <dfn><code>datagrid</code></dfn> element</h4>
 
   <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 <span>flow content</span> is expected.</dd>
    <dt>Content model:</dt>
    <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>;
            attribute boolean <span title="dom-datagrid-sortAscending">sortAscending</span>;
   void <span title="dom-datagrid-clearColumns">clearColumns</span>();
 
   // rows
   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>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>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>
 
+ <!- - 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
   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>datagrid</code> elements must react
   to users in particular ways do not apply when the
   <code>datagrid</code> is disabled.</span></p>
 
   <div class="impl">
 
-  <!--vsDGS: multiple -->
+  <!- -vsDGS: multiple - ->
 
   <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>Introduction</h5>
 
   <p><i>This section is non-normative.</i></p>
 
   <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>
@@ -42043,43 +42048,43 @@ interface <dfn>RenderingContext2DCallback</dfn> {
 
   <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">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>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>
 
   <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
@@ -42098,22 +42103,22 @@ interface <dfn>RenderingContext2DCallback</dfn> {
    </dd>
 
 
    <dt><var title="">datagrid</var> . <code title="dom-datagrid-renotify">renotify</code>()</dt>
    <dd>
 
     <p>Causes the <code>datagrid</code> to resend notifications to the
     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>
 
 
    <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>datagrid</code>.</p>
 
     <p>If a column with the given identifier has already been added,
@@ -42337,42 +42342,42 @@ interface <dfn>RenderingContext2DCallback</dfn> {
    <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>datagrid</code>, and
     updates the number of rows known to be in the
     <code>datagrid</code> accordingly. The argument is an array of
     <code>RowID</code> objects identifying the rows to remove.</p>
 
     <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>
 
 
    <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">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">clearRows</code>()</dt>
    <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>
 
   </dl>
 
 
   <div class="impl">
 
   <h6>The listener</h6>
 
@@ -42738,22 +42743,22 @@ interface <dfn>RenderingContext2DCallback</dfn> {
 
    </li>
 
    <li>
 
     <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
   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
@@ -42883,24 +42888,24 @@ interface <dfn>RenderingContext2DCallback</dfn> {
       these steps; otherwise, if the fifth entry is false, then close
       the row; otherwise, open the row.</p>
 
       <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
       <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>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>
@@ -43023,25 +43028,25 @@ interface <dfn>RenderingContext2DCallback</dfn> {
      </li>
 
      <li>
 
       <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>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 <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
@@ -43520,23 +43525,23 @@ interface <dfn>RenderingContext2DCallback</dfn> {
   <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
   <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
   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 <span><code>datagrid</code> update display
   algorithm</span>.</p>
@@ -43677,21 +43682,21 @@ interface <dfn>RenderingContext2DCallback</dfn> {
     <p>If there is a fourth number, then that number is the low
     boundary. Otherwise, the low boundary is the minimum value.</p>
 
     <p>If there is a fifth number, then that number is the high
     boundary. Otherwise, the high boundary is the maximum value.</p>
 
     <p>If there is a sixth number, then the optimal point is the sixth
     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
     low and high boundaries of the gauge must be treated as the
     optimum region, and the low and high parts, if any, must be
     treated as suboptimal. Otherwise, if the optimum point is less
     than the low boundary, then the region between the minimum value
     and the low boundary must be treated as the optimum region, the
     region between the low boundary and the high boundary must be
     treated as a suboptimal region, and the region between the high
@@ -44179,26 +44184,26 @@ interface <dfn>RenderingContext2DCallback</dfn> {
 [NoInterfaceObject] interface <dfn>DataGridListener</dfn> {
   void <span title="dom-listener-initialize">initialize</span>(in <span>HTMLDataGridElement</span> datagrid);
 
   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 <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
   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>
@@ -44314,37 +44319,37 @@ interface <dfn>RenderingContext2DCallback</dfn> {
 
    <dt><dfn title="dom-listener-getRowMenu"><code>getRowMenu(<var title="">row</var>)</code></dfn></dt>
 
    <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">
 
   <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
   is null.</p>
 
   </div>
 
 
 
-<!-- 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>
 
   <pre class="idl">interface <dfn>DataGridSelection</dfn> {
   readonly attribute unsigned long <span title="dom-DataGridSelection-length">length</span>;
   [IndexGetter] <span>RowID</span> <span title="dom-DataGridSelection-item">item</span>(in unsigned long index);
   boolean <span title="dom-DataGridSelection-isSelected">isSelected</span>(in <span>RowID</span> row);
   void <span title="dom-DataGridSelection-setSelected">setSelected</span>(in <span>RowID</span> row, in boolean selected);
   void <span title="dom-DataGridSelection-selectAll">selectAll</span>();
   void <span title="dom-DataGridSelection-clear">clear</span>();
@@ -44433,31 +44438,32 @@ interface <dfn>RenderingContext2DCallback</dfn> {
   title="attr-datagrid-multiple">multiple</code> attribute is
   absent.</p>
 
   ...event on selection change?...
 
   </div>
 
   <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">
    <dt>Categories</dt>
    <dd><span>Metadata content</span>.</dd>
    <dd><span>Flow content</span>.</dd>
    <dd><span>Phrasing content</span>.</dd>
    <dt>Contexts in which this element may be used:</dt>
    <dd>Where <span>metadata content</span> is expected.</dd>
@@ -64146,21 +64152,21 @@ interface <dfn>SQLTransactionSync</dfn> {
   selection. For example, if the user has just selected part of a
   word, the user agent could ignore attempts to use the API call to
   immediately unselect the selection altogether, but could allow
   attempts to change the selection to select the entire word.</p>
 
   <p>User agents may also allow the user to create selections that are
   not exposed to the API.</p>
 
   </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>
   -->
   <p>The <code>select</code> element also has a selection, indicating
   which items have been picked by the user. This is not discussed in
   this section.</p>
 
   <p class="note">This specification does not specify how selections
   are presented to the user. The Selectors specification, in
@@ -64521,21 +64527,21 @@ interface <dfn>SQLTransactionSync</dfn> {
 
   <div class="example">
    <p>In the following document fragment, the emphasized parts
    indicate the selection.</p>
    <pre>&lt;p>The cute girl likes <em>the </em>&lt;cite><em>Oxford English</em> Dictionary&lt;/cite>.&lt;/p></pre>
    <p>If a script invoked <code
    title="">window.getSelection().toString()</code>, the return value
    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>
   -->
 
 
   <h4 id="textFieldSelection">APIs for the text field selections</h4>
 
   <!-- v2 idea: DOM Range APIs to expose the textarea/input edited
   value (ack martijnw) -->
 
@@ -73218,27 +73224,27 @@ interface <dfn>MessagePort</dfn> {
   tag</span> may be omitted if the <code>dd</code> element is
   immediately followed by another <code>dd</code> element or a
   <code>dt</code> element, or if there is no more content in the
   parent element.</p>
 
   <!-- </p> -->
   <p>A <code>p</code> element's <span title="syntax-end-tag">end
   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>
 
   <!-- </rt> -->
   <p>An <code>rt</code> element's <span title="syntax-end-tag">end
   tag</span> may be omitted if the <code>rt</code> element is
   immediately followed by an <code>rt</code> or <code>rp</code>
   element, or if there is no more content in the parent element.</p>
 
@@ -74474,41 +74480,41 @@ interface <dfn>MessagePort</dfn> {
   <dl>
 
    <dt><dfn>Special</dfn></dt>
 
    <dd><p>The following HTML elements have varying levels of special
    parsing rules: <code>address</code>, <code>area</code>,
    <code>article</code>, <code>aside</code>, <code>base</code>,
    <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
    an element in scope">scopes</span> for various parts of the
    parsing: <code>applet</code>, <code>button</code>,
    <code>caption</code>, <code>html</code>, <code>marquee</code>,
    <code>object</code>, <code>table</code>, <code>td</code>,
    <code>th</code>, and SVG's <code>foreignObject</code>.</p></dd>
 
    <dt><dfn>Formatting</dfn></dt>
@@ -77579,23 +77585,24 @@ document.body.appendChild(text);
 
     <p class="note">The fake end tag token here can only be
     ignored in the <span>fragment case</span>.</p>
 
    </dd>
 
    <!-- start tags for non-phrasing flow content elements -->
 
    <!-- 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
     as close to what IE does as I can get without doing the non-tree
     DOM nonsense, and thus should actually afford better compatibility
     when implemented by the other browsers. -->
 
     <p>If the <span>stack of open elements</span> <span title="has
     an element in scope">has a <code>p</code> element in
     scope</span>, then act as if an end tag with the tag name
@@ -77790,24 +77797,24 @@ document.body.appendChild(text);
     than character tokens (and the end-of-file token), because
     there is no way to switch the <span>content model flag</span>
     out of the PLAINTEXT state.</p>
 
    </dd>
 
    <!-- end tags for non-phrasing flow content elements -->
 
    <!-- 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
     title="has an element in scope">have an element in scope</span>
     with the same tag name as that of the token, then this is a
     <span>parse error</span>; ignore the token.</p>
 
     <p>Otherwise, run these steps:</p>
 
     <ol>
@@ -82900,29 +82907,29 @@ bb:empty { binding: <i title="">bb</i>; }</pre>
   <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
 
 button { binding: <i title="">button</i>; }</pre>
 
   <p>When the <i title="">button</i> binding applies to a
   <code>button</code> element, the element is expected to render as an
   'inline-block' box rendered as a button whose contents are the
   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);
 
 details { binding: <i title="">details</i>; }</pre>
 
   <p>When the <i title="">details</i> binding applies to a
   <code>details</code> element, the element is expected to render as a
   'block' box with its 'padding-left' property set to '40px'. The
@@ -84019,27 +84026,25 @@ time:empty { binding: <i title="">time</i>; }</pre>
 
   <p>When the user actually <span title="obtain a physical
   form">obtains a physical form</span> (or a representation of a
   physical form) of a <code>Document</code>, the user agent is
   expected to create a new view with the print media, render the
   result, and the discard the view.</p>
 
 
   <h3>Interaction with CSS</h3>
 
-  <!-- XXX
-
+  <!--
     Extensions to CSS
-      for drag and drop
-      for datagrid
+      for drag and drop (XXX)
+      for datagrid [v2DATAGRID]
       ...
-
   -->
 
   </div>
 
   <h4>Selectors</h4>
 
   <p>Attribute and element <em>names</em> of <span>HTML
   elements</span> in <span>HTML documents</span> must be treated as
   <span>ASCII case-insensitive</span>.</p>
 
@@ -86787,21 +86792,20 @@ time:empty { binding: <i title="">time</i>; }</pre>
   to the attendees of the W3C Workshop on Web Applications and
   Compound Documents for inspiration, to the #mrt crew, the #mrt.no
   crew, and the #whatwg crew, and to Pillar and Hedral for their ideas
   and support.</p>
 
   <!-- Hopefully Kam won't notice he's covered by these
   acknowledgements three times! -->
 
 <!--
 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");
         library.onload = function() {
           var sound1 = library.getAudio("sound1.wav"); // returns an Audio object
           var image1 = library.getImage("image1.png"); // returns an HTMLImageElement
           var doc1 = library.getXMLDocument("doc1.xml"); // returns a Document
           var doc2 = library.getHTMLDocument("doc1.html"); // returns an HTMLDocument
         }
        or:

|