OVH Cloud OVH Cloud

WD10 et validation XSD (schema XML)

11 réponses
Avatar
Thomas Héroult
Bonjour tout le monde
Connaissez-vous un moyen de vérifier la validiter d'un fichier XML à
l'aide d'un fichier XSD avec Windev 10 ?

Ca fait un moment que je cherche et j'ai rien trouvé là-dessus :/

Je ne crois pas qu'il existe de fonction integré permettant de le
faire, mais peut-être connaissez-vous un script qui remplirai cette
fonction

merci d'avance

T Héroult

1 réponse

1 2
Avatar
JeAn-PhI
JeAn-PhI a pensé très fort :
Romain PETIT avait écrit le 07/09/2006 :
Dans son message précédent, JeAn-PhI a écrit :

merci pour ce bon début je vais m'y pencher sérieusement dessus



Voir aussi dans les archives, j'avais utilisé un peu l'objet MSXML (version
2)

http://groups.google.fr/groups/search?hl=fr&lr=&num&q=msxml++group%3Afr.comp.developpement.agl.windev&qt_s=Rechercher

A+



merci



j'ai trouvé ceci dans mes recherches de validation :
une DLL est dispo ici -> http://xmlsoft.org/

code en C :

/**
* Valider un fichier XML à partir d'un fichier XML Schema
**/
int XML01_SchemaValidation(char * XMLSchemaFile_pathname, char *
XMLfile_pathname)
{
xmlSchemaPtr ptr_schema = NULL;
xmlSchemaParserCtxtPtr ptr_ctxt;
xmlSchemaValidCtxtPtr ptr_validctxt;
int vl_return;
xmlDocPtr vl_doc;
HINSTANCE vl_hModule;


/* Ouverture du fichier XML Schema */
ptr_ctxt = xmlSchemaNewParserCtxt(XMLSchemaFile_pathname);
xmlSchemaSetParserErrors(ptr_ctxt,
(xmlSchemaValidityErrorFunc) fprintf,
(xmlSchemaValidityWarningFunc) fprintf,
stderr);

ptr_schema = xmlSchemaParse(ptr_ctxt);
xmlSchemaFreeParserCtxt(ptr_ctxt);

/* Si le XML Schema n'a pas pu être chargé*/
if (ptr_schema == NULL){
printf("XMLSCHEMA: Could not open XML Schema %sn",
XMLSchemaFile_pathname);
xmlSchemaCleanupTypes();
xmlCleanupParser();
xmlMemoryDump();
FreeLibrary(vl_hModule);
return -1;
}


vl_doc =xmlReadFile(XMLfile_pathname,NULL,0);
/* Si le fichier XML ne peut pas être ouvert on signale l'erreur*/
if (vl_doc == NULL) {
printf("XML: Could not parse %sn", XMLfile_pathname);
} else /* Sinon on vérifie la validité du fichier XML */
{
/* Chargement du contenu du XML SChema */
ptr_validctxt = xmlSchemaNewValidCtxt(ptr_schema);
xmlSchemaSetValidErrors(ptr_validctxt,
(xmlSchemaValidityErrorFunc) fprintf,
(xmlSchemaValidityWarningFunc) fprintf,
stderr);

/* On valide le fichier XML à partir de la structure du XML Schema*/
vl_return = (fct_xmlSchemaValidateDoc)(ptr_validctxt, vl_doc);

/* On affiche le résultat */
if (vl_return == 0){ // If the XML file is valid
printf("XMLSCHEMA VERDICT : Xml file <%s> validates.n",
XMLfile_pathname);
}
else if (vl_return > 0){ // Si le fichier XML ne correspond pas à la
structure du XML Schema
printf("XMLSCHEMA VERDICT : Xml file <%s> fails to validate.n",
XMLfile_pathname);
}
else { // Autre erreur
printf("XMLSCHEMA VERDICT : <%s> validation generated an internal
errorn", XMLfile_pathname);
}
xmlSchemaFreeValidCtxt(ptr_validctxt);
xmlFreeDoc(vl_doc);
}
FreeLibrary(vl_hModule);
return(0);
}

--
Cordialement JeAn-PhI
1 2