hixie: Make </li> be scoped by <ol>/<ul> also. (whatwg r3769)

hixie: Make </li> be scoped by <ol>/<ul> also. (whatwg r3769)

http://dev.w3.org/cvsweb/html5/spec/Overview.html?r1=1.2938&r2=1.2939&f=h
http://html5.org/tools/web-apps-tracker?from=3768&to=3769

===================================================================
RCS file: /sources/public/html5/spec/Overview.html,v
retrieving revision 1.2938
retrieving revision 1.2939
diff -u -d -r1.2938 -r1.2939
--- Overview.html 7 Sep 2009 11:01:40 -0000 1.2938
+++ Overview.html 7 Sep 2009 11:22:39 -0000 1.2939
@@ -55023,8 +55023,9 @@
    <dd><p>All other elements found while parsing an HTML
    document.</dd>
 
-  </dl><p>The <a href="#stack-of-open-elements">stack of open elements</a> is said to <dfn id="has-an-element-in-scope" title="has an element in scope">have an element in scope</dfn> when
-  the following algorithm terminates in a match state:</p>
+  </dl><p>The <a href="#stack-of-open-elements">stack of open elements</a> is said to <dfn id="has-an-element-in-the-specific-scope" title="has an element in the specific scope">have an element in a
+  specific scope</dfn> consisting of a list of element types <var title="">list</var> when the following algorithm terminates in a
+  match state:</p>
 
   <ol><li><p>Initialize <var title="">node</var> to be the <a href="#current-node">current
    node</a> (the bottommost node of the stack).</li>
@@ -55032,19 +55033,9 @@
    <li><p>If <var title="">node</var> is the target node, terminate in
    a match state.</li>
 
-   <li><p>Otherwise, if <var title="">node</var> is one of the
-   following elements, terminate in a failure state:</p>
-    <ul class="brief"><li><code><a href="#the-applet-element">applet</a></code> in the HTML namespace</li>
-     <li><code><a href="#the-caption-element">caption</a></code> in the HTML namespace</li>
-     <li><code><a href="#the-html-element-0">html</a></code> in the HTML namespace</li> <!-- (This can only happen if the <var title="">node</var> is the topmost node of the <span>stack of open elements</span>, and prevents the next step from being invoked if there are no more elements in the stack.) -->
-     <li><code><a href="#the-table-element">table</a></code> in the HTML namespace</li>
-     <li><code><a href="#the-td-element">td</a></code> in the HTML namespace</li>
-     <li><code><a href="#the-th-element">th</a></code> in the HTML namespace</li>
-     <li><code><a href="#the-button-element">button</a></code> in the HTML namespace</li>
-     <li><code><a href="#the-marquee-element">marquee</a></code> in the HTML namespace</li>
-     <li><code><a href="#the-object-element">object</a></code> in the HTML namespace</li>
-     <li><code title="">foreignObject</code> in the SVG namespace</li>
-    </ul></li>
+   <li><p>Otherwise, if <var title="">node</var> is one of the element
+   types in <var title="">list</var>, terminate in a failure
+   state.</li>
 
    <li><p>Otherwise, set <var title="">node</var> to the previous
    entry in the <a href="#stack-of-open-elements">stack of open elements</a> and return to step
@@ -55052,29 +55043,35 @@
    the previous step if the top of the stack &mdash; an
    <code><a href="#the-html-element-0">html</a></code> element &mdash; is reached.)</li>
 
-  </ol><p>The <a href="#stack-of-open-elements">stack of open elements</a> is said to <dfn id="has-an-element-in-table-scope" title="has an element in table scope">have an element in <em>table
-  scope</em></dfn> when the following algorithm terminates in a match
-  state:</p>
-
-  <ol><li><p>Initialize <var title="">node</var> to be the <a href="#current-node">current
-   node</a> (the bottommost node of the stack).</li>
-
-   <li><p>If <var title="">node</var> is the target node, terminate in
-   a match state.</li>
+  </ol><p>The <a href="#stack-of-open-elements">stack of open elements</a> is said to <dfn id="has-an-element-in-scope" title="has an element in scope">have an element in scope</dfn> when
+  it <a href="#has-an-element-in-the-specific-scope">has an element in the specific scope</a> consisting
+  of the following element types:</p>
 
