Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung der Funktion und Verwendung der DOCTYPE-Deklaration_HTML/Xhtml_Webseitenproduktion

Detaillierte Erläuterung der Funktion und Verwendung der DOCTYPE-Deklaration_HTML/Xhtml_Webseitenproduktion

WBOY
WBOYOriginal
2016-05-16 16:41:301595Durchsuche

1. Browser-Rendering-Modus und Dokumenttyp

Einige Webseiten werden nach Standards erstellt, viele jedoch nicht. Auch wenn Sie keine standardkonformen Webseiten erstellen können, möchten Sie dennoch, dass der Browser diese Seiten gemäß den Standards korrekt anzeigt. Derzeit sind viele Webseiten mit viel nicht standardmäßigem Code gefüllt und funktionieren immer noch normal. Tatsächlich wird der meiste Code, der für ältere Browser entwickelt wurde, in neueren Browsern korrekt angezeigt (obwohl die Darstellung möglicherweise anders ist). Was ist der Grund dafür? Tatsächlich würde die strikte Einhaltung der neuesten Standards die Existenzgrundlage dieser Seiten völlig untergraben. Dies ist natürlich für jeden Browser, der etwas bewirken möchte, inakzeptabel.

Browser-Rendering-Modus

Moderne Browser verfügen über verschiedene Rendering-Modi, die sowohl standardkonforme Webseiten als auch Webseiten unterstützen, die für ältere Browser entwickelt wurden. Unter anderem wird der Standardmodus (d. h. der strikte Rendering-Modus) zum Rendern von Webseiten verwendet, die den neuesten Standards entsprechen, während der Quirks-Modus (einschließlich) (d. h. der lose Rendering-Modus oder der Kompatibilitätsmodus) zum Rendern entworfener Webseiten verwendet wird für herkömmliche Browser. Beachten Sie außerdem, dass Mozilla/Netscape 6 einen neuen Almost Standards-Modus hinzufügt, um Webseiten zu unterstützen, die für eine ältere Version des Standards entwickelt wurden.

Was ist Doctype-Wechsel?
Die oben auf der Webseite platzierte Doctype-Deklaration ist der Schlüssel, um den Browser in den richtigen Rendering-Modus zu versetzen. Der Browser wechselt automatisch in den entsprechenden Rendering-Modus, um den durch die Doctype-Deklaration angegebenen Dokumenttyp korrekt anzuzeigen.

Theoretisch sollte dies ein sehr intuitiver Schalter sein. Wenn doctype angibt, dass es sich bei der aktuellen Webseite um ein Dokument handelt, das einem Standard folgt (also HTML 4 oder XHTML 1), wechselt der Browser in den Standardmodus. Wenn doctype nicht angegeben ist oder HTML 3.2 und ältere Versionen angegeben sind, wechselt der Browser in den Quirks-Modus. Auf diese Weise kann der Browser standardkonforme Dokumente korrekt anzeigen, ohne ältere, nicht standardisierte Webseiten vollständig aufzugeben.

Das Problem des Doctype-Wechsels
Allerdings ist der Doctype-Wechsel eine unvollständige Lösung. Selbst wenn Sie eine Doctype-Deklaration in einem Webdokument verwenden, zeigt der Browser die Webseite möglicherweise nicht im erwarteten Rendering-Modus an. Die Gründe sind vielfältig, einschließlich fehlerhafter Dokumenttypen und unterschiedlicher Anfänge von ), einschließlich XHTML-Webseiten. Allerdings erwarten IE, Opera und ältere Versionen von Safari, dass die erste Zeile des Dokuments eine Doctype-Deklaration ist. Wenn also etwas anderes davor steht (einschließlich XML-Prolog), wird der Dokumenttyp nicht erkannt. Daher versetzt das Vorhandensein von XML-Prolog IE, Opera und Safari in den Quirks-Modus. Ein XML-Prolog ist nicht erforderlich, daher können Sie ihn in XHTML-Seiten getrost weglassen. Hinweis: Stellen Sie sicher, dass Sie ein Zeichensatzattribut in das http-equiv-Meta-Tag einschließen, um das fehlende Kodierungsattribut im XML-Prolog auszugleichen.

