Validation XML

jeroen
WRInaute passionné
WRInaute passionné
 
Messages: 2455
Inscription: 30 Aoû 2002

Validation XML

Message le Lun Oct 06, 2008 19:47

Salut, je cherche à valider un document XML, mon code est le suivant

Code: Tout sélectionner
$dom = new DomDocument();
$dom->validateOnParse = true;
$dom->load($string);

if (!$dom->schemaValidate('schema.xsd')) die ('DTD Validation failure.');



mais je ressors toujours avec une l'erreur suivante :
Warning: DOMDocument::schemaValidate() [function.DOMDocument-schemaValidate]: The document has no document element

Le problème est que je n'ai aucune idée de ce que ça veut dire...

Y'a t'il des pros du xml dans la salle ?


Merci


bproductiv
WRInaute accro
WRInaute accro
 
Messages: 4146
Inscription: 27 Déc 2004

Message le Mar Oct 07, 2008 7:33

Le xml est vide ?


Bacteries
WRInaute passionné
WRInaute passionné
 
Messages: 1369
Inscription: 27 Mai 2004

Message le Mar Oct 07, 2008 8:51

Regarde sur le load à fonctionné déjà :
if ($dom->load($string)) {
...
}

jeroen
WRInaute passionné
WRInaute passionné
 
Messages: 2455
Inscription: 30 Aoû 2002

Message le Mar Oct 07, 2008 18:30

Merci pour vos réponses

Oui, le XML est valide, mais ça ne change pas le problème que je ne comprends pas l'erreur...

Et effecivement $dom->load($string) répond FALSE ?!?
Tu vois d'où peut venir le problème ?

jeroen
WRInaute passionné
WRInaute passionné
 
Messages: 2455
Inscription: 30 Aoû 2002

Message le Mer Oct 08, 2008 9:56

Ok, je suis un boulet, $dom->load() charge un fichier, et non une chaine. Il fallait donc utiliser $dom->loadXML()

J'ai un autre problème :

Mon fichier à valider (fourni par l'internaute, je ne maitrise pas son contenu) commence par
Code: Tout sélectionner
<?xml version="1.0"?>
<gpx xmlns="http://www.topografix.com/GPX/1/0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">


et fait donc référence à une ancienne version de schéma xsd (on en est à la 1.1)

j'ai sur mon serveur le fichier file.xsd qui correspond à la nouvelle version du schéma xsd.

lorsque j'appelle
Code: Tout sélectionner
$dom->schemaValidate('file.xsd'));


j'ai l'erreur suivante :

Warning: DOMDocument::schemaValidate() [function.DOMDocument-schemaValidate]: Element '{http://www.topografix.com/GPX/1/0}gpx': No matching global declaration available for the validation root


Visiblement le validateur va donc chercher le schéma dans l'entête du fichier, alors que je voudrais qu'il utilise le fichier file.xsd....


Vous avez une idée ?


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités