Declaración de tipo de documento - Document type declaration

Una declaración de tipo de documento , o DOCTYPE , es una instrucción que asocia un documento XML o SGML en particular (por ejemplo, una página web ) con una definición de tipo de documento (DTD) (por ejemplo, la definición formal de una versión particular de HTML 2.0 - 4.0 ). En la forma serializada del documento, se manifiesta como una cadena corta de marcado que se ajusta a una sintaxis particular.

Los motores de diseño HTML de los navegadores web modernos realizan "rastreo" o "conmutación" de DOCTYPE, en el que el DOCTYPE de un documento servido determina un modo de diseño, como el " modo peculiaridades " o el "modo estándar". La serialización de HTML5 , que no está basada en SGML, usa DOCTYPE solo para la selección de modo. Dado que los navegadores web se implementan con analizadores HTML de propósito especial, en lugar de analizadores basados ​​en DTD de propósito general, no usan DTD y nunca accederán a ellos incluso si se proporciona una URL. El DOCTYPE se conserva en HTML5 como un encabezado "casi inútil, pero obligatorio" solo para activar el "modo estándar" en los navegadores habituales. text/htmltext/html

DTD

Sintaxis

La sintaxis general para una declaración de tipo de documento es:

<!DOCTYPE root-element PUBLIC "FPI" ["URI"] [ 
<!-- internal subset declarations -->
]>

o

<!DOCTYPE root-element SYSTEM "URI" [ 
<!-- internal subset declarations -->
]>

En XML, el elemento raíz que representa el documento es el primer elemento del documento. Por ejemplo, en XHTML, el elemento raíz es <html>, siendo el primer elemento abierto (después de la declaración de tipo de documento) y el último cerrado. Las palabras clave SISTEMA y PÚBLICO sugieren qué tipo de Definición de tipo de documento (DTD) es (uno que está en un sistema privado o uno que está abierto al público). Si se elige la palabra clave PUBLIC, esta palabra clave va seguida de una forma restringida de "identificador público" llamado Identificador público formal (FPI) entre comillas dobles. Después de eso, también se proporciona necesariamente un "identificador de sistema" entre comillas dobles. Por ejemplo, el FPI para XHTML 1.1 es "- // W3C // DTD XHTML 1.1 // EN" y existen 3 posibles identificadores de sistema disponibles para XHTML 1.1 según las necesidades, uno de ellos es la referencia URI " http: //www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ". Si, en cambio, se elige la palabra clave SYSTEM, solo se debe dar un identificador de sistema. Significa que el analizador XML debe ubicar el DTD de una manera específica del sistema, en este caso, mediante una referencia URI del DTD entre comillas dobles. La última parte, rodeada por corchetes literales ([]), se llama un subconjunto interno que se puede usar para agregar / editar entidades o agregar / editar comportamientos de palabras clave PUBLIC. El subconjunto interno es siempre opcional (ya veces incluso está prohibido dentro de los perfiles SGML simples, en particular los de los analizadores HTML básicos que no implementan un analizador SGML completo).

Por otro lado, las declaraciones de tipo de documento son ligeramente diferentes en documentos basados ​​en SGML como HTML, donde el identificador público puede estar asociado con el identificador del sistema. Esta asociación podría realizarse, por ejemplo, por medio de un archivo de catálogo que resuelve el FPI en un identificador de sistema.

Ejemplo

La primera línea de una página de la World Wide Web puede leerse de la siguiente manera:

<!DOCTYPE html PUBLIC
  "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="ar" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">

Esta declaración de tipo de documento para XHTML incluye por referencia una DTD, cuyo público y cuyo identificador de sistema es http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd. Un solucionador de entidades puede utilizar cualquier identificador para localizar la entidad externa a la que se hace referencia. No se ha indicado ningún subconjunto interno en este ejemplo ni en los siguientes. Se declara que el elemento raíz es htmly, por lo tanto, es la primera etiqueta que se abre después del final de la declaración de tipo de documento en este ejemplo y también en los siguientes. La etiqueta HTML no forma parte de la declaración de tipo de documento, pero se ha incluido en los ejemplos con fines orientativos.

