[1] 文書型の名前を、文書型名といいます。 文書型名は、文書要素の要素型名と同じです。
[112] 文書型名は、文書型宣言 (DOCTYPE
) の名前として記述します。
[2] SGML では複数の文書型宣言や連結型宣言を記述することができますが、文書型名は同じ文書の他の文書型名や連結型名とは異なっていなければなりません。 JIS X 4151‐1992 10.1
[3] また、 SGML では文書型名に対応する要素型宣言は必須です。 JIS X 4151‐1992 10.1
[117] DTD は要素とその内容モデルの情報が含まれていますが、文書全体がどの要素によって表されるかの情報は含まれていません。 ですから文書型宣言でそれを指定する必要があるのです。
[118] DTD レベルではどの要素が文書要素になり得るかの情報もありませんから、 DTD に含まれる任意の要素名を文書型名として使えます。 (アプリケーションレベルの要件で文書要素として使えるものが限定されているかもしれませんが。)
#IMPLIED
[114] 文書型名は文書型宣言にわざわざ明記せずとも、
文書要素を見れば良いんです。ということで Web SGML
では文書型名として #IMPLIED
と書けるようになりました。 Web SGML K.4.5
[115] 但し、
は報告可能マーク誤りです。
[116] また、 LINK EXPLICIT YES
(明示連結機能使用) 又は
CONCUR YES
のときは使えません。
[5] >>1,>>3 妥当性の表明を行わない時には (Web SGML
の NOASSERT
参照)、
文書型名と文書要素の要素型名が異なっていたり、
文書型名と同じ要素型名の要素型宣言が欠けていたりしても構いません。
[119] SGML は DTD がないと構文解析ができず、文書型名が決まることで文書要素が決まる仕組みになっていました。 文書要素の開始タグは省略可能にできました。しかし XML は DTD なくても構文解析できますし、 開始タグの省略はできず、関係が逆転しているといえます。
[7] SGML では文書要素の要素名を文書型名として文書型宣言に書くこと、 開始タグと終了タグを省略可能であることから、 根要素の要素名を文書型の名前とする (≒ マーク付け言語の名前とする) 慣習がありました。 (そうでないものもありました。)
DOCTYPE
[120] HTML の DOCTYPE
は SGML に由来しますが本来の意味は失っており、
DOCTYPEスイッチとしての機能しかありません。
[121] HTML の文書型名 (にあたる部分) は html
(ASCII大文字・小文字不区別)
でなければなりません。そうでなかった場合文書は奇癖モードになります。
[6] 体系では、体系文書要素形式名
が文書型名に相当します。
文書型名は文書型宣言で宣言しますが、
体系文書要素形式名は体系支援宣言の体系支援属性で指定します。