#IMPLIED

文書型名 (SGML)

[1] 文書型名前を、文書型名 (document type name) といいます。 文書型名は、文書要素要素型名と同じです。

[112] 文書型名は、文書型宣言 (DOCTYPE) の名前として記述します。

[2] SGML では複数の文書型宣言連結型宣言を記述することができますが、文書型名は同じ文書の他の文書型名連結型名とは異なっていなければなりません。 JIS X 4151‐1992 10.1

[113] 文書型指定などで文書型の区別のために文書型名を使います。

[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 SGMLNOASSERT 参照)、 文書型名と文書要素の要素型名が異なっていたり、 文書型名と同じ要素型名の要素型宣言が欠けていたりしても構いません。

そのような場合、 XML 的には、妥当ではありませんが整形式です。

[119] SGMLDTD がないと構文解析ができず、文書型名が決まることで文書要素が決まる仕組みになっていました。 文書要素開始タグは省略可能にできました。しかし XMLDTD なくても構文解析できますし、 開始タグの省略はできず、関係が逆転しているといえます。

文書型名 = 根要素の要素型名

[7] SGML では文書要素要素名文書型名として文書型宣言に書くこと、 開始タグ終了タグを省略可能であることから、 根要素要素名文書型の名前とする (≒ マーク付け言語の名前とする) 慣習がありました。 (そうでないものもありました。)

[8] マーク付け言語の名前の要素名

HTML DOCTYPE

[120] HTMLDOCTYPESGML に由来しますが本来の意味は失っており、 DOCTYPEスイッチとしての機能しかありません。

[121] HTML文書型名 (にあたる部分) は html (ASCII大文字・小文字不区別) でなければなりません。そうでなかった場合文書奇癖モードになります。

関連

[6] 体系では、体系文書要素形式名が文書型名に相当します。 文書型名は文書型宣言で宣言しますが、 体系文書要素形式名は体系支援宣言体系支援属性で指定します。

メモ