SGML に拠る書法
SGML アプリケーションたる HTML であるから、その書法は SGML に依拠する。すなわち文字列に開始/終了タグを付けて各要素とし、これを Markup という。「印付け」とは何だか安易な気もするが、実際にも簡易なもので、各要素名に
開始タグ <>
終了タグ </>
を付けるのみ。例えば P 要素なら
<P>これは段落です</P>
と書けばよい。更に、P 要素は終了タグの省略が認められているから
<P>これは段落です
と書いても間違いではない。省略できる開始/終了タグについては、HTML 仕様書各版に書いてあり、当然ながらその DTD にも書いてある。HTML 4.01 なら、Specification(仕様書)には
Start tag: required, End tag: optional
とあり、DTD には
<!ELEMENT P - O (%inline;)* -- paragraph -->
と表現されている。O は Optional(省略可)、- は必須を表す。面白い事に
<!ELEMENT HTML O O (%html.content;) -- document root element -->
とあるから、HTML 要素の開始/終了タグも省略可である。つまり SGML 宣言さえあれば、全体を<HTML></HTML>で囲んでなくても HTML 要素 = 超越書類と解釈される。この点は、HEAD も BODY も同様。
<!ELEMENT HEAD O O (%head.content;) +(%head.misc;) -- document head -->
<!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- document body -->
改行を指定する BR 要素など、終了の意味がないものは
<!ELEMENT BR - O EMPTY -- forced line break -->
とされ、終了タグはない(EMPTY)。これを段落の途中に入れるときは
<P>これは1行目です<BR>
これは2行目です</P>
のように書く。なお、DTD にある!は SGML 宣言文を書くときの決まりで、開始/終了タグ中には勝手に書いてはいけない。HTML 書類冒頭の SGML 宣言も同様で、HTML 4.01 なら
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
と指定しておく。HTML 2.0 だと
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
で、これを新たに使うことはないけれど、読み取る User Agent の開発者は留意されたい。
DTD のあちこちにある -- 文字列 -- はコメント。HTML に(お客には見えない)コメントは用意されていないから、コメントを入れたいときは、中身が空の SGML 宣言文を使う。
<!-- コメント -->






