#?SuikaWiki/0.9 page-icon="HTML" [1] 【[[XHTML]]】 XHTML を旧来の [[HTML]] [[UA]] で[WEAK[おそらくは]]扱える形で記述するための指針。 ''XHTML 1.0: The Extensible HyperText Markup Language C. HTML Compatibility Guidelines'' [2] [処理指令及び XML 宣言] 古い [[UA]] の中には、 [[処理指令]]をそのまま表示するものや、 [[XML宣言]]があるとその文書を HTML/XHTML ではない [[XML]] 文書として取り扱うものもあります。 ですから、処理指令や XML 宣言を使わないといいかもしれません。 (C.1) [3] >>2 の場合、既定の[[符号化]], すなわち [CODE(charset)[[[UTF-8]]]], [CODE(charset)[[[UTF-16]]]] になると附属書 C には書いてありますが、 [[HTTP]] や [[MIME]] のような上位プロトコルから [[charset]] 情報が提供される場合はそうである必要もありません。 [4] [空要素] [[空要素]]の[[タグ]]は、 [SAMP(XML)[
]] や [SAMP(XML)[

]] のような形ではなく、 [SAMP(XML)[
]] と書くべきです。 (C.2) [5] [要素最小化と空要素モデル] [[強制空要素]]以外の空要素は最小化 ([SAMP(XML)[

]]) するべきではありません。 (C.3) [6] [埋め込みスタイル・シート及びスクリプト] [CODE(XML)[&]], [CODE(XML)[<]], [CODE(XML)[ ] ] > ]], [CODE(XML)[--]] が含まれるスタイル・シート, スクリプトは埋め込みではなく外部リンクにするべきです。 (C.4) [7] [属性値中の改行] [[属性値]]中の[[改行]]や複数の[[空白]]の連続は避けるべきです。 (C.5) [8] [Isindex] [CODE(HTML)[[[head]]]] 要素中の [CODE(HTML)[[[isindex]]]] 要素は複数個あるべきではありません。 (C.6) [9] [ [CODE(HTML)[lang]] 及び [CODE(HTML)[xml:lang]] 両属性] 言語情報の指定には [CODE(HTML)[[[lang]]]] 属性と [CODE(XML)[[[xml]]:[[lang]]]] 属性を両方指定するべきです。 (C.7) [10] [素片識別子] [CODE(HTML)[[[id]]]] 属性を使うときはそれと対応させた [CODE(HTML)[[[a]]]] 要素の [CODE(HTML)[[[name]]]] 属性を使用するべきです。 (C.8) [11] [文字符号化] [[HTTP]] のような上位プロトコルや [CODE(HTML)[[[meta]]]] 要素を使って[[文字符号化]]の情報を与えるべきです。 (C.9) [12] [真偽型属性] [[真偽型属性]]が最小化されていない形だとうまく扱えない古い [[UA]] があるので注意が必要です。 (C.10) [13] [文書物体モデルと XHTML] [[DOM1]] HTML を実装した UA では、 - [CODE[[[text/html]]]] の XHTML 文書では、 [[HTML4]] 同様に要素型名などは大文字に正規化されます。 [WEAK[(附属書 C には明記されていませんが、意図としては多分) HTML 4 で[[開始タグ]]が省略可能な要素 ([CODE(HTML)[[[tbody]]]] とか。) は補われます。]] - XML 系の[[媒体型]]の XHTML 文書では、 要素型名などは小文字のままです。 HTML 4 で開始タグが省略可能な要素は補われるかもしれませんし補われないかもしれません。 (C.11) [14] [属性値中のアンド記号 (など)] [[URI]] でよく使われるアンド記号は [CODE(XML)[&]] と書かなければなりません。 (C.12) [15] [段階スタイル・シートと XHTML] [[CSS2]] を使うときに、 - [[選択子]]で要素型名は小文字にします。 - HTML 4 で開始タグが省略可能な要素 ([CODE(HTML)[tbody]] など) を選択子で使うときには[[文書実現値]]中でも明示します。 - [CODE(CSS)[#]] (識別子) 選択子が使えます。 - [CODE(CSS)[.]] (級) 選択子が使えます。 - [CODE[text/html]] の XHTML 文書には HTML 向けの、 XML 系の媒体型の XHTML 文書には XML 向けの適合性規則が適用されます。 (C.13) [16] [XML として供給する時に [CODE(HTML)[style]] 要素を参照する] XML な媒体型の XHTML 文書では、 [PRE[ [INS[...]] ]PRE] とするべきです。 (C.14) [17] [空白文字] 幾つかの文字は XML では不正です。 例えば [CODE(char)[FORM FEED]] とか。 (C.15) [18] [名前文字参照 [CODE(XML)[']]] 名前文字参照 [CODE(XML)[&[[apos]];]] は使うべきではありません。 (C.16) - [19] 互換性指針は旧来の HTML との互換性を保ちたい場合の指針であって、 XHTML を使うに当たって必須の要件ではありません。 - [20] また、あくまで XHTML 1.0 の附属書であって、それ以外の XHTML や XML 応用に適用されるものでもありません。 - [21] しかしながら、 [CODE[text/html]] として供給する X(HT)ML 文書は、可能な限りこの指針に従うのが望ましいでしょう。 [22] 現状について。 >>2 ([[処理指令]]), >>10 ([[素片識別子]]), >>11 ([CODE(MIME)@en[[[charset]]]]), >>12 ([[真偽値属性]]), >>14 ([[属性値]]で[[逃避]]): 本来、対応することが [[XHTML 1.0]] だけでなく [[HTML 4]] においても[[利用者エージェント]]の適合の条件であり、 状況は改善されているので、重要な条件ではない。 ([[XHTML]] の普通の方法で良い [>>2, >>10, >>12], [[HTML]] でも [[XHTML]] でも同じ方法で良い [>>11, >>14]) >>4 ([[強制空要素]]の[[タグ]]): 完全な[[終了タグ]]は、 互換性のために異なる解釈をする[[利用者エージェント]]が残っているので、 現在でも指針に従うべきである。 斜線の前の[[空白]]については、状況は改善されているので、 現在では[[文書]]がこの条件を満たす必要性はそれほど高くはない。 >>5 (非[[強制空要素]]の [[NET可能開始タグ]] + [[null終了タグ]]): 従来の [[HTML]] [[利用者エージェント]]は単に [CODE(SGML)@en[[[nestc]]]] を無視する (か、もしかすると[[属性指定]]とみなす) ので、 現在でも [WEAK[(そしておそらく将来も)]] 指針に従うべきである。 >>6 ([CODE(SGML)@en[[[CDATA]]]] [[要素内容]]): [[[CODE(XML)@en[CDATA]]区間]]と埋め込まれた言語の[[注釈]]構文の組合せで問題を回避できないこともないが、 指針に従う方が楽であることは変わりない。 >>7 ([[属性値指定]]の[[空白]]), >>17 ([CODE(charname)@en[[[FORM FEED]]]]), >>18 ([CODE(HTML)@en[&[[apos]];]]): 指針に従うのが良いが、問題になることはそれ程多くない。 >>8 ([CODE(HTMLe)@en[[[isindex]]]]): 元から実害はないし、 [CODE(HTMLe)@en[[[isindex]]]] は既に使われていない。 >>9 ([CODE(HTMLa)@en[[[lang]]]] 属性): 指針に従うのが良い。 >>13 ([[DOM]]), >>15 ([[CSS]]): [[著者]]は注意しましょう。 >>16 ([CODE(XML)@en[[[xml-stylesheet]]]]): しかし実際にはほとんど使われていない。 ([[名無しさん]] [WEAK[2005-10-18 09:16:22 +00:00]])