出張に向かう電車の中で「9784822284220」を読んでいたんですが、第5章のsectionタグとh1〜h6による見出しとの関係に強い違和感が…。
例えば、Wikiスタイルで
! 見出し1 ああああ !! 見出し2 いいいい
という記述は、
<h1>見出し1</h1> <p>ああああ</p> <h2>見出し2</h2> <p>いいいい</p>
のように変換されますが、これはこのままでHTML5としても正しいようです。ただ、内部的(?)には見出しのレベルを変更すると暗黙の<section>が生成され、上記のソースは
<section> <h1>見出し1</h1> <p>ああああ</p> <section> <h2>見出し2</h2> <p>いいいい</p> </section> </section>
と等価になり、さらにこれは、
<section> <h1>見出し1</h1> <p>ああああ</p> <section> <h1>見出し2</h1> <p>いいいい</p> </section> </section>
とも等価になるんだそうです。この例だけ見ると、セクションとその見出しの関係を一見うまく表現できているように見えますが、実はHTML5のウリであるはずの「前方互換性」がかなり怪しくなっています。
例えば、
! 見出し1 ああああ !!! 見出し2 いいいい
というレベルを飛ばすような記述は、同じように変換すると
<h1>見出し1</h1> <p>ああああ</p> <h3>見出し2</h3> <p>いいいい</p>
となります。ここで、HTML4とHTML5でスタイルに互換性を持たせるためには、
<section> <h1>見出し1</h1> <p>ああああ</p> <section> <section> <h3>見出し2</h3> <p>いいいい</p> </section> </section> </section>
としなければならないばずなのですが、「暗黙の<section>」は見出しのレベルの差に関係なく1つしか入らないようなので、実際には
<section> <h1>見出し1</h1> <p>ああああ</p> <section> <h3>見出し2</h3> <p>いいいい</p> </section> </section>
と等価になり、さらにこれは
<section> <h1>見出し1</h1> <p>ああああ</p> <section> <h2>見出し2</h2> <p>いいいい</p> </section> </section>
や
<section> <h1>見出し1</h1> <p>ああああ</p> <section> <h1>見出し2</h1> <p>いいいい</p> </section> </section>
などとも意味的には等価でHTML5に準拠したブラウザではこれらを同じように表示することが期待されているようです。
で、これって
ということになり、この理解が正しいなら、CSSでスタイルを記述するのが難しい、かなり筋が悪い仕様だと言わざるを得ません。
もし仮に上のようなHTML4とHTML5の仕様の違いをhikidocなどの生成系の方で吸収しようとすると、
といった実装になるんでしょうが、状態を記憶しておかなければならないようなデザインにせざるを得ないような仕様というのは今時どうなんでしょう?
いっそのこと
とかにしてくれればいいのにとか思いました。