Un document XHTML valide mais incorrect

Inspiré en partie par l’article Valider, c’est bien. Réfléchir, c’est mieux, cet article a pour but de résumer certaines limites du service de validation du W3C et d’expliquer pourquoi on peut avoir un OK du validateur sans être pour autant en accord avec tous les standards du web. Il me sert aussi de pense-bête.

Je vous propose d’étudier un document XHTML 1.1 valide mais qui viole certaines règles explicites et implicites de XHTML 1.1 ainsi qu’un grand nombre de principes liés aux standards du web : séparation de la structure et de la présentation, utilisation d’éléments sémantiques, souci d’accessibilité, etc. Pour le plaisir je l’ai agrémenté de gifs animés et affublé d’un look page perso des années 90, pour bien montrer que XHTML 1.1 n’est pas nécessairement synonyme de cutting-edge.

C’est l’occasion de rappeler une fois de plus qu’il ne faut pas s’arrêter à la validation et que les standards du web sont avant tout un ensemble de règles et de bonnes pratiques.

Les erreurs de ce document que le validateur ignore.

Erreurs liées au type MIME

Le type MIME (Multipurpose Internet Mail Extensions) du document est incorrect, ce qui permet de douter de sa validité réelle, mais le validateur du W3C ne prend en compte que la validité du code XHTML.

  • Ce document a un DOCTYPE XHTML 1.1, mais est servi en tant que text/html (au lieu de application/xhtml+xml).
  • Le document comporte une déclaration http-equiv qui spécifie le type MIME et le jeu de caractères utilisés, or cette déclaration ne sera pas honorée par un analyseur XML et il est recommandé de ne pas l’inclure dans le cas où la page est servie en tant que application/xhtml+xml. Donc dans le cas d’un navigateur web, une page servie en tant que text/html ne sera pas interprétée comme du XML, la déclaration http-equiv ne servira à rien, elle doit faire partie de l’entête HTTP.
  • La page contient un bloc de styles contenant un commentaire HTML[1] qui serait traité comme tel si le document était traité comme du XHTML véritable. Le contenu de l’élément style devrait être ignoré dans un document servi en tant que application/xhtml+xml, où les éléments script et style sont de type #PCDATA.

Autres erreurs liées au type MIME XHTML

  • Le prologue XML est optionnel uniquement si le document utilise le jeu de caractères utf-8. Or ce document utilise windows-1252 mais n’a pas de prologue.
  • Un document XHTML devrait lier ses feuilles de styles avec des instructions de traitement XML [2] et non l’élément link.

Les problèmes relatifs aux « standards » du web

Manque de sémantique

Le validateur n’a aucun moyen de vérifier les déficiences de ce document en matière de sémantique :

  • Aucun élément titre (h1-h6),
  • « listes » sans élément liste (ol ou ul),
  • aucun paragraphe, des <br /> et des classes sont utilisés pour espacer les blocs de texte,
  • des éléments table sont utilisés pour la mise en page.

CSS : Classite et Divite

  • Le manque de sémantique rend difficile voire impossible l’effet de cascade des CSS
  • L’absence d’éléments sémantiques oblige à utiliser une abondance de conteneurs dénués de sémantique : div et span afin d’appliquer les styles.

Accessibilité

  • Les unités dans la feuille de styles sont définies en pixels.
  • Le jeu de caractères choisi, windows-1252, est spécifique à une plate-forme, Windows. De nombreux caractères risquent donc d’être illisibles pour de nombreux utilisateurs. Cela peut également poser un problème d’utilisabilité pour un blog où des visiteurs de tous horizons peuvent laisser des commentaires en toute langue qui seront illisibles une fois convertis en windows-1252. La plupart des webdesigners ne s’en rendent pas compte car ils ne testent que sur une seule plateforme ou n’ont tout simplement aucune idée de ce que sont les codages et jeux de caractères.
  • mauvaise utilisation des attributs alt : description fantaisiste de l’image et non de son sens.

Ce document bien que validé par le validateur du W3C s’éloigne beaucoup de ce qu’on appelle couramment les « standards du web ». Bien souvent il est plus facile d’utiliser un DOCTYPE HTML que de s’embarquer dans l’univers contraignant du XHTML. Ce document sera de plus totalement ingérable du fait de l’imbrication de tableaux de plusieurs niveaux et de la multiplication des classes CSS.

Notes :

  1. Commentaires du type <!-- --> [retour 1]
  2. Exemple : <?xml-stylesheet href="default.css" type="text/css" title="Default" media="all"?> [retour 2]

← article précédentarticle suivant →

Les commentaires pour cet article sont fermés.