OpenSSL VPN Serveurs de messagerie |
Libxml2/Libxml2-schemaLa validation de la grammaire d'un fichier XML est nécessaire lorsqu'il s'agit d'échanges des données, car la validation de la grammaire assurera que la totalité des données attendues a été fournit ainsi que la nature de ces données. Maintenant un exemple de cette implémentation: char szXSD[]="<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>" "<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" "<xs:element name=\"message\">" "<xs:complexType>" "<xs:sequence>" "<xs:element name=\"to\" type=\"xs:string\"/>" "<xs:element name=\"from\" type=\"xs:string\"/>" "<xs:element name=\"subject\" type=\"xs:string\"/>" "<xs:element name=\"body\" type=\"xs:string\"/>" "</xs:sequence>" "</xs:complexType>" "</xs:element>" "</xs:schema>"; char szXml[]="<?xml version=\"1.0\"?>" "<message>" "<to>Tove</to>" "<from>Jani</from>" "<heading>Reminder</heading>" "<body>Don't forget me this weekend!</body>" "</message>"; xmlSchemaParserCtxtPtr XSDCtxPtr = xmlSchemaNewMemParserCtxt(szXSD,strlen(szXSD)); if (XSDCtxPtr == NULL) { printf("erreur"); return NOK; } xmlSchemaSetParserErrors(XSDCtxPtr, (xmlSchemaValidityErrorFunc) fprintf, (xmlSchemaValidityWarningFunc) fprintf, stderr); xmlSchemaPtr schema = xmlSchemaParse(XSDCtxPtr); xmlSchemaValidCtxtPtr schemaCtxt; schemaCtxt = xmlSchemaNewValidCtxt(schema); xmlSchemaSetValidErrors(schemaCtxt, (xmlSchemaValidityErrorFunc) fprintf, (xmlSchemaValidityWarningFunc) fprintf, stderr); xmlParserInputBufferPtr input = xmlParserInputBufferCreateMem ((const char*)szXml, strlen(szXml), XML_CHAR_ENCODING_NONE); int ret; ret= xmlSchemaValidateStream(schemaCtxt, input, XML_CHAR_ENCODING_NONE,NULL, NULL); printf("%i---\n",ret); xmlSchemaFreeValidCtxt(schemaCtxt); xmlSchemaFreeParserCtxt(XSDCtxPtr); xmlSchemaFree(schema);
|