Frage

Wie der Titel beschreibt, was sind die verschiedenen doctypes, und was bedeuten Sie?Ich merke, dass das layout sieht ein wenig anders in IE7, wenn ich Schalter von

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

zu

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Gibt es irgendwelche andere und was sind die Effekte oder Auswirkungen?

Vielen Dank!

War es hilfreich?

Lösung

Doctype oder Document Type Declaration ordnet das Dokument mit einer Document Type Definition .

Die Document Type Definition ist ein Standard für ein XML-Dokument. Es gibt viele DTDs für beide XML und XHTML-Dokumente. XML selbst nicht viel von einem Schema oder einen ganz bestimmten Satz von Regeln, mit Ausnahme der Bedingung, dass alles gut ausgebildet sein. Sie können als ein spezifischere Schema für das Dokument aus einer DTD denken .

Rendering-Modi

Durch die Standards Bewegung, die meisten modernen Browser haben tatsächlich verschiedene Darstellungsmodi ( Standards-Modus , für die Darstellung Ihres Dokuments und CSS nach neueren Web-Standards und Quirks-Modus , wobei bringt der Browser einige Rendering-Ideen aus den frühen Tagen des Webs) zurück. Diese Modi werden für die Zwecke der Abwärtskompatibilität eingeleitet. Die weite Landschaft von Web-Seiten, die in der ersten Ära der Bahn erstellt wurden, wird nach den Regeln ihrer Zeit gemacht, während neuere Dokumente auf die neue Welle von Standards ansprechen können. Im Laufe der Zeit und neue Formate vorgestellt, könnte eine entsprechende DTD potenziell erzeugt werden.

Browser Abweichungen

In einer idealen Welt, eine Seite, die von einem Browser geladen wird würde die Doctype an der Spitze lesen und es verwendet, eine Document Type Definition nachschlagen. Es wäre dann das Schema dieser DTD als Grundlage verwenden, um den Rest des Dokuments zu lesen. Doctypes, wäre dann wesentlich für Markup Dokumente zu validieren. Die DTD würde den Standard bereitzustellen, gegen das Dokument validiert werden soll.

Leider ist es keine ideale Welt. Browser verhalten sich nicht unbedingt konsequent hier, und wenn sie es tun, das ein konsistentes Verhalten ist nicht ganz im Einklang mit der ursprünglichen Vision für Doctypes. Obwohl Parsing unabhängig von der Doctype getan wird, werden zumindest gängige Browser die Doctype untersuchen den Rendering-Modus zu bestimmen. Wenn Ihr Doctype fehlt oder unvollständig ist, wird der Browser wahrscheinlich zu machen sein, Quirks-Modus . Für gut geschriebene, moderne Dokumente korrekt angezeigt werden soll, sollte der Browser Rendering in Standardmodus werden. Mozilla, Safari und einige neuere Versionen von Opera tatsächlich ein Fast Standards Modus, der vollständig auf Übergangs-Seiten gewidmet ist.

Wenn Sie die Doctype und Ankündigung Änderungen in der Art und Weise ändern, eine Seite angezeigt wird, ist es, weil der Browser eine etwas andere Regeln anwenden können, wenn es um das Dokument zu analysieren versucht. Als Folge kann die resultierende Seite ein wenig anders sein, je nachdem, ob alle seine Teile auf die DTD entsprechen, oder zumindest, je nach Browser, dass Ihre Daten innerhalb des Rendering-Modus bestätigt, dass die Doctype vermuten lassen.

Die Wahl eines Doctype

Bei der Verfolgung der Normen eingehalten, strenger Doctypes verwendet werden soll, wann immer möglich.

Beim Schreiben in XHTML , dieses Doctype ist gemeinsam:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Beim Schreiben in HTML 4.1 , das ist eine gemeinsame Stelle:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

Einige andere gebräuchliche doctypes für XHTML und HTML 4 sind hier aufgeführt, der Vollständigkeit halber:

<!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 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.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 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">

Debatte über Strenge gegen Transitional Doctypes

Standards Evangelisten hat für Web-Entwickler genannt mit dem Transitional Doctype auf neue Seiten zu stoppen und stattdessen Strict verwenden. Auch dies ist ein Fall, in dem die Theorie und die Praxis haben werden einige Schwierigkeiten in Einklang gebracht. Die ursprüngliche Hoffnung des Übergang Doctype war für den Übergang ältere Websites zu standard Einhaltung eine Zwischenstation zur Verfügung zu stellen. Mit Übergang doctypes, die BeschränkungElemente und Attribute sind buchstäblich „weniger streng“, so wären in der Lage der Entwickler ihre Arbeit bekommen früher unter Standardmodus ausgeführt wird, und die herausragenden Unterschiede im Laufe der Zeit auslaufen zu lassen.

