Благодаря jmbr в Stack Overflow я наконец нашел способ проверить xml на соответствие RELAX NG с помощью программы на C. Программа такая...
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <libxml/xmlmemory.h>
#include <libxml/parser.h>
#include <libxml/relaxng.h>
int main(int argc, char *argv[])
{
int status;
xmlDoc *doc;
xmlRelaxNGPtr schema;
xmlRelaxNGValidCtxtPtr validctxt;
xmlRelaxNGParserCtxtPtr rngparser;
doc = xmlParseFile(argv[1]);
rngparser = xmlRelaxNGNewParserCtxt(argv[2]);
schema = xmlRelaxNGParse(rngparser);
validctxt = xmlRelaxNGNewValidCtxt(schema);
status = xmlRelaxNGValidateDoc(validctxt, doc);
printf("status == %d\n", status);
xmlRelaxNGFree(schema);
xmlRelaxNGFreeValidCtxt(validctxt);
xmlRelaxNGFreeParserCtxt(rngparser);
xmlFreeDoc(doc);
exit(EXIT_SUCCESS);
}
С тех пор я значительно доработал программу, чтобы узнать «время обработки» для разбора и проверки XML-файла. Есть ли способ узнать лучший и худший случай для этой программы. В худшем случае время, затрачиваемое на вход любого xml-файла, всегда будет самым высоким. И в лучшем случае время, затрачиваемое всегда самое низкое. Я действительно застрял в этом. Был бы очень признателен, если бы кто-нибудь из вас, ребята, мог мне помочь.