Langage HTML
Support de cours version 3
2017‐2018 
Prof. El Habib NFAOUI 
Université Sidi Mohamed Ben Abdellah de Fès
Faculté des Sciences Dhar El Mahraz Fès
Email: elhabib.nfaoui@usmba.ac.ma
1.  Concepts de base
2.  Présentation du langage HTML
3.  Syntaxe du langage HTML
4.  Structure générale d’un document HTML
5.  Mise en forme de texte
6.  Hiérarchisation du texte et séparations
7.  Structurer le contenu d’une page web :  
les sections
8.  Conteneurs génériques
9.  Blocs sémantiques
10.  Balises en ligne sémantique
11.  Listes
12.  Tableaux de données
13.  Liens hypertextes
14.  Contenu embarqué
15.  Formulaires
16.  Menus et commandes
17.  Attributs HTML globaux
18.  Fonctionnalités obsolètes
19.  Validation des documents HTML
Annexes
Annexe 1: Protocole HTTP
Annexe 2: Encodage des caractères
Annexe 3: Le type MIME
Bibliographie
Contenu
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    2
1. Concepts de base
Le World Wide Web (WWW) tel qu’il a été imaginé par Tim Berners‐Lee, aux alentours de 1990, s’articule
autour d’une architecture dite client‐serveur. Dans le cas d’une navigation classique, le client c’est nous
ou plutôt notre navigateur. Le serveur (ou plus précisément le serveur web), c’est un programme qui
répond aux requêtes du navigateur grâce au protocole HTTP (HyperText Transfer Protocol). Initialement,
le World Wide Web, communément appelé le web, était un moyen de partager des pages web
(documents écrits en HTML). Le protocole HTTP (Hyper Text Transfer Protocol) a été conçu pour véhiculer
ces documents. Depuis cette date, le web a beaucoup évolué et plusieurs phases se sont succédées avant
d’obtenir les applications en ligne que l’on utilise aujourd’hui.
Un site web est constitué d’un ensemble de pages web reliées entre elles par des liens hypertextes qui
permettent de naviguer de l’une à l’autre. La technique de l'hypertexte permet de spécifier des URL
(adresses des pages web) au sein des pages, vers d'autres pages. Cela crée une structure, au niveau
mondial, qui peut être vue comme une grande toile mondiale, d'où le terme de World Wide Web.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    3
1. Concepts de base
Techniquement, une page web HTML est formée d’un contenu, de balises (marqueurs) permettant de
structurer ce contenu et d’objets externes comme des images, des vidéos, etc.). C’est un fichier texte
portant souvent l’extension .html ou .htm, et qu’on peut l’éditer dans un éditeur de texte et le consulter
(interpréter son code) dans un navigateur web.
Un fichier HTML source peut être stocké et lu sur un ordinateur local, ou via Internet s’il est stocké sur un 
serveur web. Un document HTML, proposé par un serveur Web, est toujours désigné par une "adresse" 
appelée URL pour "Universal Resource Locator". Une URL a la structure suivante :
protocole://serveur [:port]/répertoire/fichier
Exemple: 
http://www.fsdmfes.ac.ma/ISCV2015/index.html
Le numéro du port par défaut du protocole HTTP est 80.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    4
1. Concepts de base
HTTP (Hyper Text Transfer Protocol) est le protocole utilisé principalement par toutes les applications
Web : celui‐ci permet la communication et l’échange de données entre un serveur Web et un navigateur
installé sur un poste client. Ainsi, le navigateur peut envoyer au serveur Web une requête formalisée
contenant l’adresse de la page ciblée (URL) et recevoir une réponse HTTP contenant la page HTML
correspondante.
La figure ci‐dessous montre un exemple de communication entre un client Web (navigateur) et un serveur
Web. Plusieurs étapes sont nécessaires pour assurer cette communication:
‐ Une requête HTTP contenant par exemple l’URL http://www.monserveur.com/page.html) est
envoyée vers le serveur afin d’accéder à la page désirée et de la visualiser dans le navigateur du
poste client (voir étape 1 de la figure ci‐dessous).
‐ Lorsque le serveur Web reçoit cette requête, il recherche la page demandée parmi toutes les pages
HTML présentes sur le site concerné et la renvoie ensuite au client dans une réponse HTTP (voir
étape 2 de la figure ci‐dessous).
‐ Le code HTML reçu par le poste client est alors interprété et affiché par le navigateur (voir étape 3 de
la figure ci‐dessous). C’est ce qu’on appelle l’architecture Client‐Serveur : le client est le navigateur
Internet (Internet Explorer, Firefox...) et le serveur est le serveur Web sur lequel sont stockées les
informations du site Internet. Ce type de site est très simple à réaliser et la plupart des premiers sites
ont été conçus sur ce modèle. Cependant, ce concept est limité car il manque cruellement
d’interactivité.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    5
1. Concepts de base
Figure 1. L’architecture client‐serveur d’un site statique
Réponse Http
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    6
2. Présentation du langage HTML
HTML (HyperText Markup Language) est un langage de balisage (dit aussi langage de marquage) qui
permet de structurer le contenu des pages web dans différents éléments (balises). Cela signifie que la
création d’une page web (titres, paragraphes, images, liens hypertext...) utilisera des caractères pour
marquer d’une certaine façon les différentes parties du texte. Parmi ces caractères de marquage, certains
correspondront à des liens vers d’autres pages web : ce sont des liens hypertextes. Nous reviendrons sur
la notion de balise dans la section suivante pour la présenter en détail.
Historiquement, les langages de balisage sont issus du langage SGML (Standard Generalized Markup
Language), un métalangage standard permettant de définir des langages à marqueurs (balisages).
Le langage HTML a beaucoup évolué depuis sa création par Tim Berners‐Lee en 1992. Aujourd'hui, on en
est à la version 5 de ce langage (notée HTML 5), après être passé par une version appelé XHTML (qui est
réellement une reformulation de HTML en tant qu’application XML). HTML est un standard* en constante
évolution. Dans ce support de cours, j’ai donc préféré de présenter les progrès qu’apporte HTML 5 sans
indiquer à chaque fois le numéro de version.
* Un standard est un ensemble de spécifications qui définissent la méthode d’utilisation des technologies web.
Ce standard est une recommandation qui doit être respectée de tous, navigateurs et concepteurs web, afin
d’éviter les différences d’interprétation pour un code identique. De plus, ce standard doit permettre
l’accessibilité des données.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    7
HTML 5, JavaScript et CSS ( Cascading Style Sheet ):
De nos jours, les différents langages pouvant être mis en jeu pour la composition d’une page web (ou
d’une application web) sont très intimement liés. Ainsi, l’on voit souvent regroupés HTML 5, JavaScript et
CSS sous le terme générique HTML 5 lui‐même. Il s’agit bien là d’un abus de langage, mais un abus justifié
: le contenu (HTML) étant bien dissocié de la forme (CSS), mais peu exploitable pour les visiteurs sous une
forme brute sans mise en pages, et peu dynamique sans langage de script pour des interactions avec le
contenu de la page lui‐même. Il est donc difficile de se servir de l’un sans l’autre pour la création de sites
complets.
De même, HTML 5 est livré avec plusieurs API évoluées (Géolocalisation, Web Storage, Web Sockets,
Server‐Sent Events, Web Messaging…) qui se manipulent avec JavaScript. Ils nécessitent donc d’avoir un
minimum de prérequis en JavaScript. Ils ne seront pas traités dans cette première partie du cours.
2. Présentation du langage HTML
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    8
Deux principaux acteurs sont actuellement responsables des évolutions, des recommandations et des
spécifications du langage HTML:
L’organisme W3C* (World Wide Web Consortium ): 
http://www.w3.org/
Le groupe WHATWG (Web Hypertext Application Technology Working Group)
http://www.whatwg.org/
* Le World Wide Web Consortium (W3C) est l’organisme de normalisation dont le rôle est de créer, de
développer, de maintenir et de promouvoir les standards du web, en travaillant notamment sur les langages
tels que HTML, CSS, XML ( eXtended Markup Language ), SVG ( Scalable Vector Graphics ), etc.
2. Présentation du langage HTML
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    9
Pour apprendre le langage HTML, on a besoin : 
D'un éditeur de texte tout simple comme par exemple le Bloc‐notes de Windows. 
D'un navigateur web comme Microsoft Internet Explorer, Google Chrome ou autres. 
Pour développer des sites web professionnels, on utilise souvent des logiciels de développement
spécialisés appelés aussi éditeurs WYSIWYG : What You See Is What You Get (Ce que vous voyez, vous
l'obtenez). On trouve entre autres Adobe DreamWeaver.
2. Présentation du langage HTML
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    10
3. Syntaxe du langage HTML
3.1  Notion de balise
3.2  Attributs d’une balise
3.3  Imbrications et types de contenu
3.4  Commentaire
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    11
3.1  Notion de balise (élément)
La description d'un document HTML passe par l'utilisation de balises (ou "TAGS" en anglais). Les balises
HTML structurent le contenu du document, en délimitant des blocs qui seront amenés à contenir des
paragraphes, des titres, différents types de médias (images, sons, vidéos), des contrôles de formulaires ou
encore des liens hypertextes.
Une balise est délimitée par les signes "<" et ">" entre lesquels figure le nom de la balise.
Exemple:
<p> Ceci est un paragraphe. </p>
Ici, la balise <p> marque le début d’un paragraphe.
Dans ce support de cours, nous allons utiliser indifféremment les mots balise et élément.
Tout ce qui se situe entre la balise ouvrante et la balise fermante, représente le contenu de l’élément
(balise) HTML. Une balise définit la sémantique, le comportement et éventuellement une
apparence prédéfinie via la feuille de style interne du navigateur.
Balise ouvrante Balise fermante
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    12
3.1  Notion de balise
Il existe des balises auto‐fermantes, définies en tant que telles pour ne posséder aucun contenu
particulier. C’est le cas de <hr> qui correspond à une séparation horizontale, mais qui ne peut contenir
aucun texte ou aucun autre élément, et de <br> qui correspond à un saut de ligne.
La syntaxe d’HTML 5 est relativement permissive : les éléments vides ne nécessitent pas d’être fermés
(exemple: <img src="image.jpg"> ), la casse est variable et les guillemets sont facultatifs (<input
type=text> ), et certaines balises fermantes sont optionnelles.
Bonne pratique: 
Il est important de garder les bonnes pratiques de formation du code (conventions d’écriture) initiées par
HTML 4 strict puis XHTML. Le code résultant est évidemment conforme aux spécifications HTML 5
mais, en plus, il est bien écrit. Par exemple, il est recommandé d’utiliser toujours des guillemets pour
entourer la valeur d’un attribut.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    13
3.2  Attributs d’une balise
Les attributs modifient les propriétés des balises HTML. Un élément peut comporter zéro ou plusieurs
attributs, choisis parmi un ensemble spécifique à cet élément ou un ensemble commun à tous les
éléments HTML.
<balise attribut_1 = valeur1  attribut_2 = valeur2 > 
Exemple :     <hr width="50%" >
D’une façon plus générale, il est recommandé de toujours utiliser des guillemets pour entourer la valeur
d’un attribut, cela prévient beaucoup d’erreurs sur le long terme et facilite la lecture du code.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    14
3.3  Imbrications et types de contenu
Les éléments peuvent se succéder – par exemple plusieurs paragraphes –, mais aussi s’imbriquer pour
conférer une hiérarchie au document – par exemple plusieurs paragraphes dans une section. On obtient
alors un arbre « généalogique » de balises, chacune pouvant être parent ou enfant d’une autre. Ces
possibilités d’imbrications sont définies dans la DTD (Document Type Definition) du langage HTML,
grammaire résumant la syntaxe HTML, ses éléments et ses attributs.
Exemple:
Une liste non ordonnée (élément ul) se devra toujours de posséder des sous‐éléments de liste
(éléments li). Ceux‐ci seront situés entre la balise ouvrante et la balise fermante </ul>. On dit alors que
<ul> est parent de <li>, ou que <li> est enfant de <ul>.
<p>Ma liste de fruits : </p>
< ul >
< li >Kiwi</ li >
< li >Banane</ li >
< li >Pomme</ li >
</ ul >
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    15
3.4  Commentaire
À l’instar des autres langages, HTML comprend la possibilité d’annoter le document par des
commentaires. Ceux‐ci ne seront pas affichés ni interprétés par le navigateur. Ils pourront vous servir
d’aide‐mémoire, ou d’indications pour suivre l’imbrication de balises lorsque le document devient plus
conséquent. Un commentaire débute par <!‐‐ et finit par ‐‐> .
Exemple:
<!‐‐ Ceci est un commentaire ‐‐>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    16
4. Structure générale d’un document HTML
4.1 Eléments de base
4.2 Méta‐informations
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    17
4.1 Eléments de base
Le document HTML possède par défaut un en‐tête et un corps. L’en‐tête (élément head) définit les
propriétés globales du document (titre, apparence, méta‐informations) tandis que le corps ( élément
body) renferme des balises de contenu. Voici la structure minimale d’un document HTML :
Modèle de document HTML 5 simple:
<!DOCTYPE html>
<html lang="fr"> 
<head> 
<meta charset="utf‐8"> 
<title> Titre du document </title> 
</head> 
<body> 
... 
</body> 
</html>
La description de chacun de ces éléments est fournie dans le tableau suivant.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    18
Elément Rôle
<!DOCTYPE html>
Un document HTML doit toujours débuter par un doctype, avant même la
première balise <html>. Il s’agit d’une déclaration permettant de renseigner le
navigateur sur le type de document HTML délivré. Il ne s’agit pas d’un tag HTML à
part entière, mais bien d’un préambule.
Jusqu’à HTML 5, le doctype mentionnait l’utilisation d’un document de référence,
la DTD (Document Type Definition), grammaire résumant la syntaxe HTML et ses
attributs. Depuis HTML 5, le doctype a été considérablement simplifié puisqu’il
n’est pas sensible à la casse, qu’aucune DTD n’est précisée.
<html>
L’élément <html> constitue la racine de tout document HTML.
Attributs :
lang : permet de préciser la langue du document.
manifest : permet de préciser l’adresse URL du manifeste contrôlant le cache des
fichiers pour une utilisation en mode déconnecté. L’attribut manifest entre en jeu
dans l’élaboration d’applications web exécutées hors ligne.
4.1 Eléments de base
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    19
Elément Rôle
<head> En‐tête du document.
L’en‐tête du document exerce un rôle crucial, car il fournit de multiples
renseignements sur le document lui‐même, que le contenu n’indique pas. Dans
cette optique, il recueille plusieurs autres balises aux rôles précis : <title>, <meta>,
<link>, <style>, <script> que nous étudierons ultérieurement.
<body> Corps du document.
Il contient toutes les balises HTML de contenu : texte, blocs, images, titres, médias,
formulaires, etc.
<title> Titre du document.
Il est affiché par le navigateur et est indexé par les moteurs de recherche.
4.1 Eléments de base
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    20
Elément Rôle
<meta> Les balises <meta> permettent de véhiculer plus de méta‐informations (mots‐clés,
description, auteur, etc.) relatives à la page Web. Il s’agit là de renseignements qui ne sont
pas affichés dans le corps de la page, mais qui sont importants pour son interprétation ou
son référencement par les moteurs de recherche.
Exemples d’utilisation de quelques attributs de la balise <meta>:
<meta name="description" content="Description du document"> 
<meta name="keywords" content="mots‐clés énumérés et séparés par des virgules"> 
Autres valeurs possibles de l’attribut name :  author, generator, application‐name.
<meta charset="utf‐8">
L’attribut charset spécifie l’encodage des caractères utilisé. Cette déclaration doit être unique
pour l’ensemble d’un document.
<!‐‐ Redirection vers une autre URL au bout de 5 secondes ‐‐>
<meta http‐equiv="refresh" content="5;url=http://www.google.ac.ma" />
<!‐‐ Rafraîchissement de la page toutes les minutes ‐‐>
<meta http‐equiv="refresh" content="60" />
4.2 Méta‐informations
5. Mise en forme de texte
Le tableau ci‐dessous présente quelques balises qui permettent de structurer le texte.
Elément Rôle
<b> Mise en forme (gras): portion de texte mise en forme d’une manière particulière (par
exemple, un mot‐clé ou un nom de marque), sans désir de conférer d’importance
( <strong> ) ni d’emphase ( <em> ), habituellement mis en forme en gras.
<i> Mise en forme (italique)
Portion de texte mise en forme d’une manière particulière (par exemple, un terme
technique, une pensée), sans désir de conférer d’importance ( <strong> ) ni
d’emphase ( <em> ), habituellement mis en forme en italique.
<u> Souligné: la balise <u> marque un bloc de texte sans importance particulière mais dont la 
présentation est soulignée par défaut.
<mark> Mise en valeur (marqué ou surligné): attire l’attention sur un passage de texte
particulièrement pertinent au regard d’un certain contexte.
<em> Emphase: ajoute un effet d’emphase au texte, usuellement représenté par de l’italique (à 
ne pas confondre avec <i> ). 
Elément Rôle
<strong> Forte mise en exergue
L’élément <strong> confère au texte une forte importance. Visuellement, il est représenté
par un corps de police plus gras, mais contrairement à <b>, il possède une réelle valeur
sémantique.
Exemple :
<p>Il est important de noter que <strong>nous ne remboursons pas</ strong> les 
chaussettes usagées. </p>
<small> Petits caractères
Peut représenter une mention discrète, en fin de document ou de section, par exemple
faisant référence à des mentions légales, à des conditions de vente ou à la précision d’une
licence d’utilisation. À ne pas utiliser dans le seul but de réduire la taille de la police par
défaut.
Exemple :
<small> Les éléments de cette page sont sous licence 
<a rel="license" href="http://creativecommons.org/licenses/by‐nc‐sa/2.0/fr/"> 
Licence Creative Commons</a>
</small>
5. Mise en forme de texte
Elément Rôle
<sub> Indice: affiche le texte en indice, notamment pour les formules scientifiques.
Exemple:  Le symbole chimique de l’eau est H <sub> 2 </sub> O
<sup> Exposant: affiche le texte en exposant, notamment pour les formules mathématiques.
Exemple:
<p>L’équation est la suivante : <br>
(a+b) <sup>2</sup> = a <sup>2</sup> + 2ab + b <sup>2</sup>   </p>
<bdo> Modification du sens d’écriture: l’élément <bdo> ( BiDioverride en anglais) indique le sens
d’affichage du texte, de gauche à droite (attribut dir="ltr") ou de droite à gauche
(attribut dir="rtl" ).
<bdi> Isolation du sens d’écriture: l’élément <bdi> (BiDiisolate en anglais), isole son contenu des
effets de la mise en forme de texte bidirectionnelle. Il permet de ne pas aboutir à un
alignement confus pour du contenu généré par les utilisateurs, pour lequel la direction
initiale est inconnue. Par exemple, un nom écrit en langue arabe qui serait mélangé à du
texte latin.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    24
5. Mise en forme de texte
6. Hiérarchisation du texte et séparations
Elément Rôle
<h1>,
<h2>,
<h3>, 
<h4>, 
<h5>, 
<h6>
Hiérarchie de titres: Il existe six niveaux de titres pour hiérarchiser le contenu. Signalons 
qu’il ne faut pas choisir un niveau de titre en fonction de sa taille physique par défaut, mais 
en fonction de la sémantique sous‐jacente qui lui est attachée. Si une page ne comporte 
que des titres d’un seul niveau, il est conseillé de n’utiliser que des titres <h1> sans tenir 
compte de la taille par défaut et non pas des titres <h2> par exemple, au motif que la taille
convient mieux. La taille à laquelle on veut afficher réellement ces titres dans la page sera 
déterminée en écrivant un style CSS.
<hgroup> L’élément <hgroup> regroupe un ou plusieurs titres <h1> à <h6>. Idéalement, il n’a
de vocation à être utilisé qu’à partir de deux titres.
<p> Paragraphe: Contient un paragraphe de texte, éventuellement accompagné d’autres balises 
en ligne plus sémantiques (des images, vidéos, audio), mais pas d’autre élément de type 
bloc (y compris <p> lui‐même). 
<br> Saut de ligne: Force un saut de ligne : l’affichage se poursuit en début de ligne suivante.
Bonne pratique: Afin d’éviter l’usage abusif de <br> pour créer de l’espacement vertical, il 
est préférable d’utiliser les propriétés CSS (margin, padding) pour introduire des marges sur 
les conteneurs et les paragraphes.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    25
Elément Rôle
<wbr> Indication d’opportunité de césure de mot
Indique au navigateur qu’il est plus opportun de scinder un mot à l’emplacement de cet
élément, s’il y a besoin, notamment pour éviter une césure automatique pouvant être mal
interprétée. Il s’agit d’une aide au moteur de rendu texte lui suggérant qu’il serait plus
approprié d’effectuer un retour à la ligne à l’endroit où cet élément est placé, si la longueur
du texte excède l’espace réservé par son conteneur. Particulièrement indiqué pour les longs
mots, il faut savoir que <wbr> ne crée aucunement de césure (ou trait d’union) lorsque
survient la coupure de ligne. Il faudra pour cela exploiter l’entité &shy; .
Exemple :
<p>L’adverbe anti <wbr> constitu <wbr> tionnellement signifie : Contrairement à la 
Constitution et à ses principes.</p>
<hr> Séparation (horizontal rule en anglais)
Élément vide qui marque une séparation dans le contenu, typiquement au niveau des
paragraphes, usuellement représentée par une barre horizontale. Le style par défaut de la
séparation n’est pas très engageant, mais il est très facile de le modifier avec d’autres
instructions CSS, notamment en agissant sur la propriété border.
6. Hiérarchisation du texte et séparations
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    26
7.1 Introduction
7.2 Elément <section>
7.3 Elément <article>
7.4 Elément <header>
7.5 Elément <footer>
7.6 Eléments <nav> et <aside>
7.7 HTML5 Element Flowchart
7. Structurer le contenu d’une page web : les 
sections
7.1 Introduction
Créer un site web, c’est d’abord créer une charte graphique que l’on va retrouver sur les différentes pages
web. Dans chaque page, on doit pouvoir distinguer du premier coup d’œil les grandes zones qui la
composent comme l’en‐tête, la zone de navigation permettant de surfer à l’intérieur du site, la zone
principale, dans laquelle est situé le contenu propre de la page, et le pied de page.
HTML offre un ensemble d’éléments qui délimitent les zones du document possédant une valeur
sémantique particulière. Leur rôle est de structurer la page en plusieurs grandes zones dont le simple nom
de l’élément est évocateur de son utilité. Il s’agit des éléments <header>, <footer>, <aside> et <nav>.
Les avantages sont évidents : le code source est plus clair, les différentes parties composant un document
sont clairement identifiées. En accroissant la valeur sémantique, on augmente aussi les possibilités
d’analyse et d’indexation du contenu et de référencement.
Exemple
<!DOCTYPE html> 
<html lang="fr"> 
<head> 
<title>Ma structure complète en HTML5 </title> 
<meta charset="utf‐8"> 
</head> 
<body>
<header> 
<nav></nav> 
</header> 
<section> 
<article></article> 
<article></article> 
<article></article>
</section> 
<aside></aside> 
<footer></footer> 
</body> 
</html>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    29
7.2 Elément <section>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    30
Élément fondamental de l’approche de découpe sémantique des documents, <section> regroupe un
contenu relatif à une même thématique ou une même fonctionnalité. Il peut être introduit par des
éléments de titraille ( <header>, <hgroup>, h1 à h6, etc.) pour structurer le document.
Ses cas d’utilisation sont multiples, on peut l’envisager pour scinder un document en plusieurs chapitres,
pour découper un contenu présenté dans différents onglets ou différentes vues, voire pour délimiter les
thématiques d’un élément <article>.
Exemple d’usage de <section> englobant des articles:
Dans ce cas de figure, l’élément <section> regroupe un ensemble d’articles.
<section>
<h1>Articles</h1>
<article>
<h2>Titre de l’article</h2>
<p>Contenu de l’article</p>
</article>
<article>
<h2>Titre de l’article</h2>
<p>Contenu de l’article</p>
</article>
</section>
7.2 Elément <section>
Exemple d’usage de <section> dans un article
Dans cet autre exemple, l’élément <section> joue le rôle de division thématique dans un même article.
<article>
<h1>Les couleurs</h1>
<p>Ce sont des perceptions visuelles subjectives dépendant de la fréquence des ondes 
lumineuses.</p>
<section>
<h2>Le rouge</h2>
<p>Couleur primaire, le rouge excite le plus l’œil humain après le jaune.</p>
</section>
<section>
<h2>Le vert</h2>
<p>Menthe à l’eau ou grenouille, le vert est souvent associé à la nature.</p>
</section>
</article>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    31
7.3 Elément <article>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    32
Section de contenu dans un document ou une application web, dont la composition peut
être indépendante du reste de la page et extraite individuellement.
L’élément <article> est une spécialisation de <section>. Il possède une plus forte valeur sémantique, et
pour cela il faut le considérer comme une portion de document qui se suffit à elle‐même, par exemple une
entrée distincte parmi d’autres (une actualité, une fiche d’informations, etc.). On peut extraire son
contenu sans que celui‐ci perde son sens.
Exemple d’usage de <article>
<article>
<h1>Titre de l’article</h1>
<p>Contenu de l’article...</p>
</article>
Étant donné le caractère souhaité autonome de cet élément vis‐à‐vis de ce qui l’entoure, il est tout à fait
possible d’utiliser une balise <header> pour l’introduire et <footer> pour lui affecter un « pied d’article »,
voire de le découper en plusieurs parties via <section>.
Exemple:
<article>
<header>
<h1>Titre de l’article</h1>
<p>Publication le <time datetime="2011‐02‐03" pubdate>Jeudi 3 février 2011 par George 
Abitbol</p>
</header>
<p>Contenu de l’article, premier paragraphe.</p>
<p>Contenu de l’article, deuxième paragraphe.</p>
<footer> <!‐‐ Pied de l’article ‐‐> </footer>
</article>
Dans cet exemple, l’élément <time> est muni de l’attribut pubdate, qui revêt une importance particulière
spécifiquement dans le cadre d’un conteneur tel que <article> : sa signification correspond alors à la date
de publication de l’ensemble de l’article. Cette particularité n’est pas valable pour <section>, ce
qui caractérise bien la différence sémantique existant entre ces deux éléments cousins.
7.3 Elément <article>
Comme son nom le suggère, <header> correspond à un en‐tête de section. Il peut s’agir de l’en‐tête
d’introduction (d’un document, d’une autre section, d’un article) pouvant contenir – selon le contexte –
titres, navigation, formulaire de recherche, table des matières, logo, etc.
Exemple:
<body>
<header>
<img src="logo.png" alt="" />
<h1>Titre principal</h1>
<nav>
<ul>
<li><a href="/">Accueil</a></li>
<li><a href="/contact">Contact</a></li>
<li><a href="/a‐propos">À propos</a></li>
</ul>
</nav>
</header>
<!‐‐ Contenu du document... ‐‐>
</body>
7.4 Elément <header>
7.4 Elément <header>
Exemple d’usage de <header> dans <article>
<article>
<header>
<h1>Titre de l’article</h1>
<p>Publication le <time datetime="2011‐02‐03" pubdate>Lundi 8 octobre 2012 </p>
</header>
<p>Contenu de l’article</p>
<footer> <!‐‐ Pied de l’article ‐‐> </footer>
</article>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    35
Pied de page, de section ou d’article – selon son plus proche ancêtre – visant à contenir les informations
que l’on peut habituellement placer en fin de section, telles que des mentions légales, des informations de
contact ou les sources d’une actualité, et éventuellement une navigation.
Exemple d’usage commun de <footer>
<body>
<!‐‐ Contenu du document... ‐‐>
<footer>
<p>Tous droits réservés</p>
<nav>
<ul>
<li><a href="/">Retour à l’accueil</a></li>
<li><a href="/contact">Contact</a></li>
<li><a href="/plan">Plan du site</a></li>
</ul>
</nav>
</footer>
</body>
7.5 Elément <footer>
<nav>:
Les niveaux de navigation peuvent être multiples sur un site web ou une application. Il peut s’agir de liens
portant sur l’intégralité du site, sur une sous‐partie de l’arborescence en particulier, vers des pages
communes et transversales, ou bien encore vers des sections du même document. L’élément <nav> est un
choix de prédilection pour la navigation principale (souvent dans <header> ) et éventuellement pour les
navigations annexes de moindre valeur (souvent dans <footer>).
<aside>:
Une page web est bien souvent dotée d’un contenu principal et d’informations connexes qui ne sont pas
essentielles à sa compréhension. On parle alors de contenu tangentiel, et l’élément <aside> est destiné à
l’abriter. Il ne s’agit pas simplement de le considérer comme une section vouée à être rendue
graphiquement à gauche ou à droite du contenu principal, mais bien d’un point de vue sémantique
comme une section possédant une substance périphérique ou ampliative. On peut considérer comme
répondant à ces critères : une définition d’un des termes utilisés dans le contenu, une biographie, un
glossaire, une chronologie apportant un fond historique, voire d’autres éclaircissements, astuces, notes,
etc.
7.6 Eléments <nav> et <aside>
7.6 Eléments <nav> et <aside>
Exemple d’usage global de <aside>
<body>
<!‐‐ Contenu du document... ‐‐>
<aside>
<h2>Gestion</h2>
<ul>
<li><a href="/panier">Panier</a></li>
<li><a href="/commandes">Commandes</a></li>
<li><a href="/suivi">Suivi</a></li>
</ul>
<h2>Glossaire</h2>
<dl>
<dt>CSS</dt>
<dd>Cascading Style Sheets</dd>
<dt>HTML</dt>
<dd>HyperText Markup Language</dd>
</dl>
</aside>
</body>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    38
7.7 HTML5 Element Flowchart
Pour vous guider dans le choix de ces éléments, le site html5doctor a publié un intéressant diagramme,
baptisé HTML5 Element Flowchart (figure ci‐dessous) :
http://html5doctor.com/resources/
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    39
Figure 2. HTML5 Element Flowchart
<div>:
Conteneur générique par excellence, <div> représente une division de document. D’un point de vue
sémantique, il n’a aucune valeur et n’est voué qu’à regrouper des éléments ayant des propriétés
communes. <div> doit être considéré dans l’absolu comme un élément de dernier recours.
Les sections (<section>, <article>….) vues précédemment délimitent les zones du document possédant
une valeur sémantique particulière. Contrairement à <div> et <span> qui n’ont aucun rôle particulier,
hormis celui de regrouper des éléments, chaque section possède un rôle précis, et peut être utilisée une
à plusieurs fois dans le document.
Bonne pratique:
Évitez d’abuser des conteneurs génériques. Privilégiez les éléments plus discriminants qui qualifient
sémantiquement (notamment les sections). N’utilisez <div> qu’en dernier recours, si aucun autre élément
plus approprié n’a été trouvé.
<span>:
Conteneur de type en ligne. Équivalent en ligne de l’élément bloc <div>, il n’a pas de valeur sémantique
propre, mais peut être employé comme conteneur neutre. Tout comme <div>, <span> doit en théorie
n’être utilisé qu’en dernier recours lorsqu’il n’existe aucun autre élément plus approprié.
Exemple :
<p>HTML signifie <span lang="en">Hypertext Markup Language</span> en anglais.</p>
8. Conteneurs génériques
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    41
<blockquote>: Bloc de citation
L’élément <blockquote> sert à créer une division de petite taille dans le corps d’une page. A l’origine, il
était destiné à contenir des blocs de citations, comme un petit poème ou une note. Son contenu est par
défaut mis en évidence au moyen d’un affichage en retrait par rapport aux bords gauche et droit de la
page. Chaque élément est suivi d’un saut de ligne, tout comme pour les paragraphes.
<address>
Un bloc contenant des informations de contact peut être réalisé grâce à l’élément <address>. Celui‐ci
s’applique à son plus proche ancêtre de type body ou article. Si l’élément <address> est unique pour le
document (dans body ), alors il contient les informations de contact pour cet ensemble. Si l’on en
retrouve plusieurs au sein d’éléments de type article, alors ils contiennent les informations de contact
relatives à l’auteur de l’article uniquement. Les informations peuvent correspondre aux noms des
personnes à l’origine du document, à leurs adresses e‐mail, de messagerie instantanée ou web,
éventuellement leurs coordonnées téléphoniques ou postales.
9. Blocs sémantiques
Exemple d’usage de <address>
<article>
<p>Auteur de cet article : </p>
<address>
<a href="http://www.fsdmfes.ac.ma/Nfaoui/">El Habib NFAOUI</a>
</address>
</article>
Pour baliser un bloc d’adresse postale (ou mixte) quelconque, un microformat de type hCard sur un
paragraphe est plus approprié.
<code>
Un fragment de code informatique – quel que soit le langage – peut être contenu dans un
élément <code>. En général, une police à pas fixe lui est appliquée, ce qui le distingue d’un texte
conventionnel et évoque bien un morceau d’instruction qui pourrait être lue dans un éditeur de texte.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    43
9. Blocs sémantiques
10. Balises en ligne sémantique
Le langage HTML offre un nombre relativement important d’éléments qui permettaient de délimiter des
contenus en ligne. Ces derniers sont souvent limités à quelques mots afin de les particulariser et de les
mettre en évidence, le plus fréquemment au moyen d’un style prédéfini. Ils ont cependant uniquement
un rôle dans la structuration du contenu d’un texte. Voici quelques éléments :
<abbr> : contient une abréviation (abréviation, acronyme ou sigle), par exemple kg pour kilogramme.
Nous utilisons généralement l’attribut title pour afficher la signification exacte de l’abréviation quand
l’utilisateur place le curseur sur son contenu signalé dans les navigateurs par un soulignement en
pointillés.
Exemple :
<abbr title="Hypertext Markup Language"> HTML </abbr>
<cite> :
Nous avons déjà vu que l’élément <blockquote> permet d’inclure des citations et de les mettre en
évidence. L’élément <cite> a un objectif similaire mais il est utilisé en ligne pour des citations courtes.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    44
Exemple :
<p>Comme le disait Boris Vian <cite title="Vian 1920‐1959"> La vérité n’est pas du coté du plus grand
nombre car on ne veut pas qu’elle y soit. Le jour où il sera à même, par sa culture et ses connaissances, de
choisir lui même sa vérité, il y a peu de chance pour qu’il se trompe. </cite>
</p>
Ce code affiche une citation dans une police en italique par défaut.
<time> :
L’élément <time> est un conteneur spécifique destiné au marquage sémantique des dates au sens large
c’est‐à‐dire à la fois date et heure. Comme les formats standards sont peu lisibles, on peut afficher la date
en clair dans son contenu et la date au format standard dans son attribut datetime.
L’élément <time> représente un avantage non seulement pour la sémantique, mais aussi pour
l’indexation automatisée par les moteurs de recherche, ou encore pour l’importation de données dans un
agenda personnel. Son but est de lever toute ambiguïté sur la syntaxe à utiliser pour baliser une date ou
une heure.
Exemple : Usage de <time> avec l’attribut datetime
<p>La Coupe du monde de football de 2014 a démarré le <time datetime="2014‐07‐12"> 
12 juin </time> .</p>
10. Balises en ligne sémantique
11. Listes
11.1 Introduction
11.2  Listes de définitions
11.3  Liste ordonnée
11.4  Liste non ordonnée
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    46
11.1  Introduction
Les listes HTML sont prévues pour dresser des énumérations possédant une valeur sémantique. Les
structures disponibles pour une liste ordonnée (liste numérotée) et non ordonnée (liste à puces) sont
constituées par les éléments <ol> et <ul> au sein desquels chaque élément individuel est un <li>. Elles
sont couramment employées pour la conception de menus de navigation, qui ne sont en réalité que des
énumérations de liens.
Lorsqu’il s’agit de rédiger une liste de définitions, l’élément <dl> peut être utilisé en conjonction
avec <dt> et <dd>.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    47
11.2  Listes de définitions
<dl> Liste de définitions
Associe un « terme à définir » (<dt> ) et des « définitions » (<dd>) s’y rapportant. 
<dt> Terme/titre de définition
Enfant d’une liste <dl> , balisant le terme à définir. 
<dd> Contenu de la définition
Enfant d’une liste <dl>, recueillant la définition du terme <dt> qui le précède immédiatement.
Remarque:
Les éléments <dt> et <dd> peuvent être stylés grâce aux propriétés CSS.
Exemple:
<dl>
<dt>HTML</dt>
<dd>Langage de structuration des contenus des pages web</dd>
<dt>SQL</dt>
<dd>Langage d’interrogation des bases de données</dd>
</dl>
La liste de définitions <dl> ( description list en anglais) répond au besoin de lister des paires de termes et de 
descriptions qui leur sont liées. Voici les éléments HTML permettant de créer des listes de définitions:
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    48
11.3  Liste ordonnée
<ol>
Attributs:
start, 
reversed,
type
Liste ordonnée
Structure une liste d’éléments dont l’ordre importe, pouvant être numérotée. 
Contenu autorisé : <li>. 
L’attribut start définit l’index à partir duquel commencer la numérotation. L’attribut
reversed inverse l’ordre de la numérotation, et l’attribut type en indique le type : « 1 », «
a », « A », « i », « I ».
<li> Élément de liste.
Désigne un élément contenu dans une liste. Peut contenir une sous‐liste <ul> ou <ol>, et
ainsi de suite.
Exemple:
<ol start="2" type="A" >
<li>Premier élément</li>
<li>Deuxième élément</li>
<li>Troisième élément</li>
</ol>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    49
11.4  Liste non ordonnée
<ul> Liste non ordonnée
Désigne une liste d’éléments non ordonnés.
Contenu autorisé : <li> .
Exemple:
<ul>
<li>premier élément</li>
<li>deuxième élément
<ul>
<li>premier sous‐élément</li>
<li>second sous‐élément</li>
</ul>
</li>
<li>troisième élément</li>
</ul>
Remarque:
L’apparence par défaut de ces deux types de listes (<ol> et <ul>) peut être modifiée grâce à la propriété CSS
list‐style‐type qui adopte entre autres les valeurs disc (par défaut), square, circle pour les puces;
et armenian, decimal, decimal‐leading‐zero, georgian, lower‐alpha, lower‐greek, lower‐latin, lower‐roman,
upper‐alpha, upper‐latin, upper‐roman pour la numérotation.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    50
12.1 Introduction
12.2   Balises de création des tableaux 
12.3   Exemples
12. Tableaux de données
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    51
12.1 Introduction
Les tableaux de données sont conçus pour structurer des informations en lignes et en colonnes. Ils ne faut
pas les utiliser pour la mise en page du document, qui doit être assurée par des CSS.
La balise <table> structure un tableau de données, épaulé par les éléments <tr> (ligne du tableau), <th>
(cellule d’en‐tête) et <td> (cellule). Les éléments complémentaires sont <caption> (légende du tableau),
<thead> (groupe de cellules d’en‐tête), <tbody> (groupe de cellules de corps) et <tfoot> (groupe de
cellules de pied). Pour des raisons d’accessibilité, l’attribut <summary> (résumé) est conseillé.
Bonne pratique:
L’élément <table> n’est pas un outil
de mise en page! Rappelons que
les tableaux servent à structurer
l’information, sous la forme de
lignes et de colonnes. La mise en
forme doit toujours être déléguée
à une feuille de style CSS.
12.2   Balises de création des tableaux 
<caption> Légende associée à un tableau de données.
Elle doit se situer immédiatement après la balise ouvrante <table>.
<tr> Rangée/ligne de tableau
Regroupe les cellules (<td> ou <th>) d’une même ligne dans un tableau.
<th>
Attributs:
scope, colspan, rowspan,
headers
Cellule d’en‐tête
Désigne une cellule d’en‐tête (intitulé de colonne ou de ligne) d’un tableau
de données.
Les attributs colspan et rowspan définissent respectivement le nombre de
cellules fusionnées en colonnes et en lignes. L’attribut scope spécifie sur
quelles cellules s’applique l’en‐tête (row : ligne, col : colonne, rowgroup,
colgroup ). L’attribut headers indique une liste d’identifiants pour lesquels
s’applique l’en‐tête.
<td>
Attributs:
colspan, rowspan,
headers
Cellule de tableau
Regroupe le contenu d’une cellule de tableau. Les attributs colspan et
rowspan définissent respectivement le nombre de cellules fusionnées en
colonnes et en lignes.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    53
<thead> En‐tête de tableau
Il regroupe les cellules d’en‐tête d’un tableau de données. Les éléments <thead> et
<tfoot> doivent être déclarés avant le(s) <tbody>.
<tbody> Corps de tableau
Il regroupe les cellules du corps d’un tableau de données.
<tfoot> Pied de tableau
Il regroupe les cellules du pied d’un tableau de données.
<colgroup>
Attribut :
span
Groupe de colonnes
Il regroupe une ou plusieurs colonnes définies par <col>, avant tout élément <thead>,
<tbody>, <tfoot> et <tr>. L’attribut span définit le nombre de colonnes sur lesquelles cet
élément doit s’étendre.
12.2   Balises de création des tableaux 
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    54
<col>
Attribut :
span
Colonne(s) d’un groupe. Permet d’appliquer des propriétés communes à une colonne dans 
un tableau de données, par exemple des styles CSS.
Exemple :
<table> 
<colgroup> 
<col span="1" style="background:green" />
<col span="2" style="background:red" />
</colgroup>
<tr> 
<td>Cellule 1</td> 
<td>Cellule 2</td> 
<td>Cellule 3</td> 
</tr> 
<tr> 
<td>Cellule 1</td> 
<td>Cellule 2</td> 
<td>Cellule 3</td> 
</tr> 
</table>
12.2   Balises de création des tableaux 
Exemple 1:
<body> 
<table border="1"> 
<caption>Facture de votre commande de 
livres</caption> 
<!‐‐ Groupe 1 : Dates ‐‐> 
<colgroup id="date" span="1">
</colgroup>
<!‐‐ Groupe 2 : Titre et Auteur ‐‐> 
<colgroup id="livre" span="2">
</colgroup> 
<!‐‐ Groupe 3: Quantité, Prix unitaire, Prix total ‐‐> 
<colgroup class="prix"> 
<col span="1" id="quantite"/> 
<col span="2" id="prix"/> 
</colgroup>
<thead> 
<tr> 
<th>Date </th>
<th>Titre </th> 
<th>Auteur</th>
<th>Quantité </th> 
<th>Prix Unitaire </th> 
<th>Prix Total </th>
</tr> 
</thead> 
<tfoot> 
<tr> 
<th>Date </th> 
<th>Désignation </th> 
<th>Auteur</th>
<th>Quantité </th>
<th>Prix Unitaire </th>
<th>Prix Total </th> 
</tr> 
</tfoot> 
<!‐‐ Données du tableau ‐‐>
<tbody>
<tr>
<td>10/10/2013</td> 
<td>Dictionnaire Arabe‐English</td>
<td>Said Ramdani</td>
<td>3</td>
<td>32.00 Dhs</td> 
<td>96.00 Dhs</td> 
</tr> 
<tr> 
<td>10/03/2012</td> 
<td>HTML: livre de poche  </td>
<td>Tarik Fadili</td> 
<td>2</td>
<td>38.00 Dhs</td> 
<td>76.00 Dhs</td> 
</tr> 
12.3   Exemples 
12.3   Exemples 
<tr> 
<td>10/01/2012</td>
<td>Exercices CSS </td> 
<td>Soad Sany</td> 
<td>5</td> 
<td>29.90 Dhs</td> 
<td>149.50 Dhs</td>
</tr>
</tbody>
</table> 
</body> 
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    57
12.3   Exemples
Exemple 2: Fusion de colonnes:
<body>  
<table border="1">
<tr> 
<td colspan="2"> Colonnes 1 et 2 fusionnées </td> 
<td> Colonne 3 </td>
<td colspan="2"> Colonnes 4 et 5 fusionnées</td> 
</tr>      
<tr> 
<td> Colonne 1 </td> 
<td> Colonne 2 </td> 
<td> Colonne 3 </td> 
<td> Colonne 4 </td>  
<td> Colonne 5 </td> 
</tr>      
<tr> 
<td> Colonne 1</td> 
<td colspan="3"> Colonnes 2, 3 et 4 fusionnées </td>          
<td> Colonne 5</td> 
</tr> 
</table>  
</body>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    58
13.1 Introduction
13.2  La balise <a>
13.3  Attribut hreflang
13.4  Les liens ciblés : ancres
13.Liens hypertextes
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    59
13.1 Introduction
Les liens hypertextes permettent de passer, d’un simple clic, sur un objet cliquable (texte, image, partie
d’une image, bouton, etc.) d’une page à l’autre, quelle soit située sur le même serveur ou en n’importe
quel point du réseau. Nous parlerons dans ce cas de liens externes (sous‐entendu par rapport au
document initial). Il est également possible de passer instantanément d’un point de la page à un autre
situé sur la même page et identifié par un nom particulier. Nous parlerons alors de liens internes (encore
par rapport au document initial).
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    60
<a>
Attributs :
href,
target,
media ,
type.
Lien hypertexte.
L’élément <a> ( anchor en anglais ou ancre ) crée un lien hypertexte. L’activer – cliquer 
dessus dans la plupart des cas – signifie au navigateur que l’on souhaite changer d’adresse 
de navigation et consulter une autre ressource.
L’attribut href est bien sûr le plus important puisque c’est lui qui détermine la cible du lien,
c’est‐à‐dire l’adresse du document que le navigateur chargera et interprétera. Il peut s’agir
d’un lien classique vers une autre page HTML, vers un fichier média que le navigateur peut
interpréter nativement ou à l’aide d’une extension (par exemple une image, un document
PDF), ou encore vers un fichier que le navigateur proposera de télécharger.
target : Attribue un contexte de navigation dans lequel suivre le lien. Il peut prendre les
valeurs prédéfinies _ blank, _ parent , _ self et _ top pour afficher la cible, respectivement,
dans une nouvelle fenêtre (ou un nouveau onglet), la fenêtre parent de la fenêtre en
cours, la fenêtre elle‐même et la fenêtre de plus haut niveau.
13.2  La balise <a>
• Le tableau ci‐dessous présente un résumé des différents attributs de la balise <a> permettant de créer
des liens hypertexte.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    61
<a>
Attributs:
download,
id,
rel,
hreflang,
download : Indique que la ressource liée est prévue pour être téléchargée. Si une valeur
est donnée à l’attribut, elle représente le nom du fichier après téléchargement.
L’attribut id est utilisé pour créer une ancre (nous reviendrons sur cette notion
ultérieurement dans ce chapitre).
L’attribut rel spécifie la relation établie par le lien, entre le document courant et la cible.
Plusieurs valeurs peuvent être combinées, séparées par des espaces. On trouve entre
autres: alternate, archives, author, bookmark, external, first, help, index, last, license…
L’attribut hreflang précise la langue de la destination. On peut préciser media (une requête 
de média pour laquelle la cible est prévue – voir chapitre « Requêtes de média dans CSS ») 
et type (type MIME de la ressource destination).
13.2  La balise <a> 
Exemple:
<!‐‐ Lien vers une autre page html ‐‐> 
<a href="contact.html">Contactez‐nous</a>
<!‐‐ Lien vers une image ‐‐> 
<a href="maphoto.jpg">Visualier ma photo</a>
Exemple de l’attribut rel :
<nav> 
<p>
<a href="/categorie/" rel="up" >Niveau supérieur</a> 
Page courante 
</p> 
</nav>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    62
13.2  La balise <a>
Le lien peut être absolu, c’est‐à‐dire formuler une adresse complète, notamment dans le cas d’un lien
menant vers un autre site hébergé sur un autre nom de domaine. Il peut être aussi relatif, si l’on souhaite
se baser sur l’adresse courante – affichée dans la barre d’adresses – et faire référence à un document
stocké au même niveau, ou dans un niveau différent (sous‐répertoire, répertoire parent, répertoire
racine).
Exemples :
<!‐‐ Lien relatif vers une page de contact, hébergée dans le même niveau d’arborescence ‐‐> 
<a href="contact.html">Contactez‐nous</a>
<!‐‐ Lien relatif vers un fichier dans le sous‐répertoire images (par rapport au document courant) ‐‐> 
<a href="images/schema.png">Voir l’illustration</a>
<!‐‐ Lien relatif vers une page hébergée dans le répertoire parent (un niveau au‐dessus du document 
courant) ‐‐> 
<a href="../categorie.html">Revenir à la catégorie</a>
<!‐‐ Lien absolu vers une page hébergée à la racine du site ‐‐>
<a href="/mentions.html">Mentions légales</a>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    63
13.2  La balise <a>
<!‐‐ Lien absolu vers la racine du site ‐‐> 
<a href="/">Accueil du site</a>
Dans tous les cas, s’il ne s’agit pas d’un lien relatif au site, on précisera le protocole (http://, ftp://, etc.)
<!‐‐ Lien externe ou absolu ‐‐> 
<a href="http://www.google.com/"></a>
Pour envoyer un courrier électronique lorsqu’on clique sur un lien, on utilise le protocole mailto. Dans ce
cas, il incombera au navigateur et au système d’exploitation de lancer l’application de messagerie installée
pour prendre en charge ce lien et proposer une fenêtre de rédaction.
Exemple:
<!‐‐ Lien pour adresse e‐mail ‐‐>
<a href="mailto:elhabib.nfaoui@usmba.ac.ma"></a>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    64
13.3  Attribut hreflang
L’attribut hreflang précise la langue de destination et peut permettre à l’utilisateur de savoir par avance 
s’il pourra comprendre l’idiome utilisé. Par défaut, il n’est pas signalé visuellement, mais une petite astuce 
en CSS permet d’afficher sa valeur entre parenthèses à la suite du lien, grâce à la pseudo‐classe : after.
Exemple d’usage de l’attribut hreflang
<head>
<style type= "text/css">
a[hreflang]:after { 
content: " (" attr(hreflang) ") "; 
}
</style>
<body>
<!‐‐ Lien vers la version de Wikipédia en langue arabe ‐‐> 
<a href="http://ar.wikipedia.org/" hreflang="ar">Wikipedia</a>
</body>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    65
13.4  Les liens ciblés : ancres
Quand le contenu d’une page est volumineux, l’utilisateur ne peut pas en avoir une vision globale puisqu’il
doit la défiler sur plusieurs écrans. Il est alors souhaitable de lui proposer une table des matières ou un
menu composé de liens internes vers les différentes sections de la page (par exemple div, section). Il
pourra ainsi accéder directement au point de son choix sans faire défiler la page. De même, si le lien est
externe, il est possible d’accéder en un point particulier de la page cible.
Chaque point cible de la page doit être signalé par un lien particulier, appelé ancre (aussi nommée hash
en anglais), lequel est créé à l’aide de l’élément <a>, muni simplement d’un attribut id (l’attribut name
est désormais obsolète avec HTML 5) dont la valeur doit être unique dans la page. Notons que l’ancre
peut aussi se trouver dans un autre document. Nous pouvons par exemple écrire le code suivant pour le
contenu d’une page :
<p>
<!‐‐ créer une ancre possédant l’id ="para1" ‐‐>
<a id="para1">Paragraphe 1</a>Un document HTML doit avoir la structure…</p> 
<p>
<a id="para2">Paragraphe 2</a>Une feuille de style CSS comporte… </p>
Dans cet exemple, chaque paragraphe devient alors la cible d’un lien. Nous devons ensuite créer le
lien d’origine pour lequel un clic permet l’affichage du paragraphe cible en haut de la fenêtre du
navigateur. L’élément <a> , origine du lien, doit contenir un attribut href dont la valeur est celle de
l’attribut id de la cible, précédé du caractère dièse ( # ).
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    66
13.4  Les liens ciblés : ancres
Nous disposons par exemple du code suivant pour créer le lien vers le premier paragraphe :
<p>
<a href="#para1">Vers le paragraphe 1</a>
</p>
Si l’ancre est située dans un autre document HTML, l’attribut href contient l’adresse relative ou absolue
du document, suivie du caractère dièse, puis de l’identifiant de l’ancre.
Pour une adresse relative, nous pouvons écrire :
<!‐‐ Lien vers l’ancre #para1 définie dans la page 2 ‐‐>
<p><a href="page2.html#para1">Paragraphe 1 de la page 2</a></p>
Pour une adresse absolue, le code devient :
<p><a href="http://www.cours.com/page2.html#para1">Paragraphe 1</a></p>
Une ancre sans nom désigne le haut de la page :
<!‐‐ Lien vers le début du document ‐‐>
<a href="#">Haut de page</a>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    67
14.Contenu embarqué
14.1 Introduction
14.2  Images
14.3  Carte cliquable
14.4  Figure
14.5  Audio et vidéo
14.6  Autres contenus embarqués : canvas, iframe et object
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    68
14.1 Introduction
On désigne par contenu embarqué tout élément faisant référence à des données stockées dans un fichier 
ou une ressource externe au document HTML. Il s’agit d’images, d’autres documents HTML, de médias 
vidéo et d’audio. 
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    69
14.2 Images
Les images présentes dans le document HTML (hors images de fond définies avec CSS : toujours conserver
la séparation entre la forme et le contenu) sont à considérer comme des éléments à part entière devant
apporter des informations à l’utilisateur. Les formats PNG, JPEG, GIF sont désormais universellement
reconnus.
<img> 
Attributs :
src, alt, height, 
width,
usemap,
ismap
Insère une image stockée dans un fichier externe à l’intérieur d’un document web.
L’attribut src spécifie l’adresse vers le fichier image. L’attribut alt indique un texte 
alternatif à l’image. 
Les attributs width (largeur) et height (hauteur) définissent respectivement l’espace
d’affichage en pixels alloué pour l’image.
Une image peut être associée à la définition d’une zone de liens cliquables
(ou image map ), telle que décrite avec l’élément <map>. L’attribut usemap contient
alors l’identifiant unique de ce dernier pour y faire appel.
La valeur booléenne (true ou false ) de l’attribut ismap indique que le navigateur
doit transmettre les coordonnées du point cliqué sur l’image au serveur, lorsque celle‐
ci est bien entendu cliquable (par exemple dans un lien <a>). Ces coordonnées sont
envoyées sous la forme ?x,y et peuvent être analysées par un langage interprété côté
serveur.
Exemple :
<p>
<img src="babjloud.jpg"  alt=" width="300"  height="100"> Bab jloud se situe à la vielle Médina de Fes...
</p>
Il existe de nombreuses techniques et combinaisons d’éléments HTML pour positionner les images dans le
contenu. Les cas de figure les plus fréquents sont le centrage, le flottement à gauche, le flottement à droite et
le positionnement absolu, qui peuvent être accomplis à l’aide de CSS.
14.2 Images
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    71
14.3 Carte cliquable
Un élément <map> est utilisé en conjonction avec une image <img> pour concevoir une carte cliquable
appliquée sur celle‐ci. Le résultat consiste en des zones distinctes et transparentes, de formes variées,
équipées de liens. En anglais, on emploie plus couramment le terme d’image map. L’attribut name est
requis pour cet élément, car il permet de l’associer à l’élément image <img> via son attribut usemap .
<map>
Attribut :
name
Carte cliquable pour image.
Cet élément catalogue les zones sensibles <area> d’une image utilisée en
guise d’image réactive. Si l’attribut id est présent, il doit avoir la même
valeur que name, qui permet de lier <map> et <img> avec son attribut
usemap.
<area>
Attributs :
shape, coords, rel, 
media, hreflang, type, 
href, target, alt
Un élément <area> est une zone cliquable individuelle faisant partie
d’une image map. Sa forme est définie par l’attribut shape qui prend les
valeurs circle (cercle), poly (polygone), rect (rectangle) et default (toute
l’image), ainsi que par les coordonnées de la forme choisie avec
l’attribut coords.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    72
14.3 Carte cliquable
Exemple :
<img src="carte.png" useusemap="#atlas" > 
<map name="atlas"> 
<area shape="rect" coords="0,0,100,90" href="amerique‐nord.html" alt="Amérique du Nord"> 
<area shape="circle" coords="200,75,50" href="oceanie.html" alt="Océanie"> 
</map>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    73
14.4 Figure
<figure> Unité de contenu, avec légende optionnelle <figcaption>, qui regroupe habituellement une ou
plusieurs illustrations, pouvant être mentionnées depuis le contenu principal et déplacées à
l’extérieur du flux, sans affecter la signification du document.
Exemple :
<body>
<!‐‐ Une image avec une légende ‐‐>
<figure>
<img src="Android.jpg" width="600">
<figcaption> Architecture du framework Android</ figcaption>
</figure>
</body>
</html>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    74
14.5 Audio et vidéo
Les éléments de média (<audio> et <video>) permettent d’agrémenter un document ou une application
avec sons et vidéos, sans utiliser d’extension propriétaire. L’idée des éléments <audio> et <video> de
HTML 5 est d’en simplifier grandement l’insertion dans les pages web avec une lecture native dans le
navigateur, sans nécessiter de plug‐in supplémentaire. Cependant, chaque navigateur reconnaît des
formats différents (parmi MP3, Ogg Vorbis, WAV, AAC pour l’audio, et MP4/H.264, WebM, Ogg Theora
pour la vidéo…).
<audio> Son ou élément audio, interprété dans le navigateur, dont la source est définie par
l’attribut src, ou par une succession d’enfants <source> (voir plus bas) proposant des
formats alternatifs.
Exemple 1 :
<!‐‐ Un son ‐‐>
<audio src="musique.mp3" controls>
Ce navigateur ne supporte pas HTML5 Audio
</audio>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    75
<video> Vidéo affichée et interprétée dans le navigateur, dont la source est définie par
l’attribut src, ou par une succession d’enfants <source> (voir plus bas) proposant des
formats alternatifs.
Étant donné qu’il s’agit d’un élément visuel, il est fortement conseillé de lui attribuer des
dimensions grâce aux attributs width (largeur) et height (hauteur). Idéalement – si la
disposition de la page et l’espace disponible le permettent – il est également conseillé de
conserver la résolution native de la vidéo pour assurer une qualité optimale et éviter un
redimensionnement ou un échantillonnage potentiellement disgracieux.
Exemple :
<video src=" video1.mp4" width="640" height="480" controls>
<a href="video1.mp4">Télécharger la vidéo</a>
</video>
14.5 Audio et vidéo
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    76
<source> Source alternative audio ou vidéo.
Placé dans <audio> ou <video>, vient en remplacement de l’attribut src pour préciser
plusieurs sources possibles, dont le format est indiqué par type, l’adresse par src et le média
destination par media.
Les sources multiples ont l’avantage de permettre de toucher un panel de visiteurs plus large,
avec l’inconvénient de devoir concevoir et héberger en parallèle plusieurs types de fichiers
différents.
Exemple : Sources multiples <video>
<video width="640" height="480" controls >
<source src=" video.mp4 " type="video/mp4" >
<source src=" video.3gp " type="video/3gpp" media="handheld">
<source src=" video.ogv " type="video/ogg; codecs=theora, vorbis" >
<source src=" video.webm " type="video/webm; codecs=vp8, vorbis" >
Ce navigateur ne supporte pas l'élément <code>video</code>
</video>
Dans cet exemple, quatre sources sont proposées :
- une vidéo à destination des mobiles (3GP avec media handheld ); 
- une vidéo Ogg Theora à destination des navigateurs supportant le type MIME video/ogg
et équipés des codecs theora (vidéo) et vorbis (audio);
- video/webmune vidéo WebM à destination des navigateurs supportant le type MIME et
équipés des codecs vp8 (vidéo) et vorbis (audio);
- une vidéo MP4 pour les navigateurs connaissant ce format.
14.5 Audio et vidéo
Attributs
spécifiques
à l’audio et
à la vidéo
- autoplay : Lecture automatique. Active la lecture dès le chargement de la page.
- preload : Préchargement. Précharge le fichier média, dès le chargement de la page.
- controls : Affichage des contrôles. La présence de l’attribut controls affiche les
contrôles natifs du navigateur (lancement de la lecture, arrêt, progression, volume,
etc.).
- src : Source. Indique l’adresse de la source du média (si <source> n’est pas utilisé).
- loop : Lecture en boucle. Active la lecture en boucle.
- poster : Aperçu par défaut. Indique l’adresse de l’image d’aperçu à charger pour
occuper la zone d’affichage lorsque la vidéo n’est pas jouée.
- width, height : Dimensions. Spécifie les dimensions d’affichage de la zone vidéo.
- muted : Silencieux. Active le mode silencieux (volume nul).
- mediagroup : Groupe d´éléments audio et vidéo. Permet de regrouper différents
éléments média (audio, vidéo), par exemple dans une liste de lecture gérée par
JavaScript. Un cas pratique serait la lecture simultanée d’une vidéo contenant
l’interprétation en langue des signes pour une meilleure accessibilité.
Exemple :
<video src="mavideo.mp4" mediagroup="groupe1" controls></video>
<video src="signes.mp4" mediagroup="groupe1" ></video>
14.5 Audio et vidéo
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    78
<track>
Attributs: 
kind, src, 
srclang, 
label, 
default
En complément aux fichiers médias pouvant contenir du son et de la vidéo,
l’élément <track>, également enfant de <video> et <audio>, vise à apporter le support
de «pistes de texte synchronisées». Il lie un fichier de piste texte pour un élément média.
L’attribut kind indique le type de piste : subtitles (sous‐titres), captions (légendes),
descriptions (audiodescription), chapters (chapitrage), metadata (méta‐informations). Le
format préconisé est le WebVTT. L’attribut label définit l’étiquette présentée à l’utilisateur,
et srclang la langue du fichier source. L’attribut default active un élément track par défaut
si l’utilisateur n’en a pas choisi d’autre.
Exemple complet avec plusieurs éléments <track>:
<video src="video.webm" id="mavideo">
<track kind=" subtitles " src="video.fr.vtt" srclang="fr" label="Français" default>
<track kind=" captions " src="video.fr.cap.vtt" srclang="fr" label="Français pour 
malentendants">
<track kind=" subtitles " src="video.en.vtt" srclang="en" label="English">
<track kind=" subtitles " src="video.ar.vtt" srclang="de" label="Deutsch">
<track kind=" descriptions " src="video.fr.desc.vtt" srclang="fr" label="Description 
texte">
</video>
14.5 Audio et vidéo
14.6 Autres contenus embarqués : canvas, 
iframe et object
<canvas>
Attributs :
width, height
Surface de dessin transparente, manipulable avec JavaScript. Pour la syntaxe
complète, se référer à la documentation détaillant toutes les fonctions de dessin.
Parmi les possibilités offertes figurent :
- des méthodes de tracé de formes géométriques (cercles, rectangles...) ;
- des méthodes de tracé de polygones ;
- des méthodes de choix de styles de couleurs et de remplissages ;
- des méthodes de tracé de texte ;
- des méthodes d’import et de manipulation d’images ;
- des méthodes de transformation (échelle, rotation, déplacement) qui 
affectent toute la matrice.
<iframe>
Attributs:
src, srcdoc,
name, width, 
height, sandbox,
seamless 
Cadre (contexte) de navigation imbriqué. L’élément <iframe> ( inline frame en 
anglais) embarque dans la page un autre document HTML à l’adresse src, telle une 
carte google, etc. Il s’agit d’un contexte de navigation imbriqué dans un cadre.
seamless : Si cet attribut est présent, l’iframe apparaît en tant que partie du
document dans lequel elle est présente, sans bordure ni barre de défilement.
L’attribut target des liens est alors fixé par défaut à parent.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    80
<iframe>
Attributs:
src, srcdoc,
name, width,
height, sandbox,
seamless
L’attribut sandbox précise les règles de sécurité à autoriser : allow‐same‐origin,
allow‐forms , allow‐scripts , allow‐top‐navigation. Sa seule présence sans valeur
désactive toutes les autorisations :
- Les formulaires, scripts et plug‐ins sont désactivés.
- Pas d’accès aux éléments stockés en local (cookies, sessionStorage,
localStorage).
- Les requêtes XMLHttpRequest (Ajax) ne peuvent être envoyées.
- Les liens ne peuvent pas cibler (grâce à target ) d’autres « cadres » (frames) ou
contextes de navigation.
- Le contenu est traité par défaut comme provenant d’une origine externe (un
autre domaine), ce qui l’empêche d’accéder à certains contenus initiaux et
notamment le DOM.
Ces restrictions peuvent être levées individuellement en utilisant une ou plusieurs
des valeurs au sein de l’attribut :
- allow‐forms: autorise les formulaires;
- allow‐same‐origin: autorise le contenu à être traité comme provenant de
la même origine au lieu d’être considéré comme provenant d’un autre
domaine;
- allow‐scripts: autorise les scripts (hormis les pop‐ups) ;
- allow‐top‐navigation: autorise l’iframe à accéder à la navigation de niveau
supérieur.
Plusieurs options peuvent être combinées dans l’attribut en les séparant par des
espaces.
Les attributs align, allowtransparency, frameborder, marginheight, marginwidth,
scrolling sont obsolètes et peuvent avantageusement être remplacés par CSS.
L’attribut longdesc peut être remplacé par un lien <a> menant vers une description
longue.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    81
Exemple:
<!DOCTYPE html>
<html>
<head>
<title>Document parent</title>
</head>
<body>
<p>Avant l' iframe</p>
<iframe sandbox="allow‐scripts allow‐forms" width="400" height="300" src="iframe.html">
</iframe>
<p>Après l ' iframe</p>
</body>
</html>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    82
14.6 Autres contenus embarqués : canvas, 
iframe et object
<object> Objet externe.
Cet élément Permet de faire appel à un objet externe, souvent interprété via une
extension (plug‐in), par exemple pour Flash ou Java. Le type MIME de l’objet est
précisé par l’attribut type et les dimensions par width (largeur) et height (hauteur).
Exemple :
<object type="application/x‐java‐applet">
<param name="code" value="MaClasse">
<param name="archive" value="Applet.jar" />
<p>Texte alternatif : Java n’est pas installé.</p>
</object>
<param>
Attributs :
name, value
Paramètre d’objet.
Définit les paramètres d’exécution pour <object> .
<object type="application/x‐shockwave‐flash">
<param name="movie"  value="animanim.swf">
</object>
14.6 Autres contenus embarqués : canvas, 
iframe et object
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    83
15.Formulaires
15.1 Introduction
15.2 Structure d’un formulaire
15.3  Attributs spécifiques à <form>
15.4 Groupe de champs : <fieldset>
15.5  Champs de formulaires
15.6  Attributs communs pour les éléments de formulaire
15.7 Validation des données
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    84
15.1 Introduction
Un formulaire regroupe un ensemble de champs interactifs permettant de recueillir des informations
auprès de l’utilisateur. L’utilisateur peut entrer des textes ou des mots de passe, opérer des choix grâce à
des boutons radio, des cases à cocher ou des listes de sélection, etc. Il peut également effectuer le
transfert de ses propres fichiers vers le serveur. Nous allons aborder dans ce chapitre les éléments HTML
qui permettent de créer la structure et les différents composants des formulaires.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    85
15.2 Structure d’un formulaire
Le formulaire est généralement validé et envoyé après click sur un bouton input de type submit (envoyer).
Les valeurs des éléments qu’il contient sont alors envoyées au serveur, à l’adresse définie par
l’attribut action. La méthode HTTP utilisée pour l’envoi des données peut être de type GET ou POST,
précisée par l’attribut method.
Les éléments constitutifs d’un formulaire doivent être contenus entre les balises <form> et </form>.
<form> ne peut pas contenir d’autres éléments <form>.
Exemple :
<form action="traiter.php" method="post"> 
<label for="nom">Nom</label> 
<input name="nom" id="nom" type="text"> 
<input value="envoyer" name="envoi" type="submit" />
</form>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    86
15.3  Attributs spécifiques à <form>
Attribut Valeurs Rôle
accept‐charset Codes pages de caractères séparés
par des virgules
Liste de types d’encodages des
caractères acceptés par le
serveur pour traiter le formulaire.
action URL  Adresse à laquelle sont envoyées les
données.
autocomplete on
off
Active (on ) ou désactive ( off )
l’autocomplétion sur l’ensemble du
formulaire.
enctype text/plain
application/x‐www‐form‐urlencoded
multipart/form‐data
Type MIME associé au contenu du
formulaire lors de sa soumission au
serveur.
La valeur multipart/form‐data doit
être utilisée en combinaison avec les
champs de type file .
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    87
method get
post
Méthode d’envoi HTTP au serveur
name  texte Nom du formulaire
novalidate novalidate ou "" ou (vide) Désactive l’impératif de validation des
données côté client pour la soumission du
formulaire.
target _blank
_parent
_self
_top
nom d’un élément de type iframe
(attribut name )
Contexte de navigation spécifique
(iframe , autre) pour la validation du
formulaire, si celui‐ci n’est pas soumis
dans le contexte courant.
15.3  Attributs spécifiques à <form>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    88
Attribut Valeurs Rôle
15.4 Groupe de champs : <fieldset>
L’élément <fieldset> est très souvent inclus dans un formulaire. Il représente un groupe de champs qui
regroupe des informations de même thématique dans un formulaire pour en faciliter la compréhension,
et doit contenir directement un élément <legend> qui ajoute une légende à ce groupe <fieldset>.
Exemple: Aperçu d’un groupe de champs
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    89
15.4 Groupe de champs : <fieldset>
<form method="post" action="validation.php"> 
<fieldset> 
<legend>Votre identité</legend> 
<label for="nom">Entrez votre nom</label> 
<input id="nom" type="text" name="nom"  required>
<label for="prenom">Entrez votre prénom</label> 
<input id="prenom" type="text" name="prenom" required> 
<label for="email">Entrez votre e‐mail</label> 
<input id="email" type="email" name="email" required> 
</fieldset>
<fieldset> 
<legend>Votre adresse</legend>
<label for="cp">Entrez votre code postal</label> 
<input id="cp" type="number" name="codepostal">
<label for="ville">Entrez votre ville</label> 
<input id="ville" type="text" name="ville"> 
</fieldset> 
<input type="submit" value="Valider"> 
</form>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    90
15.5  Champs de formulaires
15.5.1 <input> et ses variantes
15.5.2 Eléments <label>, <output> et <textarea>
15.5.3 Elément <select>
15.5.4 Elément <button>
15.5.5 Elément <progress>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    91
15.5.1 <input> et ses variantes
L’élément <input> est particulier, car il revêt de multiples apparences et fonctionnalités, uniquement
caractérisées par l’attribut type. Son but est de recueillir les informations d’une entrée effectuée par
l’utilisateur, éventuellement en lui fournissant toutes les indications nécessaires pour structurer son
entrée ou son choix.
Le tableau ci‐dessous récapitule plusieurs valeurs possibles pour l’attribut type de la balise <input>.
text Le type text est le champ de formulaire le plus classique qui soit. Comme son nom le
suggère, il permet la saisie d’un texte (relativement court pour des raisons de
lisibilité, car visuellement le contrôle est monoligne et d’une largeur déterminée).
<input type="text" name="prenom">
password Confrère de text , un champ d’entrée de mot de passe password est un
équivalent dont les caractères sont remplacés visuellement par des astérisques ou
des points.
Mot de passe : <input type="password" name="motdepasse">
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    92
date Avec le type date, débute une liste de plusieurs contrôles pour l’entrée de
données temporelles. La syntaxe des dates et heures est définie par la RFC 3339. Tel que son
nom original l’évoque, cet élément vise à sélectionner une date précise du calendrier
grégorien. Le format de la valeur texte y correspondant est la succession de l’année sur quatre
chiffres, les numéros du mois et du jour, séparés par des tirets.
<input type="date" name="naissance">
color
Grâce au type color, l’élément <input> devient un contrôle pour la sélection d’une couleur, ou
plutôt d’un code couleur stocké dans son attribut value. Le format est sous la forme
hexadécimale que l’on retrouve déjà au sein de HTML et CSS, débutant par un dièse suivi de 6
caractères alphanumériques entre 0 et 9, A et F.
<!‐‐ blanc ‐‐> <input type="color" name="couleur1" value="#FFFFFF">
<!‐‐ bleu royal ‐‐> <input type="color" name="couleur2" value="#4169E1">
15.5.1 <input> et ses variantes
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    93
number Un champ de type number consacre son existence aux valeurs numériques, éventuellement
situées dans un intervalle spécifié par les attributs min et max.
Nombre : <input type="number" name="age">
range Une sélection de valeur numérique peut aussi être effectuée avec le type range, mais avec
un contrôle volontairement imprécis. L’utilisateur pourra naviguer dans un intervalle défini
par les attributs min et max, avec un pas éventuellement précisé par step .
Cependant, par défaut – hors usage d’un JavaScript complémentaire –, ce contrôle
ne fournit pas d’information directe à l’utilisateur sur l’intervalle ou la valeur obtenue. Un
cas typique d’utilisation serait celui du volume sonore pour un lecteur <audio> ou <video>:
l’internaute n’a pas besoin de savoir avec exactitude la valeur du volume, il lui suffit de
connaître approximativement sa position par rapport à une limite basse et une limite
haute.
<input type="range" name="volume">
15.5.1 <input> et ses variantes
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    94
tel L’attribut tel est une déclinaison d’un champ texte par défaut indiquant au navigateur que l’on
s’attend à saisir un numéro de téléphone. Quelques navigateurs reconnaissent très bien cette
spécificité en affichant un clavier approprié pour faciliter l’entrée d’une série de chiffres. Il n’y a
aucune vérification de syntaxe étant donné la variété des notations pouvant exister au niveau
international. Pour cela, il est préférable d’utiliser l’attribut pattern pour effectuer une
validation de la saisie côté navigateur.
email Un champ de type email est un champ texte spécialisé, destiné à recevoir une adresse e‐mail.
Ce standard est à la fois trop strict (avant le caractère @), trop vague (après @) et trop laxiste 
(autorisation d’espaces, de commentaires, etc.) pour être pratique.
<p>Email : <input type="email" name="adressemail">
</p>
hidden Un élément <input> de type hidden est un champ caché pour l’utilisateur, mais dont la valeur
est validée avec le formulaire. Il s’agit généralement d’une valeur issue d’un script exécuté côté
serveur (par exemple PHP) ou côté client (JavaScript).
<input type="hidden" name="action" value="inscription">
15.5.1 <input> et ses variantes
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    95
radio Un bouton radio est un contrôle de formulaire, faisant partie d’un groupe d’autres boutons
radio. Ils possèdent tous le même attribut name en tant que lien : un seul bouton radio peut
être coché parmi leur ensemble, à un moment donné.
Exemple:
<p>
<input type="radio" name="genre" value="masculin" id="m">
<label for="m">Je suis un homme</label>
<input type="radio" name="genre" value="feminin" id="f">
<label for="f">Je suis une femme</label>
</p>
<p> Souhaitez‐vous recevoir la newsletter ?
<input type="radio" name="newsletter" value="oui" id="newsletter‐oui" checked >
<label for="newsletter‐oui">Oui</label>
<input type="radio" name="newsletter" value="non" id="newsletter‐non">
<label for="newsletter‐non">Non</label>
</p>
15.5.1 <input> et ses variantes
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    96
checkbox Le bouton checkbox est très semblable au bouton radio à la seule différence qu'il est
possible d'en sélectionner plusieurs appartenant au même groupe.
Vos sports préférés : <br />
<input type="checkbox" value="natation" checked>Natation<br />
<input type="checkbox" value="cyclisme" >Cyclisme<br />
<input type="checkbox" value="ski" >Ski<br />
<input type="checkbox" value="pétanque" checked>Pétanque<br />
<input type="checkbox" value=« basket">Basket
15.5.1 <input> et ses variantes
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    97
reset Un contrôle de type reset est un simple bouton réinitialisant tous les champs du formulaire à
leur état initial.
<input type="reset" value="Réinitialiser">
submit La variante de bouton de type submit permet de valider un formulaire. Bien entendu, il existe 
des fonctions JavaScript pour produire un résultat équivalent, mais ce bouton est nativement 
prévu à cet usage. Il déclenche la validation complète du formulaire qui le contient, et son 
envoi à l’adresse spécifiée dans l’attribut action de ce formulaire.
<form method="post" action="identification.php">
<label for="login">Identifiant : </label>
<input type="email" id="login">
<input type="submit" value="Valider">
</form>
15.5.1 <input> et ses variantes
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    98
image Les formulaires ne comprennent pas uniquement des champs texte et des boutons. Une
image cliquable est parfaitement intégrable à l’aide du type image. En revanche, elle peut
couvrir deux types d’usage :
- soit pour la sélection de coordonnées (x,y) sur cette image ;
- soit pour jouer le rôle de « bouton graphique » pour valider le formulaire.
Puisqu’il s’agit d’un élément très proche des images classiques, il accepte les attributs width
et height pour la définition des dimensions, ainsi que les attributs alt et src .
Les coordonnées sont transmises à la soumission du formulaire dans les variables 
suffixées name.x et name.y, dérivées de l’attribut name de l’image.
<input type="image" src="carte.png" alt=""  name="map">
15.5.1 <input> et ses variantes
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    99
file Un élément de sélection de fichier local peut être créé avec un type file.
L’attribut multiple permet la sélection de plusieurs fichiers pour un même élément <input> de
type file, tandis que l’attribut accept définit les types MIME qui seront acceptés pour le
traitement, soit local en JavaScript, soit côté serveur après envoi (upload) des fichiers. Cette
précision ne constitue qu’une indication pour le navigateur – s’il la reconnaît – et n’est pas un
filtre absolu de sécurité.
Exemple 1 :     <input type="file" name="monfichier">
Pour l’envoi de fichiers au serveur, le formulaire doit comporter l’attribut
enctype="multipart/form‐data" qui autorise l’envoi de plusieurs « pièces » de données binaires.
Exemple 2 :
<!DOCTYPE html>
<html lang="fr">
<head>
<title>Envoi de fichiers</title>
<meta charset="UTF‐8">
</head>
15.5.1 <input> et ses variantes
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    100
15.5.1 <input> et ses variantes
<body>
<form method="post" action="" enctype="multipart/form‐data" >
<input type="file" 
name="mesfichiers[]" accept="image/jpeg,image/png,image/gif" multiple>
<input type="submit" value="Envoi">
</form>
</body>
</html>
Camera API et périphériques mobiles :
Sur les bons navigateurs mobiles, appeler un champ d’entrée file e type image provoque un appel
aux applications pouvant produire une image, notamment la galerie de photos ou l’appareil
photo intégré.
Exemple :
<input type="file" accept="image/*" >
<input type="file" accept="video/*;capture=camcorder" >
<input type="file" accept="audio/*;capture=microphone" >
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    101
15.5.1 <input> et ses variantes
Un élément sans attribut type ou avec une valeur inconnue est considéré par défaut comme
<input type="text">. 
Dans tous les cas de figure, l’attribut value détermine la valeur du champ transmise à la validation du
formulaire, et l’attribut name son nom afin de retrouver quel champ correspond à quelle valeur lors du
traitement des données après leur envoi via HTTP.
Il est absolument obligatoire de vérifier et de valider les données envoyées du côté du serveur avant de
les utiliser. Un utilisateur malintentionné pourrait introduire des valeurs non souhaitées, avec une syntaxe
provoquant un comportement erratique des scripts ou des requêtes sur une base de données. Aucune
contrainte définie en JavaScript côté client n’est fiable, puisqu’il est possible de la désactiver purement et
simplement.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    102
15.5.2 Eléments <label>, <output> et <textarea>
<label>
Attribut :
for
Étiquette
Associe une étiquette à un champ de formulaire, où l’attribut for se rapportera à
l’attribut id du champ en question. L’élément <label> est utile pour aider à la
compréhension du formulaire et accroît l’accessibilité.
<label for="nom">Votre nom</label>
<input id="nom" name="nom_utilisateur">
<output>
Attributs :
name,
for, form
L’élément <output> est voué à recueillir le résultat d’un calcul. Celui‐ci peut être
dynamique en JavaScript ou généré au préalable dans le code HTML par le serveur.
L’attribut form définit à quel formulaire se rapporte cette sortie (si <output> est placé en
dehors de <form>). L’attribut for reçoit une liste d’id, séparés par des espaces, des
éléments entrant en jeu pour le calcul.
<textarea> Une entrée de texte multiligne n’est pas possible avec <input type="text">, mais elle l’est
avec <textarea>. Cette zone de dimensions variables, dont le contenu est situé entre la
balise ouvrante <textarea> et la balise fermante </textarea>, est éditable.
L’attribut rows précise le nombre de lignes de texte supposées affichées par défaut par le
navigateur (ignoré si un style est présent). L’attribut cols précise le nombre de colonnes.
L’attribut wrap accepte les valeurs hard (insertion de retours à la ligne dans la valeur
soumise pour ne pas excéder la valeur de cols) et soft (pas de retour à la ligne).
< select>
Attribut :
multiple
Liste de choix
Renferme une série d’options qui seront présentées à l’utilisateur dans une liste
déroulante. Ne peut contenir directement que des éléments <optgroup> ou <option> .
<select name="fruits">
<option>Fruits du marché</option>
<option>Fruits exotiques</option>
<option>Fruits avariés</option>
</select>
<select name="civilite">
<option value="Mlle">Mademoiselle</option>
<option value="Mme">Madame</option>
<option value="M">Monsieur</option>
</select>
<option>
Attributs :
label, value,
selected,
disabled
Option individuelle de liste de choix
Choix offert dans une liste <select> (ou <optgroup> ) ou <datalist>. L’attribut label est
l’étiquette présentée à l’utilisateur, et l’attribut value porte la valeur transmise à la
soumission du formulaire.
15.5.3 Elément <select>
<optgroup>
Attributs :
label,
disabled
Groupe d’options
Regroupe des options <option> sous une même étiquette définie par l’attribut 
obligatoire label.
Exemple :
<select name="plat">
<optgroup label ="Spécialités marocaines">
<option value="tanjia">Tanjia aux olives</option>
<option value="tajine">Tajine aux légumes </option>
<option value="Couscous">Couscous beldi</option>
</optgroup>
<optgroup label ="Spécialités alsaciennes">
<option value="bretzel">Bretzel</option>
<option value="flammekueche">Tarte flambée</option>
</optgroup>
</select>
15.5.3 Elément <select>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    105
15.5.4 Elément <button>
<button> L’élément <button> possède plusieurs usages qui se conforment exactement aux types
éponymes de l’élément <input> décrits précédemment, selon la valeur de
son attribut type qui pourra prendre les valeurs button, submit et reset. Cependant, la
valeur texte n’est plus déterminée par un attribut value, mais par le contenu intrinsèque
de cet élément.
<button type="button">OK</button>
<button type="submit">Valider</button>
<button type="reset">Réinitialiser</button>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    106
<progress>
Attributs :
value,
max
L’élément <progress> représente une barre de progression, telle qu’on peut en trouver
dans les interfaces graphiques usuelles, c’est‐à‐dire indiquant l’avancement d’une tâche.
L’intérêt de cet élément est surtout d’en profiter avec un script dynamique qui met
à jour son état. Celui‐ci dépend d’une valeur numérique symbolisant la progression d’un
téléchargement, d’un calcul lourd, ou d’un appel Ajax quelconque.
<progress id="indicateur" value="50" max="100"></progress>
15.5.5 Elément <progress>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    107
15.5.5 Elément <datalist>
<datalist> Liste de suggestions
Regroupe un ensemble de zéro ou plusieurs éléments <option> qui représentent des
choix prédéfinis pour d’autres contrôles d’entrée, par exemple un champ de texte ou de
recherche, y faisant référence grâce à l’attribut list . Pour cela, l’élément <datalist> est
utilisé en complément. Celui‐ci stocke des valeurs différentes à l’aide de différents
éléments <option> auxquels on donne une valeur grâce à l’attribut value .
<input type="text" list="etats" name="etat">
<datalist id="etats">
<option value="france">France</option>
<option value="suisse">Suisse</option>
<option value="canada">Canada</option>
<!‐‐ ... et ainsi de suite ... ‐‐>
</datalist>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    108
<meter>
Attributs :
min, max ,
low, high,
optimum,
value
Jauge
Représente une jauge, reflétant un état mesuré, avec un intervalle connu (un minimum
min et un maximum max, et en option des valeurs basses low, haute high et
optimale optimum).
Exemple:
<p>Température du corps :
<meter min="35" max="43" value="37.5">37.5°C</meter>
</p>
<p>Occupation du disque dur :
<meter low="0" high="400" max="500" value="450" optimum="250">450 Mo 
</meter> 
</p> <p>Score des votes :
<meter low="7" high="8" max="10" value="9">9/10</meter> </p> 
15.5.5 Elément <meter>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    109
15.5.5 Elément <keygen>
<keygen>
Attributs :
challenge,
keytype
L’élément <keygen> est un contrôle générant pour un formulaire une paire de
clés cryptées, publique et privée de type keytype (par exemple, rsa). La clé publique est
envoyée au serveur, tandis que la clé privée est ajoutée au stockage local des clés de
sécurité.
<form action="keygen.php" method="post">
<p>
<label for="login">Login</label> :
<input type="text" name="login" id="login">
</p>
<p>
<label for="crypt">Cryptage</label> :
<keygen name="crypt" id="crypt">
</p>
<p>
<input type="submit" value="OK">
</p>
</form>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    110
15.6  Attributs communs pour les éléments de 
formulaire
Les champs (éléments) de formulaire possèdent plusieurs attributs en commun. Le tableau ci-dessous
présente quelques-uns.
Attribut Rôle
name Nom du champ pour la validation
Permet d’affecter un nom à l’élément d’entrée, pour la réception côté serveur 
dans les valeurs GET/POST, voire la manipulation avec JavaScript. Ne pas 
confondre avec id. 
<label for="pr">Prénom</label>
<input name="prenom" type="text" id="pr">
disabled Désactivation
Désactive le contrôle de l’élément (grisé).
autocomplete Autocomplétion
Active ( on ) ou désactive ( off ) l’autocomplétion.
readonly Lecture seule
Avec la présence de cet attribut, la valeur ne peut être modifiée par l’utilisateur.
required Champ requis
Le champ doit être complété par l’utilisateur pour permettre la validation du formulaire.
pattern Masque de saisie
Spécifie quelle forme doit prendre la valeur entrée pour être valide. Il est associé aux
champs de texte pour tester leur valeur grâce à une expression régulière. Les valeurs
incorrectes bloquent la validation du formulaire.
Du point de vue sécuritaire, cet attribut ne remplace pas le rôle crucial d’une vérification
côté serveur après soumission du formulaire.
Remarques:
• Pour plus de détails sur la syntaxe des patterns, se référer aux expressions régulières.
• Le site http://html5pattern.com/ propose une collection de modèles pour l’attribut
pattern.
Exemple :
<!‐‐ On autorise la saisie de caractères alphanumériques ‐‐>
<input type="text" name="login" pattern="[a‐z0‐9]+" >
15.6  Attributs communs pour les éléments de 
formulaire
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    112
placeholder L’attribut placeholder permet l’affichage d’un texte indicatif dans un champ (exemple de
saisie), qui s’efface lorsque l’utilisateur obtient le focus (en cliquant ou naviguant au
clavier). Le texte a pour vocation de présenter des exemples de ce que l’utilisateur peut
entrer dans le champ.
<input placeholder="Ville, pays, code..." name="geo">
multiple Valeurs multiples
Permet la sélection ou l’entrée de plusieurs valeurs pour les types email et file et pour
l’élément <select>.
autofocus Donne le focus (par exemple, le contrôle au clavier/curseur) à l’élément dès le
chargement de la page.
15.6  Attributs communs pour les éléments de 
formulaire
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    113
15.7 Validation des données
Nous avons vu dans les pages précédentes que certains types de champs <input> induisent une pré‐
validation des informations entrées par l’utilisateur avant un envoi direct au serveur. Par exemple
pour <input type="email">, la syntaxe de l’adresse e‐mail sera vérifiée au préalable. Gain de temps pour
l’utilisateur qui sera informé rapidement d’une erreur de saisie, gain de temps pour le serveur qui n’aura
pas besoin d’afficher à nouveau le formulaire, et gain de temps pour le développeur qui n’aura pas besoin
d’insérer du code JavaScript pour améliorer l’utilisabilité de sa page.
L’attribut novalidate est destiné à une phase de transition pour les navigateurs implémentant les
validations préalables (par exemple pour la syntaxe d’une adresse e‐mail). En effet, certaines
implémentations sont complètes et d’autres partielles. Il se peut que la soumission du formulaire
soit empêchée par la non‐validation d’un champ, sans que l’utilisateur ne sache réellement pourquoi. La
présence de novalidate contourne cette condition et s’en remet au serveur pour valider puis informer.
<!‐‐ Formulaire sans validation ‐‐>
<form method="post" action="inscription.php" novalidate >
<label for="mail">Votre adresse e‐mail</label>
<input id="mail" type="email" name="adressemail">
<input type="submit" value="Valider">
</form>
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    114
<menu>
Attributs :
type, label
Définit un menu contextuel ( type="context" ) ou une barre
d’outils ( type="toolbar" ), regroupant des commandes <menuitem> ,
principalement à destination des applications web. L’attribut label permet
d’attribuer une désignation (un intitulé) au menu.
<menuitem>
Attributs:
type,label, icon, di
sabled, checked.
Élément de menu, déclenchant habituellement un script via l’attribut onclick .
L’attribut type peut prendre la valeur command (par défaut), radio et checkbox.
16. Menus et commandes
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    115
Exemple 1:
<body>  
<menu type="toolbar">
<li>
<menu label="Fichier">
<menuitem onclick="save()" label="Sauver">
<menuitem onclick="quit()" label="Quitter">
</menu>
</li>
<li>
<menu label="Edition">
<menuitem onclick="copy()" label="Copier">
<menuitem onclick="paste()" label="Coller">
</menu>
</li>
</menu>  
</body>
16. Menus et commandes
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    116
Exemple 2:
Dans l’exemple ci‐dessous, le menu contextuel est lié à un autre élément HTML via l’attribut contextmenu .
<img contextmenu= " menuctx "  >
<menu type= " menuctx "  >
<menuitem label= " Copier"  onclick="copier()">
<menuitem label= "Supprimer"  onclick="supprimer()">
</menu>
16. Menus et commandes
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    117
16. Menus et commandes
<command>
Attributs :
checked, 
disabled,  icon, 
label, type,  
radiogroup
Cet élément incarne une commande individuelle d’un <menu> . Il peut s’agir d’un
bouton classique, d’une case à cocher ou d’un bouton radio. Une
commande déclenche une action de script, la plupart du temps grâce à un des
événements DOM que l’on peut y associer, tels que onclick ou onchange .
L’attribut type précise le type de la commande (checkbox, radio ou command (valeur
par défaut). L’attribut icon précise l’adresse d’une image servant d’icône pour cette
commande.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    118
Exemple 3: Une barre d’outils est associé à une zone d’édition <textarea>
<textarea contextmenu="miseenforme"></textarea>
<menu type="toolbar" id="miseenforme">
<command type="radio" radiogroup="alignement" label="Gauche" icon="icones/g.png" 
onClick="alignement('gauche')"  checked>
<command type="radio" radiogroup="alignement" label="Centré" icon="icones/c.png" 
onClick="alignement('centre')" >
<command type="radio" radiogroup="alignement" label="Droite" icon="icones/d.png" 
onClick="alignement('droite')" >    
<command type="checkbox" label="Gras" icon="icones/gras.png" onClick="gras()" checked>    
<command type="checkbox" label="Italique" icon="icones/italique.png" onClick="italique()" >    
<command type="checkbox" label="Souligné" icon="icones/souligne.png" onClick="souligne()" >
</menu>
16. Menus et commandes
17. Attributs HTML globaux
Les éléments HTML disposent :
D’attributs spécifiques, quelques‐uns ont été déjà présentés dans la description individuelle de
chaque élément. Par exemple, src indique l’adresse du fichier image nécessaire pour <img>. Une
balise peut aussi ne pas disposer d’attributs spécifiques, c’est entre autres le cas
de <div>, <span> ou <em>.
D’attributs globaux, qui sont communs à tous les éléments, mais qui peuvent aussi être sans effet
sur certains d’entre eux.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    120
17. Attributs HTML globaux
Le tableau ci‐dessous présente une liste non exhaustive d’attributs globaux.
Attribut Rôle
id Identifiant unique. Attribue un identifiant unique à l’élément HTML pour le désigner tant 
avec CSS qu’avec JavaScript.
‐ En CSS: #id désigne la référence de l’élément.
‐ En JavaScript:  document.getElementById("id") retourne une référence vers l’élément.
contextmenu Menu contextuel. Lie un menu contextuel déclaré par <menu> grâce à son id.
Voir l’élément <menu> étudié précédemment.
spellcheck Les navigateurs web récents comportent une correction orthographique intégrée, signalant
de potentielles fautes. Cette fonctionnalité bien utile dans les champs de formulaires pour
éviter les coquilles peut être activée ou désactivée à la demande grâce
à l’attribut spellcheck. La désactivation peut présenter un intérêt pour des champs qui ne
sont pas destinés à recevoir des portions de texte dans la langue de l’utilisateur,
par exemple une zone de texte pour l’édition de code HTML ou d’un autre langage.
Exemple d’usage de l’attribut spellcheck
<textarea spellcheck="false" ></textarea> <input type="text" spellcheck="true" >
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    121
Attribut Rôle
accesskey Touche d’accès rapide.
l’attribut accesskey associe un raccourci clavier (par combinaison de touches variées selon 
le système) à un élément.
Exemple :
<nav>
<p> <a title="Retour à la page d’accueil" accesskey="A" href="/">Accueil</a>
<a title="Page de contact" accesskey="C" href="/contact/"> Contactez‐nous</a>
</p>
</nav>
title Titre. Fournit des informations (de conseil ou d’indication) à propos d’un élément, souvent 
affichées par le navigateur sous forme d’info‐bulle lorsque le curseur survole cet élément 
et représente un agrément non négligeable pour l’accessibilité des pages web.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    122
17. Attributs HTML globaux
Attribut Rôle
contenteditable
Contenu éditable dynamiquement. L’élément devient modifiable dans le navigateur.
Comme son nom le suggère, contenteditable correspond à la capacité de modifier le 
contenu de l’élément qui porte cet attribut booléen.
Exemple : un élément article éditable
<article id="monarticle" contenteditable="true" >Je suis modifiable</article>
Appliqué à tout élément, principalement de type conteneur (div , p , span , section , 
article...), il transforme le navigateur en éditeur web. Il appartient ensuite au langage de 
script de procéder à l’enregistrement des modifications en récupérant le con‐ tenu de 
l’élément, notamment avec sa propriété innerHTML .
Valeur HTML de l’élément édité :
Les procédures pour sauvegarder ce contenu peuvent être développées en Ajax 
pour envoyer la valeur HTML au serveur et la stocker dans une base de données, ou 
grâce aux API de stockage local telles que Web Storage et Web SQL Database.
17. Attributs HTML globaux
18. Fonctionnalités obsolètes
Certains éléments et attributs présents dans HTML4 et dans les précédentes versions sont désormais 
obsolètes, car remplacés avantageusement par les feuilles de style CSS ou par d’autres fonctionnalités 
mieux pensées. Voici une liste non exhaustive :
- attribut border sur les éléments img, table, object : CSS doit être utilisé en remplacement ;
- bgcolor sur les elements:  body , table td th , tr;
- background sur les elements: body , table , thead , tbody , tfoot , tr , td , th;
- attribut language sur l’élément script : il doit être omis ou remplacé par l’attribut type avec la 
valeur text/javascript ;
- attribut type sur ul, li;
- width sur pre , table;
- height, nowrap sur td , th;
- cellspacing , cellpadding , frame , rules sur table
- <acronym> , <applet> , <bgsound>,<basefont> , <big> , <center> , <dir> , <font> , <frame> , <frameset> , 
<isindex> , <noframes> , <strike> , <tt> , <xmp> : Ces éléments sont entièrement obsolètes et ne doivent 
plus être utilisés.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    124
19. Validation des documents HTML
Tous les documents HTML 5 peuvent être validés grâce à un analyseur syntaxique en ligne. Il est très
fortement recommandé de procéder à une vérification systématique pour garantir un code de qualité,
interprété au mieux sur les différents navigateurs. C’est un moyen idéal de se prémunir d’erreurs de
syntaxe, d’imbrication de balises ou encore d’oubli de balises fermantes.
Validateurs HTML
Validateur officiel du W3C : http://validator.w3.org/
Validateur HTML 5 expérimental : http://HTML5.validator.nu/
Validateur CSS du W3C: http://jigsaw.w3.org/css‐validator/
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    125
Annexes
Annexe 1: Protocole HTTP
Annexe 2: Encodage des caractères
Annexe 3: Le type MIME
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    126
Annexe 1: Protocole HTTP
1.  Introduction
2.  Requêtes et réponses
3.  Méthodes de HTTP
4.  Négociation du contenu
5.  Types de contenu
6.  Codes d’état
7.  Mise en cache et requêtes conditionnelles
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    127
HTTP, un protocole pour les systèmes d’informations distribués, collaboratifs et hypermédias, a conduit,
avec les URI, HTML et les premiers navigateurs à la mise en place du World Wide Web. Géré par le W3C
(World Wide Web Consortium) et l’IETF (Internet Engineering Task Force), HTTP est le résultat de
plusieurs RFC (Requests For Comment), notamment la RFC 2616, qui définit http 1.1. Il repose sur des
requêtes et des réponses échangées entre un client et un serveur.
Fonctionnement (très simple en HTTP/1.0)
Connexion
Envoi d’une requête HTTP, par exemple demande d’un document (méthode GET)
Réception d’une réponse HTTP
déconnexion
1. Introduction
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    128
2.  Requêtes et réponses
Un client envoie une requête à un serveur afin d’obtenir une réponse (voir figure ci‐dessous). Les
messages utilisés pour ces échanges sont formés d’une enveloppe et d’un corps également appelé
document ou représentation.
Figure 3. Requête et réponse http
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    129
2.  Requêtes et réponses
Voici, par exemple, un type de requête envoyée à un serveur en utilisant cURL (http://curl.haxx.se/) 
comme client web (client HTTP):
D:>curl http://www.google.co.ma/index.html  ‐v
* About to connect() to www.google.co.ma port 80 (#0)
*   Trying 173.194.45.95...
* connected
* Connected to www.google.co.ma (173.194.45.95) port 80 (#0)
> GET /index.html HTTP/1.1
> User‐Agent: curl/7.28.0
> Host: www.google.co.ma
Cette requête contient plusieurs informations envoyées par le client :
la méthode de HTTP : GET ;
le chemin : /index.html ;
Le protocole et sa version: HTTP/1.1;
plusieurs autres en‐têtes de requête comme User‐Agent et Host.
Vous remarquez que la requête n’a pas de corps (un GET n’a jamais de corps).
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    130
2.  Requêtes et réponses
Remarque:
Nous utilisons ici cURL (http://curl.haxx.se/) comme client, mais nous aurions pu également utiliser
Firefox ou n’importe quel autre client web. CURL est un outil en ligne de commande permettant de
transférer des fichiers par HTTP, FTP, Gopher, SFTP, FTPS, SCP, TFTP et bien d’autres protocoles encore
en utilisant une URL. Avec lui, vous pouvez envoyer des commandes HTTP, modifier les en‐têtes HTTP,
etc. : c’est donc un outil parfait pour simuler les actions d’un utilisateur dans un navigateur web.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    131
2.  Requêtes et réponses
En réponse, le serveur renverra le message suivant :
< HTTP/1.1 200 OK
< Date: Sun, 04 Oct 2015 07:35:25 GMT
< Content‐Type: text/html; charset=ISO‐8859‐1
< Server: gws
< ……
<
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="fr‐MA">
<head> ………………..
Cette réponse est formée des parties suivantes :
Un code de réponse. Ici, ce code est 200 OK.
Plusieurs en‐têtes de réponse. Notamment Date, Server, Content‐Type. Ici, le type du contenu est 
text/html, mais il pourrait s’agir de n’importe quel format comme du XML (application/xml) ou une 
image (image/jpeg).
Un corps ou représentation. Ici, il s’agit du contenu de la page web renvoyée (dont nous n’avons 
reproduit qu’un fragment).
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    132
2.  Requêtes et réponses
La tableau ci‐dessous présente quelques en‐têtes HTTP
3.  Méthodes de HTTP
Le Web est formé de ressources bien identifiées, reliées ensemble et auxquelles accéder au moyen de
requêtes HTTP simples. Les requêtes principales de HTTP sont de type GET, POST, PUT et DELETE. Ces
types sont appelés verbes ou méthodes. HTTP définit quatre autres verbes plus rarement utilisés, HEAD,
TRACE, OPTIONS et CONNECT.
GET
GET est une méthode de lecture demandant une représentation d’une ressource. Elle doit être
implémentée de sorte à ne pas modifier l’état de la ressource. En outre, GET doit être idempotente, ce
qui signifie qu’elle doit laisser la ressource dans le même état, quel que soit le nombre de fois où elle est
appelée. Ces deux caractéristiques garantissent une plus grande stabilité : si un client n’obtient pas de
réponse (à cause d’un problème réseau, par exemple), il peut renouveler sa requête et s’attendre à la
même réponse que celle qu’il aurait obtenue initialement, sans corrompre l’état de la ressource sur le
serveur.
POST
À partir d’une représentation texte, XML, etc., POST crée une nouvelle ressource subordonnée à une
ressource principale identifiée par l’URI demandée. Des exemples d’utilisation de POST sont l’ajout d’un
message à un fichier journal, d’un commentaire à un blog, d’un livre à une liste d’ouvrages, etc. POST
modifie donc l’état de la ressource et n’est pas idempotente (envoyer deux fois la même requête produit
deux nouvelles ressources subordonnées). Si une ressource a été créée sur le serveur d’origine, le code
de la réponse devrait être 201 (Created).
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    134
3.  Méthodes de HTTP
PUT
Une requête PUT est conçue pour modifier l’état de la ressource stockée à une certaine URI. Si l’URI de la
requête fait référence à une ressource inexistante, celle‐ci sera créée avec cette URI. PUT modifie donc
l’état de la ressource, mais elle est idempotente : même si l’on envoie plusieurs fois la même requête
PUT, l’état de la ressource finale restera inchangé.
DELETE
Une requête DELETE supprime une ressource. La réponse à DELETE peut être un message d’état dans le
corps de la réponse ou aucun code du tout. DELETE est idempotente, mais elle modifie évidemment l’état
de la ressource.
Autres Méthodes
Comme on l’a évoqué, il existe d’autres actions HTTP, plus rarement employées : HEAD, TRACE, OPTIONS,
CONNECT.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    135
4.  Négociation du contenu
La négociation du contenu est définie comme "le fait de choisir la meilleure représentation pour une
réponse donnée lorsque plusieurs représentations sont disponibles". Les besoins, les souhaits et les
capacités des clients varient : par exemple, la meilleure représentation pour l’utilisateur d’un téléphone
portable peut, en effet, ne pas être la plus adaptée à un lecteur de flux RSS.
La négociation du contenu utilise entre autres les en‐têtes HTTP Accept, Accept‐Charset, Accept‐
Encoding, Accept‐Language et User‐Agent. Pour obtenir, par exemple, la représentation CSV de la liste
des livres sur HTML publiés par Apress, l’application cliente (l’agent utilisateur) demandera
http://www.apress.com/book/catalog/html avec un en‐tête Accept initialisé à text/csv. Vous pouvez
aussi imaginer que, selon la valeur de l’en‐tête Accept‐Language, le contenu de ce document CSV
pourrait être traduit par le serveur dans la langue correspondante.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    136
5.  Types de contenu
HTTP utilise des types de supports Internet (initialement appelés types MIME) dans les en‐têtes Content‐
Type et Accept afin de permettre un typage des données et une négociation du contenu ouverts et 
extensibles. Les types de support Internet sont divisés en cinq catégories : text, image, audio, video et 
application. Ces types sont à leur tour divisés en sous‐types (text/plain, text/xml, text/xhtml, etc.).
Voici quelques‐uns des plus utilisés :
text/html. HTML est utilisé par l’infrastructure d’information du World Wide Web depuis 1990 et sa
spécification a été décrite dans plusieurs documents informels. La définition complète dy type de
support text/html se trouve dans la RFC 2854.
text/plain. Il s’agit du type de contenu par défaut car il est utilisé pour les messages textuels
simples.
image/gif, image/jpeg, image/png. Le type de support image exige la présence d’un dispositif
d’affichage (un écran ou une imprimante graphique, par exemple) permettant de visualiser
l’information.
text/xml, application/xml. XML 1.0 a été publié par le W3C en février 1998. La définition complète
de ce support est décrite dans la RFC 3023.
application/json. JSON (JavaScript Object Notation) est un format textuel léger pour l’échange de
données. Il est indépendant des langages de programmation.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    137
6.  Codes d’état
Un code HTTP est associé à chaque réponse. La spécification définit environ 60 codes d’états ; l’élément
Status‐Code est un entier de trois chiffres qui décrit le contexte d’une réponse et qui est intégré dans
l’enveloppe de celle‐ci. Le premier chiffre indique l’une des cinq classes de réponses possibles :
1xx : Information. La requête a été reçue et le traitement se poursuit.
2xx : Succès. L’action a bien été reçue, comprise et acceptée.
3xx : Redirection. Une autre action est requise pour que la requête s’effectue.
4xx : Erreur du client. La requête contient des erreurs de syntaxe ou ne peut pas être exécutée.
5xx : Erreur du serveur. Le serveur n’a pas réussi à exécuter une requête pourtant apparemment 
valide.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    138
La tableau ci‐dessous montre quelques codes d’état HTTP:
6.  Codes d’état
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    139
7.  Mise en cache et requêtes conditionnelles
HTTP dispose de mécanismes permettant la mise en cache et les requêtes conditionnelles. Ces 
mécanismes sortent du cadre de ce cours et ils ne seront pas présentés.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    140
Annexe 2: Encodage des caractères
Le codage des caractères est présent depuis les débuts de l’informatique. Il définit la manière de stocker
en binaire – le seul langage compris par les processeurs – les caractères typographiques humains.
Aux débuts du règne des puces, chaque caractère était stocké sur 7 bits grâce au code ASCII , ce qui
permettait, avec une économie de stockage, jusqu’à 127 possibilités pour numéroter les caractères
(lettres de l’alphabet en minuscules, majuscules, chiffres, signes de ponctuation, signes mathématiques).
Cela convenait parfaitement à un usage limité aux États‐Unis.
Il a fallu ensuite étendre l’ASCII sur 8 bits et créer de nouvelles pages de caractères, comprenant
notamment les caractères accentués internationaux. En Europe occidentale, cette norme fut labellisée
ISO‐8859‐1 aussi connue sous le nom Latin‐1 . L’ISO‐8859‐15 (Latin‐9) en est une mise à jour apportant
quelques nouveaux caractères.
Les Asiatiques ont introduit leurs propres jeux de caractères, et ainsi de suite, avec pour conséquence
des documents illisibles à l’international selon le code utilisé pour interpréter les caractères et
l’exactitude de la correspondance.
L’ UTF‐8 (UCS Transformation Format 8 bits) permet de résoudre en partie les difficultés rencontrées, avec
un codage exploitant entre 1 et 4 octets par caractère pour étendre le nombre de combinaisons possibles.
Il fait partie des normes définies par le consortium Unicode et présente l’avantage d’être relativement
compatible avec les logiciels encore prévus pour traiter les caractères sur un octet unique. L’Unicode a
pour objectif de définir un identifiant unique pour les caractères de tous les systèmes d’écriture,
compréhensible quelle que soit la plate‐forme informatique ou le logiciel. L’Internet Engineering Task
Force (IETF) et le W3C approuvent le choix de l’UTF‐8 et prescrivent son usage pour tout protocole
échangeant du texte sur Internet, dont évidemment HTML et HTTP.
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    141
Choisir l’encodage des pages et bien comprendre son implication dans l’interprétation est donc essentiel.
Il faudra toujours le choisir en adéquation avec la chaîne des programmes et langages mis en jeu dans la
génération et la livraison d’une page.
Chaque maillon (système de fichiers, serveur, base de données, langage interprété) se doit de savoir dans
quel format sont stockées (ou reçues) les données, puis dans quel format celles‐ci sont envoyées au
maillon suivant, jusqu’à interprétation finale par le navigateur.
Les entités
Les entités HTML, ou entités de caractères, sont des codes SGML permettant d’afficher des caractères de
façon indépendante par rapport à l’encodage principal du document. Elles ont longtemps servi pour des
symboles particuliers, ou souvent à tort pour des caractères accentués que l’on maîtrise plus
efficacement avec l’encodage UTF‐8 désormais. Des tables complètes se retrouvent en ligne, car il existe
de nombreuses combinaisons possibles. On débute toujours le code par le caractère « & », et on le
termine par « ; ». Le code situé entre ces deux caractères peut être rédigé avec du texte dans le jeu
standard des 252 entités de base ( &agrave; = à, &copy; = signe copyright) ou une valeur numérique
( &#169; = signe copyright) ou encore en hexadécimal ( &#x266B; = double croche en musique).
Annexe 2: Encodage des caractères
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    142
Annexe 3: Le type MIME
Le format MIME (Multipurpose Internet Mail Extensions) est à l’origine un standard qui ajoute des
codages supplémentaires à l’ASCII pour l’envoi des e‐mails et le support de données non textuelles, c’est‐
à‐dire de fichiers binaires.
Les types MIME sont aujourd’hui également utilisés en HTTP pour affiner le dialogue entre le navigateur
et le serveur web, et préciser quels sont les types de fichiers échangés.
Une déclaration MIME est constituée de deux parties (normalisées) : un type et un sous‐type, séparés par
un caractère slash. Ceux débutant par x‐ ne sont pas standardisés, et les préfixes vnd. font référence à
une propriété du vendeur.
Il incombe en général – sauf indication contraire – au serveur web de déterminer le type du fichier
hébergé, la plupart du temps grâce à son extension, pour l’indiquer au navigateur dans les en‐têtes HTTP
en préambule du téléchargement du fichier. Celui‐ci pourra donc anticiper l’usage qui doit en être fait :
interpréter son contenu et l’afficher (pages web, textes) ou le proposer au téléchargement (fichiers
binaires).
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    143
Annexe 3: Le type MIME
La tableau ci‐dessous montre quelques types MIME
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    144
Annexe 3: Le type MIME
E. NFAOUI (elhabib.nfaoui@usmba.ac.ma)    145
Bibliographie
‐ HTML 5 ‐ Une référence pour le développeur web ‐ . Rodolphe Rimelé. Edition: Eyrolles, 2013. ISBN:
9782212136388
‐ HTML5 et CSS3 : Cours et exercices corrigés. Jean Engels. Edition: Eyrolles, 2012. ISBN: 9782212134001
‐ Mémento HTML5. Rodolphe Rimelé. Edition: Eyrolles, 2014. ISBN: 9782212140309
‐ Premiers pas en CSS3 et HTML5. Francis Draillard. Edition: Eyrolles, 2013. ISBN: 9782212136890
‐ Tout sur HTML5 et CSS3. Jean‐Marie Cocheteau and Laurent Khouri. Edition: Dunod, 2012. ISBN:
9782100578160

Langage HTML

  • 1.
  • 2.
    1.  Concepts de base 2.  Présentation du langage HTML 3.  Syntaxe du langage HTML 4.  Structure générale d’un document HTML 5.  Mise en forme de texte 6.  Hiérarchisation du texte et séparations 7.  Structurer le contenu d’une page web :   les sections 8.  Conteneurs génériques 9.  Blocs sémantiques 10.  Balises en ligne sémantique 11.  Listes 12.  Tableaux de données 13.  Liens hypertextes 14.  Contenu embarqué 15.  Formulaires 16.  Menus et commandes 17.  Attributs HTML globaux 18.  Fonctionnalités obsolètes 19.  Validation des documents HTML Annexes Annexe 1: Protocole HTTP Annexe 2: Encodage des caractères Annexe 3: Le type MIME Bibliographie Contenu E. NFAOUI ([email protected])    2
  • 3.
    1. Concepts de base Le WorldWide Web (WWW) tel qu’il a été imaginé par Tim Berners‐Lee, aux alentours de 1990, s’articule autour d’une architecture dite client‐serveur. Dans le cas d’une navigation classique, le client c’est nous ou plutôt notre navigateur. Le serveur (ou plus précisément le serveur web), c’est un programme qui répond aux requêtes du navigateur grâce au protocole HTTP (HyperText Transfer Protocol). Initialement, le World Wide Web, communément appelé le web, était un moyen de partager des pages web (documents écrits en HTML). Le protocole HTTP (Hyper Text Transfer Protocol) a été conçu pour véhiculer ces documents. Depuis cette date, le web a beaucoup évolué et plusieurs phases se sont succédées avant d’obtenir les applications en ligne que l’on utilise aujourd’hui. Un site web est constitué d’un ensemble de pages web reliées entre elles par des liens hypertextes qui permettent de naviguer de l’une à l’autre. La technique de l'hypertexte permet de spécifier des URL (adresses des pages web) au sein des pages, vers d'autres pages. Cela crée une structure, au niveau mondial, qui peut être vue comme une grande toile mondiale, d'où le terme de World Wide Web. E. NFAOUI ([email protected])    3
  • 4.
    1. Concepts de base Techniquement, unepage web HTML est formée d’un contenu, de balises (marqueurs) permettant de structurer ce contenu et d’objets externes comme des images, des vidéos, etc.). C’est un fichier texte portant souvent l’extension .html ou .htm, et qu’on peut l’éditer dans un éditeur de texte et le consulter (interpréter son code) dans un navigateur web. Un fichier HTML source peut être stocké et lu sur un ordinateur local, ou via Internet s’il est stocké sur un  serveur web. Un document HTML, proposé par un serveur Web, est toujours désigné par une "adresse"  appelée URL pour "Universal Resource Locator". Une URL a la structure suivante : protocole://serveur [:port]/répertoire/fichier Exemple:  http://www.fsdmfes.ac.ma/ISCV2015/index.html Le numéro du port par défaut du protocole HTTP est 80. E. NFAOUI ([email protected])    4
  • 5.
    1. Concepts de base HTTP (HyperText Transfer Protocol) est le protocole utilisé principalement par toutes les applications Web : celui‐ci permet la communication et l’échange de données entre un serveur Web et un navigateur installé sur un poste client. Ainsi, le navigateur peut envoyer au serveur Web une requête formalisée contenant l’adresse de la page ciblée (URL) et recevoir une réponse HTTP contenant la page HTML correspondante. La figure ci‐dessous montre un exemple de communication entre un client Web (navigateur) et un serveur Web. Plusieurs étapes sont nécessaires pour assurer cette communication: ‐ Une requête HTTP contenant par exemple l’URL http://www.monserveur.com/page.html) est envoyée vers le serveur afin d’accéder à la page désirée et de la visualiser dans le navigateur du poste client (voir étape 1 de la figure ci‐dessous). ‐ Lorsque le serveur Web reçoit cette requête, il recherche la page demandée parmi toutes les pages HTML présentes sur le site concerné et la renvoie ensuite au client dans une réponse HTTP (voir étape 2 de la figure ci‐dessous). ‐ Le code HTML reçu par le poste client est alors interprété et affiché par le navigateur (voir étape 3 de la figure ci‐dessous). C’est ce qu’on appelle l’architecture Client‐Serveur : le client est le navigateur Internet (Internet Explorer, Firefox...) et le serveur est le serveur Web sur lequel sont stockées les informations du site Internet. Ce type de site est très simple à réaliser et la plupart des premiers sites ont été conçus sur ce modèle. Cependant, ce concept est limité car il manque cruellement d’interactivité. E. NFAOUI ([email protected])    5
  • 6.
  • 7.
    2. Présentation du langage HTML HTML (HyperTextMarkup Language) est un langage de balisage (dit aussi langage de marquage) qui permet de structurer le contenu des pages web dans différents éléments (balises). Cela signifie que la création d’une page web (titres, paragraphes, images, liens hypertext...) utilisera des caractères pour marquer d’une certaine façon les différentes parties du texte. Parmi ces caractères de marquage, certains correspondront à des liens vers d’autres pages web : ce sont des liens hypertextes. Nous reviendrons sur la notion de balise dans la section suivante pour la présenter en détail. Historiquement, les langages de balisage sont issus du langage SGML (Standard Generalized Markup Language), un métalangage standard permettant de définir des langages à marqueurs (balisages). Le langage HTML a beaucoup évolué depuis sa création par Tim Berners‐Lee en 1992. Aujourd'hui, on en est à la version 5 de ce langage (notée HTML 5), après être passé par une version appelé XHTML (qui est réellement une reformulation de HTML en tant qu’application XML). HTML est un standard* en constante évolution. Dans ce support de cours, j’ai donc préféré de présenter les progrès qu’apporte HTML 5 sans indiquer à chaque fois le numéro de version. * Un standard est un ensemble de spécifications qui définissent la méthode d’utilisation des technologies web. Ce standard est une recommandation qui doit être respectée de tous, navigateurs et concepteurs web, afin d’éviter les différences d’interprétation pour un code identique. De plus, ce standard doit permettre l’accessibilité des données. E. NFAOUI ([email protected])    7
  • 8.
    HTML 5, JavaScript et CSS ( Cascading Style Sheet): De nos jours, les différents langages pouvant être mis en jeu pour la composition d’une page web (ou d’une application web) sont très intimement liés. Ainsi, l’on voit souvent regroupés HTML 5, JavaScript et CSS sous le terme générique HTML 5 lui‐même. Il s’agit bien là d’un abus de langage, mais un abus justifié : le contenu (HTML) étant bien dissocié de la forme (CSS), mais peu exploitable pour les visiteurs sous une forme brute sans mise en pages, et peu dynamique sans langage de script pour des interactions avec le contenu de la page lui‐même. Il est donc difficile de se servir de l’un sans l’autre pour la création de sites complets. De même, HTML 5 est livré avec plusieurs API évoluées (Géolocalisation, Web Storage, Web Sockets, Server‐Sent Events, Web Messaging…) qui se manipulent avec JavaScript. Ils nécessitent donc d’avoir un minimum de prérequis en JavaScript. Ils ne seront pas traités dans cette première partie du cours. 2. Présentation du langage HTML E. NFAOUI ([email protected])    8
  • 9.
    Deux principaux acteurssont actuellement responsables des évolutions, des recommandations et des spécifications du langage HTML: L’organisme W3C* (World Wide Web Consortium ):  http://www.w3.org/ Le groupe WHATWG (Web Hypertext Application Technology Working Group) http://www.whatwg.org/ * Le World Wide Web Consortium (W3C) est l’organisme de normalisation dont le rôle est de créer, de développer, de maintenir et de promouvoir les standards du web, en travaillant notamment sur les langages tels que HTML, CSS, XML ( eXtended Markup Language ), SVG ( Scalable Vector Graphics ), etc. 2. Présentation du langage HTML E. NFAOUI ([email protected])    9
  • 10.
    Pour apprendre le langage HTML, on a besoin :  D'un éditeur de texte tout simple comme par exemple le Bloc‐notes de Windows.  D'un navigateur web comme Microsoft Internet Explorer, Google Chrome ou autres.  Pour développer dessites web professionnels, on utilise souvent des logiciels de développement spécialisés appelés aussi éditeurs WYSIWYG : What You See Is What You Get (Ce que vous voyez, vous l'obtenez). On trouve entre autres Adobe DreamWeaver. 2. Présentation du langage HTML E. NFAOUI ([email protected])    10
  • 11.
  • 12.
    3.1  Notion de balise (élément) La description d'undocument HTML passe par l'utilisation de balises (ou "TAGS" en anglais). Les balises HTML structurent le contenu du document, en délimitant des blocs qui seront amenés à contenir des paragraphes, des titres, différents types de médias (images, sons, vidéos), des contrôles de formulaires ou encore des liens hypertextes. Une balise est délimitée par les signes "<" et ">" entre lesquels figure le nom de la balise. Exemple: <p> Ceci est un paragraphe. </p> Ici, la balise <p> marque le début d’un paragraphe. Dans ce support de cours, nous allons utiliser indifféremment les mots balise et élément. Tout ce qui se situe entre la balise ouvrante et la balise fermante, représente le contenu de l’élément (balise) HTML. Une balise définit la sémantique, le comportement et éventuellement une apparence prédéfinie via la feuille de style interne du navigateur. Balise ouvrante Balise fermante E. NFAOUI ([email protected])    12
  • 13.
    3.1  Notion de balise Il existe desbalises auto‐fermantes, définies en tant que telles pour ne posséder aucun contenu particulier. C’est le cas de <hr> qui correspond à une séparation horizontale, mais qui ne peut contenir aucun texte ou aucun autre élément, et de <br> qui correspond à un saut de ligne. La syntaxe d’HTML 5 est relativement permissive : les éléments vides ne nécessitent pas d’être fermés (exemple: <img src="image.jpg"> ), la casse est variable et les guillemets sont facultatifs (<input type=text> ), et certaines balises fermantes sont optionnelles. Bonne pratique:  Il est important de garder les bonnes pratiques de formation du code (conventions d’écriture) initiées par HTML 4 strict puis XHTML. Le code résultant est évidemment conforme aux spécifications HTML 5 mais, en plus, il est bien écrit. Par exemple, il est recommandé d’utiliser toujours des guillemets pour entourer la valeur d’un attribut. E. NFAOUI ([email protected])    13
  • 14.
    3.2  Attributs d’une balise Les attributs modifientles propriétés des balises HTML. Un élément peut comporter zéro ou plusieurs attributs, choisis parmi un ensemble spécifique à cet élément ou un ensemble commun à tous les éléments HTML. <balise attribut_1 = valeur1  attribut_2 = valeur2 >  Exemple :     <hr width="50%" > D’une façon plus générale, il est recommandé de toujours utiliser des guillemets pour entourer la valeur d’un attribut, cela prévient beaucoup d’erreurs sur le long terme et facilite la lecture du code. E. NFAOUI ([email protected])    14
  • 15.
    3.3  Imbrications et types de contenu Les éléments peuventse succéder – par exemple plusieurs paragraphes –, mais aussi s’imbriquer pour conférer une hiérarchie au document – par exemple plusieurs paragraphes dans une section. On obtient alors un arbre « généalogique » de balises, chacune pouvant être parent ou enfant d’une autre. Ces possibilités d’imbrications sont définies dans la DTD (Document Type Definition) du langage HTML, grammaire résumant la syntaxe HTML, ses éléments et ses attributs. Exemple: Une liste non ordonnée (élément ul) se devra toujours de posséder des sous‐éléments de liste (éléments li). Ceux‐ci seront situés entre la balise ouvrante et la balise fermante </ul>. On dit alors que <ul> est parent de <li>, ou que <li> est enfant de <ul>. <p>Ma liste de fruits : </p> < ul > < li >Kiwi</ li > < li >Banane</ li > < li >Pomme</ li > </ ul > E. NFAOUI ([email protected])    15
  • 16.
    3.4  Commentaire À l’instar desautres langages, HTML comprend la possibilité d’annoter le document par des commentaires. Ceux‐ci ne seront pas affichés ni interprétés par le navigateur. Ils pourront vous servir d’aide‐mémoire, ou d’indications pour suivre l’imbrication de balises lorsque le document devient plus conséquent. Un commentaire débute par <!‐‐ et finit par ‐‐> . Exemple: <!‐‐ Ceci est un commentaire ‐‐> E. NFAOUI ([email protected])    16
  • 17.
    4. Structure générale d’un document HTML 4.1 Elémentsde base 4.2 Méta‐informations E. NFAOUI ([email protected])    17
  • 18.
    4.1 Eléments de base Le document HTMLpossède par défaut un en‐tête et un corps. L’en‐tête (élément head) définit les propriétés globales du document (titre, apparence, méta‐informations) tandis que le corps ( élément body) renferme des balises de contenu. Voici la structure minimale d’un document HTML : Modèle de document HTML 5 simple: <!DOCTYPE html> <html lang="fr">  <head>  <meta charset="utf‐8">  <title> Titre du document </title>  </head>  <body>  ...  </body>  </html> La description de chacun de ces éléments est fournie dans le tableau suivant. E. NFAOUI ([email protected])    18
  • 19.
    Elément Rôle <!DOCTYPE html> Un documentHTML doit toujours débuter par un doctype, avant même la première balise <html>. Il s’agit d’une déclaration permettant de renseigner le navigateur sur le type de document HTML délivré. Il ne s’agit pas d’un tag HTML à part entière, mais bien d’un préambule. Jusqu’à HTML 5, le doctype mentionnait l’utilisation d’un document de référence, la DTD (Document Type Definition), grammaire résumant la syntaxe HTML et ses attributs. Depuis HTML 5, le doctype a été considérablement simplifié puisqu’il n’est pas sensible à la casse, qu’aucune DTD n’est précisée. <html> L’élément <html> constitue la racine de tout document HTML. Attributs : lang : permet de préciser la langue du document. manifest : permet de préciser l’adresse URL du manifeste contrôlant le cache des fichiers pour une utilisation en mode déconnecté. L’attribut manifest entre en jeu dans l’élaboration d’applications web exécutées hors ligne. 4.1 Eléments de base E. NFAOUI ([email protected])    19
  • 20.
    Elément Rôle <head> En‐têtedu document. L’en‐tête du document exerce un rôle crucial, car il fournit de multiples renseignements sur le document lui‐même, que le contenu n’indique pas. Dans cette optique, il recueille plusieurs autres balises aux rôles précis : <title>, <meta>, <link>, <style>, <script> que nous étudierons ultérieurement. <body> Corps du document. Il contient toutes les balises HTML de contenu : texte, blocs, images, titres, médias, formulaires, etc. <title> Titre du document. Il est affiché par le navigateur et est indexé par les moteurs de recherche. 4.1 Eléments de base E. NFAOUI ([email protected])    20
  • 21.
    Elément Rôle <meta> Lesbalises <meta> permettent de véhiculer plus de méta‐informations (mots‐clés, description, auteur, etc.) relatives à la page Web. Il s’agit là de renseignements qui ne sont pas affichés dans le corps de la page, mais qui sont importants pour son interprétation ou son référencement par les moteurs de recherche. Exemples d’utilisation de quelques attributs de la balise <meta>: <meta name="description" content="Description du document">  <meta name="keywords" content="mots‐clés énumérés et séparés par des virgules">  Autres valeurs possibles de l’attribut name :  author, generator, application‐name. <meta charset="utf‐8"> L’attribut charset spécifie l’encodage des caractères utilisé. Cette déclaration doit être unique pour l’ensemble d’un document. <!‐‐ Redirection vers une autre URL au bout de 5 secondes ‐‐> <meta http‐equiv="refresh" content="5;url=http://www.google.ac.ma" /> <!‐‐ Rafraîchissement de la page toutes les minutes ‐‐> <meta http‐equiv="refresh" content="60" /> 4.2 Méta‐informations
  • 22.
    5. Mise en forme de texte Le tableau ci‐dessous présente quelques balises qui permettent de structurer le texte. Elément Rôle <b>Mise en forme (gras): portion de texte mise en forme d’une manière particulière (par exemple, un mot‐clé ou un nom de marque), sans désir de conférer d’importance ( <strong> ) ni d’emphase ( <em> ), habituellement mis en forme en gras. <i> Mise en forme (italique) Portion de texte mise en forme d’une manière particulière (par exemple, un terme technique, une pensée), sans désir de conférer d’importance ( <strong> ) ni d’emphase ( <em> ), habituellement mis en forme en italique. <u> Souligné: la balise <u> marque un bloc de texte sans importance particulière mais dont la  présentation est soulignée par défaut. <mark> Mise en valeur (marqué ou surligné): attire l’attention sur un passage de texte particulièrement pertinent au regard d’un certain contexte. <em> Emphase: ajoute un effet d’emphase au texte, usuellement représenté par de l’italique (à  ne pas confondre avec <i> ). 
  • 23.
    Elément Rôle <strong> Forte mise en exergue L’élément<strong> confère au texte une forte importance. Visuellement, il est représenté par un corps de police plus gras, mais contrairement à <b>, il possède une réelle valeur sémantique. Exemple : <p>Il est important de noter que <strong>nous ne remboursons pas</ strong> les  chaussettes usagées. </p> <small> Petits caractères Peut représenter une mention discrète, en fin de document ou de section, par exemple faisant référence à des mentions légales, à des conditions de vente ou à la précision d’une licence d’utilisation. À ne pas utiliser dans le seul but de réduire la taille de la police par défaut. Exemple : <small> Les éléments de cette page sont sous licence  <a rel="license" href="http://creativecommons.org/licenses/by‐nc‐sa/2.0/fr/">  Licence Creative Commons</a> </small> 5. Mise en forme de texte
  • 24.
    Elément Rôle <sub> Indice:affiche le texte en indice, notamment pour les formules scientifiques. Exemple:  Le symbole chimique de l’eau est H <sub> 2 </sub> O <sup> Exposant: affiche le texte en exposant, notamment pour les formules mathématiques. Exemple: <p>L’équation est la suivante : <br> (a+b) <sup>2</sup> = a <sup>2</sup> + 2ab + b <sup>2</sup>   </p> <bdo> Modification du sens d’écriture: l’élément <bdo> ( BiDioverride en anglais) indique le sens d’affichage du texte, de gauche à droite (attribut dir="ltr") ou de droite à gauche (attribut dir="rtl" ). <bdi> Isolation du sens d’écriture: l’élément <bdi> (BiDiisolate en anglais), isole son contenu des effets de la mise en forme de texte bidirectionnelle. Il permet de ne pas aboutir à un alignement confus pour du contenu généré par les utilisateurs, pour lequel la direction initiale est inconnue. Par exemple, un nom écrit en langue arabe qui serait mélangé à du texte latin. E. NFAOUI ([email protected])    24 5. Mise en forme de texte
  • 25.
    6. Hiérarchisation du texte et séparations Elément Rôle <h1>, <h2>, <h3>,  <h4>,  <h5>,  <h6> Hiérarchie de titres: Il existesix niveaux de titres pour hiérarchiser le contenu. Signalons  qu’il ne faut pas choisir un niveau de titre en fonction de sa taille physique par défaut, mais  en fonction de la sémantique sous‐jacente qui lui est attachée. Si une page ne comporte  que des titres d’un seul niveau, il est conseillé de n’utiliser que des titres <h1> sans tenir  compte de la taille par défaut et non pas des titres <h2> par exemple, au motif que la taille convient mieux. La taille à laquelle on veut afficher réellement ces titres dans la page sera  déterminée en écrivant un style CSS. <hgroup> L’élément <hgroup> regroupe un ou plusieurs titres <h1> à <h6>. Idéalement, il n’a de vocation à être utilisé qu’à partir de deux titres. <p> Paragraphe: Contient un paragraphe de texte, éventuellement accompagné d’autres balises  en ligne plus sémantiques (des images, vidéos, audio), mais pas d’autre élément de type  bloc (y compris <p> lui‐même).  <br> Saut de ligne: Force un saut de ligne : l’affichage se poursuit en début de ligne suivante. Bonne pratique: Afin d’éviter l’usage abusif de <br> pour créer de l’espacement vertical, il  est préférable d’utiliser les propriétés CSS (margin, padding) pour introduire des marges sur  les conteneurs et les paragraphes. E. NFAOUI ([email protected])    25
  • 26.
    Elément Rôle <wbr> Indication d’opportunité de césure de mot Indiqueau navigateur qu’il est plus opportun de scinder un mot à l’emplacement de cet élément, s’il y a besoin, notamment pour éviter une césure automatique pouvant être mal interprétée. Il s’agit d’une aide au moteur de rendu texte lui suggérant qu’il serait plus approprié d’effectuer un retour à la ligne à l’endroit où cet élément est placé, si la longueur du texte excède l’espace réservé par son conteneur. Particulièrement indiqué pour les longs mots, il faut savoir que <wbr> ne crée aucunement de césure (ou trait d’union) lorsque survient la coupure de ligne. Il faudra pour cela exploiter l’entité &shy; . Exemple : <p>L’adverbe anti <wbr> constitu <wbr> tionnellement signifie : Contrairement à la  Constitution et à ses principes.</p> <hr> Séparation (horizontal rule en anglais) Élément vide qui marque une séparation dans le contenu, typiquement au niveau des paragraphes, usuellement représentée par une barre horizontale. Le style par défaut de la séparation n’est pas très engageant, mais il est très facile de le modifier avec d’autres instructions CSS, notamment en agissant sur la propriété border. 6. Hiérarchisation du texte et séparations E. NFAOUI ([email protected])    26
  • 27.
  • 28.
    7.1 Introduction Créer un siteweb, c’est d’abord créer une charte graphique que l’on va retrouver sur les différentes pages web. Dans chaque page, on doit pouvoir distinguer du premier coup d’œil les grandes zones qui la composent comme l’en‐tête, la zone de navigation permettant de surfer à l’intérieur du site, la zone principale, dans laquelle est situé le contenu propre de la page, et le pied de page. HTML offre un ensemble d’éléments qui délimitent les zones du document possédant une valeur sémantique particulière. Leur rôle est de structurer la page en plusieurs grandes zones dont le simple nom de l’élément est évocateur de son utilité. Il s’agit des éléments <header>, <footer>, <aside> et <nav>. Les avantages sont évidents : le code source est plus clair, les différentes parties composant un document sont clairement identifiées. En accroissant la valeur sémantique, on augmente aussi les possibilités d’analyse et d’indexation du contenu et de référencement.
  • 29.
  • 30.
    7.2 Elément <section> E. NFAOUI ([email protected])    30 Élément fondamental del’approche de découpe sémantique des documents, <section> regroupe un contenu relatif à une même thématique ou une même fonctionnalité. Il peut être introduit par des éléments de titraille ( <header>, <hgroup>, h1 à h6, etc.) pour structurer le document. Ses cas d’utilisation sont multiples, on peut l’envisager pour scinder un document en plusieurs chapitres, pour découper un contenu présenté dans différents onglets ou différentes vues, voire pour délimiter les thématiques d’un élément <article>. Exemple d’usage de <section> englobant des articles: Dans ce cas de figure, l’élément <section> regroupe un ensemble d’articles. <section> <h1>Articles</h1> <article> <h2>Titre de l’article</h2> <p>Contenu de l’article</p> </article> <article> <h2>Titre de l’article</h2> <p>Contenu de l’article</p> </article> </section>
  • 31.
    7.2 Elément <section> Exemple d’usage de <section> dans un article Dans cet autreexemple, l’élément <section> joue le rôle de division thématique dans un même article. <article> <h1>Les couleurs</h1> <p>Ce sont des perceptions visuelles subjectives dépendant de la fréquence des ondes  lumineuses.</p> <section> <h2>Le rouge</h2> <p>Couleur primaire, le rouge excite le plus l’œil humain après le jaune.</p> </section> <section> <h2>Le vert</h2> <p>Menthe à l’eau ou grenouille, le vert est souvent associé à la nature.</p> </section> </article> E. NFAOUI ([email protected])    31
  • 32.
    7.3 Elément <article> E. NFAOUI ([email protected])    32 Section de contenudans un document ou une application web, dont la composition peut être indépendante du reste de la page et extraite individuellement. L’élément <article> est une spécialisation de <section>. Il possède une plus forte valeur sémantique, et pour cela il faut le considérer comme une portion de document qui se suffit à elle‐même, par exemple une entrée distincte parmi d’autres (une actualité, une fiche d’informations, etc.). On peut extraire son contenu sans que celui‐ci perde son sens. Exemple d’usage de <article> <article> <h1>Titre de l’article</h1> <p>Contenu de l’article...</p> </article>
  • 33.
    Étant donné lecaractère souhaité autonome de cet élément vis‐à‐vis de ce qui l’entoure, il est tout à fait possible d’utiliser une balise <header> pour l’introduire et <footer> pour lui affecter un « pied d’article », voire de le découper en plusieurs parties via <section>. Exemple: <article> <header> <h1>Titre de l’article</h1> <p>Publication le <time datetime="2011‐02‐03" pubdate>Jeudi 3 février 2011 par George  Abitbol</p> </header> <p>Contenu de l’article, premier paragraphe.</p> <p>Contenu de l’article, deuxième paragraphe.</p> <footer> <!‐‐ Pied de l’article ‐‐> </footer> </article> Dans cet exemple, l’élément <time> est muni de l’attribut pubdate, qui revêt une importance particulière spécifiquement dans le cadre d’un conteneur tel que <article> : sa signification correspond alors à la date de publication de l’ensemble de l’article. Cette particularité n’est pas valable pour <section>, ce qui caractérise bien la différence sémantique existant entre ces deux éléments cousins. 7.3 Elément <article>
  • 34.
    Comme son nomle suggère, <header> correspond à un en‐tête de section. Il peut s’agir de l’en‐tête d’introduction (d’un document, d’une autre section, d’un article) pouvant contenir – selon le contexte – titres, navigation, formulaire de recherche, table des matières, logo, etc. Exemple: <body> <header> <img src="logo.png" alt="" /> <h1>Titre principal</h1> <nav> <ul> <li><a href="/">Accueil</a></li> <li><a href="/contact">Contact</a></li> <li><a href="/a‐propos">À propos</a></li> </ul> </nav> </header> <!‐‐ Contenu du document... ‐‐> </body> 7.4 Elément <header>
  • 35.
  • 36.
    Pied de page,de section ou d’article – selon son plus proche ancêtre – visant à contenir les informations que l’on peut habituellement placer en fin de section, telles que des mentions légales, des informations de contact ou les sources d’une actualité, et éventuellement une navigation. Exemple d’usage commun de <footer> <body> <!‐‐ Contenu du document... ‐‐> <footer> <p>Tous droits réservés</p> <nav> <ul> <li><a href="/">Retour à l’accueil</a></li> <li><a href="/contact">Contact</a></li> <li><a href="/plan">Plan du site</a></li> </ul> </nav> </footer> </body> 7.5 Elément <footer>
  • 37.
    <nav>: Les niveaux denavigation peuvent être multiples sur un site web ou une application. Il peut s’agir de liens portant sur l’intégralité du site, sur une sous‐partie de l’arborescence en particulier, vers des pages communes et transversales, ou bien encore vers des sections du même document. L’élément <nav> est un choix de prédilection pour la navigation principale (souvent dans <header> ) et éventuellement pour les navigations annexes de moindre valeur (souvent dans <footer>). <aside>: Une page web est bien souvent dotée d’un contenu principal et d’informations connexes qui ne sont pas essentielles à sa compréhension. On parle alors de contenu tangentiel, et l’élément <aside> est destiné à l’abriter. Il ne s’agit pas simplement de le considérer comme une section vouée à être rendue graphiquement à gauche ou à droite du contenu principal, mais bien d’un point de vue sémantique comme une section possédant une substance périphérique ou ampliative. On peut considérer comme répondant à ces critères : une définition d’un des termes utilisés dans le contenu, une biographie, un glossaire, une chronologie apportant un fond historique, voire d’autres éclaircissements, astuces, notes, etc. 7.6 Eléments <nav> et <aside>
  • 38.
  • 39.
    7.7 HTML5 Element Flowchart Pour vousguider dans le choix de ces éléments, le site html5doctor a publié un intéressant diagramme, baptisé HTML5 Element Flowchart (figure ci‐dessous) : http://html5doctor.com/resources/ E. NFAOUI ([email protected])    39
  • 40.
  • 41.
    <div>: Conteneur générique parexcellence, <div> représente une division de document. D’un point de vue sémantique, il n’a aucune valeur et n’est voué qu’à regrouper des éléments ayant des propriétés communes. <div> doit être considéré dans l’absolu comme un élément de dernier recours. Les sections (<section>, <article>….) vues précédemment délimitent les zones du document possédant une valeur sémantique particulière. Contrairement à <div> et <span> qui n’ont aucun rôle particulier, hormis celui de regrouper des éléments, chaque section possède un rôle précis, et peut être utilisée une à plusieurs fois dans le document. Bonne pratique: Évitez d’abuser des conteneurs génériques. Privilégiez les éléments plus discriminants qui qualifient sémantiquement (notamment les sections). N’utilisez <div> qu’en dernier recours, si aucun autre élément plus approprié n’a été trouvé. <span>: Conteneur de type en ligne. Équivalent en ligne de l’élément bloc <div>, il n’a pas de valeur sémantique propre, mais peut être employé comme conteneur neutre. Tout comme <div>, <span> doit en théorie n’être utilisé qu’en dernier recours lorsqu’il n’existe aucun autre élément plus approprié. Exemple : <p>HTML signifie <span lang="en">Hypertext Markup Language</span> en anglais.</p> 8. Conteneurs génériques E. NFAOUI ([email protected])    41
  • 42.
    <blockquote>: Bloc de citation L’élément <blockquote> sertà créer une division de petite taille dans le corps d’une page. A l’origine, il était destiné à contenir des blocs de citations, comme un petit poème ou une note. Son contenu est par défaut mis en évidence au moyen d’un affichage en retrait par rapport aux bords gauche et droit de la page. Chaque élément est suivi d’un saut de ligne, tout comme pour les paragraphes. <address> Un bloc contenant des informations de contact peut être réalisé grâce à l’élément <address>. Celui‐ci s’applique à son plus proche ancêtre de type body ou article. Si l’élément <address> est unique pour le document (dans body ), alors il contient les informations de contact pour cet ensemble. Si l’on en retrouve plusieurs au sein d’éléments de type article, alors ils contiennent les informations de contact relatives à l’auteur de l’article uniquement. Les informations peuvent correspondre aux noms des personnes à l’origine du document, à leurs adresses e‐mail, de messagerie instantanée ou web, éventuellement leurs coordonnées téléphoniques ou postales. 9. Blocs sémantiques
  • 43.
    Exemple d’usage de <address> <article> <p>Auteur de cet article : </p> <address> <a href="http://www.fsdmfes.ac.ma/Nfaoui/">El Habib NFAOUI</a> </address> </article> Pourbaliser un bloc d’adresse postale (ou mixte) quelconque, un microformat de type hCard sur un paragraphe est plus approprié. <code> Un fragment de code informatique – quel que soit le langage – peut être contenu dans un élément <code>. En général, une police à pas fixe lui est appliquée, ce qui le distingue d’un texte conventionnel et évoque bien un morceau d’instruction qui pourrait être lue dans un éditeur de texte. E. NFAOUI ([email protected])    43 9. Blocs sémantiques
  • 44.
    10. Balises en ligne sémantique Le langageHTML offre un nombre relativement important d’éléments qui permettaient de délimiter des contenus en ligne. Ces derniers sont souvent limités à quelques mots afin de les particulariser et de les mettre en évidence, le plus fréquemment au moyen d’un style prédéfini. Ils ont cependant uniquement un rôle dans la structuration du contenu d’un texte. Voici quelques éléments : <abbr> : contient une abréviation (abréviation, acronyme ou sigle), par exemple kg pour kilogramme. Nous utilisons généralement l’attribut title pour afficher la signification exacte de l’abréviation quand l’utilisateur place le curseur sur son contenu signalé dans les navigateurs par un soulignement en pointillés. Exemple : <abbr title="Hypertext Markup Language"> HTML </abbr> <cite> : Nous avons déjà vu que l’élément <blockquote> permet d’inclure des citations et de les mettre en évidence. L’élément <cite> a un objectif similaire mais il est utilisé en ligne pour des citations courtes. E. NFAOUI ([email protected])    44
  • 45.
    Exemple : <p>Comme ledisait Boris Vian <cite title="Vian 1920‐1959"> La vérité n’est pas du coté du plus grand nombre car on ne veut pas qu’elle y soit. Le jour où il sera à même, par sa culture et ses connaissances, de choisir lui même sa vérité, il y a peu de chance pour qu’il se trompe. </cite> </p> Ce code affiche une citation dans une police en italique par défaut. <time> : L’élément <time> est un conteneur spécifique destiné au marquage sémantique des dates au sens large c’est‐à‐dire à la fois date et heure. Comme les formats standards sont peu lisibles, on peut afficher la date en clair dans son contenu et la date au format standard dans son attribut datetime. L’élément <time> représente un avantage non seulement pour la sémantique, mais aussi pour l’indexation automatisée par les moteurs de recherche, ou encore pour l’importation de données dans un agenda personnel. Son but est de lever toute ambiguïté sur la syntaxe à utiliser pour baliser une date ou une heure. Exemple : Usage de <time> avec l’attribut datetime <p>La Coupe du monde de football de 2014 a démarré le <time datetime="2014‐07‐12">  12 juin </time> .</p> 10. Balises en ligne sémantique
  • 46.
  • 47.
    11.1  Introduction Les listes HTMLsont prévues pour dresser des énumérations possédant une valeur sémantique. Les structures disponibles pour une liste ordonnée (liste numérotée) et non ordonnée (liste à puces) sont constituées par les éléments <ol> et <ul> au sein desquels chaque élément individuel est un <li>. Elles sont couramment employées pour la conception de menus de navigation, qui ne sont en réalité que des énumérations de liens. Lorsqu’il s’agit de rédiger une liste de définitions, l’élément <dl> peut être utilisé en conjonction avec <dt> et <dd>. E. NFAOUI ([email protected])    47
  • 48.
    11.2  Listes de définitions <dl> Liste de définitions Associe un « terme à définir » (<dt> ) et des « définitions » (<dd>) s’y rapportant.  <dt>Terme/titre de définition Enfant d’une liste <dl> , balisant le terme à définir.  <dd> Contenu de la définition Enfant d’une liste <dl>, recueillant la définition du terme <dt> qui le précède immédiatement. Remarque: Les éléments <dt> et <dd> peuvent être stylés grâce aux propriétés CSS. Exemple: <dl> <dt>HTML</dt> <dd>Langage de structuration des contenus des pages web</dd> <dt>SQL</dt> <dd>Langage d’interrogation des bases de données</dd> </dl> La liste de définitions <dl> ( description list en anglais) répond au besoin de lister des paires de termes et de  descriptions qui leur sont liées. Voici les éléments HTML permettant de créer des listes de définitions: E. NFAOUI ([email protected])    48
  • 49.
    11.3  Liste ordonnée <ol> Attributs: start,  reversed, type Liste ordonnée Structure une liste d’éléments dont l’ordre importe, pouvant être numérotée.  Contenu autorisé : <li>.  L’attributstart définit l’index à partir duquel commencer la numérotation. L’attribut reversed inverse l’ordre de la numérotation, et l’attribut type en indique le type : « 1 », « a », « A », « i », « I ». <li> Élément de liste. Désigne un élément contenu dans une liste. Peut contenir une sous‐liste <ul> ou <ol>, et ainsi de suite. Exemple: <ol start="2" type="A" > <li>Premier élément</li> <li>Deuxième élément</li> <li>Troisième élément</li> </ol> E. NFAOUI ([email protected])    49
  • 50.
    11.4  Liste non ordonnée <ul> Liste non ordonnée Désigne une liste d’éléments non ordonnés. Contenu autorisé: <li> . Exemple: <ul> <li>premier élément</li> <li>deuxième élément <ul> <li>premier sous‐élément</li> <li>second sous‐élément</li> </ul> </li> <li>troisième élément</li> </ul> Remarque: L’apparence par défaut de ces deux types de listes (<ol> et <ul>) peut être modifiée grâce à la propriété CSS list‐style‐type qui adopte entre autres les valeurs disc (par défaut), square, circle pour les puces; et armenian, decimal, decimal‐leading‐zero, georgian, lower‐alpha, lower‐greek, lower‐latin, lower‐roman, upper‐alpha, upper‐latin, upper‐roman pour la numérotation. E. NFAOUI ([email protected])    50
  • 51.
  • 52.
    12.1 Introduction Les tableaux dedonnées sont conçus pour structurer des informations en lignes et en colonnes. Ils ne faut pas les utiliser pour la mise en page du document, qui doit être assurée par des CSS. La balise <table> structure un tableau de données, épaulé par les éléments <tr> (ligne du tableau), <th> (cellule d’en‐tête) et <td> (cellule). Les éléments complémentaires sont <caption> (légende du tableau), <thead> (groupe de cellules d’en‐tête), <tbody> (groupe de cellules de corps) et <tfoot> (groupe de cellules de pied). Pour des raisons d’accessibilité, l’attribut <summary> (résumé) est conseillé. Bonne pratique: L’élément <table> n’est pas un outil de mise en page! Rappelons que les tableaux servent à structurer l’information, sous la forme de lignes et de colonnes. La mise en forme doit toujours être déléguée à une feuille de style CSS.
  • 53.
    12.2   Balises de création des tableaux  <caption> Légende associée à un tableau dedonnées. Elle doit se situer immédiatement après la balise ouvrante <table>. <tr> Rangée/ligne de tableau Regroupe les cellules (<td> ou <th>) d’une même ligne dans un tableau. <th> Attributs: scope, colspan, rowspan, headers Cellule d’en‐tête Désigne une cellule d’en‐tête (intitulé de colonne ou de ligne) d’un tableau de données. Les attributs colspan et rowspan définissent respectivement le nombre de cellules fusionnées en colonnes et en lignes. L’attribut scope spécifie sur quelles cellules s’applique l’en‐tête (row : ligne, col : colonne, rowgroup, colgroup ). L’attribut headers indique une liste d’identifiants pour lesquels s’applique l’en‐tête. <td> Attributs: colspan, rowspan, headers Cellule de tableau Regroupe le contenu d’une cellule de tableau. Les attributs colspan et rowspan définissent respectivement le nombre de cellules fusionnées en colonnes et en lignes. E. NFAOUI ([email protected])    53
  • 54.
    <thead> En‐tête de tableau Il regroupeles cellules d’en‐tête d’un tableau de données. Les éléments <thead> et <tfoot> doivent être déclarés avant le(s) <tbody>. <tbody> Corps de tableau Il regroupe les cellules du corps d’un tableau de données. <tfoot> Pied de tableau Il regroupe les cellules du pied d’un tableau de données. <colgroup> Attribut : span Groupe de colonnes Il regroupe une ou plusieurs colonnes définies par <col>, avant tout élément <thead>, <tbody>, <tfoot> et <tr>. L’attribut span définit le nombre de colonnes sur lesquelles cet élément doit s’étendre. 12.2   Balises de création des tableaux  E. NFAOUI ([email protected])    54
  • 55.
    <col> Attribut : span Colonne(s) d’un groupe. Permet d’appliquer des propriétés communesà une colonne dans  un tableau de données, par exemple des styles CSS. Exemple : <table>  <colgroup>  <col span="1" style="background:green" /> <col span="2" style="background:red" /> </colgroup> <tr>  <td>Cellule 1</td>  <td>Cellule 2</td>  <td>Cellule 3</td>  </tr>  <tr>  <td>Cellule 1</td>  <td>Cellule 2</td>  <td>Cellule 3</td>  </tr>  </table> 12.2   Balises de création des tableaux 
  • 56.
    Exemple 1: <body>  <table border="1">  <caption>Facture de votre commande de  livres</caption>  <!‐‐ Groupe 1 : Dates ‐‐>  <colgroup id="date" span="1"> </colgroup> <!‐‐Groupe 2 : Titre et Auteur ‐‐>  <colgroup id="livre" span="2"> </colgroup>  <!‐‐ Groupe 3: Quantité, Prix unitaire, Prix total ‐‐>  <colgroup class="prix">  <col span="1" id="quantite"/>  <col span="2" id="prix"/>  </colgroup> <thead>  <tr>  <th>Date </th> <th>Titre </th>  <th>Auteur</th> <th>Quantité </th>  <th>Prix Unitaire </th>  <th>Prix Total </th> </tr>  </thead>  <tfoot>  <tr>  <th>Date </th>  <th>Désignation </th>  <th>Auteur</th> <th>Quantité </th> <th>Prix Unitaire </th> <th>Prix Total </th>  </tr>  </tfoot>  <!‐‐ Données du tableau ‐‐> <tbody> <tr> <td>10/10/2013</td>  <td>Dictionnaire Arabe‐English</td> <td>Said Ramdani</td> <td>3</td> <td>32.00 Dhs</td>  <td>96.00 Dhs</td>  </tr>  <tr>  <td>10/03/2012</td>  <td>HTML: livre de poche  </td> <td>Tarik Fadili</td>  <td>2</td> <td>38.00 Dhs</td>  <td>76.00 Dhs</td>  </tr>  12.3   Exemples 
  • 57.
  • 58.
  • 59.
  • 60.
    13.1 Introduction Les liens hypertextespermettent de passer, d’un simple clic, sur un objet cliquable (texte, image, partie d’une image, bouton, etc.) d’une page à l’autre, quelle soit située sur le même serveur ou en n’importe quel point du réseau. Nous parlerons dans ce cas de liens externes (sous‐entendu par rapport au document initial). Il est également possible de passer instantanément d’un point de la page à un autre situé sur la même page et identifié par un nom particulier. Nous parlerons alors de liens internes (encore par rapport au document initial). E. NFAOUI ([email protected])    60
  • 61.
    <a> Attributs : href, target, media , type. Lien hypertexte. L’élément<a> ( anchor en anglais ou ancre ) crée un lien hypertexte. L’activer – cliquer  dessus dans la plupart des cas – signifie au navigateur que l’on souhaite changer d’adresse  de navigation et consulter une autre ressource. L’attribut href est bien sûr le plus important puisque c’est lui qui détermine la cible du lien, c’est‐à‐dire l’adresse du document que le navigateur chargera et interprétera. Il peut s’agir d’un lien classique vers une autre page HTML, vers un fichier média que le navigateur peut interpréter nativement ou à l’aide d’une extension (par exemple une image, un document PDF), ou encore vers un fichier que le navigateur proposera de télécharger. target : Attribue un contexte de navigation dans lequel suivre le lien. Il peut prendre les valeurs prédéfinies _ blank, _ parent , _ self et _ top pour afficher la cible, respectivement, dans une nouvelle fenêtre (ou un nouveau onglet), la fenêtre parent de la fenêtre en cours, la fenêtre elle‐même et la fenêtre de plus haut niveau. 13.2  La balise <a> • Le tableau ci‐dessous présente un résumé des différents attributs de la balise <a> permettant de créer des liens hypertexte. E. NFAOUI ([email protected])    61
  • 62.
    <a> Attributs: download, id, rel, hreflang, download : Indiqueque la ressource liée est prévue pour être téléchargée. Si une valeur est donnée à l’attribut, elle représente le nom du fichier après téléchargement. L’attribut id est utilisé pour créer une ancre (nous reviendrons sur cette notion ultérieurement dans ce chapitre). L’attribut rel spécifie la relation établie par le lien, entre le document courant et la cible. Plusieurs valeurs peuvent être combinées, séparées par des espaces. On trouve entre autres: alternate, archives, author, bookmark, external, first, help, index, last, license… L’attribut hreflang précise la langue de la destination. On peut préciser media (une requête  de média pour laquelle la cible est prévue – voir chapitre « Requêtes de média dans CSS »)  et type (type MIME de la ressource destination). 13.2  La balise <a>  Exemple: <!‐‐ Lien vers une autre page html ‐‐>  <a href="contact.html">Contactez‐nous</a> <!‐‐ Lien vers une image ‐‐>  <a href="maphoto.jpg">Visualier ma photo</a> Exemple de l’attribut rel : <nav>  <p> <a href="/categorie/" rel="up" >Niveau supérieur</a>  Page courante  </p>  </nav> E. NFAOUI ([email protected])    62
  • 63.
    13.2  La balise <a> Le lien peutêtre absolu, c’est‐à‐dire formuler une adresse complète, notamment dans le cas d’un lien menant vers un autre site hébergé sur un autre nom de domaine. Il peut être aussi relatif, si l’on souhaite se baser sur l’adresse courante – affichée dans la barre d’adresses – et faire référence à un document stocké au même niveau, ou dans un niveau différent (sous‐répertoire, répertoire parent, répertoire racine). Exemples : <!‐‐ Lien relatif vers une page de contact, hébergée dans le même niveau d’arborescence ‐‐>  <a href="contact.html">Contactez‐nous</a> <!‐‐ Lien relatif vers un fichier dans le sous‐répertoire images (par rapport au document courant) ‐‐>  <a href="images/schema.png">Voir l’illustration</a> <!‐‐ Lien relatif vers une page hébergée dans le répertoire parent (un niveau au‐dessus du document  courant) ‐‐>  <a href="../categorie.html">Revenir à la catégorie</a> <!‐‐ Lien absolu vers une page hébergée à la racine du site ‐‐> <a href="/mentions.html">Mentions légales</a> E. NFAOUI ([email protected])    63
  • 64.
    13.2  La balise <a> <!‐‐ Lien absolu vers la racine du site ‐‐>  <a href="/">Accueil du site</a> Dans tous les cas, s’il ne s’agit pas d’un lien relatif au site, on précisera le protocole (http://, ftp://, etc.) <!‐‐ Lien externe ou absolu ‐‐>  <a href="http://www.google.com/"></a> Pourenvoyer un courrier électronique lorsqu’on clique sur un lien, on utilise le protocole mailto. Dans ce cas, il incombera au navigateur et au système d’exploitation de lancer l’application de messagerie installée pour prendre en charge ce lien et proposer une fenêtre de rédaction. Exemple: <!‐‐ Lien pour adresse e‐mail ‐‐> <a href="mailto:[email protected]"></a> E. NFAOUI ([email protected])    64
  • 65.
    13.3  Attribut hreflang L’attribut hreflang précise la langue de destination et peut permettre à l’utilisateur de savoir par avance  s’il pourra comprendre l’idiome utilisé. Par défaut, il n’est pas signalé visuellement, mais une petite astuce  en CSS permet d’afficher sa valeur entre parenthèses à la suite du lien, grâce à la pseudo‐classe : after. Exemple d’usage de l’attribut hreflang <head> <style type= "text/css"> a[hreflang]:after{  content: " (" attr(hreflang) ") ";  } </style> <body> <!‐‐ Lien vers la version de Wikipédia en langue arabe ‐‐>  <a href="http://ar.wikipedia.org/" hreflang="ar">Wikipedia</a> </body> E. NFAOUI ([email protected])    65
  • 66.
    13.4  Les liens ciblés : ancres Quand lecontenu d’une page est volumineux, l’utilisateur ne peut pas en avoir une vision globale puisqu’il doit la défiler sur plusieurs écrans. Il est alors souhaitable de lui proposer une table des matières ou un menu composé de liens internes vers les différentes sections de la page (par exemple div, section). Il pourra ainsi accéder directement au point de son choix sans faire défiler la page. De même, si le lien est externe, il est possible d’accéder en un point particulier de la page cible. Chaque point cible de la page doit être signalé par un lien particulier, appelé ancre (aussi nommée hash en anglais), lequel est créé à l’aide de l’élément <a>, muni simplement d’un attribut id (l’attribut name est désormais obsolète avec HTML 5) dont la valeur doit être unique dans la page. Notons que l’ancre peut aussi se trouver dans un autre document. Nous pouvons par exemple écrire le code suivant pour le contenu d’une page : <p> <!‐‐ créer une ancre possédant l’id ="para1" ‐‐> <a id="para1">Paragraphe 1</a>Un document HTML doit avoir la structure…</p>  <p> <a id="para2">Paragraphe 2</a>Une feuille de style CSS comporte… </p> Dans cet exemple, chaque paragraphe devient alors la cible d’un lien. Nous devons ensuite créer le lien d’origine pour lequel un clic permet l’affichage du paragraphe cible en haut de la fenêtre du navigateur. L’élément <a> , origine du lien, doit contenir un attribut href dont la valeur est celle de l’attribut id de la cible, précédé du caractère dièse ( # ). E. NFAOUI ([email protected])    66
  • 67.
    13.4  Les liens ciblés : ancres Nous disposons par exemple du code suivant pour créer le lien vers le premier paragraphe: <p> <a href="#para1">Vers le paragraphe 1</a> </p> Si l’ancre est située dans un autre document HTML, l’attribut href contient l’adresse relative ou absolue du document, suivie du caractère dièse, puis de l’identifiant de l’ancre. Pour une adresse relative, nous pouvons écrire : <!‐‐ Lien vers l’ancre #para1 définie dans la page 2 ‐‐> <p><a href="page2.html#para1">Paragraphe 1 de la page 2</a></p> Pour une adresse absolue, le code devient : <p><a href="http://www.cours.com/page2.html#para1">Paragraphe 1</a></p> Une ancre sans nom désigne le haut de la page : <!‐‐ Lien vers le début du document ‐‐> <a href="#">Haut de page</a> E. NFAOUI ([email protected])    67
  • 68.
  • 69.
  • 70.
    14.2 Images Les images présentesdans le document HTML (hors images de fond définies avec CSS : toujours conserver la séparation entre la forme et le contenu) sont à considérer comme des éléments à part entière devant apporter des informations à l’utilisateur. Les formats PNG, JPEG, GIF sont désormais universellement reconnus. <img>  Attributs : src, alt, height,  width, usemap, ismap Insère une image stockée dans un fichier externe à l’intérieur d’un document web. L’attribut src spécifie l’adresse vers le fichier image. L’attribut alt indique un texte  alternatif à l’image.  Les attributs width (largeur) et height (hauteur) définissent respectivement l’espace d’affichage en pixels alloué pour l’image. Une image peut être associée à la définition d’une zone de liens cliquables (ou image map ), telle que décrite avec l’élément <map>. L’attribut usemap contient alors l’identifiant unique de ce dernier pour y faire appel. La valeur booléenne (true ou false ) de l’attribut ismap indique que le navigateur doit transmettre les coordonnées du point cliqué sur l’image au serveur, lorsque celle‐ ci est bien entendu cliquable (par exemple dans un lien <a>). Ces coordonnées sont envoyées sous la forme ?x,y et peuvent être analysées par un langage interprété côté serveur.
  • 71.
    Exemple : <p> <img src="babjloud.jpg"  alt="width="300"  height="100"> Bab jloud se situe à la vielle Médina de Fes... </p> Il existe de nombreuses techniques et combinaisons d’éléments HTML pour positionner les images dans le contenu. Les cas de figure les plus fréquents sont le centrage, le flottement à gauche, le flottement à droite et le positionnement absolu, qui peuvent être accomplis à l’aide de CSS. 14.2 Images E. NFAOUI ([email protected])    71
  • 72.
    14.3 Carte cliquable Un élément <map>est utilisé en conjonction avec une image <img> pour concevoir une carte cliquable appliquée sur celle‐ci. Le résultat consiste en des zones distinctes et transparentes, de formes variées, équipées de liens. En anglais, on emploie plus couramment le terme d’image map. L’attribut name est requis pour cet élément, car il permet de l’associer à l’élément image <img> via son attribut usemap . <map> Attribut : name Carte cliquable pour image. Cet élément catalogue les zones sensibles <area> d’une image utilisée en guise d’image réactive. Si l’attribut id est présent, il doit avoir la même valeur que name, qui permet de lier <map> et <img> avec son attribut usemap. <area> Attributs : shape, coords, rel,  media, hreflang, type,  href, target, alt Un élément <area> est une zone cliquable individuelle faisant partie d’une image map. Sa forme est définie par l’attribut shape qui prend les valeurs circle (cercle), poly (polygone), rect (rectangle) et default (toute l’image), ainsi que par les coordonnées de la forme choisie avec l’attribut coords. E. NFAOUI ([email protected])    72
  • 73.
  • 74.
    14.4 Figure <figure> Unité decontenu, avec légende optionnelle <figcaption>, qui regroupe habituellement une ou plusieurs illustrations, pouvant être mentionnées depuis le contenu principal et déplacées à l’extérieur du flux, sans affecter la signification du document. Exemple : <body> <!‐‐ Une image avec une légende ‐‐> <figure> <img src="Android.jpg" width="600"> <figcaption> Architecture du framework Android</ figcaption> </figure> </body> </html> E. NFAOUI ([email protected])    74
  • 75.
    14.5 Audio et vidéo Les éléments demédia (<audio> et <video>) permettent d’agrémenter un document ou une application avec sons et vidéos, sans utiliser d’extension propriétaire. L’idée des éléments <audio> et <video> de HTML 5 est d’en simplifier grandement l’insertion dans les pages web avec une lecture native dans le navigateur, sans nécessiter de plug‐in supplémentaire. Cependant, chaque navigateur reconnaît des formats différents (parmi MP3, Ogg Vorbis, WAV, AAC pour l’audio, et MP4/H.264, WebM, Ogg Theora pour la vidéo…). <audio> Son ou élément audio, interprété dans le navigateur, dont la source est définie par l’attribut src, ou par une succession d’enfants <source> (voir plus bas) proposant des formats alternatifs. Exemple 1 : <!‐‐ Un son ‐‐> <audio src="musique.mp3" controls> Ce navigateur ne supporte pas HTML5 Audio </audio> E. NFAOUI ([email protected])    75
  • 76.
    <video> Vidéo affichéeet interprétée dans le navigateur, dont la source est définie par l’attribut src, ou par une succession d’enfants <source> (voir plus bas) proposant des formats alternatifs. Étant donné qu’il s’agit d’un élément visuel, il est fortement conseillé de lui attribuer des dimensions grâce aux attributs width (largeur) et height (hauteur). Idéalement – si la disposition de la page et l’espace disponible le permettent – il est également conseillé de conserver la résolution native de la vidéo pour assurer une qualité optimale et éviter un redimensionnement ou un échantillonnage potentiellement disgracieux. Exemple : <video src=" video1.mp4" width="640" height="480" controls> <a href="video1.mp4">Télécharger la vidéo</a> </video> 14.5 Audio et vidéo E. NFAOUI ([email protected])    76
  • 77.
    <source> Source alternative audio ou vidéo. Placé dans<audio> ou <video>, vient en remplacement de l’attribut src pour préciser plusieurs sources possibles, dont le format est indiqué par type, l’adresse par src et le média destination par media. Les sources multiples ont l’avantage de permettre de toucher un panel de visiteurs plus large, avec l’inconvénient de devoir concevoir et héberger en parallèle plusieurs types de fichiers différents. Exemple : Sources multiples <video> <video width="640" height="480" controls > <source src=" video.mp4 " type="video/mp4" > <source src=" video.3gp " type="video/3gpp" media="handheld"> <source src=" video.ogv " type="video/ogg; codecs=theora, vorbis" > <source src=" video.webm " type="video/webm; codecs=vp8, vorbis" > Ce navigateur ne supporte pas l'élément <code>video</code> </video> Dans cet exemple, quatre sources sont proposées : - une vidéo à destination des mobiles (3GP avec media handheld );  - une vidéo Ogg Theora à destination des navigateurs supportant le type MIME video/ogg et équipés des codecs theora (vidéo) et vorbis (audio); - video/webmune vidéo WebM à destination des navigateurs supportant le type MIME et équipés des codecs vp8 (vidéo) et vorbis (audio); - une vidéo MP4 pour les navigateurs connaissant ce format. 14.5 Audio et vidéo
  • 78.
    Attributs spécifiques à l’audio et à lavidéo - autoplay : Lecture automatique. Active la lecture dès le chargement de la page. - preload : Préchargement. Précharge le fichier média, dès le chargement de la page. - controls : Affichage des contrôles. La présence de l’attribut controls affiche les contrôles natifs du navigateur (lancement de la lecture, arrêt, progression, volume, etc.). - src : Source. Indique l’adresse de la source du média (si <source> n’est pas utilisé). - loop : Lecture en boucle. Active la lecture en boucle. - poster : Aperçu par défaut. Indique l’adresse de l’image d’aperçu à charger pour occuper la zone d’affichage lorsque la vidéo n’est pas jouée. - width, height : Dimensions. Spécifie les dimensions d’affichage de la zone vidéo. - muted : Silencieux. Active le mode silencieux (volume nul). - mediagroup : Groupe d´éléments audio et vidéo. Permet de regrouper différents éléments média (audio, vidéo), par exemple dans une liste de lecture gérée par JavaScript. Un cas pratique serait la lecture simultanée d’une vidéo contenant l’interprétation en langue des signes pour une meilleure accessibilité. Exemple : <video src="mavideo.mp4" mediagroup="groupe1" controls></video> <video src="signes.mp4" mediagroup="groupe1" ></video> 14.5 Audio et vidéo E. NFAOUI ([email protected])    78
  • 79.
    <track> Attributs:  kind, src,  srclang,  label,  default En complément auxfichiers médias pouvant contenir du son et de la vidéo, l’élément <track>, également enfant de <video> et <audio>, vise à apporter le support de «pistes de texte synchronisées». Il lie un fichier de piste texte pour un élément média. L’attribut kind indique le type de piste : subtitles (sous‐titres), captions (légendes), descriptions (audiodescription), chapters (chapitrage), metadata (méta‐informations). Le format préconisé est le WebVTT. L’attribut label définit l’étiquette présentée à l’utilisateur, et srclang la langue du fichier source. L’attribut default active un élément track par défaut si l’utilisateur n’en a pas choisi d’autre. Exemple complet avec plusieurs éléments <track>: <video src="video.webm" id="mavideo"> <track kind=" subtitles " src="video.fr.vtt" srclang="fr" label="Français" default> <track kind=" captions " src="video.fr.cap.vtt" srclang="fr" label="Français pour  malentendants"> <track kind=" subtitles " src="video.en.vtt" srclang="en" label="English"> <track kind=" subtitles " src="video.ar.vtt" srclang="de" label="Deutsch"> <track kind=" descriptions " src="video.fr.desc.vtt" srclang="fr" label="Description  texte"> </video> 14.5 Audio et vidéo
  • 80.
    14.6 Autres contenus embarqués : canvas,  iframe et object <canvas> Attributs : width,height Surface de dessin transparente, manipulable avec JavaScript. Pour la syntaxe complète, se référer à la documentation détaillant toutes les fonctions de dessin. Parmi les possibilités offertes figurent : - des méthodes de tracé de formes géométriques (cercles, rectangles...) ; - des méthodes de tracé de polygones ; - des méthodes de choix de styles de couleurs et de remplissages ; - des méthodes de tracé de texte ; - des méthodes d’import et de manipulation d’images ; - des méthodes de transformation (échelle, rotation, déplacement) qui  affectent toute la matrice. <iframe> Attributs: src, srcdoc, name, width,  height, sandbox, seamless  Cadre (contexte) de navigation imbriqué. L’élément <iframe> ( inline frame en  anglais) embarque dans la page un autre document HTML à l’adresse src, telle une  carte google, etc. Il s’agit d’un contexte de navigation imbriqué dans un cadre. seamless : Si cet attribut est présent, l’iframe apparaît en tant que partie du document dans lequel elle est présente, sans bordure ni barre de défilement. L’attribut target des liens est alors fixé par défaut à parent. E. NFAOUI ([email protected])    80
  • 81.
    <iframe> Attributs: src, srcdoc, name, width, height,sandbox, seamless L’attribut sandbox précise les règles de sécurité à autoriser : allow‐same‐origin, allow‐forms , allow‐scripts , allow‐top‐navigation. Sa seule présence sans valeur désactive toutes les autorisations : - Les formulaires, scripts et plug‐ins sont désactivés. - Pas d’accès aux éléments stockés en local (cookies, sessionStorage, localStorage). - Les requêtes XMLHttpRequest (Ajax) ne peuvent être envoyées. - Les liens ne peuvent pas cibler (grâce à target ) d’autres « cadres » (frames) ou contextes de navigation. - Le contenu est traité par défaut comme provenant d’une origine externe (un autre domaine), ce qui l’empêche d’accéder à certains contenus initiaux et notamment le DOM. Ces restrictions peuvent être levées individuellement en utilisant une ou plusieurs des valeurs au sein de l’attribut : - allow‐forms: autorise les formulaires; - allow‐same‐origin: autorise le contenu à être traité comme provenant de la même origine au lieu d’être considéré comme provenant d’un autre domaine; - allow‐scripts: autorise les scripts (hormis les pop‐ups) ; - allow‐top‐navigation: autorise l’iframe à accéder à la navigation de niveau supérieur. Plusieurs options peuvent être combinées dans l’attribut en les séparant par des espaces. Les attributs align, allowtransparency, frameborder, marginheight, marginwidth, scrolling sont obsolètes et peuvent avantageusement être remplacés par CSS. L’attribut longdesc peut être remplacé par un lien <a> menant vers une description longue. E. NFAOUI ([email protected])    81
  • 82.
    Exemple: <!DOCTYPE html> <html> <head> <title>Document parent</title> </head> <body> <p>Avant l' iframe</p> <iframe sandbox="allow‐scripts allow‐forms" width="400" height="300"src="iframe.html"> </iframe> <p>Après l ' iframe</p> </body> </html> E. NFAOUI ([email protected])    82 14.6 Autres contenus embarqués : canvas,  iframe et object
  • 83.
    <object> Objet externe. Cet élémentPermet de faire appel à un objet externe, souvent interprété via une extension (plug‐in), par exemple pour Flash ou Java. Le type MIME de l’objet est précisé par l’attribut type et les dimensions par width (largeur) et height (hauteur). Exemple : <object type="application/x‐java‐applet"> <param name="code" value="MaClasse"> <param name="archive" value="Applet.jar" /> <p>Texte alternatif : Java n’est pas installé.</p> </object> <param> Attributs : name, value Paramètre d’objet. Définit les paramètres d’exécution pour <object> . <object type="application/x‐shockwave‐flash"> <param name="movie"  value="animanim.swf"> </object> 14.6 Autres contenus embarqués : canvas,  iframe et object E. NFAOUI ([email protected])    83
  • 84.
  • 85.
    15.1 Introduction Un formulaire regroupeun ensemble de champs interactifs permettant de recueillir des informations auprès de l’utilisateur. L’utilisateur peut entrer des textes ou des mots de passe, opérer des choix grâce à des boutons radio, des cases à cocher ou des listes de sélection, etc. Il peut également effectuer le transfert de ses propres fichiers vers le serveur. Nous allons aborder dans ce chapitre les éléments HTML qui permettent de créer la structure et les différents composants des formulaires. E. NFAOUI ([email protected])    85
  • 86.
    15.2 Structure d’un formulaire Le formulaire estgénéralement validé et envoyé après click sur un bouton input de type submit (envoyer). Les valeurs des éléments qu’il contient sont alors envoyées au serveur, à l’adresse définie par l’attribut action. La méthode HTTP utilisée pour l’envoi des données peut être de type GET ou POST, précisée par l’attribut method. Les éléments constitutifs d’un formulaire doivent être contenus entre les balises <form> et </form>. <form> ne peut pas contenir d’autres éléments <form>. Exemple : <form action="traiter.php" method="post">  <label for="nom">Nom</label>  <input name="nom" id="nom" type="text">  <input value="envoyer" name="envoi" type="submit" /> </form> E. NFAOUI ([email protected])    86
  • 87.
    15.3  Attributs spécifiques à <form> Attribut Valeurs Rôle accept‐charsetCodes pages de caractères séparés par des virgules Liste de types d’encodages des caractères acceptés par le serveur pour traiter le formulaire. action URL  Adresse à laquelle sont envoyées les données. autocomplete on off Active (on ) ou désactive ( off ) l’autocomplétion sur l’ensemble du formulaire. enctype text/plain application/x‐www‐form‐urlencoded multipart/form‐data Type MIME associé au contenu du formulaire lors de sa soumission au serveur. La valeur multipart/form‐data doit être utilisée en combinaison avec les champs de type file . E. NFAOUI ([email protected])    87
  • 88.
    method get post Méthode d’envoi HTTP au serveur name  texteNom du formulaire novalidate novalidate ou "" ou (vide) Désactive l’impératif de validation des données côté client pour la soumission du formulaire. target _blank _parent _self _top nom d’un élément de type iframe (attribut name ) Contexte de navigation spécifique (iframe , autre) pour la validation du formulaire, si celui‐ci n’est pas soumis dans le contexte courant. 15.3  Attributs spécifiques à <form> E. NFAOUI ([email protected])    88 Attribut Valeurs Rôle
  • 89.
    15.4 Groupe de champs : <fieldset> L’élément <fieldset> esttrès souvent inclus dans un formulaire. Il représente un groupe de champs qui regroupe des informations de même thématique dans un formulaire pour en faciliter la compréhension, et doit contenir directement un élément <legend> qui ajoute une légende à ce groupe <fieldset>. Exemple: Aperçu d’un groupe de champs E. NFAOUI ([email protected])    89
  • 90.
    15.4 Groupe de champs : <fieldset> <form method="post" action="validation.php">  <fieldset>  <legend>Votre identité</legend>  <label for="nom">Entrez votre nom</label>  <input id="nom" type="text" name="nom"  required> <label for="prenom">Entrez votre prénom</label>  <input id="prenom" type="text" name="prenom" required>  <label for="email">Entrez votre e‐mail</label>  <input id="email" type="email" name="email" required>  </fieldset> <fieldset>  <legend>Votre adresse</legend> <label for="cp">Entrez votre code postal</label>  <input id="cp" type="number" name="codepostal"> <label for="ville">Entrez votre ville</label>  <input id="ville" type="text" name="ville">  </fieldset>  <input type="submit" value="Valider">  </form> E. NFAOUI ([email protected])    90
  • 91.
  • 92.
    15.5.1 <input> et ses variantes L’élément <input> estparticulier, car il revêt de multiples apparences et fonctionnalités, uniquement caractérisées par l’attribut type. Son but est de recueillir les informations d’une entrée effectuée par l’utilisateur, éventuellement en lui fournissant toutes les indications nécessaires pour structurer son entrée ou son choix. Le tableau ci‐dessous récapitule plusieurs valeurs possibles pour l’attribut type de la balise <input>. text Le type text est le champ de formulaire le plus classique qui soit. Comme son nom le suggère, il permet la saisie d’un texte (relativement court pour des raisons de lisibilité, car visuellement le contrôle est monoligne et d’une largeur déterminée). <input type="text" name="prenom"> password Confrère de text , un champ d’entrée de mot de passe password est un équivalent dont les caractères sont remplacés visuellement par des astérisques ou des points. Mot de passe : <input type="password" name="motdepasse"> E. NFAOUI ([email protected])    92
  • 93.
    date Avec letype date, débute une liste de plusieurs contrôles pour l’entrée de données temporelles. La syntaxe des dates et heures est définie par la RFC 3339. Tel que son nom original l’évoque, cet élément vise à sélectionner une date précise du calendrier grégorien. Le format de la valeur texte y correspondant est la succession de l’année sur quatre chiffres, les numéros du mois et du jour, séparés par des tirets. <input type="date" name="naissance"> color Grâce au type color, l’élément <input> devient un contrôle pour la sélection d’une couleur, ou plutôt d’un code couleur stocké dans son attribut value. Le format est sous la forme hexadécimale que l’on retrouve déjà au sein de HTML et CSS, débutant par un dièse suivi de 6 caractères alphanumériques entre 0 et 9, A et F. <!‐‐ blanc ‐‐> <input type="color" name="couleur1" value="#FFFFFF"> <!‐‐ bleu royal ‐‐> <input type="color" name="couleur2" value="#4169E1"> 15.5.1 <input> et ses variantes E. NFAOUI ([email protected])    93
  • 94.
    number Un champde type number consacre son existence aux valeurs numériques, éventuellement situées dans un intervalle spécifié par les attributs min et max. Nombre : <input type="number" name="age"> range Une sélection de valeur numérique peut aussi être effectuée avec le type range, mais avec un contrôle volontairement imprécis. L’utilisateur pourra naviguer dans un intervalle défini par les attributs min et max, avec un pas éventuellement précisé par step . Cependant, par défaut – hors usage d’un JavaScript complémentaire –, ce contrôle ne fournit pas d’information directe à l’utilisateur sur l’intervalle ou la valeur obtenue. Un cas typique d’utilisation serait celui du volume sonore pour un lecteur <audio> ou <video>: l’internaute n’a pas besoin de savoir avec exactitude la valeur du volume, il lui suffit de connaître approximativement sa position par rapport à une limite basse et une limite haute. <input type="range" name="volume"> 15.5.1 <input> et ses variantes E. NFAOUI ([email protected])    94
  • 95.
    tel L’attribut telest une déclinaison d’un champ texte par défaut indiquant au navigateur que l’on s’attend à saisir un numéro de téléphone. Quelques navigateurs reconnaissent très bien cette spécificité en affichant un clavier approprié pour faciliter l’entrée d’une série de chiffres. Il n’y a aucune vérification de syntaxe étant donné la variété des notations pouvant exister au niveau international. Pour cela, il est préférable d’utiliser l’attribut pattern pour effectuer une validation de la saisie côté navigateur. email Un champ de type email est un champ texte spécialisé, destiné à recevoir une adresse e‐mail. Ce standard est à la fois trop strict (avant le caractère @), trop vague (après @) et trop laxiste  (autorisation d’espaces, de commentaires, etc.) pour être pratique. <p>Email : <input type="email" name="adressemail"> </p> hidden Un élément <input> de type hidden est un champ caché pour l’utilisateur, mais dont la valeur est validée avec le formulaire. Il s’agit généralement d’une valeur issue d’un script exécuté côté serveur (par exemple PHP) ou côté client (JavaScript). <input type="hidden" name="action" value="inscription"> 15.5.1 <input> et ses variantes E. NFAOUI ([email protected])    95
  • 96.
    radio Un boutonradio est un contrôle de formulaire, faisant partie d’un groupe d’autres boutons radio. Ils possèdent tous le même attribut name en tant que lien : un seul bouton radio peut être coché parmi leur ensemble, à un moment donné. Exemple: <p> <input type="radio" name="genre" value="masculin" id="m"> <label for="m">Je suis un homme</label> <input type="radio" name="genre" value="feminin" id="f"> <label for="f">Je suis une femme</label> </p> <p> Souhaitez‐vous recevoir la newsletter ? <input type="radio" name="newsletter" value="oui" id="newsletter‐oui" checked > <label for="newsletter‐oui">Oui</label> <input type="radio" name="newsletter" value="non" id="newsletter‐non"> <label for="newsletter‐non">Non</label> </p> 15.5.1 <input> et ses variantes E. NFAOUI ([email protected])    96
  • 97.
    checkbox Le boutoncheckbox est très semblable au bouton radio à la seule différence qu'il est possible d'en sélectionner plusieurs appartenant au même groupe. Vos sports préférés : <br /> <input type="checkbox" value="natation" checked>Natation<br /> <input type="checkbox" value="cyclisme" >Cyclisme<br /> <input type="checkbox" value="ski" >Ski<br /> <input type="checkbox" value="pétanque" checked>Pétanque<br /> <input type="checkbox" value=« basket">Basket 15.5.1 <input> et ses variantes E. NFAOUI ([email protected])    97
  • 98.
    reset Un contrôlede type reset est un simple bouton réinitialisant tous les champs du formulaire à leur état initial. <input type="reset" value="Réinitialiser"> submit La variante de bouton de type submit permet de valider un formulaire. Bien entendu, il existe  des fonctions JavaScript pour produire un résultat équivalent, mais ce bouton est nativement  prévu à cet usage. Il déclenche la validation complète du formulaire qui le contient, et son  envoi à l’adresse spécifiée dans l’attribut action de ce formulaire. <form method="post" action="identification.php"> <label for="login">Identifiant : </label> <input type="email" id="login"> <input type="submit" value="Valider"> </form> 15.5.1 <input> et ses variantes E. NFAOUI ([email protected])    98
  • 99.
    image Les formulairesne comprennent pas uniquement des champs texte et des boutons. Une image cliquable est parfaitement intégrable à l’aide du type image. En revanche, elle peut couvrir deux types d’usage : - soit pour la sélection de coordonnées (x,y) sur cette image ; - soit pour jouer le rôle de « bouton graphique » pour valider le formulaire. Puisqu’il s’agit d’un élément très proche des images classiques, il accepte les attributs width et height pour la définition des dimensions, ainsi que les attributs alt et src . Les coordonnées sont transmises à la soumission du formulaire dans les variables  suffixées name.x et name.y, dérivées de l’attribut name de l’image. <input type="image" src="carte.png" alt=""  name="map"> 15.5.1 <input> et ses variantes E. NFAOUI ([email protected])    99
  • 100.
    file Un élément de sélection de fichier local peut être créé avec un type file. L’attributmultiple permet la sélection de plusieurs fichiers pour un même élément <input> de type file, tandis que l’attribut accept définit les types MIME qui seront acceptés pour le traitement, soit local en JavaScript, soit côté serveur après envoi (upload) des fichiers. Cette précision ne constitue qu’une indication pour le navigateur – s’il la reconnaît – et n’est pas un filtre absolu de sécurité. Exemple 1 :     <input type="file" name="monfichier"> Pour l’envoi de fichiers au serveur, le formulaire doit comporter l’attribut enctype="multipart/form‐data" qui autorise l’envoi de plusieurs « pièces » de données binaires. Exemple 2 : <!DOCTYPE html> <html lang="fr"> <head> <title>Envoi de fichiers</title> <meta charset="UTF‐8"> </head> 15.5.1 <input> et ses variantes E. NFAOUI ([email protected])    100
  • 101.
    15.5.1 <input> et ses variantes <body> <form method="post" action="" enctype="multipart/form‐data"> <input type="file"  name="mesfichiers[]" accept="image/jpeg,image/png,image/gif" multiple> <input type="submit" value="Envoi"> </form> </body> </html> Camera API et périphériques mobiles : Sur les bons navigateurs mobiles, appeler un champ d’entrée file e type image provoque un appel aux applications pouvant produire une image, notamment la galerie de photos ou l’appareil photo intégré. Exemple : <input type="file" accept="image/*" > <input type="file" accept="video/*;capture=camcorder" > <input type="file" accept="audio/*;capture=microphone" > E. NFAOUI ([email protected])    101
  • 102.
    15.5.1 <input> et ses variantes Un élément sans attribut type ou avec une valeur inconnue est considéré par défautcomme <input type="text">.  Dans tous les cas de figure, l’attribut value détermine la valeur du champ transmise à la validation du formulaire, et l’attribut name son nom afin de retrouver quel champ correspond à quelle valeur lors du traitement des données après leur envoi via HTTP. Il est absolument obligatoire de vérifier et de valider les données envoyées du côté du serveur avant de les utiliser. Un utilisateur malintentionné pourrait introduire des valeurs non souhaitées, avec une syntaxe provoquant un comportement erratique des scripts ou des requêtes sur une base de données. Aucune contrainte définie en JavaScript côté client n’est fiable, puisqu’il est possible de la désactiver purement et simplement. E. NFAOUI ([email protected])    102
  • 103.
    15.5.2 Eléments <label>, <output> et <textarea> <label> Attribut : for Étiquette Associe une étiquetteà un champ de formulaire, où l’attribut for se rapportera à l’attribut id du champ en question. L’élément <label> est utile pour aider à la compréhension du formulaire et accroît l’accessibilité. <label for="nom">Votre nom</label> <input id="nom" name="nom_utilisateur"> <output> Attributs : name, for, form L’élément <output> est voué à recueillir le résultat d’un calcul. Celui‐ci peut être dynamique en JavaScript ou généré au préalable dans le code HTML par le serveur. L’attribut form définit à quel formulaire se rapporte cette sortie (si <output> est placé en dehors de <form>). L’attribut for reçoit une liste d’id, séparés par des espaces, des éléments entrant en jeu pour le calcul. <textarea> Une entrée de texte multiligne n’est pas possible avec <input type="text">, mais elle l’est avec <textarea>. Cette zone de dimensions variables, dont le contenu est situé entre la balise ouvrante <textarea> et la balise fermante </textarea>, est éditable. L’attribut rows précise le nombre de lignes de texte supposées affichées par défaut par le navigateur (ignoré si un style est présent). L’attribut cols précise le nombre de colonnes. L’attribut wrap accepte les valeurs hard (insertion de retours à la ligne dans la valeur soumise pour ne pas excéder la valeur de cols) et soft (pas de retour à la ligne).
  • 104.
    < select> Attribut : multiple Liste de choix Renferme unesérie d’options qui seront présentées à l’utilisateur dans une liste déroulante. Ne peut contenir directement que des éléments <optgroup> ou <option> . <select name="fruits"> <option>Fruits du marché</option> <option>Fruits exotiques</option> <option>Fruits avariés</option> </select> <select name="civilite"> <option value="Mlle">Mademoiselle</option> <option value="Mme">Madame</option> <option value="M">Monsieur</option> </select> <option> Attributs : label, value, selected, disabled Option individuelle de liste de choix Choix offert dans une liste <select> (ou <optgroup> ) ou <datalist>. L’attribut label est l’étiquette présentée à l’utilisateur, et l’attribut value porte la valeur transmise à la soumission du formulaire. 15.5.3 Elément <select>
  • 105.
    <optgroup> Attributs : label, disabled Groupe d’options Regroupe des options <option>sous une même étiquette définie par l’attribut  obligatoire label. Exemple : <select name="plat"> <optgroup label ="Spécialités marocaines"> <option value="tanjia">Tanjia aux olives</option> <option value="tajine">Tajine aux légumes </option> <option value="Couscous">Couscous beldi</option> </optgroup> <optgroup label ="Spécialités alsaciennes"> <option value="bretzel">Bretzel</option> <option value="flammekueche">Tarte flambée</option> </optgroup> </select> 15.5.3 Elément <select> E. NFAOUI ([email protected])    105
  • 106.
    15.5.4 Elément <button> <button> L’élément <button>possède plusieurs usages qui se conforment exactement aux types éponymes de l’élément <input> décrits précédemment, selon la valeur de son attribut type qui pourra prendre les valeurs button, submit et reset. Cependant, la valeur texte n’est plus déterminée par un attribut value, mais par le contenu intrinsèque de cet élément. <button type="button">OK</button> <button type="submit">Valider</button> <button type="reset">Réinitialiser</button> E. NFAOUI ([email protected])    106
  • 107.
    <progress> Attributs : value, max L’élément <progress>représente une barre de progression, telle qu’on peut en trouver dans les interfaces graphiques usuelles, c’est‐à‐dire indiquant l’avancement d’une tâche. L’intérêt de cet élément est surtout d’en profiter avec un script dynamique qui met à jour son état. Celui‐ci dépend d’une valeur numérique symbolisant la progression d’un téléchargement, d’un calcul lourd, ou d’un appel Ajax quelconque. <progress id="indicateur" value="50" max="100"></progress> 15.5.5 Elément <progress> E. NFAOUI ([email protected])    107
  • 108.
    15.5.5 Elément <datalist> <datalist> Liste de suggestions Regroupe unensemble de zéro ou plusieurs éléments <option> qui représentent des choix prédéfinis pour d’autres contrôles d’entrée, par exemple un champ de texte ou de recherche, y faisant référence grâce à l’attribut list . Pour cela, l’élément <datalist> est utilisé en complément. Celui‐ci stocke des valeurs différentes à l’aide de différents éléments <option> auxquels on donne une valeur grâce à l’attribut value . <input type="text" list="etats" name="etat"> <datalist id="etats"> <option value="france">France</option> <option value="suisse">Suisse</option> <option value="canada">Canada</option> <!‐‐ ... et ainsi de suite ... ‐‐> </datalist> E. NFAOUI ([email protected])    108
  • 109.
    <meter> Attributs : min, max, low, high, optimum, value Jauge Représente une jauge, reflétant un état mesuré, avec un intervalle connu (un minimum min et un maximum max, et en option des valeurs basses low, haute high et optimale optimum). Exemple: <p>Température du corps : <meter min="35" max="43" value="37.5">37.5°C</meter> </p> <p>Occupation du disque dur : <meter low="0" high="400" max="500" value="450" optimum="250">450 Mo  </meter>  </p> <p>Score des votes : <meter low="7" high="8" max="10" value="9">9/10</meter> </p>  15.5.5 Elément <meter> E. NFAOUI ([email protected])    109
  • 110.
    15.5.5 Elément <keygen> <keygen> Attributs : challenge, keytype L’élément <keygen>est un contrôle générant pour un formulaire une paire de clés cryptées, publique et privée de type keytype (par exemple, rsa). La clé publique est envoyée au serveur, tandis que la clé privée est ajoutée au stockage local des clés de sécurité. <form action="keygen.php" method="post"> <p> <label for="login">Login</label> : <input type="text" name="login" id="login"> </p> <p> <label for="crypt">Cryptage</label> : <keygen name="crypt" id="crypt"> </p> <p> <input type="submit" value="OK"> </p> </form> E. NFAOUI ([email protected])    110
  • 111.
    15.6  Attributs communs pour les éléments de  formulaire Les champs (éléments)de formulaire possèdent plusieurs attributs en commun. Le tableau ci-dessous présente quelques-uns. Attribut Rôle name Nom du champ pour la validation Permet d’affecter un nom à l’élément d’entrée, pour la réception côté serveur  dans les valeurs GET/POST, voire la manipulation avec JavaScript. Ne pas  confondre avec id.  <label for="pr">Prénom</label> <input name="prenom" type="text" id="pr"> disabled Désactivation Désactive le contrôle de l’élément (grisé). autocomplete Autocomplétion Active ( on ) ou désactive ( off ) l’autocomplétion. readonly Lecture seule Avec la présence de cet attribut, la valeur ne peut être modifiée par l’utilisateur.
  • 112.
    required Champ requis Le champdoit être complété par l’utilisateur pour permettre la validation du formulaire. pattern Masque de saisie Spécifie quelle forme doit prendre la valeur entrée pour être valide. Il est associé aux champs de texte pour tester leur valeur grâce à une expression régulière. Les valeurs incorrectes bloquent la validation du formulaire. Du point de vue sécuritaire, cet attribut ne remplace pas le rôle crucial d’une vérification côté serveur après soumission du formulaire. Remarques: • Pour plus de détails sur la syntaxe des patterns, se référer aux expressions régulières. • Le site http://html5pattern.com/ propose une collection de modèles pour l’attribut pattern. Exemple : <!‐‐ On autorise la saisie de caractères alphanumériques ‐‐> <input type="text" name="login" pattern="[a‐z0‐9]+" > 15.6  Attributs communs pour les éléments de  formulaire E. NFAOUI ([email protected])    112
  • 113.
    placeholder L’attribut placeholderpermet l’affichage d’un texte indicatif dans un champ (exemple de saisie), qui s’efface lorsque l’utilisateur obtient le focus (en cliquant ou naviguant au clavier). Le texte a pour vocation de présenter des exemples de ce que l’utilisateur peut entrer dans le champ. <input placeholder="Ville, pays, code..." name="geo"> multiple Valeurs multiples Permet la sélection ou l’entrée de plusieurs valeurs pour les types email et file et pour l’élément <select>. autofocus Donne le focus (par exemple, le contrôle au clavier/curseur) à l’élément dès le chargement de la page. 15.6  Attributs communs pour les éléments de  formulaire E. NFAOUI ([email protected])    113
  • 114.
    15.7 Validation des données Nous avons vudans les pages précédentes que certains types de champs <input> induisent une pré‐ validation des informations entrées par l’utilisateur avant un envoi direct au serveur. Par exemple pour <input type="email">, la syntaxe de l’adresse e‐mail sera vérifiée au préalable. Gain de temps pour l’utilisateur qui sera informé rapidement d’une erreur de saisie, gain de temps pour le serveur qui n’aura pas besoin d’afficher à nouveau le formulaire, et gain de temps pour le développeur qui n’aura pas besoin d’insérer du code JavaScript pour améliorer l’utilisabilité de sa page. L’attribut novalidate est destiné à une phase de transition pour les navigateurs implémentant les validations préalables (par exemple pour la syntaxe d’une adresse e‐mail). En effet, certaines implémentations sont complètes et d’autres partielles. Il se peut que la soumission du formulaire soit empêchée par la non‐validation d’un champ, sans que l’utilisateur ne sache réellement pourquoi. La présence de novalidate contourne cette condition et s’en remet au serveur pour valider puis informer. <!‐‐ Formulaire sans validation ‐‐> <form method="post" action="inscription.php" novalidate > <label for="mail">Votre adresse e‐mail</label> <input id="mail" type="email" name="adressemail"> <input type="submit" value="Valider"> </form> E. NFAOUI ([email protected])    114
  • 115.
    <menu> Attributs : type, label Définit unmenu contextuel ( type="context" ) ou une barre d’outils ( type="toolbar" ), regroupant des commandes <menuitem> , principalement à destination des applications web. L’attribut label permet d’attribuer une désignation (un intitulé) au menu. <menuitem> Attributs: type,label, icon, di sabled, checked. Élément de menu, déclenchant habituellement un script via l’attribut onclick . L’attribut type peut prendre la valeur command (par défaut), radio et checkbox. 16. Menus et commandes E. NFAOUI ([email protected])    115
  • 116.
    Exemple 1: <body>   <menu type="toolbar"> <li> <menu label="Fichier"> <menuitem onclick="save()" label="Sauver"> <menuitem onclick="quit()" label="Quitter"> </menu> </li> <li> <menu label="Edition"> <menuitemonclick="copy()" label="Copier"> <menuitem onclick="paste()" label="Coller"> </menu> </li> </menu>   </body> 16. Menus et commandes E. NFAOUI ([email protected])    116
  • 117.
    Exemple 2: Dans l’exemple ci‐dessous, le menu contextuel est lié à un autre élément HTML via l’attribut contextmenu. <img contextmenu= " menuctx "  > <menu type= " menuctx "  > <menuitem label= " Copier"  onclick="copier()"> <menuitem label= "Supprimer"  onclick="supprimer()"> </menu> 16. Menus et commandes E. NFAOUI ([email protected])    117
  • 118.
    16. Menus et commandes <command> Attributs : checked,  disabled,  icon,  label, type,   radiogroup Cet élément incarneune commande individuelle d’un <menu> . Il peut s’agir d’un bouton classique, d’une case à cocher ou d’un bouton radio. Une commande déclenche une action de script, la plupart du temps grâce à un des événements DOM que l’on peut y associer, tels que onclick ou onchange . L’attribut type précise le type de la commande (checkbox, radio ou command (valeur par défaut). L’attribut icon précise l’adresse d’une image servant d’icône pour cette commande. E. NFAOUI ([email protected])    118
  • 119.
    Exemple 3: Une barre d’outils est associé à une zone d’édition <textarea> <textarea contextmenu="miseenforme"></textarea> <menu type="toolbar" id="miseenforme"> <command type="radio" radiogroup="alignement" label="Gauche" icon="icones/g.png"  onClick="alignement('gauche')"  checked> <command type="radio" radiogroup="alignement" label="Centré" icon="icones/c.png"  onClick="alignement('centre')" > <command type="radio" radiogroup="alignement" label="Droite" icon="icones/d.png"  onClick="alignement('droite')" >     <command type="checkbox" label="Gras" icon="icones/gras.png" onClick="gras()" checked>     <command type="checkbox" label="Italique" icon="icones/italique.png" onClick="italique()" >     <command type="checkbox" label="Souligné" icon="icones/souligne.png" onClick="souligne()" > </menu> 16. Menus et commandes
  • 120.
    17. Attributs HTML globaux Les éléments HTML disposent : D’attributs spécifiques,quelques‐uns ont été déjà présentés dans la description individuelle de chaque élément. Par exemple, src indique l’adresse du fichier image nécessaire pour <img>. Une balise peut aussi ne pas disposer d’attributs spécifiques, c’est entre autres le cas de <div>, <span> ou <em>. D’attributs globaux, qui sont communs à tous les éléments, mais qui peuvent aussi être sans effet sur certains d’entre eux. E. NFAOUI ([email protected])    120
  • 121.
    17. Attributs HTML globaux Le tableau ci‐dessous présente une liste non exhaustive d’attributs globaux. Attribut Rôle idIdentifiant unique. Attribue un identifiant unique à l’élément HTML pour le désigner tant  avec CSS qu’avec JavaScript. ‐ En CSS: #id désigne la référence de l’élément. ‐ En JavaScript:  document.getElementById("id") retourne une référence vers l’élément. contextmenu Menu contextuel. Lie un menu contextuel déclaré par <menu> grâce à son id. Voir l’élément <menu> étudié précédemment. spellcheck Les navigateurs web récents comportent une correction orthographique intégrée, signalant de potentielles fautes. Cette fonctionnalité bien utile dans les champs de formulaires pour éviter les coquilles peut être activée ou désactivée à la demande grâce à l’attribut spellcheck. La désactivation peut présenter un intérêt pour des champs qui ne sont pas destinés à recevoir des portions de texte dans la langue de l’utilisateur, par exemple une zone de texte pour l’édition de code HTML ou d’un autre langage. Exemple d’usage de l’attribut spellcheck <textarea spellcheck="false" ></textarea> <input type="text" spellcheck="true" > E. NFAOUI ([email protected])    121
  • 122.
    Attribut Rôle accesskey Touche d’accès rapide. l’attributaccesskey associe un raccourci clavier (par combinaison de touches variées selon  le système) à un élément. Exemple : <nav> <p> <a title="Retour à la page d’accueil" accesskey="A" href="/">Accueil</a> <a title="Page de contact" accesskey="C" href="/contact/"> Contactez‐nous</a> </p> </nav> title Titre. Fournit des informations (de conseil ou d’indication) à propos d’un élément, souvent  affichées par le navigateur sous forme d’info‐bulle lorsque le curseur survole cet élément  et représente un agrément non négligeable pour l’accessibilité des pages web. E. NFAOUI ([email protected])    122 17. Attributs HTML globaux
  • 123.
    Attribut Rôle contenteditable Contenu éditable dynamiquement. L’élément devient modifiable dansle navigateur. Comme son nom le suggère, contenteditable correspond à la capacité de modifier le  contenu de l’élément qui porte cet attribut booléen. Exemple : un élément article éditable <article id="monarticle" contenteditable="true" >Je suis modifiable</article> Appliqué à tout élément, principalement de type conteneur (div , p , span , section ,  article...), il transforme le navigateur en éditeur web. Il appartient ensuite au langage de  script de procéder à l’enregistrement des modifications en récupérant le con‐ tenu de  l’élément, notamment avec sa propriété innerHTML . Valeur HTML de l’élément édité : Les procédures pour sauvegarder ce contenu peuvent être développées en Ajax  pour envoyer la valeur HTML au serveur et la stocker dans une base de données, ou  grâce aux API de stockage local telles que Web Storage et Web SQL Database. 17. Attributs HTML globaux
  • 124.
    18. Fonctionnalités obsolètes Certains éléments et attributs présents dans HTML4 et dans les précédentes versions sont désormais  obsolètes, car remplacés avantageusement par les feuilles de style CSS ou par d’autres fonctionnalités  mieux pensées. Voici une liste non exhaustive: - attribut border sur les éléments img, table, object : CSS doit être utilisé en remplacement ; - bgcolor sur les elements:  body , table td th , tr; - background sur les elements: body , table , thead , tbody , tfoot , tr , td , th; - attribut language sur l’élément script : il doit être omis ou remplacé par l’attribut type avec la  valeur text/javascript ; - attribut type sur ul, li; - width sur pre , table; - height, nowrap sur td , th; - cellspacing , cellpadding , frame , rules sur table - <acronym> , <applet> , <bgsound>,<basefont> , <big> , <center> , <dir> , <font> , <frame> , <frameset> ,  <isindex> , <noframes> , <strike> , <tt> , <xmp> : Ces éléments sont entièrement obsolètes et ne doivent  plus être utilisés. E. NFAOUI ([email protected])    124
  • 125.
    19. Validation des documents HTML Tous les documentsHTML 5 peuvent être validés grâce à un analyseur syntaxique en ligne. Il est très fortement recommandé de procéder à une vérification systématique pour garantir un code de qualité, interprété au mieux sur les différents navigateurs. C’est un moyen idéal de se prémunir d’erreurs de syntaxe, d’imbrication de balises ou encore d’oubli de balises fermantes. Validateurs HTML Validateur officiel du W3C : http://validator.w3.org/ Validateur HTML 5 expérimental : http://HTML5.validator.nu/ Validateur CSS du W3C: http://jigsaw.w3.org/css‐validator/ E. NFAOUI ([email protected])    125
  • 126.
  • 127.
  • 128.
    HTTP, un protocolepour les systèmes d’informations distribués, collaboratifs et hypermédias, a conduit, avec les URI, HTML et les premiers navigateurs à la mise en place du World Wide Web. Géré par le W3C (World Wide Web Consortium) et l’IETF (Internet Engineering Task Force), HTTP est le résultat de plusieurs RFC (Requests For Comment), notamment la RFC 2616, qui définit http 1.1. Il repose sur des requêtes et des réponses échangées entre un client et un serveur. Fonctionnement (très simple en HTTP/1.0) Connexion Envoi d’une requête HTTP, par exemple demande d’un document (méthode GET) Réception d’une réponse HTTP déconnexion 1. Introduction E. NFAOUI ([email protected])    128
  • 129.
    2.  Requêtes et réponses Un client envoieune requête à un serveur afin d’obtenir une réponse (voir figure ci‐dessous). Les messages utilisés pour ces échanges sont formés d’une enveloppe et d’un corps également appelé document ou représentation. Figure 3. Requête et réponse http E. NFAOUI ([email protected])    129
  • 130.
    2.  Requêtes et réponses Voici, par exemple, un type de requête envoyée à un serveur en utilisant cURL (http://curl.haxx.se/)  comme client web (client HTTP): D:>curl http://www.google.co.ma/index.html  ‐v * About to connect() to www.google.co.ma port 80 (#0) *   Trying 173.194.45.95... * connected * Connected to www.google.co.ma (173.194.45.95) port 80 (#0) > GET /index.html HTTP/1.1 > User‐Agent: curl/7.28.0 > Host: www.google.co.ma Cette requête contient plusieurs informations envoyées par le client : la méthode de HTTP : GET ; le chemin : /index.html ; Le protocole et sa version: HTTP/1.1; plusieurs autres en‐têtes de requête comme User‐Agent et Host. Vous remarquez que la requête n’a pas de corps (un GET n’a jamais de corps). E. NFAOUI ([email protected])    130
  • 131.
    2.  Requêtes et réponses Remarque: Nous utilisons icicURL (http://curl.haxx.se/) comme client, mais nous aurions pu également utiliser Firefox ou n’importe quel autre client web. CURL est un outil en ligne de commande permettant de transférer des fichiers par HTTP, FTP, Gopher, SFTP, FTPS, SCP, TFTP et bien d’autres protocoles encore en utilisant une URL. Avec lui, vous pouvez envoyer des commandes HTTP, modifier les en‐têtes HTTP, etc. : c’est donc un outil parfait pour simuler les actions d’un utilisateur dans un navigateur web. E. NFAOUI ([email protected])    131
  • 132.
    2.  Requêtes et réponses En réponse, le serveur renverra le message suivant : < HTTP/1.1 200 OK < Date: Sun, 04 Oct 2015 07:35:25 GMT < Content‐Type: text/html; charset=ISO‐8859‐1 < Server: gws < …… < <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="fr‐MA"> <head> ……………….. Cette réponse est formée des parties suivantes : Un code de réponse. Ici, ce code est 200 OK. Plusieurs en‐têtes de réponse. Notamment Date, Server, Content‐Type. Ici, le type du contenu est  text/html, mais il pourrait s’agir de n’importe quel format comme du XML (application/xml) ou une  image (image/jpeg). Un corps ou représentation. Ici, il s’agit du contenu de la page web renvoyée (dont nous n’avons  reproduit qu’un fragment). E. NFAOUI ([email protected])    132
  • 133.
  • 134.
    3.  Méthodes de HTTP Le Web estformé de ressources bien identifiées, reliées ensemble et auxquelles accéder au moyen de requêtes HTTP simples. Les requêtes principales de HTTP sont de type GET, POST, PUT et DELETE. Ces types sont appelés verbes ou méthodes. HTTP définit quatre autres verbes plus rarement utilisés, HEAD, TRACE, OPTIONS et CONNECT. GET GET est une méthode de lecture demandant une représentation d’une ressource. Elle doit être implémentée de sorte à ne pas modifier l’état de la ressource. En outre, GET doit être idempotente, ce qui signifie qu’elle doit laisser la ressource dans le même état, quel que soit le nombre de fois où elle est appelée. Ces deux caractéristiques garantissent une plus grande stabilité : si un client n’obtient pas de réponse (à cause d’un problème réseau, par exemple), il peut renouveler sa requête et s’attendre à la même réponse que celle qu’il aurait obtenue initialement, sans corrompre l’état de la ressource sur le serveur. POST À partir d’une représentation texte, XML, etc., POST crée une nouvelle ressource subordonnée à une ressource principale identifiée par l’URI demandée. Des exemples d’utilisation de POST sont l’ajout d’un message à un fichier journal, d’un commentaire à un blog, d’un livre à une liste d’ouvrages, etc. POST modifie donc l’état de la ressource et n’est pas idempotente (envoyer deux fois la même requête produit deux nouvelles ressources subordonnées). Si une ressource a été créée sur le serveur d’origine, le code de la réponse devrait être 201 (Created). E. NFAOUI ([email protected])    134
  • 135.
    3.  Méthodes de HTTP PUT Une requête PUTest conçue pour modifier l’état de la ressource stockée à une certaine URI. Si l’URI de la requête fait référence à une ressource inexistante, celle‐ci sera créée avec cette URI. PUT modifie donc l’état de la ressource, mais elle est idempotente : même si l’on envoie plusieurs fois la même requête PUT, l’état de la ressource finale restera inchangé. DELETE Une requête DELETE supprime une ressource. La réponse à DELETE peut être un message d’état dans le corps de la réponse ou aucun code du tout. DELETE est idempotente, mais elle modifie évidemment l’état de la ressource. Autres Méthodes Comme on l’a évoqué, il existe d’autres actions HTTP, plus rarement employées : HEAD, TRACE, OPTIONS, CONNECT. E. NFAOUI ([email protected])    135
  • 136.
    4.  Négociation du contenu La négociation ducontenu est définie comme "le fait de choisir la meilleure représentation pour une réponse donnée lorsque plusieurs représentations sont disponibles". Les besoins, les souhaits et les capacités des clients varient : par exemple, la meilleure représentation pour l’utilisateur d’un téléphone portable peut, en effet, ne pas être la plus adaptée à un lecteur de flux RSS. La négociation du contenu utilise entre autres les en‐têtes HTTP Accept, Accept‐Charset, Accept‐ Encoding, Accept‐Language et User‐Agent. Pour obtenir, par exemple, la représentation CSV de la liste des livres sur HTML publiés par Apress, l’application cliente (l’agent utilisateur) demandera http://www.apress.com/book/catalog/html avec un en‐tête Accept initialisé à text/csv. Vous pouvez aussi imaginer que, selon la valeur de l’en‐tête Accept‐Language, le contenu de ce document CSV pourrait être traduit par le serveur dans la langue correspondante. E. NFAOUI ([email protected])    136
  • 137.
    5.  Types de contenu HTTP utilise des types de supports Internet (initialement appelés types MIME) dans les en‐têtes Content‐ Type et Accept afin de permettre un typage des données et une négociation du contenu ouverts et  extensibles. Les types de support Internet sont divisés en cinq catégories : text, image, audio, video et  application. Ces types sont à leur tour divisés en sous‐types (text/plain, text/xml, text/xhtml, etc.). Voici quelques‐uns des plus utilisés : text/html.HTML est utilisé par l’infrastructure d’information du World Wide Web depuis 1990 et sa spécification a été décrite dans plusieurs documents informels. La définition complète dy type de support text/html se trouve dans la RFC 2854. text/plain. Il s’agit du type de contenu par défaut car il est utilisé pour les messages textuels simples. image/gif, image/jpeg, image/png. Le type de support image exige la présence d’un dispositif d’affichage (un écran ou une imprimante graphique, par exemple) permettant de visualiser l’information. text/xml, application/xml. XML 1.0 a été publié par le W3C en février 1998. La définition complète de ce support est décrite dans la RFC 3023. application/json. JSON (JavaScript Object Notation) est un format textuel léger pour l’échange de données. Il est indépendant des langages de programmation. E. NFAOUI ([email protected])    137
  • 138.
    6.  Codes d’état Un code HTTPest associé à chaque réponse. La spécification définit environ 60 codes d’états ; l’élément Status‐Code est un entier de trois chiffres qui décrit le contexte d’une réponse et qui est intégré dans l’enveloppe de celle‐ci. Le premier chiffre indique l’une des cinq classes de réponses possibles : 1xx : Information. La requête a été reçue et le traitement se poursuit. 2xx : Succès. L’action a bien été reçue, comprise et acceptée. 3xx : Redirection. Une autre action est requise pour que la requête s’effectue. 4xx : Erreur du client. La requête contient des erreurs de syntaxe ou ne peut pas être exécutée. 5xx : Erreur du serveur. Le serveur n’a pas réussi à exécuter une requête pourtant apparemment  valide. E. NFAOUI ([email protected])    138
  • 139.
  • 140.
  • 141.
    Annexe 2: Encodage des caractères Le codage descaractères est présent depuis les débuts de l’informatique. Il définit la manière de stocker en binaire – le seul langage compris par les processeurs – les caractères typographiques humains. Aux débuts du règne des puces, chaque caractère était stocké sur 7 bits grâce au code ASCII , ce qui permettait, avec une économie de stockage, jusqu’à 127 possibilités pour numéroter les caractères (lettres de l’alphabet en minuscules, majuscules, chiffres, signes de ponctuation, signes mathématiques). Cela convenait parfaitement à un usage limité aux États‐Unis. Il a fallu ensuite étendre l’ASCII sur 8 bits et créer de nouvelles pages de caractères, comprenant notamment les caractères accentués internationaux. En Europe occidentale, cette norme fut labellisée ISO‐8859‐1 aussi connue sous le nom Latin‐1 . L’ISO‐8859‐15 (Latin‐9) en est une mise à jour apportant quelques nouveaux caractères. Les Asiatiques ont introduit leurs propres jeux de caractères, et ainsi de suite, avec pour conséquence des documents illisibles à l’international selon le code utilisé pour interpréter les caractères et l’exactitude de la correspondance. L’ UTF‐8 (UCS Transformation Format 8 bits) permet de résoudre en partie les difficultés rencontrées, avec un codage exploitant entre 1 et 4 octets par caractère pour étendre le nombre de combinaisons possibles. Il fait partie des normes définies par le consortium Unicode et présente l’avantage d’être relativement compatible avec les logiciels encore prévus pour traiter les caractères sur un octet unique. L’Unicode a pour objectif de définir un identifiant unique pour les caractères de tous les systèmes d’écriture, compréhensible quelle que soit la plate‐forme informatique ou le logiciel. L’Internet Engineering Task Force (IETF) et le W3C approuvent le choix de l’UTF‐8 et prescrivent son usage pour tout protocole échangeant du texte sur Internet, dont évidemment HTML et HTTP. E. NFAOUI ([email protected])    141
  • 142.
    Choisir l’encodage despages et bien comprendre son implication dans l’interprétation est donc essentiel. Il faudra toujours le choisir en adéquation avec la chaîne des programmes et langages mis en jeu dans la génération et la livraison d’une page. Chaque maillon (système de fichiers, serveur, base de données, langage interprété) se doit de savoir dans quel format sont stockées (ou reçues) les données, puis dans quel format celles‐ci sont envoyées au maillon suivant, jusqu’à interprétation finale par le navigateur. Les entités Les entités HTML, ou entités de caractères, sont des codes SGML permettant d’afficher des caractères de façon indépendante par rapport à l’encodage principal du document. Elles ont longtemps servi pour des symboles particuliers, ou souvent à tort pour des caractères accentués que l’on maîtrise plus efficacement avec l’encodage UTF‐8 désormais. Des tables complètes se retrouvent en ligne, car il existe de nombreuses combinaisons possibles. On débute toujours le code par le caractère « & », et on le termine par « ; ». Le code situé entre ces deux caractères peut être rédigé avec du texte dans le jeu standard des 252 entités de base ( &agrave; = à, &copy; = signe copyright) ou une valeur numérique ( &#169; = signe copyright) ou encore en hexadécimal ( &#x266B; = double croche en musique). Annexe 2: Encodage des caractères E. NFAOUI ([email protected])    142
  • 143.
    Annexe 3: Le type MIME Le format MIME(Multipurpose Internet Mail Extensions) est à l’origine un standard qui ajoute des codages supplémentaires à l’ASCII pour l’envoi des e‐mails et le support de données non textuelles, c’est‐ à‐dire de fichiers binaires. Les types MIME sont aujourd’hui également utilisés en HTTP pour affiner le dialogue entre le navigateur et le serveur web, et préciser quels sont les types de fichiers échangés. Une déclaration MIME est constituée de deux parties (normalisées) : un type et un sous‐type, séparés par un caractère slash. Ceux débutant par x‐ ne sont pas standardisés, et les préfixes vnd. font référence à une propriété du vendeur. Il incombe en général – sauf indication contraire – au serveur web de déterminer le type du fichier hébergé, la plupart du temps grâce à son extension, pour l’indiquer au navigateur dans les en‐têtes HTTP en préambule du téléchargement du fichier. Celui‐ci pourra donc anticiper l’usage qui doit en être fait : interpréter son contenu et l’afficher (pages web, textes) ou le proposer au téléchargement (fichiers binaires). E. NFAOUI ([email protected])    143
  • 144.
  • 145.
  • 146.
    Bibliographie ‐ HTML 5‐ Une référence pour le développeur web ‐ . Rodolphe Rimelé. Edition: Eyrolles, 2013. ISBN: 9782212136388 ‐ HTML5 et CSS3 : Cours et exercices corrigés. Jean Engels. Edition: Eyrolles, 2012. ISBN: 9782212134001 ‐ Mémento HTML5. Rodolphe Rimelé. Edition: Eyrolles, 2014. ISBN: 9782212140309 ‐ Premiers pas en CSS3 et HTML5. Francis Draillard. Edition: Eyrolles, 2013. ISBN: 9782212136890 ‐ Tout sur HTML5 et CSS3. Jean‐Marie Cocheteau and Laurent Khouri. Edition: Dunod, 2012. ISBN: 9782100578160