Tidy : Correction XHTML 1.0

Les pages produites par SPIP peuvent être analysées par le Le validateur XML intégré disponible depuis SPIP 1.9. Il existe aussi, depuis SPIP 1.8, une interface avec Tidy ; elle exige une installation séparée mais a l’avantage d’essayer, souvent avec succès, de corriger automatiquement les erreurs de validation.

Principe général

Tidy est un outil (externe à SPIP) qui permet de transformer du code HTML 4 relativement propre en code XHTML 1.0 transitional valide. Cet outil aide les webmestres à conformer leurs sites aux recommandations XHTML, même dans les messages de forums librement composés par les visiteurs.

Important : Tidy n’est pas un outil « magique » : il est incapable de transformer du code « très sale » en code conforme. Face à certaines « erreurs » de code, il refuse purement et simplement de fonctionner. Des interventions manuelles sur les erreurs qu’il dénonce sont donc à prévoir..

-  Étape 1 : il convient, avant tout, de créer du code aussi propre et conforme que possible, avant même le passage par Tidy. Cela se fait à plusieurs niveaux :
— tout d’abord, SPIP produit, dans ses traitements typographiques, du code propre, et à chaque version plus conforme (« compliant ») ; l’espace privé et les squelettes de SPIP 1.8 sont conformes XHTML transitionnal, dans [spip19] ils sont conformes XHTML strict.

-  Étape 2 : si Tidy est présent sur le serveur, et si le webmestre active cette option (voir plus loin), alors SPIP fait passer les pages produites par Tidy, qui va alors tenter de nettoyer les pages et de les transformer en pages conformes.

-  Étape 3 : si le traitement a bien fonctionné (Tidy n’a pas rencontré d’erreur « bloquante »), alors la page affichée est bien du XHTML 1.0 ; en revanche, si Tidy n’a pas fonctionné (voir plus loin), alors c’est la page d’origine qui est affichée — dans ce cas (c’est un outil important à prendre en compte), SPIP affiche un bouton d’administration signalant l’« erreur Tidy », et créé un fichier récapitulant les différentes pages ayant rencontré des erreurs.

Encore une fois, afin de ne pas préter à l’outil des possibilités « magiques » qu’il n’a pas, et à ses développeurs des intentions qui ne sont pas les leurs, il est important de noter qu’il ne s’agit pas de se reposer entièrement sur Tidy, dont les limites sont connues, mais de l’intégrer dans une logique plus large de mise en conformité :
— d’abord en améliorant le code produit par SPIP,
— en utilisant ensuite Tidy à la fois comme outil de « nettoyage » du code, mais aussi en proposant une indication des erreurs pour permettre au webmestre d’améliorer son code.

La mise en conformité du code ne peut reposer sur une solution purement technique, mais sur un travail personnel pour lequel SPIP offre un outil de suivi.

Installer Tidy

-  Tidy, extension de PHP

Tidy existe en tant qu’extension de PHP. C’est la façon la plus simple de l’utiliser, l’outil étant alors directement utilisable par le webmestre. Pour déterminer sa présence, on pourra consulter la page ecrire/?exec=info de son site pour obtenir la configuration de son serveur et la liste des extensions de PHP disponibles.

N.B. : Tout retour d’expérience de la part de webmestres intéresse les développeurs — sur la liste spip-dev. (Nous avons besoin de retours d’expérience sur les versions 1 et 2 de Tidy, c’est-à-dire sur des sites en PHP 4, en PHP 5, mais également des installations via PEAR.)

-  Tidy comme programme indépendant

Il est par ailleurs possible d’utiliser Tidy en ligne de commande (c’est-à-dire en tant que programme indépendant de PHP s’exécutant directement sur le serveur).

Cette version est particulièrement pratique, puisque :
— il existe des versions de Tidy déjà compilées pour la plupart des systèmes d’exploitation,
— il est souvent possible et simple d’installer ces versions de Tidy sur un hébergement sans avoir d’accès root,
— certains administrateurs de sites ont subi des incompatibilités lors de l’installation de Tidy en extension PHP (avec, semble-t-il, ImageMagick) ; la version en ligne de commande ne provoque pas ce genre de problème.

Avant toute chose, vérifiez que Tidy n’est pas déjà présent sur votre serveur. Pour cela, installez dans le fichier mes_options.php les lignes suivantes :

Et vérifiez sur votre site public si les pages sont modifiées (soit transformées en XHTML, soit affichage du message « Erreur tidy »). Si cela ne fonctionne pas, pensez à supprimer ces deux lignes, et essayez d’installer Tidy selon la méthode suivante (ou demandez à la personne responsable de votre hébergement de le faire).

Vous pouvez installer une version déjà compilée de Tidy correspondant à votre système.
— On trouvera ces versions sur le site officiel de Tidy ; il en existe pour Linux, divers *BSD, MacOS X, etc.
— Décompressez l’archive téléchargée, et installez le fichier « tidy » sur votre site.
— Vérifiez les droits d’exécution de ce fichier sur le serveur (si nécessaire, passez les droits en « 777 »). (Si vous avez un accès SSH à votre serveur, vous pouvez tester le programme directement depuis le terminal. Si vous n’avez pas un tel accès, rien de grave, passez aux étapes suivantes, sachant que vous serez plus démuni si cela ne fonctionne pas du premier coup.)
— Configurez l’accès à ce fichier en indiquant le chemin d’accès en le définissant ainsi :

