2011年4月16日土曜日

HTML5についてのおさらい

hgroup要素 - 見出しのグループ化

hgroup要素は、複数の見出しをグループ化します。hgroup要素の中に入れることができるのはh1要素からh6要素までの見出しのみです。見出しのグループ化によって得られる効果は、副題やキャッチフレーズを伴う場合に意味的・構造的にそれを一つの見出しとして構成することができることと、加えて無駄なアウトラインの形成を抑止できることです。

<body>
<h1>A</h1>
<h2>A'</h2>
<h2>B</h2>
<p>C</p>
</body>

上記のHTML5ドキュメントであれば、HTML5適合UAは暗黙のセクションに基づいて次のアウトライン(階層構造)を形成します。

  1. A...bodyセクションの見出し(レベルはh1)
    1. A'...暗黙のセクションを開始する見出し(レベルはh2)
    2. B...暗黙のセクションを開始する見出し(レベルはh2)で、段落のCを含んでいる

もし、制作者が意図的にA'の見出しをAの見出しの副題やキャッチフレーズとして含めたくても従来のマークアップではアウトラインが生成されてしまい、構造的にもわかれてしまう問題がありました。そこでhgroup要素を利用することで、従来のマークアップが抱えていた問題を解決することができます。

<body>
<hgroup>
<h1>A</h1>
<h2>A'</h2>
</hgroup>
<h2>B</h2>
<p>C</p>
</body>

hgroup要素を用いることにより、HTML5適合UAにおける上記のHTML5ドキュメントのアウトライン(階層構造)は次のように形成されます。

  1. A+A'...bodyセクションの見出し(レベルはh1)
    1. B...暗黙のセクションを開始する見出し(レベルはh2)で、段落のCを含んでいる

hgroup要素内にある複数の見出しはグループ化が行われ、その見出しのレベルは複数の見出しの中で、もっとも高いレベルに準じ、意味的にも1つの見出しとして構成されます。そして、形成されるアウトラインも見出し1つ分であることがhgroup要素のもっとも注目すべき点です。

なお、ここでは説明にあたって便宜上わかりやすくするために暗黙のセクションを用いましたが、マークアップの際は暗黙のセクションに依存するのではなく、次のように必ずセクショニング・コンテンツ(article, aside, nav, section要素)を用いるようにしましょう。形成されるアウトライン(階層構造)は同じです。

<body>
<hgroup>
<h1>A</h1>
<h2>A'</h2>
</hgroup>
   
<section>
   
<h2>B</h2>
   
<p>C</p>
   
</section>
</body>

header要素 - ページ全体のヘッダと各セクションのヘッダ

header要素は導入部分(コンテンツの概略や目次)、ナビゲーションなどをグループ化して提供するために使います。header要素内に、header要素とfooter要素を入れることはできません。header要素はセクションの一部であって、新しいセクションを開始するものでもなければ、アウトラインにも影響を及ぼしません。そして、bodyセクション内で使うか、各セクション内で使うかによって、それぞれ違った役割を果たすケースが多いはずです。

ページ全体のヘッダ(ページ・ヘッダ)

bodyセクション内でheader要素を使う場合は、サイト名称やロゴ、主要なナビゲーション、サイト内検索フォームなどをグループ化した典型的なヘッダとして提供することが一般的です。これは多くの制作者が従来使ってきた<div id="header">...</div>に置き換わるものであると考えるとわかりやすいかもしれません。

<body>
<header>
<hgroup>
<h1>サイト名</h1>
<h2>サブタイトル</h2>
</hgroup>
   
<nav>
   
<ul>
   
<li><a href="/contents1/">主コンテンツその1</a></li>
   
<li><a href="/contents2/">主コンテンツその2</a></li>
   
<li><a href="/contents3/">主コンテンツその3</a></li>
   
</ul>
   
</nav>
</header>
...
</body>

各セクションのヘッダ

各セクションのヘッダとは、暗黙のセクション、またはセクショニング・コンテンツによって生成されたセクションの中で使われるheader要素を言います。ページ・ヘッダはサイト全体に関するナビゲーションをグループ化して提供するために使用されるケースが多いのに対し、各セクションのヘッダはセクション内のコンテンツについての概略(見出しと概要)や目次といった、そのコンテンツの導入部分を提供するために使用するケースが多くなるでしょう。たとえば、次のようにarticle要素のセクション内で本文の導入部分として提供するような使い方です。

<body>
...
   
<article>
   
<header>
   
<h2>続HTML5についてのおさらい</h2>
   
<p>TML5についてのおさらい続編です。前回の内容を受けて...</p>
   
</header>
...
   
</article>
...
</body>

footer要素 - ページ全体のフッタと各セクションのフッタ

footer要素はそのセクションに関する情報をグループ化して提供するために使用します。header要素と使用ケースが似ているため説明がやや冗長ですが、文法等はheader要素と同様で、footer要素内にheader要素とfooter要素を入れることができず、新しいセクションを開始するものでもなければ、アウトラインにも影響を及ぼしません。また、bodyセクション内で使うか、各セクション内で使うかによって、こちらもそれぞれ違った役割を果たすケースが多いはずです。

ページ全体のフッタ(ページ・フッタ)

bodyセクション内でfooter要素を使う場合は、サイトそのものに関するナビゲーションや著作権表記などをグループ化した典型的なフッタとして提供することが一般的です。もちろん、これは多くの制作者が従来使ってきた<div id="footer">...</div>に置き換わるものであると考えるとわかりやすいでしょう。

<body>
...
<footer>
<ul>
<li><a href="/sitepolicy/">サイトポリシー</a></li>
<li><a href="/privacy/">個人情報の取り扱いについて</a></li>
<li><a href="/sitemap/">サイトマップ</a></li>
</ul>
<small>Copyright ???. All right reserved.</small>
</footer>
</body>

各セクションのフッタ

各セクションのフッタとは、暗黙のセクション、またはセクショニング・コンテンツによって生成されたセクションの中で使われるfooter要素を言います。フッタと言っても必ずしもセクションの最後で使わなければいけないわけではなく、セクションの頭でも途中でも使用することができます。

各セクションのフッタは、主にarticle要素のセクション内で記事が誰によっていつ作成され、またいつ更新されたのかといった情報のグループ化であったり、本文の補足情報のグループ化、関連リンクのグループ化、ブログのコメントのグループ化などに使用されるケースが考えられます。

もしセクショニング・コンテンツの使い方で迷ったら?

質問の多かったところで、セクショニング・コンテンツであるarticle, aside, nav, section要素のいずれでマークアップするのが良いのか使い分けに迷うような場合は、次のように意味がわかりやすいものから順に当てはめていくことで、必ずしも適当ではありませんが、どのセクショニング・コンテンツでマークアップするのが良いのかの手引きにはできるかもしれません。

手順1. ナビゲーションかどうか

マークアップしようとしている内容がナビゲーションであれば、nav要素を使います。ただし、ページ内に以降同じナビゲーションが登場する場合は先に登場する方にだけnav要素を使います。内容がナビゲーションでない場合は次の手順へ移ります。

手順2. 自己完結された内容かどうか

その内容がそれ単独でコンテンツとして成り立つのであれば、article要素を使います。ただし、RSS等のフィードで提供する内容に相応しかどうかを基準とします。内容が単独で成り立つものではなかったり、成り立つものであってもフィードとして提供するのに相応しくない場合は次の手順へ移ります。

手順3. なくなってもページとして成り立つかどうか

その内容がなくなってもページ、またはメインコンテンツとして成り立つのであれば、aside要素を使います。その内容がなくなってしまうとページ、またはメインコンテンツが成り立たなくなるような場合は次の手順へ移ります。

手順4. 自然に見出しを含められるかどうか

その内容に自然に見出しを伴うことができるのであれば、section要素を使います。自然に見出しを入れられない(見出しを伴えない)ような内容の場合は、セクショニング・コンテンツ以外の要素でマークアップするのが相応しいということになります。

strong, em, b, i, mark要素の使い分け

これまでのセクションについての内容から話が大きくそれてしまいますが、読者の方から質問があったことに対する、一見解としてあわせてここに記載しておくことにします。

XHTML1.1でプレゼンテーションモジュールに分類されていた要素は、本来XHTML2.0からは削除予定であったのに対し、HTML5からb要素, i要素が削除されずに残っていることから、strong, em, b, i要素、加えて新たなmark要素をそれぞれ必要以上に使い分けなければならないのではないかと混乱される方が多いようです。

HTML5では、これらの要素における定義は明確にわけられており、strong要素とem要素の使い分けはわかりやすくなったかと思うのですが、i要素とb要素については使い分ける必要も、また無理に使う必要もない要素であると考えます。

strong要素

従来strong要素に与えられてきた論理的な意味は「強い強調」であり、強調と重要性どちらの意味でも利用可能でしたが、HTML5では強調の意味が失われ、「重要性」のみを表す要素に変更されました。また、その重要性の度合いはstrong要素自身の入れ子関係によって表すことができます。たとえば、次のサンプルは注意喚起したい場合で、注意喚起のフレーズの中でも特に訴えたい何故なのかの部分を入れ子にしてあります。

<h1><strong>まぜるな<strong>危険</strong></strong></h1>
<p><strong>酸性タイプ</strong>の製品と一緒に使う(まぜる)と有毒な塩素ガスが出て<strong>危険</strong>です。
</p>

em要素

従来em要素に与えられてきた論理的な意味は「強調」であり、strong要素と同様で強調と重要性どちらの意味でも利用可能でしたが、HTML5ではstrong要素とは逆に重要性の意味が失われ、強調のみを表す要素に変更されました。その強調の度合いはem要素自身の入れ子関係で表すことができます。音声環境においては、em要素でマークされた部分は強勢として働き、他の音節よりも呼気エネルギーを大きくして、読み上げられることが期待されます。たとえば、次のサンプルは強勢としてトーンを強めたい部分における使用例で、さらにトーンを強めたい部分を入れ子にしてあります。

<p>魚が<em>好き<em>です。でも、<em>お肉は<em>もっと好き</em>です。</em></p>

i要素

従来のi要素はテキストを視覚的にイタリック体、または斜体で表示させることのみを目的とした物理要素でしかありませんでしたが、HTML5では声やムード、分類用語、技術用語、外国語の慣用句、思考、船の名前といった印刷表現において一般的にイタリック体で表記されるべきテキストを区別するために用いられます。しかしながら、ここで上げられている対象例は、一般的な日本語のサイトにおいてはほとんど使いどころがなく、また他に相応しい要素がない場合にのみi要素を使うことが推奨されていることからも、日本語のサイトにおいてはi要素は使い分ける必要も無理に使う必要もない要素と考えて良いでしょう。

b要素

従来のb要素はテキストを視覚的にボールド(太字)で表示させることのみを目的とした物理要素でしかありませんでしたが、HTML5では印刷表現において一般的にボールド(太字)で表記されるべきテキストを区別するために用いられます。i要素のような具体的な用例が設けられておらず、加えてb要素は他に相応しい要素がない場合に、他のテキストと区別したい場合の最後の手段として用いることになっているので、i要素よりもより一層、使い分ける必要も無理に使う必要もない要素と考えて良いでしょう。

mark要素

mark要素はHTML5から新たに加えられた要素で、重要性でも強調性の意味をもたせるでもなく、他の文章から参照されることを目的に印付けるために使用します。たとえば、サイト内検索機能の検索結果で検索キーワードがスニペット内に含められている場合に該当キーワード部分をハイライトさせるために用いたり、引用文の中で言及したい部分に対して注目を引くために用いたり、コンピューターのプログラムコードの例示において読者に注目してほしい部分として印付けるために用いる等の利用シーンが考えらます。

以上、最後がマークアップについての見解コーナのようになってしまいましたが、HTML5のマークアップに関するおさらいはこれにて一段落とします。ご購読どうもありがとうございました。

HTML5についてのおさらい

HTML5の記述方法

まず最初に、必ずDOCTYPE宣言を行います。HTML5には公式のDTDがないので、すごくシンプルになっています。

<!DOCTYPE html> 

続いて、html要素にドキュメントの言語を宣言します。

<html lang="ja">

そして順番にhead要素ときて、文字エンコーディングの指定ですが、charset属性が新たに利用できるようになりました。

<meta charset="UTF-8"> 

あとは今までで慣れ親しんだ書き方と同じなので、だいたいの骨格をまとめると次のようになります。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>HTML5についてのおさらい - W3G</title>
<link rel="stylesheet" type="text/css" href="/common.css">
</head>
<body>
...
</body>
</html>

