### Description de document

Une page HTML n'est rien d'autre qu'un simple fichier texte avec une extension `.html` ou `.htm`. HTML étant un langage interprété, le contenu du fichier `.html` n'a pas à passer par une phase de traitement particulier comme par exemple une compilation. Il suffit donc d'un éditeur de texte basique pour créer des fichiers `.html` (ie des pages HTML) qui vont être ensuite directement lus, interprétés, puis affichés, le plus généralement par un navigateur Web - Firefox, Chrome, Internet Explorer, Opera, Safari, etc).

Dans les spécifications techniques du langage, on parle d'un "agent utilisateur" (user-agent). Un agent utilisateur est n'importe quel logiciel qui récupère, fait le rendu et facilite l'interaction de l'utilisateur final avec un contenu web. L'agent utilisateur le plus généralement utilisé est un navigateur, mais ça peut être aussi une application de synthèse vocale pour les personnes ayant un handicap visuel, un robot d'indexation d'un moteur de recherche, un logiciel d'édition de pages HTML, etc.

HTML a été conçu pour décrire la structure d'un document (ie une page HTML) et donner du sens (sémantique) aux informations textuelles contenues dans ce document.

HTML ne fait pas de traitement : il n'existe ni variables, ni instructions (de boucles, de tests, etc), ni regroupement d'instructions (fonctions, objets, méthodes, etc).

HTML utilise des balises pour marquer les informations contenues dans le document.

Exemple : une page html
<!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <title>Exemple de page</title> </head> <body> <p>Je suis un exemple de document HTML.</p> <ul> <li>On utilise <strong>des balises</strong> pour marquer la structure du document.</li> <li>Les balises ont une <strong>syntaxe particulière</strong>.</li> <li>Elles permettent de donner du sens aux informations en définissant par exemple ici un paragraphe et une liste.</li> </ul> <p><img src="info.png">C'est le <a href="http://w3.org">W3C</a> qui définit les balises.</p> </body> </html>

L'étude du code précédent montre les grands principes de construction du code HTML.

Pour définir une information, il y a généralement une balise pour marquer le début de cette information (`<balise>`) et une balise pour marquer la fin de cette information `</balise>`).

Les balises ont une syntaxe particulière (`<balise>` et `</balise>`).

Les balises ont des noms différents suivant ce qu'elles définissent : le document html, l'en-tête, le titre, le corps du document, un paragraphe, une liste, une ligne de la liste, un élément important, un lien, une image.

Certaines balises sont accompagnées d'attributs qui permettent de mieux caractériser leur contenu (`<img>` et `<a>`).

Les éléments entourés par les balises sont imbriqués : le document contient un en-tete et un corps, le corps du document contient un paragraphe et une liste, la liste contient des lignes, les lignes contiennent du texte simple et des mots importants.

Les balises donnent du sens aux informations, mais aucune indication sur la mise en forme de ces informations. Pourtant le navigateur a décidé de la façon dont il allait afficher les informations. Le titre du document apparait dans la barre de titre de la fenêtre (ou de l'onglet) du navigateur et le corps du document appraît dans la zone d'affichage de la fenêtre. Il a fait des sauts de lignes entre certaines informations (le paragraphe et la liste, les lignes de la liste). Le navigateur a également décidé de présenter les lignes de liste précédée d'un point. Il a rendu les parties de textes signalées comme importantes (`<strong>`) en caractères gras.

Les espaces consécutifs, tabulations et sauts de lignes que l'on a mis dans notre code HTML ne sont pas reproduits par le navigateur : les espaces consécutifs et les tabulations sont remplacées par un seul espace, les saut de ligne dans le texte sont ignorés.

La page affiche une image (données binaires) alors que le code HTML ne contient que du texte. Les éléments non textuels sont insérés dans la page au moment de son affichage et non pas inclus directement dans le code de la page.

Ce mécanisme de liaisons d'éléments externes peut être utilisé pour faire référence à d'autres documents HTML qui seront accessibles par un click sur un élément particulier (ie un lien).

HTML est un standard (et pas une norme) défini par le W3C (World Wide Web Consortium). Il est le fruit de discussions dans des groupes de travail. Le temps peut être très long entre le moment où une nouvelle idée est présentée et le moment où elle devient une recommandation du W3C. Ce temps très long dans la mise au point des spécifications techniques du langage explique pourquoi les navigateurs ne sont pas égaux dans les implémentations qu'ils font du langage. Il existe toujours un décalage entre ce qui est en discussion et ce qui "fonctionne" réellement. A noter que ce décalage est la plupart du temps en faveur des navigateurs qui implémentent des fonctionnalités qui ne sont pas encore exactement définies (avec le risque que à terme l'implémentation ne corresponde pas à 100% à ce qui défini dans le standard).
Principes de conception de HTML

Le W3C a pour but d'élaborer des standards de fonctionnement du web et de certains des langages informatiques qui y sont utilisés (HTML, CSS, XML sont les plus connus).
Le W3C est composé d'entreprises et d'organisations comme Apple, Adobe, la fondation Mozilla, Google, HP, IBM, Microsoft, Opera Software, Sun et de n'importe quelle personne intéressée par les sujets traités et ayant des compétences techniques en la matière.
Avant de devenir un standard, les spécifications élaborées par le W3C ont différents statuts suivant leur état d'avancement :

- Working Draft : brouillon de travail pour les spécifications en cours d'élaboration et sujettes à modifications,
- Last Call Working Draft : dernier appel de modification du brouillon,
- Candidate Recommendation : les spécifications sont terminées et prêtes à être testées,
- Proposed Recommendation : après modifications éventuelles suite aux tests, les spécifications sont prêtes à être publiées
- Recommendation : les spécifications sont validées et terminées et servent de standard.