Hypertext Markup Language
1386
31813902
2008-07-23T10:27:41Z
TXiKiBoT
195090
robot Ajoute: [[lmo:XML]]
L'<strong>Hypertext Markup Language</strong>, généralement abrégé '''HTML''', est le [[format de données]] conçu pour représenter les [[pages web]]. Il permet notamment d'implanter de l'[[hypertexte]] dans le contenu des pages et repose sur un [[langage de balisage]], d’où son nom. HTML permet aussi de structurer sémantiquement et de mettre en forme le contenu des pages, d’inclure des [[Ressource du World Wide Web|ressources]] [[multimédia]]s dont des [[image numérique|images]], des formulaires de saisie, et des éléments programmables tels que des [[applet]]s. Il permet de créer des documents [[Interopérabilité en informatique|interopérables]] avec des équipements très variés de manière conforme aux exigences de l’[[accessibilité du web]]. Il est souvent utilisé conjointement avec des [[langages de programmation]] ([[JavaScript]]) et des formats de présentation ([[feuilles de style en cascade]]). HTML est initialement dérivé du [[Standard Generalized Markup Language]] (SGML).
==Dénomination==
L’[[anglais]] ''Hypertext Markup Language'' est rarement traduit littéralement en '''langage de balisage d’hypertexte'''<ref name="ISO">{{fr}} [http://www.iso.ch/iso/fr/CatalogueDetailPage.CatalogueDetail?CSNUMBER=27688&ICS1=35&ICS2=240&ICS3=30&scopelist= ISO/IEC 15445:2000, Langage de balisage d’hypertexte] (norme [[Organisation internationale de normalisation|ISO]])</ref>. On utilise généralement l’abréviation HTML, parfois même en répétant le mot « langage » comme dans « langage HTML ». ''Hypertext'' est parfois écrit ''HyperText'' pour marquer le ''T'' de l’abréviation 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 qu’on trouve sur d’anciens [[systèmes d'exploitation]] de [[Microsoft]].
==Évolution du langage==
Durant la première moitié des [[années 1990]], avant l’apparition des technologies web comme [[JavaScript]], les [[feuilles de style en cascade]] et le [[Document Object Model]], l’évolution de HTML a dicté l’évolution du [[World Wide Web]]. Depuis [[1997]] et HTML 4, l’évolution de HTML a fortement ralenti ; 10 ans plus tard, HTML 4 reste utilisé dans les pages web.
=== [[1989]] - [[1992]] : Origine ===
HTML est une des trois inventions à la base du [[World Wide Web]], avec le [[Hypertext Transfer Protocol]] (HTTP) et les [[Adresse web|adresses web]]. HTML a été inventé pour pouvoir écrire des documents [[hypertexte|hypertextuels]] liant les différentes ressources d’[[Internet]] avec des [[hyperlien]]s. Aujourd’hui, ces documents sont appelés « [[page web]] ». En {{date||août|1991}}, lorsque [[Tim Berners-Lee]] annonce publiquement le web sur [[Usenet]], il ne cite que le langage [[Standard Generalized Markup Language|SGML]], mais donne l’[[Repère uniforme de ressource|URL]] d’un document de suffixe <code>.html</code>. Dans son livre {{lang|en|'Weaving the web''}}<ref>{{en}}[[Tim Berners-Lee]], Mark Fischetti, {{lang|en|''Weaving the web: the past, present and future of the World Wide Web by its inventor''}}, [[Londres]], Texere, [[2000]], ISBN 1-58799-018-0, p. 45-46</ref>, 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ément HTML|éléments du langage HTML]] comprennent le titre du document, les [[hyperlien]]s, la structuration du texte en titres, sous-titres, listes ou texte brut, et un mécanisme rudimentaire de recherche par index. La description de HTML est alors assez informelle et principalement définie par le support des divers [[Navigateur web|navigateurs web]] contemporains. [[Dan Connolly]] a aidé à faire de HTML une véritable application de SGML<ref name="dandtd">{{en}}James Gillies, [[Robert Cailliau]], {{lang|en|''How the web was born: the story of the World Wide Web''}}, [[Oxford]], [[Oxford University Press]], [[2000]], p. 212-213, ISBN 0-19-286207-3</ref>.
=== [[1993]] : Apports de [[NCSA Mosaic]] ===
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<ref>{{en}}[http://www.w3.org/MarkUp/draft-ietf-iiir-html-01.txt {{lang|en|Hypertext Markup Language (HTML)}}], Internet Draft, juin 1993</ref>. À partir de fin [[1993]], le terme HTML+ sera utilisé pour désigner la version future de HTML<ref name="html4history">{{en}}[http://www.w3.org/TR/html4/intro/intro.html#h-2.2.1 {{lang|en|HTML 4.01 Specification - 2.2.1 A brief history of HTML}}] - {{fr}}[http://www.la-grange.net/w3c/html4.01/intro/intro.html#h-2.2.1 2.2.1 Une brève histoire de HTML]</ref>. 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.
Avec le navigateur [[NCSA Mosaic]], HTML connaît deux inventions majeures. D’abord l’invention de l’élément <code>IMG</code> permet d’intégrer des [[image numérique|images]] (dans un premier temps, uniquement des [[Graphics Interchange Format|GIF]] et des [[X BitMap|XBM]]) aux [[page web|pages web]] (Mosaic 0.10). Ensuite l’invention des formulaires (Mosaic 2.0pre5) rend le web interactif en permettant aux visiteurs de saisir des données dans les pages et de les envoyer au [[serveur web]]. Cette invention permet notamment de passer des commandes, donc d’utiliser le web pour faire du [[commerce électronique]].
=== [[1994]] : Apports de [[Netscape Navigator]] ===
Avec l’apparition de [[Netscape Navigator]] 0.9 le [[13 octobre|13]] [[octobre 1994|octobre]], 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. D’une part, les développeurs de navigateurs s’attachent à maximiser l’impact visuel des pages web en réponse aux demandes des utilisateurs<ref>Marc Andreessen, créateur de Netscape Navigator, déclarait dès 1993 sur la liste de discussion www-talk : {{citation|Je pense que s’occuper du SGML en général est une complète perte de temps, et que nous en serions aujourd’hui beaucoup plus loin si nous n’étions pas encombrés avec cet héritage SGML que nous continuons à porter. {{unité|99.99|%}} des gens avec qui je parle veulent mettre en ligne des documents riches, veulent contrôler leur apparence, et se contre-fichent totalement du balisage sémantique ou des différences entre la structure et le rendu d’un document.}} {{en}} http://1997.webhistory.org/www.lists/www-talk.1993q2/0533.html</ref>. D’autre part, les concepteurs du web proposent d’étendre les capacités de description sémantique (logos, notes de bas de page, etc.) et les domaines d’applications (formules mathématiques, tables) de HTML. En ceci, ils suivent les principes de [[Standard Generalized Markup Language|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 [[balise (informatique)|balise]]s » ({{lang|en|''tag soup''}} en [[anglais]]).
=== [[1995]] - [[1996]] : HTML 2.0 ===
En {{date||mars|1995}}, 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 {{date|28|septembre|1995}} sans donner de suites directes. Fin [[1995]], le RFC 1866 décrivant HTML 2.0 est finalisé. Le principal éditeur est [[Dan Connolly]]. Ce document décrit HTML tel qu’il existait avant {{date||juin|1994}}, donc sans les nombreuses additions de Netscape Navigator.
=== [[1997]] : HTML 3.2. et 4.0 ===
Le [[14 janvier|14]] [[janvier 1997|janvier]], le W3C publie la spécification HTML 3.2. Elle décrit la pratique courante observée début [[1996]]<ref>{{en}}[http://www.w3.org/TR/REC-html32.html {{lang|en|''HTML 3.2 Reference Specification, chap. Abstract''}}]</ref>, 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 [[18 décembre|18]] [[décembre 1997|décembre]], le W3C publie la spécification HTML 4.0 qui standardise de nombreuses extensions supportant les styles et les scripts, les cadres ({{lang|en|''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<ref>La W3C a lancé en 1997 les premiers travaux de son [http://www.w3.org/WAI/ {{en}}Initiative pour l’Accessibilité du web] (WAI), qui entame alors l’élaboration de ce qui allait devenir les premières [http://www.w3.org/TR/WCAG10/ {{en}}Directives pour l’Accessibilité des Contenus web] (WCAG), essentiellement consacrées à l’accessibilité des documents HTML</ref> 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 :
* la variante stricte ({{lang|en|''strict''}}) exclut des éléments et attributs dits « de présentation », destinés à être remplacés par les styles CSS, ainsi que les éléments pour inclure {{lang|en|''[[applet]]''}} et {{lang|en|''frame''}} qui sont remplacés par l’élément <code>object</code> réputé plus apte à l’interopérabilité et à l’accessibilité.
* la variante transitoire ({{lang|en|''transitional''}}) étend la variante stricte en reprenant les éléments et attributs dépréciés de HTML 3.2, dont les éléments de présentation sont couramment utilisés par les [[éditeur HTML|éditeurs HTML]] de l’époque.
* la variante {{lang|en|''frameset''}} normalise la technique des jeux de cadres composant une ressource unique à partir de plusieurs pages web assemblées par le navigateur.
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 4.01 datant du {{date|24|décembre|1999}}. Elle n’apporte que des corrections mineures à la version 4.0.
=== [[2000]] - [[2006]] : XHTML ===
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 fabricants de [[navigateur web|navigateurs web]]<ref>L’initiative vient d’Opera et de Mozilla, rejoints par la suite par Apple, {{en}} http://www.w3.org/2004/04/webapps-cdf-ws/papers/opera.html</ref> 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<ref>{{en}}{{lang|en|Jeffrey Zeldman, [http://www.zeldman.com/2006/07/17/an-angry-fix/ An angry fix]}}</ref>.
=== [[2007]] à nos jours ===
En {{date||mars|2007}}, tirant la conséquences des réticences d’une partie de l’industrie et des concepteurs de contenus web face à XHTML 2.0<ref>Tim Berners Lee écrivait dès {{date||octobre|2006}} : « la tentative de faire passer tout le monde à XML et aux contraintes syntaxiques que cela impose (guillemets autour des valeurs d’attributs, slashes dans les balises simples et espaces de noms), à intégrer d’un seul coup, n’a pas fonctionné … Il faut créer un groupe de travail HTML entièrement nouveau qui, contrairement au précédent, sera destiné à apporter des améliorations incrémentales à HTML, ainsi qu’à XHTML », {{en}} http://dig.csail.mit.edu/breadcrumbs/node/166</ref>, le W3C relance le développement de HTML et crée un nouveau groupe de travail dirigé par Chris Wilson ([[Microsoft]]) et Dan Connolly ([[World Wide Web Consortium|W3C]]). Il s’agit notamment<ref>Charte du groupe de travail HTML W3C, {{en}} http://www.w3.org/2007/03/HTML-WG-charter#deliverables </ref> :
* de faire évoluer HTML pour décrire la sémantique des documents mais aussi les applications en ligne ;
* de parvenir à un langage extensible via XML tout en maintenant une version non XML compatible avec les parseurs HTML des navigateurs actuels ;
* et d’enrichir les interfaces utilisateurs avec des contrôles spécifiques : barres de progrès, menus, champs associés à des types de données spécifiques.
Les travaux du WHATWG ont été formellement adoptés en {{date||mai|2007}} comme point de départ d’une nouvelle spécification HTML 5<ref>{{en}} http://www.w3.org/2002/09/wbs/40318/htmlbg/results</ref>. Ce document<ref>{{en}} {{lang|en|''HTML 5 – A vocabulary and associated APIs for HTML and XHTML – W3C Working Draft 22 January 2008''}}, http://www.w3.org/TR/html5/</ref> a été publié sous forme de {{lang|en|''Working Draft''}} le {{date|22|janvier|2008}}.
Parmi les principes de conception évoqués par le groupe de travail figurent en particulier<ref>{{en}} {{lang|en|[http://www.w3.org/html/wg/html5/principles/ HTML Design Principles]}}</ref> :
* la compatibilité des futures implémentations HTML avec le contenu web existant, et la possibilité pour d’anciens agents utilisateurs d’exploiter les futurs contenus HTML 5 ;
* une approche pragmatique, préférant les évolutions aux modifications radicales, et adoptant les technologies ou pratiques déjà largement partagées par les auteurs de contenus actuels ;
* la priorité donnée, en cas de conflit d’intérêt, aux besoins des utilisateurs sur ceux des auteurs, et par suite, à ceux des auteurs sur les contraintes d’implémentation par les navigateurs ;
* le compromis entre la richesse sémantique du langage et l’utilité pratique des solutions disponibles pour remplir l’objectif majeur d’indépendance envers le media de restitution.
Le développement de XHTML 2.0 est 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<ref>« Le XHTML a été appliqué sur d’autres marchés, dont les périphériques mobiles, les applications d’entreprise, les applications serveurs, ainsi que dans un nombre croissant d’applications web telles que les blogiciels. Par exemple, le Groupe de travail des Meilleures Pratiques du web Mobile a inclus le standard XHTML Basic comme pierre angulaire des Meilleures Pratiques du web Mobile car les logiciels s’exécutant avec peu de mémoire peuvent le prendre en charge. … Avec la mise en place du Groupe de travail XHTML 2, le W3C continuera son travail technique sur le langage et prendra parallèlement en compte la revalorisation de la technologie afin d’expliquer clairement son indépendance et sa valeur sur le marché … », Communiqué du W3C, {{date|7|mars|2007}}, [http://www.w3.org/2007/03/html-pressrelease {{en}}].</ref>.
== Description de HTML ==
HTML est un [[Langages de programmation#Langages de définition de données|langage de description de document]] qui se présente sous la forme d’un [[langage de balisage]] dont la syntaxe vient du [[Standard Generalized Markup Language]] (SGML).
===Syntaxe de HTML===
Jusqu’à sa version 4.01 comprise, HTML est formellement décrit comme une application du [[Standard Generalized Markup Language]] (SGML). Cependant, les spécifications successives admettent, par différents biais, que les agents utilisateurs ne sont pas, en pratique, des analyseurs SGML conformes<ref>{{en}}{{lang|en|Henri Sivonen, [http://hsivonen.iki.fi/thesis/html5-conformance-checker.xhtml#history An HTML5 Conformance Checker], Master’s Thesis, Helsinki, 2007}}</ref>. Les navigateurs web n’ont jamais été capables de déchiffrer l’ensemble des variations de syntaxe permises par SGML<ref>Comme la forme courte <code><em/emphase/></code> au lieu de <code><em>emphase</em></code></ref> ; 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 [[Jon Postel|Postel]] » : « Soyez libéral dans ce que vous acceptez, et conservateur dans ce que vous envoyez » (RFC 791). De fait, les développeurs de [[pages web]] et de [[navigateur web|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<ref name="dandtd"/>.
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<ref>Comme valideur HTML, on peut notamment citer le {{en}}[http://validator.w3.org/ {{lang|en|''Markup Validation Service''}}] du W3C.</ref>.
À 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 :
<source lang="xml"><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.
</source>
Cet exemple contient du texte, 5 balises et une référence d’entité :
*<code><TITLE></code> est la balise ouvrante de l’élément <code>TITLE</code>.
*<code></TITLE></code> est la balise fermante de l’élément <code>TITLE</code>.
*<code>Exemple de HTML</code> est le contenu de l’élément <code>TITLE</code>.
*<code><A HREF=cible.html></code> est la balise ouvrante de l’élément <code>A</code>, avec :
**<code>HREF=cible.html</code>, l’attribut <code>HREF</code> dont la valeur est <code>cible.html</code>.
*<code><P></code> est la balise ouvrante de l’élément <code>P</code>. 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 <code>Ceci est un paragraphe o&ugrave; il n’y a pas d’hyperlien.</code> La balise fermante de l’élément <code>P</code>, qui est optionnelle, est ici omise. L’élément <code>P</code> est implicitement terminé lorsqu’un nouveau paragraphe commence ou que l’élément parent est fermé (cas présent).
*<code>&ugrave;</code> est une référence d’entité représentant le [[caractère (informatique)|caractère]] « [[ù]] ».
* Les balises peuvent être indifféremment écrites en minuscules ou majuscules. L’usage des minuscules devient plus courant car XHTML les impose.
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 [http://validator.w3.org/check?ss=1&doctype=HTML+2.0&fragment=%3Ctitle%3EExemple%20de%20HTML%3C/title%3E%0ACeci%20est%20une%20phrase%20avec%20un%20%3Ca%20href=cible.html%3Ehyperlien%3C/a%3E.%0A%3Cp%3E%0ACeci%20est%20un%20nouveau%20paragraphe%20où%20il%20n'y%20a%20pas%20d'hyperlien.].
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 par exemple celui de l'attribut <code>datetime</code> : pour être conforme à HTML4.01, celui-ci doit être lui-même conforme à un sous-ensemble de la norme ISO 8601<ref>{{en}} [http://www.w3.org/TR/html401/struct/text.html#adef-datetime {{lang|en|Marking document changes: The INS and DEL elements, HTML 4.01 Specification, W3C}}</ref>. Un parseur strictement SGML tel que le validateur HTML du W3C ne peut donc déterminer la conformité d'un document HTML.
===Structure des documents HTML===
{{Référence nécessaire|Ce n'est qu'avec l'introduction des [[Cascading Style Sheets]] et du [[Document Object Model]] qu’il a fallu considérer que les documents HTML ont une véritable structure en [[arbre (informatique)|arbre]]}}, avec un élément racine contenant tous les autres éléments. Les balises ouvrantes et fermantes de ces éléments restent d’ailleurs optionnelles. Cependant, aujourd’hui, on a tendance à baliser chaque élément<ref>Pour simplifier SGML, le standard XML (sur lequel est basé XHTML) n’autorise pas les balises optionnelles.</ref> et à indiquer la DTD. Chaque élément fait partie du contenu d’exactement un autre élément ; 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.
<table border>
<caption>Structure d’un document HTML</caption>
<tr><th scope=col>source HTML</th><th scope=col>modèle du document</th></tr>
<tr>
<td>
<source lang="xml"><!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>
</source>
</td>
<td>
<div style="padding:0 0.25em;border:1px solid #393">
html
<div style="padding:0 0.25em;margin:0.25em;margin-left:1em;border:1px solid #393">
head
<div style="padding:0 0.25em;margin:0.25em;margin-left:1em;border:1px solid #393">
title
<div style="padding:0 0.25em;margin:0.25em;margin-left:1em;border:1px dotted #393">
''texte''
</div>
</div>
</div>
<div style="padding:0 0.25em;margin:0.25em;margin-left:1em;border:1px solid #393">
body
<div style="padding:0 0.25em;margin:0.25em;margin-left:1em;border:1px dotted #393">
''texte''
</div>
<div style="padding:0 0.25em;margin:0.25em;margin-left:1em;border:1px solid #393">
a
<div style="padding:0 0.25em;margin:0.25em;margin-left:1em;border:1px dotted #393">
''texte''
</div>
</div>
<div style="padding:0 0.25em;margin:0.25em;margin-left:1em;border:1px dotted #393">
''texte''
</div>
<div style="padding:0 0.25em;margin:0.25em;margin-left:1em;border:1px solid #393">
p
<div style="padding:0 0.25em;margin:0.25em;margin-left:1em;border:1px dotted #393">
''texte''
</div>
</div>
</div>
</div>
</td>
</tr>
</table>
=== Éléments de HTML ===
{{Article détaillé|Élément HTML}}
La version 4 de HTML décrit 91 [[élément HTML|éléments]]. En suivant la spécification de HTML 4, les fonctionnalités implémentées par HTML peuvent être réparties ainsi :
; Structure générale d’un document HTML<ref>{{en}}[http://www.w3.org/TR/html401/struct/global.html {{lang|en|''HTML 4.01 Specification - 7 The global structure of an HTML document''}}] - {{fr}}[http://www.la-grange.net/w3c/html4.01/struct/global.html 7 La structure globale du document HTML]</ref> : Au plus haut niveau, un document HTML est séparé entre un [[Élément HTML#Éléments d'en-tête|en-tête]] et un corps. L’en-tête contient les informations sur le document, notamment son titre. Le corps contient ce qui est affiché.
; Informations sur la langue<ref name="dirlang">{{en}}[http://www.w3.org/TR/html401/struct/dirlang.html {{lang|en|''HTML 4.01 Specification - 8 Language information and text direction''}}] - {{fr}}[http://www.la-grange.net/w3c/html4.01/struct/dirlang.html 8 Les indications de langue et la direction du texte]</ref> : Il est possible d’indiquer la langue de n’importe quelle partie du document et de gérer le [[Texte bi-directionnel|mélange de texte s’écrivant de gauche à droite avec du texte de droite à gauche]].
; Marquage sémantique<ref>{{en}}[http://www.w3.org/TR/html401/struct/text.html {{lang|en|''HTML 4.01 Specification - 9 Text''}}] - {{fr}}[http://www.la-grange.net/w3c/html4.01/struct/text.html 9 Le texte]</ref> : HTML permet de différencier des contenus spécifiques tels que les citations d’œuvres externes, les extraits de code informatique, les passages en emphase et les abréviations. Certains de ces éléments, conçus initialement pour permettre le support de documentations techniques, sont très rarement employés (différenciation entre les éléments de ''variable'' et d’''exemple'' de valeur dans un code informatique, par exemple, ou encore instance d’un terme défini dans le contexte).
; Listes<ref>{{en}}[http://www.w3.org/TR/html4/struct/lists.html {{lang|en|''HTML 4.01 Specification - 10 Lists''}}] - {{fr}}[http://www.la-grange.net/w3c/html4.01/struct/lists.html 10 Les listes]</ref> : HTML différencie des ''listes non ordonnées'' et des ''listes ordonnées'', selon que l’ordre formel du contenu dans le code est en soi ou non une information. Des ''listes de définition'' existent également, mais sans que leur champ d’application ne soit exactement déterminé.
; Tables<ref>{{en}}[http://www.w3.org/TR/html4/struct/tables.html {{lang|en|''HTML 4.01 Specification - 11 Tables''}}] {{fr}}[http://www.la-grange.net/w3c/html4.01/struct/tables.html 11 Les tables]</ref> : Cette fonctionnalité a été développée pour permettre la présentation de données tabulaires mais a été immédiatement exploitée pour ses puissantes capacités de mise en page.
; [[Hyperlien]]s<ref>{{en}}[http://www.w3.org/TR/html401/struct/links.html {{lang|en|''HTML 4.01 Specification - 12 Links''}}] -{{fr}}[http://www.la-grange.net/w3c/html4.01/struct/links.html 12 Les liens]</ref> : La fonctionnalité première de HTML.
; Inclusion d’images, d’[[applet]]s et d’objets divers<ref>{{en}}[http://www.w3.org/TR/html401/struct/objects.html {{lang|en|''HTML 4.01 Specification - 13 Objects, Images, and Applets''}}] - {{fr}}[http://www.la-grange.net/w3c/html4.01/struct/objects.html 13 Les objets, les images et les applets]</ref> : À l’origine HTML permettait seulement de donner des hyperliens sur les médias externes. L’invention d’éléments spécialisés pour le multimédia a permis l’inclusion automatique d’image, de musique, de vidéo, etc. dans les pages web.
; Eléments de regroupement<ref>{{en}}[http://www.w3.org/TR/html401/struct/global.html#edef-DIV {{lang|en|''HTML 4.01 Specification - 7.5.4 Grouping elements: the DIV and SPAN elements''}}] - {{fr}}[http://www.la-grange.net/w3c/html4.01/struct/global.html#edef-DIV 7.5.4 Le regroupement des éléments : les éléments DIV et SPAN]</ref> : Ne conférant pas de signification au contenu qu’ils balisent, ces éléments génériques permettent d’appliquer des styles de présentation, de réaliser des traitements via des scripts ou tout autre opération nécessitant d’isoler une partie du contenu.
; Style de la présentation<ref>{{en}}[http://www.w3.org/TR/html401/present/styles.html {{lang|en|''HTML 4.01 Specification - 14 Style Sheets''}}] - {{fr}}[http://www.la-grange.net/w3c/html4.01/present/styles.html 14 Les feuilles de style]</ref> : Chaque élément, voire tout le document, peut se voir appliquer des styles. Les styles sont définis dans le document ou proviennent de [[feuilles de style en cascade]] (CSS) externes.
; Marquage de présentation du texte<ref>{{en}}[http://www.w3.org/TR/html401/present/graphics.html {{lang|en|''HTML 4.01 Specification - 15 Alignment, font styles, and horizontal rules''}}] - {{fr}}[http://www.la-grange.net/w3c/html4.01/present/graphics.html 15 L’alignement, les styles de police et les règles horizontales]</ref> : Développé avant la généralisation de CSS pour fournir rapidement des fonctionnalités aux graphistes. D’usage désormais officiellement déconseillé pour la plus grande partie.
; Cadres<ref>{{en}}[http://www.w3.org/TR/html401/present/frames.html {{lang|en|''HTML 4.01 Specification - 16 Frames''}}] - {{fr}}[http://www.la-grange.net/w3c/html4.01/present/frames.html 16 Les cadres]</ref> : Aussi connu sous le nom de ''frames'', une fonctionnalité souvent décriée qui permet d’afficher plusieurs documents HTML dans une même fenêtre.
; Formulaire pour l’insertion interactive de données<ref>{{en}}[http://www.w3.org/TR/html401/interact/forms.html {{lang|en|''HTML 4.01 Specification - 17 Forms''}}] - {{fr}}[http://www.la-grange.net/w3c/html4.01/interact/forms.html 17 Les formulaires]</ref> : L’invention qui a permis l’apparition du commerce en ligne sur le web.
; Scripts<ref>{{en}}[http://www.w3.org/TR/html4/interact/scripts.html {{lang|en|''HTML 4.01 Specification - 18 Scripts''}}] - {{fr}}[http://www.la-grange.net/w3c/html4.01/interact/scripts.html 18 Les scripts]</ref> : Permet d’associer des morceaux de programmes aux actions des utilisateurs sur le document. Les langages utilisés sont généralement [[JavaScript]] et [[VBScript]].
=== Attributs de HTML ===
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<ref>{{en}}[http://www.w3.org/TR/html401/index/attributes.html {{lang|en|''HTML 4.01 Specification - Index of Attributes''}}] - {{fr}}[http://www.la-grange.net/w3c/html4.01/index/attributes.html Index des attributs]</ref>.
Certains attributs s’appliquent à presque tous les éléments :
* les attributs génériques <code>id</code> (identificateur unique) et <code>class</code> (identificateur répétable)<ref>{{en}}[http://www.w3.org/TR/html401/struct/global.html#h-7.5.2 {{lang|en|''HTML 4.01 Specification - 7.5.2 Element identifiers: the id and class attributes''}}] - {{fr}}[http://www.la-grange.net/w3c/html4.01/struct/global.html#h-7.5.2 7.5.2 Les identifiants des éléments : les attributs id et class]</ref> 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 <code>style</code><ref>{{en}}[http://www.w3.org/TR/html401/present/styles.html#h-14.2.2 {{lang|en|''HTML 4.01 Specification - 14.2.2 Inline style information''}}] - {{fr}}[http://www.la-grange.net/w3c/html4.01/present/styles.html#h-14.2.2 14.2.2 Les informations de style en-ligne]</ref> permettant de définir le style de présentation de l’élément (généralement en [[Feuilles de style en cascade|CSS]]), et l’attribut <code>title</code><ref>{{en}}[http://www.w3.org/TR/html401/struct/global.html#h-7.4.3 {{lang|en|''HTML 4.01 Specification - 7.4.3 The title attribute''}}] - {{fr}}[http://www.la-grange.net/w3c/html4.01/struct/global.html#h-7.4.3 7.4.3 L’attribut title]</ref> apportant une information complémentaire de nature le plus souvent libre (L’exception majeure est l’utilisation du <code>title</code> pour déterminer le style permanent et les éventuels styles alternatifs appliqués à un document via des éléments <code>link</code>).
* les attributs d’internationalisation <code>dir</code> et <code>lang</code><ref name="dirlang" /> spécifiant la direction d’écriture et la langue du contenu ;
* les gestionnaires d’évènements <code>onclick</code>, <code>ondblclick</code>, <code>onkeydown</code>, <code>onkeypress</code>, <code>onkeyup</code>, <code>onmousedown</code>, <code>onmousemove</code>, <code>onmouseout</code>, <code>onmouseover</code>, <code>onmouseup</code><ref>{{en}}[http://www.w3.org/TR/html401/interact/scripts.html#h-18.2.3 {{lang|en|''HTML 4.01 Specification - 18.2.3 Intrinsic events''}}] - {{fr}}[http://www.la-grange.net/w3c/html4.01/interact/scripts.html#h-18.2.3 18.2.3 Les événements intrinsèques]</ref>, 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 :
* les éléments qui permettent d’inclure dans le document des ressources graphiques sont dotés d’attributs de hauteur et de largeur, afin que le navigateur puisse anticiper la taille de la ressource à afficher avant que celle-ci n’ait été téléchargée : <code>img</code>, <code>object</code>, <code>iframe</code>.
* des éléments spécifiques sont dotés d’un attribut assumant une fonction unique, tel que l’élément <code>label</code> des étiquettes des contrôles de formulaire et son attribut <code>for</code> désignant le contrôle concerné : c’est, en HTML, et avec les attributs <code>usemap</code> et <code>ismap</code> 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 :
* de par leur nature : l’élément <code>img</code> est obligatoirement doté d’un attribut <code>src</code> spécifiant l’[[Uniform Resource Identifier|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 »<ref>au sens de [[Feuilles de style en cascade|CSS]] 2.1 qui explicite la notion d’« élément remplacé » restée implicite en HTML. Voir {{en}}http://www.w3.org/TR/CSS21/conform.html#replaced-element </ref> 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 <code>form</code> dont l’attribut <code>action</code> indique la cible serveur qui traitera les données après soumission ;
* pour des raisons liées à l’accessibilité du contenu : les images sont ainsi dotées d’un attribut obligatoire <code>alt</code> 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 [[Uniform Resource Identifier|URI]], les [[Multipurpose Internet Mail Extensions|types de contenu]] ou les [[ISO 639|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 <code>selected</code> d’un contrôle de formulaire peut ainsi être raccourci sous la forme <code>selected</code> remplaçant la forme complète <code>selected="selected"</code>. Cette forme particulière est un des points différenciant HTML de la syntaxe des documents « bien formés » au sens XML.
=== Jeu de caractères===
{{article détaillé|Unicode et HTML}}
Les pages Web peuvent être rédigées dans toutes sortes de [[langue]]s et de très nombreux [[caractère (informatique)|caractère]]s 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]] se répand.
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, suite à 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 compris dans la norme [[ASCII]].
== Interopérabilité de HTML ==
Tel qu’il a été formalisé par le W3C, 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 exacte des documents. HTML est plutôt conçu pour donner du [[sémantique|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 devaient pouvoir utiliser les informations sur 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. HTML est conçu pour optimiser l’[[interopérabilité]] des documents.
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 [[moniteur d'ordinateur|moniteur 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 quant au [[navigateur web]] utilisé pour consulter le document.
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 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.
==Notes et références==
{{Références|colonnes = 2}}
== Voir aussi ==
* [[World Wide Web]]
* [[World Wide Web Consortium]]
* [[XHTML]]
* [[Standard Generalized Markup Language|SGML]]
== Liens externes ==
{{Wikibooks|Le langage HTML}}
* {{ODP|/World/Français/Informatique/Formats_de_données/Langages_de_balisage/HTML/|HTML}}
'''Documents officiels :'''
*{{en}} RFC 1866, ''Hypertext Markup Language - 2.0'', {{date||novembre|1995}}
*{{en}} ''[http://www.w3.org/TR/REC-html32.html HTML 3.2 Reference Specification]'', recommandation du [[World Wide Web Consortium|W3C]], {{date|14|janvier|1997}}
*{{en}} ''[http://www.w3.org/TR/1999/REC-html401-19991224/ HTML 4.0 Specification]'', recommandation du [[World Wide Web Consortium|W3C]], {{date|18|décembre|1997}}
*{{en}} ''[http://www.w3.org/TR/html4/ HTML 4.01 Specification]'', dernière recommandation HTML 4 du [[World Wide Web Consortium|W3C]], {{date|24|décembre|1999}}
*{{en}} ''[http://www.w3.org/TR/html5/ HTML 5 A vocabulary and associated APIs for HTML and XHTML]'', actuel brouillon de travail du [[World Wide Web Consortium|W3C]] sur HTML 5, {{date|22|janvier|2008}}
*{{en}} ''[http://www.w3.org/TR/html5-diff/ HTML 5 differences from HTML 4]'', brouillon de travail du [[World Wide Web Consortium|W3C]] sur les différences entre HTML 4 et HTML 5, {{date|22|janvier|2008}}
*{{fr}} ''[http://www.la-grange.net/w3c/html4.01/cover.html La spécification HTML 4.01]'', traduction non normative
*{{fr}} ''[http://w3c.britoweb.net/html5-diff/ Différences de HTML 5 par rapport à HTML 4]'', traduction non normative
{{Portail|Informatique}}
[[Catégorie:Standard du web]]
[[Catégorie:Codage du texte]]
[[Catégorie:SGML]]
[[Catégorie:HTML]]
[[Catégorie:Format ouvert]]
[[af:HTML]]
[[als:HTML]]
[[an:HTML]]
[[ar:لغة ترميز النص الفائق]]
[[az:HTML]]
[[bat-smg:HTML]]
[[be-x-old:HTML]]
[[bg:HTML]]
[[bn:হাইপার টেক্সট মার্ক আপ ল্যাঙ্গুয়েজ]]
[[br:HTML]]
[[bs:HTML]]
[[ca:Hyper Text Markup Language]]
[[cs:HyperText Markup Language]]
[[cy:HTML]]
[[da:Hypertext Markup Language]]
[[de:Hypertext Markup Language]]
[[el:HTML]]
[[en:HTML]]
[[eo:HTML]]
[[es:HTML]]
[[et:HTML]]
[[eu:HTML]]
[[fa:اچتیامال]]
[[fi:HTML]]
[[fo:HTML]]
[[fur:HTML]]
[[fy:HTML]]
[[ga:HTML]]
[[gl:HTML]]
[[he:HTML]]
[[hi:एच.टी.एम.एल.]]
[[hr:HTML]]
[[hsb:HTML]]
[[hu:HTML]]
[[ia:HTML]]
[[id:Hypertext markup language]]
[[is:HTML]]
[[it:HTML]]
[[ja:HyperText Markup Language]]
[[ka:ჰიპერტექსტური მარკირების ენა]]
[[kaa:HTML]]
[[kk:HTML]]
[[km:HTML]]
[[ko:HTML]]
[[ku:HTML]]
[[lb:Hypertext Markup Language]]
[[lmo:XML]]
[[lt:HTML]]
[[lv:HTML]]
[[mk:HTML]]
[[ml:എച്.ടി.എം.എല്.]]
[[mn:HTML]]
[[ms:HTML]]
[[nl:HyperText Markup Language]]
[[nn:HTML]]
[[no:HTML]]
[[pl:HTML]]
[[pt:HTML]]
[[ro:HyperText Markup Language]]
[[ru:HTML]]
[[sh:HTML]]
[[simple:HTML]]
[[sk:Hypertext markup language]]
[[sl:HTML]]
[[sq:HTML]]
[[sr:HTML]]
[[sv:HTML]]
[[tg:HTML]]
[[th:HTML]]
[[tl:HTML]]
[[tr:Zengin metin işaretleme dili]]
[[uk:HTML]]
[[ur:وراۓمتن زبان تدوین]]
[[uz:HTML]]
[[vi:HTML]]
[[yi:HTML]]
[[zh:HTML]]
[[zh-yue:HTML]]