Streit gibt es, weil es nicht immer ganz so einfach für einen Entwickler des Doctype in einer Unternehmensumgebung ändern. Freiberuflicher Entwickler und Hersteller von kleinen oder mittelgroßen Websites haben kann oft leichter ihre Doctype zu bestimmen und diesen Übergang zu machen. In einer Unternehmen Produktionsumgebung für einen hoch verlangten webbasierter Dienst, gibt es von Natur aus komplizierten Abhängigkeiten von Legacy-Systemen und 3rd-Party-Code-Produkten, die sie über einen Fahrplan zur Entfernung oder Redesign sein können, aber die Ausführung solcher Änderungen muß getan methodisch und schrittweise.

Hilfreiche Tools

Das W3C ( World Wide Web Consortium ) ist eine Gruppe die eine aktive Rolle spielt diese Art von Standards zu definieren. Sie halten ein hilfreiches Online-Tool unter http://validator.w3.org/ für die Überprüfung und Dokumente gegen ihre Standards zu validieren. Es gibt viele andere 3rd-Party-Tools und Browsererweiterungen mit ähnlicher Funktionalität.

Andere Tipps

Browser don ' T care welchen doctype Sie verwenden (na ja, fast wahr), verwenden Sie es für eine Sache und eine Sache nur:um zu entscheiden, welche render-Modus zu verwenden.Siehe z.B.die Fx oder Opera Dokumentation für real-world-Beispiele an, welche algorithmen verwendet, um zu entscheiden, welcher Modus zu verwenden (ich denke, es gibt einige Dokumentationen für IE irgendwo begraben in der MSDN zu ...[Dies ist möglicherweise die richtige Seite](http://msdn.microsoft.com/en-us/library/ms535242(VS.85).aspx), Ich weiß es nicht, sorry).

Es gibt jedoch zwei wichtige Modi in den meisten Browsern (einige Browser haben ein beinahe-standards-Modus zu):

  • quirks-Modus (wird verwendet, wenn keine "richtige" doctype-Element gefunden wird, "richtig" aus der Browser-point-of-view):versuchen Sie, um das Dokument zu machen, wie einige alte version von Internet Explorer tun würde (einer der wichtigsten Unterschiede, d.h.die Darstellung beeinflusst die meisten, ist, dass einige Browser nutzt die IE-box-Modell-Fehler in diesem Modus),
  • und standard-Modus (wird verwendet, wenn der browser gefunden doctype Auffassung richtig ist):versuchen, zu tun, wie die standards, sagt.

Sie verwenden können (nicht-standard) document.compatMode Eigenschaft in der oben genannten Browser, um zu überprüfen, welcher Modus verwendet wurde, um das Rendern des aktuellen Dokuments.

(Hinweis auf XHTML:Ich nahm an, Sie zu dienen Sie Dokumente als HTML (text/html), wenn Sie dienen Sie Dokument als XHTML (wahrscheinlich application/xhtml+xml) die meisten browser springt ins standard-Modus direkt und kümmern sich nicht um das doctype-Element, überhaupt, soweit ich weiß.)

BTW:die Empfehlung (oder, was aussah wie eine Empfehlung), die in der anderen Antwort ist gebrochen, die transitional DTD sollte nicht verwendet werden auf neue Dokumente.Verwenden Sie immer strenge (der Begriff "strict" ist irgendwie irreführend, sollte "Standard" oder etwas anderes nicht beängstigend), Zeitraum:

Autoren sollten die Strict DTD, wenn möglich, kann aber verwenden Sie die Transitional DTD, wenn die Unterstützung für Präsentationen attribute und Elemente erforderlich ist.-- HTML 4.01:22 Transitional Document Type Definition.

Wir empfehlen, dass Autoren schreiben, Dokumente entsprechen den strengen DTD anstatt auf der anderen DTDs definiert, die von dieser Spezifikation.-- HTML 4.01:4 Konformität:Anforderungen und Empfehlungen

Und es gibt viele blog-post über diese, z.B. nicht mehr Transitional DOCTYPEs, bitte (aus 2006, aber einige, offensichtlich haben noch immer Probleme mit diesem :).

