/** * @file validation_xml.c * @author Radek Krejci * @brief performance test - validating YANG data via DSDL tools. * * Copyright (c) 2016 CESNET, z.s.p.o. * * This source code is licensed under BSD 3-Clause License (the "License"). * You may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://opensource.org/licenses/BSD-3-Clause */ #include #include #include #include #include #include #include #include #include int main(int argc, char *argv[]) { xmlDocPtr sdoc, ddoc; xmlDocPtr sch_result; xmlRelaxNGParserCtxtPtr rng_ctxt; xmlRelaxNGPtr rng_schema = NULL; xmlRelaxNGValidCtxtPtr rng = NULL; xsltStylesheetPtr sch = NULL; if (argc < 5) { fprintf(stderr, "Usage: %s model.yin data.xml model-config.rng model-schematron.xsl\n", argv[0]); return 1; } /* schema */ sdoc = xmlReadFile(argv[1], NULL, 0); if (!sdoc) { fprintf(stderr, "Failed to load data model\n"); return 1; } /* data */ ddoc = xmlReadFile(argv[2], NULL, 0); if (!sdoc) { fprintf(stderr, "Failed to load data\n"); return 1; } /* validate */ rng_ctxt = xmlRelaxNGNewParserCtxt(argv[3]); rng_schema = xmlRelaxNGParse(rng_ctxt); rng = xmlRelaxNGNewValidCtxt(rng_schema); sch = xsltParseStylesheetFile(BAD_CAST argv[4]); xmlRelaxNGValidateDoc(rng, ddoc); sch_result = xsltApplyStylesheet(sch, ddoc, NULL); xmlRelaxNGFreeParserCtxt(rng_ctxt); xmlRelaxNGFree(rng_schema); xmlRelaxNGFreeValidCtxt(rng); xsltFreeStylesheet(sch); xmlFreeDoc(sch_result); xmlFreeDoc(ddoc); xmlFreeDoc(sdoc); return 0; }