valider un xml par un dtd avec php

Eléphanteau du PHP | 27 Messages

21 déc. 2005, 23:07

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
le jour où on mettra les cons sur orbite, t'auras pas fini de tourner

Mammouth du PHP | 1311 Messages

21 déc. 2005, 23:15

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

Eléphanteau du PHP | 27 Messages

22 déc. 2005, 00:08

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?
le jour où on mettra les cons sur orbite, t'auras pas fini de tourner

Mammouth du PHP | 1311 Messages

22 déc. 2005, 00:16

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 :wink:

Eléphanteau du PHP | 27 Messages

22 déc. 2005, 01:02

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 ...
le jour où on mettra les cons sur orbite, t'auras pas fini de tourner

Mammouth du PHP | 1311 Messages

22 déc. 2005, 10:53

la tu ne modifie pas ton xml avec les schemas et la fonction dom approprié, ton schema un fichier xml

Eléphanteau du PHP | 27 Messages

22 déc. 2005, 10:56

ah ok

j'ai du mal comprendre la chose alors, je vais y re-jeter un oeil

merci
le jour où on mettra les cons sur orbite, t'auras pas fini de tourner

Eléphanteau du PHP | 27 Messages

22 déc. 2005, 14:19

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?
le jour où on mettra les cons sur orbite, t'auras pas fini de tourner

Mammouth du PHP | 1311 Messages

22 déc. 2005, 14:37

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

Eléphanteau du PHP | 27 Messages

22 déc. 2005, 15:36

ok,j'ai été voir ce qu'était un fichiers .xsd

je commence à y voir plus clair


µ
merci pour tout
le jour où on mettra les cons sur orbite, t'auras pas fini de tourner

Eléphanteau du PHP | 27 Messages

22 déc. 2005, 16:03

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
le jour où on mettra les cons sur orbite, t'auras pas fini de tourner

Eléphanteau du PHP | 27 Messages

22 déc. 2005, 16:09

apparement c'est dispo que dans php5 alors que avec easyphp on est encore avec php 4.3 :twisted:

c'est possible?
le jour où on mettra les cons sur orbite, t'auras pas fini de tourner

Mammouth du PHP | 1311 Messages

22 déc. 2005, 16:17

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

Eléphanteau du PHP | 27 Messages

22 déc. 2005, 16:38

ouais mais c justement ce que je veux pas faire

merci
le jour où on mettra les cons sur orbite, t'auras pas fini de tourner

Mammouth du PHP | 1311 Messages

22 déc. 2005, 16:42

ba oui mais la t'est un peu bloquer
en quoi ca te gene de fair eune copie et la tester