XHTMLの文書型宣言と文書型定義についてまとめています。
文書型宣言はXHTMLのバージョンを指定するための宣言です。XHTML文書の場合は、XML宣言の直後(XML宣言を省略した場合はXHTML文書の先頭)に記述します。
<?xml version="1.0" encoding="Shift_JIS"?>
←XML宣言
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
←文書型宣言
">
XHTML文書では、XML宣言の前に何も記述してはいけません。またXML宣言を省略した場合は文書型宣言を先頭に記述して、その前には何も記述してはいけません。
XHTML1.0では文字コードがUTF-8,UTF-16の場合はXML宣言を省略できます。
XHTML1.0/1.1双方とも文字コードがUTF-8,UTF-16以外の場合はXML宣言を記述するとされています。しかしIE6はXML宣言を記述すると、自動的に後方互換モードでレンダリングする不具合があります。文字コードをUTF-8,UTF-16にすると、XML宣言を省略してもWeb標準に準拠することができます。
IE6やFirefoxなどのモダンブラウザではレンダリング(表示)の際、文書型宣言をチェックして「標準(Standards)モード」と過去のブラウザと互換性のある「後方互換(Quirks)モード」を切り替えます。つまりモダンブラウザはDOCTYPE(文書型宣言)の有無によって、厳密な仕様に準拠したレンダリングを行うか、後方互換性を確保したレンダリングを行うかを切り替えていいます。
詳細はDOCTYPEスイッチを参考にしてください。
文書型宣言は「公開識別子(Formal Public Identifier)」と「システム識別子(System Identifier)」で構成されています。
XHTML1.0 Transitionalを例に文書型宣言を詳しく見ていきます。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
公開識別子⇒ -//W3C//DTD XHTML 1.0 Transitional//EN
システム識別子 ⇒ http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitionalt.dtd
公開識別子(Web標準の教科書 益子貴寛著より引用)
ユニバーサルに文書型定義を参照するための識別子
システム識別子(Web標準の教科書 益子貴寛著より引用)
その文書が準拠する文書型定義を参照するURI
文書型定義とは、その定義を参照する文書で利用できる要素や、属性などを定めたルールです。XHTMLの各バージョンごとに固有のDTDが存在します。文書型定義(DTD)のURIは文書型宣言内で指定します。XHTML1.0 Transitionalでは下記の赤字の部分が文書型定義(DTD)のURIになります。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
A List Apartの「Fix your Site with the Right DOCTYPE」に完全な文書型宣言の一覧が掲載されています。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd
">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd ">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd ">
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。