blob: 4ecddc1f718e42483069824cbf3fefb8b94af9e2 [file] [log] [blame]
Daniel Veillarda11001b2001-11-12 22:45:36 +00001#include <libxml/parser.h>
2
Owen Taylor3473f882001-02-23 17:55:21 +00003#ifndef __XML_ERROR_H__
4#define __XML_ERROR_H__
5
Owen Taylor3473f882001-02-23 17:55:21 +00006#ifdef __cplusplus
7extern "C" {
8#endif
9
Daniel Veillard2b8c4a12003-10-02 22:28:19 +000010/**
11 * xmlErrorLevel:
12 *
13 * Indicates the level of an error
14 */
15typedef enum {
16 XML_ERR_NONE = 0,
17 XML_ERR_WARNING = 1, /* A simple warning */
18 XML_ERR_ERROR = 2, /* A recoverable error */
19 XML_ERR_FATAL = 3 /* A fatal error */
20} xmlErrorLevel;
21
22/**
23 * xmlErrorDomain:
24 *
25 * Indicates where an error may have come from
26 */
27typedef enum {
28 XML_FROM_NONE = 0,
29 XML_FROM_PARSER, /* The XML parser */
30 XML_FROM_NAMESPACE, /* The XML Namespace module */
31 XML_FROM_DTD, /* The XML DTD validation */
32 XML_FROM_HTML, /* The HTML parser */
33 XML_FROM_MEMORY, /* The memory allocator */
34 XML_FROM_OUTPUT, /* The serialization code */
35 XML_FROM_IO, /* The Input/Output stack */
36 XML_FROM_XINCLUDE, /* The XInclude processing */
37 XML_FROM_XPATH, /* The XPath module */
38 XML_FROM_XPOINTER, /* The XPointer module */
39 XML_FROM_REGEXP, /* The regular expressions module */
40 XML_FROM_SCHEMAS, /* The W3C XML Schemas module */
41 XML_FROM_RELAXNG, /* The Relax-NG module */
42 XML_FROM_CATALOG, /* The Catalog module */
43 XML_FROM_C14N, /* The Canonicalization module */
44 XML_FROM_XSLT /* The XSLT engine from libxslt */
45} xmlErrorDomain;
46
47/**
48 * xmlError:
49 *
50 * An XML Error instance.
51 */
52
53typedef struct _xmlError xmlError;
54typedef xmlError *xmlErrorPtr;
55struct _xmlError {
56 int domain; /* What part of the library raised this error */
57 int code; /* The error code, e.g. an xmlParserError */
58 char *message;/* human-readable informative error message */
59 xmlErrorLevel level;/* how consequent is the error */
60 char *file; /* the filename */
61 int line; /* the line number if available */
62 char *str1; /* extra string information */
63 char *str2; /* extra string information */
64 char *str3; /* extra string information */
65 int int1; /* extra number information */
66 int int2; /* extra number information */
67};
68
69/**
70 * xmlParserError:
71 *
72 * This is an error that the XML (or HTML) parser can generate
73 */
Owen Taylor3473f882001-02-23 17:55:21 +000074typedef enum {
75 XML_ERR_OK = 0,
76 XML_ERR_INTERNAL_ERROR,
77 XML_ERR_NO_MEMORY,
78
79 XML_ERR_DOCUMENT_START, /* 3 */
80 XML_ERR_DOCUMENT_EMPTY,
81 XML_ERR_DOCUMENT_END,
82
83 XML_ERR_INVALID_HEX_CHARREF, /* 6 */
84 XML_ERR_INVALID_DEC_CHARREF,
85 XML_ERR_INVALID_CHARREF,
86 XML_ERR_INVALID_CHAR,
87
88 XML_ERR_CHARREF_AT_EOF, /* 10 */
89 XML_ERR_CHARREF_IN_PROLOG,
90 XML_ERR_CHARREF_IN_EPILOG,
91 XML_ERR_CHARREF_IN_DTD,
92 XML_ERR_ENTITYREF_AT_EOF,
93 XML_ERR_ENTITYREF_IN_PROLOG,
94 XML_ERR_ENTITYREF_IN_EPILOG,
95 XML_ERR_ENTITYREF_IN_DTD,
96 XML_ERR_PEREF_AT_EOF,
97 XML_ERR_PEREF_IN_PROLOG,
98 XML_ERR_PEREF_IN_EPILOG,
99 XML_ERR_PEREF_IN_INT_SUBSET,
100
101 XML_ERR_ENTITYREF_NO_NAME, /* 22 */
102 XML_ERR_ENTITYREF_SEMICOL_MISSING,
103
104 XML_ERR_PEREF_NO_NAME, /* 24 */
105 XML_ERR_PEREF_SEMICOL_MISSING,
106
107 XML_ERR_UNDECLARED_ENTITY, /* 26 */
108 XML_WAR_UNDECLARED_ENTITY,
109 XML_ERR_UNPARSED_ENTITY,
110 XML_ERR_ENTITY_IS_EXTERNAL,
111 XML_ERR_ENTITY_IS_PARAMETER,
112
113 XML_ERR_UNKNOWN_ENCODING, /* 31 */
114 XML_ERR_UNSUPPORTED_ENCODING,
115
116 XML_ERR_STRING_NOT_STARTED, /* 33 */
117 XML_ERR_STRING_NOT_CLOSED,
118 XML_ERR_NS_DECL_ERROR,
119
120 XML_ERR_ENTITY_NOT_STARTED, /* 36 */
121 XML_ERR_ENTITY_NOT_FINISHED,
122
123 XML_ERR_LT_IN_ATTRIBUTE, /* 38 */
124 XML_ERR_ATTRIBUTE_NOT_STARTED,
125 XML_ERR_ATTRIBUTE_NOT_FINISHED,
126 XML_ERR_ATTRIBUTE_WITHOUT_VALUE,
127 XML_ERR_ATTRIBUTE_REDEFINED,
128
129 XML_ERR_LITERAL_NOT_STARTED, /* 43 */
130 XML_ERR_LITERAL_NOT_FINISHED,
131
132 XML_ERR_COMMENT_NOT_FINISHED, /* 45 */
133
Daniel Veillard9ec26532003-09-23 07:43:19 +0000134 XML_ERR_PI_NOT_STARTED, /* 46 */
Owen Taylor3473f882001-02-23 17:55:21 +0000135 XML_ERR_PI_NOT_FINISHED,
136
Daniel Veillard9ec26532003-09-23 07:43:19 +0000137 XML_ERR_NOTATION_NOT_STARTED, /* 48 */
Owen Taylor3473f882001-02-23 17:55:21 +0000138 XML_ERR_NOTATION_NOT_FINISHED,
139
Daniel Veillard9ec26532003-09-23 07:43:19 +0000140 XML_ERR_ATTLIST_NOT_STARTED, /* 50 */
Owen Taylor3473f882001-02-23 17:55:21 +0000141 XML_ERR_ATTLIST_NOT_FINISHED,
142
Daniel Veillard9ec26532003-09-23 07:43:19 +0000143 XML_ERR_MIXED_NOT_STARTED, /* 52 */
Owen Taylor3473f882001-02-23 17:55:21 +0000144 XML_ERR_MIXED_NOT_FINISHED,
145
Daniel Veillard9ec26532003-09-23 07:43:19 +0000146 XML_ERR_ELEMCONTENT_NOT_STARTED, /* 54 */
Owen Taylor3473f882001-02-23 17:55:21 +0000147 XML_ERR_ELEMCONTENT_NOT_FINISHED,
148
Daniel Veillard9ec26532003-09-23 07:43:19 +0000149 XML_ERR_XMLDECL_NOT_STARTED, /* 56 */
Owen Taylor3473f882001-02-23 17:55:21 +0000150 XML_ERR_XMLDECL_NOT_FINISHED,
151
Daniel Veillard9ec26532003-09-23 07:43:19 +0000152 XML_ERR_CONDSEC_NOT_STARTED, /* 58 */
Owen Taylor3473f882001-02-23 17:55:21 +0000153 XML_ERR_CONDSEC_NOT_FINISHED,
154
Daniel Veillard9ec26532003-09-23 07:43:19 +0000155 XML_ERR_EXT_SUBSET_NOT_FINISHED, /* 60 */
Owen Taylor3473f882001-02-23 17:55:21 +0000156
Daniel Veillard9ec26532003-09-23 07:43:19 +0000157 XML_ERR_DOCTYPE_NOT_FINISHED, /* 61 */
Owen Taylor3473f882001-02-23 17:55:21 +0000158
Daniel Veillard9ec26532003-09-23 07:43:19 +0000159 XML_ERR_MISPLACED_CDATA_END, /* 62 */
Owen Taylor3473f882001-02-23 17:55:21 +0000160 XML_ERR_CDATA_NOT_FINISHED,
161
Daniel Veillard9ec26532003-09-23 07:43:19 +0000162 XML_ERR_RESERVED_XML_NAME, /* 64 */
Owen Taylor3473f882001-02-23 17:55:21 +0000163
Daniel Veillard9ec26532003-09-23 07:43:19 +0000164 XML_ERR_SPACE_REQUIRED, /* 65 */
Owen Taylor3473f882001-02-23 17:55:21 +0000165 XML_ERR_SEPARATOR_REQUIRED,
166 XML_ERR_NMTOKEN_REQUIRED,
167 XML_ERR_NAME_REQUIRED,
168 XML_ERR_PCDATA_REQUIRED,
169 XML_ERR_URI_REQUIRED,
170 XML_ERR_PUBID_REQUIRED,
171 XML_ERR_LT_REQUIRED,
172 XML_ERR_GT_REQUIRED,
173 XML_ERR_LTSLASH_REQUIRED,
174 XML_ERR_EQUAL_REQUIRED,
175
Daniel Veillard9ec26532003-09-23 07:43:19 +0000176 XML_ERR_TAG_NAME_MISMATCH, /* 76 */
Daniel Veillard5344c602001-12-31 16:37:34 +0000177 XML_ERR_TAG_NOT_FINISHED,
Owen Taylor3473f882001-02-23 17:55:21 +0000178
Daniel Veillard9ec26532003-09-23 07:43:19 +0000179 XML_ERR_STANDALONE_VALUE, /* 78 */
Owen Taylor3473f882001-02-23 17:55:21 +0000180
Daniel Veillard9ec26532003-09-23 07:43:19 +0000181 XML_ERR_ENCODING_NAME, /* 79 */
Owen Taylor3473f882001-02-23 17:55:21 +0000182
Daniel Veillard9ec26532003-09-23 07:43:19 +0000183 XML_ERR_HYPHEN_IN_COMMENT, /* 80 */
Owen Taylor3473f882001-02-23 17:55:21 +0000184
Daniel Veillard9ec26532003-09-23 07:43:19 +0000185 XML_ERR_INVALID_ENCODING, /* 81 */
Owen Taylor3473f882001-02-23 17:55:21 +0000186
Daniel Veillard9ec26532003-09-23 07:43:19 +0000187 XML_ERR_EXT_ENTITY_STANDALONE, /* 82 */
Owen Taylor3473f882001-02-23 17:55:21 +0000188
Daniel Veillard9ec26532003-09-23 07:43:19 +0000189 XML_ERR_CONDSEC_INVALID, /* 83 */
Owen Taylor3473f882001-02-23 17:55:21 +0000190
Daniel Veillard9ec26532003-09-23 07:43:19 +0000191 XML_ERR_VALUE_REQUIRED, /* 84 */
Owen Taylor3473f882001-02-23 17:55:21 +0000192
Daniel Veillard9ec26532003-09-23 07:43:19 +0000193 XML_ERR_NOT_WELL_BALANCED, /* 85 */
194 XML_ERR_EXTRA_CONTENT, /* 86 */
195 XML_ERR_ENTITY_CHAR_ERROR, /* 87 */
Owen Taylor3473f882001-02-23 17:55:21 +0000196 XML_ERR_ENTITY_PE_INTERNAL, /* 88 */
197 XML_ERR_ENTITY_LOOP, /* 89 */
198 XML_ERR_ENTITY_BOUNDARY, /* 90 */
199 XML_ERR_INVALID_URI, /* 91 */
Daniel Veillard5d90b6c2001-08-22 14:29:45 +0000200 XML_ERR_URI_FRAGMENT, /* 92 */
Daniel Veillard7a51d6d2001-09-10 14:40:43 +0000201 XML_WAR_CATALOG_PI, /* 93 */
Daniel Veillard3b7840c2003-09-11 23:42:01 +0000202 XML_ERR_NO_DTD, /* 94 */
203 XML_NS_ERR_XML_NAMESPACE,
204 XML_NS_ERR_UNDEFINED_NAMESPACE,
205 XML_NS_ERR_QNAME,
Daniel Veillard1afc9f32003-09-13 12:44:05 +0000206 XML_NS_ERR_ATTRIBUTE_REDEFINED,
Daniel Veillardbdbe0d42003-09-14 19:56:14 +0000207 XML_ERR_CONDSEC_INVALID_KEYWORD,
Daniel Veillard2b8c4a12003-10-02 22:28:19 +0000208 XML_ERR_VERSION_MISSING,
Daniel Veillardbb5abab2003-10-03 22:21:51 +0000209 XML_DTD_ATTRIBUTE_DEFAULT,
210 XML_DTD_ATTRIBUTE_REDEFINED,
211 XML_DTD_ATTRIBUTE_VALUE,
212 XML_DTD_CONTENT_ERROR,
213 XML_DTD_CONTENT_MODEL,
214 XML_DTD_CONTENT_NOT_DETERMINIST,
215 XML_DTD_DIFFERENT_PREFIX,
216 XML_DTD_ELEM_DEFAULT_NAMESPACE,
217 XML_DTD_ELEM_NAMESPACE,
218 XML_DTD_ELEM_REDEFINED,
219 XML_DTD_EMPTY_NOTATION,
220 XML_DTD_ENTITY_TYPE,
221 XML_DTD_ID_FIXED,
222 XML_DTD_ID_REDEFINED,
223 XML_DTD_ID_SUBSET,
224 XML_DTD_INVALID_CHILD,
225 XML_DTD_INVALID_DEFAULT,
226 XML_DTD_LOAD_ERROR,
227 XML_DTD_MISSING_ATTRIBUTE,
Daniel Veillard2b8c4a12003-10-02 22:28:19 +0000228 XML_DTD_MIXED_CORRUPT,
Daniel Veillardbb5abab2003-10-03 22:21:51 +0000229 XML_DTD_MULTIPLE_ID,
Daniel Veillard2b8c4a12003-10-02 22:28:19 +0000230 XML_DTD_NO_DOC,
Daniel Veillardbb5abab2003-10-03 22:21:51 +0000231 XML_DTD_NO_DTD,
Daniel Veillard2b8c4a12003-10-02 22:28:19 +0000232 XML_DTD_NO_ELEM_NAME,
Daniel Veillardbb5abab2003-10-03 22:21:51 +0000233 XML_DTD_NO_PREFIX,
234 XML_DTD_NO_ROOT,
235 XML_DTD_NOTATION_REDEFINED,
236 XML_DTD_NOTATION_VALUE,
237 XML_DTD_NOT_EMPTY,
238 XML_DTD_NOT_PCDATA,
239 XML_DTD_NOT_STANDALONE,
240 XML_DTD_ROOT_NAME,
241 XML_DTD_STANDALONE_WHITE_SPACE,
242 XML_DTD_UNKNOWN_ATTRIBUTE,
243 XML_DTD_UNKNOWN_ELEM,
244 XML_DTD_UNKNOWN_ENTITY,
245 XML_DTD_UNKNOWN_ID,
246 XML_DTD_UNKNOWN_NOTATION
Daniel Veillard3b7840c2003-09-11 23:42:01 +0000247} xmlParserErrors;
Owen Taylor3473f882001-02-23 17:55:21 +0000248
Daniel Veillard9d06d302002-01-22 18:15:52 +0000249/**
250 * xmlGenericErrorFunc:
251 * @ctx: a parsing context
252 * @msg: the message
253 * @...: the extra arguments of the varags to format the message
254 *
Owen Taylor3473f882001-02-23 17:55:21 +0000255 * Signature of the function to use when there is an error and
Daniel Veillard61f26172002-03-12 18:46:39 +0000256 * no parsing or validity context available .
Owen Taylor3473f882001-02-23 17:55:21 +0000257 */
Daniel Veillard9d06d302002-01-22 18:15:52 +0000258typedef void (*xmlGenericErrorFunc) (void *ctx,
259 const char *msg,
260 ...);
Owen Taylor3473f882001-02-23 17:55:21 +0000261
262/*
Daniel Veillardd0463562001-10-13 09:15:48 +0000263 * Use the following function to reset the two global variables
264 * xmlGenericError and xmlGenericErrorContext.
Owen Taylor3473f882001-02-23 17:55:21 +0000265 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000266XMLPUBFUN void XMLCALL
267 xmlSetGenericErrorFunc (void *ctx,
Owen Taylor3473f882001-02-23 17:55:21 +0000268 xmlGenericErrorFunc handler);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000269XMLPUBFUN void XMLCALL
270 initGenericErrorDefaultFunc (xmlGenericErrorFunc *handler);
Owen Taylor3473f882001-02-23 17:55:21 +0000271
272/*
273 * Default message routines used by SAX and Valid context for error
Daniel Veillard61f26172002-03-12 18:46:39 +0000274 * and warning reporting.
Owen Taylor3473f882001-02-23 17:55:21 +0000275 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000276XMLPUBFUN void XMLCALL
277 xmlParserError (void *ctx,
Owen Taylor3473f882001-02-23 17:55:21 +0000278 const char *msg,
279 ...);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000280XMLPUBFUN void XMLCALL
281 xmlParserWarning (void *ctx,
Owen Taylor3473f882001-02-23 17:55:21 +0000282 const char *msg,
283 ...);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000284XMLPUBFUN void XMLCALL
285 xmlParserValidityError (void *ctx,
Owen Taylor3473f882001-02-23 17:55:21 +0000286 const char *msg,
287 ...);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000288XMLPUBFUN void XMLCALL
289 xmlParserValidityWarning (void *ctx,
Owen Taylor3473f882001-02-23 17:55:21 +0000290 const char *msg,
291 ...);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000292XMLPUBFUN void XMLCALL
293 xmlParserPrintFileInfo (xmlParserInputPtr input);
294XMLPUBFUN void XMLCALL
295 xmlParserPrintFileContext (xmlParserInputPtr input);
Owen Taylor3473f882001-02-23 17:55:21 +0000296
Daniel Veillard2b8c4a12003-10-02 22:28:19 +0000297/*
298 * Extended error information routines
299 */
300XMLPUBFUN xmlErrorPtr XMLCALL
301 xmlGetLastError (void);
302XMLPUBFUN void XMLCALL
303 xmlResetLastError (void);
304XMLPUBFUN xmlErrorPtr XMLCALL
305 xmlCtxtGetLastError (void *ctx);
306XMLPUBFUN void XMLCALL
307 xmlCtxtResetLastError (void *ctx);
308XMLPUBFUN void XMLCALL
309 xmlResetError (xmlErrorPtr err);
310XMLPUBFUN int XMLCALL
311 xmlCopyError (xmlErrorPtr from,
312 xmlErrorPtr to);
313
Daniel Veillardbb5abab2003-10-03 22:21:51 +0000314#ifdef IN_LIBXML
Daniel Veillard2b8c4a12003-10-02 22:28:19 +0000315/*
Daniel Veillardbb5abab2003-10-03 22:21:51 +0000316 * Internal callback reporting routine
Daniel Veillard2b8c4a12003-10-02 22:28:19 +0000317 */
Daniel Veillardbb5abab2003-10-03 22:21:51 +0000318XMLPUBFUN void XMLCALL
319 __xmlRaiseError (xmlGenericErrorFunc channel,
320 void *data,
321 void *ctx,
322 void *node,
Daniel Veillard2b8c4a12003-10-02 22:28:19 +0000323 int domain,
324 int code,
325 xmlErrorLevel level,
326 const char *file,
327 int line,
328 const char *str1,
329 const char *str2,
330 const char *str3,
331 int int1,
332 int int2,
333 const char *msg,
334 ...);
Daniel Veillardbb5abab2003-10-03 22:21:51 +0000335#endif
Owen Taylor3473f882001-02-23 17:55:21 +0000336#ifdef __cplusplus
337}
338#endif
339#endif /* __XML_ERROR_H__ */