HTML5 Tracker

Diff (omit for latest revision)
Filter

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

SVNBugCommentTime (UTC)
627613019Attempt to reorganise the rendering section to make it more usable for implementors2011-07-02 00:12
Index: source
===================================================================
--- source	(revision 6275)
+++ source	(revision 6276)
@@ -104032,15 +104032,10 @@
   element is not <span>being rendered</span>, though this might be
   overridden by the style sheets.</p>
 
-  </div>
 
 
-  <div class="impl">
-
   <h3>The CSS user agent style sheet and presentational hints</h3>
 
-  <h4>Introduction</h4>
-
   <p>The CSS rules given in these subsections are, except where
   otherwise specified, expected to be used as part of the user-agent
   level style sheet defaults for all documents that contain <span>HTML
@@ -104098,143 +104093,43 @@
   the dimension was an integer, and with the value given as a
   percentage if the dimension was a percentage.</p>
 
-  </div>
+  <p>When a user agent is to <dfn>align descendants</dfn> of a node,
+  the user agent is expected to align only those descendants that have
+  both their 'margin-left' and 'margin-right' properties computing to
+  a value other than 'auto', that are over-constrained and that have
+  one of those two margins with a used value forced to a greater
+  value, and that do not themselves have an applicable <code
+  title="attr-align">align</code> attribute. When multiple elements
+  are to <span title="align descendants">align</span> a particular
+  descendant, the most deeply nested such element is expected to
+  override the others.</p>
 
 
-  <div class="impl">
 
-  <h4>Display types</h4>
+  <h3>Non-replaced elements</h3>
 
+
+  <h4>Hidden elements</h4>
+
   <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
 
 [hidden], area, base, basefont, command, datalist, head,
 input[type=hidden], link, menu[type=context], meta, noembed, noframes,
 param, rp, script, source, style, track, title { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
   display: none;
-}
+}</pre>
 
-address, article, aside, blockquote, body, center, dd, dir, div, dl,
-dt, figure, figcaption, footer, form, h1, h2, h3, h4, h5, h6, header,
-hgroup, hr, html, legend, listing, menu, nav, ol, p, plaintext, pre,
-section, summary, ul, xmp { display: block; unicode-bidi: isolate; }
-
-table { display: table; unicode-bidi: isolate; }
-caption { display: table-caption; unicode-bidi: isolate; }
-colgroup, colgroup[hidden] { display: table-column-group; unicode-bidi: isolate; }
-col, col[hidden] { display: table-column; unicode-bidi: isolate; }
-thead, thead[hidden] { display: table-header-group; unicode-bidi: isolate; }
-tbody, tbody[hidden] { display: table-row-group; unicode-bidi: isolate; }
-tfoot, tfoot[hidden] { display: table-footer-group; unicode-bidi: isolate; }
-tr, tr[hidden] { display: table-row; unicode-bidi: isolate; }
-td, th, td[hidden], th[hidden] { display: table-cell; unicode-bidi: isolate; }
-
-colgroup[hidden], col[hidden], thead[hidden], tbody[hidden],
-tfoot[hidden], tr[hidden], td[hidden], th[hidden] {
-  visibility: collapse;
-}
-
-li { display: list-item; unicode-bidi: isolate; }
-
-ruby { display: ruby; }
-rt { display: ruby-text; }</pre>
-
-  <!-- del, ins, and map are inline. -->
-
-  <p>For the purposes of the CSS table model, the <code>col</code>
-  element is expected to be treated as if it was present as many times
-  as its <code title="attr-col-span">span</code> attribute <span
-  title="rules for parsing non-negative
-  integers">specifies</span>.</p>
-
-  <p>For the purposes of the CSS table model, the
-  <code>colgroup</code> element, if it contains no <code>col</code>
-  element, is expected to be treated as if it had as many such
-  children as its <code title="attr-colgroup-span">span</code>
-  attribute <span title="rules for parsing non-negative
-  integers">specifies</span>.</p>
-
-  <p>For the purposes of the CSS table model, the <code
-  title="attr-tdth-colspan">colspan</code> and <code
-  title="attr-tdth-rowspan">rowspan</code> attributes on
-  <code>td</code> and <code>th</code> elements are expected to <span
-  title="rules for parsing non-negative integers">provide</span> the
-  <i>special knowledge</i> regarding cells spanning rows and
-  columns.</p>
-
-  <p>For the purposes of the CSS ruby model, runs of children of
-  <code>ruby</code> elements that are not <code>rt</code> or
-  <code>rp</code> elements are expected to be wrapped in anonymous
-  boxes whose 'display' property has the value 'ruby-base'. <a
-  href="#refsCSSRUBY">[CSSRUBY]</a></p>
-
-  <p>User agents that do not support correct ruby rendering are
-  expected to render parentheses around the text of <code>rt</code>
-  elements in the absence of <code>rp</code> elements.</p>
-
   <p>The user agent is expected to hide <code>noscript</code> elements
   for whom <span title="concept-n-script">scripting is enabled</span>,
   irrespective of CSS rules.</p>
 
-  <p>In <span>HTML documents</span>, the user agent is expected to
-  hide <code>form</code> elements that are children of
-  <code>table</code>, <code>thead</code>, <code>tbody</code>,
-  <code>tfoot</code>, or <code>tr</code> elements, irrespective of CSS
-  rules.</p>
 
-  </div>
+  <h4>The page</h4>
 
-
-  <div class="impl">
-
-  <h4>Margins and padding</h4>
-
   <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
 
-blockquote, dir, dl, figure, listing, menu, ol, p, plaintext,
-pre, ul, xmp {
-  margin-top: 1em; margin-bottom: 1em;
-}
+html, body { display: block; }</pre>
 
-dir dir, dir dl, dir menu, dir ol, dir ul,
-dl dir, dl dl, dl menu, dl ol, dl ul,
-menu dir, menu dl, menu menu, menu ol, menu ul,
-ol dir, ol dl, ol menu, ol ol, ol ul,
-ul dir, ul dl, ul menu, ul ol, ul ul {
-  margin-top: 0; margin-bottom: 0;
-}
-
-h1 { margin-top: 0.67em; margin-bottom: 0.67em; }
-h2 { margin-top: 0.83em; margin-bottom: 0.83em; }
-h3 { margin-top: 1.00em; margin-bottom: 1.00em; }
-h4 { margin-top: 1.33em; margin-bottom: 1.33em; }
-h5 { margin-top: 1.67em; margin-bottom: 1.67em; }
-h6 { margin-top: 2.33em; margin-bottom: 2.33em; }
-
-dd { margin-left: 40px; } /* <span>LTR-specific</span>: use 'margin-right' for rtl elements */
-dir, menu, ol, ul { padding-left: 40px; } /* <span>LTR-specific</span>: use 'padding-right' for rtl elements */
-blockquote, figure { margin-left: 40px; margin-right: 40px; }
-
-table { border-spacing: 2px; border-collapse: separate; }
-td, th { padding: 1px; }</pre>
-
-  <p>The <code>article</code>, <code>aside</code>, <code>nav</code>,
-  and <code>section</code> elements are expected to affect the margins
-  of <code>h1</code> elements, based on the nesting depth. If <var
-  title="">x</var> is a selector that matches elements that are either
-  <code>article</code>, <code>aside</code>, <code>nav</code>, or
-  <code>section</code> elements, then the following rules capture what
-  is expected:</p>
-
-  <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
-
-<var title="">x</var> h1 { margin-top: 0.83em; margin-bottom: 0.83em; }
-<var title="">x</var> <var title="">x</var> h1 { margin-top: 1.00em; margin-bottom: 1.00em; }
-<var title="">x</var> <var title="">x</var> <var title="">x</var> h1 { margin-top: 1.33em; margin-bottom: 1.33em; }
-<var title="">x</var> <var title="">x</var> <var title="">x</var> <var title="">x</var> h1 { margin-top: 1.67em; margin-bottom: 1.67em; }
-<var title="">x</var> <var title="">x</var> <var title="">x</var> <var title="">x</var> <var title="">x</var> h1 { margin-top: 2.33em; margin-bottom: 2.33em; }</pre>
-
-  <hr>
-
   <p>For each property in the table below, given a <code>body</code>
   element, the first attribute that exists <span>maps to the pixel
   length property</span> on the <code>body</code> element. If none of
@@ -104347,148 +104242,109 @@
 
   <hr>
 
-  <p>The <code>table</code> element's <code
-  title="attr-table-cellspacing">cellspacing</code> attribute
-  <span>maps to the pixel length property</span> 'border-spacing' on the
-  element.</p>
+  <p>When a <code>Document</code> is in <span>quirks mode</span>,
+  vertical margins on <span>HTML elements</span> at the top or bottom
+  of <code>body</code> elements are expected to be collapsed to
+  zero.</p>
 
-  <p>The <code>table</code> element's <code
-  title="attr-table-cellpadding">cellpadding</code> attribute <span
-  title="maps to the pixel length property">maps to the pixel length
-  properties</span> 'padding-top', 'padding-right', 'padding-bottom',
-  and 'padding-left' of any <code>td</code> and <code>th</code>
-  elements that have corresponding <span
-  title="concept-cell">cells</span> in the <span
-  title="concept-table">table</span> corresponding to the
-  <code>table</code> element.</p>
+  <hr>
 
-  <p>The <code>table</code> element's <code
-  title="attr-table-hspace">hspace</code> attribute <span title="maps
-  to the dimension property">maps to the dimension properties</span>
-  'margin-left' and 'margin-right' on the <code>table</code>
-  element.</p>
+  <p>When a <code>body</code> element has a <code
+  title="attr-background">background</code> attribute set to a
+  non-empty value, the new value is expected to be <span
+  title="resolve a url">resolved</span> relative to the element, and
+  if this is successful, the user agent is expected to treat the
+  attribute as a <span title="presentational hints">presentational
+  hint</span> setting the element's 'background-image' property to the
+  resulting <span>absolute URL</span>.</p>
 
-  <p>The <code>table</code> element's <code
-  title="attr-table-vspace">vspace</code> attribute <span title="maps
-  to the dimension property">maps to the dimension properties</span>
-  'margin-top' and 'margin-bottom' on the <code>table</code>
-  element.</p>
+  <p>When a <code>body</code> element has a <code
+  title="">bgcolor</code> attribute set, the new value is expected to
+  be parsed using the <span>rules for parsing a legacy color
+  value</span>, and if that does not return an error, the user agent
+  is expected to treat the attribute as a <span title="presentational
+  hints">presentational hint</span> setting the element's
+  'background-color' property to the resulting color.</p>
 
-  <p>The <code>table</code> element's <code
-  title="attr-table-height">height</code> attribute <span>maps to the
-  dimension property</span> 'height' on the <code>table</code>
-  element.</p>
+  <p>When a <code>body</code> element has a <code
+  title="attr-body-text">text</code> attribute, its value is expected
+  to be parsed using the <span>rules for parsing a legacy color
+  value</span>, and if that does not return an error, the user
+  agent is expected to treat the attribute as a <span
+  title="presentational hints">presentational hint</span> setting the
+  element's 'color' property to the resulting color.</p>
 
-  <p>The <code>table</code> element's <code
-  title="attr-table-width">width</code> attribute <span>maps to the
-  dimension property</span> 'width' on the <code>table</code>
-  element.</p>
+  <p>When a <code>body</code> element has a <code
+  title="attr-body-link">link</code> attribute, its value is expected
+  to be parsed using the <span>rules for parsing a legacy color
+  value</span>, and if that does not return an error, the user agent
+  is expected to treat the attribute as a <span title="presentational
+  hints">presentational hint</span> setting the 'color' property of
+  any element in the <code>Document</code> matching the ':link'
+  pseudo-class to the resulting color.</p>
 
-  <p>The <code>col</code> element's <code
-  title="attr-col-width">width</code> attribute <span>maps to the
-  dimension property</span> 'width' on the <code>col</code>
-  element.</p>
+  <p>When a <code>body</code> element has a <code
+  title="attr-body-vlink">vlink</code> attribute, its value is
+  expected to be parsed using the <span>rules for parsing a legacy
+  color value</span>, and if that does not return an error, the user
+  agent is expected to treat the attribute as a <span
+  title="presentational hints">presentational hint</span> setting the
+  'color' property of any element in the <code>Document</code>
+  matching the ':visited' pseudo-class to the resulting color.</p>
 
-  <p>The <code>tr</code> element's <code
-  title="attr-tr-height">height</code> attribute <span>maps to the
-  dimension property</span> 'height' on the <code>tr</code>
-  element.</p>
+  <p>When a <code>body</code> element has a <code
+  title="attr-body-alink">alink</code> attribute, its value is
+  expected to be parsed using the <span>rules for parsing a legacy
+  color value</span>, and if that does not return an error, the user
+  agent is expected to treat the attribute as a <span
+  title="presentational hints">presentational hint</span> setting the
+  'color' property of any element in the <code>Document</code>
+  matching the ':active' pseudo-class and either the ':link'
+  pseudo-class or the ':visited' pseudo-class to the resulting
+  color.</p>
 
-  <p>The <code>td</code> and <code>th</code> elements' <code
-  title="attr-tdth-height">height</code> attributes <span title="maps
-  to the dimension property">map to the dimension property</span> 'height'
-  on the element.</p>
 
-  <p>The <code>td</code> and <code>th</code> elements' <code
-  title="attr-tdth-width">width</code> attributes <span title="maps
-  to the dimension property">map to the dimension property</span> 'width'
-  on the element.</p>
 
-  <hr>
+  <h4>Flow content</h4>
 
-  <p>In <span>quirks mode</span>, the following rules are also
-  expected to apply:</p>
+  <!-- del, ins, and map are inline. -->
 
   <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
 
-form { margin-bottom: 1em; }</pre>
+address, blockquote, center, div, figure, figcaption, footer, form,
+header, hr, legend, listing, p, plaintext, pre, summary, xmp {
+  display: block; unicode-bidi: isolate;
+}
 
-  <p>When a <code>Document</code> is in <span>quirks mode</span>,
-  vertical margins on <span>HTML elements</span> at the top or bottom
-  of <code>body</code>, <code>td</code>, or <code>th</code> elements
-  are expected to be collapsed to zero.</p>
+blockquote, figure, listing, p, plaintext, pre, xmp {
+  margin-top: 1em; margin-bottom: 1em;
+}
 
-  </div>
+blockquote, figure { margin-left: 40px; margin-right: 40px; }
 
+address { font-style: italic; }
+listing, plaintext, pre, xmp {
+  font-family: monospace; white-space: pre;
+}</pre>
 
-  <div class="impl">
+  <p>The following rules are also expected to apply, as
+  <span>presentational hints</span>:</p>
 
-  <h4>Alignment</h4>
-
   <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
 
-thead, tbody, tfoot, table > tr { vertical-align: middle; }
-tr, td, th { vertical-align: inherit; }
-sub { vertical-align: sub; }
-sup { vertical-align: super; }</pre>
+pre[wrap] { white-space: pre-wrap; }</pre>
 
-  <hr>
+  <p>In <span>quirks mode</span>, the following rules are also
+  expected to apply:</p>
 
-  <p>The following rules are also expected to apply, as
-  <span>presentational hints</span>:</p>
-
   <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
 
-table[align=left] { float: left; } /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
-table[align=right] { float: right; } /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
-table[align=center], table[align=abscenter],
-table[align=absmiddle], table[align=middle] { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
-  margin-left: auto; margin-right: auto;
-}
-thead[align=absmiddle], tbody[align=absmiddle], tfoot[align=absmiddle],
-tr[align=absmiddle], td[align=absmiddle], th[align=absmiddle] { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
-  text-align: center;
-}
+form { margin-bottom: 1em; }</pre>
 
-caption[align=bottom] { caption-side: bottom; } /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
-p[align=left], h1[align=left], h2[align=left], h3[align=left],
-h4[align=left], h5[align=left], h6[align=left] { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
-  text-align: left;
-}
-p[align=right], h1[align=right], h2[align=right], h3[align=right],
-h4[align=right], h5[align=right], h6[align=right] { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
-  text-align: right;
-}
-p[align=center], h1[align=center], h2[align=center], h3[align=center],
-h4[align=center], h5[align=center], h6[align=center] { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
-  text-align: center;
-}
-p[align=justify], h1[align=justify], h2[align=justify], h3[align=justify],
-h4[align=justify], h5[align=justify], h6[align=justify] { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
-  text-align: justify;
-}
-thead[valign=top], tbody[valign=top], tfoot[valign=top],
-tr[valign=top], td[valign=top], th[valign=top] { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
-  vertical-align: top;
-}
-thead[valign=middle], tbody[valign=middle], tfoot[valign=middle],
-tr[valign=middle], td[valign=middle], th[valign=middle] { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
-  vertical-align: middle;
-}
-thead[valign=bottom], tbody[valign=bottom], tfoot[valign=bottom],
-tr[valign=bottom], td[valign=bottom], th[valign=bottom] { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
-  vertical-align: bottom;
-}
-thead[valign=baseline], tbody[valign=baseline], tfoot[valign=baseline],
-tr[valign=baseline], td[valign=baseline], th[valign=baseline] { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
-  vertical-align: baseline;
-}</pre>
+  <hr>
 
-  <p>The <code>center</code> element, the <code>caption</code> element
-  unless specified otherwise below, and the <code>div</code>,
-  <code>thead</code>, <code>tbody</code>, <code>tfoot</code>,
-  <code>tr</code>, <code>td</code>, and <code>th</code> elements when
-  they have an <code title="attr-div-align">align</code> attribute
+  <p>The <code>center</code> element, and the <code>div</code> element
+  when it has an <code title="attr-div-align">align</code> attribute
   whose value is an <span>ASCII case-insensitive</span> match for
   either the string "<code title="">center</code>" or the string
   "<code title="">middle</code>", are expected to center text within
@@ -104497,205 +104353,108 @@
   hint</span>, and to <span>align descendants</span> to the
   center.</p>
 
-  <p>The <code>div</code>, <code>caption</code>, <code>thead</code>,
-  <code>tbody</code>, <code>tfoot</code>, <code>tr</code>,
-  <code>td</code>, and <code>th</code> elements, when they have an
-  <code title="attr-align">align</code> attribute whose value is an
+  <p>The <code>div</code> element, when it has an <code
+  title="attr-align">align</code> attribute whose value is an
   <span>ASCII case-insensitive</span> match for the string "<code
-  title="">left</code>", are expected to left-align text within
-  themselves, as if they had their 'text-align' property set to 'left'
-  in a <span title="presentational hints">presentational hint</span>,
-  and to <span>align descendants</span> to the left.</p>
+  title="">left</code>", is expected to left-align text within itself,
+  as if it had its 'text-align' property set to 'left' in a <span
+  title="presentational hints">presentational hint</span>, and to
+  <span>align descendants</span> to the left.</p>
 
-  <p>The <code>div</code>, <code>caption</code>, <code>thead</code>,
-  <code>tbody</code>, <code>tfoot</code>, <code>tr</code>,
-  <code>td</code>, and <code>th</code> elements, when they have an
-  <code title="attr-align">align</code> attribute whose value is an
+  <p>The <code>div</code> element, when it has an <code
+  title="attr-align">align</code> attribute whose value is an
   <span>ASCII case-insensitive</span> match for the string "<code
-  title="">right</code>", are expected to right-align text within
-  themselves, as if they had their 'text-align' property set to
-  'right' in a <span title="presentational hints">presentational
-  hint</span>, and to <span>align descendants</span> to the right.</p>
+  title="">right</code>", is expected to right-align text within
+  itself, as if it had its 'text-align' property set to 'right' in a
+  <span title="presentational hints">presentational hint</span>, and
+  to <span>align descendants</span> to the right.</p>
 
-  <p>The <code>div</code>, <code>caption</code>, <code>thead</code>,
-  <code>tbody</code>, <code>tfoot</code>, <code>tr</code>,
-  <code>td</code>, and <code>th</code> elements, when they have an
-  <code title="attr-align">align</code> attribute whose value is an
+  <p>The <code>div</code> element, when it has an <code
+  title="attr-align">align</code> attribute whose value is an
   <span>ASCII case-insensitive</span> match for the string "<code
-  title="">justify</code>", are expected to full-justify text within
-  themselves, as if they had their 'text-align' property set to
-  'justify' in a <span title="presentational hints">presentational
-  hint</span>, and to <span>align descendants</span> to the left.</p>
+  title="">justify</code>", is expected to full-justify text within
+  itself, as if it had its 'text-align' property set to 'justify' in a
+  <span title="presentational hints">presentational hint</span>, and
+  to <span>align descendants</span> to the left.</p>
 
-  <p>When a user agent is to <dfn>align descendants</dfn> of a node,
-  the user agent is expected to align only those descendants that have
-  both their 'margin-left' and 'margin-right' properties computing to
-  a value other than 'auto', that are over-constrained and that have
-  one of those two margins with a used value forced to a greater
-  value, and that do not themselves have an applicable <code
-  title="attr-align">align</code> attribute. When multiple elements
-  are to <span title="align descendants">align</span> a particular
-  descendant, the most deeply nested such element is expected to
-  override the others.</p>
 
