Harfang Posté 24 Octobre 2007 Posté 24 Octobre 2007 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
Sebastien Posté 24 Octobre 2007 Posté 24 Octobre 2007 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.
Harfang Posté 24 Octobre 2007 Auteur Posté 24 Octobre 2007 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
captain_torche Posté 24 Octobre 2007 Posté 24 Octobre 2007 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.
Harfang Posté 24 Octobre 2007 Auteur Posté 24 Octobre 2007 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...
captain_torche Posté 24 Octobre 2007 Posté 24 Octobre 2007 En même temps, tant que ton gabarit reste conforme, il n'y aura pas de souci. Tu utilises quel éditeur WYSIWYG ?
Harfang Posté 24 Octobre 2007 Auteur Posté 24 Octobre 2007 J'utilise le CMS typo3 avec comme éditeur wysiwyg htmlarea.
Harfang Posté 25 Octobre 2007 Auteur Posté 25 Octobre 2007 (modifié) 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éfautcd $1### On commence par récupérer tous les fichiers xmlget-xml http://www.mindenice.fr/index.php?id=88 pages.xmlget-xml http://www.mindenice.fr/index.php?id=89 entreprises.xml### Puis on transforme ces fichiers en liensxmltolinks pagesxmltolinks entreprises### On supprime le fichier de résumé de l'opérationif [ -e validate.err ]then rm validate.errfi### Puis on valide tous ces fichiersbatch-validate pagesbatch-validate entreprises### Puis on supprime tous les fichiers inutilesrm *.logrm *.linksrm *.xml### Enfin on envoie un mail de résultatif [ ! -e validate.err ]then echo "Tous les liens ont été vérifiés et sont conformes à la norme !" > validate.errfimail 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.errrm *.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 existeif [ -e $2 ]then rm $2fi### 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 )) fidone 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 liensif [ -e $1.xml ]then sed -n 's_.*<loc>\(.\+\)</loc>.*_\1_p' $1.xml > $1.linksfi 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.logfi### Si le fichier existeif [ -e $1.links ]then### On test tous les liens et on renvoie un log si erreurwhile read linedo validate -w $line >> $1.logdone < $1.links### En cas d'erreur on copie le fichier log dans un fichier d'erreurif [ -s $1.log ]then cat $1.log >> validate.errfifi 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é 25 Octobre 2007 par Harfang
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant