Valider automatiquement des pages par PHP
Par Paul de Rosanbo, samedi 18 février 2006 à 14:09 :: Code :: #61 :: rss
Avec php et le DOM, il est facile de valider des document xhtml, les fonctions fournies permettent de valider du xml avec la DTD associée
Pour valider une page html
il faut activer tout les messages d'erreur : error_reporting(E_ALL);
vous pouvez valider en chargeant un fichier externe :
$dom = new DOMDocument; $dom->Load('mapage.html'); $dom->validate();
Mais dans un développement en php, il est plus probable qu'il y ai déjà dans le script une chaîne de caractères avec toute la page
$dom = DOMDocument::loadXML($machainexml); $dom->validate();
Pour le html 4, il existe aussi l'équivalent de ces fonctions :
DOMDocument->loadHTMLFile() et
DOMDocument->loadHTML()
Les messages d'erreur remontés par php ne ressemblent pas à ceux du validateur du W3C. Par exemple, si je met une balise div dans une balise p :
Warning: Element div is not declared in p list of possible children
alors que le W3C m'affiche pour la même erreur :
The mentioned element is not allowed to appear in the context in which you've placed it; the other mentioned elements are the only ones that are both allowed there and can contain the element mentioned. This might mean that you need a containing element, or possibly that you've forgotten to close a previous element.
One possible cause for this message is that you have attempted to put a block-level element (such as "<p>" or "<table>") inside an inline element (such as "<a>", "<span>", or "<font>").
Pour ma part, je ne suis pas contre des messages plus court à lire, par contre, la ligne indiquée par php est celle de la fonction validate() dans le code php, il n'y a aucun renseignements sur la position de l'erreur.
améliorer les performances
Php valide en utilisant le fichier DTD fourni dans le document, pour éviter que le valideur télécharge les fichiers DTD sur Internet à chaque appel de la page, il faut créer une copie sur son serveur de développement local. Par exemple pour du xhtml 1 strict il faut les fichiers :
- http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd
- http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent
- http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent
- http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent
ensuite, changer le doctype
du document a valider (ne pas oublier de remettre le bon avant de passer en production!) :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://localhost/dtd/xhtml1-strict.dtd">
Pour aller plus loin
pour nettoyer et manipuler les documents HTML : Tidy, extension de PHP et en module d'apache
Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.