[8] [DFN@en[[[XHTML 1]]]] は、 [[HTML 4]] を [[XML]] に移植した基本語彙と、いくらかの拡張語彙を含む、 [[文書]][[マーク付け言語]] (の[[語彙]]) です。 ;; [16] [Q@en[[[XHTML 1]]]] という言葉は [[XHTML 1.0]] を指すこともありますが、ここでは、 [[XHTML 1.0]] を含む、 [[XHTML]] 1.[VAR@en[x]] 世代一般を指します。 [17] [[W3C]] の [[XHTML 1]] 関連仕様には次のものがあります。 :[[XHTML 1.0]]: [[HTML 4]] を [[XML]] に移植した仕様です。 1998年頃から開発が始まり、2000年に第1版[[勧告]]、 2002年に第2版[[勧告]]が出版されています。 :[[XHTML m12n 1.0]]: @@TBD -[[XHTML m12n]] (XHTML modularization) 1.0 -[[XHTML Basic]] (1.0) -[[XHTML 1.1]] - [[ruby]] モジュール (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]] *メモ