アウトラインのルール
前提
- 前提1:Heading contentは、直近の祖先たる黙示セクション又は明示セクションの見出しとなる要素である。
- 前提2:明示セクションは、Sectioning contentによってマークアップされる。
- 前提3:黙示セクションは、明示セクション(Sectioning content)の入れ子による構造化がされてない場合に、Heading contentの存在によって構成される。
- 前提4(仕様における例示から推測):黙示セクションの始端は、見出し(Heading content)である。その終端は、「始端より後に出てくる見出し(Heading content)の中で、始端の見出し(Heading content)と同等又は上位の階層レベルのもののうち、最初のもの」の直前。この考え方で終端が見つからない場合は、
body
要素(黙示セクションと明示セクションの混在文書の場合は、Sectioning contentたる要素も)の終了タグの直前が終端。 - 前提5(仕様における例示から推測):
body
要素は、文書構造の大元として、最上位セクションとなる。
ルール
- ルール0:見出し(Heading content)を出てきた順番に拾い上げて、見出し(Heading content)の階層レベルに沿って階層化することで、アウトラインが構成される。
- ルール1:見出し(Heading content)の階層レベルは、
h1
要素がレベル1、h2
要素がレベル2、h3
要素がレベル3、h4
要素がレベル4、h5
要素がレベル5、h6
要素がレベル6。数値が大きいほど下位。 - ルール2:HTML文書に出てくる見出し(Heading content)の少なくても一つは、最上位レベル(レベル1)の見出し(つまり、
h1
要素)であるべきである。 - ルール3:HTML文書に最初に出てくる見出し(Heading content)は、最上位レベル(レベル1)の見出し(つまり、
h1
要素)であることが推奨される。 - ルール4:見出し(Heading content)の階層レベルは、その直前の順番に出てくる見出し(Heading content)の階層レベルと比べて、上位、同等、又は、1レベルだけ下位でなければならない。
- ルール5:見出し(Heading content)の階層レベルが上位であるほど、その祖先セクションの個数は少なくなる。
- ルール6:最上位レベル(レベル1)の見出し(つまり、
h1
要素)が複数あること自体は非準拠ではない。 - ユーザーエージェントに対する特記事項:アウトラインによって相互作用的な目次を生成する場合は、(ユーザーの操作によって)関連する見出し(Heading content)に飛ばすようにすべきである。
私見・補足:
- 私見1:ルール2及びルール3が推奨であって必須(MUST)ではないのは、当該HTML文書が巨大文書の分割ページのうちの一つである場合も考慮したためであると思われる。
- 私見2:ルール1及びルール5を勘案すれば、明示セクション(Sectioning content)の入れ子による構造化がされている場合は、見出し(Heading content)の階層レベルは、明示セクション(Sectioning content)の入れ子の階層レベルと一致させることが望ましい。そうすれば、ルール5に違反することを防止できる。
- 私見3:私見2を勘案すれば、見出し(Heading content)がない明示セクション(Sectioning content)は望ましくない。見出し(Heading content)がない
body
要素も望ましくない。 - 私見4:
body
要素による最上位セクションに、最上位レベル(レベル1)の見出し(h1
要素)が複数あること自体は、ルール6により非準拠ではないが、本当にそうする必要性があるのかは熟慮した方がいい。もしかしたらそれらの見出しの本来の階層レベルは2(h2
要素)であり、より上位の単一の見出し(つまり、1個だけのh1
要素)をつけることが可能かもしれない。 - 私見5:文書構造が把握しづらくなるので、黙示セクションと明示セクションの混在は望ましくない。
アウトラインの例1
- ソース
-
<body> <h1>1</h1> <h2>2-1</h2> <h3>3-1</h3> <p>3-1の文章</p> <h3>3-2</h3> <p>3-2の文章</p> <h2>2-2</h2> <h3>3-3</h3> <p>3-3の文章</p> <h3>3-4</h3> <p>3-4の文章</p> </body>
- アウトラインの解析結果
-
- h1:1
- h2:2-1
- h3:3-1
- h3:3-2
- h2:2-2
- h3:3-3
- h3:3-4
- h2:2-1
- h1:1
アウトラインの例2
- ソース
-
<body> <h1>1</h1> <section> <h2>2-1</h2> <section> <h3>3-1</h3> <p>文章</p> </section> <section> <h3>3-2</h3> <p>文章</p> </section> </section> <section> <h2>2-2</h2> <section> <h3>3-3</h3> <p>文章</p> </section> <section> <h3>3-4</h3> <p>文章</p> </section> </section> </body>
- アウトラインの解析結果
-
- h1:1
- h2:2-1
- h3:3-1
- h3:3-2
- h2:2-2
- h3:3-3
- h3:3-4
- h2:2-1
- h1:1
アウトラインの例1の黙示セクションを明示セクション(Sectioning content)にしたもの。この方が構造の把握やスタイリングなどがしやすくなる。
アウトラインの例3
- ソース
-
<body> <h1>1</h1> <section> <h1>2-1</h1> <section> <h1>3-1</h1> <p>文章</p> </section> <section> <h1>3-2</h1> <p>文章</p> </section> </section> <section> <h1>2-2</h1> <section> <h1>3-3</h1> <p>文章</p> </section> <section> <h1>3-4</h1> <p>文章</p> </section> </section> </body>
- アウトラインの解析結果
-
- h1:1
- h1:2-1
- h1:3-1
- h1:3-2
- h1:2-2
- h1:3-3
- h1:3-4
見出し同士を比べると、「見出しの階層レベルがより上位になったわけでもないのに、その祖先セクションの個数が少なくなっている」ので、ルール5に違反している。よって、この例は非準拠である。
アウトラインの例4
- ソース
-
<body> <h1>1</h1> <section> <h2>2-1</h2> <section> <h3>3-1</h3> <p>文章</p> </section> <h3>3-2</h3> <p>文章</p> </section> <h2>2-2</h2> <h3>3-3</h3> <p>3-3の文章</p> <h3>3-4</h3> <p>3-4の文章</p> </body>
- アウトラインの解析結果
-
- h1:1
- h2:2-1
- h3:3-1
- h3:3-2
- h2:2-2
- h3:3-3
- h3:3-4
- h2:2-1
- h1:1
私見・補足:私見5に反しているので、望ましくない(<h3>3-2</h3>
、<h2>2-2</h2>
、<h3>3-3</h3>
、<h3>3-4</h3>
が、黙示セクション)。
アウトラインの例5
- ソース
-
<body> <h1>1</h1> <article> <section> <h2>3-1</h2> <p>文章</p> </section> <section> <h2>3-2</h2> <p>文章</p> </section> </article> </body>
- アウトラインの解析結果
-
- h1:1
- h2:3-1
- h2:3-2
- h1:1
私見・補足:<h2>3-1</h2>
と<h2>3-2</h2>
は、私見2に反しているので、望ましくない。また、<article>
のセクションは、私見3に反しているので望ましくない。
アウトラインの例6
- ソース
-
<body> <h1>1</h1> <article> <section> <h3>3-1</h3> <p>文章</p> </section> <section> <h3>3-2</h3> <p>文章</p> </section> </article> </body>
- アウトラインの解析結果
-
- h1:1
- (h2が存在しない)
- h3:3-1
- h3:3-2
- (h2が存在しない)
- h1:1
<h3>3-1</h3>
の階層レベルがその直前の順番に出てくる<h1>1</h1>
の階層レベルより2レベル下位なので、ルール4の違反となり、非準拠である。
私見・補足:<article>
のセクションは、私見3に反しているので望ましくない。
アウトラインの例7
- ソース
-
<body> <section> <h1>2-1</h1> </section> <h2>1</h2> </body>
- アウトラインの解析結果
-
- h1:2-1
- h2:1
- h1:2-1
ルール5に明白に違反しているので、この例は非準拠である。
アウトラインの例8
- ソース
-
<body> <header> <nav> <h2>サイト案内</h2> <ul> <li><a href="sitetop.html">トップページ</a></li> <li><a href="sitemap.html">サイトマップ</a></li> <li><a href="sitesearch.html">サイト内検索</a></li> </ul> </nav> <h1>1</h1> </header> <section> <h2>2-1</h2> <p>文章</p> </section> <section> <h2>2-2</h2> <p>文章</p> </section> </body>
- アウトラインの解析結果
-
- (h1が存在しない)
- h2:サイト案内
- h1:1
- h2:2-1
- h2:2-2
- (h1が存在しない)
ルール3に違反しているので、この例は推奨されない。<h1>1</h1>
を<nav>
の前にもっていくべきである。
アウトラインの例9
- ソース
-
<body> <section> <h2>2-1</h2> <p>文章</p> </section> <section> <h2>2-2</h2> <p>文章</p> </section> </body>
- アウトラインの解析結果
-
- (h1が存在しない)
- h2:2-1
- h2:2-2
- (h1が存在しない)
アウトラインの例10
- ソース
-
<body> <section> <h1>1-1</h1> <p>文章</p> </section> <section> <h1>1-2</h1> <p>文章</p> </section> </body>
- アウトラインの解析結果
-
- h1:1-1
- h1:1-2
私見・補足:いずれの見出しも私見2に反しているので望ましくない(アウトラインの例9のようにしないと、見出しとセクションの階層レベルが一致しない)。また、body
要素による最上位セクションが私見3に反しているので望ましくない。
アウトラインの例11
- ソース
-
<body> <h1>1-1</h1> <p>文章</p> <h1>1-2</h1> <p>文章</p> </body>
- アウトラインの解析結果
-
- h1:1-1
- h1:1-2
私見・補足:私見4を参照。この場合は、いずれの見出しも、body
要素による最上位セクションの見出しであると同時に、それぞれの黙示セクションの見出しでもあるということになるだろう。