Dieser Beitrag begann mit dem Hinweis darauf, dass Browser nicht egal, was Sie wählen, und dann entwickelt in eine Tirade darüber, wie wählen Sie die richtige DTD, interessant ...Aber wenn du gehst zu verbringen(/Abfall?) Zeit und Energie, um wählen Sie eine DTD-Sie könnte genauso gut wählen Sie die richtige (aus einer HTML 4.01 standard-Perspektive).

Oder, Sie können das alles ignorieren und verwenden Sie die folgenden stattdessen bald eh:

<!doctype html>

(Diese Antwort "jeden Grund, nicht zu starten, verwenden Sie die HTML 5-doctype?" war eine Art von Zusammenhang mit dem letzten Teil.)

Hier ist die offizielle Erklärung der verschiedenen DTDs vom W3C:

http://www.w3.org/QA/2002/04/valid-dtd-list .html

Sie können auch finden folgende vorteilhaft:

http://www.freedivs.com/tutorials/Choosing%20a%20DOCTYPE/

Es gibt eine Menge von Fehlinformationen rund um doctypes. Die Verwirrung rührt von der Tatsache, dass DOCTYPEs ursprünglich für einen bestimmten Zweck gedacht war (die DTD zu identifizieren, dh. Die HTML-Version verwendet wird), aber in der realen Welt ist Browser für einen völlig anderen Zweck verwendet werden.

Doctype-Deklarationen nur verwendet werden, für die eine Sache in der heutigen Browsern, das heißt Umschalten zwischen Macken Rendering-Modus und Standards Rendering-Modus für CSS. Also im Grunde ist es ein CSS-Ding, keine HTML-Sache.

Quirksmodus Rendering ist rückwärtskompatibel mit einigen alten Rendering Bugs in älteren Browsern, und ist vor allem nützlich für die Legacy-Inhalte, die Sie wollen beheben nicht. Neue Inhalte sollten immer Standards-Modus verwenden, da es mehr richtig und konsequent unter Browsern macht. (Es gibt immer noch Unterschiede zwischen den Browsern zu machen, wenn Standards-Modus verwenden, aber es gibt viel schlimmer im Quirks-Modus.)

Es hat nicht macht keinen Unterschied, ob Sie einen HTML oder XHTML docytype wählen, weder wird es keinen Unterschied machen, wenn Sie streng oder Übergang Doctype wählen. Der Rendering-Modus ist im Grunde wie folgt gewählt:

  • Wenn das Dokument keine Doctype haben, Macken Modus ausgewählt ist.
  • Wenn das Dokument hat einen unerkannt Doctype, Standards Modus ausgewählt ist. Dies bedeutet, dass Sie eine zufällige Doctype wie <!DOCTYPE Chris> schreiben können und es wird funktionieren völlig in Ordnung.
  • Offizielle W3C doctypes ohne die korrekte URL (die zweite Zeichenfolge im Tag) wählt Macken Modus. Alle anderen doctypes wählt Standards-Modus. (Edit: Natürlich ist es komplizierter als das, und sie unterscheidet sich auch zwischen den Browsern, die von den anerkannten doctypes Quirks-Modus löst Se hsivonens Überblick , aus einer anderen Antwort verknüpft.)

Historisch doctypes wurden bestimmt, welche Version und Teilmenge von HTML zu erklären, verwendet wurden. HTML4 definiert mehrere Versionen, wobei „Übergang“ eine Anzahl von Elementen ermöglicht ans Attribute, die (wie FONT) in „strengen“ nicht erlaubt. Ein Browser könnte theoretisch „streng“ Dokumente anders als „Übergang“ -Dokument verarbeiten. Allerdings kein Browser tatsächlich tut dies .

Edit: scunliffe weist darauf hin, dass IE8 noch eine andere Rendering-Modus haben wird "IE8-Standards" -Modus. Jedoch AFAIK ist dieser Modus nicht durch einen Doctype ausgelöst, sondern durch einen Meta-Tag.

Grundsätzlich bestimmt der Doctype, wie verrückt IE sein wird.

Wenn Sie legen Sie es nicht auf XHTML, oder „streng“ Sie in einer Welt des Schmerzes leben werden, wenn es um IE kommt (auch wenn Sie es einrichten, werden Sie noch auf IE werden zu hassen, aber es macht es viel besser).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top