構造化文書という考え方
Language とあるけれども、HTML はプログラム言語ではない。『お作法』『書式』程度に思ってくれていい。この『お作法』を使って、SGML に準拠した構造化文書を作成できる。
SGML(Standard General Markup Language) は、ISO 標準の一つであるが、ご存知ない方の方が圧倒的多数であろうから、これも後で簡単に触れる。
構造化文書とは、文書の内容を構成要素に還元し、再構築したものをいう。その最大の特徴は、文書の体裁を切り捨て、要素集合と化していることであろう。
超越書類は、次のような構成になっている。
SGML 宣言
HTML 要素
頭 HEAD 要素
前置き META 要素
標題 TITLE 要素
本文 BODY 要素
見出し Hn(H1 - H6) 要素
段落 P 要素
引用 BLOCKQUOTE 要素
順番箇条書き OL 要素
項目 LI 要素
無番箇条書き UL 要素
項目 LI 要素
概念箇条書き DL 要素
用語 DT 要素
定義 DD 要素
表 TABLE 要素
表題 CAPTION 要素
表行 TR 要素
表見出し TH 要素
表項目 TD 要素
以上のように、超越書類は SGML 宣言と HTML 要素から成り、HTML 要素は HEAD 要素と BODY 要素から成り、BODY 要素は P や OL や TABLE などの要素集合から成り… と、概ね入れ子構造になっている。
「入れ子」がイメージできなければ、この図をひっくり返して「親亀の上に子亀」と覚えるのも一法。SGML 宣言を咥えた親亀 HTML に、子亀 HEAD と子亀 BODY が載り、子亀の上に孫亀 META やら TITLE やら、あるいは孫亀 P やら DL やら… という絵が描けたら良かったが、筆者に絵心はない。期待された方には申し訳ない。
各要素は DTD(Document Type Definition, 文書型定義)に規定されるから、使用する DTD を最初の SGML 宣言に指定しておく。本来、SGML では SGML 宣言及び DTD で、その文書の文法を定義するのに対し、HTML では仕様書各版で固定した SGML 宣言及び DTD を使用する。自由度はない代わりに DTD を書く必要はなく、SGML 宣言は簡略化され、一々考えることはないけれど、そういう訳で SGML 宣言は必須である。超越書類の最初に、*必ず*、例えば HTML 4.01 準拠なら、次のように書いておくこと。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
ハイパーテキストを構造化文書にする意図は、使用環境の違いを乗り越える、いわゆるユニバーサル・デザインの実現にある。インターネットでは、受け手の使用環境を特定できない。紙に印刷することもあろうが、大半は画面上で見るだろう。画面にも大小があるし、見るのでなく読み上げ機から聞くかもしれない。ワープロのベンダが違うとか、ヴァージョンが違うとか、一々そんなことで足を取られていたら、ろくに使えないものにしかならないであろう。世界をネットワークで結ぶ汎地球仮想図書館を目指す World-Wide Web(WWW) にとって、ユニバーサル・デザインは最初からの前提であったのだ。
なお、SGML(Standard General Markup Language)なる「いにしえの昔」的な、ネーミングした人のネーミングセンスを疑うようなネーミングには、IBM の考えた規格を ISO が国際標準としたため、Standard の文字を冠せざるを得なくなったという、別に深くもない事情がある。だから、これが今後とも改められる望みはないし、HTML を書く上では SGML の全体を覚える必要もないから、そういうものがあるくらいに覚えておけば十分であろう。