Doctype en mayúsculas o minúsculas?


182

Al escribir el doctype HTML5, ¿cuál es el método correcto?

<!DOCTYPE html>

o

<!doctype html>

Por lo general, será el primero, aunque puede usarse cualquiera <! DOCTYPE html>
Shadow

Logré responder mi propia pregunta, pero pensé que lo dejaría en caso de que otros tuvieran un pensamiento similar. Yo personalmente prefiero minúsculas; nada más en HTML5 es mayúscula.
Josh

11
Google.com usa minúsculas<!doctype html>
Leo Galleguillos

3
@HelloWorld: Eso se debe a que las letras minúsculas se comprimen mejor porque son más comunes. Para los sitios que reciben millones de visitas al día, esto puede marcar la diferencia.
Zaz

¿Qué pasa con los archivos SVG?
William Entriken

Respuestas:


183

En HTML, el DOCTYPE no distingue entre mayúsculas y minúsculas. Los siguientes DOCTYPE son válidos:

<!doctype html>
<!DOCTYPE html>
<!DOCTYPE HTML>
<!DoCtYpE hTmL>

En las serializaciones XML (es decir, XHTML), el DOCTYPE no es obligatorio, pero si lo usa, DOCTYPEdebe estar en mayúscula:

<!DOCTYPE html>

Consulte La serialización XML de HTML5, también conocida como 'XHTML5' :

Tenga en cuenta que si no escribe DOCTYPEen mayúsculas en un documento XHTML, el analizador XML devolverá un error de sintaxis.

La segunda parte se puede escribir en minúsculas ( html), mayúsculas ( HTML) o incluso mayúsculas y minúsculas ( hTmL): seguirá funcionando. Sin embargo, para cumplir con las Directrices de marcado de Polyglot para documentos XHTML compatibles con HTML , debe escribirse en minúsculas.


9
No, esto es incorrecto. En SGML, la declaración de tipo de documento es producción 110, en XML es producción 28. En ambos casos se declara como la cadena fija "DOCTYPE" (que no es una etiqueta , es una palabra clave ). Entonces, en las definiciones canónicas en los respectivos estándares SGML y XML, siempre es mayúscula. Si encuentra software que permite un "doctype" en minúsculas, ese software no cumple con los estándares. Los navegadores están diseñados para ser "liberales en lo que aceptan", pero un procesador XML compatible debe marcar esto como un error de validación.
Ichiro Furusato

55
... y debo señalar que X / HTML5 también es incorrecto en esto. Como se especifica, XHTML5 simplemente no es un marcado XML válido, ni puede serlo. Existen numerosos errores en la especificación X / HTML5. No me lo tomo muy en serio. El hecho de que tuvieran que crear un " marcado políglota " (un concepto completamente nuevo) claramente dice que han lanzado un juego de palabras.
Ichiro Furusato

20
@Ichiro estoy hablando de HTML, no de SGML. Ningún navegador ha implementado SGML. Si lo hicieran, <title/foo/sería equivalente a <title>foo</title>. Solo unos pocos validadores HTML usan SGML. La especificación HTML5 es la primera en aclarar esto: whatwg.org/specs/web-apps/current-work/multipage/…
Mathias Bynens

2
@ TestSubject528491 Ese párrafo trata sobre la segunda parte de DOCTYPE ( html). Aquí está la oración completa: “La segunda parte se puede escribir en minúsculas ( html), mayúsculas ( HTML) o incluso mayúsculas y minúsculas ( ), hTmLaún funcionará. Sin embargo, para cumplir con las Directrices de marcado de Polyglot para documentos XHTML compatibles con HTML, debe escribirse en minúsculas ".
Mathias Bynens

15
@IchiroFurusato Es posible que desee leer en HTML5 . Cita: "Sin embargo, a diferencia de las versiones anteriores de HTML, la serialización HTML [5] ya no se considera una aplicación de SGML, sino que define su propia sintaxis. Si bien la sintaxis está inspirada en SGML, se está definiendo de una manera que se asemeja más a la forma en que los navegadores realmente manejan HTML en el mundo real, particularmente en lo que respecta al manejo de errores ".
Mathias Bynens

40

Si alguien todavía se pregunta en 2014, consulte esto:

HTML5

W3 HTML5 Spec - Doctype

Un DOCTYPE debe constar de los siguientes componentes, en este orden:

1. A string that is an ASCII case-insensitive match for the string "<!DOCTYPE".
...

Nota: a pesar de mostrarse en mayúsculas, la especificación indica que es insensible

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

XHTML5

W3 HTML5 - XHTML

This specification does not define any syntax-level requirements 
beyond those defined for XML proper.

XML documents may contain a DOCTYPE if desired, but this is not required 
to conform to this specification. This specification does not define 
a public or system identifier, nor provide a formal DTD.

Mirando la especificación XML, enumera DOCTYPE en mayúsculas, pero no puedo encontrar nada que indique que se requieren 'todas las mayúsculas' (en comparación, en la especificación HTML5 enumerada anteriormente, se muestra en el ejemplo en mayúsculas, pero la especificación establece explícitamente que no distingue entre mayúsculas y minúsculas ).

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

Marcado políglota

W3 Polyglot Markup - Introducción

A veces es valioso poder servir documentos HTML5 que también son documentos XML bien formados.

W3 Polyglot Markup - Doctype

El marcado Polyglot utiliza una declaración de tipo de documento (DOCTYPE) especificada en la sección 8.1.1 de [HTML5]. Además, el DOCTYPE cumple con las siguientes reglas:

* The string DOCTYPE is in uppercase letters.