DTD comunes

Algunas DTD comunes se han incluido en listas. El W3C ha elaborado una lista de DTD de uso común en la web, que contiene la DTD HTML5 "básica", DTD XHTML / HTML más antiguas, DTD de formatos comunes basados ​​en XML incrustados como MathML y SVG , así como documentos "compuestos" que combinan esos formatos. Tanto W3C HTML5 como su correspondiente versión WHATWG recomiendan que los navegadores solo acepten XHTML DTD de ciertos FPI y prefieran usar lógica interna en lugar de buscar archivos DTD externos. Además, especifica un "DTD interno" para XHTML que es simplemente una lista de nombres de entidades HTML.

DTD HTML 4.01

La DTD estricta no permite el marcado de presentación con el argumento de que las hojas de estilo en cascada deben usarse para eso. Así es como se ve el Strict DTD:

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
 <html>

La DTD de transición permite algunos atributos y PÚBLICOS más antiguos que han quedado obsoletos:

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
 <html>

Si se utilizan marcos, se debe usar Frameset DTD en su lugar, así:

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
 <html>

DTD XHTML 1.0

Los DTD de XHTML también son Strict, Transitional y Frameset.

XHTML Strict DTD. No se admiten etiquetas obsoletas y el código debe escribirse correctamente de acuerdo con la especificación XML.

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

XHTML Transitional DTD es como XHTML Strict DTD, pero se permiten etiquetas obsoletas.

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

XHTML Frameset DTD es el único XHTML DTD que admite Frameset. El DTD está a continuación.

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

XHTML 1.1 DTD

XHTML 1.1 es la revisión finalizada más actual de XHTML, que introduce soporte para la modularización de XHTML . XHTML 1.1 tiene el rigor de XHTML 1.0 Strict.

<!DOCTYPE html PUBLIC
  "-//W3C//DTD XHTML 1.1//EN"
  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

DTD básicas de XHTML

XHTML Basic 1.0

<!DOCTYPE html PUBLIC
  "-//W3C//DTD XHTML Basic 1.0//EN"
  "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">

XHTML Basic 1.1

<!DOCTYPE html PUBLIC
  "-//W3C//DTD XHTML Basic 1.1//EN"
  "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">

DOCTYPE sin DTD de HTML5

HTML5 utiliza una DOCTYPEdeclaración que es muy corta, debido a la falta de referencias a una DTD en forma de URL o FPI. Todo lo que contiene es el nombre de etiqueta del elemento raíz del documento HTML,. En palabras del propio borrador de especificación:

En otras palabras, <!DOCTYPE html>no distingue entre mayúsculas y minúsculas.

Con la excepción de la falta de un URI o la cadena FPI (los validadores tratan la cadena FPI con distinción entre mayúsculas y minúsculas), este formato (una coincidencia de la cadena que no distingue entre mayúsculas y minúsculas !DOCTYPE HTML) es el mismo que se encuentra en la sintaxis del HTML basado en SGML 4.01 DOCTYPE. Tanto en HTML4 como en HTML5, la sintaxis formal se define en mayúsculas, incluso si tanto las minúsculas como las combinaciones de minúsculas en mayúsculas también se consideran válidas.

En XHTML5 la DOCTYPEdebe haber una coincidencia entre mayúsculas y minúsculas de la cadena " <!DOCTYPE html>". Esto se debe a que en la sintaxis XHTML todos los nombres de los elementos HTML deben estar en minúsculas, incluido el elemento raíz al que se hace referencia dentro del HTML5 DOCTYPE.

El DOCTYPEes opcional en XHTML5 y simplemente pueden omitirse. Sin embargo, si el marcado se va a procesar como XML y HTML , se debe utilizar un DOCTYPE.

Ver también

Referencias

enlaces externos