文書型宣言(DOCTYPE宣言)とは
文書型宣言(Document Type Declaration、略してDOCTYPE宣言)は、SGMLやXMLといったマークアップ言語で記述された文書が、どのようなルールに従って記述されているかを定義する「文書型定義(DTD)」と文書自身を結びつけるための宣言です。文書の先頭に記述され、パーサが文書の構造を正しく解釈するために不可欠な役割を果たします。
概要
文書型宣言は、SGMLやXML文書の冒頭に記述されます。これにより、文書内で使用できる要素や属性、それらの配置規則などが定義されたDTDを参照し、文書がこれらの規則に準拠しているかを検証できます。
初期のHTMLはSGML文書の一種として定義されており、文書型宣言はHTML文書の冒頭にも記述されていました。これにより、
ウェブページの制作者は、
W3C Markup Validation Serviceなどのツールを用いて、ページ内のエラーを検出することができました。
また、一部の
HTMLレンダリングエンジンには「DOCTYPEスイッチ」という機能があり、文書型宣言の内容に基づいて、レンダリングを「標準モード」や「互換モード(Quirksモード)」に切り替えます。
HTML5では、SGMLベースではなくなりましたが、依然としてMIMEタイプにtext/htmlを使用しているため、DOCTYPEスイッチの影響を受けます。そのため、
HTML5でも文書型宣言は、レンダリングモードを「標準モード」に切り替えるためだけに、形式的に残されています。
文法
文書型宣言の基本的な文法は以下の通りです。
sgml
サブセットの宣言 >
]>
または
sgml
サブセットの宣言 >
]>
- - ルート要素: 文書全体の最上位となる要素。例えば、XHTMLでは``要素がルート要素となります。
- - PUBLIC: DTDが公開されていることを示すキーワード。公開識別子とシステム識別子を指定できます。
- - SYSTEM: DTDがシステム内部に存在することを示すキーワード。システム識別子を指定する必要があります。
- - 公開識別子: DTDを特定するための公式な識別子。例えば、XHTML 1.1では`-//W3C//DTD XHTML 1.1//EN`となります。
- - システム識別子: DTDの場所を示すURI。例えば、XHTML 1.1では`http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd`となります。
- - 内部サブセット: DTDの宣言に追加・変更を行うための設定。省略可能ですが、HTML専用のパーサでは解析できない場合があります。
具体例
HTML 4.01
HTML 4.01には、以下の3種類のDTDがあります。
- - Strict DTD: CSSでスタイルを定義することを前提とし、見た目に関する要素や属性を排除した厳格なDTD。
- - Transitional DTD: 非推奨となった要素や属性の使用を許容する、移行期間のためのDTD。
- - Frameset DTD: フレームを使用する場合に指定するDTD。
以下に、それぞれのDTDを指定するための文書型宣言の例を示します。
Strict DTD
html
Transitional DTD
html
Frameset DTD
html
XHTML 1.0
XHTML 1.0も、HTML 4.01と同様に、Strict、Transitional、Framesetの3種類のDTDを持ちます。
Strict DTD
html
Transitional DTD
html
Frameset DTD
html
XHTML 1.1
XHTML 1.1は、モジュール化されたXHTMLであり、1つのDTDのみを持ちます。
html
XHTML Basic
XHTML Basic 1.0
html
XHTML Basic 1.1
html
XHTML Mobile Profile
XHTML Mobile Profile 1.0
html
XHTML Mobile Profile 1.1
html
XHTML Mobile Profile 1.2
html
XHTML + RDFa
html
HTML5では、SGMLベースではなくなったため、公式なDTDは存在しません。文書型宣言は、レンダリングモードを標準モードに切り替えるためだけに存在します。
html
X
HTML5では、XMLの文法制約から、大文字小文字が区別され、``と記述します。文書型宣言は必須ではありませんが、HTMLとして解釈する必要がある場合は、記述することが推奨されます。
関連項目
外部リンク