Aller au contenu

Vérifier la conformité xhtml de mon site


Harfang

Sujets conseillés

Bonjour,

Alors voilà, je voudrais pouvoir vérifier la conformité de mon site en entier au xhtml 1.0. Normalement il devrait l'être presque en entier, voir en entier... mais faire ça page par page c'est lourd.

J'ai trouvé un site http://htmlhelp.com/tools/validator/ qui est donc le validateur du WDG, et qui marche bien, mais qui par contre limite à 100 liens suivis. Donc ces 100 liens me montrent que mon site est valide, mais je voudrais aller plus loin.

Mon site utilise le CMS typo3, et j'utilise une extension qui me génère un sitemap xml. Donc dans ce sitemap il y a TOUS les liens de mon site. Et sur le site du validateur du WDG, il y a un batch intéressant ici : http://htmlhelp.com/tools/validator/batch.html.fr qui permet donc de saisir une url par ligne histoire de pouvoir valider TOUT le site.

Mais ce mode batch n'accepte pas les fichiers xml.

Donc je cherche un moyen d'extraire tous les liens de mon fichier sitemap xml pour en faire un fichier texte, une url par ligne... quelqu'un aurait une solution à me proposer ?

Merci

Lien vers le commentaire
Partager sur d’autres sites

Normalement tu peux importer ton XML dans excel. Chaque balises XML correspondra à une colonne. Tu n'as ensuite qu'à copier coller la colonne des URLs dans un fichier texte.

Lien vers le commentaire
Partager sur d’autres sites

Tiens c'est une idée :)

Mais finalement j'ai opté pour une approche linux de la chose, que je vais expliquer ici, ça pourra servir à d'autres éventuellement...

Donc en partant d'un fichier xml récupéré grâce à un wget, j'ai créé un script utilisant une fonction du processeur de texte gawk, et cette ligne c'est :

sed -n 's_.*<loc>\(.\+\)</loc>.*_\1_p' $1.xml > $1.links

Donc j'appelle ce script (que j'ai nommé xml.sh) par xml.sh actualites, et ça me met donc le contenu de actualites.xml dans un fichier actualites.links, en ne gardant QUE les liens, un lien par ligne.

Maintenant il me reste encore quelques trucs à régler. J'ai installé sur mon linux l'outil offline de validation du WDG, il y a un script validate qui prend des options et notamment un lien et qui le valide... faut que je trouve donc un moyen de me créer un script sh qui va lire chaque ligne de mon fichier actualites.links et le passer à validate, mais je ne suis pas très doué en script sh donc faut que je cherche un peu...

Une fois que tout ça sera prêt, rien n'empêche d'automatiser tout ça, genre une fois par mois, et de rediriger la sortie vers un fichier log, histoire de vérifier régulièrement s'il y a des erreurs xhtml sur mon site...

Parce que c'est bien beau de mettre une belle icône valide xhtml dans un pied de page... mais bon certaines pages peuvent échapper à notre vigilance, surtout dans un CMS où les articles bougent...

Si quelqu'un s'y connait en script sh j'accepterais son aide avec grand plaisir :)

Lien vers le commentaire
Partager sur d’autres sites

Il ne faut pas tomber non plus dans les excès !