Fehlende URL oder relative URL:
Geben Sie in der vollständigen Doctype-Deklaration die URL der entsprechenden Dokumenttypdefinitionsdatei (DTD) an. Wenn die URL fehlt oder ein relativer Pfad angegeben ist (anstelle einer vollständig qualifizierten Internetadresse), wechseln die meisten Browser in den Quirks-Modus, unabhängig vom in der Doctype-Deklaration angegebenen Modus.

Fehlerhafter Doctype:
Der Browser reagiert sehr empfindlich auf die Form und das Format der Doctype-Deklaration. Wenn er einen fehlerhaften Doctype nicht erkennen kann, wird er in den Quirks-Modus gezwungen (zu diesem Zweck). Grund, daher empfehlen wir, einen bekanntermaßen korrekten Dokumenttyp zu kopieren und in das Dokument einzufügen, anstatt ihn selbst einzugeben. Ein häufiger Grund für einen fehlerhaften Dokumenttyp ist ein fehlendes Leerzeichen zwischen dem ersten Teil des Dokumenttyps und der URL. Beim Falten eines zweizeiligen Dokumenttyps in eine einzelne Zeile geht oft der Platz verloren.

Doctype während der Übergangsphase:
Wenn der Browser den Doctype während der Übergangsphase verarbeitet, ist es am wahrscheinlichsten, dass Inkonsistenzen auftreten. IE und Opera verwenden den Standardmodus; Netscape 6 und ältere Versionen von Safari verwenden den Quirks-Modus; und neuere Versionen von Safari verwenden den Almost Standards-Modus von Netscape, der eine fehlertolerantere Version des Standardmodus ist.
Unbekannter Dokumenttyp:
Es gibt auch Inkonsistenzen, wenn Browser nicht erkannte Dokumenttypen verarbeiten. IE und Opera wechseln in den Standardmodus; das heißt, sie gehen davon aus, dass es sich bei dem nicht erkannten Dokumenttyp um einen neuen Standard handelt, der noch nicht in den Browser integriert wurde. Netscape 6 hingegen wechselt in den Quirks-Modus, wenn es auf einen nicht erkannten Dokumenttyp stößt.
Das Wechseln des Doctypes kann eine effektive Möglichkeit sein, den Browser in den richtigen Rendering-Modus zu versetzen und die Webseite korrekt anzuzeigen, vorausgesetzt, Sie bemerken die Inkonsistenzen in verschiedenen Browsern und können verschiedene Probleme proaktiv vermeiden.

2. Verwenden Sie die richtige Doctype-Deklaration

Normalerweise ignorieren wir dies beim Erstellen von Seiten (ich eingeschlossen, ich bin normalerweise zu faul, nicht zu schreiben und die Standardisierung des Browsers zu verwenden, und es ist notwendig, dass jeder diese Details versteht). nützlich sein. Wie das Sprichwort sagt: Es gibt keine Regel ohne Regeln.

Obwohl die meisten Webdokumente oben eine Doctype-Deklaration haben, achten viele Leute nicht darauf. Dies ist eines von vielen Details, mit denen Web-Authoring-Software beim Erstellen eines neuen Dokuments schlampig umgeht. Obwohl Doctype von vielen übersehen wird, ist es ein erforderliches Element in jedem Webdokument, das Standards entspricht. Doctype beeinflusst die Codevalidierung und bestimmt, wie der Browser Ihr Webdokument letztendlich anzeigt.

Die Rolle des Doctype

