DOCTYPEタイプの詳細な紹介

DOCTYPEタイプの詳細な紹介
<br />通常、HTML では次の方法で DOCTYPE を宣言します。
<!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 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!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">
はい、HTML と XHTML があり、また Transitional と Strict もあります。名前が示すように、XHTML はドキュメントが XML 形式で記述されていることを意味し、HTML はドキュメントが HTML 形式で記述されていることを意味します。 Transition は、ドキュメントが Transitional.dtd または lose.dtd の要件を満たしていることを意味し、Strict は、ドキュメントが strict.dtd の要件を満たしていることを意味します。しかし、実際には次のような誤解がよくあります。
(1)私の文書はXHTMLとして宣言されているので、完全なXML形式である必要があります。
(2)文書がStrictとして宣言されている場合、文書は必ずStrictモードでレンダリングされます。そうでない場合は、Quirksモードでレンダリングされます。
これら 2 つの理解は非常に直接的ですが、間違っており、私たちはよくこの間違いを犯します。
まず、XHTML および HTML としてのドキュメント宣言は、ドキュメントの解析 (つまり、ブラウザーによるドキュメントの分析) と直接的な相関関係はありません。実際、ブラウザがドキュメントを解析する方法は、サーバーがドキュメントを提供する形式によって異なります。一般的には、「text/html」と「application/xhtml xml」の 2 つの方法があります。 「application/html xml」形式で提供されるドキュメントのみを XML として解析できます。ただし、ブラウザの歴史的理由により、すべてのブラウザが「application/xhtml xml」形式のドキュメントをサポートしているわけではありません。IE7 より前のバージョン (IE7 を含む) では、この形式をサポートできません。IE7 がこの形式のドキュメントを検出すると、ユーザーに別のファイルとして保存するように求めるメッセージが表示されます。 IE の普及を考慮して、現在、ほとんどのドキュメントは「text/html」形式で提供されています。 「text/html」形式で提供されるドキュメントは、HTML のセマンティクスに従って解析されます。ご存知のとおり、HTML は非常に寛容です。ドキュメント内のタグが正しく閉じられていない場合でも、HTML は正しく表示されます。したがって、XHTML が「text/html」として提供されている場合 (ほとんどの場合に当てはまります)、DOCTYPE で XHTML を宣言しても、ドキュメントは XML 形式で解析されないため、ドキュメントが XML 仕様に厳密に準拠しているという保証はありません。実際、多くの専門家は、ドキュメントが「application/xhtml xml」として提供されていない場合は、HTML として宣言することを推奨しています。
第二に、ブラウザがドキュメントをレンダリングする方法は、宣言した DTD によって決まるわけではありません。実際、DOCTYPE と DTD を宣言すると、ドキュメントは Strict モード (または標準モード。多くのブラウザには Almost Standard モードも含まれていますが、ここでは区別されません) でレンダリングされます。 DOCTYPE のないドキュメントは、Quirks モードでレンダリングされます。したがって、ブラウザのレンダリング モードは、宣言した DTD と直接関係がありません。
最後に、Strict.dtd として宣言するか Transitional.dtd として宣言するかは、現在のブラウザには影響しません。 Strict.dtd は Transitional.dtd や lose.dtd よりもはるかに厳格であり、多くの要素は strict.dtd では使用できません。ただし、ブラウザの互換性により、DOCTYPE で Strict.dtd を宣言した場合でも、ブラウザは strict.dtd で許可されていない要素に遭遇してもドキュメントを正しく表示できます。ブラウザは DTD を考慮していないようです。たとえば、strict.dtd には iframe タグが存在しません。ただし、DOCTYPE で strict.dtd を宣言し、iframe タグを使用した場合でも、ブラウザー (IE7、IE8、FF3.0、Safari 3.0 を含む) はドキュメントを正しく表示できます。ブラウザは宣言した DTD に従ってドキュメントを解析しません。現在、ドキュメントが strict.dtd または Transitional.dtd に準拠していることを確認する唯一の方法は、W3C Validator などのオンライン検証ツールで分析することです。ブラウザーでは十分なサポートを提供できません。もちろん、実際には、宣言した DTD に厳密に従ってドキュメントを作成できれば最適です。これにより、将来ブラウザーが DTD に厳密に従うときにドキュメントでエラーが発生しなくなります。
したがって、
(1)文書が「text/html」として提供される場合は、HTMLとして宣言する必要があります。 IE7 を正しく表示したい場合は、さらにこれを行う必要があります。
(2)文書がXHTMLとして宣言されている場合は、「application/html xml」として提供する必要があります。
(3)文書がQuirksモードでレンダリングされないように、文書の先頭でDOCTYPEとDTDを宣言するようにしてください。
(4)DTDを宣言する場合は、DTDの要件に厳密に従って文書を作成する必要があります。特に Strict.dtd を宣言する場合は、使用できない要素に注意する必要があります。
注: 時間が経つにつれて、HTML と XHTML、Strict.dtd、Transitional.dtd に対するブラウザのサポートは向上します。ご使用のブラウザが IE7、IE8、FF 3.0、Safari 3.0 よりかなり新しい場合は、この記事の適用性に注意する必要があります。

