Una declaración de tipo de documento , o DOCTYPE , es una instrucción que asocia un documento XML o SGML 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 ). [ 1 ] 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 en los navegadores web modernos realizan una "detección" o "cambio" de DOCTYPE, donde el DOCTYPE en un documento sirve como determina un modo de diseño, como " modo peculiar " o "modo estándar". La serialización de HTML5 , que no se basa en SGML, usa el 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 de propósito general basados en DTD, no usan DTD y nunca acceden a ellos, incluso si se proporciona una URL. El DOCTYPE se conserva en HTML5 como un encabezado "en su mayoría inútil, pero necesario" solo para activar el "modo estándar" en los navegadores comunes. [ 2 ]text/htmltext/html
Sintaxis
La sintaxis general para la declaración de un tipo de documento es:
<!DOCTYPE root-element PUBLIC "/quotedFPI/" "/quotedURI/" [ <!-- declaraciones internas de subconjuntos --> ]>o
<!DOCTYPE root-element SYSTEM "/quotedURI/" [ <!-- declaraciones internas de subconjuntos --> ]>nombre del tipo de documento
La <!DOCTYPEsintaxis de apertura va seguida de la sintaxis de separación [ 3 ] : 403–404 (como espacios, [ 3 ] : 297–298, 372 o (excepto en XML) comentarios abiertos y cerrados por un doble guion ASCII ), [ 3 ] : 372, 391 seguida de un nombre de tipo de documento [ 3 ] : 403–404 (es decir, el nombre del elemento raíz que la DTD aplica a los árboles descendientes). 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 doctype) y el último cerrado.
Dado que la sintaxis para el identificador externo y el subconjunto interno son opcionales, [ 3 ] : 403–404 el nombre del tipo de documento es la única información que es obligatorio proporcionar en una declaración DOCTYPE.
Identificador externo
La declaración DOCTYPE puede contener opcionalmente un identificador externo , después del nombre del elemento raíz (y la sintaxis de separación como espacios), pero antes de cualquier subconjunto interno. [ 3 ] : 403–404 Esto comienza con la palabra clave SYSTEMo la palabra clave PUBLIC, [ 3 ] : 379 especificando si el DTD se especifica usando un identificador público que lo identifica como un texto público , es decir, uno compartido entre múltiples sistemas informáticos (independientemente de si es un texto público disponible disponible para el público en general, o un texto público no disponible compartido solo dentro de una organización). [ 3 ] : 180–182 Si se usa la palabra clave PUBLIC, va seguida del identificador público encerrado entre comillas ASCII dobles o simples . El identificador público no apunta a una ubicación de almacenamiento, sino que es más bien una cadena fija única destinada a ser buscada en una tabla (como un catálogo SGML ); [ 3 ] : 180 Sin embargo, en algunos (pero no en todos) los perfiles SGML, el identificador público debe construirse utilizando una sintaxis particular llamada Identificador Público Formal (FPI), que especifica el propietario y si está disponible para el público en general. [ 3 ] : 182–183
El identificador público (si está presente) o SYSTEMpalabra clave (de lo contrario) puede (y, en XML, debe) [ 4 ] ir seguido de un "identificador de sistema" que también está encerrado entre comillas. Aunque la interpretación de los identificadores de sistema en general SGML es totalmente dependiente del sistema (y podría ser un nombre de archivo, una clave de base de datos, un desplazamiento o algo más), [ 3 ] : 378 XML requiere que sean URI . [ 5 ] Por ejemplo, el FPI para XHTML 1.1 es "-//W3C//DTD XHTML 1.1//EN"y, hay 3 posibles identificadores de sistema disponibles para XHTML 1.1 dependiendo de las necesidades. Uno de ellos es la referencia URL"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" . Significa que el analizador XML debe localizar el DTD de una manera específica del sistema, en este caso, mediante una referencia URL del DTD encerrada entre comillas dobles.
En los documentos XHTML, la declaración del tipo de documento siempre debe especificar explícitamente un identificador de sistema. En los documentos basados en SGML, como HTML, en cambio, el identificador de sistema apropiado puede inferirse automáticamente a partir del identificador público dado. Esta asociación podría realizarse, por ejemplo, mediante un archivo de catálogo que resuelva el FPI a un identificador de sistema. [ 6 ] La SYSTEMpalabra clave también puede usarse (excepto en XML) sin un identificador de sistema posterior, lo que indica que existe un DTD, pero que debe inferirse del nombre del tipo de documento. [ 3 ] : 378
subconjunto interno
La última parte, opcional, de una declaración DOCTYPE está rodeada de corchetes cuadrados literales ( []), y se denomina subconjunto interno . Puede utilizarse para añadir/editar entidades o añadir/editar comportamientos de palabras clave PUBLIC. [ 7 ] Es posible, pero poco común, incluir todo el DTD en línea en el documento, dentro del subconjunto interno, en lugar de referenciarlo desde un archivo externo. [ 3 ] : 402 Por el contrario, el subconjunto interno a veces está prohibido dentro de los perfiles SGML simples, en particular aquellos para analizadores HTML básicos que no implementan un analizador SGML completo.
Si en una declaración DOCTYPE se incluyen tanto un subconjunto DTD interno como un identificador externo, primero se procesa el subconjunto interno y, posteriormente, se trata el subconjunto DTD externo como si se hubiera transcluido al final del subconjunto interno. Dado que las definiciones anteriores tienen prioridad sobre las posteriores en un DTD, esto permite que el subconjunto interno anule las definiciones del subconjunto externo. [ 3 ] : 402–403
Ejemplo
La primera línea de una página web puede ser la siguiente:
<!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 identificador público es -//W3C//DTD XHTML 1.0 Transitional//ENy cuyo identificador de sistema es http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd. Un resolvedor de entidades puede usar cualquiera de los identificadores para localizar la entidad externa referenciada. No se ha indicado ningún subconjunto interno en este ejemplo ni en los siguientes. El elemento raíz se declara como htmly, por lo tanto, es la primera etiqueta que se abre después del final de la declaración de doctype en este ejemplo y también en los siguientes. La etiqueta HTML no forma parte de la declaración de doctype, pero se ha incluido en los ejemplos con fines orientativos.
DTD comunes
Algunas DTD comunes se han incluido en listas. El W3C ha producido 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 XML incrustados comunes como MathML y SVG , así como documentos "compuestos" que combinan esos formatos. [ 8 ] Tanto W3C HTML5 como su versión correspondiente de WHATWG recomiendan a los navegadores que solo acepten DTD XHTML de ciertos FPI y que prefieran usar lógica interna en lugar de obtener archivos DTD externos. Además, especifica una "DTD interna" para XHTML que es simplemente una lista de nombres de entidades HTML. [ 9 ] : §13.2
DTD de HTML 4.01
La DTD estricta no permite marcado de presentación, argumentando que en su lugar se deben usar hojas de estilo en cascada (CSS) . Así es como se ve la DTD estricta:
<!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 PUBLIC y otros atributos más antiguos que han sido descontinuados:
<!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 el DTD Frameset en su lugar, como se muestra a continuación:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> < html >DTD de XHTML 1.0
Las DTD de XHTML también son estrictas, transitorias y de conjunto de marcos.
DTD estricta de XHTML. No se admiten etiquetas obsoletas y el código debe escribirse correctamente según 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" >La DTD de transición de XHTML es similar a la DTD estricta de XHTML, pero permite 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" >La DTD XHTML Frameset es la única DTD XHTML que admite Frameset. La DTD se encuentra 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 = "es" lang = "es" >DTD XHTML 1.1
XHTML 1.1 es la revisión finalizada más reciente de XHTML, que introduce soporte para la modularización de XHTML . XHTML 1.1 tiene la misma rigurosidad que XHTML 1.0 Strict.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">DTD básicos de XHTML
XHTML Básico 1.0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">XHTML Básico 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 muy corta, debido a la falta de referencias a una DTD en forma de URL o FPI. Solo contiene el nombre de la etiqueta del elemento raíz del documento, HTML. [ 10 ] En palabras del propio borrador de la especificación:
<!DOCTYPE html>, sin distinción entre mayúsculas y minúsculas.
Con la excepción de la falta de una URI o la cadena FPI (la cadena FPI es tratada con distinción entre mayúsculas y minúsculas por los validadores), este formato (una coincidencia de la cadena sin distinción entre mayúsculas y minúsculas !DOCTYPE HTML) es el mismo que se encuentra en la sintaxis de HTML 4.01 basado en SGML DOCTYPE. Tanto en HTML4 como en HTML5, la sintaxis formal se define en mayúsculas, aunque tanto las minúsculas como las combinaciones de minúsculas y mayúsculas también se consideran válidas.
En XHTML5 debe DOCTYPEhaber una coincidencia sensible a mayúsculas y minúsculas de la cadena " <!DOCTYPE html>". Esto se debe a que en la sintaxis XHTML todos los nombres de 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 puede simplemente omitirse. [ 11 ] Sin embargo, si el marcado se va a procesar como XML y HTML , se debe usar un DOCTYPE. [ 12 ]
Véase también
Referencias
- ↑ HTML2 HTML3 HTML4
- ↑ "La sintaxis HTML ― HTML5" . Consultado el 5 de junio de 2011 .
- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Goldfarb, Charles F. (1990). The SGML Handbook . Oxford : Clarendon Press . ISBN 0-19-853737-9.
- ↑ Walsh, Norman (2001-08-06). "Catálogos XML" . La Organización para el Avance de los Estándares de Información Estructurada (OASIS).
- ↑ Clark, James (15 de diciembre de 1997). "Comparación de SGML y XML" . W3C . NOTE-sgml-xml-971215.
- ↑ "La declaración DOCTYPE" . Archivado del original el 14 de agosto de 2011. Consultado el 9 de septiembre de 2011 .
- ↑ "Declaración DOCTYPE" . msdn.microsoft.com .
- ↑ "W3C QA - Lista recomendada de declaraciones Doctype que puede usar en su documento web" . www.w3.org . Consultado el 22 de marzo de 2019 .
- ↑ "Estándar HTML" . html.spec.whatwg.org . Consultado el 22 de marzo de 2019 .
- ↑ "La sintaxis HTML ― HTML5" . Grupo de trabajo de tecnología de aplicaciones de hipertexto web . Recuperado el 5 de junio de 2011.
3. Una cadena que coincide sin distinción de mayúsculas y minúsculas en ASCII con la cadena "DOCTYPE". 5. Una cadena que coincide sin distinción de mayúsculas y minúsculas en ASCII con la cadena "HTML".
- ↑ "La sintaxis XHTML ― HTML5" . Grupo de trabajo de tecnología de aplicaciones de hipertexto web . Archivado del original el 18 de junio de 2012. Consultado el 1 de septiembre de 2009 .
- ↑ "Marcado políglota: documentos XHTML compatibles con HTML" . Consorcio World Wide Web . Consultado el 17 de enero de 2012 .
Enlaces externos
- Descripción general del tipo de documento HTML
- DTD recomendadas para usar en su documento web : una publicación informativa (no normativa) de garantía de calidad del W3C.
- Tabla de resumen DOCTYPE : otra tabla de resumen [Última modificación: 27 de noviembre de 2006]
- Modo peculiar y modo de transición
- Ajuste del modelo de caja
- Estándares basados en XML
- SGML