-  <p>User agents are expected to have a rule in their user agent
-  stylesheet that matches <code>th</code> elements that have a parent
-  node whose computed value for the 'text-align' property is its
-  initial value, whose declaration block consists of just a single
-  declaration that sets the 'text-align' property to the value
-  'center'.</p> <!-- q.v. '-moz-center-or-inherit' -->
 
-  </div>
+  <h4>Phrasing content</h4>
 
+  <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
 
-  <div class="impl">
+cite, dfn, em, i, var { font-style: italic; }
+b, strong { font-weight: bold; }
+code, kbd, samp, tt { font-family: monospace; }
+big { font-size: larger; }
+small { font-size: smaller; }
 
-  <h4>Fonts and colors</h4>
+sub { vertical-align: sub; }
+sup { vertical-align: super; }
+sub, sup { line-height: normal; font-size: smaller; }
 
-  <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
+ruby { display: ruby; }
+rt { display: ruby-text; }
 
-address, cite, dfn, em, i, var { font-style: italic; }
-b, strong, th { font-weight: bold; }
-code, kbd, listing, plaintext, pre, samp, tt, xmp { font-family: monospace; }
-h1 { font-size: 2.00em; font-weight: bold; }
-h2 { font-size: 1.50em; font-weight: bold; }
-h3 { font-size: 1.17em; font-weight: bold; }
-h4 { font-size: 1.00em; font-weight: bold; }
-h5 { font-size: 0.83em; font-weight: bold; }
-h6 { font-size: 0.67em; font-weight: bold; }
-big { font-size: larger; }
-small, sub, sup { font-size: smaller; }
-sub, sup { line-height: normal; }
-
 :link { color: blue; }
 :visited { color: purple; }
+:link, :visited { text-decoration: underline; }
+
+:focus { outline: auto; }
+
 mark { background: yellow; color: black; }
 
-table, td, th { border-color: gray; }
-thead, tbody, tfoot, tr { border-color: inherit; }
-table[rules=none], table[rules=groups], table[rules=rows],
-table[rules=cols], table[rules=all], table[frame=void],
-table[frame=above], table[frame=below], table[frame=hsides],
-table[frame=lhs], table[frame=rhs], table[frame=vsides],
-table[frame=box], table[frame=border],
-table[rules=none] > tr > td, table[rules=none] > tr > th,
-table[rules=groups] > tr > td, table[rules=groups] > tr > th,
-table[rules=rows] > tr > td, table[rules=rows] > tr > th,
-table[rules=cols] > tr > td, table[rules=cols] > tr > th,
-table[rules=all] > tr > td, table[rules=all] > tr > th,
-table[rules=none] > thead > tr > td, table[rules=none] > thead > tr > th,
-table[rules=groups] > thead > tr > td, table[rules=groups] > thead > tr > th,
-table[rules=rows] > thead > tr > td, table[rules=rows] > thead > tr > th,
-table[rules=cols] > thead > tr > td, table[rules=cols] > thead > tr > th,
-table[rules=all] > thead > tr > td, table[rules=all] > thead > tr > th,
-table[rules=none] > tbody > tr > td, table[rules=none] > tbody > tr > th,
-table[rules=groups] > tbody > tr > td, table[rules=groups] > tbody > tr > th,
-table[rules=rows] > tbody > tr > td, table[rules=rows] > tbody > tr > th,
-table[rules=cols] > tbody > tr > td, table[rules=cols] > tbody > tr > th,
-table[rules=all] > tbody > tr > td, table[rules=all] > tbody > tr > th,
-table[rules=none] > tfoot > tr > td, table[rules=none] > tfoot > tr > th,
-table[rules=groups] > tfoot > tr > td, table[rules=groups] > tfoot > tr > th,
-table[rules=rows] > tfoot > tr > td, table[rules=rows] > tfoot > tr > th,
-table[rules=cols] > tfoot > tr > td, table[rules=cols] > tfoot > tr > th,
-table[rules=all] > tfoot > tr > td, table[rules=all] > tfoot > tr > th { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
-  border-color: black;
-}</pre>
+abbr[title], acronym[title] { text-decoration: dotted underline; }<!-- CSS3 http://dev.w3.org/csswg/css3-text/#text-decoration-style -->
+ins, u { text-decoration: underline; }
+del, s, strike { text-decoration: line-through; }
+blink { text-decoration: blink; }
 
-  <hr>
+q::before { content: open-quote; }
+q::after { content: close-quote; }
 
-  <p>The initial value for the 'color' property is expected to be
-  black. The initial value for the 'background-color' property is
-  expected to be 'transparent'. The canvas' background is expected to
-  be white.</p>
+br { content: '\A'; white-space: pre; }
+nobr { white-space: nowrap; }</pre>
 
-  <hr>
+  <p>The following rules are also expected to apply, as
+  <span>presentational hints</span>:</p>
 
-  <p>The <code>article</code>, <code>aside</code>, <code>nav</code>,
-  and <code>section</code> elements are expected to affect the font
-  size of <code>h1</code> elements, based on the nesting depth. If
-  <var title="">x</var> is a selector that matches elements that are
-  either <code>article</code>, <code>aside</code>, <code>nav</code>,
-  or <code>section</code> elements, then the following rules capture
-  what is expected:</p>
-
   <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
 
-<var title="">x</var> h1 { font-size: 1.50em; }
-<var title="">x</var> <var title="">x</var> h1 { font-size: 1.17em; }
-<var title="">x</var> <var title="">x</var> <var title="">x</var> h1 { font-size: 1.00em; }
-<var title="">x</var> <var title="">x</var> <var title="">x</var> <var title="">x</var> h1 { font-size: 0.83em; }
-<var title="">x</var> <var title="">x</var> <var title="">x</var> <var title="">x</var> <var title="">x</var> h1 { font-size: 0.67em; }</pre>
+br[clear=left] { clear: left; } /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
+br[clear=right] { clear: right; } /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
+br[clear=all], br[clear=both] { clear: both; } /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */</pre>
 
-  <hr>
+  <p>For the purposes of the CSS ruby model, runs of children of
+  <code>ruby</code> elements that are not <code>rt</code> or
+  <code>rp</code> elements are expected to be wrapped in anonymous
+  boxes whose 'display' property has the value 'ruby-base'. <a
+  href="#refsCSSRUBY">[CSSRUBY]</a></p>
 
-  <p>When a <code>body</code>, <code>table</code>, <code>thead</code>,
-  <code>tbody</code>, <code>tfoot</code>, <code>tr</code>,
-  <code>td</code>, or <code>th</code> element has a <code
-  title="attr-background">background</code> attribute set to a
-  non-empty value, the new value is expected to be <span
-  title="resolve a url">resolved</span> relative to the element, and
-  if this is successful, the user agent is expected to treat the
-  attribute as a <span title="presentational hints">presentational
-  hint</span> setting the element's 'background-image' property to the
-  resulting <span>absolute URL</span>.</p>
+  <p>User agents that do not support correct ruby rendering are
+  expected to render parentheses around the text of <code>rt</code>
+  elements in the absence of <code>rp</code> elements.</p>
 
