relaxng.h 5.7 KB

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