So, in the following:
<body>
<h1>Document Title</h1>
<section>
<h2>Section Title</h2>
<section>
<h3>Subsection Title</h3>
</section>
</section>
</body>
…each heading would have an outline depth of 1, yet for:
<body>
<h1>Document Title</h1>
<h2>Section Title</h2>
<h3>Subsection Title</h3>
</body>
…which is, according to the spec, semantically identical to the previous
example, each heading would instead have an outline depth of 1, 2, and 3
respectively.
At least, that is how this implementation (
https://github.com/hoyois/html5outliner) behaves; I raised this issue with
the implementor and he seems to think it is the correct behavior—if so,
why? Wouldn't it make more sense to have the depths be 1, 2, and 3, whether
explicit sections are used or not?
I don't understand. The relevant spec text is:
"The outline depth of a heading content element associated with a
section section is the number of sections that are ancestors of
section in the outline that section finds itself in when the outlines
of its Document's elements are created, plus 1. The outline depth of a
heading content element not associated with a section is 1."
This seems pretty clear - the outline depths of the headings in the
first snippet are, respectively, 1, 2, and 3, since that's how many
sections (plus 1) are the ancestors of each. The same applies to the
second snippet, since the implied sections generated by the headings
produce the same virtual structure as the first snippet.
What text are you looking at that implies the outline depths of the
headings in the first snippet are all 1?
~TJ
I could not find anything, but the person who wrote that JavaScript
implementation seemed pretty convinced that this was the case
(https://github.com/hoyois/html5outliner/issues/1#issuecomment-4653452).
I figured that having written an implementation he had studied the
relevant sections in considerably more depth than I had and
second-guessed myself. Looks like it is in fact a bug in the program
and not the spec. Thanks for clearing that up!
It's possible they'd gotten confused by the fact that the first
heading in a section, no matter what rank it is, is more-or-less
equivalent to a <h1> as far as the outlining algorithm is concerned.
~TJ
Actually his stated reason was that the spec says "the outline that s
finds itself in" which he interpreted as "the current outlinee".
Perhaps this should be rephrased to "the document outline that s finds
itself in", or similar, so it isn't confused as a sub-outline.