-  <p>When a <code>body</code>, <code>table</code>, <code>thead</code>,
-  <code>tbody</code>, <code>tfoot</code>, <code>tr</code>,
-  <code>td</code>, or <code>th</code> element has a <code
-  title="">bgcolor</code> attribute set, the new value is expected to
-  be parsed using the <span>rules for parsing a legacy color
-  value</span>, and if that does not return an error, the user agent
-  is expected to treat the attribute as a <span title="presentational
-  hints">presentational hint</span> setting the element's
-  'background-color' property to the resulting color.</p>
+  <p>Rules setting the 'quotes' property appropriately for the locales
+  and languages understood by the user are expected to be present.</p>
 
-  <p>When a <code>body</code> element has a <code
-  title="attr-body-text">text</code> attribute, its value is expected
-  to be parsed using the <span>rules for parsing a legacy color
-  value</span>, and if that does not return an error, the user
-  agent is expected to treat the attribute as a <span
-  title="presentational hints">presentational hint</span> setting the
-  element's 'color' property to the resulting color.</p>
+  <hr>
 
-  <p>When a <code>body</code> element has a <code
-  title="attr-body-link">link</code> attribute, its value is expected
-  to be parsed using the <span>rules for parsing a legacy color
-  value</span>, and if that does not return an error, the user agent
-  is expected to treat the attribute as a <span title="presentational
-  hints">presentational hint</span> setting the 'color' property of
-  any element in the <code>Document</code> matching the ':link'
-  pseudo-class to the resulting color.</p>
+  <p>User agents are expected to
+  support the 'clear' property on inline elements (in order to render
+  <code>br</code> elements with <code
+  title="attr-br-clear">clear</code> attributes) in the manner
+  described in the non-normative note to this effect in CSS2.1.</p>
+  <!-- section 9.5.2 of CSS2.1 -->
 
-  <p>When a <code>body</code> element has a <code
-  title="attr-body-vlink">vlink</code> attribute, its value is
-  expected to be parsed using the <span>rules for parsing a legacy
-  color value</span>, and if that does not return an error, the user
-  agent is expected to treat the attribute as a <span
-  title="presentational hints">presentational hint</span> setting the
-  'color' property of any element in the <code>Document</code>
-  matching the ':visited' pseudo-class to the resulting color.</p>
+  <p>The <code>wbr</code> element is expected to override the
+  'white-space' property and always provide a line-breaking
+  opportunity.</p>
 
-  <p>When a <code>body</code> element has a <code
-  title="attr-body-alink">alink</code> attribute, its value is
-  expected to be parsed using the <span>rules for parsing a legacy
-  color value</span>, and if that does not return an error, the user
-  agent is expected to treat the attribute as a <span
-  title="presentational hints">presentational hint</span> setting the
-  'color' property of any element in the <code>Document</code>
-  matching the ':active' pseudo-class and either the ':link'
-  pseudo-class or the ':visited' pseudo-class to the resulting
-  color.</p>
+  <p>The initial value for the 'color' property is expected to be
+  black. The initial value for the 'background-color' property is
+  expected to be 'transparent'. The canvas' background is expected to
+  be white.</p>
 
-  <p>When a <code>table</code> element has a <code
-  title="attr-table-bordercolor">bordercolor</code> attribute, its
-  value is expected to be parsed using the <span>rules for parsing a
-  legacy color value</span>, and if that does not return an error, the
-  user agent is expected to treat the attribute as a <span
-  title="presentational hints">presentational hint</span> setting the
-  element's 'border-top-color', 'border-right-color',
-  'border-bottom-color', and 'border-right-color' properties to the
-  resulting color.</p>
-
   <hr>
 
   <p>When a <code>font</code> element has a <code
@@ -104835,37 +104594,77 @@
 
   </ol>
 
-  </div>
 
+  <h4>Bidirectional text</h4>
 
-  <div class="impl">
+  <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
 
-  <h4>Punctuation and decorations</h4>
+:ltr { direction: ltr; }
+:rtl { direction: rtl; }
+[dir] { unicode-bidi: embed; }
+bdi, output, [dir=auto] { unicode-bidi: isolate; } /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
+bdo, bdo[dir] { unicode-bidi: bidi-override; }
+bdo[dir=auto] { unicode-bidi: bidi-override isolate; } /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
+textarea[dir=auto], pre[dir=auto] { unicode-bidi: plaintext; } /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */</pre>
 
+
+  <h4>Sections and headings</h4>
+
   <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
 
-:link, :visited, ins, u { text-decoration: underline; }
-abbr[title], acronym[title] { text-decoration: dotted underline; }<!-- CSS3 http://dev.w3.org/csswg/css3-text/#text-decoration-style -->
-del, s, strike { text-decoration: line-through; }
-blink { text-decoration: blink; }
+article, aside, h1, h2, h3, h4, h5, h6, hgroup, nav, section {
+  display: block; unicode-bidi: isolate;
+}
 
-:focus { outline: auto; }
+h1 { margin-top: 0.67em; margin-bottom: 0.67em; font-size: 2.00em; font-weight: bold; }
+h2 { margin-top: 0.83em; margin-bottom: 0.83em; font-size: 1.50em; font-weight: bold; }
+h3 { margin-top: 1.00em; margin-bottom: 1.00em; font-size: 1.17em; font-weight: bold; }
+h4 { margin-top: 1.33em; margin-bottom: 1.33em; font-size: 1.00em; font-weight: bold; }
+h5 { margin-top: 1.67em; margin-bottom: 1.67em; font-size: 0.83em; font-weight: bold; }
+h6 { margin-top: 2.33em; margin-bottom: 2.33em; font-size: 0.67em; font-weight: bold; }</pre>
 
-q:before { content: open-quote; }
-q:after { content: close-quote; }
+  <p>The <code>article</code>, <code>aside</code>, <code>nav</code>,
+  and <code>section</code> elements are expected to affect the margins
+  and font size of <code>h1</code> elements, based on the nesting
+  depth. If <var title="">x</var> is a selector that matches elements
+  that are either <code>article</code>, <code>aside</code>,
+  <code>nav</code>, or <code>section</code> elements, then the
+  following rules capture what is expected:</p>
 
-br { content: '\A'; white-space: pre; }
+  <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
 
-nobr { white-space: nowrap; }
-listing, plaintext, pre, xmp { white-space: pre; }
-textarea { white-space: pre-wrap; }
+<var title="">x</var> h1 { margin-top: 0.83em; margin-bottom: 0.83em; font-size: 1.50em; }
+<var title="">x</var> <var title="">x</var> h1 { margin-top: 1.00em; margin-bottom: 1.00em; font-size: 1.17em; }
+<var title="">x</var> <var title="">x</var> <var title="">x</var> h1 { margin-top: 1.33em; margin-bottom: 1.33em; font-size: 1.00em; }
+<var title="">x</var> <var title="">x</var> <var title="">x</var> <var title="">x</var> h1 { margin-top: 1.67em; margin-bottom: 1.67em; font-size: 0.83em; }
+<var title="">x</var> <var title="">x</var> <var title="">x</var> <var title="">x</var> <var title="">x</var> h1 { margin-top: 2.33em; margin-bottom: 2.33em; font-size: 0.67em; }</pre>
 
-ol { list-style-type: decimal; }
 
-dir, menu, ul {
-  list-style-type: disc;
+
+  <h4>Lists</h4>
+
+  <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
+
+dir, dd, dl, dt, menu, ol, ul { display: block; unicode-bidi: isolate; }
+li { display: list-item; unicode-bidi: isolate; }
+
+dir, dl, menu, ol, ul { margin-top: 1em; margin-bottom: 1em; }
+
+dir dir, dir dl, dir menu, dir ol, dir ul,
+dl dir, dl dl, dl menu, dl ol, dl ul,
+menu dir, menu dl, menu menu, menu ol, menu ul,
+ol dir, ol dl, ol menu, ol ol, ol ul,
+ul dir, ul dl, ul menu, ul ol, ul ul {
+  margin-top: 0; margin-bottom: 0;
 }
 
+dd { margin-left: 40px; } /* <span>LTR-specific</span>: use 'margin-right' for rtl elements */
+dir, menu, ol, ul { padding-left: 40px; } /* <span>LTR-specific</span>: use 'padding-right' for rtl elements */
+
+ol { list-style-type: decimal; }
+
+dir, menu, ul { list-style-type: disc; }
+
 dir dl, dir menu, dir ul,
 menu dl, menu menu, menu ul,
 ol dl, ol menu, ol ul,
@@ -104890,43 +104689,13 @@
 ul ol dl, ul ol menu, ul ol ul,
 ul ul dl, ul ul menu, ul ul ul {
   list-style-type: square;
-}
+}</pre>
 
-table { border-style: outset; }
-td, th { border-style: inset; }
-
-:ltr { direction: ltr; }
-:rtl { direction: rtl; }
-[dir] { unicode-bidi: embed; }
-bdi, output, [dir=auto] { unicode-bidi: isolate; } /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
-bdo, bdo[dir] { unicode-bidi: bidi-override; }
-bdo[dir=auto] { unicode-bidi: bidi-override isolate; } /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
-textarea[dir=auto], pre[dir=auto] { unicode-bidi: plaintext; } /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */</pre>
-
-  <p>Rules setting the 'quotes' property appropriately for the locales
-  and languages understood by the user are expected to be present.</p>
-
-  <p>User agents are expected to
-  support the 'clear' property on inline elements (in order to render
-  <code>br</code> elements with <code
-  title="attr-br-clear">clear</code> attributes) in the manner
-  described in the non-normative note to this effect in CSS2.1.</p>
-  <!-- section 9.5.2 of CSS2.1 -->
-
-  <hr>
-
-  <p id="decohints">The following rules are also expected to apply, as
+  <p>The following rules are also expected to apply, as
   <span>presentational hints</span>:</p>
 
   <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
 
-td[nowrap], th[nowrap] { white-space: nowrap; }
-pre[wrap] { white-space: pre-wrap; }
-
-br[clear=left] { clear: left; } /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
-br[clear=right] { clear: right; } /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
-br[clear=all], br[clear=both] { clear: both; } /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
-
 ol[type=1], li[type=1] { list-style-type: decimal; }
 ol[type=a], li[type=a] { list-style-type: lower-alpha; }<!-- /* <a href="#case-sensitive-selector-exception">case-sensitive</a> */ -->
 ol[type=A], li[type=A] { list-style-type: upper-alpha; }<!-- /* <a href="#case-sensitive-selector-exception">case-sensitive</a> */ -->
@@ -104934,9 +104703,128 @@
 ol[type=I], li[type=I] { list-style-type: upper-roman; }<!-- /* <a href="#case-sensitive-selector-exception">case-sensitive</a> */ -->
 ul[type=disc], li[type=disc] { list-style-type: disc; } /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
 ul[type=circle], li[type=circle] { list-style-type: circle; } /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
-ul[type=square], li[type=square] { list-style-type: square; } /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
+ul[type=square], li[type=square] { list-style-type: square; } /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */</pre>
 
+  <p>When rendering <code>li</code> elements, user agents are expected
+  to use the <span>ordinal value</span> of the <code>li</code> element
+  to render the counter in the list item marker.</p>
+
+
+  <h4>Tables</h4>
+
+  <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
+
+table { display: table; unicode-bidi: isolate; }
+caption { display: table-caption; unicode-bidi: isolate; }
+colgroup, colgroup[hidden] { display: table-column-group; unicode-bidi: isolate; }
+col, col[hidden] { display: table-column; unicode-bidi: isolate; }
+thead, thead[hidden] { display: table-header-group; unicode-bidi: isolate; }
+tbody, tbody[hidden] { display: table-row-group; unicode-bidi: isolate; }
+tfoot, tfoot[hidden] { display: table-footer-group; unicode-bidi: isolate; }
+tr, tr[hidden] { display: table-row; unicode-bidi: isolate; }
+td, th, td[hidden], th[hidden] { display: table-cell; unicode-bidi: isolate; }
+
+colgroup[hidden], col[hidden], thead[hidden], tbody[hidden],
+tfoot[hidden], tr[hidden], td[hidden], th[hidden] {
+  visibility: collapse;
+}
+
+table {
+  border-spacing: 2px;
+  border-collapse: separate;
+  border-style: outset;
+  text-indent: initial;
+}
+
+td, th { padding: 1px; border-style: inset; }
+th { font-weight: bold; }
+
+thead, tbody, tfoot, table > tr { vertical-align: middle; }
+tr, td, th { vertical-align: inherit; }
+
+table, td, th { border-color: gray; }
+thead, tbody, tfoot, tr { border-color: inherit; }
 table[rules=none], table[rules=groups], table[rules=rows],
+table[rules=cols], table[rules=all], table[frame=void],
+table[frame=above], table[frame=below], table[frame=hsides],
+table[frame=lhs], table[frame=rhs], table[frame=vsides],
+table[frame=box], table[frame=border],
+table[rules=none] > tr > td, table[rules=none] > tr > th,
+table[rules=groups] > tr > td, table[rules=groups] > tr > th,
+table[rules=rows] > tr > td, table[rules=rows] > tr > th,
+table[rules=cols] > tr > td, table[rules=cols] > tr > th,
+table[rules=all] > tr > td, table[rules=all] > tr > th,
+table[rules=none] > thead > tr > td, table[rules=none] > thead > tr > th,
+table[rules=groups] > thead > tr > td, table[rules=groups] > thead > tr > th,
+table[rules=rows] > thead > tr > td, table[rules=rows] > thead > tr > th,
+table[rules=cols] > thead > tr > td, table[rules=cols] > thead > tr > th,
+table[rules=all] > thead > tr > td, table[rules=all] > thead > tr > th,
+table[rules=none] > tbody > tr > td, table[rules=none] > tbody > tr > th,
+table[rules=groups] > tbody > tr > td, table[rules=groups] > tbody > tr > th,
+table[rules=rows] > tbody > tr > td, table[rules=rows] > tbody > tr > th,
+table[rules=cols] > tbody > tr > td, table[rules=cols] > tbody > tr > th,
+table[rules=all] > tbody > tr > td, table[rules=all] > tbody > tr > th,
+table[rules=none] > tfoot > tr > td, table[rules=none] > tfoot > tr > th,
+table[rules=groups] > tfoot > tr > td, table[rules=groups] > tfoot > tr > th,
+table[rules=rows] > tfoot > tr > td, table[rules=rows] > tfoot > tr > th,
+table[rules=cols] > tfoot > tr > td, table[rules=cols] > tfoot > tr > th,
+table[rules=all] > tfoot > tr > td, table[rules=all] > tfoot > tr > th { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
+  border-color: black;
+}</pre>
+
+  <p>The following rules are also expected to apply, as
+  <span>presentational hints</span>:</p>
+
+  <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
+
+table[align=left] { float: left; } /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
+table[align=right] { float: right; } /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
+table[align=center], table[align=abscenter],
+table[align=absmiddle], table[align=middle] { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
+  margin-left: auto; margin-right: auto;
+}
+thead[align=absmiddle], tbody[align=absmiddle], tfoot[align=absmiddle],
+tr[align=absmiddle], td[align=absmiddle], th[align=absmiddle] { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
+  text-align: center;
+}
+
+caption[align=bottom] { caption-side: bottom; } /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
+p[align=left], h1[align=left], h2[align=left], h3[align=left],
+h4[align=left], h5[align=left], h6[align=left] { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
+  text-align: left;
+}
+p[align=right], h1[align=right], h2[align=right], h3[align=right],
+h4[align=right], h5[align=right], h6[align=right] { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
+  text-align: right;
+}
+p[align=center], h1[align=center], h2[align=center], h3[align=center],
+h4[align=center], h5[align=center], h6[align=center] { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
+  text-align: center;
+}
+p[align=justify], h1[align=justify], h2[align=justify], h3[align=justify],
+h4[align=justify], h5[align=justify], h6[align=justify] { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
+  text-align: justify;
+}
+thead[valign=top], tbody[valign=top], tfoot[valign=top],
+tr[valign=top], td[valign=top], th[valign=top] { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
+  vertical-align: top;
+}
+thead[valign=middle], tbody[valign=middle], tfoot[valign=middle],
+tr[valign=middle], td[valign=middle], th[valign=middle] { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
+  vertical-align: middle;
+}
+thead[valign=bottom], tbody[valign=bottom], tfoot[valign=bottom],
+tr[valign=bottom], td[valign=bottom], th[valign=bottom] { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
+  vertical-align: bottom;
+}
+thead[valign=baseline], tbody[valign=baseline], tfoot[valign=baseline],
+tr[valign=baseline], td[valign=baseline], th[valign=baseline] { /* <a href="#case-insensitive-selector-exception">case-insensitive</a> */
+  vertical-align: baseline;
+}
+
+td[nowrap], th[nowrap] { white-space: nowrap; }
+
+table[rules=none], table[rules=groups], table[rules=rows],
 table[rules=cols], table[rules=all] {
   border-style: none;
   border-collapse: collapse;
@@ -104998,11 +104886,202 @@
   border-width: 1px;
 }</pre>
 
-  <p>When rendering <code>li</code> elements, user agents are expected
-  to use the <span>ordinal value</span> of the <code>li</code> element
-  to render the counter in the list item marker.</p>
+  <p>In <span>quirks mode</span>, the following rules are also
+  expected to apply:</p>
 
+  <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
+
+table {
+  font-weight: initial;
+  font-style: initial;
+  font-variant: initial;
+  font-size: initial;
+  line-height: initial;
+  white-space: initial;
+  text-align: initial;
+}</pre>
+
+  <hr>
+
+  <p>For the purposes of the CSS table model, the <code>col</code>
+  element is expected to be treated as if it was present as many times
+  as its <code title="attr-col-span">span</code> attribute <span
+  title="rules for parsing non-negative
+  integers">specifies</span>.</p>
+
+  <p>For the purposes of the CSS table model, the
+  <code>colgroup</code> element, if it contains no <code>col</code>
+  element, is expected to be treated as if it had as many such
+  children as its <code title="attr-colgroup-span">span</code>
+  attribute <span title="rules for parsing non-negative
+  integers">specifies</span>.</p>
+
+  <p>For the purposes of the CSS table model, the <code
+  title="attr-tdth-colspan">colspan</code> and <code
+  title="attr-tdth-rowspan">rowspan</code> attributes on
+  <code>td</code> and <code>th</code> elements are expected to <span
+  title="rules for parsing non-negative integers">provide</span> the
+  <i>special knowledge</i> regarding cells spanning rows and
+  columns.</p>
+
+  <p>In <span>HTML documents</span>, the user agent is expected to
+  hide <code>form</code> elements that are children of
+  <code>table</code>, <code>thead</code>, <code>tbody</code>,
+  <code>tfoot</code>, or <code>tr</code> elements, irrespective of CSS
+  rules.</p>
+
+  <hr>
+
   <p>The <code>table</code> element's <code