Die Doctype-Deklaration gibt an, welche Regeln ein Leseprogramm verwenden soll, um das Markup im Dokument zu interpretieren. Bei Webdokumenten ist der „Leser“ normalerweise ein Programm wie ein Browser oder ein Validator, und die „Regeln“ sind die Regeln, die in einer vom W3C veröffentlichten Document Type Definition (DTD) enthalten sind.

Jede DTD enthält eine Reihe von Tags, Attributen und Eigenschaften, die zum Markieren des Inhalts eines Webdokuments verwendet werden. Außerdem enthält sie Regeln, die angeben, welche Tags in welchen anderen Tags angezeigt werden können. Jeder vorgeschlagene Webstandard (z. B. HTML 4 Frameset und XHTML 1.0 Transitional) verfügt über eine eigene DTD. Wenn das Markup im Dokument nicht der in der Doctype-Deklaration angegebenen DTD entspricht, besteht das Dokument möglicherweise die Codeüberprüfung nicht und wird im Browser möglicherweise nicht korrekt angezeigt. Wenn es um Markup-Inkonsistenzen geht, sind Browser nachsichtiger als Validatoren. Falsche Doctype-Deklarationen führen jedoch oft dazu, dass Webseiten falsch oder überhaupt nicht angezeigt werden.

Wählen Sie den richtigen Dokumenttyp

Um eine korrekte Doctype-Deklaration zu erhalten, besteht der Schlüssel darin, dass die DTD dem Standard entspricht, dem das Dokument folgt. Unter der Annahme, dass das Dokument beispielsweise dem XHTML 1.0 Strict-Standard folgt, sollte die Doctype-Deklaration des Dokuments auf die entsprechende DTD verweisen. Wenn andererseits die Doctype-Deklaration eine XHTML-DTD angibt, das Dokument jedoch HTML-Markup im alten Stil enthält, ist dies ebenfalls ungeeignet unangemessen.

Manchmal ist es überhaupt nicht notwendig, eine Doctype-Deklaration zu verwenden. Wenn keine gültige Doctype-Deklaration angegeben ist, verwenden die meisten Browser eine integrierte Standard-DTD. In diesem Fall versucht der Browser mithilfe der integrierten DTD, das von Ihnen angegebene Tag anzuzeigen. Bei einigen schnell zusammengewürfelten Ad-hoc-Dokumenten (von denen es viele gibt) könnten Sie tatsächlich darüber nachdenken, die Doctype-Deklaration wegzulassen und die Standardanzeige des Browsers zu akzeptieren.

Sie können eine Doctype-Deklaration von Grund auf schreiben und sie auf eine DTD Ihrer Wahl verweisen lassen. Da die meisten Webdokumente jedoch einem der vom W3C veröffentlichten international anerkannten Webstandards entsprechen müssen, enthalten diese Dokumente normalerweise eine der folgenden Standard-Doctype-Deklarationen:

HTML 2:

HTML 3.2:

HTML 4.01 Strict:

http://www.w3.org/TR/html4/strict. dtd"> HTML 4.01 Übergangsversion:

http://www.w3.org/TR/html4/loose .dtd">

HTML 4.01 Frameset:http://www.w3.org/TR/html4/frameset .dtd">

XHTML 1.0 Strict:http://www.w3.org/TR/xhtml1/DTD /xhtml1-strict.dtd">

XHTML 1.0 Transitional:http://www.w3.org/TR/xhtml1/DTD /xhtml1-transitional.dtd">

XHTML 1.0 Frameset:http://www.w3.org/TR/xhtml1/DTD /xhtml1-frameset.dtd">

XHTML 1.1:http://www.w3.org/TR/xhtml11/DTD/xhtml11 .dtd">

XHTML 1.1 plus MathML plus SVG:http://www.w3 .org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">

      除了上面列出的doctype声明,具有特殊要求的一些文档还使用了其他几种声明.

      doctype声明通常是文档的第一行,要在标记以及其他文档内容之前.注意,在XHTML文档中,doctype的前面偶尔会出现一条XML处理指令(也称为XML prolog) :

     的或者形式错误的doctype是大量问题的罪魁祸首.

      用DW设计网页时,新建一个文件,看代码最前面总要出现一个下面的东东,
