従来、DoctypeまたはDocument Type Declarationは、ドキュメントをDocument Type Definitionに関連付けます。
文書型定義は、特定の XML または SGML 文書の標準です。XML と SGML 自体には、タグと属性が一般的にどのように機能するかを除けば、多くのスキーマや特定のルール セットはありません。DTD は、特定の種類のドキュメント (HTML、SVG、MathML など) の規則の記述と考えることができます。どのタグがどこで許可されるかを示します (たとえば、要素には 1 つの要素とそれに続くhtml
1 つの要素が含まれている必要があります)。head
body
今日より一般的に使用されている XML スキーマなど、DTD に代わるものがあります。
ただし、ブラウザーは DTD をまったく使用しません。レンダリング モードを決定するために Doctype を読み取りますが、ドキュメントを解析するためのルールは完全にブラウザーに組み込まれています。
これが、HTML 5 に (レンダリング モードを決定するための) Doctype があるのに、DTD がない理由です。
レンダリング モード
初期の Web ブラウザは非常にバグが多かったです。新しいバージョンがリリースされたとき、前任者やライバルとの互換性を維持する必要がありました。ウェブサイトはバグに依存して構築されていたため、バグの修正が非常に困難でした。
これを解決するために、最新のブラウザーにはさまざまなレンダリング モードがあります (標準に従ってドキュメントと css をレンダリングする標準モード、ブラウザーが以前のブラウザーのバグをエミュレートするquirks モード、およびこの 2 つの間に位置するほぼ標準モード)。
Doctype の選択
Doctype を選択する際に考慮すべき要素が 2 つあります。
- 標準モードをトリガーしますか? (新しいページの場合、標準モードをサポートしていないブラウザーとの互換性が必要な場合は、今日では非常にまれです) 。
- 必要な機能をサポートしていますか?
一般に、これは HTML 5 を使用する必要があることを意味します。これは現在の標準であり、ブラウザが実際にどのように動作するかを最もよく反映しています。
<!DOCTYPE html>
それに失敗しました。厳密な doctype は、CSS で処理する必要があるほとんどの機能を回避します。
XHTML 1.0で書く場合、この 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">
HTML 4.01で書く場合、代わりにこれが一般的です:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
時代遅れの機能が入っている
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
と
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
上記のほとんどには、標準モードのサポートに影響を与えるバリエーション (たとえば、URL を省略して公開識別子に依存することができます) があることに注意してください。この記事には広範なリストが含まれています。
Strict 対 Transitional Doctypes に関する議論
(以下は2008 年よりも 2021 年にはあまり当てはまらないことに注意してください)
標準のエバンジェリストは、Web 開発者が新しいページで Transitional Doctype を使用するのをやめ、代わりに Strict を使用するよう求めています。繰り返しますが、これは、理論と実践を両立させるのが困難な場合です。移行用 Doctype の本来の目的は、レガシー Web サイトを標準準拠に移行するための中間点を提供することでした。移行用の Doctype では、要素と属性に対する制限は文字通り「それほど厳密ではない」ため、開発者は標準モードでより早く作業を開始し、時間の経過とともに未解決の相違点を段階的に廃止できます。
エンタープライズ環境で開発者が Doctype を変更するのは必ずしも簡単ではないため、論争が起きています。フリーランスの開発者や小規模または中規模の Web サイトの作成者は、Doctype を決定してこの移行を行うのが容易になることがよくあります。需要の高い Web ベース サービスのエンタープライズ実稼働環境では、レガシー システムやサード パーティ コード製品に対するより複雑な依存関係が本質的に存在し、それら自体が削除または再設計のロードマップに含まれている可能性がありますが、そのような変更を実行する必要があります。系統的かつ漸進的に行われます。
便利なツール
W3C ( World Wide Web Consortium ) は、この種の標準の定義に積極的な役割を果たしているグループです。彼らは、http: //validator.w3.org/で、標準に照らしてドキュメントを検証および検証するための便利なオンライン ツールを維持しています。同様の機能を備えたサードパーティのツールやブラウザ拡張機能は他にも多数あります。