+  title="attr-table-cellspacing">cellspacing</code> attribute
+  <span>maps to the pixel length property</span> 'border-spacing' on the
+  element.</p>
+
+  <p>The <code>table</code> element's <code
+  title="attr-table-cellpadding">cellpadding</code> attribute <span
+  title="maps to the pixel length property">maps to the pixel length
+  properties</span> 'padding-top', 'padding-right', 'padding-bottom',
+  and 'padding-left' of any <code>td</code> and <code>th</code>
+  elements that have corresponding <span
+  title="concept-cell">cells</span> in the <span
+  title="concept-table">table</span> corresponding to the
+  <code>table</code> element.</p>
+
+  <p>The <code>table</code> element's <code
+  title="attr-table-hspace">hspace</code> attribute <span title="maps
+  to the dimension property">maps to the dimension properties</span>
+  'margin-left' and 'margin-right' on the <code>table</code>
+  element.</p>
+
+  <p>The <code>table</code> element's <code
+  title="attr-table-vspace">vspace</code> attribute <span title="maps
+  to the dimension property">maps to the dimension properties</span>
+  'margin-top' and 'margin-bottom' on the <code>table</code>
+  element.</p>
+
+  <p>The <code>table</code> element's <code
+  title="attr-table-height">height</code> attribute <span>maps to the
+  dimension property</span> 'height' on the <code>table</code>
+  element.</p>
+
+  <p>The <code>table</code> element's <code
+  title="attr-table-width">width</code> attribute <span>maps to the
+  dimension property</span> 'width' on the <code>table</code>
+  element.</p>
+
+  <p>The <code>col</code> element's <code
+  title="attr-col-width">width</code> attribute <span>maps to the
+  dimension property</span> 'width' on the <code>col</code>
+  element.</p>
+
+  <p>The <code>tr</code> element's <code
+  title="attr-tr-height">height</code> attribute <span>maps to the
+  dimension property</span> 'height' on the <code>tr</code>
+  element.</p>
+
+  <p>The <code>td</code> and <code>th</code> elements' <code
+  title="attr-tdth-height">height</code> attributes <span title="maps
+  to the dimension property">map to the dimension property</span> 'height'
+  on the element.</p>
+
+  <p>The <code>td</code> and <code>th</code> elements' <code
+  title="attr-tdth-width">width</code> attributes <span title="maps
+  to the dimension property">map to the dimension property</span> 'width'
+  on the element.</p>
+
+  <p>When a <code>Document</code> is in <span>quirks mode</span>,
+  vertical margins on <span>HTML elements</span> at the top or bottom
+  of <code>td</code> or <code>th</code> elements are expected to be
+  collapsed to zero.</p>
+
+  <hr>
+
+  <p>The the <code>caption</code> element unless specified otherwise
+  below, and the <code>thead</code>, <code>tbody</code>,
+  <code>tfoot</code>, <code>tr</code>, <code>td</code>, and
+  <code>th</code> elements when they have an <code
+  title="attr-div-align">align</code> attribute whose value is an
+  <span>ASCII case-insensitive</span> match for either the string
+  "<code title="">center</code>" or the string "<code
+  title="">middle</code>", are expected to center text within
+  themselves, as if they had their 'text-align' property set to
+  'center' in a <span title="presentational hints">presentational
+  hint</span>, and to <span>align descendants</span> to the
+  center.</p>
+
+  <p>The <code>caption</code>, <code>thead</code>, <code>tbody</code>,
+  <code>tfoot</code>, <code>tr</code>, <code>td</code>, and
+  <code>th</code> elements, when they have an <code
+  title="attr-align">align</code> attribute whose value is an
+  <span>ASCII case-insensitive</span> match for the string "<code
+  title="">left</code>", are expected to left-align text within
+  themselves, as if they had their 'text-align' property set to 'left'
+  in a <span title="presentational hints">presentational hint</span>,
+  and to <span>align descendants</span> to the left.</p>
+
+  <p>The <code>caption</code>, <code>thead</code>, <code>tbody</code>,
+  <code>tfoot</code>, <code>tr</code>, <code>td</code>, and
+  <code>th</code> elements, when they have an <code
+  title="attr-align">align</code> attribute whose value is an
+  <span>ASCII case-insensitive</span> match for the string "<code
+  title="">right</code>", are expected to right-align text within
+  themselves, as if they had their 'text-align' property set to
+  'right' in a <span title="presentational hints">presentational
+  hint</span>, and to <span>align descendants</span> to the right.</p>
+
+  <p>The <code>caption</code>, <code>thead</code>, <code>tbody</code>,
+  <code>tfoot</code>, <code>tr</code>, <code>td</code>, and
+  <code>th</code> elements, when they have an <code
+  title="attr-align">align</code> attribute whose value is an
+  <span>ASCII case-insensitive</span> match for the string "<code
+  title="">justify</code>", are expected to full-justify text within
+  themselves, as if they had their 'text-align' property set to
+  'justify' in a <span title="presentational hints">presentational
+  hint</span>, and to <span>align descendants</span> to the left.</p>
+
+  <p>User agents are expected to have a rule in their user agent
+  stylesheet that matches <code>th</code> elements that have a parent
+  node whose computed value for the 'text-align' property is its
+  initial value, whose declaration block consists of just a single
+  declaration that sets the 'text-align' property to the value
+  'center'.</p> <!-- q.v. '-moz-center-or-inherit' -->
+
+  <hr>
+
+  <p>When a <code>table</code>, <code>thead</code>,
+  <code>tbody</code>, <code>tfoot</code>, <code>tr</code>,
+  <code>td</code>, or <code>th</code> element has a <code
+  title="attr-background">background</code> attribute set to a
+  non-empty value, the new value is expected to be <span
+  title="resolve a url">resolved</span> relative to the element, and
+  if this is successful, the user agent is expected to treat the
+  attribute as a <span title="presentational hints">presentational
+  hint</span> setting the element's 'background-image' property to the
+  resulting <span>absolute URL</span>.</p>
+
+  <p>When a <code>table</code>, <code>thead</code>,
+  <code>tbody</code>, <code>tfoot</code>, <code>tr</code>,
+  <code>td</code>, or <code>th</code> element has a <code
+  title="">bgcolor</code> attribute set, the new value is expected to
+  be parsed using the <span>rules for parsing a legacy color
+  value</span>, and if that does not return an error, the user agent
+  is expected to treat the attribute as a <span title="presentational
+  hints">presentational hint</span> setting the element's
+  'background-color' property to the resulting color.</p>
+
+  <p>When a <code>table</code> element has a <code
+  title="attr-table-bordercolor">bordercolor</code> attribute, its
+  value is expected to be parsed using the <span>rules for parsing a
+  legacy color value</span>, and if that does not return an error, the
+  user agent is expected to treat the attribute as a <span
+  title="presentational hints">presentational hint</span> setting the
+  element's 'border-top-color', 'border-right-color',
+  'border-bottom-color', and 'border-right-color' properties to the
+  resulting color.</p>
+
+  <hr>
+
+  <p>The <code>table</code> element's <code
   title="attr-table-border">border</code> attribute <span title="maps
   to the pixel length property">maps to the pixel length
   properties</span> 'border-top-width', 'border-right-width',
@@ -105024,51 +105103,31 @@
   <span>table model</span> as the <code>table</code> element to
   zero.</p>
 
-  <p>The <code>wbr</code> element is expected to override the
-  'white-space' property and always provide a line-breaking
-  opportunity.</p>
 
-  </div>
 
+  <h4>Form controls</h4>
 
-  <div class="impl">
-
-  <h4>Resetting rules for inherited properties</h4>
-
-  <p>The following rules are also expected to be in play, resetting
-  certain properties to block inheritance by default.</p>
-
   <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
 
-table, input, select, option, optgroup, button, textarea, keygen {
+input, select, option, optgroup, button, textarea, keygen {
   text-indent: initial;
-}</pre>
+}
 
-  <!-- arguably, the form controls' 'text-indent' lines should be in
-  the sections below instead of here, but that would be far more
-  complicated than this -->
+textarea { white-space: pre-wrap; }
+</pre>
 
   <p>In <span>quirks mode</span>, the following rules are also
   expected to apply:</p>
 
   <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
 
-table {
-  font-weight: initial;
-  font-style: initial;
-  font-variant: initial;
-  font-size: initial;
-  line-height: initial;
-  white-space: initial;
-  text-align: initial;
-}
-
 input { box-sizing: border-box; }</pre>
 
-  </div>
+  <p>Each kind of form control is also given a specific default
+  binding, as described in subsequent sections, which implements the
+  look and feel of the control.</p>
 
 
-  <div class="impl">
 
   <h4>The <code>hr</code> element</h4>
 
@@ -105123,11 +105182,8 @@
   hints">presentational hint</span> setting the element's 'color'
   property to the resulting color.</p>
 
-  </div>
 
 
-  <div class="impl">
-
   <h4>The <code>fieldset</code> element</h4>
 
   <pre class="css">@namespace url(http://www.w3.org/1999/xhtml);
@@ -105188,11 +105244,7 @@
      <td>In the middle
   </table>
 
-  </div>
 
-
-  <div class="impl">
-
   <h3>Replaced elements</h3>
 
   <h4>Embedded content</h4>

|