* HTML 4 の場合 [88] [[HTML文書]]は、その HTML の版を表すために[DFN[文書型宣言]]を最初に入れなければ'''なりません'''。 HTML 4 では3種類の DTD が定義されていますので、 そのうちのいずれかを参照する宣言が必要です。 参照。 :[[Strict]] (厳格) DTD:[[非推奨]]ではなく、[[枠集合]]文書に現れるものではないすべての[[要素]]と[[属性]]を含みます。 [PRE[ ]PRE] :Transitional (過渡的) DTD:Strict DTD に加え、 非推奨の要素・属性を含みます。 [PRE[ ]PRE] :Frameset (枠集合) DTD:Transitional DTD に加え[[枠]]を含みます。 [PRE[ ]PRE] [89] なお、 - 将来の版の HTML 4 の DTD に加えられた変更で従来の HTML 4 文書が非妥当になることはありません。 - 従来の版の HTML 4 の DTD に適合するソフトウェアは将来の版の HTML 4 の認識出来ない機能を無視して構いません。 このため、文書型宣言の[[システム識別子]]の値は通常は 「最新版」を表す [[URI参照]] (>>88 に示されているもの9 を使い、特定の版の HTML 4 DTD を特に指定したいときだけそれを使うこととできます。 [[#comment]] * HTML の文書型宣言の色々 - [1] お題: [[HTML]] ([[不思議マーク付け]]も含む。) の[[文書型宣言]] ([[DOCTYPE]]) の記述を収集せよ。 - [9] [CODE[]] (''Hypertext Markup language and SGML'' ) - [10] ''Mozilla の DOCTYPE 判別'' 色々な文書型宣言 (不正なものも含む。) の例示あり - [33] ''W3C QA - List of valid DTDs you can use in your document.'' - [34] [CODE[]] [[MosaicNetscape]] の bookmark - [37] ''SGML catalog for the W3C HTML Validation Service'' 色んなのが載ってます。 - [38] >>37 の [[DTD]] は ''Index of /sgml-lib'' にあります。 - [54] [CODE(SGML)[]] ''HTML Design Notebook'' で使われている。 - [55] [CODE(HTML)[]] ''Testing mcom additions to HTML'' で使われている。 - [67] [CODE(HTML)[]] [[IBM]] の古い文書にある - [71] [CODE(HTML)[]] 『[[ISO-HTML]] 利用者の手引き』中に出てきたが・・・ - [72] >>71 の出典は翻訳 JIS TR の。 ([[JIS-HTML]] 参照。) しかし、 [[InternetArchive]] に残っている最古の も、既にちゃんと [CODE(HTML)[ISO/IEC]] になってるんだよなあ。 - [73] [CODE(HTML)[]] 『[[ISO-HTML]] 利用者の手引き』9.1.1。 - [75] [CODE(HTML)["-//Netscape//netscape extension//JA"]]: ''Phrase/Typographic markup test'' - [76] [CODE(HTML)[]], [CODE(HTML)[]], [CODE(HTML)[]]: - [77] [CODE(HTML)[]]: ''Web Style Sheets'' で使われている。余程 [[blink]] 要素が使いたかったらしい。 - [78] [CODE(HTML)[]]: ''Extensible Markup Language (XML)'' の文書型。 - [87] [[FPI]] [CODE(HTML)[-//M3C//DTD XHTML Makoto Sawatari 1.6//EN]], [CODE(HTML)[-//M3C//DTD XHTML Mishio Amano 12.6//EN]], [CODE(HTML)[-//M3C//DTD XHTML Misuzu Kamio 7.23//EN]]: 単なる冗句。 ''Makoto Mishio Misuzu Cuties'' [[#comment]] * 文書型宣言のない HTML 文書 - [79] [[HTML]] 文書は、一般に文書型宣言を冒頭に入れるべきです。 [[XHTML]] 文書は、特定の ([[DTD]] の存在する) profile に適合することを主張する場合は、これを明示するべきです。 [80] >>79 はとりあえずおいておいて、文書型宣言のない HTML (not XHTML) 文書が正しいのか考えてみます。 [81] [[WebSGML]] では文書型宣言は必須ではありませんから、 これを採用している [[HTML4]] と [[XML]] では省略できます。 しかし HTML 4 では文書型宣言を必須と定義しています。 XML はここでの話の対象外です。 [82] [INS[(伝統的な HTML の話と HTML 2.0 の規定の話)]] [83] では旧来の HTML 文書で文書型宣言のないものが不当かというと、 必ずしもそうではありません。確かに、単独の文書 ([[SGML文書実体]]) としては不当です。 しかし、実はそれは[[外部解析実体]]だったとしたらどうでしょう。 つまり、[[WWWブラウザ]]は随時こんな感じの SGML 文書実体を自動生成していると考えるのです。 [PRE[ ]> &real-document; ]PRE] これなら、当該文書が [[SGML文実体]]として適当である限りは、 妥当な SGML 文書じゃないですかね? [85] >>83 の例は不正だった。 (文書要素の外の部分に[[実体参照]]は書けない。) 訂正して、 [PRE[ ]> &real-document; ]PRE] [86] もっとも、 Web SGML ができたからもうこんな hack を考える必要はないですし、文書型宣言もない HTML 文書実現値は往々にして SGML 的に不正なことが他にあったりするんですが。 [90] [CODE(SGML)[]] ([CODE(MIME)[[[text/plain]]]](藁)) で使われてます。。。 ([[名無しさん]] [WEAK[2004-11-09 12:33:45 +00:00]]) [[#comment]] * メモ