Si le chemin indiqué dans _TIDY_COMMAND est correct, alors Tidy sera déclenché lors des affichages des pages de votre site public.

Important. La définition de _TIDY_COMMAND doit se trouver dans /ecrire/mes_options.php et non à la racine du site dans /mes_fonctions.php. Cela est dû au fonctionnement assez spécifique du système (post-traitement des fichiers tirés du cache de SPIP).

La partie $xhtml = true;, en revanche, fonctionne comme une « variable de personnalisation » ; vous pouvez, si vous souhaitez faire des essais ou restreindre le fonctionnement à une partie du site, définir cette variable au niveau du fichier d’appel, par exemple article.php3 si vous ne voulez passer tidy que sur les articles.

Nettoyez votre code...

Encore une fois, il faut bien comprendre que Tidy n’est capable de rendre conforme que du code qui est déjà, à l’origine, très propre. Avec les squelettes livrés avec SPIP et le code produit par défaut par SPIP, cela ne pose aucun problème : le code est très proche du HTML 4 conforme (« compliant »), aussi Tidy n’a aucun mal à en faire du XHTML 1.0 transitional parfaitement conforme.

Lorsque Tidy a bien fonctionné, vous constatez dans le code source de vos pages :
— que le « DOCTYPE » de votre page est devenu « XHTML... »,
— que le code est joliment indenté,
— que l’ensemble passe la validation W3C sans difficulté.

Si le DOCTYPE n’est pas modifié, c’est que Tidy a renoncé à corriger la page, dans laquelle il a rencontré des erreurs impossibles (pour lui) à corriger.

Les erreurs peuvent avoir deux sources : les squelettes, et le texte des articles.

-  Vos squelettes ne sont eux-mêmes pas conformes ; dans ce cas, il faut les corriger. C’est le cas le plus fréquent.

Vous pouvez, ici, commencer par désactiver Tidy (passer la variable $xhtml à false), et passer vos pages à un validateur (le Le validateur XML intégré ou le W3C Validator) en visant le conformité HTML 4.01 transitional au minimum.

Une fois vos squelettes aussi proches que possible du HTML 4, Tidy n’aura pas de difficulté à produire du XHTML conforme. Si ces pages sont complètement conformes, c’est encore mieux ! (Et pas impossible : les squelettes livrés avec SPIP le sont déjà).

-  Certaines articles contiennent des codes erronés

SPIP laissant les rédacteurs travailler en « code source », ceux-ci peuvent insérer du code non conforme à l’intérieur de leurs articles. (Par exemple, dans la documentation de www.spip.net, on trouve à certains endroits l’utilisation de balises HTML <tt>...</tt> que Tidy considère comme inacceptables.)

Aussi, une fois les squelettes nettoyés, on pourra chercher à corriger les textes de certains articles (cela concerne, donc, les insertions de HTML directement dans les articles ; encore une fois, le code produit par SPIP est essentiellement conforme, et ne provoque pas de « blocage » de Tidy).

Pour cela, outre l’apparition, sur les pages concernées, d’une bouton d’aministration intitulé « Erreur Tidy », SPIP tient à jour en permanence un fichier /ecrire/data/w3c-go-home.txt qui contient la liste des pages impossibles à valider [1]. Une fois vos squelettes rendus propres (paragraphe précédent), le nombre de pages défaillantes devrait être limité aux articles contenant du code HTML non accepté par Tidy.

Il est assez difficile de définir précisément ce que Tidy considère comme une « erreur insurmontable ». Par exemple, les balises mal fermées ne sont pas réellement considérées comme impossible à corriger (par exemple, passer en italique dans un paragraphe et fermer l’italique dans un autre paragraphe fabrique du code HTML non conforme, que Tidy parvient cependant à bien corriger). Le plus souvent, il s’agit de balises insérées à la main totalement inexistantes (par exemple : taper <bt> à la place de <br>), ou de balises HTML considérées comme obsolètes dans le HTML 4 (telles que <tt> ou <blink>), que Tidy refusera purement et simplement de traiter.

Conclusion

Encore une fois, l’outil Tidy ne doit surtout pas être considéré comme un produit « miracle » : il ne transforme pas du code sale en code conforme. Son intégration dans SPIP suit donc une logique d’accompagnement d’un processus de nettoyage :

— SPIP lui-même continue à produire du code de plus en plus propre ;

— Tidy sert alors à mettre la dernière touche de nettoyage sur du code déjà très « compliant » (au passage, en résolvant quelques incompatibilités difficiles à gérer avec un code unique entre le HTML et le XHTML, telles que certaines balises auto-fermantes en XHTML, et non fermées en HTML, telles que <br />) ;

— Tidy est ensuite utilisé pour identifier les erreurs de codage dans le code source des articles eux-mêmes (lors de l’insertion, assez fréquent, de code HTML « à la main » dans le corps des articles).

Notes

[1Ce fichier titre son nom de l’article W3C go home!, publié sur sur uZine, qui critiquait l’acharnement des prophètes de la compliance à emm... les webmestres qui se contentent de faire des pages Web ; l’essentiel, rappelons-le, est de publier sans se casser la tête. Si en plus on peut le faire de manière conforme, tant mieux, et c’est l’objet de cette passerelle SPIP-Tidy.

Auteur ARNO*, Committo, Ergo Sum. Publié le : Mis à jour : 26/10/12

Traductions : català, English, Español, français, italiano