Syntaxe HTML
Attention :
HTML5 (que nous utiliserons dans le cours) permet une syntaxe plus laxiste que d'autres formats de balisage pour les pages Web comme XHTML qui adoptent la syntaxe plus stricte XML. En HTML5, par exemple, les balises peuvent être écrites en majuscule ce qui n'est pas le cas en XHTML.
Toutefois, nous privilégierons dans le SCI6005 une syntaxe stricte même pour HTML5. Il est en effet important d'acquérir de bonnes habitudes; ainsi, si un jour vous avez à faire du HTML avec une version plus stricte, vous serez déjà habitué(e) à le faire. Dans les notes de cours, un astérisque (*) indiquera les éléments de syntaxe plus stricts.
Balises d'ouverture et de fermeture
HTML étant un format de document structuré il en possède les caractéristiques. Il permet ainsi le balisage descriptif logique. Voici un exemple d'un contenu balisé en HTML :
<title>Page d'accueil de la BLSH</title>
Comme illustré dans l'exemple ci-dessus, les règles de base concernant sa syntaxe sont les suivantes :
À une exception près décrite par la suite, le contenu est encadré par un élément HTML qui en indique la nature. Dans l'exemple ci-dessus, on comprend ainsi que Page d'accueil de la BLSH est un titre.
L'élément HTML est constitué d'une balise d'ouverture où le nom de l'élément est en minuscule* et encadré par
<
et>
.La balise de fermeture de l'élément HTML se distingue de la balise d'ouverture par l'ajout d'une barre oblique
/
devant le nom de l'élément.
Cependant, certains éléments HTML n'encadrent pas de contenu comme l'exemple ci-dessous :
Maître Corbeau sur un arbre perché<br/>
L'élément br
permet d'insérer dans un texte un retour de ligne forcé. De par sa nature, il n'encadre pas de contenu textuel comme l'exemple précédent. C'est ce que l'on appelle un élément vide. Il y en a d'autres que nous verrons plus tard comme l'élément img
pour insérer une image, hr
pour afficher une ligne horizontale ou meta
pour préciser des métadonnées. Il y a trois syntaxes possibles pour les éléments vides :
On peut juxtaposer la balise d'ouverture et de fermeture* :
<br></br>
On peut contracter en une seule balise la balise d'ouverte et de fermeture* :
<br/>
On peut utiliser uniquement la balise d'ouverture :
<br>
Par souci de retenir une syntaxe stricte, la troisième option n'est pas recommandée. La deuxième option a l'avantage de demander moins d'effort à la saisie comme elle compte un plus petit nombre de caractères.
Imbrication des éléments HTML
Il est possible d'imbriquer des éléments HTML comme, par exemple :
<p>Cet événement marqua le début de la <strong>Première guerre mondiale</strong> qui allait durer plus de quatre ans.</p>
Remarquez bien que l'élément strong
est complètement inclus à l'intérieur de l'élément p
, ce qui est une condition nécessaire pour que cela soit valide. Un chevauchement des éléments comme suit n'est pas valide : <p> ... <strong> ... </p> ... </strong>
.
Toutefois, un élément ne peut pas inclure n'importe quel autre élément. L'exemple ci-dessous n'est pas valide :
<strong>Cet événement marqua le début de la <p>Première guerre mondiale</p> qui allait durer plus de quatre ans.</strong>
Il faut respecter la structure logique définie par HTML. Il n'y a pas à s'inquiéter, avec un peu de pratique, on vient à savoir ce que peut ou non inclure un élément. De plus, comme nous le verrons plus tard, il existe des sites permettant de valider le code HTML qui au besoin nous indiqueront les erreurs commises.
Attributs
Certains éléments peuvent avoir des attributs (parfois obligatoires, d'autres fois facultatifs) à l'intérieur de leur balise d'ouverture, afin d'en préciser certaines caractéristiques. En voici un exemple :
<a href="http://www.w3c.org">Page d'accueil du W3C</a>
L'exemple correspond à un lien hypertextuel (élément a
). Pour un lien hypertextuel, il est nécessaire de préciser la cible du lien. Cela se fait à l'aide de l'attribut href
.
On indique ainsi, dans la balise d'ouverture, le nom de l'attribut en minuscule* à la suite du nom de l'élément. Le nom de l'attribut est suivi du signe égal = et, finalement, on précise entre guillemets* la valeur de l'attribut. Il est possible d'avoir plus d'un attribut dans une balise d'ouverture. En ce cas, on sépare chaque couple attribut-valeur par une espace comme dans l'exemple qui suit :
<meta name="author" content="John Smith" />
Cet exemple correspond à une métadonnée (élément meta
). Cet élément en fait est un élément vide comme l'indique à la fin de la balise d'ouverture la barre oblique. Une métadonnée possède deux caractéristiques (attributs) : (1) le type de métadonnées (name="author"
indique qu'il s'agit d'une métadonnée sur l'auteur de la page) et (2) la valeur de la métadonnée (content="John Smith"
précise que l'auteur est John Smith).
Traitement des espaces et de la casse
En XML et en XHTML, la casse (c'est-à-dire les lettres minuscules et majuscules) est prise en compte. On doit ainsi toujours mettre les noms des éléments et des attributs en minuscules. En HTML5, les éléments et les attributs peuvent être en majuscules ou en minuscules. Toutefois, il est conseillé de conserver la bonne pratique établie de XHTML de les garder en minuscules pour faciliter, au besoin, le passage à XHTML.
Les espaces, tabulations et sauts de ligne entre les éléments balisés sont ignorés par les navigateurs. L'exemple ci-dessous est ainsi tout à fait compréhensible pour le navigateur.
<html lang="fr-ca"><head><meta charset="utf-8" /><title>Module de formation continue</title></head><body><header><h1>Modules de formation continue</h1></header><section><article><p><strong>Responsable :</strong> John Smith</p><p><strong>Sujet :</strong> Macramé</p></article><article><p><strong>Responsable :</strong> Marie Poppins</p><p><strong>Sujet :</strong> L'art du biscuit</p></article></section><footer><p>Mise à jour le 13 novembre 2013</p></footer> </body></html>
Toutefois, les tabulations et sauts de ligne sont fort utiles pour faciliter la lecture aux humains! L'exemple ci-dessous correspond aux mêmes éléments HTML que le précédent, mais avec une structuration visuelle grâce aux retraits et sauts de ligne.
<html lang="fr-ca">
<head>
<meta charset="utf-8" />
<title>Module de formation continue</title>
</head>
<body>
<header><h1>Modules de formation continue</h1></header>
<section>
<article>
<p><strong>Responsable :</strong> John Smith</p>
<p><strong>Sujet :</strong> Macramé</p>
</article>
<article>
<p><strong>Responsable :</strong> Marie Poppins</p>
<p><strong>Sujet :</strong> L'art du biscuit</p>
</article>
</section>
<footer><p>Mise à jour le 13 novembre 2013</p></footer>
</body>
</html>