Valider un fichier XML avec un schéma de définition (XSD) en PHP
Je vous avais déjà parlé, il y a quelques mois, de la manière de valider un XML avec un XSD sous Linux, en utilisant la commande Linux xmllint. Eh bien, à présent, nous allons voir comment le valider sous toutes les plates-formes ayant un simple Apache de configuré (et intégrant PHP 5 bien sûr !).
Pour ce faire, nous allons utiliser la classe DOMDocument, une classe PHP5 bien pratique permettant de manipuler les documents XML très simplement. Voici les quelques lignes de code correspondantes :
< ?php
$doc = new DOMDocument();
$doc->load($_GET['xml'].'.xml');
$doc->schemaValidate($_GET['xsd'].'.xsd');
echo "<hr/><pre>".htmlentities($doc->saveHTML())."</pre>";
?>
Et c’est tout. Quelques explications (superflues ?). On commence par instancier notre classe DOMDocument et on charge le fichier XML passé en URL. Puis, on le valide avec un fichier XSD passé lui aussi en URL. La méthode schemaValidate affichera des warning si le document n’est pas valide, et n’affichera rien si le document est valide. Bref, il s’agit d’un moyen très simple pour les Windowsiens de vérifier si un document XML est bien conforme à un schéma XML.
Enfin, petite cerise sur le gâteau : on affiche le fichier XML dans notre page. :)
Date : 14 janvier 2009 | Catégorie(s) : Développement













22 janvier 2009 à 16:09
Pour info il faut que tu supprimes dans les options de WP la modification automatique du code … car tous tes codes php etc… ont un espace entre < ?
22 janvier 2009 à 16:10
Tiens et ton serveur n’est pas a l’heure j’ai cru que c’était l’heure de la pause :)
22 janvier 2009 à 16:43
Sur le docbook, il y a aussi le script concernant la validation avec une DTD.
“On commence par instancier notre objet DOMDocument” => On instancie une classe pas un objet.
22 janvier 2009 à 22:50
@ChoiZ
Comment peux-tu modifier cela ? Je ne vois pas dans les options. On verra ça ensemble sur MSN ou Skype à l’occasion. ;)
Sinon, effectivement, le serveur n’est pas à l’heure. Mais nous sommes en phase de migration de tous nos sites. Donc, pas dramatique pour l’instant.
@Mathias
Concernant les DTD, ceux-ci sont complètement obsolètes je trouve, et ont été remplacés par les XSD. Donc, afin de moderniser le Net, cessons d’utiliser des technologies archaïques, et commençons tout simplement à ne plus jamais en parler.
Quant à la petite coquille, elle est corrigée. Merci de ta vigilance ! :)