[8] [DFN@en[[[XHTML 1]]]] は、 [[HTML 4]] を [[XML]] に移植した基本語彙と、いくらかの拡張語彙を含む、 [[文書]][[マーク付け言語]] (の[[語彙]]) です。 [17] [[W3C]] の [[XHTML 1]] 関連[[勧告]]としては、 [[XHTML 1.0]]、 [[XHTML m12n 1.0]]、 [[XHTML Basic 1.0]]、[[XHTML 1.1]]、 [CODE(HTMLe)@en[[[ruby]]]] [[モジュール]]があります。 その他に、 [[W3C]] で開発中の[[プロファイル]]、 [[モジュール]]、[[W3C]] 以外が開発した[[プロファイル]]、 [[モジュール]]等があります。 ;; [16] [Q@en[[[XHTML 1]]]] という言葉は [[XHTML 1.0]] を指すこともありますが、ここでは、 [[XHTML 1.0]] を含む、 [[XHTML]] 1.[VAR@en[x]] 世代一般を指します。 [18] [[XHTML 1.0]] に対応した [[DOM]] として、 [[DOM水準2]] の [[HTML]] [[モジュール]] ([[HTML DOM]]) が [[W3C]] [[勧告]]となっています。 * XHTML 1 関連仕様 [20] '''モジュール''': :[[XHTML m12n 1.0]]: [[XHTML 1.0]] に含まれる[[機能]]を[[モジュール化]]した仕様です。 [[抽象モジュール]]定義と[[DTDモジュール]]実装の記述方法が含まれています。 :[[XHTML m12n 1.1]]: [[XHTML m12n 1.0]] に加え、 [[XML Schemaモジュール]]実装の記述方法が含まれています。 独立の仕様として準備され、後に [[XHTML m12n 1.0]] と統合されて[[第2版]]として [[WD]] が出版されていましたが、 2006年に [[XHTML m12n 1.1]] という名前になって [[WD]] として出版されています。 :[CODE(HTMLe)@en[[[ruby]]]] [[モジュール]]: [[ルビ]]のための [CODE(HTMLe)@en[[[ruby]]]] [[要素型]]等を含む[[モジュール]]です。 当初は [[HTML 4]] に対する追加と [[XHTML 1]] に対する追加の両方が考えられていましたが、 [[勧告]]では [[XHTML]] に対する追加となっています。 :[[XHTML]] [[事象]][[モジュール]]: [[内在事象属性]]に代わる[[モジュール]]として 2000年に [[WD]] が出版されていました。 現在は [[XML事象]]という [[XHTML]] とは別の仕様になっています。 :[[XHTML]] [CODE(HTMLa)@en[[[role]]]] [[モジュール]]: [[要素]]の[[役割]]を表す [CODE(HTMLa)@en[[[role]]]] [[属性]]を含む[[モジュール]]です。 [[XHTML 2.0]] の一部として開発された[[属性]]を、 [[XHTML 1]] で使うために独立仕様としたもので、 2006年に [[WD]] が出版されています。 :[[Web Forms 2.0]]: [[フォーム]]機能を拡張する仕様で、 [[HTML 4]]、[[XHTML 1]]、[[HTML DOM]] に対する追加・変更となっています。 [[WHATWG]] によって開発され、2005年に [[W3C]] に[[提出]]されています。 [19] '''文書型・プロファイル''': :[[XHTML 1.0]]: [[HTML 4]] を [[XML]] に移植した仕様です。 1998年頃から開発が始まり、2000年に第1版[[勧告]]、 2002年に第2版[[勧告]]が出版されています。 :[[XHTML Basic 1.0]]: [[携帯電話]]のような低機能な機器向けの簡略化された仕様です。 [[XHTML 1.1]] の[[部分集合]]になっています。 :[[XHTML Basic 1.1]]: [[XHTML Basic 1.0]] に、 [[XHTML m12n]] や [[XForms]] からいくつかの機能を追加したものです。 2006年に [[WD]] が出版されています。 :[[XHTML 1.1]]: [[XHTML 1.0]] の[[厳密DTD]]に [CODE(HTMLe)@en[[[ruby]]]] [[モジュール]]を加えたものにほぼ相当する[[文書型]]です。 :[[XHTML-Print]]: @@ :[[XHTML MP]]: @@ :[[XHTML + MathML]]: @@ :[[XHTML + MathML + SVG]]: @@ :[[XHTML + SMIL]]: @@ :[[XHTML+Voice]]: @@ :[[WICD]]: @@[[WICD Full 1.0]], [[WICD Mobile 1.0]], [[WICD Core 1.0]] @@携帯電話プロファイル、テレビプロファイル [[#comment]] * HTML と XHTML の非互換性 [9] [[HTML 4]] と [[XHTML 1]] では、構文が [[SGML]] のある[[具象構文]]か [[XML]] かという違いがありますが、その他にもいくつかの非互換性があり、 正しい [[HTML 4]] [[文書]]の構文を [[XML]] にしても正しい [[XHTML 1]] [[文書]]にできなかったり、その逆ができなかったりすることもあります。 ;; [15] [[Web Applications 1.0]] における [[HTML 5]] と [[XHTML 5]] の関係については、 [CSECTION@en[[[XHTML 5]]]] の項を参照。 - [10] 構文 -- [11] 一般 --- [[HTML 4]] では、ある [[SGML]] の[[具象構文]]。 --- [[XHTML 1]] では、 [[XML]] + [[XML名前空間]]。 --- [[XML]] にない機能 (例えば[[連結型]]) を使った [[HTML 4]] [[文書]]は、 [[XHTML 1]] に変換できない。 -- [13] 名前 (>>11 より) --- [[HTML 4]] で[[名前文字]]/[[名前開始文字]]でない[[文字]]を[[名前]]/[[名前]]の先頭に使った [[XHTML 1]] [[文書]]は、 [[HTML 4]] に変換できない。 --- [[大文字]]が混じった[[名前]]を使った [[XHTML 1]] [[文書]]は、 [[HTML 4]] に変換すると[[小文字]]だけの[[名前]]と衝突するか、 しなくても再度 [[XHTML 1]] に戻して[[大文字]]の部分を復元できない。 --- [CODE(charname)@en[[[COLON]]]] が含まれる[[識別子]]、 [[実体名]]、[[記法名]]、[[対象名]]のある [[HTML 4]] [[文書]]は、 [[XHTML 1]] に変換できない。 -- [12] 名前空間 (>>11 より) --- [[XML]] と [[XHTML 1]] 以外の[[名前空間]]を使った [[XHTML 1]] [[文書]]や [CODE(XML)@en[[[xml]]:]] 以外の[[名前空間]]に属する[[大域属性]]を使った [[XHTML 1]] [[文書]]は、 [[HTML 4]] に変換できない。 -- [14] @@ TBD [[#comment]] *XHTML 1 系各仕様間の主要な差異 [4] XHTML 1.0 FE Strict では属性無しの [CODE(HTMLe)[[[base]]]] 要素が可能でしたが、 SE Strict では [CODE(HTMLa)[[[href]]]] 属性が必須です。 → その他、 HTML 4 と XHTML 1.0 の違いや XHTML 1.0 FE と SE の違いは [[XHTML 1.0//HTML 4からの変更点]]を参照。 -[2] M12n では [CODE(HTMLe)[[[body]]]] 要素の子孫で [CODE(HTMLe)[[[noframes]]]] 要素が使えません。 -[3] M12n 以降では [CODE(HTMLa)[[[usemap]]]] 属性の値が [CODE(XML)[[[IDREF]]]] です。 [1] XHTML 1.1 はほぼ XHTML 1.0 Strict 相当です。 それに加えて [CODE(HTMLe)[[[ruby]]]] も使えます。 [5] 他にも XHTML 1.1 では [CODE(HTMLe)[[[pre]]]] 要素内に [CODE(HTMLe)[[[ins]]]], [CODE(HTMLe)[[[del]]]], [CODE(HTMLe)[[[input]]]] などが置けなくなる変更があるみたいです。モジュールつなぐときのミスじゃないかと思いたくもなるんですけど実際はどうなんでしょう。 [6] 確かに XHTML 1.1 ≠ m12n ≠ XHTML 1.0 Strict なのですから、 細かい差異があるのは別に良いんですけど、変更点リストには載ってないし:-< [7] XHTML 1.1 では [CODE(HTMLe)[[[noscript]]]] 要素直下に [CODE[[[Inline]]]] 要素を置けません。 ([CODE(HTMLe)[noscript]] 要素は [CODE[Inline]] 要素内にも置けるのに。) [[#comment]] *メモ