Validation XML

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

jeroen
WRInaute accro
WRInaute accro
 
Messages: 2384
Inscription: Ven Aoû 30, 2002 13:35

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: 2830
Inscription: Lun Déc 27, 2004 16:29

Message le Mar Oct 07, 2008 7:33

Le xml est vide ?


Bacteries
WRInaute accro
WRInaute accro
 
Messages: 1333
Inscription: Jeu Mai 27, 2004 13:04

Message le Mar Oct 07, 2008 8:51

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

jeroen
WRInaute accro
WRInaute accro
 
Messages: 2384
Inscription: Ven Aoû 30, 2002 13:35

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 accro
WRInaute accro
 
Messages: 2384
Inscription: Ven Aoû 30, 2002 13:35

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 ?


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

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