2004-03-04

Commentaires html

En html, il y a possibilité d'effectuer des commentaires dans le code d'une page à l'aide d'une syntaxe curieuse. On pense souvent que cette syntaxe est marquée par : <!-- pour le début de commentaire, et --> pour la fin. On peut appliquer cette idée quand on se contente de commentaires simples : <!-- commentaire --> et cela fonctionne correctement.

Une déclaration de commentaire commence par <!, suivi de plusieurs commentaires dont le délimiteur est -- (les deux tirets collés), se terminant enfin par >. Ce marqueur -- sert à la fois pour l'ouverture et la fermeture d'un commentaire.

Je vous propose de tester cela en réel : créez une page de test html que vous afficherez avec un navigateur Web basé sur Gecko (Firefox & co) et insérez ce bout de code :

<!-- -- -->
<p>Plop</p>
<!-- -- -->

Vous vous attendiez à voir écrit « Plop » ? Bah non. Le premier -- ouvre le commentaire, le deuxième le ferme et le troisième en ouvre un nouveau. Ce nouveau commentaire ne sera fermé qu'à l'apparition du prochain --, incluant ainsi le code <p>Plop</p>.

Voici un exemple un peu plus délicat :

<!-- -- -->
<p>Plop</p>
<p>C++ ou C--</p>

Dans cet exemple, c'est le -- de « C-- » qui ferme le deuxième commentaire, pouvant laisser le codeur de la page plus que perplexe en ne voyant rien s'afficher.

En programmation, on est souvent tenté de réutiliser le marqueur de commentaire pour effectuer des séparations dans le code. Par exemple en C :

/****************************************/

Ou en C++ :

/////////////////////////////////////////

Vous comprendrez à présent que c'est une chose à éviter en html. Utiliser des commentaires de ce style : <!--------------------------------------->  ...c'est jouer à la roulette russe avec son document, au risque de voir certaines parties de son code disparaitre.

Qu'en est-il du xhtml ? Là, heureusement, la règle est beaucoup plus stricte, ce qui permet d'éviter ces éventuels effets de bords du html. Si vous testez les exemples de code précedents dans un document desservi en vrai xhtml, c'est-à-dire avec le bon type mime (application/xhtml+xml) vous aurez... une erreur de syntaxe ! En effet, dans ce cas, il est interdit de placer un groupe de caractère « -- » n'importe où dans un commentaire.

En local sur votre disque dur, pour avoir un fichier analysé en application/xhtml+xml avec un moteur Gecko, utilisez l'extension « .xhtml » pour votre nom de fichier.

Maintenant, pourquoi vous ai-je demandé d'utiliser un navigateur Web basé sur Gecko ? Tout simplement parce que son analyse des commentaires est ce qui se fait de mieux à l'heure actuelle. Ainsi, avec Internet Explorer, vous verrez quand même le texte censé être commenté, IE se bornant à regarder ce qui se trouve entre <!-- et --> (bouh, c'est mal :-o).

Je terminerai sur une très bonne page qui m'a été donnée sur le forum de Geckozone et qui étudie ça en détail.