Page 1 sur 2
valider un xml par un dtd avec php
Posté : 21 déc. 2005, 23:07
par GillouX
hello,
tout est dans le titre,
au même titre que
xslt_process($xh, 'rssb.xml', 'rss.xsl'); permet de formater un xml avec un xsl
je voudrais savoir si il existait une fct en php capable de valider un xml par un dtd (sans devoir modif le xml, vu que c'est un xml distant)
merci d'avance
Posté : 21 déc. 2005, 23:15
par jeff
tu a des fonctions dom qui font cela mais il faut que la definition de la dtd soit dans le fichier, par contre tu peut etre t'en sotir avec l'utilisation de schema
Posté : 22 déc. 2005, 00:08
par GillouX
oui j'ai vu que avec dom , il faut que ce soit spécifé au début du xml
tu sais m'en dire plus sur schema?
Posté : 22 déc. 2005, 00:16
par jeff
voici une fonction qui peut te convenir
http://fr.php.net/manual/fr/function.do ... lidate.php
je n'ai pas encore utiliser les schema pour valider mes documents
mais de ce que j'en ai lu c'est plus puissant que la dtd et c'est le future standar
je pense qu'il y a des tuto sur developpez.com

Posté : 22 déc. 2005, 01:02
par GillouX
ok mais ce que j'aimerais vraiment faire c'est de pouvoir le valider par un dtd sans devoir modif le xml, c'est là qu'est le problème ...
Posté : 22 déc. 2005, 10:53
par jeff
la tu ne modifie pas ton xml avec les schemas et la fonction dom approprié, ton schema un fichier xml
Posté : 22 déc. 2005, 10:56
par GillouX
ah ok
j'ai du mal comprendre la chose alors, je vais y re-jeter un oeil
merci
Posté : 22 déc. 2005, 14:19
par GillouX
j'ai vu que avec schema le fichier de validation est un xsd, c'est la même chose qu'un DTD??
je pourrais mettre un dtd là à la place?
Posté : 22 déc. 2005, 14:37
par jeff
non ce n'est pas la meme chose et de plus la fonction dom attend un schema et non une dtd
j'ai acheté un bouquin "xml par le pratique" aus editions eni
il en parle et c'est pas mal
sinon va faire un tour sur le site zvon.org ils doivent en parler
Posté : 22 déc. 2005, 15:36
par GillouX
ok,j'ai été voir ce qu'était un fichiers .xsd
je commence à y voir plus clair
µ
merci pour tout
Posté : 22 déc. 2005, 16:03
par GillouX
j'ai testé ceci
<?php
$fichier = 'test';
$doc_xml = new DOMDocument();
$doc_xml->validateOnParse = true;
if($doc_xml->load($fichier . '.xml')){
echo '<h3>Le document XML '
. $test .
'n\'a été chargé !</h3>';
if($doc_xml->schemaValidate($fichier . '.xsd'))
echo '<p>Le document XML est valide '
. 'par rapport au schéma W3C</p>';
}
else
echo '<p style="color:red">Le document XML '
. $test .
'n\'a pu être chargé !</p>';
?>
mais j'ai cela comme erreur
Warning: domdocument() expects at least 1 parameter, 0 given in d:\i.e.s.n - 3ème ti\2005-2006\[xml,html,php,css]\monsitephpe\test.php on line 3
Fatal error: Call to undefined function: load() in d:\i.e.s.n - 3ème ti\2005-2006\[xml,html,php,css]\monsitephpe\test.php on line 5
je suppose que la première, je dois pas trop m'en soucier par contre pour la deuxième ???
(je suis sous easyphp1.8)
merci d'avance
Posté : 22 déc. 2005, 16:09
par GillouX
apparement c'est dispo que dans php5 alors que avec easyphp on est encore avec php 4.3
c'est possible?
Posté : 22 déc. 2005, 16:17
par jeff
apparement c'est que pour php5
sinon tu a une autre methode
tu fait une copie deton fichier xml ou tu declare la dtd et tu le teste
Posté : 22 déc. 2005, 16:38
par GillouX
ouais mais c justement ce que je veux pas faire
merci
Posté : 22 déc. 2005, 16:42
par jeff
ba oui mais la t'est un peu bloquer
en quoi ca te gene de fair eune copie et la tester