Bonjour,
Je ne parviens pas à comprendre un message d'erreur retourné par la validation d'un xml par un xsd.
Pour info c'est la première fois que je fais de la validation XML (et ça doit fonctionner depuis il y a un mois pour le client ...j'ai trouvé de la documentation mais côté PHP c'est pas très riche...j'ai peu de temps pour me documenter).
Voici une maquette épurée du XSD de mon client :
Une maquette du XML associé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="test"> <xs:complexType> <xs:sequence> <xs:element ref="nom"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
Le code que j'ai écris pour valider le XML :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <?xml version='1.0' encoding='UTF-8'?> <test> <nom>COUCOU_COUCOU</nom> </test>
L'erreur retournée que je ne comprends pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <?php header("Content-type: text/xml"); $xml = new DOMDocument(); $xml->load($chemin_vers_mon_xml); if ($xml->schemaValidate("http://www.chemin.com/vers_mon_xsd.xsd")) { echo "OK"; } else { echo "Erreur !"; } ?>
Si je traduis intuitivement je comprends ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <b>Warning</b>: DOMDocument::schemaValidate() [<a href='function.DOMDocument-schemaValidate'>function.DOMDocument-schemaValidate</a>]: Element 'nom': [facet 'enumeration'] The value 'COUCOU_COUCOU' is not an element of the set {'coucou_coucou'}. in <b>/home/www/chemin_vers_mon_script.php</b> on line <b>xx</b><br /> //la ligne d'erreur est la suivante : if ($xml->schemaValidate("http://www.chemin_xsd.com")) {
La valeur de la balise "nom" n'est pas un élément connu de la liste {'coucou_coucou'}. (??)
Serait-ce un problème de casse...
Merci pour votre coup de main !
Partager