フラットでリニアな構造

フラットでリニアな構造

[1] 伝統的(謎) HTML ではブロック要素を入れ子に出来ません。 p 要素に ul 要素を入れたり出来ませんし、章や節を明示する要素 (XHTML 2.0section 要素に相当。) もありません。 昔は li 要素の中に p 要素とかを入れることも出来ませんでした。

[2] この理由は大昔に www-htmlTimBL が説明していまして、 ワープロ文書との互換性を考えてのことなのです。確かに Word とかは、ブロックを「段落」「リスト」「見出し」 とかから選ぶことは出来ますが、それを入れ子にすることはできません。 フラットでリニアです。

[3] これは SGML 的には異様なことでして、 ISO-HTML 制定時に章・節明示要素を追加しようとしたのにすったもんだの末に事実上失敗し、 XHTML 2.0 まで待つことになります。 (もっともリスト系要素におけるブロックの入れ子は HTML 2.0 で既に実現していましたし、汎用ブロック要素である div とかが追加されたりしてはいますから、 とっくの昔に純粋なフラットでリニアではなくなっています。)

[4] さてはて、そういう旧 HTML 的フラット・リニア構造から SGML/XHTML 2.0 的木構造への移行の時期にあって、 どちらのマーク付けがより適当かを巡ってCSSコミュニティ界隈で激論が交わされたのが、 2002年前半のフラットでリニア論争なのです (たぶん)。

[5] 細かな論点は色々あったようですが、 論争を読み解くに当たって注意しておきたいのは、 SGML では構造を暗示できるが、 XML ではできないということです。 SGML ではタグの省略が出来ますから、 見出しレベルなどで要素の存在を暗示できます。 マーク付けの見た目的にはフラット・リニアでも、 解析した結果はちゃんと章節の木構造にすることができます。 他方 XML は、完全タグ付きが必須要件ですから、 タグで明示されていない要素は存在していないのです。

ですから XHTML 文書でマーク付けの見た目がフラット・リニアなものは、 実際フラット・リニアでしかないのです。 章節構造を見出すことはできません。

[6] HTML Design Constraints <http://www.w3.org/MarkUp/HTMLConstraints.html>