HTMLからXHTMLにスムーズに移行するには、「書式の違い」をきちんと押さえておくことが不可欠。今回は「XML宣言」「文書型宣言」「XML名前空間と言語コード」「MIMEタイプ」「style要素とscript要素」について見ていこう。

HTMLよりも書式が厳格なXHTML

 XHTMLはHTMLをXMLで再定義したマークアップ言語であり、HTMLの簡便さを残しつつXMLの論理的厳密性を備えている。そのため、HTMLのようにルーズなコーディング(たとえば終了タグがないなど)でもブラウザで問題なく表示される、ということはほとんどない。したがって、書き方にエラーがないかどうか少し神経質にならなければならない。

 また、CSSがきちんと適用されないというトラブルも、実はXHTMLが正しく書かれていないことに起因していることが少なくない。

 これらの問題を避けるべく、エラーのないソースにするには、バリデータ(ソース検証ツール)を使うのが有効である。XHTMLは「W3C Markup Validation Service」で、CSSは「W3C CSS Validation Service」でチェックするのがよいだろう。

 なお、日本では「Anothe HTML-lint」というXHTMLやアクセシビリティに関する優れたバリデータを利用するのも一般的である。ただ、このバリデータは特にアクセシビリティについてやや過剰なまでにエラーを指摘するので、減点「0」の項目は気にしない、きちんと理由さえ押さえていれば多少の減点は目をつぶるなど、使い方には注意が必要だ。

 それでは以下、HTMLとXHTMLの書式の違いを詳しく見ていくことにする。現状、実務的にはXHTML 1.0 StrictまたはTransitionalを採用するのが一般的であるが、XHTML 1.1も視野に入れて書式の違いを説明しよう。

1. XML宣言

 XHTMLではHTMLと異なり、文書の一番はじめにXML宣言を記述する。XHTMLのデフォルトのエンコーディング(文字符号化方式)は「UTF-8」または「UTF-16」であり、これらのエンコーディングを採用する場合はXML宣言自体を省略することができるとされているが、仕様上はどのエンコーディングを利用する場合でもきちんとXML宣言を記述しておくことが推奨されている。

XML宣言
<?xml version="1.0" encoding="UTF-8"?>

 version属性ではXHTMLではなくXMLのバージョンを指定するので、XHTML 1.0でもXHTML 1.1でも「1.0」と指定する点に注意しよう。

 ただし、Internet Explorer(以下、IE)6では、XML宣言が記述されている場合、レンダリングモードとして「標準準拠モード」ではなく「過去互換モード」が採用されてしまうという問題があるので、実務的にはどのエンコーディングを採用する場合でもXML宣言は書かないのが一般的である。

 なお、エンコーディングとは、データを安全に転送・処理するために符号化(記号化)する仕組みで、1文字ごとにバイト列で表す。日本語環境では「UTF-8」のほかにも、「Shift_JIS」(シフトJIS)、「EUC-JP」(日本語EUC)、「iso-2022-jp」(JIS)がよく利用される。今後は、Unicode(ひとつの文字コード体系で多言語処理を可能とするエンコーディング)である「UTF-8」がより頻繁に利用されるようになると考えられるので、可能であれば「UTF-8」を採用しておくことをお勧めする。この場合、あわせてテキストエディタなどの編集ソフトでXHTMLファイルを保存する際、「UTF-8」を選択しておくことを忘れないようにしよう。なぜなら、保存の際の文字コードと、XHTMLのなかで採用されているエンコーディングが一致しない場合、文字化けが発生する原因となるからだ。Windows環境での標準的な保存文字コードは「Shift_JIS」なので特に注意しよう。