blob: ebf6f5367987907e7e4f78e2160030e8888063ce [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,
209 XML_DTD_MIXED_CORRUPT,
210 XML_DTD_NO_DOC,
211 XML_DTD_NO_ELEM_NAME,
212 XML_DTD_NOTATION_REDEFINED
Daniel Veillard3b7840c2003-09-11 23:42:01 +0000213} xmlParserErrors;
Owen Taylor3473f882001-02-23 17:55:21 +0000214
Daniel Veillard9d06d302002-01-22 18:15:52 +0000215/**
216 * xmlGenericErrorFunc:
217 * @ctx: a parsing context
218 * @msg: the message
219 * @...: the extra arguments of the varags to format the message
220 *
Owen Taylor3473f882001-02-23 17:55:21 +0000221 * Signature of the function to use when there is an error and
Daniel Veillard61f26172002-03-12 18:46:39 +0000222 * no parsing or validity context available .
Owen Taylor3473f882001-02-23 17:55:21 +0000223 */
Daniel Veillard9d06d302002-01-22 18:15:52 +0000224typedef void (*xmlGenericErrorFunc) (void *ctx,
225 const char *msg,
226 ...);
Owen Taylor3473f882001-02-23 17:55:21 +0000227
228/*
Daniel Veillardd0463562001-10-13 09:15:48 +0000229 * Use the following function to reset the two global variables
230 * xmlGenericError and xmlGenericErrorContext.
Owen Taylor3473f882001-02-23 17:55:21 +0000231 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000232XMLPUBFUN void XMLCALL
233 xmlSetGenericErrorFunc (void *ctx,
Owen Taylor3473f882001-02-23 17:55:21 +0000234 xmlGenericErrorFunc handler);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000235XMLPUBFUN void XMLCALL
236 initGenericErrorDefaultFunc (xmlGenericErrorFunc *handler);
Owen Taylor3473f882001-02-23 17:55:21 +0000237
238/*
239 * Default message routines used by SAX and Valid context for error
Daniel Veillard61f26172002-03-12 18:46:39 +0000240 * and warning reporting.
Owen Taylor3473f882001-02-23 17:55:21 +0000241 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000242XMLPUBFUN void XMLCALL
243 xmlParserError (void *ctx,
Owen Taylor3473f882001-02-23 17:55:21 +0000244 const char *msg,
245 ...);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000246XMLPUBFUN void XMLCALL
247 xmlParserWarning (void *ctx,
Owen Taylor3473f882001-02-23 17:55:21 +0000248 const char *msg,
249 ...);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000250XMLPUBFUN void XMLCALL
251 xmlParserValidityError (void *ctx,
Owen Taylor3473f882001-02-23 17:55:21 +0000252 const char *msg,
253 ...);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000254XMLPUBFUN void XMLCALL
255 xmlParserValidityWarning (void *ctx,
Owen Taylor3473f882001-02-23 17:55:21 +0000256 const char *msg,
257 ...);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000258XMLPUBFUN void XMLCALL
259 xmlParserPrintFileInfo (xmlParserInputPtr input);
260XMLPUBFUN void XMLCALL
261 xmlParserPrintFileContext (xmlParserInputPtr input);
Owen Taylor3473f882001-02-23 17:55:21 +0000262
Daniel Veillard2b8c4a12003-10-02 22:28:19 +0000263/*
264 * Extended error information routines
265 */
266XMLPUBFUN xmlErrorPtr XMLCALL
267 xmlGetLastError (void);
268XMLPUBFUN void XMLCALL
269 xmlResetLastError (void);
270XMLPUBFUN xmlErrorPtr XMLCALL
271 xmlCtxtGetLastError (void *ctx);
272XMLPUBFUN void XMLCALL
273 xmlCtxtResetLastError (void *ctx);
274XMLPUBFUN void XMLCALL
275 xmlResetError (xmlErrorPtr err);
276XMLPUBFUN int XMLCALL
277 xmlCopyError (xmlErrorPtr from,
278 xmlErrorPtr to);
279
280/*
281 * Intended for internal use mostly
282 */
283XMLPUBFUN void XMLCALL
284 xmlRaiseError (void *ctx,
285 int domain,
286 int code,
287 xmlErrorLevel level,
288 const char *file,
289 int line,
290 const char *str1,
291 const char *str2,
292 const char *str3,
293 int int1,
294 int int2,
295 const char *msg,
296 ...);
Owen Taylor3473f882001-02-23 17:55:21 +0000297#ifdef __cplusplus
298}
299#endif
300#endif /* __XML_ERROR_H__ */