Loading AI tools
langage de balisage prédominant pour la production de pages web De Wikipédia, l'encyclopédie libre
Le HyperText Markup Language, généralement abrégé HTML ou, dans sa dernière version, HTML5, est le langage de balisage conçu pour représenter les pages web.
Extensions | .htm , .html |
---|---|
Type MIME | text/html |
PUID | |
Développé par | |
Version initiale |
, |
Type de format | |
Basé sur | |
Origine de | |
Norme | |
Spécification | |
Site web |
Ce langage permet d’écrire de l’hypertexte (d’où son nom), de structurer sémantiquement une page web, de mettre en forme du contenu, de créer des formulaires de saisie ou encore d’inclure des ressources multimédias dont des images, des vidéos, et des programmes informatiques. Le HTML offre également la possibilité de créer des documents interopérables avec des équipements très variés et conformément aux exigences de l’accessibilité du web.
Il est souvent utilisé conjointement avec le langage de programmation JavaScript et des feuilles de style en cascade (CSS). HTML est inspiré du Standard Generalized Markup Language (SGML). Il s'agit d'un format ouvert.
L’anglais « Hypertext Markup Language » se traduit littéralement en « langage de balisage d’hypertexte »[1]. On utilise généralement le sigle « HTML », parfois même en répétant le mot « langage » comme dans « langage HTML ». Hypertext est parfois écrit HyperText pour marquer le T du sigle HTML.
Le public non averti parle parfois de HTM au lieu de HTML, HTM étant l’extension de nom de fichier tronquée à trois lettres, une limitation que l’on trouve sur d’anciens systèmes d’exploitation de Microsoft.
Durant la première moitié des années 1990, avant l’apparition des technologies Web comme le langage JavaScript (JS), les feuilles de style en cascade (CSS) et le Document Object Model (DOM), l’évolution de HTML a dicté l’évolution du World Wide Web. Depuis la création de l'HTML 4 en 1997, l’évolution de HTML a fortement ralenti ; dix ans plus tard, HTML 4 reste utilisé dans les pages web. En 2008, la spécification du HTML5 est à l’étude[2] et devient d'usage courant dans la seconde moitié des années 2010.
HTML est une des trois inventions à la base du World Wide Web, avec le Hypertext Transfer Protocol (HTTP) et les adresses web (URL). HTML a été inventé pour permettre d'écrire des documents hypertextuels liant les différentes ressources d’Internet avec des hyperliens. Aujourd’hui, ces documents sont appelés « page web ». En , lorsque Tim Berners-Lee annonce publiquement le web sur Usenet, il ne cite que le langage Standard Generalized Markup Language (SGML), mais donne l’URL d’un document de suffixe .html.
Dans son livre Weaving the web[3], Tim Berners-Lee décrit la décision de baser HTML sur SGML comme étant aussi « diplomatique » que technique : techniquement, il trouvait SGML trop complexe, mais il voulait attirer la communauté hypertexte qui considérait que SGML était le langage le plus prometteur pour standardiser le format des documents hypertexte. En outre, SGML était déjà utilisé par son employeur, l’Organisation européenne pour la recherche nucléaire (CERN). ;
Les premiers éléments du langage HTML comprennent :
La description de HTML est alors assez informelle et principalement définie par le support des divers navigateurs web contemporains. Dan Connolly a aidé à faire de HTML une véritable application de SGML[4].
L’état de HTML correspond alors à ce que l’on pourrait appeler HTML 1.0. Il n’existe cependant aucune spécification portant ce nom, notamment parce que le langage était alors en pleine évolution. Un effort de normalisation était cependant en cours[5]. À partir de fin 1993, le terme HTML+ est utilisé pour désigner la version future de HTML[6],[7]. Malgré l’effort de normalisation ainsi initié, et jusqu’à la fin des années 1990, HTML est principalement défini par les implémentations des navigateurs web.
Avec le navigateur NCSA Mosaic, HTML connaît deux inventions majeures :
IMG
permet d’intégrer des images (dans un premier temps, uniquement aux formats GIF et XBM) aux pages web (Mosaic 0.10) ;Avec l’apparition de Netscape Navigator 0.9 le , le support de nombreux éléments de présentation est ajouté : attributs de texte, clignotement, centrage, etc.
Le développement de HTML prend alors deux voies divergentes :
Les concepteurs suivent les principes de SGML consistant à laisser la présentation à un langage de style. En l’occurrence, les feuilles de style en cascade (CSS) sont prévues pour HTML. Seul le support des tables est rapidement intégré aux navigateurs, notamment parce qu’il permet une très nette amélioration de la présentation.
Outre la multiplication des éléments de présentation, les logiciels d’alors produisant et consommant du HTML conçoivent souvent les documents comme une suite de commandes de formatage plutôt que comme un marquage représentant la structure en arbre aujourd’hui appelée Document Object Model (DOM). Le manque de structure du HTML alors mis en œuvre est parfois dénoncé comme étant de la « soupe de balises », en anglais : tag soup.
En , le World Wide Web Consortium (W3C) nouvellement fondé propose le résultat de ses recherches sur HTML+ : le brouillon HTML 3.0. Il comprend notamment le support des tables, des figures et des expressions mathématiques. Ce brouillon expire le sans donner de suites directes. Fin 1995, le RFC 1866[9] décrivant HTML 2.0 est finalisé. Le principal éditeur est Dan Connolly. Ce document décrit HTML tel qu’il existait avant , donc sans les nombreuses additions de Netscape Navigator.
Le , le W3C publie la spécification HTML 3.2. Elle décrit la pratique courante observée début 1996[10], donc avec une partie des additions de Netscape Navigator et d’Internet Explorer. Ses plus importantes nouveautés sont la standardisation des tables et de nombreux éléments de présentation. HTML 3.2 précède de peu HTML 4.0 et contient des éléments en prévision du support des styles et des scripts.
Le , le W3C publie la spécification HTML 4.0 qui standardise de nombreuses extensions supportant les styles et les scripts, les cadres (frames) et les objets (inclusion généralisée de contenu). HTML 4.0 apporte également différentes améliorations pour l’accessibilité des contenus[11] dont principalement la possibilité d’une séparation plus explicite entre structure et présentation du document, ou le support d’informations supplémentaires sur certains contenus complexes tels que les formulaires, les tableaux ou les sigles. HTML 4.0 introduit trois variantes du format, destinées à favoriser l’évolution vers un balisage plus signifiant, tout en tenant compte des limites temporaires des outils de production :
applet
et frame
qui sont remplacés par l’élément object
conçu pour être plus apte à l’interopérabilité et à l’accessibilité ;Ces variantes perdurent par la suite sans modifications notables en HTML 4.01 et dans le format de transition XHTML 1.0 issu de HTML. La dernière spécification de HTML est la version 4.01 datant du . Elle n’apporte que des corrections mineures à la version 4.0.
Le développement de HTML en tant qu’application du Standard Generalized Markup Language (SGML) est officiellement abandonné au profit de XHTML, application de Extensible Markup Language (XML).
Cependant, en 2004, des éditeurs de navigateurs web[12] créent le web Hypertext Application Technology Working Group (WHATWG) dans le but, notamment, de relancer le développement du format HTML et de répondre aux nouveaux besoins sur une base technologique jugée plus aisément implémentable que celle du XHTML 2.0 en cours de conception.
Ceci s’inscrit dans le contexte d’une contestation plus générale du mode de fonctionnement du W3C, réputé trop fermé par une partie des développeurs et designers web[13].
En , tirant la conséquence des réticences d’une partie de l’industrie et des concepteurs de contenus web face à XHTML 2.0[14], le W3C relance le développement de HTML et crée un nouveau groupe de travail encadré par Chris Wilson (Microsoft) et initialement Dan Connolly (W3C), puis Michael Smith (W3C).
Il s’agit notamment[15] :
Les travaux du WHATWG ont été formellement adoptés en comme point de départ d’une nouvelle spécification HTML5[16]. Ce document[17] a été publié sous forme de Working Draft le . Parmi les principes de conception évoqués par le groupe de travail figurent en particulier[18] :
Une Accessibility Task Force est créée par le W3C en afin de résoudre les problèmes de compatibilité du nouveau format avec les normes d'accessibilité[19], liés notamment à l'implémentation d'ARIA, aux alternatives textuelles et aux nouveaux éléments canvas
et video
[20].
Le développement de XHTML 2.0 est initialement poursuivi en parallèle, en réponse aux besoins d’autres secteurs du web, tels que les périphériques mobiles, les applications d’entreprise et les applications serveurs[21]. Puis, en , le W3C décide la non-reconduction du XHTML 2 Working Group à la fin 2009[22].
Avec l'abandon du XHTML 2, la version XHTML 1.1 reste donc la version normalisée. Le HTML5 sera compatible avec le XHTML et le XML, et autorisera donc des documents XHTML5[23]. Cependant, il est probable que le W3C s'oriente vers un abandon pur et simple du XHTML 1.1, car l'implantation du XML dans le HTML5 rend inutile la définition de document de type XHTML y.y (où y.y sont les numéros de version)[23].
En , des divergences de points de vue entre Ian Hickson (ingénieur chez Google), qui écrit la spécification HTML5, et les membres du groupe de travail du W3C conduisent le WHATWG à créer HTML Living Standard (littéralement : standard vivant du HTML), une spécification de HTML prévue pour être en constante évolution, afin de coller avec les développements rapides de nouvelles fonctionnalités par les développeurs de navigateurs[24](par opposition à des versions numérotées, donc « fixes »).
Le HTML Living Standard a pour but d'inclure le HTML5, et de le développer en permanence[25]. En particulier, dans la version du , le document de référence[25] explique que le HTML5 du W3C, publié le , est basé sur une version du HTML Living Standard, mais que le HTML Living Standard ne s'arrête pas à cette version, et continue à évoluer. Il développe en particulier les différences entre la version W3C (le HTML5) et la version HTML Living Standard (par exemple, les nouveaux bugs ne sont pas pris en compte dans le HTML5, des différences syntaxiques sont répertoriées, et de nouvelles balises créées par le HTML Living Standard ne sont pas incluses dans le HTML5).
HTML est un langage de description de format de document qui se présente sous la forme d’un langage de balisage dont la syntaxe vient du Standard Generalized Markup Language (SGML).
Jusqu’à sa version 4.01 comprise, HTML est formellement décrit comme une application du SGML. Cependant, les spécifications successives admettent, par différents biais, que les agents utilisateurs ne sont pas, en pratique, des analyseurs SGML conformes[26]. Les navigateurs Web n’ont jamais été capables de déchiffrer l’ensemble des variations de syntaxe permises par SGML[27] ; en revanche ils sont généralement capables de rattraper automatiquement de nombreuses erreurs de syntaxe, suivant la première partie de la « loi de Postel » : « Soyez libéral dans ce que vous acceptez, et conservateur dans ce que vous envoyez » (RFC 791[28]). De fait, les développeurs de pages Web et de navigateurs Web ont toujours pris beaucoup de liberté avec les règles syntaxiques de SGML. Enfin, la document type definition (DTD) de HTML, soit la description technique formelle de HTML, n’a été écrite par Dan Connolly que quelques années après l’introduction de HTML[4].
Malgré les libertés prises avec la norme, la terminologie propre à SGML est utilisée : document, élément, attribut, valeur, balise, entité, validité, application, etc. Grâce à la DTD, il est possible de vérifier automatiquement la validité d’un document HTML à l’aide d’un parseur SGML[29].
À l’origine, HTML a été conçu pour baliser (ou marquer) simplement le texte, notamment pour y ajouter des hyperliens. On utilisait un minimum de balises, comme dans le document HTML suivant :
<TITLE>Exemple de HTML</TITLE>
Ceci est une phrase avec un <A HREF=cible.html>hyperlien</A>.
<P>
Ceci est un paragraphe où il n'y a pas d'hyperlien.
Cet exemple contient du texte, cinq balises et une référence d’entité :
<TITLE>
est la balise ouvrante de l’élément TITLE
.</TITLE>
est la balise fermante de l’élément TITLE
.Exemple de HTML
est le contenu de l’élément TITLE
.<A HREF=cible.html>
est la balise ouvrante de l’élément A
, avec :
HREF=cible.html
, l’attribut HREF
dont la valeur est cible.html
.<P>
est la balise ouvrante de l’élément P
. Toutefois, elle est utilisée ici comme s’il s’agissait d’un séparateur de paragraphe, et c’est même ainsi qu’elle est souvent présentée dans les plus anciennes documentations de HTML. Il s’agit de la balise ouvrante du paragraphe dont le contenu est Ceci est un paragraphe où il n’y a pas d’hyperlien.
La balise fermante de l’élément P
, qui est optionnelle, est ici omise. L’élément P
est implicitement terminé lorsqu’un nouveau paragraphe commence ou que l’élément parent est fermé (cas présent).ù
est une référence d’entité représentant le caractère « ù ».Un document HTML valide est un document qui respecte la syntaxe SGML, n’utilise que des éléments et attributs standardisés, et respecte l’imbrication des éléments décrite par le standard. Il ne manque qu’une déclaration de type de document à l’exemple précédent pour qu’il soit un document HTML 2.0 valide[30].
Un document valide n’est cependant pas suffisant pour être conforme à la spécification HTML visée. En effet, outre l’exigence de validité, un document conforme est soumis à d’autres contraintes qui ne sont pas exprimées par la définition de type de document (DTD), mais qui le sont par la spécification elle-même. C’est notamment le cas du type de contenu de certains attributs, comme celui de l’attribut datetime
: pour être conforme à HTML 4.01, celui-ci doit être lui-même conforme à un sous-ensemble de la norme ISO 8601[31]. Un parseur strictement SGML tel que le validateur HTML du W3C ne peut donc pas garantir la conformité d’un document HTML.
Dans les premières années, les documents HTML étaient souvent considérés comme des structures plates, et les balises comme des commandes de style[32]. Ainsi la balise <p>
était considérée comme un saut de ligne, et la balise </p>
était ignorée. Ou encore lorsque JavaScript 1.0 est apparu, il ne donnait accès qu’aux liens et formulaires du document à travers les tables document.forms
et document.links
.
Avec l’introduction des Cascading Style Sheets et du Document Object Model, il a fallu considérer que les documents HTML ont une véritable structure en arbre, avec un élément racine contenant tous les autres éléments[33]. Les balises ouvrantes et fermantes de ces éléments restent d’ailleurs optionnelles. Cependant, aujourd’hui, on a tendance à baliser chaque élément[34] et à indiquer la DTD. À l'exception de l'élément à la racine, chaque élément a exactement un élément parent direct ; cet « arbre du document » est notamment utilisé par la structure de formatage qui en est dérivée pour l’application des feuilles de style en cascade où chaque élément peut avoir un fond, un bord et une marge propres.
La structure la plus commune en HTML consiste à avoir un élément racine html
avec deux enfants : un élément head
pour l'en-tête du document contenant surtout des méta-informations, suivi d'un élément body
pour le corps du document. L'élément title
dans l'élément head
est obligatoire : il donne un titre au document qui est par exemple affiché en titre d'onglet de navigateur, en titre de résultat de moteur de recherche, et en nom de marque-page.
Source HTML | Modèle du document |
---|---|
<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
<title>
Exemple de HTML
</title>
</head>
<body>
Ceci est une phrase avec un <a href="cible.html">hyperlien</a>.
<p>
Ceci est un paragraphe où il n’y a pas d’hyperlien.
</p>
</body>
</html>
|
html head title texte body texte a texte texte p texte |
La version 4 de HTML décrit 91 éléments. En suivant la spécification de HTML 4, les fonctionnalités implémentées par HTML peuvent être réparties ainsi :
Les attributs permettent de préciser les propriétés des éléments HTML. Il y a 188 attributs dans la version 4 de HTML[48].
Certains attributs s’appliquent à presque tous les éléments :
id
(identificateur unique) et class
(identificateur répétable)[49] destinés à permettre l’application de traitements externes, tels que l’application de styles de présentation ou de manipulation de l’arbre du document via un langage de script. Il s’y ajoute l’attribut style
[50] permettant de définir le style de présentation de l’élément (généralement en CSS), et l’attribut title
[51] apportant une information complémentaire de nature le plus souvent libre (L’exception majeure est l’utilisation du title
pour déterminer le style permanent et les éventuels styles alternatifs appliqués à un document via des éléments link
) ;dir
et lang
[36] spécifiant la direction d’écriture et la langue du contenu ;onclick
, ondblclick
, onkeydown
, onkeypress
, onkeyup
, onmousedown
, onmousemove
, onmouseout
, onmouseover
, onmouseup
[52], qui capturent les évènements générés dans l’élément pour appeler un script.D’autres attributs sont propres à un élément unique, ou des éléments similaires. Par exemple :
img
, object
, iframe
;label
des étiquettes des contrôles de formulaire et son attribut for
désignant le contrôle concerné : c’est, en HTML, et avec les attributs usemap
et ismap
des images, l’une des très rares associations explicites et formalisées entre des éléments, indépendamment de leur ordre linéaire dans le code source.La plupart des attributs sont facultatifs. Quelques éléments ont cependant des attributs obligatoires :
img
est obligatoirement doté d’un attribut src
spécifiant l’URI de la ressource graphique qu’il représente. Il en est de même de tous les éléments dits « vides » et « remplacés »[53] qui, au prix d’une entorse aux règles SGML, n’ont pas de contenu propre. C’est également le cas d’éléments non vides pour des raisons fonctionnelles, comme l’élément form
dont l’attribut action
indique la cible serveur qui traitera les données après soumission ;alt
permettant d’indiquer un contenu textuel brut destiné à remplacer la ressource graphique dans les contextes de consultation où elle ne peut pas être restituée ou perçue.Le type de contenu des attributs HTML échappe pour partie au champ d’application de cette norme, et sa validation relève de normes tierces telles que les URI, les types de contenu ou les codes de langages.
Certains attributs sont enfin de type booléen. Ce sont les seuls attributs dont la syntaxe peut être validement implicite en HTML : l’attribut selected
d’un contrôle de formulaire peut ainsi être raccourci sous la forme selected
remplaçant la forme complète selected="selected"
. Cette forme particulière est un des points différenciant HTML de la syntaxe des documents « bien formés » au sens XML.
Les pages Web peuvent être rédigées dans toutes sortes de langues et de très nombreux caractères peuvent être utilisés, ce qui requiert soit un jeu de caractères par type d’écriture, soit un jeu de caractères universel. Lors de l’apparition de HTML, le jeu de caractères universel Unicode n’était pas encore inventé, et de nombreux jeux de caractères se côtoyaient, notamment ISO-8859-1 pour l’alphabet latin et ouest-européen, Shift-JIS pour le japonais, KOI8-R pour le cyrillique. Aujourd’hui, le codage UTF-8 de Unicode est le plus répandu.
Le protocole de communication HTTP transmet le nom du jeu de caractères. L’en-tête HTML peut comporter le rappel de ce jeu de caractères, qui devrait être identique, sauf erreur de réglage. Enfin, à la suite d'un mauvais réglage, le jeu de caractères réellement utilisé peut encore différer du jeu annoncé. Ces mauvais réglages causent généralement des erreurs d’affichage du texte, notamment pour les caractères non couverts par la norme ASCII.
Avant la généralisation d'Unicode, des entités ont été définies pour représenter certains caractères non ASCII. Cela a commencé avec les caractères d'ISO 8859-1 dans la norme HTML 2.0. Pour les diacritiques, ces entités suivent un principe simple : la lettre est suivie de l'abréviation de la diacritique associée.
caractère | référence d'entité | remarque |
---|---|---|
Á | Á |
acute pour l'accent aigu |
 |  |
