この附属書は,XHTML文書を既存のHTML利用者エージェントでレンダリングしたいと考える文書作成者のために,設計ガイドラインを要約する。
処理命令をレンダリングする利用者エージェントもあることを意識する。しかし,XML宣言が文書に含まれていない場合には,文書は,デフォルト文字符号化であるUTF-8又はUTF-16だけしかを使用できない点にも注意する。
<br />
, <hr />
, <img src="karen.jpg" alt="Karen" />
などのように,空要素の末尾の/
及び>
の前にスペースを挿入する。同様に,<br />
などのように,空要素に対しては最小限のタグ構文を使用する。これは,XMLが許容する代替の構文<br></br>
は,既存の多くの利用者エージェントでの結果が一定しないことによる。
空のタイトル又は空の段落などの,内容モデルがEMPTY
ではない要素の空のインスタンスが与えられた場合は,最小化形式を使用しない。例えば,<p> </p>
を使用し,<p />
は使用しない。
スタイルシートが,<
, &
, ]]>
又は--
を使用する場合は,外部スタイルシートを使用する。スクリプトが,<
, &
, ]]>
又は--
を使用する場合は,外部スクリプトを使用する。XML構文解析系が報告することなくコメントの内容を除去することが許されている点に注意する。したがって,文書を下位互換にするために,スクリプト及びスタイルシートをコメント内に"隠蔽する"従来のやり方は,XMLに基づく実装では期待通りに機能しない可能性が高い。
属性値内部での行区切り及び複数の空白文字は避ける。これらは,利用者エージェントによって,処理が一貫しない。
文書のhead
に二つ以上のisindex
要素を含めない。input
要素が望ましく,isindex
要素は推奨しない。
lang
属性及びxml:lang
属性要素の言語を指定する場合は,lang
属性及びxml:lang
属性の両方を使用する。xml:lang
属性の値が優先される。
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から除去される予定である。
文書における文字符号化を指定するためには,XML宣言における符号化属性指定(例えば<?xml version="1.0" encoding="EUC-JP"?>
)及びhttp-equivメタ文(例えば<meta http-equiv="Content-type" content='text/html; charset="EUC-JP"' />
)の両方を使用する。xml処理命令の符号化属性の値が優先される。
論理型属性が完全(非最小化)形式で現れた場合,XML1.0が要求するとおりに,これを解釈できないHTML利用者エージェントが存在する。この問題は,HTML 4に適合する利用者エージェントには影響を与えない点に注意する。関係する属性は,compact
, nowrap
, ismap
, declare
, noshade
, checked
, disabled
, readonly
, multiple
, selected
, noresize
及びdefer
である。
文書オブジェクトモデル水準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は,その要素をオプションとした。アプリケーションは,これに適応する必要がある。
|
属性値がアンパサンドを含む場合には,"&
"などの文字実体参照として表記しなければならない。例えば,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&name=user
として表記しなければならない。
段階スタイルシート水準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文書に適用されることを意識する。 |