Detaillierte Einführung in den DOCTYPE-Typ

Detaillierte Einführung in den DOCTYPE-Typ
<br />Wir deklarieren DOCTYPE in HTML normalerweise folgendermaßen:
<!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">
Ja, es gibt HTML und XHTML, und ja, es gibt Transitional und Strict. Wie der Name schon sagt, bedeutet XHTML, dass das Dokument im XML-Format geschrieben ist, während HTML bedeutet, dass das Dokument im HTML-Format geschrieben ist. „Transition“ bedeutet, dass das Dokument die Anforderungen von „Transitional.dtd“ oder „loose.dtd“ erfüllt, und „Strict“ bedeutet, dass das Dokument die Anforderungen von „strict.dtd“ erfüllt. Tatsächlich kommt es jedoch häufig zu folgenden Missverständnissen:
(1) Mein Dokument ist als XHTML deklariert, daher muss es im vollständigen XML-Format vorliegen.
(2) Wenn mein Dokument als „Strict“ deklariert ist, wird es auf jeden Fall im „Strict Mode“ gerendert. Andernfalls erfolgt die Darstellung im „Quirks Mode“.
Beide Auffassungen sind sehr direkt, aber sie sind falsch, und wir machen diesen Fehler oft.
Zunächst einmal besteht zwischen der Dokumentdeklaration als XHTML und HTML kein direkter Zusammenhang mit der Analyse des Dokuments (d. h. der Analyse des Dokuments durch den Browser). Tatsächlich hängt die Art und Weise, wie der Browser das Dokument analysiert, vom Format ab, in dem der Server das Dokument bereitstellt. Normalerweise gibt es zwei Möglichkeiten: „text/html“ und „application/xhtml xml“. Nur Dokumente im Format „application/html xml“ können als XML analysiert werden. Aus historischen Gründen unterstützen jedoch nicht alle Browser Dokumente im Format „application/xhtml xml“. Versionen vor IE7 (einschließlich IE7) können dieses Format nicht unterstützen. Wenn IE7 auf ein Dokument in diesem Format stößt, fordert er den Benutzer auf, es als andere Datei zu speichern. Angesichts der weiten Verbreitung des Internet Explorers werden die meisten Dokumente derzeit im „Text/HTML“-Format bereitgestellt. Dokumente im Format „text/html“ werden gemäß der Semantik von HTML analysiert. Wie wir alle wissen, ist HTML sehr tolerant. Selbst wenn die Tags in Ihrem Dokument nicht richtig geschlossen werden, kann das HTML dennoch korrekt angezeigt werden. Wenn Ihr XHTML daher als „text/html“ bereitgestellt wird (was in den meisten Fällen der Fall ist), wird Ihr Dokument auch dann nicht im XML-Format analysiert, wenn Sie XHTML in DOCTYPE deklarieren. Es besteht daher keine Garantie dafür, dass Ihr Dokument strikt den XML-Spezifikationen entspricht. Tatsächlich empfehlen viele Experten, Ihr Dokument als HTML zu deklarieren, wenn es nicht als „application/xhtml xml“ bereitgestellt wird.
Zweitens wird die Art und Weise, wie der Browser Ihr Dokument darstellt, nicht durch die von Ihnen deklarierte DTD bestimmt. Wenn Sie DOCTYPE und DTD deklarieren, wird Ihr Dokument tatsächlich im strikten Modus (oder Standardmodus, viele Browser umfassen auch den fast standardmäßigen Modus, der hier nicht unterschieden wird) gerendert. Dokumente ohne DOCTYPE werden im Quirks-Modus gerendert. Daher hat der Rendermodus des Browsers keine direkte Beziehung zu der von Ihnen deklarierten DTD.
Ob Sie es als Strict.dtd oder Transitional.dtd deklarieren, macht für aktuelle Browser keinen Unterschied. Strict.dtd ist viel strenger als Transitional.dtd oder loose.dtd und viele Elemente können in strict.dtd nicht verwendet werden. Aus Gründen der Browserkompatibilität kann der Browser Ihr Dokument jedoch auch dann korrekt anzeigen, wenn Sie Strict.dtd in DOCTYPE deklarieren und auf Elemente stoßen, die in strict.dtd nicht zulässig sind. Ich vermute, dass der Browser die DTD nicht berücksichtigt. Beispielsweise existiert das Iframe-Tag nicht in strict.dtd. Aber auch wenn Sie strict.dtd in Ihrem DOCTYPE deklarieren und das Iframe-Tag verwenden, können Browser (einschließlich IE7, IE8, FF3.0 und Safari 3.0) Ihr Dokument korrekt anzeigen. Der Browser analysiert Ihr Dokument nicht entsprechend der von Ihnen angegebenen DTD. Derzeit können Sie nur sicherstellen, dass Ihr Dokument mit strict.dtd oder Transitional.dtd übereinstimmt, indem Sie es mit Online-Validatoren wie dem W3C Validator analysieren. Browser können Ihnen dabei keine gute Unterstützung bieten. Tatsächlich wäre es natürlich am besten, wenn Sie Ihr Dokument streng gemäß der von Ihnen deklarierten DTD schreiben könnten. Dadurch wird sichergestellt, dass Ihr Dokument keine Fehler erzeugt, wenn der Browser sich in Zukunft strikt an die DTD hält.
daher,
(1) Wenn Ihr Dokument als „text/html“ bereitgestellt wird, sollten Sie es als HTML deklarieren. Wenn Sie eine korrekte Anzeige im IE7 wünschen, sollten Sie dies noch häufiger tun.
(2) Wenn Ihr Dokument als XHTML deklariert ist, sollten Sie es als „application/html xml“ bereitstellen.
(3) Versuchen Sie, DOCTYPE und DTD am Anfang Ihres Dokuments zu deklarieren, um sicherzustellen, dass Sie das Dokument nicht im Quirks-Modus rendern.
(4) Wenn Sie eine DTD deklarieren, müssen Sie Ihr Dokument streng in Übereinstimmung mit den Anforderungen der DTD verfassen. Insbesondere bei der Deklaration von Strict.dtd sollte darauf geachtet werden, welche Elemente nicht verwendet werden können.
Hinweis: Mit der Zeit wird die Browserunterstützung für HTML und XHTML, Strict.dtd und Transitional.dtd verbessert. Wenn Ihr Browser deutlich neuer ist als IE7, IE8, FF 3.0 und Safari 3.0, dann sollten Sie auf die Anwendbarkeit dieses Artikels achten.