Le but de faire un site valide, n'est pas d'exhiber fièrement une icône (qui n'a pas de valeur en elle-même), mais plutôt de tenter de garantir que chaque internaute n'aura pas de problème, quel que soit son navigateur.

Si jamais tu as une page sur 100 qui ne valide pas, ce n'est pas réellement la peine de te faire des cheveux blancs.

Lien vers le commentaire
Partager sur d’autres sites

Oui je suis d'accord, mais en même temps une page qui ne valide pas peut vouloir dire qu'un de mes rédacteurs a utilisé pour faire l'article du code html non conforme, et je ne peux pas tout contrôler. Normalement le code html en wysiwyg est filtré, mais j'ai pu oublier quelque chose...

Donc pour éviter ce genre de choses, un contrôle périodique de l'ensemble du site peut être sympa... et en plus avec un tel système ça ne me demande pas trop de travail une fois la mise en place faite, juste regarder de temps en temps le fichier log...

Lien vers le commentaire
Partager sur d’autres sites

Bon j'ai fini par m'en sortir avec tout ces trucs là, donc pour ceux que ça intéresse je vais détailler la procédure ci-dessous...

Déjà, il faut un serveur linux. Et il faut installer le validateur de liens autonome du WDG (Web Design Group) que l'on peut trouver ici :

http://htmlhelp.com/tools/validator/offline/index.html.fr

Pour ceux qui ont red hat ou fedora c'est facile, il existe des paquets tout prêts. Mais moi je suis sous gentoo, alors ce que j'ai fait :

- j'ai copié le script validate dans /usr/local/bin.

- j'ai téléchargé les sources de lq-nsgmls, je les ai compilées avec un simple "Make", puis j'ai mis le programme ainsi obtenu dans /usr/local/bin aussi.

- j'ai téléchargé wdg-sgml-lib puis je l'ai décompressé dans le répertoire indiqué par défaut sur le site précédent, /usr/local/share/wdg/sgml-lib

Mais là ça n'installe que le validateur, qui prend en entrée juste un lien. Moi j'avais besoin d'un système qui prenne en entrée un fichier xml qui contient une suite de liens.

J'ai donc créé une suite de scripts, les voici : (je les ai tous mis dans /usr/local/bin et je les ai rendus exécutables par un chmod u+x)

D'abord, le script principal, qui valide l'ensemble du site :

#!/bin/bash

### On change le répertoire par défaut
cd $1

### On commence par récupérer tous les fichiers xml

get-xml http://www.mindenice.fr/index.php?id=88 pages.xml
get-xml http://www.mindenice.fr/index.php?id=89 entreprises.xml

### Puis on transforme ces fichiers en liens

xmltolinks pages
xmltolinks entreprises

### On supprime le fichier de résumé de l'opération

if [ -e validate.err ]
then
rm validate.err
fi

### Puis on valide tous ces fichiers

batch-validate pages
batch-validate entreprises

### Puis on supprime tous les fichiers inutiles

rm *.log
rm *.links
rm *.xml

### Enfin on envoie un mail de résultat

if [ ! -e validate.err ]
then
echo "Tous les liens ont été vérifiés et sont conformes à la norme !" > validate.err
fi

mail webmaster_AT_domain.com -s "Résultats de la vérification du $(date) pour le site http://www.mindenice.fr" -a "From: postmaster_AT_domain.com" < validate.err

rm *.err

Alors ce script prend en paramètre le répertoire de travail, et il utilise plusieurs scripts pour :

- récupérer des fichiers .xml de sitemap et les renommer comme on veut

- extraire tous les liens de ces fichiers xml

- valider les liens

- écrire les éventuelles erreurs dans un fichier et envoyer le résultat au webmaster par mail

- faire le ménage en effaçant les fichiers de travail

Le script pour récupérer les fichiers .xml

#!/bin/bash

### Ce script récupère un fichier xml jusqu'au succès

### On commence par supprimer le fichier destination s'il existe

if [ -e $2 ]
then
rm $2
fi

### Puis on fait un wget du fichier jusqu'au succès, maximum 100 essais

(( i = 100 )); while (( i > 0 ))
do
wget -q $1 -O $2
if [ -e $2 ]
then
(( i = 0 ))
fi
done

Ce script est assez simple, il prend deux paramètres, l'url à récupérer et le nom du fichier à enregistrer. Pourquoi plusieurs tentatives ? Parce que dans mon cas parfois la récupération du fichier xml ne fonctionne pas du premier coup, donc pour être sûr de le récupérer je fais plusieurs essais, bien sûr en stoppant dès le premier succès.

Voyons voir le script pour transformer le fichier xml en liens :

#!/bin/bash

### Ce script transforme un fichier xml en une suite de liens

if [ -e $1.xml ]
then
sed -n 's_.*<loc>\(.\+\)</loc>.*_\1_p' $1.xml > $1.links
fi

Ce script utilise tout simplement une fonction de gawk pour transformer un fichier xml en une suite de liens. Dans mon cas les liens étaient encadrés par des balises LOC.

Et enfin le script qui me valide tout ça en prenant en paramètre le nom du fichier .links.

#!/bin/bash

### On supprime le fichier log s'il existe déjà

if [ -e $1.log ]
then
rm $1.log
fi

### Si le fichier existe

if [ -e $1.links ]
then

### On test tous les liens et on renvoie un log si erreur

while read line
do
validate -w $line >> $1.log
done < $1.links

### En cas d'erreur on copie le fichier log dans un fichier d'erreur

if [ -s $1.log ]
then
cat $1.log >> validate.err
fi

fi

Donc en fait ce script lit toutes les lignes du fichier .links, lance le script validate avec ce paramètre, et écrit le log.

Et finalement je me suis créé une tâche cron qui me lance /usr/local/bin/site-validate ~ (pour utiliser le répertoire home comme répertoire de travail) toutes les semaines, comme ça je reçois un mail hebdomadaire m'informant de la conformité de tout mon site...

Voilà, donc bon si vous avez des commentaires...

Modifié par Harfang
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...