#?SuikaWiki/0.9
* 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 的に不正なことが他にあったりするんですが。
[[#comment]]
*メモ