En una DTD (Declaración de tipo de documento) SGML, la etiqueta de apertura <! se utiliza para las declaraciones de marcado, para describir lo que realmente hace cada elemento. Cada descripción de elemento comienza con <! ELEMENT elementName donde elementName podría ser EM, B, HEAD, HTML, lo que sea. Este es el estándar sobre cómo se deben escribir las DTD para que un analizador pueda entender cómo leer las etiquetas particulares en un documento.
Cuando se escribe un DTD, a menudo es necesario incluir comentarios, y los comentarios se incluyen con guiones dobles (-) [1]. Esta es una decisión en su mayoría arbitraria; de la misma forma que en los lenguajes de estilo C usamos // para comentarios de línea y / * * / para comentarios de bloque.
Por ejemplo, podemos ver en esta línea de código de la especificación HTML original [2]
que los elementos UL y OL pueden contener varios elementos de hipertexto, LI y P (indicados por el signo +). Después de la declaración de lo que pueden contener los elementos UL y OL, vemos que la declaración simplemente termina con un > .
- ¿Qué podrían hacer los estudiantes de economía que la mayoría de la gente no conoce?
- ¿Cuáles son los mejores remakes de los clásicos del cine?
- ¿Quién es Maja Daley en la página principal del nuevo sitio web de Square?
- ¿Cuáles son algunos de los mejores ejemplos de creencias que antes se creían verdaderas pero que ahora se sabe que son completamente erróneas?
- ¿Cuáles son algunos gadgets realmente interesantes para comprar?
Más abajo en la especificación original [2], encontramos la línea
que define un elemento blockquote. Ahora, el concepto de listas es bastante intuitivo, por lo que no se necesita una explicación real para estos elementos en particular. Sin embargo, un blockquote puede ser un concepto menos intuitivo para algunos, por lo tanto, después de la declaración de que BLOCKQUOTE puede contener múltiples etiquetas de hipertexto y P , este elemento en particular tiene un comentario que nos permite saber que una etiqueta de BLOCKQUOTE es “para citar otros source, “como lo estoy haciendo en este momento y usando la etiqueta blockquote para hacerlo. Como puede ver, ese comentario en particular está encerrado por dos delimitadores de doble guión (-) para que el analizador sepa ignorar esa parte.
Ahora llegamos a la versión HTML de una etiqueta de comentario …
Cuando el analizador SGML analiza el código HTML, lee la especificación HTML declarada por el DTD buscando etiquetas que comiencen con <! ELEMENT , <! ATTLIST , etc., y hace esto buscando etiquetas de apertura seguidas de un signo de exclamación ( ! ).
Ahora, puede o no puede saber esto (ya que los navegadores más nuevos tienden a no romperse cuando esto ocurre), pero la etiqueta de comentario HTML no puede tener un espacio entre el corchete de apertura y los guiones dobles. Escritura
<! –
esta permitido, pero escribiendo
<! –
no esta permitido. En el otro extremo de la etiqueta, se permite un espacio, sin embargo, entre los guiones dobles y el soporte de cierre. Esto significa que ambos
-> y ->
esta permitido.
La razón por la que no se permite ningún espacio en la etiqueta de apertura es bastante simple. Cuando el analizador analiza este documento SGML conocido como HTML y golpea una llave de apertura que tiene un signo de exclamación inmediatamente después, comienza a buscar un elemento que aún no se ha declarado. Pasa el signo de exclamación e inmediatamente ingresa un comentario, ignorando cualquier texto que se encuentre entre los dos conjuntos de guiones dobles. Continúa alegremente en su camino hasta que llega al último conjunto de guiones dobles y sale del comentario. Entonces comienza a buscar más declaraciones de DTD, pero, por desgracia, ha llegado a un corchete de cierre.
Y esto, tenemos .
Fuentes:
[1] En SGML y HTML , World Wide Web Consortium : http://www.w3.org/TR/html4/intro…
[2] Lenguaje de marcado de hipertexto (HTML) , Tim Berners-Lee: http://www.w3.org/MarkUp/draft-i…