見出しに関するメモ

XHTML 2.0では見出し構造の大幅な改善が検討されている。
HTMLでは以下のように記述していたものを


<body>
<h1>最大見出し</h1>
<h2>副見出し</h2>
<h3>小見出し</h3>
<p>段落</p>
<p>段落</p>
<h3>小見出し</h3>
<p>段落</p>
</body>
以下ように改善できる。

<body>
<h>最大見出し</h>
<section>

<h>副見出し</h>
<section>

<h>小見出し</h>
<section>
<p>段落</p>
<p>段落</p>
</section>

<h>小見出し</h>
<section>
<p>段落</p>
</section>

</section>

</section>
</body>

既存のh1、h2、h3としていく方式には、幾つかの問題点があった。

  • 見出しと段落の主従関係が自明でない
  • 全ての見出し、段落が平面的に配置されている
  • 見出しレベルが絶対数字によって明示されている

HTML4.01の記述方法では、全ての見出し・段落がbody要素の子要素として存在している。これではDTDを見ない限りは、極めて平面的で構造が全く解らない。また適切にグループ化されていないため、CSSやDOMによって極めて扱いにくい。
XHTML2の新しい方式では、h要素とsection要素の単純な入れ子関係によって、見出しとそれに従属する段落の純粋な主従関係が明示される。これならばDTD無しにもある程度構造が予想できるし、例えばCSSによって「第2レベルの見出しまでを取り出したい」などといった要求が簡単に実現できる。本文全体を一つのツリー構造として捉える事が出来るので、ツリー式にHTMLをレンダリングするユーザエージェントが出てきてもおかしくはないだろう。MS WORDの「アウトラインモード」に代表されるシステムを利用すれば、その編集は簡単になる。

実は ISO/IEM 15445 Preparation で、これらに近い形式が解説されている。


<body>
<h1>最大見出し</h1>
<div1>
<h2>副見出し</h2>
<div2>
<h3>小見出し</h3>
<div3>
<p>段落</p>
<p>段落</p>
</div3>
<h3>小見出し</h3>
<div3>
<p>段落</p>
</div3>
</div2>
</div1>
</body>

絶対数字で定義という部分は改善されていないものの、ほぼ同じ物と考えても差し支えないだろう。HTMLでも、div要素にclass名を持たせる事によって暫定的にsection要素に近いものを実現できた。
h1,h2という絶対数字によって見出しレベルを明示するやり方には、問題がある。端的に言えば、見出しレベルというのは慨して相対的だ。それを1〜6という限られた数字で実現しようというのは無理がある。ページ作者は意識的にそれらの数字を割り当てなければならないので、修正も難しく、本文に集中できない。<h>と<section>の繰り返しによる構造化は、純粋に親子関係のみを考慮するだけで良いので、極めて単純だ。

残念な事にh要素は未だ草案段階で、ワーキングドラフト5版でも注釈程度でしか解説されていない。例えXHTML 2.0に正式に導入されたとしても、ユーザエージェントが対応するのはまだまだ先の話だろう。特にXHTML2は後方互換性を殆ど考慮していないヴァージョンであるので、尚早に導入するならば多くのユーザを裏切る事にもなりかねない。Jakob Nielsenが言うように、多くのウェブユーザは新しい技術の導入に熱心ではない。
私の予想では、XHTML2を堂々と胸を張って使えるようになるのはおそらく2007年頃だろうと考えている。この数字は、IE.NETがXHTML2を考慮するか否かによっても随分揺れるだろう。最も、IE.NETがそれほど普及するかどうかは不明だが。