<<:  Docker stellt eine Verbindung zum Host-Mysql-Vorgang her

>>:  Was Sie über Filter in Vue wissen müssen

Artikel empfehlen

CSS-Tipps zur Implementierung der Chrome-Tab-Leiste

Dieses Mal schauen wir uns ein Navigationsleisten...

JavaScript-Canvas zum Erzielen eines Spiegelbildeffekts

In diesem Artikel wird der spezifische Code für J...

Ausführliche Erläuterung der Mysql-Deadlock-Anzeige und Deadlock-Entfernung

Vorwort Vor einiger Zeit ist bei mir ein MySQL-De...

Analyse der Vor- und Nachteile von gespeicherten MySQL-Prozeduren

MySQL Version 5.0 begann, gespeicherte Prozeduren...

Zusammenfassung der Anwendungsbereiche von Kubernetes

Kubernetes ist aufgrund seiner Anwendungsportabil...

Sammlung von 12 praktischen Web-Online-Tools

1. Favicon.cc Um ICO-Symbol-Websites online zu er...

Eine kurze Diskussion zum Thema Ziehen und Sortieren von Elementen in Tabellen

In letzter Zeit stoße ich bei der Verwendung von ...

Vue3.x verwendet mitt.js für die Komponentenkommunikation

Inhaltsverzeichnis Schnellstart Anwendung Grundpr...

HTML-Code Textfeld Eingabe begrenzen Textfeld wird grau Textfeldeingabe begrenzen

Methode 1: Setzen Sie das schreibgeschützte Attrib...

So konfigurieren Sie Nginx's Anti-Hotlinking

Experimentelle Umgebung • Eine minimal installier...