<<:  DockerはホストのMysql操作に接続します

>>:  Vueのフィルターについて知っておくべきこと

推薦する

Ubuntu 14.04 で QT5 をインストール、設定、アンインストールするための詳細な手順

1. 以前 QT5.13 バージョンをダウンロードしましたが、インストール後、Qtcreator を...

Linux 型バージョン メモリ ディスク クエリ コマンド紹介

1. まず、Linux システムのバージョン内容について概要を説明します。 1. カーネルバージョン...

Vueは動的コンポーネントを使用してTAB切り替え効果を実現します

目次問題の説明Vueの動的コンポーネントとはアプリケーションシナリオの説明実装手順ステップ 1 (新...

Windows に MySQL をインストールする方法のグラフィック チュートリアル

概要: この記事では主に、Windows 環境に MySQL をインストールする方法について説明しま...

HTMLはキャンバスを使用して箇条書きスクリーン機能を実装します

導入最近、大きな課題をこなす際に、弾幕プレイヤーを作る必要がありました。他の人のソースコードを借りて...

React ルーティング リンク構成の詳細

1. 属性へのリンク(1)ルーティングパスを配置する(2)指定された形式でオブジェクトを配置する{パ...

Js クラスの構築と継承のケースの詳細な説明

JS のクラスの定義や継承は本当に多様なので、別のノートブックを開いて記録しておきます。意味オブジェ...

VMWare に CentOS 7.3 をインストールするグラフィカル チュートリアル

CentOS 7.3のインストール手順を図解しました。具体的な内容は次のとおりです。この記事では、v...

Linux学習におけるmkdirコマンドの詳しい説明

目次序文1. ファイルの概念に関する基礎知識2. mkdir コマンド序文最近、Linux にますま...

MySQL 5.7 で my.ini ファイルが見つからない場合の解決策

my.ini とは何ですか? my.ini は、MySQL データベースで使用される設定ファイルです...

MySQLの構文、特殊記号、正規表現の詳細な説明

Mysql でよく使用される表示コマンド1. 現在のデータベース サーバー内のデータベースの一覧を表...

JavaScript を使用してページに動的な検証コードを実装する例

導入:現在、プログラム攻撃を防ぐために、ユーザーがログインまたは登録するときに多くの動的検証テクノロ...

MYSQL開発パフォーマンス調査:バッチデータ挿入の最適化方法

1. どのような問題に直面しましたか?標準 SQL では、通常、次の SQL 挿入ステートメントを記...

ZabbixはLinuxシステムサービスのプロセスを監視

Zabbix は Linux システムのサービス ユニットを監視するためのルールを自動的に検出します...

Linux7で仮想ホストを実装する3つの方法

1. 同じIPアドレス、異なるポート番号仮想ホスト 1: ホスト IP アドレスは 172.16.3...