Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(239)

Side by Side Diff: third_party/libxml/src/schematron.c

Issue 1193533007: Upgrade to libxml 2.9.2 and libxslt 1.1.28 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: no iconv Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/libxml/src/save.h ('k') | third_party/libxml/src/testAutomata.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * schematron.c : implementation of the Schematron schema validity checking 2 * schematron.c : implementation of the Schematron schema validity checking
3 * 3 *
4 * See Copyright for the status of this software. 4 * See Copyright for the status of this software.
5 * 5 *
6 * Daniel Veillard <daniel@veillard.com> 6 * Daniel Veillard <daniel@veillard.com>
7 */ 7 */
8 8
9 /* 9 /*
10 * TODO: 10 * TODO:
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 46
47 #define IS_SCHEMATRON(node, elem) \ 47 #define IS_SCHEMATRON(node, elem) \
48 ((node != NULL) && (node->type == XML_ELEMENT_NODE ) && \ 48 ((node != NULL) && (node->type == XML_ELEMENT_NODE ) && \
49 (node->ns != NULL) && \ 49 (node->ns != NULL) && \
50 (xmlStrEqual(node->name, (const xmlChar *) elem)) && \ 50 (xmlStrEqual(node->name, (const xmlChar *) elem)) && \
51 ((xmlStrEqual(node->ns->href, xmlSchematronNs)) || \ 51 ((xmlStrEqual(node->ns->href, xmlSchematronNs)) || \
52 (xmlStrEqual(node->ns->href, xmlOldSchematronNs)))) 52 (xmlStrEqual(node->ns->href, xmlOldSchematronNs))))
53 53
54 #define NEXT_SCHEMATRON(node) \ 54 #define NEXT_SCHEMATRON(node) \
55 while (node != NULL) { \ 55 while (node != NULL) { \
56 if ((node->type == XML_ELEMENT_NODE ) && (node->ns != NULL) && » \ 56 if ((node->type == XML_ELEMENT_NODE ) && (node->ns != NULL) &&» \
57 ((xmlStrEqual(node->ns->href, xmlSchematronNs)) || \ 57 ((xmlStrEqual(node->ns->href, xmlSchematronNs)) || \
58 (xmlStrEqual(node->ns->href, xmlOldSchematronNs)))) \ 58 (xmlStrEqual(node->ns->href, xmlOldSchematronNs)))) \
59 break; \ 59 break; \
60 node = node->next; \ 60 node = node->next; \
61 } 61 }
62 62
63 /** 63 /**
64 * TODO: 64 * TODO:
65 * 65 *
66 * macro to flag unimplemented blocks 66 * macro to flag unimplemented blocks
67 */ 67 */
68 #define TODO » » » » » » » » \ 68 #define TODO» » » » » » » » \
69 xmlGenericError(xmlGenericErrorContext, \ 69 xmlGenericError(xmlGenericErrorContext, \
70 "Unimplemented block at %s:%d\n", \ 70 "Unimplemented block at %s:%d\n", \
71 __FILE__, __LINE__); 71 __FILE__, __LINE__);
72 72
73 typedef enum { 73 typedef enum {
74 XML_SCHEMATRON_ASSERT=1, 74 XML_SCHEMATRON_ASSERT=1,
75 XML_SCHEMATRON_REPORT=2 75 XML_SCHEMATRON_REPORT=2
76 } xmlSchematronTestType; 76 } xmlSchematronTestType;
77 77
78 /** 78 /**
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 158
159 xmlDictPtr dict; 159 xmlDictPtr dict;
160 int nberrors; 160 int nberrors;
161 int err; 161 int err;
162 162
163 xmlSchematronPtr schema; 163 xmlSchematronPtr schema;
164 xmlXPathContextPtr xctxt; 164 xmlXPathContextPtr xctxt;
165 165
166 FILE *outputFile; /* if using XML_SCHEMATRON_OUT_FILE */ 166 FILE *outputFile; /* if using XML_SCHEMATRON_OUT_FILE */
167 xmlBufferPtr outputBuffer; /* if using XML_SCHEMATRON_OUT_BUFFER */ 167 xmlBufferPtr outputBuffer; /* if using XML_SCHEMATRON_OUT_BUFFER */
168 #ifdef LIBXML_OUTPUT_ENABLED
168 xmlOutputWriteCallback iowrite; /* if using XML_SCHEMATRON_OUT_IO */ 169 xmlOutputWriteCallback iowrite; /* if using XML_SCHEMATRON_OUT_IO */
169 xmlOutputCloseCallback ioclose; 170 xmlOutputCloseCallback ioclose;
171 #endif
170 void *ioctx; 172 void *ioctx;
171 173
172 /* error reporting data */ 174 /* error reporting data */
173 void *userData; /* user specific data block */ 175 void *userData; /* user specific data block */
174 xmlSchematronValidityErrorFunc error;/* the callback in case of errors */ 176 xmlSchematronValidityErrorFunc error;/* the callback in case of errors */
175 xmlSchematronValidityWarningFunc warning;/* callback in case of warning */ 177 xmlSchematronValidityWarningFunc warning;/* callback in case of warning */
176 xmlStructuredErrorFunc serror; /* the structured function */ 178 xmlStructuredErrorFunc serror; /* the structured function */
177 }; 179 };
178 180
179 struct _xmlSchematronParserCtxt { 181 struct _xmlSchematronParserCtxt {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 } 235 }
234 236
235 /** 237 /**
236 * xmlSchematronPErr: 238 * xmlSchematronPErr:
237 * @ctxt: the parsing context 239 * @ctxt: the parsing context
238 * @node: the context node 240 * @node: the context node
239 * @error: the error code 241 * @error: the error code
240 * @msg: the error message 242 * @msg: the error message
241 * @str1: extra data 243 * @str1: extra data
242 * @str2: extra data 244 * @str2: extra data
243 * 245 *
244 * Handle a parser error 246 * Handle a parser error
245 */ 247 */
246 static void 248 static void
247 xmlSchematronPErr(xmlSchematronParserCtxtPtr ctxt, xmlNodePtr node, int error, 249 xmlSchematronPErr(xmlSchematronParserCtxtPtr ctxt, xmlNodePtr node, int error,
248 const char *msg, const xmlChar * str1, const xmlChar * str2) 250 const char *msg, const xmlChar * str1, const xmlChar * str2)
249 { 251 {
250 xmlGenericErrorFunc channel = NULL; 252 xmlGenericErrorFunc channel = NULL;
251 xmlStructuredErrorFunc schannel = NULL; 253 xmlStructuredErrorFunc schannel = NULL;
252 void *data = NULL; 254 void *data = NULL;
253 255
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 xmlSchematronFree(xmlSchematronPtr schema) 563 xmlSchematronFree(xmlSchematronPtr schema)
562 { 564 {
563 if (schema == NULL) 565 if (schema == NULL)
564 return; 566 return;
565 567
566 if ((schema->doc != NULL) && (!(schema->preserve))) 568 if ((schema->doc != NULL) && (!(schema->preserve)))
567 xmlFreeDoc(schema->doc); 569 xmlFreeDoc(schema->doc);
568 570
569 if (schema->namespaces != NULL) 571 if (schema->namespaces != NULL)
570 xmlFree((char **) schema->namespaces); 572 xmlFree((char **) schema->namespaces);
571 573
572 xmlSchematronFreeRules(schema->rules); 574 xmlSchematronFreeRules(schema->rules);
573 xmlSchematronFreePatterns(schema->patterns); 575 xmlSchematronFreePatterns(schema->patterns);
574 xmlDictFree(schema->dict); 576 xmlDictFree(schema->dict);
575 xmlFree(schema); 577 xmlFree(schema);
576 } 578 }
577 579
578 /** 580 /**
579 * xmlSchematronNewParserCtxt: 581 * xmlSchematronNewParserCtxt:
580 * @URL: the location of the schema 582 * @URL: the location of the schema
581 * 583 *
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
819 xmlRealloc((xmlChar **) ctxt->namespaces, ctxt->maxNamespaces * 4 * 821 xmlRealloc((xmlChar **) ctxt->namespaces, ctxt->maxNamespaces * 4 *
820 sizeof(const xmlChar *)); 822 sizeof(const xmlChar *));
821 if (tmp == NULL) { 823 if (tmp == NULL) {
822 xmlSchematronPErrMemory(NULL, "allocating parser namespaces", 824 xmlSchematronPErrMemory(NULL, "allocating parser namespaces",
823 NULL); 825 NULL);
824 return; 826 return;
825 } 827 }
826 ctxt->namespaces = tmp; 828 ctxt->namespaces = tmp;
827 ctxt->maxNamespaces *= 2; 829 ctxt->maxNamespaces *= 2;
828 } 830 }
829 ctxt->namespaces[2 * ctxt->nbNamespaces] = 831 ctxt->namespaces[2 * ctxt->nbNamespaces] =
830 xmlDictLookup(ctxt->dict, ns, -1); 832 xmlDictLookup(ctxt->dict, ns, -1);
831 ctxt->namespaces[2 * ctxt->nbNamespaces + 1] = 833 ctxt->namespaces[2 * ctxt->nbNamespaces + 1] =
832 xmlDictLookup(ctxt->dict, prefix, -1); 834 xmlDictLookup(ctxt->dict, prefix, -1);
833 ctxt->nbNamespaces++; 835 ctxt->nbNamespaces++;
834 ctxt->namespaces[2 * ctxt->nbNamespaces] = NULL; 836 ctxt->namespaces[2 * ctxt->nbNamespaces] = NULL;
835 ctxt->namespaces[2 * ctxt->nbNamespaces + 1] = NULL; 837 ctxt->namespaces[2 * ctxt->nbNamespaces + 1] = NULL;
836 838
837 } 839 }
838 840
839 /** 841 /**
840 * xmlSchematronParseRule: 842 * xmlSchematronParseRule:
841 * @ctxt: a schema validation context 843 * @ctxt: a schema validation context
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
1281 * @ctxt: the validation context 1283 * @ctxt: the validation context
1282 * @test: the test node 1284 * @test: the test node
1283 * @cur: the current node tested 1285 * @cur: the current node tested
1284 * 1286 *
1285 * Build the string being reported to the user. 1287 * Build the string being reported to the user.
1286 * 1288 *
1287 * Returns a report string or NULL in case of error. The string needs 1289 * Returns a report string or NULL in case of error. The string needs
1288 * to be deallocated by teh caller 1290 * to be deallocated by teh caller
1289 */ 1291 */
1290 static xmlChar * 1292 static xmlChar *
1291 xmlSchematronFormatReport(xmlSchematronValidCtxtPtr ctxt, 1293 xmlSchematronFormatReport(xmlSchematronValidCtxtPtr ctxt,
1292 xmlNodePtr test, xmlNodePtr cur) { 1294 xmlNodePtr test, xmlNodePtr cur) {
1293 xmlChar *ret = NULL; 1295 xmlChar *ret = NULL;
1294 xmlNodePtr child, node; 1296 xmlNodePtr child, node;
1295 1297
1296 if ((test == NULL) || (cur == NULL)) 1298 if ((test == NULL) || (cur == NULL))
1297 return(ret); 1299 return(ret);
1298 1300
1299 child = test->children; 1301 child = test->children;
1300 while (child != NULL) { 1302 while (child != NULL) {
1301 if ((child->type == XML_TEXT_NODE) || 1303 if ((child->type == XML_TEXT_NODE) ||
1302 (child->type == XML_CDATA_SECTION_NODE)) 1304 (child->type == XML_CDATA_SECTION_NODE))
1303 ret = xmlStrcat(ret, child->content); 1305 ret = xmlStrcat(ret, child->content);
1304 else if (IS_SCHEMATRON(child, "name")) { 1306 else if (IS_SCHEMATRON(child, "name")) {
1305 xmlChar *path; 1307 xmlChar *path;
1306 1308
1307 path = xmlGetNoNsProp(child, BAD_CAST "path"); 1309 path = xmlGetNoNsProp(child, BAD_CAST "path");
1308 1310
1309 node = cur; 1311 node = cur;
1310 if (path != NULL) { 1312 if (path != NULL) {
1311 node = xmlSchematronGetNode(ctxt, cur, path); 1313 node = xmlSchematronGetNode(ctxt, cur, path);
1312 if (node == NULL) 1314 if (node == NULL)
1313 node = cur; 1315 node = cur;
1314 xmlFree(path); 1316 xmlFree(path);
1315 } 1317 }
1316 1318
1317 » if ((node->ns == NULL) || (node->ns->prefix == NULL)) 1319 » if ((node->ns == NULL) || (node->ns->prefix == NULL))
1318 ret = xmlStrcat(ret, node->name); 1320 ret = xmlStrcat(ret, node->name);
1319 else { 1321 else {
1320 ret = xmlStrcat(ret, node->ns->prefix); 1322 ret = xmlStrcat(ret, node->ns->prefix);
1321 ret = xmlStrcat(ret, BAD_CAST ":"); 1323 ret = xmlStrcat(ret, BAD_CAST ":");
1322 ret = xmlStrcat(ret, node->name); 1324 ret = xmlStrcat(ret, node->name);
1323 } 1325 }
1324 } else { 1326 } else {
1325 child = child->next; 1327 child = child->next;
1326 continue; 1328 continue;
1327 } 1329 }
(...skipping 30 matching lines...) Expand all
1358 * xmlSchematronReportSuccess: 1360 * xmlSchematronReportSuccess:
1359 * @ctxt: the validation context 1361 * @ctxt: the validation context
1360 * @test: the compiled test 1362 * @test: the compiled test
1361 * @cur: the current node tested 1363 * @cur: the current node tested
1362 * @success: boolean value for the result 1364 * @success: boolean value for the result
1363 * 1365 *
1364 * called from the validation engine when an assert or report test have 1366 * called from the validation engine when an assert or report test have
1365 * been done. 1367 * been done.
1366 */ 1368 */
1367 static void 1369 static void
1368 xmlSchematronReportSuccess(xmlSchematronValidCtxtPtr ctxt, 1370 xmlSchematronReportSuccess(xmlSchematronValidCtxtPtr ctxt,
1369 xmlSchematronTestPtr test, xmlNodePtr cur, xmlSchematronPatte rnPtr pattern, int success) { 1371 xmlSchematronTestPtr test, xmlNodePtr cur, xmlSchematronPatte rnPtr pattern, int success) {
1370 if ((ctxt == NULL) || (cur == NULL) || (test == NULL)) 1372 if ((ctxt == NULL) || (cur == NULL) || (test == NULL))
1371 return; 1373 return;
1372 /* if quiet and not SVRL report only failures */ 1374 /* if quiet and not SVRL report only failures */
1373 if ((ctxt->flags & XML_SCHEMATRON_OUT_QUIET) && 1375 if ((ctxt->flags & XML_SCHEMATRON_OUT_QUIET) &&
1374 ((ctxt->flags & XML_SCHEMATRON_OUT_XML) == 0) && 1376 ((ctxt->flags & XML_SCHEMATRON_OUT_XML) == 0) &&
1375 (test->type == XML_SCHEMATRON_REPORT)) 1377 (test->type == XML_SCHEMATRON_REPORT))
1376 return; 1378 return;
1377 if (ctxt->flags & XML_SCHEMATRON_OUT_XML) { 1379 if (ctxt->flags & XML_SCHEMATRON_OUT_XML) {
1378 TODO 1380 TODO
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1438 } 1440 }
1439 1441
1440 /** 1442 /**
1441 * xmlSchematronReportPattern: 1443 * xmlSchematronReportPattern:
1442 * @ctxt: the validation context 1444 * @ctxt: the validation context
1443 * @pattern: the current pattern 1445 * @pattern: the current pattern
1444 * 1446 *
1445 * called from the validation engine when starting to check a pattern 1447 * called from the validation engine when starting to check a pattern
1446 */ 1448 */
1447 static void 1449 static void
1448 xmlSchematronReportPattern(xmlSchematronValidCtxtPtr ctxt, 1450 xmlSchematronReportPattern(xmlSchematronValidCtxtPtr ctxt,
1449 xmlSchematronPatternPtr pattern) { 1451 xmlSchematronPatternPtr pattern) {
1450 if ((ctxt == NULL) || (pattern == NULL)) 1452 if ((ctxt == NULL) || (pattern == NULL))
1451 return; 1453 return;
1452 if ((ctxt->flags & XML_SCHEMATRON_OUT_QUIET) || (ctxt->flags & XML_SCHEMATRO N_OUT_ERROR)) /* Error gives pattern name as part of error */ 1454 if ((ctxt->flags & XML_SCHEMATRON_OUT_QUIET) || (ctxt->flags & XML_SCHEMATRO N_OUT_ERROR)) /* Error gives pattern name as part of error */
1453 return; 1455 return;
1454 if (ctxt->flags & XML_SCHEMATRON_OUT_XML) { 1456 if (ctxt->flags & XML_SCHEMATRON_OUT_XML) {
1455 TODO 1457 TODO
1456 } else { 1458 } else {
1457 char msg[1000]; 1459 char msg[1000];
1458 1460
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1565 return(cur); 1567 return(cur);
1566 } 1568 }
1567 } 1569 }
1568 1570
1569 while (cur->next != NULL) { 1571 while (cur->next != NULL) {
1570 cur = cur->next; 1572 cur = cur->next;
1571 if ((cur->type != XML_ENTITY_DECL) && 1573 if ((cur->type != XML_ENTITY_DECL) &&
1572 (cur->type != XML_DTD_NODE)) 1574 (cur->type != XML_DTD_NODE))
1573 return(cur); 1575 return(cur);
1574 } 1576 }
1575 1577
1576 do { 1578 do {
1577 cur = cur->parent; 1579 cur = cur->parent;
1578 if (cur == NULL) break; 1580 if (cur == NULL) break;
1579 if (cur->type == XML_DOCUMENT_NODE) return(NULL); 1581 if (cur->type == XML_DOCUMENT_NODE) return(NULL);
1580 if (cur->next != NULL) { 1582 if (cur->next != NULL) {
1581 cur = cur->next; 1583 cur = cur->next;
1582 return(cur); 1584 return(cur);
1583 } 1585 }
1584 } while (cur != NULL); 1586 } while (cur != NULL);
1585 return(cur); 1587 return(cur);
1586 } 1588 }
1587 1589
1588 /** 1590 /**
1589 * xmlSchematronRunTest: 1591 * xmlSchematronRunTest:
1590 * @ctxt: the schema validation context 1592 * @ctxt: the schema validation context
1591 * @test: the current test 1593 * @test: the current test
1592 * @instance: the document instace tree 1594 * @instance: the document instace tree
1593 * @cur: the current node in the instance 1595 * @cur: the current node in the instance
1594 * 1596 *
1595 * Validate a rule against a tree instance at a given position 1597 * Validate a rule against a tree instance at a given position
1596 * 1598 *
1597 * Returns 1 in case of success, 0 if error and -1 in case of internal error 1599 * Returns 1 in case of success, 0 if error and -1 in case of internal error
1598 */ 1600 */
1599 static int 1601 static int
1600 xmlSchematronRunTest(xmlSchematronValidCtxtPtr ctxt, 1602 xmlSchematronRunTest(xmlSchematronValidCtxtPtr ctxt,
1601 xmlSchematronTestPtr test, xmlDocPtr instance, xmlNodePtr cur, xmlSchematro nPatternPtr pattern) 1603 xmlSchematronTestPtr test, xmlDocPtr instance, xmlNodePtr cur, xmlSchematro nPatternPtr pattern)
1602 { 1604 {
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1646 ctxt->nberrors++; 1648 ctxt->nberrors++;
1647 1649
1648 xmlSchematronReportSuccess(ctxt, test, cur, pattern, !failed); 1650 xmlSchematronReportSuccess(ctxt, test, cur, pattern, !failed);
1649 1651
1650 return(!failed); 1652 return(!failed);
1651 } 1653 }
1652 1654
1653 /** 1655 /**
1654 * xmlSchematronValidateDoc: 1656 * xmlSchematronValidateDoc:
1655 * @ctxt: the schema validation context 1657 * @ctxt: the schema validation context
1656 * @instance: the document instace tree 1658 * @instance: the document instace tree
1657 * 1659 *
1658 * Validate a tree instance against the schematron 1660 * Validate a tree instance against the schematron
1659 * 1661 *
1660 * Returns 0 in case of success, -1 in case of internal error 1662 * Returns 0 in case of success, -1 in case of internal error
1661 * and an error count otherwise. 1663 * and an error count otherwise.
1662 */ 1664 */
1663 int 1665 int
1664 xmlSchematronValidateDoc(xmlSchematronValidCtxtPtr ctxt, xmlDocPtr instance) 1666 xmlSchematronValidateDoc(xmlSchematronValidCtxtPtr ctxt, xmlDocPtr instance)
1665 { 1667 {
1666 xmlNodePtr cur, root; 1668 xmlNodePtr cur, root;
(...skipping 23 matching lines...) Expand all
1690 while (rule != NULL) { 1692 while (rule != NULL) {
1691 if (xmlPatternMatch(rule->pattern, cur) == 1) { 1693 if (xmlPatternMatch(rule->pattern, cur) == 1) {
1692 test = rule->tests; 1694 test = rule->tests;
1693 while (test != NULL) { 1695 while (test != NULL) {
1694 xmlSchematronRunTest(ctxt, test, instance, cur, (xmlSche matronPatternPtr)rule->pattern); 1696 xmlSchematronRunTest(ctxt, test, instance, cur, (xmlSche matronPatternPtr)rule->pattern);
1695 test = test->next; 1697 test = test->next;
1696 } 1698 }
1697 } 1699 }
1698 rule = rule->next; 1700 rule = rule->next;
1699 } 1701 }
1700 » 1702
1701 cur = xmlSchematronNextNode(cur); 1703 cur = xmlSchematronNextNode(cur);
1702 } 1704 }
1703 } else { 1705 } else {
1704 /* 1706 /*
1705 * Process all contexts one at a time 1707 * Process all contexts one at a time
1706 */ 1708 */
1707 pattern = ctxt->schema->patterns; 1709 pattern = ctxt->schema->patterns;
1708 » 1710
1709 while (pattern != NULL) { 1711 while (pattern != NULL) {
1710 xmlSchematronReportPattern(ctxt, pattern); 1712 xmlSchematronReportPattern(ctxt, pattern);
1711 1713
1712 /* 1714 /*
1713 * TODO convert the pattern rule to a direct XPath and 1715 * TODO convert the pattern rule to a direct XPath and
1714 * compute directly instead of using the pattern matching 1716 * compute directly instead of using the pattern matching
1715 » * over the full document... 1717 » * over the full document...
1716 * Check the exact semantic 1718 * Check the exact semantic
1717 */ 1719 */
1718 cur = root; 1720 cur = root;
1719 while (cur != NULL) { 1721 while (cur != NULL) {
1720 rule = pattern->rules; 1722 rule = pattern->rules;
1721 while (rule != NULL) { 1723 while (rule != NULL) {
1722 if (xmlPatternMatch(rule->pattern, cur) == 1) { 1724 if (xmlPatternMatch(rule->pattern, cur) == 1) {
1723 test = rule->tests; 1725 test = rule->tests;
1724 while (test != NULL) { 1726 while (test != NULL) {
1725 xmlSchematronRunTest(ctxt, test, instance, cur, patt ern); 1727 xmlSchematronRunTest(ctxt, test, instance, cur, patt ern);
1726 test = test->next; 1728 test = test->next;
1727 } 1729 }
1728 } 1730 }
1729 rule = rule->patnext; 1731 rule = rule->patnext;
1730 } 1732 }
1731 » » 1733
1732 cur = xmlSchematronNextNode(cur); 1734 cur = xmlSchematronNextNode(cur);
1733 } 1735 }
1734 pattern = pattern->next; 1736 pattern = pattern->next;
1735 } 1737 }
1736 } 1738 }
1737 return(ctxt->nberrors); 1739 return(ctxt->nberrors);
1738 } 1740 }
1739 1741
1740 #ifdef STANDALONE 1742 #ifdef STANDALONE
1741 int 1743 int
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1776 1778
1777 xmlCleanupParser(); 1779 xmlCleanupParser();
1778 xmlMemoryDump(); 1780 xmlMemoryDump();
1779 1781
1780 return (0); 1782 return (0);
1781 } 1783 }
1782 #endif 1784 #endif
1783 #define bottom_schematron 1785 #define bottom_schematron
1784 #include "elfgcchack.h" 1786 #include "elfgcchack.h"
1785 #endif /* LIBXML_SCHEMATRON_ENABLED */ 1787 #endif /* LIBXML_SCHEMATRON_ENABLED */
OLDNEW
« no previous file with comments | « third_party/libxml/src/save.h ('k') | third_party/libxml/src/testAutomata.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698