stringtranslate.com

Declaración de tipo de documento

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 de los navegadores web modernos realizan un "sniffing" o "switching" de DOCTYPE, en el que el DOCTYPE de un documento sirve para determinar un modo de diseño, como el " modo quirks " o el "modo estándar". La serialización de HTML5 , que no está basada en SGML, utiliza el DOCTYPE solo para la selección del 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 utilizan 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 una declaración de tipo de documento es:

<!DOCTYPE  elemento raíz  PUBLIC  "/quotedFPI/"  "/quotedURI/"  [  <!-- declaraciones de subconjuntos internos --> ]>

o

<!DOCTYPE  elemento raíz  SYSTEM  "/quotedURI/"  [  <!-- declaraciones de subconjuntos internos --> ]>

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 guión ASCII doble ), [3] : 372, 391  seguido de un nombre de tipo de documento [3] : 403–404  (es decir, el nombre del elemento raíz al que se aplica el DTD a los árboles de los que desciende). 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 del identificador externo y del 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 separando la sintaxis como los 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 utilizando 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 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 utiliza la palabra clave PUBLIC, va seguida del identificador público entre comillas ASCII dobles o simples . El identificador público no apunta a una ubicación de almacenamiento, sino que es una cadena fija única destinada a buscarse en una tabla (como un catálogo SGML ); [3] : 180  Sin embargo, en algunos perfiles SGML (pero no en todos), 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 SYSTEMla palabra clave (en caso contrario) pueden (y, en XML, deben) [4] ir seguidos de un "identificador del sistema" que también está entre comillas. Aunque la interpretación de los identificadores del sistema en SGML general depende completamente del sistema (y puede 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 del sistema disponibles para XHTML 1.1 según las necesidades. Uno de ellos es la referencia URL"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" . Esto significa que el analizador XML debe localizar la DTD de una manera específica del sistema, en este caso, por medio de una referencia URL de la DTD entre comillas dobles.

En los documentos XHTML, la declaración de tipo de documento debe especificar siempre explícitamente un identificador de sistema. Por otra parte, en documentos basados ​​en SGML como HTML, el identificador de sistema apropiado puede inferirse automáticamente a partir del identificador público dado. Esta asociación puede 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 utilizarse (excepto en XML) sin un identificador de sistema a continuación, lo que indica que existe un DTD pero debe inferirse a partir del nombre del tipo de documento. [3] : 378 

Subconjunto interno

La última parte, opcional, de una declaración DOCTYPE está rodeada de corchetes literales ( []), y se denomina subconjunto interno . Se puede utilizar para agregar/editar entidades o agregar/editar comportamientos de palabras clave PUBLIC. [7] Es posible, pero poco común, incluir el DTD completo en línea en el documento, dentro del subconjunto interno, en lugar de hacer referencia a él desde un archivo externo. [3] : 402  Por el contrario, el subconjunto interno a veces está prohibido dentro de perfiles SGML simples, en particular aquellos para analizadores HTML básicos que no implementan un analizador SGML completo.

Si se incluyen tanto un subconjunto interno de DTD como un identificador externo en una declaración DOCTYPE, el subconjunto interno se procesa primero y el subconjunto externo de DTD se trata como si se hubiera transcluido al final del subconjunto interno. Dado que las definiciones anteriores tienen prioridad sobre las definiciones posteriores en una DTD, esto permite que el subconjunto interno anule las definiciones en el subconjunto externo. [3] : 402–403 

Ejemplo

La primera línea de una página web podría leerse así:

<!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 un 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 solucionador de entidades puede utilizar cualquiera de los dos identificadores 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. 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 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

Se han incluido en listas algunas DTD comunes. W3C ha elaborado una lista de DTD de uso común en la web, que contiene la DTD HTML5 "básica", las DTD XHTML/HTML más antiguas, las DTD de formatos comunes basados ​​en XML integrados como MathML y ​​SVG , así como documentos "compuestos" que combinan esos formatos. [8] Tanto W3C HTML5 como su versión correspondiente WHATWG recomiendan que los navegadores sólo acepten DTD XHTML de ciertas FPI y que prefieran utilizar lógica interna en lugar de buscar 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 el marcado de presentación con el argumento de que se deben utilizar hojas de estilo en cascada para ello. 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 y valores PUBLIC 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 utilizar en su lugar el DTD Frameset, de la siguiente manera:

 <!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, transicionales y de conjunto de marcos.

DTD estricto XHTML. No se admiten etiquetas obsoletas y el código debe estar escrito 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" >

El DTD transicional XHTML es como el DTD estricto XHTML, 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" >

El DTD XHTML Frameset es el único DTD XHTML que admite Frameset. El DTD se muestra a continuación.

 <?xml versión="1.0" codificación="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" >

DTD XHTML 1.1

XHTML 1.1 es la última versión finalizada de XHTML, que incorpora compatibilidad con la modularización de XHTML . XHTML 1.1 tiene el mismo rigor que XHTML 1.0 Strict.

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

DTD básicas de XHTML

XHTML básico 1.0

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

XHTML básico 1.1

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

DOCTYPE sin DTD de HTML5

HTML5 utiliza una DOCTYPEdeclaración que es muy breve, debido a la falta de referencias a un DTD en forma de URL o FPI. Todo lo que contiene es 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 distinguir entre mayúsculas y minúsculas.

Con la excepción de la falta de una URI o de 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 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 letras mayúsculas, incluso si tanto las minúsculas como las mezclas de minúsculas y mayúsculas también se tratan como válidas.

En XHTML5, debe DOCTYPEhaber una coincidencia que distinga entre 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 utilizar un DOCTYPE. [12]

Véase también

Referencias

  1. ^ HTML2HTML3HTML4
  2. ^ "La sintaxis HTML ― HTML5" . Consultado el 5 de junio de 2011 .
  3. ^ abcdefghijklmn Goldfarb, Charles F. (1990). Manual de SGML . Oxford : Clarendon Press . ISBN. 0-19-853737-9.
  4. ^ Walsh, Norman (6 de agosto de 2001). "Catálogos XML". Organización para el Avance de los Estándares de Información Estructurada (OASIS).
  5. ^ Clark, James (15 de diciembre de 1997). "Comparación de SGML y XML". W3C . NOTA-sgml-xml-971215.
  6. ^ "La declaración DOCTYPE". Archivado desde el original el 14 de agosto de 2011. Consultado el 9 de septiembre de 2011 .
  7. ^ "Declaración DOCTYPE". msdn.microsoft.com .
  8. ^ "W3C QA - Lista recomendada de declaraciones Doctype que puede utilizar en su documento web". www.w3.org . Consultado el 22 de marzo de 2019 .
  9. ^ "Estándar HTML". html.spec.whatwg.org . Consultado el 22 de marzo de 2019 .
  10. ^ "La sintaxis HTML ― HTML5". Grupo de trabajo de tecnología de aplicaciones de hipertexto web . Consultado el 5 de junio de 2011. 3. Una cadena que coincide sin distinguir entre mayúsculas y minúsculas en ASCII con la cadena "DOCTYPE". 5. Una cadena que coincide sin distinguir entre mayúsculas y minúsculas en ASCII con la cadena "HTML".
  11. ^ "La sintaxis XHTML ― HTML5". Grupo de trabajo sobre tecnología de aplicaciones de hipertexto web . Archivado desde el original el 18 de junio de 2012. Consultado el 1 de septiembre de 2009 .
  12. ^ "Polyglot Markup: HTML-Compatible XHTML Documents" (Marcado políglota: documentos XHTML compatibles con HTML). World Wide Web Consortium . Consultado el 17 de enero de 2012 .

Enlaces externos