W3C home > Mailing lists > Public > www-validator@w3.org > May 2014

Re: [VE][html5] Warning about multiple h1 seems to go against HTML5 design

From: Michael[tm] Smith <mike@w3.org>
Date: Tue, 27 May 2014 01:25:49 +0900
To: Tony Middleton <tony@middleton.me.uk>
Cc: www-validator@w3.org
Message-ID: <20140526162549.GR22646@jay.w3.org>
"Jukka K. Korpela" <jkorpela@cs.tut.fi>, 2014-05-26 18:01 +0300:

> 2014-05-23 19:09, Tony Middleton wrote:
> 
> > I have a number of pages with a <section> which contains a number of
> ><section> groups.  Both the top level section and the subsidiary
> >sections have h1 elements.  This I understood is the suggested way of
> >doing things in HTML5.
> 
> I don't think it ever was the suggested way. Rather, a possible way.
> According to current HTML5 CR, it is still permitted but strongly
> discouraged.

More details at https://www.w3.org/wiki/HTML/Usage/Headings/h1only

A key problem in practice right now with only using H1s is that current
browsers do not yet actually expose the correct outline depth of headings
to accessibility software in the way that the HTML spec says they must.

So if you only use H1s in a document -- even if the H1s are in nested
<section>s -- screen readers will announce all of them to users as top-
level headings regardless of what their outline depth (nesting level) is.

That is, if your source doc has this:

  <body>
   <h1>top level heading</h1>
    <section><h1>(intended) 2nd level heading</h1>
     <section><h1>(intended) 3nd level heading</h1> 
     </section>
    </section>

...then you might expect it'd result in the headings of that document
getting presented to screen-reader users like this:

  → top level heading
  → → 2nd level heading
  → → → 3rd level heading

...but in fact it currently gets presented to SR users like this:

  → top level heading
  → top level heading
  → top level heading

> >However,  the validator gives me the following warning for the second
> >level h1's.
> >
> >Consider using the h1 element as a top-level heading only (all h1
> >elements are treated as top-level headings by many screen readers and
> >other tools

That is a recent warning that was experimentally added, for the reasons
Jukka describes below. If and when browsers actually get around to
conforming to the HTML spec on this and exposing the outline depths of
heading correctly, in the way the spec requires, the warning could be
retired. (There are bugs open against all major browser engines requesting
that they implement correct outline depths for headings.)

> This apparently reflects the change described at
> http://lists.w3.org/Archives/Public/public-html/2013Feb/thread.html#msg125
> and the current wording at
> http://www.w3.org/TR/html5/sections.html#headings-and-sections
> which says:
> "Sections may contain headings of any rank, and authors are strongly
> encouraged to use headings of the appropriate rank for the section's
> nesting level."
> 
> What this means is that you should use <h2> for any heading that is
> 2nd level relative to the page as a whole.

Yeah, so that instead of using the markup in the example above,
current best-practice (given the lack of outline-depth support in browsers
at this point) is to instead do this:

  <body>
   <h1>top level heading</h1>
    <section><h2>(intended) 2nd level heading</h2>
     <section><h3>(intended) 3nd level heading</h3> 
     </section>
    </section>

-- 
Michael[tm] Smith http://people.w3.org/mike

Received on Monday, 26 May 2014 16:25:51 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 1 March 2016 14:18:11 UTC