Este documento describe cómo Mozilla utiliza el declaración de DOCTYPE para determinar si utilizar el modo estricto o el. El código que toma la decisión está actualmente en DetermineParseMode() in nsParser.cpp. Vea los bug 1312 y bug 55264 para saber más sobre la historia de la selección del modo. Vea el bug 153032 sobre la creación del modo Casi-Estándar en Mozilla 1.0.
Las metas que indujeron a elegir este comportamiento fueron las siguientes::
- Casi todas las páginas existentes de
text/html
en la web que necesiten estar en el modo quirks para visualizarse correctamente deben exhibirse usando el modo quirks. (Almost all, rather than all, to allow for the following points as well.) - Los autores que escriben páginas web según los estándares actuales deben poder activar el modo estricto.
- Cualquier página escrita usando un identificador público en las declaraciones de DOCTYPE que aparezcan en el futuro deberán exhibirse usando el modo estricto.
En otras palabras, el algoritmo es la mejor aproximación que podemos encontrar para determinarse qué páginas fueron escritas después de que Mozilla se convirtiese en un 'agente de usuario' importante en la Web.
Modo Estándar Completo
Lo siguiente activa el modo estándar completo:
- Cualquier documento enviado con un tipo MIME de XML como son:
text/xml
,application/xml
, oapplication/xhtml+xml
(la selección del modo solo se aplica a documentos enviados como text/html). - Cualquier "DOCTYPE HTML SYSTEM" sin un "DOCTYPE HTML PUBLIC", excepto para el doctype de IBM indicado mas abajo.
- Una declaración de DOCTYPE sin DTD, i.e., <!DOCTYPE HTML>.
- Una declaración de DOCTYPE con un subconjunto interno.
- Un doctype desconocido, incluyendo los siguentes doctypes (tecnicamente conocidos):
- El identificador público "-//W3C//DTD HTML 4.01//EN".
- El identificador público "-//W3C//DTD HTML 4.0//EN".
- El identificador público "-//W3C//DTD XHTML 1.0 Strict//EN".
- El identificador público "ISO/IEC 15445:2000//DTD HyperText Markup Language//EN".
- El identificador público "ISO/IEC 15445:2000//DTD HTML//EN".
- El identificador público "-//IETF//DTD HTML i18n//EN".
Modo casi estándar
Lo siguiente activa el modo casi estándar. el fue creado entre (1.0 y 1.1alpha) y (1.0.1 y 1.1beta). Antes de su creación estos DOCTYPE activaban el modo estándar completo.
- El identificador público "-//W3C//DTD XHTML 1.0 Transitional//EN".
- El identificador público "-//W3C//DTD XHTML 1.0 Frameset//EN".
- El identificador público "-//W3C//DTD HTML 4.01 Transitional//EN", con identificador de sistema.
- El identificador público "-//W3C//DTD HTML 4.01 Frameset//EN", con identificador de sistema.
Modo Quirks
Lo siguiente activa el modo quirks (esta lista necesita ser completa para garantizar que todas las páginas ya existentes en la www pueden activar el modo quirks):
En la elaboración de esta lista han sido utilizados los siguientes sitios: W3C HTML Validator, HTMLHelp HTML Validator.
- la ausencia de DOCTYPE.
- Una declaración XML (pseudo-PI) sin doctype (osea, ignora la declaración XML y usa el DOCTYPE). En 1.0 y 1.1alpha o superior (Pero no en 1.0.1 o 1.1beta), la presencia de una declaración XML activa el modo estándar completo.
- Una declaración de DOCTYPE que no puede ser entendida (Ejemplo: comillas desparejadas).
- El identificador público "https://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd" (Antes de 1.5b y 1.4.2, esto activaba el Modo casi estándar).
- El identificador público "-//W3C//DTD HTML 4.01 Transitional//EN", sin identificador de sistema.
- El identificador público "-//W3C//DTD HTML 4.01 Frameset//EN", sin identificador de sistema.
- El identificador público "-//W3C//DTD HTML 4.0 Transitional//EN" (vea también test with a system identifier).
- El identificador público "-//W3C//DTD HTML 4.0 Frameset//EN" (vea también test with a system identifier).
- El identificador público "-//SoftQuad Software//DTD HoTMetaL PRO 6.0::19990601::extensions to HTML 4.0//EN".
- El identificador público "-//SoftQuad//DTD HoTMetaL PRO 4.0::19971010::extensions to HTML 4.0//EN".
- El identificador público "-//IETF//DTD HTML//EN//3.0".
- El identificador público "-//W3O//DTD W3 HTML 3.0//EN//".
- El identificador público "-//W3O//DTD W3 HTML 3.0//EN".
- El identificador público "-//W3C//DTD HTML 3 1995-03-24//EN".
- El identificador público "-//IETF//DTD HTML 3.0//EN".
- El identificador público "-//IETF//DTD HTML 3.0//EN//".
- El identificador público "-//IETF//DTD HTML 3//EN".
- El identificador público "-//IETF//DTD HTML Level 3//EN".
- El identificador público "-//IETF//DTD HTML Level 3//EN//3.0".
- El identificador público "-//IETF//DTD HTML 3.2//EN".
- El identificador público "-//AS//DTD HTML 3.0 asWedit + extensions//EN".
- El identificador público "-//AdvaSoft Ltd//DTD HTML 3.0 asWedit + extensions//EN".
- El identificador público "-//IETF//DTD HTML Strict//EN//3.0".
- El identificador público "-//W3O//DTD W3 HTML Strict 3.0//EN//".
- El identificador público "-//IETF//DTD HTML Strict Level 3//EN".
- El identificador público "-//IETF//DTD HTML Strict Level 3//EN//3.0".
- El identificador público "HTML".
- El identificador público "-//IETF//DTD HTML//EN".
- El identificador público "-//IETF//DTD HTML//EN//2.0".
- El identificador público "-//IETF//DTD HTML 2.0//EN".
- El identificador público "-//IETF//DTD HTML Level 2//EN".
- El identificador público "-//IETF//DTD HTML Level 2//EN//2.0".
- El identificador público "-//IETF//DTD HTML 2.0 Level 2//EN".
- El identificador público "-//IETF//DTD HTML Level 1//EN".
- El identificador público "-//IETF//DTD HTML Level 1//EN//2.0".
- El identificador público "-//IETF//DTD HTML 2.0 Level 1//EN".
- El identificador público "-//IETF//DTD HTML Level 0//EN".
- El identificador público "-//IETF//DTD HTML Level 0//EN//2.0".
- El identificador público "-//IETF//DTD HTML Strict//EN".
- El identificador público "-//IETF//DTD HTML Strict//EN//2.0".
- El identificador público "-//IETF//DTD HTML Strict Level 2//EN".
- El identificador público "-//IETF//DTD HTML Strict Level 2//EN//2.0".
- El identificador público "-//IETF//DTD HTML 2.0 Strict//EN".
- El identificador público "-//IETF//DTD HTML 2.0 Strict Level 2//EN".
- El identificador público "-//IETF//DTD HTML Strict Level 1//EN".
- El identificador público "-//IETF//DTD HTML Strict Level 1//EN//2.0".
- El identificador público "-//IETF//DTD HTML 2.0 Strict Level 1//EN".
- El identificador público "-//IETF//DTD HTML Strict Level 0//EN".
- El identificador público "-//IETF//DTD HTML Strict Level 0//EN//2.0".
- El identificador público "-//WebTechs//DTD Mozilla HTML//EN".
- El identificador público "-//WebTechs//DTD Mozilla HTML 2.0//EN".
- El identificador público "-//Netscape Comm. Corp.//DTD HTML//EN".
- El identificador público "-//Netscape Comm. Corp.//DTD HTML//EN".
- El identificador público "-//Netscape Comm. Corp.//DTD Strict HTML//EN".
- El identificador público "-//Microsoft//DTD Internet Explorer 2.0 HTML//EN".
- El identificador público "-//Microsoft//DTD Internet Explorer 2.0 HTML Strict//EN".
- El identificador público "-//Microsoft//DTD Internet Explorer 2.0 Tables//EN".
- El identificador público "-//Microsoft//DTD Internet Explorer 3.0 HTML//EN".
- El identificador público "-//Microsoft//DTD Internet Explorer 3.0 HTML Strict//EN".
- El identificador público "-//Microsoft//DTD Internet Explorer 3.0 Tables//EN".
- El identificador público "-//Sun Microsystems Corp.//DTD HotJava HTML//EN".
- El identificador público "-//Sun Microsystems Corp.//DTD HotJava Strict HTML//EN".
- El identificador público "-//IETF//DTD HTML 2.1E//EN".
- El identificador público "-//O'Reilly and Associates//DTD HTML Extended 1.0//EN".
- El identificador público "-//O'Reilly and Associates//DTD HTML Extended Relaxed 1.0//EN".
- El identificador público "-//O'Reilly and Associates//DTD HTML 2.0//EN".
- El identificador público "-//SQ//DTD HTML 2.0 HoTMetaL + extensions//EN".
- El identificador público "-//Spyglass//DTD HTML 2.0 Extended//EN".
- El identificador público "+//Silmaril//DTD HTML Pro v0r11 19970101//EN".
- El identificador público "-//W3C//DTD HTML Experimental 19960712//EN".
- El identificador público "-//W3C//DTD HTML 3.2//EN".
- El identificador público "-//W3C//DTD HTML 3.2 Final//EN".
- El identificador público "-//W3C//DTD HTML 3.2 Draft//EN".
- El identificador público "-//W3C//DTD HTML Experimental 970421//EN".
- El identificador público "-//W3C//DTD HTML 3.2S Draft//EN".
- El identificador público "-//W3C//DTD W3 HTML//EN".
- El identificador público "-//Metrius//DTD Metrius Presentational//EN".
Tenga en cuenta que todas las comparaciones de los identificadores públicos son insensibles a mayúsculas o minúsculas (técnicamente esto es incorrecto, puesto que las cadenas sí son sensibles). Esto se hace así por el gran número de páginas con identificadores públicos en los que se usan mal.
Ver más
Información sobre el Documento Original
- Author(s): David Baron
- Last Updated Date: August 2, 2005
- Copyright Information: Copyright (C) David Baron