-   <li><p>Otherwise, if <var title="">node</var> is one of the
-   following elements, terminate in a failure state:</p>
-    <ul class="brief"><li><code><a href="#the-html-element-0">html</a></code> in the HTML namespace</li> <!-- (This can only happen if the <var title="">node</var> is the topmost node of the <span>stack of open elements</span>, and prevents the next step from being invoked if there are no more elements in the stack.) -->
-     <li><code><a href="#the-table-element">table</a></code> in the HTML namespace</li>
-    </ul></li>
+  <ul class="brief"><li><code><a href="#the-applet-element">applet</a></code> in the HTML namespace</li>
+   <li><code><a href="#the-caption-element">caption</a></code> in the HTML namespace</li>
+   <li><code><a href="#the-html-element-0">html</a></code> in the HTML namespace</li> <!-- (This can only happen if the <var title="">node</var> is the topmost node of the <span>stack of open elements</span>, and prevents the next step from being invoked if there are no more elements in the stack.) -->
+   <li><code><a href="#the-table-element">table</a></code> in the HTML namespace</li>
+   <li><code><a href="#the-td-element">td</a></code> in the HTML namespace</li>
+   <li><code><a href="#the-th-element">th</a></code> in the HTML namespace</li>
+   <li><code><a href="#the-button-element">button</a></code> in the HTML namespace</li>
+   <li><code><a href="#the-marquee-element">marquee</a></code> in the HTML namespace</li>
+   <li><code><a href="#the-object-element">object</a></code> in the HTML namespace</li>
+   <li><code title="">foreignObject</code> in the SVG namespace</li>
+  </ul><p>The <a href="#stack-of-open-elements">stack of open elements</a> is said to <dfn id="has-an-element-in-list-item-scope" title="has an element in list item scope">have an element in list
+  item scope</dfn> when it <a href="#has-an-element-in-the-specific-scope">has an element in the specific
+  scope</a> consisting of the following element types:</p>
 
-   <li><p>Otherwise, set <var title="">node</var> to the previous
-   entry in the <a href="#stack-of-open-elements">stack of open elements</a> and return to step
-   2. (This will never fail, since the loop will always terminate in
-   the previous step if the top of the stack &mdash; an
-   <code><a href="#the-html-element-0">html</a></code> element &mdash; is reached.)</li>
+  <ul class="brief"><li>All the element types listed above for the <i><a href="#has-an-element-in-scope">has an element
+   in scope</a></i> algorithm.</li>
+   <li><code><a href="#the-ol-element">ol</a></code> in the HTML namespace</li>
+   <li><code><a href="#the-ul-element">ul</a></code> in the HTML namespace</li>
+  </ul><p>The <a href="#stack-of-open-elements">stack of open elements</a> is said to <dfn id="has-an-element-in-table-scope" title="has an element in table scope">have an element in <em>table
+  scope</em></dfn> when it <a href="#has-an-element-in-the-specific-scope">has an element in the specific
+  scope</a> consisting of the following element types:</p>
 
-  </ol><p>Nothing happens if at any time any of the elements in the
+  <ul class="brief"><li><code><a href="#the-html-element-0">html</a></code> in the HTML namespace</li> <!-- (This can only happen if the <var title="">node</var> is the topmost node of the <span>stack of open elements</span>, and prevents the next step from being invoked if there are no more elements in the stack.) -->
+   <li><code><a href="#the-table-element">table</a></code> in the HTML namespace</li>
+  </ul><p>Nothing happens if at any time any of the elements in the
   <a href="#stack-of-open-elements">stack of open elements</a> are moved to a new location in,
   or removed from, the <code>Document</code> tree. In particular, the
   stack is not changed in this situation. This can cause, amongst
@@ -57999,8 +57996,31 @@
 
     </ol></dd>
 
+   <!-- as normal, but needs care as the elements have optional tags, and are further scoped by <ol>/<ul> -->
+   <dt>An end tag whose tag name is "li"</dt>
+   <dd>
+
+    <p>If the <a href="#stack-of-open-elements">stack of open elements</a> does not <a href="#has-an-element-in-list-item-scope" title="has an element in list item scope">have an element in list
+    item scope</a> with the same tag name as that of the token,
+    then this is a <a href="#parse-error">parse error</a>; ignore the token.</p>
+
+    <p>Otherwise, run these steps:</p>
+
+    <ol><li><p><a href="#generate-implied-end-tags">Generate implied end tags</a>, except
+     for elements with the same tag name as the token.</li>
+
+     <li><p>If the <a href="#current-node">current node</a> is not an element with
+     the same tag name as that of the token, then this is a
+     <a href="#parse-error">parse error</a>.</li>
+
+     <li><p>Pop elements from the <a href="#stack-of-open-elements">stack of open elements</a>
+     until an element with the same tag name as the token has been
+     popped from the stack.</li>
+
+    </ol></dd>
+
    <!-- as normal, but needs care as the elements have optional tags -->
-   <dt>An end tag whose tag name is one of: "dd", "dt", "li"</dt>
+   <dt>An end tag whose tag name is one of: "dd", "dt"</dt>
    <dd>
 
     <p>If the <a href="#stack-of-open-elements">stack of open elements</a> does not <a href="#has-an-element-in-scope" title="has an element in scope">have an element in scope</a>

Received on Monday, 7 September 2009 11:23:42 UTC