XHTML は XML アプリケーションである。まず,その XML の基本的な書法を解説しておこう。
HTML では,要素の種類名,属性名など,大文字と小文字を区別しない部分が多かった。しかし,XHTML を含めた XML では,多くの場面で 大文字と小文字を区別する。したがって,とくに断らない限り,大文字と小文字は区別されると理解していただきたい。
XML で書かれた文書をファイルとして作成するとき,要素が書かれる前に XML 宣言と DOCTYPE 宣言 を書く。これらは,省略されることもある。
XML 宣言は,ファイルの先頭に,次のように書かれる。
<?xml version="1.0" encoding="..." standalone="..."?>
version="1.0"
となる。encoding="..."
の部分にはファイルの文字コードセットを書く。省略可能である。standalone="..."
は外部の宣言の有無を yes
または no
で示す。省略可能で,既定値は no
であるが,ここでは気にしなくてよい。たとえば,シフト JIS で書かれた XML 文書ファイルの(とくに XHTML)の XML 宣言は次のようになる。
<?xml version="1.0" encoding="Shift_JIS"?>
XML 宣言が省略されると,文字コードセットは UTF-8 または UTF-16 になる。わたしたちが通常使う JIS(iso-2022-jp
),シフト JIS(Shift_JIS
),EUC(EUC-JP
)の場合は,それを XML 宣言中に書く必要がある。したがって,通常の日本語環境においては,XML 宣言は必須である。
DOCTYPE 宣言は,XML 宣言の直後に書かれ,HTML のものと同様である。DOCTYPE 宣言の形式はいくつかあるが,ここでは XML を使う上でもっともよく使用する形式のみをあげる。
<!DOCTYPE ... PUBLIC "..." "...">
XHTML 1.0 Strict を使うときは,
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
XHTML 1.0 Transitional の場合は,
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
XHTML 1.0 Frameset のときは,
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
となる。
XHTML 1.0 においては,DOCTYPE 宣言は必須である。
まとめると,シフト JIS で書かれた XHTML 1.0 Strict のファイルの先頭には,次のように書かれるということになる。
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
XML においても,HTML と同様にタグは半角の不等号「<
」「>
」で囲まれる。タグは,要素の存在を示す。XML においては,タグはいかなる場合においても省略してはならない。
タグには,要素が“ここから始まる”ことを示す開始タグ,要素が“ここで終わる”ことを示す終了タグ,“中身が空”の要素を表す空要素タグの 3 種類がある。
開始タグ・終了タグは,HTML と同様,それぞれ,
<...>
</...>
という形である。空要素タグは,中身が空の要素,すなわち,<...></...>
と書かれる要素を,
<.../>
と書くものである。また,HTML における hr
要素(水平罫線),br
要素(強制改行)のような“終了タグのない要素”もこの記法で書かれる。たとえば,XHTML において hr
要素は
<hr />
と書かれる。
実際には,“終了タグがない要素”も <...></...>
のように書いてよいのであるが,HTML との互換性を考慮して,“中身が空の要素は <...></...>
,終了タグをとらない要素は <.../>
と書く”と覚えていただきたい。
前掲の例で,“/>
”の直前の空白はなくてもよい。しかし,HTML 4 UA(ブラウザ)との互換性の問題(後述)で,空白を入れておいた。
XML では,HTML と異なり,要素名および属性名において大文字と小文字を区別する。したがって,<blockquote>
に対応する終了タグは </blockquote>
のみであり,</BLOCKQUOTE>
や </BlockQuote>
はその対応する終了タグにはなり得ない。
ちなみに,XHTML 1.0 においては,要素名と属性名はすべて小文字で書くことになっている。
属性は,次のように書かれる。
属性名="属性値"
前述のように,属性名は大文字と小文字を区別する。また,属性値は必ず引用符でくくり,いかなる場合でも省略してはならない。
また,いくつかの候補から選択して値を与える属性(列挙型の属性;たとえば,input
要素の type
属性)でも,属性値は大文字と小文字を区別する。XHTML 1.0 においては,このタイプの属性値はすべて小文字で与える。
“&#x...;
”の形で,ISO 10646(Unicode)の文字番号を 16 進数で与えて文字を参照することができるが,XHTML 1.0 を含めた XML ではここに与える 16 進数の a〜f は小文字を使わなければならない(HTML 4 では大文字・小文字を区別しない)。
コメントは HTML(SGML)のものと同様である。コメント中に連続した 2 個のハイフン“--
”を含んではならないことに注意。
<!-- ... -->