relaxng.h 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  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. * xmlRelaxNGValidityErrorFunc:
  22. * @ctx: the validation context
  23. * @msg: the message
  24. * @...: extra arguments
  25. *
  26. * Signature of an error callback from a Relax-NG validation
  27. */
  28. typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx,
  29. const char *msg,
  30. ...) LIBXML_ATTR_FORMAT(2,3);
  31. /**
  32. * xmlRelaxNGValidityWarningFunc:
  33. * @ctx: the validation context
  34. * @msg: the message
  35. * @...: extra arguments
  36. *
  37. * Signature of a warning callback from a Relax-NG validation
  38. */
  39. typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx,
  40. const char *msg,
  41. ...) LIBXML_ATTR_FORMAT(2,3);
  42. /**
  43. * A schemas validation context
  44. */
  45. typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt;
  46. typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr;
  47. typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt;
  48. typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr;
  49. /*
  50. * xmlRelaxNGValidErr:
  51. *
  52. * List of possible Relax NG validation errors
  53. */
  54. typedef enum {
  55. XML_RELAXNG_OK = 0,
  56. XML_RELAXNG_ERR_MEMORY,
  57. XML_RELAXNG_ERR_TYPE,
  58. XML_RELAXNG_ERR_TYPEVAL,
  59. XML_RELAXNG_ERR_DUPID,
  60. XML_RELAXNG_ERR_TYPECMP,
  61. XML_RELAXNG_ERR_NOSTATE,
  62. XML_RELAXNG_ERR_NODEFINE,
  63. XML_RELAXNG_ERR_LISTEXTRA,
  64. XML_RELAXNG_ERR_LISTEMPTY,
  65. XML_RELAXNG_ERR_INTERNODATA,
  66. XML_RELAXNG_ERR_INTERSEQ,
  67. XML_RELAXNG_ERR_INTEREXTRA,
  68. XML_RELAXNG_ERR_ELEMNAME,
  69. XML_RELAXNG_ERR_ATTRNAME,
  70. XML_RELAXNG_ERR_ELEMNONS,
  71. XML_RELAXNG_ERR_ATTRNONS,
  72. XML_RELAXNG_ERR_ELEMWRONGNS,
  73. XML_RELAXNG_ERR_ATTRWRONGNS,
  74. XML_RELAXNG_ERR_ELEMEXTRANS,
  75. XML_RELAXNG_ERR_ATTREXTRANS,
  76. XML_RELAXNG_ERR_ELEMNOTEMPTY,
  77. XML_RELAXNG_ERR_NOELEM,
  78. XML_RELAXNG_ERR_NOTELEM,
  79. XML_RELAXNG_ERR_ATTRVALID,
  80. XML_RELAXNG_ERR_CONTENTVALID,
  81. XML_RELAXNG_ERR_EXTRACONTENT,
  82. XML_RELAXNG_ERR_INVALIDATTR,
  83. XML_RELAXNG_ERR_DATAELEM,
  84. XML_RELAXNG_ERR_VALELEM,
  85. XML_RELAXNG_ERR_LISTELEM,
  86. XML_RELAXNG_ERR_DATATYPE,
  87. XML_RELAXNG_ERR_VALUE,
  88. XML_RELAXNG_ERR_LIST,
  89. XML_RELAXNG_ERR_NOGRAMMAR,
  90. XML_RELAXNG_ERR_EXTRADATA,
  91. XML_RELAXNG_ERR_LACKDATA,
  92. XML_RELAXNG_ERR_INTERNAL,
  93. XML_RELAXNG_ERR_ELEMWRONG,
  94. XML_RELAXNG_ERR_TEXTWRONG
  95. } xmlRelaxNGValidErr;
  96. /*
  97. * xmlRelaxNGParserFlags:
  98. *
  99. * List of possible Relax NG Parser flags
  100. */
  101. typedef enum {
  102. XML_RELAXNGP_NONE = 0,
  103. XML_RELAXNGP_FREE_DOC = 1,
  104. XML_RELAXNGP_CRNG = 2
  105. } xmlRelaxNGParserFlag;
  106. XMLPUBFUN int XMLCALL
  107. xmlRelaxNGInitTypes (void);
  108. XML_DEPRECATED
  109. XMLPUBFUN void XMLCALL
  110. xmlRelaxNGCleanupTypes (void);
  111. /*
  112. * Interfaces for parsing.
  113. */
  114. XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
  115. xmlRelaxNGNewParserCtxt (const char *URL);
  116. XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
  117. xmlRelaxNGNewMemParserCtxt (const char *buffer,
  118. int size);
  119. XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
  120. xmlRelaxNGNewDocParserCtxt (xmlDocPtr doc);
  121. XMLPUBFUN int XMLCALL
  122. xmlRelaxParserSetFlag (xmlRelaxNGParserCtxtPtr ctxt,
  123. int flag);
  124. XMLPUBFUN void XMLCALL
  125. xmlRelaxNGFreeParserCtxt (xmlRelaxNGParserCtxtPtr ctxt);
  126. XMLPUBFUN void XMLCALL
  127. xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
  128. xmlRelaxNGValidityErrorFunc err,
  129. xmlRelaxNGValidityWarningFunc warn,
  130. void *ctx);
  131. XMLPUBFUN int XMLCALL
  132. xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
  133. xmlRelaxNGValidityErrorFunc *err,
  134. xmlRelaxNGValidityWarningFunc *warn,
  135. void **ctx);
  136. XMLPUBFUN void XMLCALL
  137. xmlRelaxNGSetParserStructuredErrors(
  138. xmlRelaxNGParserCtxtPtr ctxt,
  139. xmlStructuredErrorFunc serror,
  140. void *ctx);
  141. XMLPUBFUN xmlRelaxNGPtr XMLCALL
  142. xmlRelaxNGParse (xmlRelaxNGParserCtxtPtr ctxt);
  143. XMLPUBFUN void XMLCALL
  144. xmlRelaxNGFree (xmlRelaxNGPtr schema);
  145. #ifdef LIBXML_OUTPUT_ENABLED
  146. XMLPUBFUN void XMLCALL
  147. xmlRelaxNGDump (FILE *output,
  148. xmlRelaxNGPtr schema);
  149. XMLPUBFUN void XMLCALL
  150. xmlRelaxNGDumpTree (FILE * output,
  151. xmlRelaxNGPtr schema);
  152. #endif /* LIBXML_OUTPUT_ENABLED */
  153. /*
  154. * Interfaces for validating
  155. */
  156. XMLPUBFUN void XMLCALL
  157. xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
  158. xmlRelaxNGValidityErrorFunc err,
  159. xmlRelaxNGValidityWarningFunc warn,
  160. void *ctx);
  161. XMLPUBFUN int XMLCALL
  162. xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
  163. xmlRelaxNGValidityErrorFunc *err,
  164. xmlRelaxNGValidityWarningFunc *warn,
  165. void **ctx);
  166. XMLPUBFUN void XMLCALL
  167. xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt,
  168. xmlStructuredErrorFunc serror, void *ctx);
  169. XMLPUBFUN xmlRelaxNGValidCtxtPtr XMLCALL
  170. xmlRelaxNGNewValidCtxt (xmlRelaxNGPtr schema);
  171. XMLPUBFUN void XMLCALL
  172. xmlRelaxNGFreeValidCtxt (xmlRelaxNGValidCtxtPtr ctxt);
  173. XMLPUBFUN int XMLCALL
  174. xmlRelaxNGValidateDoc (xmlRelaxNGValidCtxtPtr ctxt,
  175. xmlDocPtr doc);
  176. /*
  177. * Interfaces for progressive validation when possible
  178. */
  179. XMLPUBFUN int XMLCALL
  180. xmlRelaxNGValidatePushElement (xmlRelaxNGValidCtxtPtr ctxt,
  181. xmlDocPtr doc,
  182. xmlNodePtr elem);
  183. XMLPUBFUN int XMLCALL
  184. xmlRelaxNGValidatePushCData (xmlRelaxNGValidCtxtPtr ctxt,
  185. const xmlChar *data,
  186. int len);
  187. XMLPUBFUN int XMLCALL
  188. xmlRelaxNGValidatePopElement (xmlRelaxNGValidCtxtPtr ctxt,
  189. xmlDocPtr doc,
  190. xmlNodePtr elem);
  191. XMLPUBFUN int XMLCALL
  192. xmlRelaxNGValidateFullElement (xmlRelaxNGValidCtxtPtr ctxt,
  193. xmlDocPtr doc,
  194. xmlNodePtr elem);
  195. #ifdef __cplusplus
  196. }
  197. #endif
  198. #endif /* LIBXML_SCHEMAS_ENABLED */
  199. #endif /* __XML_RELAX_NG__ */