relaxng.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. /*
  2. * Summary: implementation of the Relax-NG validation
  3. * Description: implementation of the Relax-NG validation
  4. *
  5. * Copy: See Copyright for the status of this software.
  6. *
  7. * Author: Daniel Veillard
  8. */
  9. #ifndef __XML_RELAX_NG__
  10. #define __XML_RELAX_NG__
  11. #include <libxml/xmlversion.h>
  12. #include <libxml/hash.h>
  13. #include <libxml/xmlstring.h>
  14. #ifdef LIBXML_SCHEMAS_ENABLED
  15. #ifdef __cplusplus
  16. extern "C" {
  17. #endif
  18. typedef struct _xmlRelaxNG xmlRelaxNG;
  19. typedef xmlRelaxNG *xmlRelaxNGPtr;
  20. /**
  21. * A schemas validation context
  22. */
  23. typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx, const char *msg, ...);
  24. typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx, const char *msg, ...);
  25. typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt;
  26. typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr;
  27. typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt;
  28. typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr;
  29. /*
  30. * xmlRelaxNGValidErr:
  31. *
  32. * List of possible Relax NG validation errors
  33. */
  34. typedef enum {
  35. XML_RELAXNG_OK = 0,
  36. XML_RELAXNG_ERR_MEMORY,
  37. XML_RELAXNG_ERR_TYPE,
  38. XML_RELAXNG_ERR_TYPEVAL,
  39. XML_RELAXNG_ERR_DUPID,
  40. XML_RELAXNG_ERR_TYPECMP,
  41. XML_RELAXNG_ERR_NOSTATE,
  42. XML_RELAXNG_ERR_NODEFINE,
  43. XML_RELAXNG_ERR_LISTEXTRA,
  44. XML_RELAXNG_ERR_LISTEMPTY,
  45. XML_RELAXNG_ERR_INTERNODATA,
  46. XML_RELAXNG_ERR_INTERSEQ,
  47. XML_RELAXNG_ERR_INTEREXTRA,
  48. XML_RELAXNG_ERR_ELEMNAME,
  49. XML_RELAXNG_ERR_ATTRNAME,
  50. XML_RELAXNG_ERR_ELEMNONS,
  51. XML_RELAXNG_ERR_ATTRNONS,
  52. XML_RELAXNG_ERR_ELEMWRONGNS,
  53. XML_RELAXNG_ERR_ATTRWRONGNS,
  54. XML_RELAXNG_ERR_ELEMEXTRANS,
  55. XML_RELAXNG_ERR_ATTREXTRANS,
  56. XML_RELAXNG_ERR_ELEMNOTEMPTY,
  57. XML_RELAXNG_ERR_NOELEM,
  58. XML_RELAXNG_ERR_NOTELEM,
  59. XML_RELAXNG_ERR_ATTRVALID,
  60. XML_RELAXNG_ERR_CONTENTVALID,
  61. XML_RELAXNG_ERR_EXTRACONTENT,
  62. XML_RELAXNG_ERR_INVALIDATTR,
  63. XML_RELAXNG_ERR_DATAELEM,
  64. XML_RELAXNG_ERR_VALELEM,
  65. XML_RELAXNG_ERR_LISTELEM,
  66. XML_RELAXNG_ERR_DATATYPE,
  67. XML_RELAXNG_ERR_VALUE,
  68. XML_RELAXNG_ERR_LIST,
  69. XML_RELAXNG_ERR_NOGRAMMAR,
  70. XML_RELAXNG_ERR_EXTRADATA,
  71. XML_RELAXNG_ERR_LACKDATA,
  72. XML_RELAXNG_ERR_INTERNAL,
  73. XML_RELAXNG_ERR_ELEMWRONG,
  74. XML_RELAXNG_ERR_TEXTWRONG
  75. } xmlRelaxNGValidErr;
  76. /*
  77. * xmlRelaxNGParserFlags:
  78. *
  79. * List of possible Relax NG Parser flags
  80. */
  81. typedef enum {
  82. XML_RELAXNGP_NONE = 0,
  83. XML_RELAXNGP_FREE_DOC = 1,
  84. XML_RELAXNGP_CRNG = 2
  85. } xmlRelaxNGParserFlag;
  86. XMLPUBFUN int XMLCALL
  87. xmlRelaxNGInitTypes (void);
  88. XMLPUBFUN void XMLCALL
  89. xmlRelaxNGCleanupTypes (void);
  90. /*
  91. * Interfaces for parsing.
  92. */
  93. XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
  94. xmlRelaxNGNewParserCtxt (const char *URL);
  95. XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
  96. xmlRelaxNGNewMemParserCtxt (const char *buffer,
  97. int size);
  98. XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
  99. xmlRelaxNGNewDocParserCtxt (xmlDocPtr doc);
  100. XMLPUBFUN int XMLCALL
  101. xmlRelaxParserSetFlag (xmlRelaxNGParserCtxtPtr ctxt,
  102. int flag);
  103. XMLPUBFUN void XMLCALL
  104. xmlRelaxNGFreeParserCtxt (xmlRelaxNGParserCtxtPtr ctxt);
  105. XMLPUBFUN void XMLCALL
  106. xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
  107. xmlRelaxNGValidityErrorFunc err,
  108. xmlRelaxNGValidityWarningFunc warn,
  109. void *ctx);
  110. XMLPUBFUN int XMLCALL
  111. xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
  112. xmlRelaxNGValidityErrorFunc *err,
  113. xmlRelaxNGValidityWarningFunc *warn,
  114. void **ctx);
  115. XMLPUBFUN void XMLCALL
  116. xmlRelaxNGSetParserStructuredErrors(
  117. xmlRelaxNGParserCtxtPtr ctxt,
  118. xmlStructuredErrorFunc serror,
  119. void *ctx);
  120. XMLPUBFUN xmlRelaxNGPtr XMLCALL
  121. xmlRelaxNGParse (xmlRelaxNGParserCtxtPtr ctxt);
  122. XMLPUBFUN void XMLCALL
  123. xmlRelaxNGFree (xmlRelaxNGPtr schema);
  124. #ifdef LIBXML_OUTPUT_ENABLED
  125. XMLPUBFUN void XMLCALL
  126. xmlRelaxNGDump (FILE *output,
  127. xmlRelaxNGPtr schema);
  128. XMLPUBFUN void XMLCALL
  129. xmlRelaxNGDumpTree (FILE * output,
  130. xmlRelaxNGPtr schema);
  131. #endif /* LIBXML_OUTPUT_ENABLED */
  132. /*
  133. * Interfaces for validating
  134. */
  135. XMLPUBFUN void XMLCALL
  136. xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
  137. xmlRelaxNGValidityErrorFunc err,
  138. xmlRelaxNGValidityWarningFunc warn,
  139. void *ctx);
  140. XMLPUBFUN int XMLCALL
  141. xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
  142. xmlRelaxNGValidityErrorFunc *err,
  143. xmlRelaxNGValidityWarningFunc *warn,
  144. void **ctx);
  145. XMLPUBFUN void XMLCALL
  146. xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt,
  147. xmlStructuredErrorFunc serror, void *ctx);
  148. XMLPUBFUN xmlRelaxNGValidCtxtPtr XMLCALL
  149. xmlRelaxNGNewValidCtxt (xmlRelaxNGPtr schema);
  150. XMLPUBFUN void XMLCALL
  151. xmlRelaxNGFreeValidCtxt (xmlRelaxNGValidCtxtPtr ctxt);
  152. XMLPUBFUN int XMLCALL
  153. xmlRelaxNGValidateDoc (xmlRelaxNGValidCtxtPtr ctxt,
  154. xmlDocPtr doc);
  155. /*
  156. * Interfaces for progressive validation when possible
  157. */
  158. XMLPUBFUN int XMLCALL
  159. xmlRelaxNGValidatePushElement (xmlRelaxNGValidCtxtPtr ctxt,
  160. xmlDocPtr doc,
  161. xmlNodePtr elem);
  162. XMLPUBFUN int XMLCALL
  163. xmlRelaxNGValidatePushCData (xmlRelaxNGValidCtxtPtr ctxt,
  164. const xmlChar *data,
  165. int len);
  166. XMLPUBFUN int XMLCALL
  167. xmlRelaxNGValidatePopElement (xmlRelaxNGValidCtxtPtr ctxt,
  168. xmlDocPtr doc,
  169. xmlNodePtr elem);
  170. XMLPUBFUN int XMLCALL
  171. xmlRelaxNGValidateFullElement (xmlRelaxNGValidCtxtPtr ctxt,
  172. xmlDocPtr doc,
  173. xmlNodePtr elem);
  174. #ifdef __cplusplus
  175. }
  176. #endif
  177. #endif /* LIBXML_SCHEMAS_ENABLED */
  178. #endif /* __XML_RELAX_NG__ */