Entonces, tenga en cuenta que Ployglot Markup usa un doctype HTML5 regular, pero con adiciones / cambios. Para nuestra discusión, lo más notable es que DOCTYPE se declara en mayúsculas .

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

Suma

Ver la sección HTML vs. XHTML del W3

[Opinión] No me preocuparía demasiado por cumplir con el cumplimiento de XML a menos que esté tratando específicamente de tenerlo en cuenta. Para la mayoría del desarrollo de clientes y servidores basados ​​en JS, JSON ha reemplazado a XML.

Por lo tanto, solo puedo ver que esto realmente se aplica si está tratando de actualizar un sistema heredado existente basado en xhtml / xml para que coexista con la nueva funcionalidad HTML5. Si este es el caso, busque en la especificación de marcado políglota.


18

De acuerdo con la última especificación , debe usar algo que no coincida con mayúsculas y minúsculas <!DOCTYPE html>. Entonces, aunque los navegadores deben admitir cualquier caso que prefiera, es razonable inferir de esto que <!DOCTYPE html>es el caso canónico.


3
La especificación establece claramente que doctype debe contener una cadena que sea el equivalente entre mayúsculas y minúsculas de '<! DOCTYPE', lo que implica que '<! DOcTyPe' es igual de correcto.
joshnh

66
Como dije, la especificación requiere que los navegadores admitan cualquier caso, por lo que cualquier caso funcionará. Pero el que hace la pregunta claramente está buscando una forma canónica estándar, por lo que en ausencia de fuertes razones para elegir una sobre la otra, también puede usar el caso de ejemplo de la especificación ...
John Mellor

9
La especificación lo escribe constantemente como <!DOCTYPE html>, por lo tanto, sería razonable inferir que el autor de la especificación tiene una ligera preferencia por esa capitalización en particular. Voy a usar la misma capitalización que la especificación, ya que es bueno que estas cosas sean consistentes, pero si lo prefieres, <!dOcTyPeentonces sé mi invitado :)
John Mellor

3
@joshnh No entiendo tu confusión. 1) Se requiere que la declaración DOCTYPE no distinga entre mayúsculas y minúsculas. 2) La especificación HTML5 utiliza la mayúscula "DOCTYPE html" en sus ejemplos. Todo lo que parece decir esta respuesta es que una capitalización es consistente con la literatura, incluso si todas son válidas. ¿Por qué es tan indignante?

2
Creo que @joshnh entendió mal lo que John estaba tratando de decir. FWIW, estoy de acuerdo con el sentimiento de John de que, en ausencia de una razón particular para formatear de cierta manera, es preferible seguir lo que la especificación pide que los navegadores verifiquen. John nunca trató de dar a entender que es más correcto, solo que es algo en lo que basar su preferencia; de lo contrario, es una elección completamente arbitraria, ¿verdad?
Ryan Williams

7

Cualquiera de las mayúsculas o minúsculas es "correcta". Sin embargo, si usa fuentes web y se preocupa por IE7, recomendaría usarlo <!DOCTYPE html>debido a un error en IE7 donde las fuentes web a veces fallan si se usan <!doctype html>(por ejemplo, en esta respuesta ).

Es por eso que siempre escribo en mayúsculas el doctype.


6

El estándar para HTML5 es que las etiquetas no distinguen entre mayúsculas y minúsculas.

http://www.w3schools.com/html5/tag_doctype.asp

Más técnicamente: ( http://www.w3.org/TR/html5/syntax.html )

Un DOCTYPE debe constar de los siguientes componentes, en este orden:

  1. Una cadena que es una coincidencia entre mayúsculas y minúsculas ASCII para la cadena <!DOCTYPE.

35
No confío en W3Schools al 100%, no están afiliados al W3C y aunque la mayoría de su información es buena, parte de ella no lo es.
joshnh

Esto es bastante conocido: aquí está el enlace w3.org
Stephen

44
W3Schools no tiene más o menos errores que otros sitios web. ( Ejemplo completamente al azar ) Tome la información con un grano de sal, consulte las páginas de w3.org cuando tenga dudas, y estará bien. Los verdaderos tontos son aquellos que creen que W3Schools es un organismo oficial o que sus certificados significan algo.
Sr. Lister

8
@MrLister: No creo que sea justo llamar tontos a las personas porque piensan que hay un vínculo entre algo llamado "W3Schools" y algo llamado "W3C". Los dos son lo suficientemente similares en nombre y dominio como para causar confusión, y la suposición de que el primero está de alguna manera respaldado o relacionado con el segundo. Esa es claramente la intención de W3Schools, que es una de las razones por las que enojan a tantas personas que entienden el problema. El hecho de que gran parte de su información sea inexacta agrava el problema (es decir, podría ser un poco perdonable si realmente brindaran un servicio razonable)
Bobby Jack

El enlace a tag_doctype.aspno es válido (404) y esta pregunta es sobre la doctypedeclaración, que no es una etiqueta ... De todos modos, la conclusión es correcta: en HTML5, la palabra clave doctypepuede estar en mayúscula, minúscula o mixta.
Abel

3

La pregunta implica que solo hay una respuesta correcta, proporciona una opción múltiple de dos y nos pide que elijamos una. Sugeriría que para HTML5 tanto <!DOCTYPE html>y<!doctype html> son válidos.

Por lo tanto, un navegador compatible con HTML5 aceptaría el minúsculo y procesaría el html correctamente.

Escuché que los navegadores anteriores y ajenos a HTML5, incluso sin un doctype, intentarán procesar el html lo mejor que puedan. Y si no reconocen el doctype en minúscula, harán lo mismo. Por lo tanto, no tiene sentido hacerlo en mayúsculas ya que esos navegadores no podrán implementar completamente ninguna declaración HTML5 de todos modos.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.