附属書C (参考) HTML互換性ガイドライン


この附属書は,XHTML文書を既存のHTML利用者エージェントでレンダリングしたいと考える文書作成者のために,設計ガイドラインを要約する。

C.1 処理命令

処理命令をレンダリングする利用者エージェントもあることを意識する。しかし,XML宣言が文書に含まれていない場合には,文書は,デフォルト文字符号化であるUTF-8又はUTF-16だけしかを使用できない点にも注意する。

C.2 空要素

<br />, <hr />, <img src="karen.jpg" alt="Karen" />などのように,空要素の末尾の/及び>の前にスペースを挿入する。同様に,<br />などのように,空要素に対しては最小限のタグ構文を使用する。これは,XMLが許容する代替の構文<br></br>は,既存の多くの利用者エージェントでの結果が一定しないことによる。

C.3 要素最小化及び空要素内容

空のタイトル又は空の段落などの,内容モデルがEMPTYではない要素の空のインスタンスが与えられた場合は,最小化形式を使用しない。例えば,<p> </p>を使用し,<p />は使用しない。

C.4 埋込みスタイルシート及びスクリプト

スタイルシートが,<, &, ]]>又は--を使用する場合は,外部スタイルシートを使用する。スクリプトが,<, &, ]]>又は--を使用する場合は,外部スクリプトを使用する。XML構文解析系が報告することなくコメントの内容を除去することが許されている点に注意する。したがって,文書を下位互換にするために,スクリプト及びスタイルシートをコメント内に"隠蔽する"従来のやり方は,XMLに基づく実装では期待通りに機能しない可能性が高い。

C.5 属性値内部での行区切

属性値内部での行区切り及び複数の空白文字は避ける。これらは,利用者エージェントによって,処理が一貫しない。

C.6 Isindex

文書のheadに二つ以上のisindex要素を含めない。input要素が望ましく,isindex要素は推奨しない。

C.7 lang属性及びxml:lang属性

要素の言語を指定する場合は,lang属性及びxml:lang属性の両方を使用する。xml:lang属性の値が優先される。

C.8 素片識別子

XMLでは,"#foo"という形式の素片識別子で終わるURI[RFC2396]は,属性name="foo"をもつ要素を参照しない。むしろ,HTML 4のid属性など,ID型と定義される属性をもつ要素を参照する。多くの既存のHTMLクライアントは,この方法では,ID型属性の使用をサポートしない。そこで,上位互換性及び下位互換性を最大限に保証するために,これらの属性の両方に同一の値を提供してもよい。例えば,<a id="foo" name="foo">...</a>とする。

ID型の属性に関する文法に合致した値の集合は,CDATA型の属性のものよりもはるかに小さくなるので,name属性の型は,NMTOKENに変更されてきた。name属性は制約されていて,ID型と同じ値,又はXML 1.0の2.3にある生成規則5のName生成規則と同じ値だけをもつ。残念ながら,この制約は,XHTML1.0 DTDでは表現できない。この変更のために,既存のHTML文書を変換する場合には, 注意を払わなければならない。これらの属性の値は,文書内部では一意的で,妥当でなければならず,変換中に値が変更された場合には,これらの素片識別子へのどのような参照も(内部及び外部のどちらも),更新されなければならない。

最後に,XHTML 1.0は,a, applet, form, frame, iframe, img及びmapの各要素のname属性を使用することを推奨しない点に注意する。name属性は,今後の版ではXHTMLから除去される予定である。

C.9 文字符号化

文書における文字符号化を指定するためには,XML宣言における符号化属性指定(例えば<?xml version="1.0" encoding="EUC-JP"?>)及びhttp-equivメタ文(例えば<meta http-equiv="Content-type" content='text/html; charset="EUC-JP"' />)の両方を使用する。xml処理命令の符号化属性の値が優先される。

C.10 論理型属性

論理型属性が完全(非最小化)形式で現れた場合,XML1.0が要求するとおりに,これを解釈できないHTML利用者エージェントが存在する。この問題は,HTML 4に適合する利用者エージェントには影響を与えない点に注意する。関係する属性は,compact, nowrap, ismap, declare, noshade, checked, disabled, readonly, multiple, selected, noresize及びdeferである。

C.11 文書オブジェクトモデル及びXHTML

文書オブジェクトモデル水準1勧告[DOM]は,XML及びHTML 4のための文書オブジェクトモデルインタフェースを定義している。HTML 4文書オブジェクトモデルは,HTMLの要素名及び属性名が大文字で返されると規定している。XML文書オブジェクトモデルは,指定された大文字及び小文字のとおりに,要素名及び属性名が返されると規定している。XHTML 1.0では,要素及び属性は小文字で指定される。この明らかな相違は,次の二つの方法で処理することができる。

    a) DOMを介して,インタネットメディア型text/htmlとして提供されるXHTML文書にアクセスするアプリケーションは,HTML DOMを使用することができ,そのインタフェースから大文字で返される要素名及び属性名に頼ることができる。
    b) インタネットメディア型がtext/xml又はapplication/xmlであるとして提供されるXHTML文書にアクセスするアプリケーションは,XML DOMを使用できる。要素及び属性は,小文字で返される。内容モデルでオプションとなっているために,オブジェクト木において現れても現れなくてもよいXHTML要素もある(例えば, table内のtbody要素)。HTML 4では,ある要素を最小化できて, その開始タグ及び終了タグの両方が省略される(SGML機能)ので,この問題が起きる。XMLでは, これはできない。文書作成者に無関係な要素の挿入を要求するのではなく,XHTMLは,その要素をオプションとした。アプリケーションは,これに適応する必要がある。

C.12 属性値におけるアンパサンドの使用

属性値がアンパサンドを含む場合には,"&amp;"などの文字実体参照として表記しなければならない。例えば,a要素のhref属性が,パラメタをもつCGIスクリプトを参照する場合は,http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=userとしてではなく,http://my.site.dom/cgi-bin/myscript.pl?class=guest&amp;name=userとして表記しなければならない。

C.13 段階スタイルシート(Cascading Style Sheet,CSS)及びXHTML

段階スタイルシート水準2勧告[CSS2]は,HTML文書又はXML文書の構文解析木に適用されるスタイル特性を定義する。構文解析における相違が,使用される選択子に依存して,異なる視覚的又は聴覚的な結果を生成する。両方のメディア型として修正なしで提供される文書に対して,この影響を小さくするためのヒントを次に示す。

    a) XHTML対応のCSSスタイルシートは,小文字の要素名及び属性名を使用するのが望ましい。
    b) 表において,tbody要素は,HTML利用者エージェントの構文解析系によって(その存在を)推定されるが,XML利用者エージェントの構文解析系によっては推定されない。したがって,CSS選択子でtbody要素が参照される場合は,常にtbody要素を明示的に追加することが望ましい。
    c) XHTML名前空間内では,利用者エージェントは,"id"属性をID型の属性として認識すると期待される。したがって,スタイルシートは,利用者エージェントがDTDを読むことがなくても,短縮記述の"#"選択子構文の使用を継続できることが望ましい。
    d) XHTML名前空間内では,利用者エージェントは,"class"属性を認識すると期待される。したがって,スタイルシートは,短縮記述の"."選択子構文の使用を継続できることが望ましい。
    e) CSSは,HTML文書及びXML文書に対して,異なる適合性規則を定義している。すなわち,HTML規則は,HTMLとして配布されたXHTML文書に適用され,XML規則は,XMLとして配布されたXHTML文書に適用されることを意識する。