¿Necesita cerrar meta y vincular etiquetas en HTML?

133

Estaba leyendo el HTML de alguien que nunca cerró metaetiquetas y enlaces en la sección de encabezado HTML. El código funcionó bien; ¿es opcional cerrar estas etiquetas?

Pensé que sería malformado si una etiqueta no se cerraba.

bcollins
fuente

Respuestas:

167

Una etiqueta siempre debe estar cerrada por el símbolo de cierre de etiqueta> (si ignoramos ciertas reglas SGML que se aplican nominalmente en HTML que no es XHTML pero que nunca se implementaron en los navegadores).

Lo que quiere preguntar es si los elementos deben cerrarse con etiquetas finales. La respuesta es que no XHTML HTML (incluyendo HTML5 en HTML serialización), se requiere o se deja sin ninguna etiqueta de cierre metay linkelementos. Sin embargo, en la práctica, los navegadores simplemente ignoran las etiquetas finales explícitas para ellos, así como el culto de carga /anterior >, si los usa. Y HTML5 convierte esta permisividad en una regla al permitir formalmente también la /serialización en HTML.

En XHTML, se aplican las reglas XML, por lo que cada elemento, sin excepción, debe tener una etiqueta de inicio y una etiqueta de finalización, pero se puede usar la misma etiqueta para ambos roles si el contenido del elemento está vacío, por ejemplo <meta name="foo" content="bar"/>, para abreviar<meta name="foo" content="bar"></meta> . Si viola esto al entregar un documento con un tipo de contenido XML (XHTML) a un navegador conforme, entonces su documento no se muestra en absoluto; se muestra un mensaje de error en su lugar.

Cuando se utiliza un servidor XHTML con el tipo de contenido HTML ( Content-Type: text/html), ya que los documentos XHTML casi siempre están en la web, los navegadores en realidad aplicarán las reglas HTML que no sean XHTML.

Para resumir:

  • normalmente, use solo <meta ...>sin/
  • si realmente está utilizando XHTML en un contexto donde el análisis XHTML se aplica realmente, juegue con reglas XML (y asegúrese de conocerlas)
  • si tu jefe te dice que escribas <meta ... />, hazlo; no es útil, pero no causa ningún daño (excepto si intenta validar, por ejemplo, con el doctype HTML 4.01).
Jukka K. Korpela
fuente
3
el uso de /> causó un problema en el que el robot de Google no reconocía la etiqueta de meta robots. ¡¡¡extraño!!!
DevZer0
13
El término "culto a la carga" me parece inapropiado en este contexto. Algunas personas cierran esos elementos, simplemente porque reprimen que XHTML no prevaleció.
Marcus
66
Alerta pendiente! "Culto a la carga" no se separa con guión en la práctica normal, sino solo cuando se usa la frase completa como adjetivo a otra cosa (es decir, "programación de culto a la carga", "culto a la carga /antes >"). Solo pensé en aclarar para evitar enturbiar Internet con más confusión. </pedant_alert>:)
Aaron Wallentine
1
@ DevZer0: ¿estás seguro de que la barra fue la causa? Esperaría que Google sea flexible con cosas como esas.
Simon East
3
¿No es su HTML coherente con las reglas XHTML una razón para incluir / before>?
Kyle Delaney
28

Depende del doctype. HTML5 no necesita el cierre. XHTML lo hace.

En HTML5, los llamados elementos vacíos (elementos que no pueden tener contenido) no necesitan el cierre, ya que son de cierre automático. Pero sigue siendo válido si los cierra.

Lea más sobre esto aquí: void-elements

Sebsemillia
fuente
44
HTML5 tiene dos serializaciones, y una de ellas (serialización XHTML) hace que las etiquetas finales sean obligatorias.
Jukka K. Korpela