circ pour l'accent circonflexe |
À | À |
grave pour l'accent grave |
Å | Å |
ring pour le rond en chef |
à | à |
tilde pour le tilde |
Ä | Ä |
uml (Umlaute) pour le tréma |
Ç | Ç |
cedil pour la cédille |
Ø | Ø |
slash pour la barre oblique |
Tel qu’il a été formalisé par le W3C, HTML est conçu pour optimiser l’interopérabilité des documents. Le HTML ne sert pas à décrire le rendu final des pages web. En particulier, contrairement à la publication assistée par ordinateur, HTML n’est pas conçu pour spécifier l’apparence visuelle des documents. HTML est plutôt conçu pour donner du sens aux différentes parties du texte : titre, liste, passage important, citation, etc. Le langage HTML a été développé avec l’intuition que les appareils de toutes sortes seraient utilisés pour consulter le web : les ordinateurs personnels avec des écrans de résolution et de profondeur de couleurs variables, les téléphones portables, les appareils de synthèse et de reconnaissance de la parole, les ordinateurs avec une bande passante faible comme élevée, et ainsi de suite.
Comme HTML ne s’attache pas au rendu final du document, un même document HTML peut être consulté à l’aide de matériels et logiciels très divers. Au niveau matériel, un document peut notamment être affiché sur un écran d'ordinateur en mode graphique ou un terminal informatique en mode texte, il peut être imprimé, ou il peut être prononcé par synthèse vocale. Au niveau logiciel, HTML ne fait pas non plus de supposition, et plusieurs types de logiciels lisent le HTML : navigateur web, robot d'indexation, scripts divers (en Perl, PHP) de traitement automatique.
Un haut degré d’interopérabilité permet de baisser les coûts des fournisseurs de contenus car une seule version de chaque document sert des besoins très variés. Pour l’utilisateur du web, l’interopérabilité permet l’existence de nombreux navigateurs concurrents, tous capables de consulter l’ensemble du web.
Chaque version de HTML a essayé de refléter le plus grand consensus entre les acteurs de l’industrie, de sorte que les investissements consentis par les fournisseurs de contenus ne soient pas gaspillés et que leurs documents ne deviennent en peu de temps illisibles. La séparation du fond et de la forme n’a pas toujours été respectée au cours du développement du langage, comme en témoigne par exemple le balisage de style de texte, qui permet d’indiquer notamment la police de caractères souhaitée pour l’affichage, sa taille, ou sa couleur.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.