[12] [DFN[HTML 4]] は、 [[HTML3.2]] に続いて [[W3C]] が標準化した一連の [[HTML]] 規格群、あるいはそれによって定義される[[要素型]]等の規則 (プロトコル要素) の集合体です。 HTML 4 は、 [[HTML+]], [[HTML3.0]] から [[Cougar]] の流れと [[HTML3.2]] を併合し、更に洗練した [[SGML]] base の HTML の集大成と [WEAK[(結果的には)]] みることができます。 [26] [[HTML4]] には [DFN[[[HTML 4.0]]]] と [DFN[[[HTML 4.01]]]] の2つの版がありました。 [[HTML 4.0]] は1997年と1998年に計2回、[[HTML 4.01]] は1999年に1回 [[W3C]] [[勧告]]となりました。 * HTML 4 仕様書 [13] W3C の正式な[[勧告]]としての HTML 4 は、三種類あります。 = [14] 1997年12月18日版 HTML 4.0 = [15] 1998年4月24日版 HTML 4.0 = [16] 1999年12月24日版 HTML 4.01 >>15 は >>14 の改訂版ですが、編集上の修正のみを含んでいます。 (最近の W3C 仕様なら [CODE[Second Edition]] と呼ばれるでしょう。) HTML 4.01 は HTML 4.0 の改訂版ですが、技術的な変更も含まれています。 [WEAK[厳密には 4.0 と 4.01 は互換でないのです。]] HTML 4.0 は HTML 4.01 により廃止されています。 [17] HTML 4.01 仕様書にも幾つかの誤りが見つかっています。 - [18] [[ISO-HTML]] は、最終的には HTML 4.01 の部分集合となっています。 広義には HTML 4 の一種とみることもできますが、 少々毛色が異なるところがありましてねぇ。 [[XHTML1]] は、 HTML 4 の語彙をほぼそのまま [[XML]] にしたものですから、 これもより広義には HTML 4 の一種と言えますが、それもちょっとなんとなく。 [19] W3C [[Note]] として HTML 4.0 Guidelines for Mobile Access があります。 [[#comment]] * HTML 4 DTD [1] 仕様書の本文中の [[DTD]] 片は [[Strict]] DTD の属性しか載ってないから要注意。 [10] >>1 Transitional (loose) DTD と Frameset DTD はおまけですからね。[WEAK[ちなみに Transitional と Frameset が別々なのは、技術的に ([[DTD]] の能力的に) 統一することができなかったからです。だから、 Strict Frameset DTD 的なものはありません。]] [[#comment]] ** REC-html4 [2] HTML4 の文書型定義 ([[DTD]]) の [[URI]] を間違って示しているサイトが大量にあります。 - × http://www.w3.org/TR/REC-html4/loose.dtd - × http://www.w3.org/TR/REC-html4/strict.dtd - × http://www.w3.org/TR/REC-html4/frameset.dtd - ○ - ○ - ○ 間違った方の URI には DTD は存在しません。 検索で探した限りでは、 [[W3C]] 文書で間違った方の URI は登場せず、間違いが蔓延した理由は不明です。 [3] >>2 HTML 4.0 の DTD から類推した可能性があります。 [4] >>2-3 W3C の ML の記録を見ると、1998年・1999年には 以下が存在していたらしいです。 (現在は Not Found で、 Internet Archive にもないので、実在していたかは分からないんですが、複数の W3C の list の記録に登場するので、あったのかも。) [5] ''Strict-HTML スレッド10'' [20] HTML 4.0 仕様書に、一箇所誤って [Q[/TR/REC-html4/]] と書いている場所があります。 DTD の URI ではありませんが・・・。 もしかすると、当時は本当にあったのかもしれません。でもその間違った部分の直前は正しい URI になってるしなー。 参考: * HTML 4.01 vs HTML 4.1 [27] [[HTML 4.01]] はしばしば「[[HTML 4.1]」とも表記されますが、'''誤り'''です。 * メモ - [6] 質問: HTML 4 は [[HTML3.2]] から [[XHTML]] への移行のために作られたって本当ですか? - [7] >>6 嘘です。どこをどう見たらそういう話になるのやら。 - [8] HTML 4 までの流れを超簡単に説明すると、ほぼ当時の慣習を記述した [[HTML2.0]] の標準化にはなんとか成功した [[ietf-html]] [[WG]] は、大幅な機能拡張を含む [[HTML3.0]] の標準化を目指すも失敗。 (結果的にそのまま ietf-html は閉鎖されます。) [[W3C]] は HTML 3.0 を一旦捨てて、再びその当時の慣習 ([[NN]]/[[IE]] 3 世代) を記述した [[HTML3.2]] をまとめます。その後、 HTML 3.0 の多くの部分と新しい慣習 ([[NC]]/IE 4 世代) を纏め上げた HTML 4 が完成したのです。 - [9] HTML 4 が完成した頃に、ようやく [[XML]] が完成しまして、 XML で薔薇色の未来が見えました。そこで HTML と XML を融和させるのが新たな課題となったのです。 [CODE(HTML)[[[xml]]]] 要素型を使って XML を HTML に埋め込む短期的解法と XML base に HTML を移行することの2つがありましたが、前者は結局は実現しませんでした。後者が [[XHTML1]] となります。 [11] HTML 3.0 と HTML 4.0 をつなぐ規格案 (DTD) は [[Cougar]] と呼ばれていました。もっとも、 Cougar の時点では、まだ HTML 3.3 になるのか 3.5 になるのか 4.0 になるのか (そもそも規格化されるのかすら) 未定でした。 [21] [CITE[IRC Log for #whatwg on irc.freenode.net, collected by WhatBot]] ([CODE[2007-01-27 01:58:34 +09:00]] 版) たしかにこれ: は面白いなw > A [DFN@en[conforming user agent]] for HTML 4 is one that ''observes the mandatory conditions ("must")'' set forth in this specification, ''including the following points'': - A user agent ''should'' avoid [VAR[...]] - A user agent ''must'' ensure [VAR[...]] - For reasons of backwards compatibility, we ''recommend'' [VAR[...]] [23] [[HTML 4]] の要素索引、属性索引で [CODE(HTMLe)@en[[[iframe]]]] は[[フレーム集合DTD]]にだけ存在するかのように書かれていますが、 実際には[[移行用DTD]]にも存在します。 [24] [CITE@en[HTML4 Implementation Requirements from Ian Hickson on 1999-02-05 (www-html@w3.org from February 1999)]] ([[Ian Hickson (py8ieh@bath.ac.uk)]] 著, [TIME[2007-10-05 17:42:17 +09:00]] 版) * 最小の HTML4 文書 [25] [CITE@ja[冬様もすなる☆日記というもの (2009年1月)]] ([[わかば]] 著, [TIME[2009-01-27 11:35:11 +09:00]] 版)