なお、html,head,body要素とlink, script要素に設定するtype属性(例:type="text/css", type="text/javascript")は省略可能です。こうするとさらにすっきり。

<!DOCTYPE html>
<meta charset="UTF-8">
<title>HTML5についてのおさらい - W3G</title>
<link rel="stylesheet" href="/common.css">

...

XHTMLの記法になれてしまった方には朗報。終了タグの存在しない要素については、HTMLシリアライゼーションでもXHTMLのように />を付け足すこともできます。

<meta charset="UTF-8" />

HTML5の新要素を使うには

Firefox, Chromeが着々とシェアを伸ばしてはいますが、まだまだ全体的に見るとInternet Explorerがブラウザシェアの過半数を占めており、現在正式リリースされている最新バージョンであるInternet Explorer8でさえも、HTML5の新要素は未知の要素として、無視して取り扱われます。そのためHTML5の新要素を使うには、IEにとって未知の要素であるHTML5の新要素をレンダリングが行われる前に、その存在を覚えさせてあげる必要があります。

その方法とはdocument.createElement(HTML5の新要素名);head内など先に記述しておきます。ですが、新要素の数はけっこうあるので、これを一つずつ記述するのは非常に面倒です。そこで、古いブラウザでもHTML5が使えるようになる便利なオープンソースのライブラリが用意されていますので、次のJavaScriptをhead内に読み込ませれば、すぐにHTML5の新要素が使えるようになります。

<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->

最初の<!--[if lt IE 9]><![endif]-->がコメントで囲まれていますが、これはIEの独自仕様でIEだけ「もしIE9未満だった場合にのみ実行する」というコードとしてこれを解釈します。IE9からはHTML5に標準対応予定なので、このライブラリを読み込む必要がないためにこのように記述します。

カテゴリ分けを知っておこう

HTML5では要素ごとに目的に応じたグループ分けがなされており、従来のインライン要素にブロック要素を含めることができないといった概念と同様、そのカテゴリに属する要素にはどんなコンテンツ(要素およびテキスト)を含めることができるのかが定義されています(コンテンツ・モデルを参照)。

このグループ分けによってできたカテゴリには次の8つがあります。

メタデータ・コンテンツ

主にドキュメントのメタデータや、スタイル、スクリプトの定義を行う要素がこれに分類されています。

フロー・コンテンツ

body内(一部例外あり)に記述するコンテンツ(要素およびテキスト)全般がフロー・コンテンツに属します。ですので、HTML5の要素の多くはフロー・コンテンツに属し、フロー・コンテンツに属する要素は他のカテゴリにも属しています。

セクショニング・コンテンツ

アウトライン(階層構造)を形成し、その内容が含んでいる範囲を定義する要素がこれに属します。

要素名を書き出しておきます。article,aside,nav,sectionの新要素です。

ヘッディング・コンテンツ

見出し関連の要素が属します。

フレージング・コンテンツ

これまでのインライン要素と似たようなものでテキストノードの要素がこれに属します。

エンベッディド・コンテンツ

他のリソースを組み込む要素やSVG, MathMLなどのHTMLではない別の言語で表されるコンテンツがこれに属します。

インタラクティブ・コンテンツ

ハイパーリンクなどユーザが何かしらの操作ができる要素がこれに属します。

セクショニング・ルート

独立した自身のアウトライン(階層構造)をもつことができる要素がこれに属します。

要素名を書き出しておきます。blockquote,body,details,fieldset,fiqure,tdの要素です。

Aの要素の中にBの要素を含めてはいけないなどの構文については間違っていれば単純に文法エラーとなりますので、そこはコンテンツ・モデルを参照してもらうとして、以上の8つのカテゴリ分けの中でもアウトライン(階層構造)に関わるところを強調したように、HTML5でのマークアップをはじめるにあたって重要になってくるのがアウトライン(階層構造)を意識したマークアップです。HTML5でのマークアップをはじめる際にはセクションとアウトラインの関係についてしっかりと理解しておく必要があります。ここからが本題で、以下、主にアウトラインを意識したマークアップのための説明です。

暗黙のセクションについて

これから説明するセクションというのは、section要素のことではなく、概念上のセクションという意味です。

<body>
<h1>A</h1>
<p>B</p>
<h2>C</h2>
<p>D</p>
<h3>E</h3>
<p>F</p>
<h2>G</h2>
<p>H</p>
</body>

