El lenguaje de marcado de hipertexto ( HTML ) es el lenguaje de marcado estándar para documentos diseñados para ser mostrados en un navegador web . Define el contenido y la estructura del contenido web . A menudo se complementa con tecnologías como hojas de estilo en cascada (CSS) y lenguajes de programación como JavaScript .
Los navegadores web reciben documentos HTML de un servidor web o de un almacenamiento local y los convierten en páginas web multimedia. HTML describe la estructura de una página web semánticamente y originalmente incluía claves para su apariencia.
Los elementos HTML son los componentes básicos de las páginas HTML. Con las construcciones HTML, se pueden incrustar imágenes y otros objetos, como formularios interactivos , en la página representada. HTML proporciona un medio para crear documentos estructurados al indicar la semántica estructural del texto, como encabezados, párrafos, listas, enlaces , citas y otros elementos. Los elementos HTML se delimitan mediante etiquetas , escritas con corchetes angulares . Las etiquetas como y introducen directamente el contenido en la página. Otras etiquetas como y rodean a y proporcionan información sobre el texto del documento y pueden incluir etiquetas de subelementos. Los navegadores no muestran las etiquetas HTML, sino que las utilizan para interpretar el contenido de la página.<img>
<input>
<p>
</p>
HTML puede incrustar programas escritos en un lenguaje de programación como JavaScript , lo que afecta el comportamiento y el contenido de las páginas web. La inclusión de CSS define la apariencia y el diseño del contenido. El Consorcio World Wide Web (W3C), antiguo mantenedor del HTML y actual mantenedor de los estándares CSS, ha fomentado el uso de CSS sobre HTML de presentación explícito desde 1997. [2] Una forma de HTML, conocida como HTML5 , se utiliza para mostrar video y audio, principalmente utilizando el elemento, junto con JavaScript.[update]<canvas>
En 1980, el físico Tim Berners-Lee , contratista del CERN , propuso y creó el prototipo de ENQUIRE , un sistema para que los investigadores del CERN utilizaran y compartieran documentos. En 1989, Berners-Lee escribió un memorando en el que proponía un sistema de hipertexto basado en Internet . [3] Berners-Lee especificó el HTML y escribió el software del navegador y del servidor a finales de 1990. Ese año, Berners-Lee y el ingeniero de sistemas de datos del CERN Robert Cailliau colaboraron en una solicitud conjunta de financiación, pero el proyecto no fue adoptado formalmente por el CERN. En sus notas personales de 1990, Berners-Lee enumeró "algunas de las muchas áreas en las que se utiliza el hipertexto"; una enciclopedia es la primera entrada. [4]
La primera descripción públicamente disponible de HTML fue un documento llamado "Etiquetas HTML", [5] mencionado por primera vez en Internet por Tim Berners-Lee a finales de 1991. [6] [7] Describe 18 elementos que comprenden el diseño inicial, relativamente simple, de HTML. A excepción de la etiqueta de hipervínculo, estos fueron fuertemente influenciados por SGMLguid , un formato de documentación basado en el Lenguaje de Marcado Generalizado Estándar (SGML) desarrollado internamente en el CERN. Once de estos elementos todavía existen en HTML 4. [8]
HTML es un lenguaje de marcado que los navegadores web utilizan para interpretar y componer texto, imágenes y otros materiales en páginas web visibles o audibles. Las características predeterminadas para cada elemento de marcado HTML se definen en el navegador, y estas características se pueden alterar o mejorar mediante el uso adicional de CSS por parte del diseñador de la página web . Muchos de los elementos de texto se mencionan en el informe técnico ISO de 1988 TR 9537 Técnicas para usar SGML , que describe las características de los primeros lenguajes de formato de texto, como el utilizado por el comando RUNOFF desarrollado a principios de la década de 1960 para el sistema operativo CTSS (sistema de tiempo compartido compatible). Estos comandos de formato se derivaron de los comandos utilizados por los tipógrafos para formatear documentos manualmente. Sin embargo, el concepto SGML de marcado generalizado se basa en elementos (rangos anotados anidados con atributos) en lugar de simplemente efectos de impresión, con estructura y marcado separados. HTML se ha movido progresivamente en esta dirección con CSS.
Berners-Lee consideró que HTML era una aplicación de SGML. Fue definido formalmente como tal por el Grupo de Trabajo de Ingeniería de Internet (IETF) con la publicación a mediados de 1993 de la primera propuesta para una especificación HTML, el Borrador de Internet "Hypertext Markup Language (HTML)" de Berners-Lee y Dan Connolly , que incluía una definición de tipo de documento SGML para definir la sintaxis. [9] [10] El borrador expiró después de seis meses, pero fue notable por su reconocimiento de la etiqueta personalizada del navegador Mosaic de NCSA para incrustar imágenes en línea, lo que refleja la filosofía del IETF de basar los estándares en prototipos exitosos. De manera similar, el Borrador de Internet competidor de Dave Raggett , "HTML+ (Hypertext Markup Format)", de finales de 1993, sugería estandarizar características ya implementadas como tablas y formularios para completar. [11]
Después de que los borradores de HTML y HTML+ caducasen a principios de 1994, la IETF creó un grupo de trabajo sobre HTML. En 1995, este grupo de trabajo completó "HTML 2.0", la primera especificación HTML que se pretendía tratar como un estándar en el que se basarían las implementaciones futuras. [12]
El desarrollo posterior bajo los auspicios de la IETF se vio estancado por intereses en pugna. Desde 1996, [update]las especificaciones HTML han sido mantenidas, con aportes de proveedores de software comercial, por el Consorcio World Wide Web (W3C). [13] En 2000, HTML se convirtió en un estándar internacional ( ISO / IEC 15445:2000). HTML 4.01 se publicó a fines de 1999, con más erratas publicadas hasta 2001. En 2004, comenzó el desarrollo de HTML5 en el Grupo de Trabajo de Tecnología de Aplicaciones de Hipertexto Web (WHATWG), que se convirtió en un producto conjunto con el W3C en 2008, y se completó y estandarizó el 28 de octubre de 2014. [14]
XHTML es un lenguaje independiente que comenzó como una reformulación de HTML 4.01 utilizando XML 1.0. Ahora se lo conoce como la sintaxis XML para HTML y ya no se desarrolla como un estándar independiente. [58]
El 28 de mayo de 2019, el W3C anunció que WHATWG sería el único editor de los estándares HTML y DOM. [65] [66] [67] [68] El W3C y WHATWG habían estado publicando estándares en competencia desde 2012. Si bien el estándar del W3C era idéntico al WHATWG en 2007, desde entonces los estándares han divergido progresivamente debido a diferentes decisiones de diseño. [69] El "Estándar de vida" de WHATWG había sido el estándar web de facto durante algún tiempo. [70]
El marcado HTML consta de varios componentes clave, incluidos los denominados tags (y sus atributos ), tipos de datos basados en caracteres , referencias a caracteres y referencias a entidades . Las etiquetas HTML suelen presentarse en pares, como y , aunque algunas representan elementos vacíos y, por lo tanto, no están emparejadas, por ejemplo . La primera etiqueta de dicho par es la etiqueta de inicio y la segunda es la etiqueta de fin (también se denominan etiquetas de apertura y etiquetas de cierre ).<h1>
</h1>
<img>
Otro componente importante es la declaración del tipo de documento HTML , que activa la representación en modo estándar .
El siguiente es un ejemplo del clásico programa "¡Hola, mundo!" :
<!DOCTYPE html> < html > < head > < title > Este es un título </ title > </ head > < body > < div > < p > ¡Hola mundo! </ p > </ div > </ body > </ html >
El texto entre y describe la página web, y el texto entre y es el contenido visible de la página. El texto de marcado define el título de la página del navegador que se muestra en las pestañas del navegador y en los títulos de las ventanas , y la etiqueta define una división de la página que se utiliza para facilitar la aplicación de estilos. Entre y , se puede utilizar un elemento para definir los metadatos de la página web.<html>
</html>
<body>
</body>
<title>This is a title</title>
<div>
<head>
</head>
<meta>
La declaración del tipo de documento <!DOCTYPE html>
es para HTML5. Si no se incluye una declaración, varios navegadores volverán al " modo peculiar " para la representación. [71]
Los documentos HTML implican una estructura de elementos HTML anidados . Estos se indican en el documento mediante etiquetas HTML , encerradas entre corchetes angulares, de la siguiente manera: . [72] [ se necesita una mejor fuente ]<p>
En el caso general y simple, la extensión de un elemento se indica mediante un par de etiquetas: una "etiqueta de inicio" y una "etiqueta de fin" . El contenido de texto del elemento, si lo hay, se coloca entre estas etiquetas.<p>
</p>
Las etiquetas también pueden incluir más etiquetas entre el inicio y el final, incluida una combinación de etiquetas y texto. Esto indica otros elementos (anidados) como elementos secundarios del elemento principal.
La etiqueta de inicio también puede incluir los atributos del elemento dentro de la etiqueta. Estos indican otra información, como identificadores para secciones dentro del documento, identificadores utilizados para vincular la información de estilo a la presentación del documento y, para algunas etiquetas, como las utilizadas para incrustar imágenes, la referencia al recurso de imagen en un formato como el siguiente:<img>
<img src="example.com/example.jpg">
Algunos elementos, como el salto de línea, no permiten ningún contenido incrustado, ya sea texto o etiquetas adicionales. Estos solo requieren una etiqueta vacía (similar a una etiqueta de inicio) y no utilizan una etiqueta de cierre.<br />
Muchas etiquetas, en particular la etiqueta de cierre del elemento de párrafo , que se usa con mucha frecuencia, son opcionales. Un navegador HTML u otro agente puede inferir el cierre del final de un elemento a partir del contexto y las reglas estructurales definidas por el estándar HTML. Estas reglas son complejas y la mayoría de los autores HTML no las entienden bien.<p>
La forma general de un elemento HTML es, por tanto: . Algunos elementos HTML se definen como elementos vacíos y adoptan la forma . Los elementos vacíos pueden no contener contenido, por ejemplo, la etiqueta o la etiqueta en línea. El nombre de un elemento HTML es el nombre utilizado en las etiquetas. El nombre de la etiqueta de cierre va precedido de un carácter de barra diagonal, , y en los elementos vacíos la etiqueta de cierre no es obligatoria ni está permitida. Si no se mencionan atributos, se utilizan los valores predeterminados en cada caso.<tag attribute1="value1" attribute2="value2">''content''</tag>
<tag attribute1="value1" attribute2="value2">
<br />
<img>
/
Encabezado del documento HTML: . El título se incluye en el encabezado, por ejemplo:<head>...</head>
< head > < title > El título </ title > < link rel = "stylesheet" href = "stylebyjimbowales.css" > <!-- Importa hojas de estilo --> </ head >
Los encabezados HTML se definen con las etiquetas to , siendo H1 el nivel más alto (o más importante) y H6 el menos importante:<h1>
<h6>
< h1 > Nivel de encabezado 1 </ h1 > < h2 > Nivel de encabezado 2 </ h2 > < h3 > Nivel de encabezado 3 </ h3 > < h4 > Nivel de encabezado 4 </ h4 > < h5 > Nivel de encabezado 5 </ h5 > < h6 > Nivel de encabezado 6 </ h6 >
Los efectos son:
CSS puede cambiar sustancialmente la representación.
Párrafos:
< p > Párrafo 1 </ p > < p > Párrafo 2 </ p >
<br />
La diferencia entre y es que divide una línea sin alterar la estructura semántica de la página, mientras que divide la página en párrafos . El elemento es un elemento vacío en el sentido de que, aunque puede tener atributos, no puede tener contenido y no puede tener una etiqueta de cierre.<br />
<p>
<br />
<p>
<br />
< p > Este < br > es un párrafo < br > con < br > saltos de línea </ p >
Este es un enlace en HTML. Para crear un enlace se utiliza la etiqueta. El atributo contiene la dirección URL del enlace.<a>
href
< a href = "https://www.wikipedia.org/" > ¡Un enlace a Wikipedia! </ a >
Hay muchas formas posibles en las que un usuario puede proporcionar información como:
< input type = "text" > <!-- Esto es para entrada de texto --> < input type = "file" > <!-- Esto es para cargar archivos --> < input type = "checkbox" > <!-- Esto es para casillas de verificación -->
Comentarios:
<!-- Esto es un comentario -->
Los comentarios pueden ayudar a comprender el marcado y no se muestran en la página web.
Hay varios tipos de elementos de marcado utilizados en HTML:
<h2>Golf</h2>
<b>bold text</b>
<b>bold text</b>
<i>italic text</i>
<strong>strong text</strong>
<em>emphasized text</em>
href
de destino del vínculo . Por ejemplo, el marcado HTML , representará la palabra " Wikipedia " como un hipervínculo. Para representar una imagen como un hipervínculo, se inserta un elemento como contenido en el elemento. Por ejemplo , , es un elemento vacío con atributos pero sin contenido ni etiqueta de cierre .<a href="https://en.wikipedia.org/">Wikipedia</a>
img
a
br
img
<a href="https://example.org"><img src="image.gif" alt="descriptive text" width="50" height="50" border="0"></a>
La mayoría de los atributos de un elemento son pares nombre-valor , separados por =
y escritos dentro de la etiqueta de inicio de un elemento después del nombre del elemento. El valor puede estar entre comillas simples o dobles, aunque los valores que constan de ciertos caracteres pueden dejarse sin comillas en HTML (pero no en XHTML). [74] [75] Dejar los valores de los atributos sin comillas se considera inseguro. [76] A diferencia de los atributos de pares nombre-valor, hay algunos atributos que afectan al elemento simplemente por su presencia en la etiqueta de inicio del elemento, [6] como el ismap
atributo para el img
elemento. [77]
Hay varios atributos comunes que pueden aparecer en muchos elementos:
id
atributo proporciona un identificador único para todo el documento de un elemento. Se utiliza para identificar el elemento de modo que las hojas de estilo puedan modificar sus propiedades de presentación y los scripts puedan modificar, animar o eliminar su contenido o presentación. Si se añade a la URL de la página, proporciona un identificador único global para el elemento, normalmente una subsección de la página. Por ejemplo, el ID "Atributos" en https://en.wikipedia.org/wiki/web,%20/HTML#Attributes
.class
atributo proporciona una forma de clasificar elementos similares. Esto se puede utilizar con fines semánticos o de presentación. Por ejemplo, un documento HTML puede utilizar semánticamente la designación para indicar que todos los elementos con este valor de clase están subordinados al texto principal del documento. En la presentación, dichos elementos se pueden reunir y presentar como notas al pie de una página en lugar de aparecer en el lugar donde aparecen en el código fuente HTML. Los atributos de clase se utilizan semánticamente en microformatos . Se pueden especificar varios valores de clase; por ejemplo, coloca el elemento en las clases y .<class="notation">
<class="notation important">
notation
important
style
atributo para asignar propiedades de presentación a un elemento en particular. Se considera una mejor práctica utilizar los atributos de un elemento id
para class
seleccionar el elemento desde dentro de una hoja de estilo , aunque a veces esto puede resultar demasiado complicado para un estilo simple, específico o ad hoc.title
atributo se utiliza para adjuntar una explicación subtextual a un elemento. En la mayoría de los navegadores, este atributo se muestra como una información sobre herramientas .lang
atributo identifica el idioma natural del contenido del elemento, que puede ser diferente al del resto del documento. Por ejemplo, en un documento en inglés:< p > Bueno, < span lang = "fr" > c'est la vie </ span > , como dicen en Francia. </ p >
El elemento de abreviatura, abbr
, se puede utilizar para demostrar algunos de estos atributos:
< abbr id = "anId" class = "jargon" style = "color:purple;" title = "Lenguaje de marcado de hipertexto" > HTML </ abbr >
Este ejemplo se muestra como HTML ; en la mayoría de los navegadores, al apuntar el cursor a la abreviatura debería aparecer el texto del título "Lenguaje de marcado de hipertexto".
La mayoría de los elementos toman el atributo relacionado con el idioma dir
para especificar la dirección del texto, como "rtl" para texto de derecha a izquierda en, por ejemplo, árabe , persa o hebreo . [78]
A partir de la versión 4.0, HTML define un conjunto de 252 referencias de entidades de caracteres y un conjunto de 1.114.050 referencias de caracteres numéricos , que permiten escribir caracteres individuales mediante un marcado simple, en lugar de hacerlo de forma literal. Un carácter literal y su equivalente en el marcado se consideran equivalentes y se representan de forma idéntica.
La capacidad de " escapar " caracteres de esta manera permite que los caracteres <
y &
(cuando se escriben como <
y &
, respectivamente) se interpreten como datos de caracteres, en lugar de marcado. Por ejemplo, un literal <
normalmente indica el comienzo de una etiqueta, y &
normalmente indica el comienzo de una referencia de entidad de caracteres o una referencia de caracteres numéricos; escribirlo como &
o &
o &
permite &
que se incluya en el contenido de un elemento o en el valor de un atributo. El carácter de comillas dobles ( "
), cuando no se utiliza para citar un valor de atributo, también se debe escapar como "
o "
o "
cuando aparece dentro del valor del atributo en sí. De manera equivalente, el carácter de comillas simples ( '
), cuando no se utiliza para citar un valor de atributo, también se debe escapar como '
o '
(o como '
en los documentos HTML5 o XHTML [79] [80] ) cuando aparece dentro del valor del atributo en sí. Si los autores de documentos pasan por alto la necesidad de escapar dichos caracteres, algunos navegadores pueden ser muy indulgentes e intentar usar el contexto para adivinar su intención. El resultado sigue siendo un marcado no válido, lo que hace que el documento sea menos accesible para otros navegadores y otros agentes de usuario que puedan intentar analizar el documento con fines de búsqueda e indexación , por ejemplo.
El escape también permite que caracteres que no se escriben fácilmente o que no están disponibles en la codificación de caracteres del documento se representen dentro del contenido de elementos y atributos. Por ejemplo, el acento agudo e
( é
), un carácter que normalmente se encuentra solo en los teclados de Europa occidental y Sudamérica, se puede escribir en cualquier documento HTML como referencia de entidad é
o como referencias numéricas é
o é
, utilizando caracteres que están disponibles en todos los teclados y son compatibles con todas las codificaciones de caracteres. Las codificaciones de caracteres Unicode como UTF-8 son compatibles con todos los navegadores modernos y permiten el acceso directo a casi todos los caracteres de los sistemas de escritura del mundo. [81]
HTML define varios tipos de datos para el contenido de los elementos, como datos de script y datos de hojas de estilo, y una gran cantidad de tipos para valores de atributos, incluidos identificadores, nombres, URI , números, unidades de longitud, idiomas, descriptores de medios, colores, codificaciones de caracteres, fechas y horas, etc. Todos estos tipos de datos son especializaciones de los datos de caracteres.
Los documentos HTML deben comenzar con una declaración de tipo de documento (de manera informal, un "doctype"). En los navegadores, el doctype ayuda a definir el modo de representación, en particular si se debe utilizar el modo quirks .
El propósito original del doctype era permitir el análisis y la validación de documentos HTML por parte de herramientas SGML basadas en la definición de tipo de documento (DTD). La DTD a la que hace referencia el DOCTYPE contiene una gramática legible por máquina que especifica el contenido permitido y prohibido para un documento conforme a dicha DTD. Los navegadores, por otro lado, no implementan HTML como una aplicación de SGML y, en consecuencia, no leen la DTD.
HTML5 no define un DTD; por lo tanto, en HTML5 la declaración del doctype es más simple y corta: [82]
<!DOCTYPE html >
Un ejemplo de un tipo de documento HTML 4
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//ES" "https://www.w3.org/TR/html4/strict.dtd" >
Esta declaración hace referencia al DTD para la versión "estricta" de HTML 4.01. Los validadores basados en SGML leen el DTD para analizar correctamente el documento y realizar la validación. En los navegadores modernos, un tipo de documento válido activa el modo estándar en lugar del modo peculiar .
Además, HTML 4.01 ofrece DTD de transición y de conjunto de marcos, como se explica a continuación. El tipo de transición es el más inclusivo, ya que incorpora etiquetas actuales, así como etiquetas más antiguas o "obsoletas", mientras que el DTD estricto excluye las etiquetas obsoletas. El conjunto de marcos tiene todas las etiquetas necesarias para crear marcos en una página junto con las etiquetas incluidas en el tipo de transición. [83]
El HTML semántico es una forma de escribir HTML que enfatiza el significado de la información codificada por sobre su presentación (apariencia). HTML ha incluido marcado semántico desde sus inicios, [84] pero también ha incluido marcado de presentación, como las etiquetas , y . También existen las etiquetas semánticamente neutrales div y span . Desde finales de la década de 1990, cuando las hojas de estilo en cascada comenzaron a funcionar en la mayoría de los navegadores, se ha alentado a los autores web a evitar el uso de marcado HTML de presentación con vistas a la separación de contenido y presentación . [85]<font>
<i>
<center>
En un debate de 2001 sobre la Web semántica , Tim Berners-Lee y otros dieron ejemplos de formas en las que los "agentes" de software inteligentes podrían algún día rastrear automáticamente la web y encontrar, filtrar y correlacionar datos publicados previamente no relacionados para el beneficio de los usuarios humanos. [86] Dichos agentes no son comunes incluso ahora, pero algunas de las ideas de la Web 2.0 , los mashups y los sitios web de comparación de precios pueden estar acercándose. La principal diferencia entre estos híbridos de aplicaciones web y los agentes semánticos de Berners-Lee radica en el hecho de que la agregación e hibridación actual de información generalmente está diseñada por desarrolladores web , que ya conocen las ubicaciones web y la semántica API de los datos específicos que desean mezclar, comparar y combinar.
Un tipo importante de agente web que rastrea y lee páginas web automáticamente, sin conocimiento previo de lo que puede encontrar, es el rastreador web o araña de motor de búsqueda. Estos agentes de software dependen de la claridad semántica de las páginas web que encuentran, ya que utilizan diversas técnicas y algoritmos para leer e indexar millones de páginas web al día y proporcionar a los usuarios de la web funciones de búsqueda sin las cuales la utilidad de la World Wide Web se vería enormemente reducida.
Para que las arañas de los motores de búsqueda puedan evaluar la importancia de los fragmentos de texto que encuentran en los documentos HTML, y también para aquellos que crean mashups y otros híbridos, así como para agentes más automatizados a medida que se desarrollan, las estructuras semánticas que existen en HTML deben aplicarse de manera amplia y uniforme para resaltar el significado del texto publicado. [87]
Las etiquetas de marcado de presentación están obsoletas en las recomendaciones actuales de HTML y XHTML . La mayoría de las características de presentación de versiones anteriores de HTML ya no están permitidas porque conducen a una accesibilidad deficiente, un mayor costo de mantenimiento del sitio y tamaños de documentos más grandes. [88]
Un buen código HTML semántico también mejora la accesibilidad de los documentos web (consulte también las Pautas de Accesibilidad al Contenido Web ). Por ejemplo, cuando un lector de pantalla o un navegador de audio puede determinar correctamente la estructura de un documento, no hará perder el tiempo al usuario con discapacidad visual leyendo información repetida o irrelevante cuando se ha marcado correctamente.
Los documentos HTML se pueden enviar por los mismos medios que cualquier otro archivo informático. Sin embargo, lo más frecuente es que se envíen por HTTP desde un servidor web o por correo electrónico .
La World Wide Web se compone principalmente de documentos HTML transmitidos desde servidores web a navegadores web mediante el Protocolo de transferencia de hipertexto (HTTP). Sin embargo, HTTP se utiliza para ofrecer imágenes, sonido y otros contenidos, además de HTML. Para permitir que el navegador web sepa cómo manejar cada documento que recibe, se transmite otra información junto con el documento. Estos metadatos suelen incluir el tipo MIME (por ejemplo, text/htmlo application/xhtml+xml) y la codificación de caracteres (consulte Codificaciones de caracteres en HTML ).
En los navegadores modernos, el tipo MIME que se envía con el documento HTML puede afectar la interpretación inicial del documento. Se espera que un documento enviado con el tipo MIME XHTML sea XML bien formado ; los errores de sintaxis pueden provocar que el navegador no lo represente. El mismo documento enviado con el tipo MIME HTML puede mostrarse correctamente, ya que algunos navegadores son más tolerantes con HTML.
Las recomendaciones del W3C establecen que los documentos XHTML 1.0 que siguen las pautas establecidas en el Apéndice C de la recomendación pueden etiquetarse con cualquiera de los tipos MIME. [89] XHTML 1.1 también establece que los documentos XHTML 1.1 deben [90] etiquetarse con cualquiera de los tipos MIME. [91]
La mayoría de los clientes de correo electrónico gráficos permiten el uso de un subconjunto de HTML (a menudo mal definido) para proporcionar formato y marcado semántico que no está disponible con texto simple . Esto puede incluir información tipográfica como encabezados en color, texto resaltado y entrecomillado, imágenes en línea y diagramas. Muchos de estos clientes incluyen un editor de GUI para redactar mensajes de correo electrónico HTML y un motor de renderizado para mostrarlos. El uso de HTML en el correo electrónico es criticado por algunos debido a problemas de compatibilidad, porque puede ayudar a disfrazar ataques de phishing , debido a problemas de accesibilidad para personas ciegas o con discapacidad visual, porque puede confundir a los filtros de spam y porque el tamaño del mensaje es mayor que el del texto simple.
La extensión de nombre de archivo más común para los archivos que contienen HTML es .html. Una abreviatura común de esto es .htm, que se originó porque algunos de los primeros sistemas operativos y sistemas de archivos, como DOS y las limitaciones impuestas por la estructura de datos FAT , limitaron las extensiones de archivo a tres letras . [92]
Una aplicación HTML (HTA; extensión de archivo .hta) es una aplicación de Microsoft Windows que utiliza HTML y HTML dinámico en un navegador para proporcionar la interfaz gráfica de la aplicación. Un archivo HTML normal está confinado al modelo de seguridad del navegador web , se comunica solo con servidores web y manipula solo objetos de páginas web y cookies del sitio . Una HTA se ejecuta como una aplicación de total confianza y, por lo tanto, tiene más privilegios, como la creación/edición/eliminación de archivos y entradas del Registro de Windows . Debido a que operan fuera del modelo de seguridad del navegador, las HTA no se pueden ejecutar a través de HTTP, sino que se deben descargar (al igual que un archivo EXE ) y ejecutar desde el sistema de archivos local.
Desde sus inicios, HTML y sus protocolos asociados ganaron aceptación con relativa rapidez. Sin embargo, no existían estándares claros en los primeros años del lenguaje. Aunque sus creadores originalmente concibieron HTML como un lenguaje semántico desprovisto de detalles de presentación, [93] los usos prácticos introdujeron muchos elementos y atributos de presentación en el lenguaje, impulsados en gran medida por los diversos proveedores de navegadores. Los últimos estándares en torno a HTML reflejan esfuerzos por superar el desarrollo a veces caótico del lenguaje [94] y crear una base racional para construir documentos significativos y bien presentados. Para devolver a HTML su papel como lenguaje semántico, el W3C ha desarrollado lenguajes de estilo como CSS y XSL para asumir la carga de la presentación. Al mismo tiempo, la especificación HTML ha ido frenando lentamente los elementos de presentación.
Hay dos ejes que diferencian las distintas variantes de HTML tal como se especifica actualmente: HTML basado en SGML versus HTML basado en XML (conocido como XHTML) en un eje, y estricto versus transicional (suelto) versus conjunto de marcos en el otro eje.
Una diferencia en las últimas especificaciones HTML [ ¿cuándo? ] radica en la distinción entre la especificación basada en SGML y la especificación basada en XML. La especificación basada en XML suele denominarse XHTML para distinguirla claramente de la definición más tradicional. Sin embargo, el nombre del elemento raíz sigue siendo "html" incluso en el HTML especificado en XHTML. El W3C pretendía que XHTML 1.0 fuera idéntico a HTML 4.01, excepto en los casos en que las limitaciones de XML sobre el más complejo SGML requirieran soluciones alternativas. Dado que XHTML y HTML están estrechamente relacionados, a veces se documentan en paralelo. En tales circunstancias, algunos autores confunden los dos nombres como (X)HTML o X(HTML).
Al igual que HTML 4.01, XHTML 1.0 tiene tres subespecificaciones: estricta, transicional y de marcos.
Aparte de las diferentes declaraciones de apertura de un documento, las diferencias entre un documento HTML 4.01 y un documento XHTML 1.0 (en cada uno de los DTD correspondientes) son en gran medida sintácticas. La sintaxis subyacente de HTML permite muchos atajos que XHTML no permite, como elementos con etiquetas de apertura o cierre opcionales, e incluso elementos vacíos que no deben tener una etiqueta de cierre. Por el contrario, XHTML requiere que todos los elementos tengan una etiqueta de apertura y una etiqueta de cierre. XHTML, sin embargo, también introduce un nuevo atajo: una etiqueta XHTML puede abrirse y cerrarse dentro de la misma etiqueta, incluyendo una barra antes del final de la etiqueta como esto: . La introducción de esta abreviatura, que no se utiliza en la declaración SGML para HTML 4.01, puede confundir al software anterior que no esté familiarizado con esta nueva convención. Una solución para esto es incluir un espacio antes de cerrar la etiqueta, como esto: . [95]<br />
<br />
Para comprender las sutiles diferencias entre HTML y XHTML, considere la transformación de un documento XHTML 1.0 válido y bien formado que se ajuste al Apéndice C (ver a continuación) en un documento HTML 4.01 válido. Para realizar esta traducción se requieren los siguientes pasos:
lang
atributo en lugar del xml:lang
atributo XHTML. XHTML utiliza el atributo de funcionalidad de definición de lenguaje integrado de XML.xmlns=URI
). HTML no tiene funciones para espacios de nombres.<?xml version="1.0" encoding="utf-8"?>
).text/html
. Tanto para HTML como para XHTML, esto proviene del Content-Type
encabezado HTTP enviado por el servidor.<br />
<br />
Estos son los principales cambios necesarios para traducir un documento de XHTML 1.0 a HTML 4.01. Para traducir de HTML a XHTML también sería necesario añadir las etiquetas de apertura o cierre omitidas. Ya sea que se codifique en HTML o XHTML, puede que sea mejor incluir siempre las etiquetas opcionales dentro de un documento HTML en lugar de recordar qué etiquetas se pueden omitir.
Un documento XHTML bien formado cumple con todos los requisitos de sintaxis de XML. Un documento válido cumple con la especificación de contenido de XHTML, que describe la estructura del documento.
El W3C recomienda varias convenciones para garantizar una migración sencilla entre HTML y XHTML (consulte las Pautas de compatibilidad de HTML). Los siguientes pasos se pueden aplicar únicamente a documentos XHTML 1.0:
xml:lang
atributos lang
en cualquier elemento que asigne idioma.<br />
<br />
, no ).<div />
Si se siguen cuidadosamente las pautas de compatibilidad del W3C, un agente de usuario debería poder interpretar el documento tanto como HTML como XHTML. En el caso de los documentos que son XHTML 1.0 y se han hecho compatibles de esta manera, el W3C permite que se muestren como HTML (con un text/html
tipo MIME ) o como XHTML (con un tipo MIME application/xhtml+xml
o application/xml
). Cuando se entregan como XHTML, los navegadores deben utilizar un analizador XML que se ajuste estrictamente a las especificaciones XML para analizar el contenido del documento.
HTML 4 definió tres versiones diferentes del lenguaje: estricta, transicional (antes llamada Loose) y Frameset. La versión estricta está pensada para documentos nuevos y se considera la mejor práctica, mientras que las versiones transicional y Frameset se desarrollaron para facilitar la transición de documentos que se ajustaban a especificaciones HTML más antiguas o que no se ajustaban a ninguna especificación a una versión de HTML 4. Las versiones transicional y Frameset permiten el marcado de presentación, que se omite en la versión estricta. En su lugar, se recomiendan las hojas de estilo en cascada para mejorar la presentación de los documentos HTML. Debido a que XHTML 1 solo define una sintaxis XML para el lenguaje definido por HTML 4, las mismas diferencias se aplican también a XHTML 1.
La versión transicional permite las siguientes partes del vocabulario, que no están incluidas en la versión estricta:
body
, blockquote
, form
, noscript
ynoframes
u
)(Obsoleto. Puede confundir a un visitante con un hipervínculo).s
)center
(Obsoleto. Utilice CSS en su lugar).font
(Obsoleto. Utilice CSS en su lugar).basefont
(Obsoleto. Utilice CSS en su lugar).background
(Obsoleto. Utilice CSS en su lugar) y bgcolor
atributos (Obsoleto. Utilice CSS en su lugar) para body
el elemento (elemento obligatorio según W3C).align
(Obsoleto. Utilice CSS en su lugar). atributo en elementos div
, form
, párrafo ( p
) y encabezado ( h1
... )h6
align
(Obsoleto. Use CSS en su lugar.), noshade
(Obsoleto. Use CSS en su lugar.), size
(Obsoleto. Use CSS en su lugar.) y width
(Obsoleto. Use CSS en su lugar.) atributos en hr
el elementoalign
(Obsoleto. Utilice CSS en su lugar), border
y vspace
atributos hspace
en elementos img
y object
(precaución: el object
elemento solo es compatible con Internet Explorer (desde los principales navegadores))align
(Obsoleto. Utilice CSS en su lugar). atributo en elementos legend
ycaption
align
(Obsoleto. Use CSS en su lugar.) y bgcolor
(Obsoleto. Use CSS en su lugar.) en table
el elementonowrap
(Obsoleto), bgcolor
(En desuso. Use CSS en su lugar) width
, height
en elementos td
yth
bgcolor
(Obsoleto. Utilice CSS en su lugar). atributo en tr
el elementoclear
Atributo (obsoleto) en br
el elementocompact
atributo en dl
, dir
y menu
elementostype
(Obsoleto. Utilice CSS en su lugar.), compact
(Obsoleto. Utilice CSS en su lugar.) y start
(Obsoleto. Utilice CSS en su lugar.) atributos en elementos ol
yul
type
y value
atributos del li
elementowidth
atributo en pre
el elementomenu
(Obsoleto. Utilice CSS en su lugar). lista (no se recomienda ningún sustituto, aunque se recomienda la lista desordenada)dir
(Obsoleto. Utilice CSS en su lugar). lista (sin sustituto, aunque se recomienda la lista desordenada)isindex
(Obsoleto.) (El elemento requiere soporte del lado del servidor y generalmente se agrega a los documentos del lado del servidor, form
y input
los elementos se pueden usar como sustituto)applet
(Obsoleto. Utilice el object
elemento en su lugar).language
atributo (obsoleto) en el elemento de script (redundante con el type
atributo ).iframe
noframes
target
(Obsoleto en los elementos map
, link
y form
). atributo en a
, mapa de imagen del lado del cliente ( map
), link
, form
y base
elementosLa versión Frameset incluye todo lo de la versión Transitional, así como el frameset
elemento (usado en lugar de body
) y el frame
elemento .
Además de las diferencias transicionales mencionadas anteriormente, las especificaciones del conjunto de marcos (ya sea XHTML 1.0 o HTML 4.01) especifican un modelo de contenido diferente, con frameset
reemplazo body
, que contiene frame
elementos o, opcionalmente, noframes
con un body
.
Como demuestra esta lista, las versiones flexibles de la especificación se mantienen para dar soporte a las versiones anteriores. Sin embargo, contrariamente a las ideas erróneas populares, el paso a XHTML no implica la eliminación de este soporte heredado. Más bien, la X en XML significa extensible y el W3C está modularizando toda la especificación y la abre a extensiones independientes. El logro principal en el paso de XHTML 1.0 a XHTML 1.1 es la modularización de toda la especificación. La versión estricta de HTML se implementa en XHTML 1.1 a través de un conjunto de extensiones modulares a la especificación XHTML 1.1 base. Del mismo modo, alguien que busque especificaciones flexibles (de transición) o de conjunto de marcos encontrará un soporte XHTML 1.1 extendido similar (gran parte del cual está contenido en los módulos heredados o de marcos). La modularización también permite que se desarrollen características separadas según su propio cronograma. Por ejemplo, XHTML 1.1 permitirá una migración más rápida a estándares XML emergentes como MathML (un lenguaje matemático semántico y de presentación basado en XML) y XForms , una nueva tecnología de formularios web altamente avanzada para reemplazar los formularios HTML existentes.
En resumen, la especificación HTML 4 restringió principalmente todas las diversas implementaciones de HTML en una única especificación claramente escrita basada en SGML. XHTML 1.0 adaptó esta especificación, tal como está, a la nueva especificación definida en XML. A continuación, XHTML 1.1 aprovecha la naturaleza extensible de XML y modulariza toda la especificación. XHTML 2.0 fue concebido como el primer paso para agregar nuevas características a la especificación en un enfoque basado en organismos de estándares.
El HTML Living Standard, desarrollado por WHATWG, es la versión oficial, mientras que W3C HTML5 ya no está separado de WHATWG.
Existen algunos editores WYSIWYG ( lo que ves es lo que obtienes ), en los que el usuario presenta todo tal como debe aparecer en el documento HTML mediante una interfaz gráfica de usuario (GUI), a menudo similar a los procesadores de texto . El editor reproduce el documento en lugar de mostrar el código, por lo que los autores no necesitan conocimientos extensos de HTML.
El modelo de edición WYSIWYG ha sido criticado, [96] [97] principalmente por la baja calidad del código generado; hay voces [ ¿quiénes? ] que abogan por un cambio al modelo WYSIWYM ( lo que ves es lo que quieres decir ).
Los editores WYSIWYG siguen siendo un tema controvertido debido a sus defectos percibidos, como:
<em>
SGML es muy general. HTML es una aplicación específica de la sintaxis básica de SGML aplicada a documentos de hipertexto con estructura simple.
El lenguaje de marcado de hipertexto HTML se desarrolló como un formato de entrega simple y no propietario para hipertexto global. HTML+ es un conjunto de extensiones modulares de HTML y se desarrolló en respuesta a una creciente comprensión de las necesidades de los proveedores de información. Estas extensiones incluyen flujo de texto alrededor de figuras flotantes, formularios para completar, tablas y ecuaciones matemáticas.
Este documento define un HTML 2.0 (para distinguirlo de las especificaciones informales anteriores). Las versiones futuras de HTML (generalmente compatibles con versiones anteriores) con nuevas características se publicarán con números de versión más altos.
Este documento recomienda HTML 5.0 una vez finalizado.
Nota: Este grupo de trabajo está cerrado
Los documentos XHTML que siguen las pautas establecidas en el Apéndice C, "Pautas de compatibilidad HTML", pueden etiquetarse con el tipo de medio de Internet "text/html" [RFC2854], ya que son compatibles con la mayoría de los navegadores HTML. Esos documentos, y cualquier otro documento que cumpla con esta especificación, también pueden etiquetarse con el tipo de medio de Internet "application/xhtml+xml" como se define en [RFC3236].
3. DEBERÍA Esta palabra, o el adjetivo "RECOMENDADO", significa que pueden existir razones válidas en circunstancias particulares para ignorar un elemento en particular, pero se deben comprender y sopesar cuidadosamente todas las implicaciones antes de elegir un camino diferente.
documentos XHTML 1.1 DEBEN etiquetarse con el tipo de medio de Internet text/html como se define en [RFC2854] o application/xhtml+xml como se define en [RFC3236].