そんなわけで前回書いた HTML の構造から正しいマークアップについて考えてみる。 現在の Web サイトはおおよそ以下のような構造をもっていることが多い。

model

各ブロックはそれぞれの意味をもっているので、別々のセクションと考えることができる。 h タグによる構造化を行うのが HTML だとすると、各セクションには同レベルの h タグが必要になる。

じゃあ全部のブロックの見出しをそれぞれ h1 でマークアップするべきなんだろうか? HTML は文書構造をマークアップする言語なので、 HTML ドキュメントをどうとらえるかによって考え方は変わってくると思う。

ヘッダーフッターはブランディングエリア、補助的なナビゲーションエリアとして形成されることが多い、サイドバーはローカルナビゲーションや広告エリアとして扱われることが多い。ナビゲーションはメインナビゲーション。

こう考えるとこれら4つのブロックは、リソースというよりはサイトをひとつの空間として結びつけるためのものだと考えられる。 つまり本来のリソースとして必要なのはメインエリアだけになる。 hタグにはレベルがある以上、本来は上位のレベルから下位のレベルへという流れが正しい。

単純に考えるためにヘッダーが無いものとしてメインエリアに h1 タグがあった場合、サイドバーを h2タグでまとめると、サイドバーはメインエリアと同じ構造体として扱われることになってしまう。 メインエリアはが左にあろうと右にあろうと StyleSheet でどうとでもなるとしても、各セクションに同じレベルのhタグが必要というのはけっこうメンドウな問題の気がする。

たぶん純粋な解決策としては HTML の body 直下に h1 タグを置いて、そこをドキュメントのタイトルとして扱い、メイエリアには別の見出しを用意する。

もしくは position:absolute でメインエリアにもってくるか... あるいは処理側で h1 タグ出現以前のリソースを無視するか。でもそうすると h2 タグの出現回数というのは一定ではないからどこまでがメインエリアかを判断するのが難しい。

でもまあ。このへんは HTML5 とマイクロフォーマットとかが解決してくれそうな気がする。 ただ考えようによっては最初の h タグがレベル2なら実は解決するんじゃなかろうか。

h2から次の h2 タグまでが1セクション。 h1 タグは h2 タグ以降一度しか出現しないんで、セクションの解釈には入らない。とか。あーでもそうすると h1 タグの出現以降、次のブロックになるまで h2 タグが使えない上に、 h1 タグの上に h2 タグが要る。

ああ、でも必要に応じて今の GUI のレイアウトができあがったんであれば HTML のほうが今の Web サイトをマークアップする方法としては古いということかしらん。