[whatwg] WA1 - The Section Header Problem
Matthew Raymond
mattraymond at earthlink.net
Tue Nov 16 19:29:00 PST 2004
I'm not really going to fight you on the whole keeping <h1>-<h6>
thing, since HTML really only specifies them as being used for header
information and having different levels of importance.
I still feel that, structurally speaking, there should be a
<section> element for every section and subsection, even for sections
that are both leaves and immediate siblings. Therefore, I'm amending my
previous position with the following:
1) Nested headers are ignored. Therefore, this markup...
<h1><h2>Header</h2></h1>
...Is the same as...
<h1>Header</h1>
2) <h1>-<h6> have the same semantic value as in HTML 4.01, but are
additionally defined as not having any semantic meaning related to
document _structure_.
3) The <h> element is defined as being the same as <h1>-<h6>, except
that the importance level is obtained by the parent <section>, and <h>
can only be used within a <section>. Therefore, the following to example...
| <section><h>heading</h><p>Content</p></section>
...is semantically equivalent to...
| <section><h1>heading</h1><p>Content</p></section>
4) The header that is associated with <section> for use in tab names,
will always be the very first <h[#]> element in the <section>. This
header will not appear in the body of the tab unless a <tablabel> is
associated with the <section>.
So let's look at the example from the HTML 4.01 spec:
| <div class="section" id="forest-elephants" >
| <h1>Forest elephants</h1>
| <p>In this section, we discuss the lesser known forest elephants.
| ...this section continues...</p>
| <div class="subsection" id="forest-habitat" >
| <h2>Habitat</h2>
| <p>Forest elephants do not live in trees but among them.
| ...this subsection continues...</p>
| </div>
| </div>
This would have the exact same meaning as in HTML 4.01, but would be
additionally specified as not having semantic meaning related to
document structure. (Although it does have structure from a DOM point of
view, but this is not the same as _semantic_ structure.) To add semantic
structure, you would simply change the <div> elements to <sections>:
| <section id="forest-elephants" >
| <h1>Forest elephants</h1>
| <p>In this section, we discuss the lesser known forest elephants.
| ...this section continues...</p>
| <section id="forest-habitat" >
| <h2>Habitat</h2>
| <p>Forest elephants do not live in trees but among them.
| ...this subsection continues...</p>
| </section>
| </section>
If you intend your content only for WA1-compliant browsers, you
could do this:
| <section id="forest-elephants" >
| <h>Forest elephants</h>
| <p>In this section, we discuss the lesser known forest elephants.
| ...this section continues...</p>
| <section id="forest-habitat" >
| <h>Habitat</h>
| <p>Forest elephants do not live in trees but among them.
| ...this subsection continues...</p>
| </section>
| </section>
People could still do this:
| <section>
| <h1>Header 1</h1>
| <p>Content 1</p>
| <h1>Header 2</h1>
| <p>Content 2</p>
| </section>
However, from a semantic structural standpoint, the above is a
single section that has two headers interleaved with the content, and
the section in only semantically associated with the first header. User
agents may choose to break the above structurally for their own
purposes, but <section> elements have priority over with regard to
document structure.
I'd also like to see an optional attribute for <section> called
|level|, which would indicate the level of importance for all the child
<h> elements in the <section>. The idea would be that...
| <section level="2"><h>Header</h><p>Content</p></section>
...is effectively the same as...
| <section><h2>Header</h2><p>Content</p></section>
Will that suffice?
More information about the whatwg
mailing list