que - style html
Cargando DOM desde HTML: ¿Cómo sabe un analizador HTML cuando un elemento vacío termina? (2)
Entonces, un analizador de HTML tiene una lista finita de elementos que pueden estar vacíos.
Sí. Los analizadores de HTML conocen las reglas para HTML, y esas reglas dicen qué elementos no tienen etiqueta final (o etiquetas finales opcionales).
Por ejemplo:
Una etiqueta de inicio cuyo nombre de etiqueta es uno de: "area", "br", "embed", "img", "keygen", "wbr"
...
Inserte un elemento HTML para el token. Inmediatamente saque el nodo actual de la pila de elementos abiertos.
¿Qué pasa si tal elemento tiene una etiqueta final?
Entonces no es válida y, como cualquier otra etiqueta final para una etiqueta que no está abierta, la etiqueta se descarta cuando el analizador la alcanza.
Si el nodo no es el nodo actual, este es un error de análisis.
En XML, los elementos vacíos tienen una etiqueta correspondiente marcada con />. Pero eso no está presente en HTML. Entonces, un analizador de HTML tiene una lista finita de elementos que pueden estar vacíos. ¿Qué pasa si tal elemento tiene una etiqueta final?
Hay etiquetas en html que tienen una etiqueta de cierre y una que no la tienen. Y es más confuso después de la introducción de HTML5. Después de mucha investigación, esto es lo que encontré hasta ahora. Espero que lo entiendas :)
un analizador HTML tiene una lista finita de elementos que pueden estar vacíos.
Respuesta: Sí, los analizadores HTML tienen una lista finita de elementos vacíos. El analizador tiene ciertas reglas para analizar e ignorará las etiquetas vacías.
Estos son los elementos que pueden estar vacíos. (Fuente: - documentación de Mozilla
<link>
<track>
<param>
<area>
<command>
<col>
<base>
<meta>
<hr>
<source>
<img>
<keygen>
<br>
<wbr>
<colgroup> when the span is present
<input>
En HTML, el uso de una etiqueta de cierre en un elemento vacío no es válido. Por ejemplo, <input type="text"></input>
no es HTML válido y el analizador ignorará esas etiquetas.
Los "elementos vacíos (elementos vacíos)" se introdujeron en HTML por error: el formato de presentación se introdujo en el lenguaje, en contra del espíritu de SGML y con algunas implicaciones sintácticas extrañas. Este error fundamental ha causado algunos problemas técnicos, como una discrepancia involuntaria entre HTML y XHTML, lo que causa sorpresas en la validación. Más importante aún, ilustra las implicaciones de la decisión de hacer HTML formalmente, y solo formalmente, una "aplicación SGML". Los "elementos vacíos" son más de lo que parecen.
Fuente (vale la pena leer): cs.tut.fi documento de investigación de elementos vacíos )
¿Qué pasa si tal elemento tiene una etiqueta final?
El analizador ignorará el elemento que tiene una etiqueta final y consumirá el siguiente elemento o carácter para el análisis. Y el analizador lanzará un error de sintaxis ignorado
Lea este artículo de w3c, se trata de elementos vacíos HTML (elementos nulos) Enlace W3C
Artículo sobre elementos vacíos por 456bereastreet
Artículo de reflejos de color en elementos vacíos Enlace de colorglare