Henri Sivonen wrote:
What about the interaction of <section> with <head> and <body>?

How would you insert the optional tags in this case:

<!DOCTYPE html>
<title>...</title>
<section>...</section>
<div>...</div>

?

My tentative assumption has been
<!DOCTYPE html>
<html><head><title>...</title>
</head><body><section>...</section>
<div>...</div></body></html>

That is how I would recommend it be defined. It's not what Firefox does (that's the easiest browser to get the DOM source from), but I don't think the defined behaviour should be affected by the results of current browsers, in this case.

<!DOCTYPE html>
<html><head><title>...</title>
<section>...</section>
</head><body><div>...</div></body></html>

Firefox doesn't even get that, it does this:
(I've replaced "..." with "section" and "div", respectively, and formatted for easier reading)

<html>
  <head>
    <title>Testing</title>
    <section></section>
  </head>
  <body>
    section
    <div>
      div
    </div>
  </body>
</html>

In fact, even if you explicitly insert the <body> start tag, you get some strange results from unknown elements like section. For example, given this document:

<!DOCTYPE html>
<title>Testing</title>
<body>
<section>section
  <em>emphasis</em>
  <article>article</article>
  <div>div</div>
</section>

Firefox closes the section element before any known block element, but allows any text nodes, inline elements, and other unknown elements to be nested.

<html>
  <head>
    <title>Testing</title>
  </head>
  <body>
    <section>
      section <em>emphasis</em>
      <article>article</article>
    </section>
    <div>
      div
    </div>
  </body>
</html>

This is why it should be defined that elements like <setion> should imply <body>; however, for backwards compatibility, it should be recommended that the start tags not be omitted in such cases. Even then, it won't always work as intended. eg. you can't use these:

  section div, section p, ... { /* ... */ }

--
Lachlan Hunt
http://lachy.id.au/

Reply via email to