XHTMLによるページ作成の注意点

Introduction

ウェブページを記載する言語として,HTML(Hyper Text Markup Language)が一般的であった.しかし,今後はXHTML(Extensible Hyper Text Markup Language)に 移行していくと思われる.XHTMLは,HTML 4.01をベースに,XML(Extensible Markup Language)によって生成された言語であり,タグ名などはほぼそのまま利用することができる.現在,最新のウェブブラウザでは,XHTMLに対応が進み表示などもほとんど問題がなくなってきている.しかし,やはり多少の問題が発生しているためここで紹介したい.

What's the problem?

XHTMLを用いる上での問題点は以下の通り.

What's view mode?

ウェブブラウザの表示モードには,以下の3モードがある. HTMLのバージョン(仕様)が更新されるに連れてブラウザの表示仕様が変わり続けてきた.ブラウザによる表示の違いを避けるためには,W3Cの仕様に沿うのが望ましい.つまりブラウザに"標準モード"としてXHTMLを表示させるのが,もっとも安定しているはずである.しかし,現在もっともブラウザシェアの高いWindows版Microsoft Internet Explorer 6.0に問題がある(以下IE6.0はWindows版とする)

View mode table

Ver. Doctype宣言・XML宣言 IE6.0 Netscape6 Netscape7 Opera7 Mac IE5 Safari 1
なし なし 互換 互換 互換 互換 互換 互換
XHTML1.0 Strict <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
標準 標準 標準 標準 標準 標準
XHTML1.0 Strict <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
互換 標準 標準 標準 標準 標準
XHTML1.0 Transitional <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
標準 標準 準標準 標準 標準 準標準
XHTML1.0 Transitional <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
互換 標準 準標準 標準 標準 準標準
XHTML1.1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
標準 標準 標準 標準 標準 標準
XHTML1.1 <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
互換 標準 標準 標準 標準 標準
注目すべきは,XML宣言がある場合のIE6.0の表示モードである.IEは,行頭のDoctype宣言を判定して,表示モードを切り替える.行頭にDoctype宣言がないXHTML文書は,Doctypeなしと同等に扱われ互換モードとして動作してしまう.互換モードは,古いブラウザなどの方言をも対応できる幅広い仕様のように思えるが,逆にW3Cの仕様に準拠していない部分がある.

Problems of convertible view mode

互換モードでは,CSSを用いたスタイルシートで機能しないものがある.ここでは,その一部を紹介するので,このような問題があることを知識として持ち,詳しい調査は,以下のリンク先などから参照してほしい.
*上記サンプルは,1行目のXML宣言以外は全く違いはなく,使用しているCSSも全く同じものである.表示モードが替わるとこのように表示も異なることを確認してほしい.XHTMLに正確に準拠しても,表示結果がおかしいときは,この互換モードでの不具合であることを思い出してほしい.Netscape, Mozillaではこの不具合は発生しない.
回避策として,上記サンプルのようにXML宣言を削除するのが簡単な解決である.XMLにおいて,XML宣言はmustではないので問題ないであろう.次期IEでの改善を期待したい.