HTML4やXHTML1では、どこからどこまでがその範囲なのかを明示的に示す要素はなかったため、h1?h6の見出し要素を使って、その手がかりとしていました。HTML5に適合するUAであれば、HTML5のドキュメントにおいては、上記のようにセクショニング・コンテンツで明示されていない場合、アウトライン・アルゴリズムに従って、見出し要素が登場する度に、自動的に新たなセクションが始まるものと見なします。つまり次のようなアウトライン(階層構造)が形成されます。

  1. A...bodyセクションの見出しで、段落のBを含んでいる
    1. C...暗黙のセクションを開始する見出しで、段落のDを含んでいる
      1. E...暗黙のセクションを開始する見出しで、段落のFを含んでいる
    2. G...暗黙のセクションを開始する見出しで、段落のHを含んでいる

今度は上記の内容をセクショニング・コンテンツを使ってセクションを明示したマークアップを例にとってみましょう。なお、暗黙のセクションを取り上げましたが、HTML5のマークアップをする際は、この暗黙のセクションに依存するのではなく、必ずセクショニング・コンテンツでセクションを明示するようにしましょう

セクショニング・コンテンツを使ったセクションについて

先の内容であれば、マークアップにはsection要素が妥当なので、section要素でセクションを明示していきます。

<body>
<h1>A</h1>
<p>B</p>
   
<section>
   
<h2>C</h2>
   
<p>D</p>
           
<section>
           
<h3>E</h3>
           
<p>F</p>
           
</section>
   
</section>
   
<section>
   
<h2>G</h2>
   
<p>H</p>
   
</section>
</body>

これで上記でもHTML5に適合するUAであれば暗黙のセクションの際と同じアウトライン(階層構造)が形成されます。

  1. A
    1. C
      1. E
    2. G

このようにHTML5ではセクションを明示したマークアップで、アウトライン(階層構造)を形成していく要領がつかめたかと思います。セクションを明示するセクショニング・コンテンツはsection要素だけでなく、他にもarticle,aside,navが存在し、どのように使い分ければ良いのかを迷うところでもあるのでそれぞれの用途について簡単に触れておきます。

article要素

それ自身が独立した自己完結のコンテンツであることを表すのに使います。ブログのエントリーやエントリーへの各コメントなどです。RSS等のフィードで提供する内容に相応しかどうかで、article要素を使うかどうかの基準となります。

aside要素

メインコンテンツから切り離すことができるコンテンツ(このコンテンツがなくなってもページが成り立つというコンテンツ)である場合に使います。メインコンテンツの中で使うか、外で使うかによって意味が変わってきます。たとえば、article要素の中で使う場合は、メインコンテンツの内容と何かしらの関連性がなければなりません。補足記事やブログのエントリーに対する各コメント(article要素として表すほどコメント自体が重要でないブログの場合)などが該当します。中で使う場合に対して、メインコンテンツの外で使う場合は、サイトやページ全体に関連性があることを示し、サイドバー(サイトによってはサイドではないかもしれません)や広告などに使います。

aside要素のセクション内に無理に見出しを入れる必要はなく、HTML5適合UAであればデフォルトでSidebar等(UAにより異なります)の見出しを生成してくれるはずです。サイドバーの用途じゃなくてもSidebarとなる点については気にしなくて大丈夫です。

nav要素

主要なナビゲーションである場合に使います。aside要素のようにメインコンテンツ内で使う場合は、パンくずリストなどメインコンテンツに関連したナビゲーションであることを示すのに使ったり、メインコンテンツの外であれば、サイトやページ全体に関連するナビゲーションであることを指し示すためのグローバルナビゲーションなどに使用します。ただし、ヘッダとフッタの両方に全く同じリンク先の内容が重複しているようなナビゲーションの場合には、ヘッダの方のナビゲーションにだけnav要素を使い、フッタの方にもnav要素を使用することは適しません。主要であることが大事で、ページ内に存在するナビゲーションの種類が多いか少ないかにもよりますが、ページ内の2?3の主要なナビゲーションに使うのが良いのではないでしょうか。

aside要素と同じでセクション内に無理に見出しを入れる必要はなく、HTML5適合UAであればデフォルトでNavigation等(UAにより異なります)の見出しを生成してくれるはずです。

section要素

章・節・項のようなもっとも汎用的なセクションを表すのに使います。他のセクショニング・コンテンツ(article, aside, nav)の方が適しているような内容の場合には、必ずそちらを使います。また、自然に見出しを入れられない(見出しを伴えない)ような内容の場合や、スタイリングのためやスクリプティングを動作させる起点のためにsection要素を使ってはいけません。スタイリングやスクリプティング用途であれば、div要素を使います。

もし、section要素内に見出しを伴えない場合、そのセクションはUntitled sectionとなります。この間違いも多いので、HTML5を使いはじめる際は、section要素によるセクションでUntitled sectionを生み出さないように注意しましょう。

では、以上をふまえて、次のようなHTML5ドキュメントの場合はどのようなアウトラインが形成されるか想像がつくでしょうか。

<body>
   
<nav>
   
<p><a href="/">Home</a></p>
   
</nav>
<p>Hello world.</p>
   
<aside>
   
<p>My cat is cute.</p>
   
</aside>
</body>

上記にはbody,nav,aisdeの3つのセクションが存在しますが、問題はセクショニング・ルートであるbody要素に対する見出しが存在しないことです。このため、この場合のアウトライン(階層構造)は次のように形成されてしまいます。

  1. Untitled document
    1. Navigation
    2. Sidebar

これもHTML5の使いはじめの際によくやってしまいがちな間違いですので気をつけましょう。

また自分のドキュメントにて、どのようなアウトライン(階層構造)が形成されているかを確認できるオンラインツール(HTML 5 Outlinerリンク先を別画面で開きます)もあるので、ぜひ利用しましょう。このツールでは、aside, navのデフォルトの見出しは生成しないので、Untitled sectionとなりますが、aside, navによるセクションの場合のUntitled sectionは間違いではありませんので気にしなくて大丈夫です。

見出しレベルの正しい使い方

最後にもうひとつ、以下は推奨事項ですが、HTML5でのマークアップの際には気をつけておくべきなのが、見出しレベルの使い方です。

セクション内には、h1からh6までのどのレベルの見出しをも含むことができるのですが、h1要素だけを使うか、または、セクションのネストに合ったレベルの見出し要素を使うかの、どちらかの見出しレベルの出現ルールに沿ったマークアップをすることが強く推奨されています。

また、「暗黙のセクションに依存するのではなく...」と先述していたように一つのセクション内に複数の見出しを入れるのではなく、見出しごとにセクションを明示的に包含させていくことが推奨されています。

h1要素だけを使った場合は、下記のようになります。

<body>
<h1>A</h1>
<p>B</p>
   
<section>
   
<h1>C</h1>
   
<p>D</p>
           
<section>
           
<h1>E</h1>
           
<p>F</p>
           
</section>
   
</section>
   
<section>
   
<h1>G</h1>
   
<p>H</p>
   
</section>
</body>

セクショニング・ルートにおける見出しとアウトライン

なお、セクショニング・ルートであるblockquote,details,fieldset,fiqure,tdの要素内に見出しを伴う際は、独自のアウトラインをもつことになるので上位要素からの見出しレベルを継承しません

たとえば、h1要素から開始してセクションのネストに合った見出しレベルに沿ったマークアップをしていたのであれば、セクショニング・ルート内では見出しレベルをリセットして、再びh1要素から開始させることもできます(もちろん、どのレベルの見出しをも含むことができるので、そのセクショニング・ルート内での後続の見出しレベルがセクションのネストにあった見出しレベルの使い方に沿っていればh1要素以外から開始しても可です)。

<body>
<h1>A</h1>
<p>B</p>
   
<section>
   
<h2>C</h2>
   
<p>D</p>
       
<blockquote>
       
<h1>E</h1>
       
<p>F</p>
           
<section>
           
<h2>G</h2>
           
<p>H</p>
           
</section>
       
</blockquote>
   
</section>
</body>

このHTML5ドキュメントの場合のアウトライン(階層構造)は次のように形成されます。

  1. A
    1. C

blockquote要素に含まれているEとGが見当たりませんが、これは前述のとおり、セクショニング・ルートのアウトラインは自身のアウトラインとして独立するので、blockquote要素のセクションはここからは別離しているためです。