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);
/* 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
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)
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);
/* 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);
}
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);
/* 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); }