[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]]」とも表記されますが、'''誤り'''です。 * 歴史 ** Cougar [28] [[HTML4]] は当初 [[Cougar]] という[[コード名]]で開発されていました。 * 関連 [29] [[ISO-HTML]] は [[HTML4]] の[[部分集合]]となっています。 [30] [[XHTML 1.0]] は元々 [[HTML4]] の [[XML]] 移植版という位置付けで作られました。 [31] [[HTML4]] に対してはいくつもの拡張が提案されました。 [[Web Forms 2.0]] や [[Web Applications 1.0]] もそうで、後に [[HTML5]] となりました。 * メモ - [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]] 版) * HTML4 のバグ [32] まあ枚挙に暇がないけど。 [33] > :Alternate: Designates substitute versions for the document in which the link occurs. When used together with the lang attribute, it implies a translated version of the document. When used together with the media attribute, it implies a version designed for a different medium (or media). [34] >In the following example, we use the hreflang attribute to tell search engines where to find Dutch, Portuguese, and Arabic versions of a document. Note the use of the charset attribute for the Arabic manual. Note also the use of the lang attribute to indicate that the value of the title attribute for the LINK element designating the French manual is in French. [35] [CITE[IRC logs: freenode / #whatwg / 20090909]] ([TIME[2009-10-18 18:18:41 +09:00]] 版) [36] [CITE[IRC logs: freenode / #whatwg / 20090909]] ([TIME[2009-10-18 18:18:41 +09:00]] 版) [37] [CITE[HTML4 Testable Assertions: Prologue]] ([TIME[2003-01-23 17:00:50 +09:00]] 版)