文書型宣言について少しだけ踏み込んで解説します
2022.03.16
現在、HTML5以降ではあまり意識する必要が無くなったもののひとつに、「文書型宣言」があります。
HTML5では、
<!DOCTYPE html>
という形で表されていて、特に意識することなくHTML文書の一番最初に必ず記述しています。
文書型宣言は、一言で言い表すと「このHTML文書がどのバージョンのものを使っているかを宣言するもの」になります。
HTML5以前では、DTDというファイルを参照することで、文書内の記述が規則に従ったものかを検証することが可能でした。
今この時点では、気にする必要はありませんが、過去のバージョンから現在までの文書型宣言の変遷を振り返りながら、文書型宣言への理解を深めていただければ幸いです。
目次
これまでの文書型宣言の役割
HTML5以前のバージョンでは、「SGML」「XML」というマークアップ言語がベースとなっていました。
そのため、ベースとなった言語のルールに従うために、文書型宣言が必要でした。
この宣言によって、ルールに従っているか検証することができる仕組みが備わっています。
HTML4.01の文書型宣言
HTML4.01の時代では、3種類の文書型宣言が用意されていました。
厳密なルールに移行するための過渡期であったため、複数の記述ルールが存在することになってしまいました。
厳密な文書型宣言(Strict DTD)
非推奨タグなどを禁止した厳密なルールに従って記述するための文書型宣言です。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
移行用文書型宣言(Transitional DTD)
厳密なルールに移行するための準備として、非推奨タグなどが使用できるルールを適用した文書型宣言です。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
フレーム用文書型宣言(Frameset DTD)
現在は使われていませんが、フレームで分割したページを作成するための文書型宣言です。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
XHTML1.0の文書型宣言
XMLというマークアップ言語をベースとした、XHTML1.0にもHTML4.01と同様に3種類の文書型宣言が混在していました。
DOCTYPEタグだけでなく、xmlとしての宣言も必要であったことが注意点となります。
厳密な文書型宣言(Strict DTD)
厳密なルールに基づいた記述のための文書型宣言です。
<?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">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
移行用文書型宣言(Transitional DTD)
厳密なルールに移行するための準備として、非推奨タグなどが使用できるルールを適用した文書型宣言です。
<?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">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
フレーム用文書型宣言(Frameset DTD)
現在は使われていませんが、フレームで分割したページを作成するための文書型宣言です。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
XHTML1.1の文書型宣言
XHTML1.0の厳密な記述ルールに基づいて一本化された文書型宣言になります。
<?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">
HTML5の文書型宣言
HTML5以前は、上記のHTML4.01、XHTML1.0、XHTML1.1が混在しており、実質7種類の記述ルールが存在していました。
それらをより厳密なルールに統一して標準化したのが、HTML5であり、SGMLやXMLをベースとしないため、文書型宣言も簡潔になりました。
<!DOCTYPE html>
まとめ
HTML5以前は、SGMLやXMLなどのマークアップ言語がベースとなっているため、DTDというファイルで記述の規則を明示しています。
また、HTML5以前は、複数の記述ルールが混在しているため、より明文化が必要でした。
複数のルールが混在していることで開発者にとって負担となっていたこと、スマホやタブレットなどの登場で様々な環境に対応する必要があったことが背景にあり、HTML5という統一したルールで標準化することになりました。
HTML5は、SGMLやXMLに依存しない方法でルール化されたので、文書型宣言の記述も簡略化されました。
HTMLのコーディング技術に直接影響のある知識ではありませんが、この文書型宣言がなんのためにあるのかを理解しておくことは、今後も勉強を続けていく上で、他の記述についても理解を深めていくキッカケになると思います。