Section 8 : XHTML の HTML ブラウザに対する問題

 最後に,XHTML 文書をおもなブラウザで処理しようとするときの問題について触れておこう。

XML 宣言の問題

 XHTML は XML 文書であるから,ファイルの冒頭に XML 宣言を書くことになっている。これは本来表示されないが,Internet Explorer 2.x,3.x および Netscape Navigator 2.x,3.x では本文の冒頭に XML 宣言が表示されてしまう。

 また,Macintosh 版 Internet Explorer 4.5 では,XML 宣言が 1 行めにあると,そのページは XHTML(HTML)文書と認められず,ソースコードが表示されてしまうという不具合がある(Internet Explorer 4.51 では解決されている)。これを回避するには 1 行めが XML 宣言でなければよい(たとえば,ダミーのコメント)のだが,この場合そのファイルは“XML は何よりも先に XML 宣言から始まる”というきまりに反してしまうことになる。ここでは,Internet Explorer 4.5 をお使いの方には,Internet Explorer 4.51 へのマイナーアップデートをまずはお薦めしたい。

タグを省略しないことに対する問題

 XHTML では,終了タグが必要な場合,それを省略することはできない。

 Netscape Navigator 4.x は,表組の行グループの終了タグ(</thead></tfoot></tbody>)が存在すると表示が乱れる不具合がある。とくに Netscape Navigator 4.x との互換性を考慮する場合には,XHTML では表の行のグループ化を行わないほうがよいといえる。

ブール値属性に関する問題

 Section 5 でも触れたように,HTML では“true/false のいずれか”で指定する属性は,<dl compact> のように属性名を省略した記法を使ってきた。XHTML では,これを省略しない,<dl compact="compact"> のように完全な形で記述する必要がある。

 ところが,このような“ブール値属性”の正式な記法をサポートせず,無視してしまうブラウザもありうる(Internet Explorer 3.0 以降および Netscape Navigator 3.0 以降は正式な記法でも問題はない)。ブール値属性は,とくにフォームコントロールで用いられる場合が多いので,とくに注意する必要がある。

 また,これと同様の問題として,<table frame="border"> の省略形としての <table border> に関しては,省略しない記法を(frame 属性そのものを)Internet Explorer 2.x および Netscape Navigator 4.x またはそれ以前のブラウザはサポートしない。ただ,これらのブラウザは,table 要素の border 属性によって罫線を引くことができるので,

<table frame="border" border="1">

のように併せて指定しておくことにより,問題は回避できる。

外部ファイルのスクリプトとスタイルシートに関する問題

 Section 6 で触れた問題によって,XHTML ではスクリプトおよびスタイルシートは外部のファイルとして用意したほうが安全である。ただし,Internet Explorer 3.x は外部のファイルとして用意されたスクリプトはサポートされない。また,Internet Explorer 3.x で外部のファイルとして CSS のスタイルシートを用意した場合,セレクタ body に係る宣言は無効になってしまうことに注意されたい。