La dépréciation de l'élément menu en 1997 a obligé les codeurs de pages web à composer avec l'élément ul (liste non ordonnée) pour bâtir leurs menus de navigation.
Menu étant plus évocateur que ul, cette perte a été mal vécue par beaucoup et la promesse d'un élément nl (liste de navigation) pour la prochaine version du HTML semble aux premiers abords très excitante.

J'ai passé de longs mois sur le Hub à lire les discours de Laurent Denis (lui-même auteur d'un billet sur ce sujet) que je me permettrai de résumer ainsi : ne pas insérer dans le code ce qui relève du rôle du navigateur (styleswitcher, bouton pour l'impression, historique, recherche dans la page...).

Cette vision est pertinente et je veux l'élargir aux menus. Car dans le web vu comme une collection de documents (par opposition au web en tant que plateforme accueillant des applications), chaque page représente un document et on est en droit de se demander si le menu a effectivement sa place au sein de ce document. Dans une encyclopédie papier, le sommaire général de l'ouvrage n'est pas contenu dans chacun des articles.

C'est d'ailleurs le seul mérite que j'attribue à feu les cadres : en séparant le menu et le véritable corps en deux cadres distincts (le plus souvent pour de simples raisons de commodité), les webmestres créaient donc des pages HTML contenant uniquement le document.

Mon opinion à ce sujet semble rejoindre celle des rédacteurs du W3C car, en supprimant l'élément menu, ils n'ont pas désiré supprimer les menus en tant que tels (qui sont indispensables pour organiser clairement la navigation au sein d'un site) mais seulement les déplacer hors du corps du document.

En effet, l'élément link accompagné des attributs section et chapter et inclus non pas dans le corps du document mais dans son en-tête se révèle un parfait menu de navigation. Malheureusement, aucune des deux manières de le présenter au visiteur n'est satisfaisante.

Soit le navigateur le prend effectivement en charge et dessine le menu dans son interface, hors du corps du document. C'est la solution idéale mais à ma connaissance aucun navigateur n'est capable de gérer ces menus nativement.

Soit on représente le menu dans la page en insérant ce code dans la feuille de style :

head { display: block; }
link[rel="section"]:after { content: attr(title); }

Ceci fonctionne avec des navigateurs modernes mais le navigateur obsolète refuse d'interpréter ce sélecteur trop compliqué pour son pauvre moteur fatigué.

On peut regretter que le futur XHTML 2.0 fasse une si grande concession en réintroduisant à nouveau l'élément menu sous la forme d'une liste de navigation même si c'est toujours mieux que le flou dans lequel nous sommes actuellement, flou qui rend si difficile l'identification du menu dans une page.