http://www.w3.org/TR/html4/loose.dtd“>这个是DW自动在网页文件页增加了DTD信息,可以删。 删除后,浏览器会使用的默认DTD.
三、选择什么样的DOCTYPE

      开始制作符合标准的站点,第一件事情就是声明符合自己需要的DOCTYPE。

      查看本页原代码,可以看到第一行就是: http://www .w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

      打开一些符合标准的站点, 例如著名web设计软件开发商 Macromedia, 设计大师 Zeldman 的个人网站, 会发现同样的代码.而另一些符合标准的站点(例如 k10k.net )的代码则如下:

!DOCTYPE">http://www.w3.org/TR/xhtml1/DTD /xhtml1-frameset.dtd">!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "br">http://www. w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">br>。完整代码如下:

 
!DOCTYPE">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-frameset.dtd">

Welchen DOCTYPE wählen wir
Die ideale Situation ist natürlich eine strenge DTD, aber für die meisten von uns Designern, die mit Webstandards noch nicht vertraut sind, ist eine Übergangs-DTD (XHTML 1.0 Transitional) die aktuelle ideale Wahl (einschließlich dieser Site, die auch die Übergangs-DTD verwendet). Da diese DTD es uns auch ermöglicht, Bezeichner, Elemente und Attribute der Präsentationsschicht zu verwenden, ist es auch einfacher, die W3C-Codeüberprüfung zu bestehen. Hinweis: Die oben erwähnten „Identifikationen und Attribute der Präsentationsschicht“ beziehen sich auf Tags, die ausschließlich der Leistungssteuerung dienen, wie z. B. Tabellen für den Schriftsatz, die Identifizierung der Hintergrundfarbe usw. In XHTML werden Tags zur Darstellung von Strukturen und nicht zur Erzielung einer Präsentation verwendet. Der Zweck unseres Übergangs besteht darin, Daten und Präsentation letztendlich zu trennen.

Zum Beispiel: Eine Schaufensterpuppe zieht sich um. Das Modell ist wie Daten, und die Kleidung ist die Ausdrucksform. Das Modell und die Kleidung sind getrennt, sodass Sie die Kleidung nach Belieben wechseln können. Im ursprünglichen HTML4 waren Daten und Präsentation miteinander vermischt, und es war sehr schwierig, die Präsentationsform auf einmal zu ändern. Haha, es ist ein bisschen abstrakt. Dieses Konzept muss während des Bewerbungsprozesses schrittweise verstanden werden.

Ergänzung
Die DOCTYPE-Deklaration muss oben in jedem XHTML-Dokument platziert werden, vor allem im Code und Markup.

4. So lautet die offizielle Definition von DOCTYPE HTML PUBLIC

!DOCTYPE

--------------------------------- --- ----------------------------------

Gibt die Dokumenttypdefinition (DTD) an, der das HTML-Dokument folgt.

Microsoft® Neu in Internet Explorer 6. Mit dieser Anweisung können Sie Internet Explorer 6 und höher in den Standardkompatibilitätsmodus schalten.

Grammatik

HTML-Top-Elementverfügbarkeit „Registrierung//Organisation//Typ-Tag//Definitionssprache“ „URL“

Möglicher Wert

Element der obersten Ebene: Gibt den in der DTD deklarierten Elementtyp der obersten Ebene an. Dies entspricht dem deklarierten SGML-Dokumenttyp. HTML-Standard. HTML.

Verfügbarkeit: Gibt an, ob der Formal Public Identifier (FPI) ein öffentlich zugängliches Objekt oder eine Systemressource ist. ÖFFENTLICH Standard. Öffentlich zugängliche Objekte. SYSTEM Systemressourcen, wie z. B. lokale Dateien oder URLs.

