見出しの管轄範囲を考える

ページ情報
制作日
2004-01-14
最終更新日
2004-01-14
参照用URI
http://www.arielworks.net/articles/2004/0114a
分野

どこまでを上位の見出しの管轄とするか

XSLTで自動的にページ目次を作るようになってから、見出しの付け方に非常に悩むようになってきた。

1つのページ内に違う事についての文章が並んでいる時は比較的考えやすい。このサイトの『サイト案内』を例に取ると、「サイトの概要」から始まって「諸情報」まで、それぞれサイト案内に関することではあるが、見出しが管轄している内容自体は全く連続性が無い。こういうときはページの最初にある目次もうまく機能している。

h1からh6まで、見出しは連続して出てくるべきだ」ということではない。そもそも元のXML文章では見出しレベルなんていちいち付けずに、XHTML2.0のsection要素の様にマークアップしてある。

以下の例を考える。分かりやすくするためそれぞれの見出しが管轄する範囲をdiv要素でまとめてある。

<div class="section1">
<h1>foobar2000のインストール</h1>
<p>このページはサウンドプレーヤーfoobar2000のインストールと日本語化を解説するためのページです。</p>
<p>バージョンアップごとに撮り直すのが面倒なため何か画面に変更がない限りスクリーンショットは古いバージョンのままになっています。変更が有った場合は撮り直すので旧バージョンが表示されていても気にしないでください。</p>

<div class="section2">
<h2>本体のダウンロード</h2>
<p>まずは本体をダウンロードします。</p>
<p>次に~</p>
</div>

<div class="section2">
<h2>本体のインストール</h2>
<p>ダウンロードが完了したら早速インストーラー(ダウンロードしてきたファイル)を起動します。</p>
<p>そして~</p>
</div>

<div class="section2">
<h2>日本語化</h2>
<p>まず最初に次のサイトから日本語化パッチをダウンロードしてきます。</p>
<p>ダウンロードが完了したら~</p>
</div>

</div>

一見問題なさそうに思える。実際XHTML1.1としては妥当な構文で成り立っている。では、実際にXSLTでh2要素だけ拾ってみる。

  1. 本体のダウンロード
  2. 本体のインストール
  3. 日本語化

h1要素の開始タグと隣接する二つのp要素の内容が完全に抜け落ちてしまった。

この場合、はじめの2つのp要素は前書きのような物なので目次に含まれなくても問題無いかもしれない。もしくは「はじめに」といった見出しを作り隣接する二つのp要素もh2要素の管轄に納めてしまう手もある。

目次として機能しているのか

さらに以下の例を考える。

<div class="section1"><h1>ドメイン名考</h1>

<p>最近安さにつられてドメインを2つほど(1つはarielworks.comです)買ったんですが、現状だと古くからあるgTLD(.com/.net/.org)のうち、3文字くらいのドメインはほとんど全滅なんですね。</p>
<p>私が買ったもう1個のドメインはメール用に短いものにしようと思って4文字か5文字ぐらいにしようかなぁ、と考えていたんですが、それでも意味のある一般名詞はほとんど全滅です。もう少し待てば転売目的でキープしていた価値の低い.comを捨てる会社が増えてきて、現状よりも空きドメインが増えるらしいんですが、それでも誰でも思いつくようなドメインを取るのはなかなか難しいんじゃないかと思います。ドットコム。(語尾に「ドットコム」を付けるのが一時期内輪で流行ったな、そういえば……)</p>
<p>さて、私の場合普段の生活で使うつもりだったので、「短さ」だけでなく口頭でアドレスを伝えるときの「発音のしやすさ」を重視しようと考えていました。</p>
<p>以下10個程度段落が続く……</p>

<div class="secton2">
<h2>関連リンク</h2>
<ul>
<li><a href="foo.html">hogehoge</a></li>
</ul>
</div>

</div>

同様にh2要素だけ拾って目次を作ると

となってしまう。明らかに言いたいことはh1要素が管轄する文章なのに、目次に表示されるのは「関連リンク」のみだけである。

解決策

では、どうするべきか。選択肢は以下の通りだ。

  1. そもそもh2要素を拾うのが間違っている。
  2. さっきと同様、先頭にもう1つh2要素を追加する。
  3. 目次とはこういう物である。

この問題は目次に登録するhn要素をどこまで含めるかでどんどんややこしくなる。2の選択肢を選ぶ場合、h3要素まで目次に含めるとするとh3要素が1つでも内包されているh2要素は直接管轄している範囲の全ての要素をh3に委譲しなければならなくなってしまう。つまり、その見出し以下の大きさの見出しを1つでも持つときはその見出し自信は一切内容を持ってはいけない、ということだ。

複数のXMLファイルを組み合わせて1つのXML文章とすることもあるので、元のファイルのh1要素が組み合わされた時にはh2要素になっていたりするのも頭が痛い。

選択肢1については他に考えようが無いので現時点では何とも言えない。

選択肢3はW3Cの勧告書などが採用している。もっとも勧告書はもっと長いので「関連リンク」だけということは無いが、2階層目の見出し(「1.1」など)を選ぶと1階層目の最初の部分は飛ばされることになる。

W3Cがこの方式なので何となく選択肢3が有力に思えるが、今度は最初の例の「はじめに」を作るべきか作らないべきかで悩んでしまう。結局の所、その都度文章の重要性を考えてマーク付けするしか無いのだろう。

個人的な結論を言えば、冒頭の文章が次に出てくる小見出しと同じレベルの物ならばそのときは新たに冒頭に小見出しを足し、冒頭の文章が取るに足らない補足事項の様な物ならばそのまま流してしまえば良いんではないかと思う。

連絡先、リンク、転載や複製などについては「サイト案内」をご覧ください。Powered by HIMMEL