El lenguaje de marcado de hipertexto ( HTML ) es el lenguaje de marcado estándar para documentos diseñados para mostrarse en un navegador web . Define el contenido y la estructura del contenido web . A menudo cuenta con la ayuda de tecnologías como las hojas de estilo en cascada (CSS) y lenguajes de programación como JavaScript .
Los navegadores web reciben documentos HTML desde un servidor web o desde un almacenamiento local y representan los documentos en páginas web multimedia. HTML describe semánticamente la estructura de una página web y originalmente incluía pistas 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 renderizada. HTML proporciona un medio para crear documentos estructurados al denotar la semántica estructural de texto como encabezados, párrafos, listas, enlaces , citas y otros elementos. Los elementos HTML están delimitados por etiquetas , escritas entre corchetes angulares . Etiquetas como e introducen contenido directamente en la página. Otras etiquetas, como y rodean y proporcionan información sobre el texto del documento y pueden incluir etiquetas de subelementos. Los navegadores no muestran las etiquetas HTML, pero las utilizan para interpretar el contenido de la página.<img>
<input>
<p>
</p>
HTML puede incorporar programas escritos en un lenguaje de secuencias de comandos 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 World Wide Web Consortium (W3C), antiguo mantenedor de 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 vídeo 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ó un prototipo de INQUIRE , un sistema para que los investigadores del CERN utilicen y compartan documentos. En 1989, Berners-Lee escribió un memorando proponiendo un sistema de hipertexto basado en Internet . [3] Berners-Lee especificó HTML y escribió el navegador y el software 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 de HTML disponible públicamente 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 interno basado en el lenguaje de marcado generalizado estándar (SGML) del 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 otro material 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 pueden modificarse o mejorarse 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 TR 9537 de 1988, 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 CTSS (Compatible Time-Sharing). Sistema) sistema operativo. 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 consideraba 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 "Lenguaje de marcado de hipertexto (HTML)" de Berners-Lee y Dan Connolly , que incluyó una definición de tipo de documento SGML para definir la sintaxis. [9] [10] El borrador expiró después de seis meses, pero se destacó por su reconocimiento de la etiqueta personalizada del navegador NCSA Mosaic para incrustar imágenes en línea, lo que refleja la filosofía del IETF de basar estándares en prototipos exitosos. De manera similar, el borrador de Internet de Dave Raggett , "HTML+ (Hypertext Markup Format)", de finales de 1993, sugirió estandarizar características ya implementadas como tablas y formularios para completar. [11]
Después de que los borradores HTML y HTML+ expiraran a principios de 1994, el IETF creó un Grupo de Trabajo HTML. En 1995, este grupo de trabajo completó "HTML 2.0", la primera especificación HTML destinada a ser tratada como un estándar en el que se deberían basar las implementaciones futuras. [12]
El desarrollo posterior bajo los auspicios del IETF se vio estancado por intereses contrapuestos. Desde 1996, [update]las especificaciones HTML han sido mantenidas, con aportaciones de proveedores de software comerciales, por el World Wide Web Consortium (W3C). [13] En 2000, HTML se convirtió en un estándar internacional ( ISO / IEC 15445:2000). HTML 4.01 se publicó a finales de 1999, y se publicaron más erratas 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 la conoce como sintaxis XML para HTML y ya no se desarrolla como un estándar separado. [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 competitivos desde 2012. Si bien el estándar 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 WHATWG "Living Standard" había sido el estándar web de facto durante algún tiempo. [70]
El marcado HTML consta de varios componentes clave, incluidos los llamados etiquetas (y sus atributos ), tipos de datos basados en caracteres , referencias de caracteres y referencias de entidades . Las etiquetas HTML suelen venir en pares como y , aunque algunas representan elementos vacíos y, por lo tanto, no están emparejados, por ejemplo . La primera etiqueta de dicho par es la etiqueta de inicio y la segunda es la etiqueta de final (también se denominan etiquetas de apertura y etiquetas de cierre ).<h1>
</h1>
<img>
Otro componente importante es la declaración de tipo de documento HTML , que activa la representación en modo estándar .
El siguiente es un ejemplo del clásico "¡Hola mundo!" programa :
<!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 utilizada para facilitar el estilo. 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 de tipo de documento <!DOCTYPE html>
es para HTML5. Si no se incluye una declaración, varios navegadores volverán al " modo peculiaridad " para renderizar. [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 simple, la extensión de un elemento se indica mediante un par de etiquetas: una "etiqueta inicial" y una "etiqueta final" . El contenido de texto del elemento, si lo hay, se coloca entre estas etiquetas.<p>
</p>
Las etiquetas también pueden incluir etiquetas adicionales entre el inicio y el final, incluida una combinación de etiquetas y texto. Esto indica elementos adicionales (anidados), como hijos 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 de secciones dentro del documento, identificadores utilizados para vincular 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 este. :<img>
<img src="example.com/example.jpg">
Algunos elementos, como el salto de línea, no permiten ningún contenido incrustado, ya sea texto u otras etiquetas. Estos requieren solo una etiqueta vacía (similar a una etiqueta de inicio) y no utilizan una etiqueta de finalización.<br>
Muchas etiquetas, en particular la etiqueta final de cierre del elemento de párrafo de uso más común , 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 de HTML no las comprenden ampliamente.<p>
Por tanto, la forma general de un elemento HTML es: . Algunos elementos HTML se definen como elementos vacíos y toman la forma . Los elementos vacíos pueden no contener ningún 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 final está precedido por una barra diagonal, y en elementos vacíos la etiqueta final no es obligatoria ni permitida. Si no se mencionan los atributos, se utilizan 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 menor:<h1>
<h6>
< h1 > Nivel de título 1 </ h1 > < h2 > Nivel de título 2 </ h2 > < h3 > Nivel de título 3 </ h3 > < h4 > Nivel de título 4 </ h4 > < h5 > Nivel de título 5 </ h5 > < h6 > Nivel de título 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 final.<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 dar información como:
< tipo de entrada = "texto" > <!-- Esto es para entrada de texto --> < tipo de entrada = "archivo" > <!-- Esto es para cargar archivos --> < tipo de entrada = "casilla de verificación" > <! -- Esto es para casillas de verificación -->
Comentarios:
<!-- Este 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 enlace . 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. Me gusta , 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 =
y escritos dentro de la etiqueta inicial 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] En contraste con los atributos de par nombre-valor, hay algunos atributos que afectan al elemento simplemente por su presencia en la etiqueta inicial del elemento, [6] como el ismap
atributo del img
elemento. [77]
Hay varios atributos comunes que pueden aparecer en muchos elementos:
id
atributo proporciona un identificador único en todo el documento para un elemento. Esto se utiliza para identificar el elemento de modo que las hojas de estilo puedan alterar sus propiedades de presentación y los scripts puedan alterar, animar o eliminar su contenido o presentación. Adjunto 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/HTML/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 podría 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 pueden reunirse y presentarse como notas a pie de página en una página en lugar de aparecer en el lugar donde aparecen en la fuente HTML. Los atributos de clase se utilizan semánticamente en microformatos . Se pueden especificar varios valores de clase; por ejemplo, coloca el elemento tanto en la clase como en la clase.<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 id
o de un elemento class
para seleccionar el elemento dentro de una hoja de estilo , aunque a veces esto puede resultar demasiado engorroso 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 información sobre herramientas .lang
atributo identifica el lenguaje 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 abreviado, abbr
, se puede utilizar para demostrar algunos de estos atributos:
< abbr id = "anId" clase = "jerga" estilo = "color:púrpura;" 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 se debería mostrar 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 referencias de entidades de 252 caracteres y un conjunto de 1.114.050 referencias de caracteres numéricos , los cuales permiten escribir caracteres individuales mediante un marcado simple, en lugar de hacerlo literalmente. Un carácter literal y su contraparte de marcado se consideran equivalentes y se representan de manera 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 marcas. Por ejemplo, un literal <
normalmente indica el inicio de una etiqueta y &
normalmente indica el inicio de una referencia de entidad de caracteres o una referencia de caracteres numéricos; escribirlo como &
o &
o &
permite &
incluirlo en el contenido de un elemento o en el valor de un atributo. El carácter de comilla doble ( "
), cuando no se utiliza para citar un valor de atributo, también se debe utilizar como "
carácter de "
escape "
cuando aparece dentro del valor del atributo mismo. De manera equivalente, el carácter de comilla simple ( '
), cuando no se usa para citar un valor de atributo, también debe tener un carácter de escape como '
o '
(o como '
en los documentos HTML5 o XHTML [79] [80] ) cuando aparece dentro del valor del atributo mismo. Si los autores de documentos pasan por alto la necesidad de evitar dichos caracteres, algunos navegadores pueden ser muy indulgentes e intentar utilizar 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 pueden intentar analizar el documento con fines de búsqueda e indexación, por ejemplo.
El escape también permite que los 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 del elemento y atributo. Por ejemplo, el acento agudo e
( é
), un carácter que normalmente sólo se encuentra en los teclados de Europa occidental y América del Sur, se puede escribir en cualquier documento HTML como referencia de entidad é
o como referencia numérica é
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 secuencias de comandos y datos de hojas de estilo, y una gran cantidad de tipos para valores de atributos, incluidos ID, nombres, URI , números, unidades de longitud, idiomas, descriptores de medios, colores, codificaciones de caracteres y fechas. y tiempos, etcétera. Todos estos tipos de datos son especializaciones de datos de caracteres.
Los documentos HTML deben comenzar con una declaración de tipo de documento (informalmente, un "tipo de documento"). En los navegadores, el tipo de documento ayuda a definir el modo de renderizado, en particular si se utiliza el modo peculiar .
El propósito original del tipo de documento era permitir el análisis y la validación de documentos HTML mediante herramientas SGML basadas en la definición de tipo de documento (DTD). La DTD a la que se refiere 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 una DTD; por lo tanto, en HTML5 la declaración de tipo de documento 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 a la DTD de 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 proporciona DTD transicionales y de conjunto de marcos, como se explica a continuación. El tipo de transición es el más inclusivo e incorpora etiquetas actuales, así como etiquetas más antiguas o "obsoletas", y la DTD estricta 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]
HTML semántico es una forma de escribir HTML que enfatiza el significado de la información codificada 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 etiquetas y . También existen las etiquetas div y span semánticamente neutras . 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 miras a la separación del contenido y la presentación . [85]<font>
<i>
<center>
En una discusión de 2001 sobre la Web Semántica , Tim Berners-Lee y otros dieron ejemplos de formas en que los "agentes" de software inteligentes algún día podrían rastrear automáticamente la Web y encontrar, filtrar y correlacionar hechos publicados previamente no relacionados para beneficio de la humanidad. usuarios. [86] Estos agentes no son comunes ni siquiera 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 de información actual suele ser diseñada por desarrolladores web , que ya conocen las ubicaciones web y la semántica API de los datos específicos que desean. triturar, comparar y combinar.
Un tipo importante de agente web que rastrea y lee páginas web automáticamente, sin conocimiento previo de lo que podría 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 servicios de búsqueda sin los cuales la utilidad de la World Wide Web se reduciría considerablemente.
Para que las arañas de los motores de búsqueda puedan calificar 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 debe aplicarse amplia y uniformemente 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 funciones de presentación de versiones anteriores de HTML ya no están permitidas, ya que provocan una peor accesibilidad, un mayor costo de mantenimiento del sitio y tamaños de documentos más grandes. [88]
Un buen HTML semántico también mejora la accesibilidad de los documentos web (consulte también 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 entregar por el mismo medio que cualquier otro archivo informático. Sin embargo, la mayoría de las veces se entregan mediante 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 otro contenido, 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 generalmente incluyen 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 forma en que se interpreta inicialmente el documento. Se espera que un documento enviado con el tipo XHTML MIME sea XML bien formado ; Los errores de sintaxis pueden hacer que el navegador no lo represente. El mismo documento enviado con el tipo HTML MIME podría mostrarse correctamente ya que algunos navegadores son más indulgentes 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 cualquier tipo 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án disponibles con texto sin formato . Esto puede incluir información tipográfica como títulos coloreados, texto enfatizado y citado, imágenes en línea y diagramas. Muchos de estos clientes incluyen un editor GUI para redactar mensajes de correo electrónico HTML y un motor de renderizado para mostrarlos. Algunos critican el uso de HTML en el correo electrónico por problemas de compatibilidad, porque puede ayudar a disfrazar ataques de phishing , por 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 normal. texto.
La extensión de nombre de archivo más común para 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 , limitaban las extensiones de archivos 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 , comunicándose únicamente con los servidores web y manipulando únicamente los objetos de la página web y las cookies del sitio . Una HTA se ejecuta como una aplicación totalmente confiable y, por lo tanto, tiene más privilegios, como 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 deben descargarse (como un archivo EXE ) y ejecutarse 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 idioma. Aunque sus creadores originalmente concibieron HTML como un lenguaje semántico desprovisto de detalles de presentación, [93] los usos prácticos incorporaron muchos elementos y atributos de presentación al lenguaje, impulsados en gran medida por los distintos proveedores de navegadores. Los últimos estándares que rodean HTML reflejan esfuerzos para superar el desarrollo a veces caótico del lenguaje [94] y crear una base racional para construir documentos significativos y bien presentados. Para devolver HTML a su papel como lenguaje semántico, el W3C ha desarrollado lenguajes de estilo como CSS y XSL para soportar la carga de la presentación. En conjunto, la especificación HTML ha ido controlando lentamente los elementos de presentación.
Hay dos ejes que diferencian las diversas variaciones de HTML tal como se especifican actualmente: HTML basado en SGML versus HTML basado en XML (denominado XHTML) en un eje, y estricto versus transicional (suelto) versus conjunto de marcos en el otro eje.
Una diferencia en el último [ ¿cuándo? ] Las especificaciones HTML 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 cuando las limitaciones de XML sobre el SGML más complejo requieren soluciones alternativas. Debido a que XHTML y HTML están estrechamente relacionados, a veces se documentan en paralelo. En tales circunstancias, algunos autores combinan 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 marco.
Aparte de las diferentes declaraciones de apertura de un documento, las diferencias entre un documento HTML 4.01 y XHTML 1.0 (en cada una de las 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 se puede abrir y cerrar dentro de la misma etiqueta, incluyendo una barra antes del final de la etiqueta como esta: . 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 tal: . [95]<br/>
<br />
Para comprender las diferencias sutiles entre HTML y XHTML, considere la transformación de un documento XHTML 1.0 válido y bien formado que se adhiera al Apéndice C (ver más abajo) en un documento HTML 4.01 válido. Hacer esta traducción requiere los siguientes pasos:
lang
atributo en lugar del xml:lang
atributo XHTML. XHTML utiliza el atributo de funcionalidad integrado que define el lenguaje 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>
Esos 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 agregar cualquier etiqueta de apertura o cierre omitida. Ya sea que 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 para 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
y lang
en cualquier elemento que asigne el idioma.<br />
<br />
<div></div>
<div />
Siguiendo cuidadosamente las pautas de compatibilidad del W3C, un agente de usuario debería poder interpretar el documento igualmente como HTML o XHTML. Para los documentos que son XHTML 1.0 y que se han hecho compatibles de esta manera, el W3C permite que se sirvan como HTML (con un text/html
tipo MIME ) o como XHTML (con un tipo MIME application/xhtml+xml
o ). application/xml
Cuando se entrega como XHTML, los navegadores deben utilizar un analizador XML, que se adhiera estrictamente a las especificaciones XML para analizar el contenido del documento.
HTML 4 definió tres versiones diferentes del lenguaje: estricta, transicional (una vez llamada suelta) y frameset. La versión estricta está destinada a documentos nuevos y se considera la mejor práctica, mientras que las versiones transicional y de conjunto de marcos se desarrollaron para facilitar la transición de documentos que cumplían con especificaciones HTML anteriores o que no cumplían ninguna especificación a una versión de HTML 4. Las versiones de transición y Frameset permiten el marcado de presentación, que se omite en la versión estricta. En cambio, se recomienda el uso de hojas de estilo en cascada para mejorar la presentación de los documentos HTML. Debido a que XHTML 1 sólo 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
ynoscript
noframes
u
)(Obsoleto. Puede confundir a un visitante con un hipervínculo).s
)center
(En desuso. Utilice CSS en su lugar).font
(En desuso. Utilice CSS en su lugar).basefont
(En desuso. Utilice CSS en su lugar).background
(En desuso. Utilice CSS en su lugar.) y bgcolor
(En desuso. Utilice CSS en su lugar.) atributos para el body
elemento (elemento requerido según el W3C).align
(En desuso. Utilice CSS en su lugar). Atributo en los elementos div
, form
párrafo ( p
) y encabezado ( h1
... h6
).align
(En desuso. Use CSS en su lugar.), noshade
(En desuso. Use CSS en su lugar.), size
(En desuso. Use CSS en su lugar.) y width
(En desuso. Use CSS en su lugar.) atributos en hr
el elementoalign
(En desuso. Utilice CSS en su lugar), border
y vspace
atributos hspace
en img
y object
(precaución: el object
elemento solo es compatible con Internet Explorer (de los principales navegadores)) elementosalign
(En desuso. Utilice CSS en su lugar). atributo en legend
y caption
elementosalign
(En desuso. Use CSS en su lugar.) y bgcolor
(En desuso. Use CSS en su lugar.) en table
el elementonowrap
(Obsoleto), bgcolor
(Obsoleto. Utilice CSS en su lugar), width
, height
en td
y th
elementosbgcolor
(En desuso. Utilice CSS en su lugar). Atributo en tr
el elemento .clear
Atributo (obsoleto) en br
el elementocompact
atributo dl
en dir
y menu
elementostype
(En desuso. Utilice CSS en su lugar.), compact
(En desuso. Utilice CSS en su lugar.) y start
(En desuso. Utilice CSS en su lugar.) atributos en ol
y ul
elementostype
y value
atributos en li
el elementowidth
atributo en pre
elementomenu
(En desuso. Utilice CSS en su lugar). lista (no se recomienda ningún sustituto, aunque se recomienda la lista desordenada)dir
(En desuso. Utilice CSS en su lugar). lista (no hay sustituto, aunque se recomienda la lista desordenada)isindex
(En desuso). (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
(En desuso. Utilice el object
elemento en su lugar).language
atributo (obsoleto) en el elemento del script (redundante con el type
atributo).iframe
noframes
target
(En desuso en los elementos map
y .) atributo en el mapa link
de imágenes del lado del cliente ( ) , y elementosform
a
map
link
form
base
La versión Frameset incluye todo lo que hay en la versión Transitional, así como el frameset
elemento (usado en lugar de body
) y el frame
elemento.
Además de las diferencias de transición anteriores, las especificaciones del conjunto de marcos (ya sea XHTML 1.0 o HTML 4.01) especifican un modelo de contenido diferente, reemplazando frameset
, body
que contiene frame
elementos u opcionalmente noframes
con un archivo body
.
Como lo demuestra esta lista, las versiones sueltas de la especificación se mantienen para soporte heredado. Sin embargo, contrariamente a las ideas erróneas populares, el cambio 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 principal logro 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 de la especificación básica XHTML 1.1. Del mismo modo, alguien que busque especificaciones sueltas (de transición) o de conjunto de marcos encontrará soporte XHTML 1.1 extendido similar (mucho de él está contenido en los módulos heredados o de marco). La modularización también permite que funciones separadas se desarrollen según su propio cronograma. Así, 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 muy avanzada para reemplazar los formularios HTML existentes.
En resumen, la especificación HTML 4 controló principalmente todas las diversas implementaciones de HTML en una única especificación claramente escrita basada en SGML. XHTML 1.0, transfirió esta especificación, tal como está, a la nueva especificación definida por XML. A continuación, XHTML 1.1 aprovecha la naturaleza extensible de XML y modulariza toda la especificación. XHTML 2.0 pretendía ser el primer paso para agregar nuevas características a la especificación en un enfoque basado en estándares.
HTML Living Standard, desarrollado por WHATWG, es la versión oficial, mientras que W3C HTML5 ya no está separado de WHATWG.
Hay algunos editores WYSIWYG ( lo que ves es lo que obtienes ), en los que el usuario presenta todo tal como aparece en el documento HTML utilizando una interfaz gráfica de usuario (GUI), a menudo similar a los procesadores de texto . El editor presenta el documento en lugar de mostrar el código, por lo que los autores no requieren 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én? ] abogando por un cambio en el 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 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 ha desarrollado en respuesta a una comprensión cada vez mayor 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 así un HTML 2.0 (para distinguirlo de las especificaciones informales anteriores). Las versiones futuras (generalmente compatibles con versiones posteriores) de HTML con nuevas funciones se lanzará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. DEBE 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 entender todas las implicaciones y sopesar cuidadosamente antes de elegir un curso diferente.
Los 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].