Registrierung: Ob die angegebene Organisation bei der International Organization for Standardization (ISO) registriert ist. Standard. Der Name der Organisation wurde registriert. - Der Organisationsname ist nicht registriert. Die Internet Engineering Task Force (IETF) und das World Wide Web Consortium (W3C) sind keine registrierten ISO-Organisationen.

Organisation: Geben Sie den Namen der Gruppe oder Organisation an, die für die Erstellung und Wartung der DTD verantwortlich ist, auf die in der !DOCTYPE-Deklaration verwiesen wird, d. h. die OwnerID. IETF IETF. W3C W3C.

Typ: Geben Sie die öffentliche Textklasse an, d. h. den Typ des Objekts, auf das verwiesen wird. DTD-Standard. DTD.

Tag: Geben Sie eine öffentliche Textbeschreibung an, d. h. einen eindeutigen beschreibenden Namen für den referenzierten öffentlichen Text. Auf der Rückseite kann eine Versionsnummer angebracht werden. HTML-Standard. HTML.

Definition: Geben Sie die Dokumenttypdefinition an. Frameset Frameset-Dokumentation. Strict schließt alle repräsentativen Attribute und Elemente aus, die W3C-Experten auslaufen lassen wollen, weil das Stylesheet bereits gut etabliert ist. Transitional enthält alles außer dem FrameSet-Element.

Sprache: Gibt die öffentliche Textsprache an, das natürliche Sprachcodierungssystem, das zum Erstellen des referenzierten Objekts verwendet wird. Die Sprachdefinition wurde als ISO 639-Sprachcode (zwei Großbuchstaben) geschrieben. EN-Standard. Englisch.

URL: Gibt den Speicherort des referenzierten Objekts an.

Notizen

Diese Deklaration muss am Anfang des Dokuments vor dem HTML-Tag stehen.

!DOCTYPE-Elemente erfordern keine schließenden Tags.

Dieses Element ist in HTML in Microsoft® Internet Explorer 3.0 verfügbar.

Mit dieser Anweisung können Sie in Internet Explorer 6 und höher in den Kompatibilitätsmodus mit strengen Standards wechseln. Um dies zu aktivieren, fügen Sie oben in Ihrem Dokument eine !DOCTYPE-Deklaration ein, in der Sie zulässige Tags und in einigen Fällen Definitionen und/oder URLs angeben.

Hinweis: Im Standardkompatibilitätsmodus ist die Kompatibilität mit anderen Versionen von Internet Explorer nicht garantiert. Wenn der Standardkompatibilitätsmodus aktiviert ist, kann sich das Renderverhalten von Dokumenten von zukünftigen Versionen von Internet Explorer unterscheiden. Dieser Modus sollte nicht verwendet werden, wenn der Inhalt von Natur aus fest ist (z. B. auf eine CD gebrannt).

Beispiel

L'exemple suivant montre comment utiliser la déclaration !DOCTYPE pour spécifier la DTD à laquelle le document est conforme et faire passer Internet Explorer 6 et supérieur en mode de compatibilité des standards. Les déclarations dans les exemples suivants spécifient toutes la conformité avec la DTD HTML 4.0. La deuxième déclaration précise « Strict ». Le premier type de déclaration n'est pas spécifié. Les deux annonces feront passer Internet Explorer 6 et versions ultérieures en mode de compatibilité standard.


;

Les déclarations dans les exemples suivants spécifient toutes la conformité à la DTD HTML 4.0 "Transitional". La deuxième déclaration spécifie l'URL de la DTD. Le premier type de déclaration n'est pas spécifié. La deuxième instruction fera passer Internet Explorer 6 et versions ultérieures en mode de compatibilité standard. Ce n’est pas le cas de la première déclaration.


  "http://www.w3.org/TR/html4/loose.dtd"

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn