Pregunta

Sé el propósito de DOCTYPE (y cuál es cada url / identificador en la línea) en lo que respecta a los estándares web y la validación de la página, pero no estoy seguro de lo que realmente & "; es &"; en el contexto de un documento XML.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  <head>
    <title>My Page</title>
  </head>
  <body>
    <p>Hello</p>
  </body>
</html>

¿Es parte de la estructura real del documento XML, o es algún tipo de comentario como & "; sugerencia &"; que se nota luego despojado?

¿Cuál es el significado de "! " antes del nombre? ¿Esto denota un tipo especial de & Quot; elemento & Quot ;? ¿Cómo se llaman?

El ejemplo que publiqué es XHTML para la web, pero ¿DOCTYPE también se usa en documentos XML de propósito general?

¿Fue útil?

Solución

DOCTYPE ha sido " heredado " de SGML (se suponía que apuntaba a un archivo DTD que explica cómo analizar el archivo), sin embargo, la sintaxis XML y los espacios de nombres que se explican por sí mismos lo hicieron en gran medida irrelevante. El único uso real de DOCTYPE / DTD en XML es definir entidades con nombre permitidas (por ejemplo, &nbsp;).

La especificación XML

incluso permite " no validar " analizadores que ignoran el archivo DTD por completo (los navegadores web usan dichos analizadores, a menos que haya caído en la trampa text/html en cuyo caso el analizador XML no se utiliza en absoluto).

DTD es bastante pobre para fines de validación (difícil de especificar reglas para más de un nivel de anidamiento, no hay forma de especificar tipos de atributos más allá de unos pocos tipos predefinidos). Esquema, RelaxNG puede ser mucho más preciso.

DTD tampoco es totalmente compatible con espacios de nombres, lo que conduce a soluciones ridículas como XHTMLplusMathMLplusSVG DOCTYPE .

En los navegadores web, ciertos DOCTYPE tienen un efecto secundario deseable de activando el modo de representación compatible con los estándares . Esto es más un truco que los DOCTYPE de uso previsto.

  • Si está utilizando XHTML real (application/xhtml+xml & # 8211; el que no se abre en IE), entonces no use DOCTYPE en absoluto (eso es una recomendación de XHTML 5 ) El modo XML activará la representación compatible con los estándares, independientemente de DOCTYPE.

  • Si está utilizando el modo <!DOCTYPE html>, use &#160;. Eso es HTML 5 DOCTYPE y es el más corto que activa la mejor representación posible en todos los navegadores. Los navegadores no usan DOCTYPE para ningún otro propósito, por lo que no se perderá nada.

  • Si está procesando archivos XHTML con analizadores XML (fuera de los navegadores), entonces por favor no olvide configurar el Catálogo DTD correctamente, de lo contrario su analizador puede ser DoS-ing w3.org tratando de obtener DTD cada vez. Si no puede usar el catálogo DTD, desactive & Quot; externos & Quot; en el analizador u omita DOCTYPE y no use entidades con nombre (es decir, use <=> en lugar de <=>)

Otros consejos

DOCTYPE es parte de la especificación XML (consulte la subsección relevante aquí ) y puede incluir un enlace a un DTD , " interno; " Declaraciones DTD, o ambas. Muchos & Quot; moderno & Quot; Sin embargo, los usos de XML no utilizan un DOCTYPE en absoluto; como menciona PorneL, tanto el Esquema XML como RelaxNG son formas más poderosas de especificar la sintaxis de un documento. Consulte esta publicación del blog de Tim Bray para un poco más de fondo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top