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. :)

Mots-clefs : , , ,

9 réactions sur cet article.

  1. ChoiZ says:

    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 < ?

  2. ChoiZ says:

    Tiens et ton serveur n'est pas a l'heure j'ai cru que c'était l'heure de la pause :)

  3. Mathias says:

    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.

  4. @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 ! :)

  5. Vincent says:

    Salut Jonathan !

    "Cessons d’utiliser des technologies archaïques."

    Moi, je suis d'accord avec toi, mais faudrait qu'on en entende parler déjà. lol

    Dans les livres, je ne vois que le DTD ! Là, c'est parce que je faisais une recherche pour trouver des infos sur une architecture MVC sur la base XML, XSLT, DomDocument et Xpath que je suis tombé sur XSD !

    Au fait, j'ai bien aimé l'article que tu avais fait sur Programmez! sur le moteur de templates !

    Maintenant je vais me renseigner sur XSD ! Quand on est développeur de nos jours, il faut connaître 30 000 technologies. Des fois, c'est lourd ! Je viens d'apprendre comment fonctionnait la DTD et aujourd'hui j'apprends que c'est obsolète ! Après je vais apprendre le XSD, et demain un type va encore nous inventer un nouveau truc mdrr !

    Mais c'est la vie, il faut s'y faire ! :D

    ++

Réagissez sur cet article !