f24e9bb1c1f05deabdbbb867b618a549200bea7c
[platform/upstream/libxml2.git] / include / libxml / xmlreader.h
1 /*
2  * Summary: the XMLReader implementation
3  * Description: API of the XML streaming API based on C# interfaces.
4  *
5  * Copy: See Copyright for the status of this software.
6  *
7  * Author: Daniel Veillard
8  */
9
10 #ifndef __XML_XMLREADER_H__
11 #define __XML_XMLREADER_H__
12
13 #include <libxml/xmlversion.h>
14 #include <libxml/tree.h>
15 #include <libxml/xmlIO.h>
16 #ifdef LIBXML_SCHEMAS_ENABLED
17 #include <libxml/relaxng.h>
18 #include <libxml/xmlschemas.h>
19 #endif
20
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24
25 /**
26  * xmlParserSeverities:
27  *
28  * How severe an error callback is when the per-reader error callback API
29  * is used.
30  */
31 typedef enum {
32     XML_PARSER_SEVERITY_VALIDITY_WARNING = 1,
33     XML_PARSER_SEVERITY_VALIDITY_ERROR = 2,
34     XML_PARSER_SEVERITY_WARNING = 3,
35     XML_PARSER_SEVERITY_ERROR = 4
36 } xmlParserSeverities;
37
38 #ifdef LIBXML_READER_ENABLED
39
40 /**
41  * xmlTextReaderMode:
42  *
43  * Internal state values for the reader.
44  */
45 typedef enum {
46     XML_TEXTREADER_MODE_INITIAL = 0,
47     XML_TEXTREADER_MODE_INTERACTIVE = 1,
48     XML_TEXTREADER_MODE_ERROR = 2,
49     XML_TEXTREADER_MODE_EOF =3,
50     XML_TEXTREADER_MODE_CLOSED = 4,
51     XML_TEXTREADER_MODE_READING = 5
52 } xmlTextReaderMode;
53
54 /**
55  * xmlParserProperties:
56  *
57  * Some common options to use with xmlTextReaderSetParserProp, but it
58  * is better to use xmlParserOption and the xmlReaderNewxxx and
59  * xmlReaderForxxx APIs now.
60  */
61 typedef enum {
62     XML_PARSER_LOADDTD = 1,
63     XML_PARSER_DEFAULTATTRS = 2,
64     XML_PARSER_VALIDATE = 3,
65     XML_PARSER_SUBST_ENTITIES = 4
66 } xmlParserProperties;
67
68 /**
69  * xmlReaderTypes:
70  *
71  * Predefined constants for the different types of nodes.
72  */
73 typedef enum {
74     XML_READER_TYPE_NONE = 0,
75     XML_READER_TYPE_ELEMENT = 1,
76     XML_READER_TYPE_ATTRIBUTE = 2,
77     XML_READER_TYPE_TEXT = 3,
78     XML_READER_TYPE_CDATA = 4,
79     XML_READER_TYPE_ENTITY_REFERENCE = 5,
80     XML_READER_TYPE_ENTITY = 6,
81     XML_READER_TYPE_PROCESSING_INSTRUCTION = 7,
82     XML_READER_TYPE_COMMENT = 8,
83     XML_READER_TYPE_DOCUMENT = 9,
84     XML_READER_TYPE_DOCUMENT_TYPE = 10,
85     XML_READER_TYPE_DOCUMENT_FRAGMENT = 11,
86     XML_READER_TYPE_NOTATION = 12,
87     XML_READER_TYPE_WHITESPACE = 13,
88     XML_READER_TYPE_SIGNIFICANT_WHITESPACE = 14,
89     XML_READER_TYPE_END_ELEMENT = 15,
90     XML_READER_TYPE_END_ENTITY = 16,
91     XML_READER_TYPE_XML_DECLARATION = 17
92 } xmlReaderTypes;
93
94 /**
95  * xmlTextReader:
96  *
97  * Structure for an xmlReader context.
98  */
99 typedef struct _xmlTextReader xmlTextReader;
100
101 /**
102  * xmlTextReaderPtr:
103  *
104  * Pointer to an xmlReader context.
105  */
106 typedef xmlTextReader *xmlTextReaderPtr;
107
108 /*
109  * Constructors & Destructor
110  */
111 XMLPUBFUN xmlTextReaderPtr XMLCALL
112                         xmlNewTextReader        (xmlParserInputBufferPtr input,
113                                                  const char *URI);
114 XMLPUBFUN xmlTextReaderPtr XMLCALL
115                         xmlNewTextReaderFilename(const char *URI);
116
117 XMLPUBFUN void XMLCALL
118                         xmlFreeTextReader       (xmlTextReaderPtr reader);
119
120 XMLPUBFUN int XMLCALL
121             xmlTextReaderSetup(xmlTextReaderPtr reader,
122                    xmlParserInputBufferPtr input, const char *URL,
123                    const char *encoding, int options);
124
125 /*
126  * Iterators
127  */
128 XMLPUBFUN int XMLCALL
129                         xmlTextReaderRead       (xmlTextReaderPtr reader);
130
131 #ifdef LIBXML_WRITER_ENABLED
132 XMLPUBFUN xmlChar * XMLCALL
133                         xmlTextReaderReadInnerXml       (xmlTextReaderPtr reader);
134
135 XMLPUBFUN xmlChar * XMLCALL
136                         xmlTextReaderReadOuterXml       (xmlTextReaderPtr reader);
137 #endif
138
139 XMLPUBFUN xmlChar * XMLCALL
140                         xmlTextReaderReadString         (xmlTextReaderPtr reader);
141 XMLPUBFUN int XMLCALL
142                         xmlTextReaderReadAttributeValue (xmlTextReaderPtr reader);
143
144 /*
145  * Attributes of the node
146  */
147 XMLPUBFUN int XMLCALL
148                         xmlTextReaderAttributeCount(xmlTextReaderPtr reader);
149 XMLPUBFUN int XMLCALL
150                         xmlTextReaderDepth      (xmlTextReaderPtr reader);
151 XMLPUBFUN int XMLCALL
152                         xmlTextReaderHasAttributes(xmlTextReaderPtr reader);
153 XMLPUBFUN int XMLCALL
154                         xmlTextReaderHasValue(xmlTextReaderPtr reader);
155 XMLPUBFUN int XMLCALL
156                         xmlTextReaderIsDefault  (xmlTextReaderPtr reader);
157 XMLPUBFUN int XMLCALL
158                         xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader);
159 XMLPUBFUN int XMLCALL
160                         xmlTextReaderNodeType   (xmlTextReaderPtr reader);
161 XMLPUBFUN int XMLCALL
162                         xmlTextReaderQuoteChar  (xmlTextReaderPtr reader);
163 XMLPUBFUN int XMLCALL
164                         xmlTextReaderReadState  (xmlTextReaderPtr reader);
165 XMLPUBFUN int XMLCALL
166                         xmlTextReaderIsNamespaceDecl(xmlTextReaderPtr reader);
167
168 XMLPUBFUN const xmlChar * XMLCALL
169                     xmlTextReaderConstBaseUri   (xmlTextReaderPtr reader);
170 XMLPUBFUN const xmlChar * XMLCALL
171                     xmlTextReaderConstLocalName (xmlTextReaderPtr reader);
172 XMLPUBFUN const xmlChar * XMLCALL
173                     xmlTextReaderConstName      (xmlTextReaderPtr reader);
174 XMLPUBFUN const xmlChar * XMLCALL
175                     xmlTextReaderConstNamespaceUri(xmlTextReaderPtr reader);
176 XMLPUBFUN const xmlChar * XMLCALL
177                     xmlTextReaderConstPrefix    (xmlTextReaderPtr reader);
178 XMLPUBFUN const xmlChar * XMLCALL
179                     xmlTextReaderConstXmlLang   (xmlTextReaderPtr reader);
180 XMLPUBFUN const xmlChar * XMLCALL
181                     xmlTextReaderConstString    (xmlTextReaderPtr reader,
182                                                  const xmlChar *str);
183 XMLPUBFUN const xmlChar * XMLCALL
184                     xmlTextReaderConstValue     (xmlTextReaderPtr reader);
185
186 /*
187  * use the Const version of the routine for
188  * better performance and simpler code
189  */
190 XMLPUBFUN xmlChar * XMLCALL
191                         xmlTextReaderBaseUri    (xmlTextReaderPtr reader);
192 XMLPUBFUN xmlChar * XMLCALL
193                         xmlTextReaderLocalName  (xmlTextReaderPtr reader);
194 XMLPUBFUN xmlChar * XMLCALL
195                         xmlTextReaderName       (xmlTextReaderPtr reader);
196 XMLPUBFUN xmlChar * XMLCALL
197                         xmlTextReaderNamespaceUri(xmlTextReaderPtr reader);
198 XMLPUBFUN xmlChar * XMLCALL
199                         xmlTextReaderPrefix     (xmlTextReaderPtr reader);
200 XMLPUBFUN xmlChar * XMLCALL
201                         xmlTextReaderXmlLang    (xmlTextReaderPtr reader);
202 XMLPUBFUN xmlChar * XMLCALL
203                         xmlTextReaderValue      (xmlTextReaderPtr reader);
204
205 /*
206  * Methods of the XmlTextReader
207  */
208 XMLPUBFUN int XMLCALL
209                     xmlTextReaderClose          (xmlTextReaderPtr reader);
210 XMLPUBFUN xmlChar * XMLCALL
211                     xmlTextReaderGetAttributeNo (xmlTextReaderPtr reader,
212                                                  int no);
213 XMLPUBFUN xmlChar * XMLCALL
214                     xmlTextReaderGetAttribute   (xmlTextReaderPtr reader,
215                                                  const xmlChar *name);
216 XMLPUBFUN xmlChar * XMLCALL
217                     xmlTextReaderGetAttributeNs (xmlTextReaderPtr reader,
218                                                  const xmlChar *localName,
219                                                  const xmlChar *namespaceURI);
220 XMLPUBFUN xmlParserInputBufferPtr XMLCALL
221                     xmlTextReaderGetRemainder   (xmlTextReaderPtr reader);
222 XMLPUBFUN xmlChar * XMLCALL
223                     xmlTextReaderLookupNamespace(xmlTextReaderPtr reader,
224                                                  const xmlChar *prefix);
225 XMLPUBFUN int XMLCALL
226                     xmlTextReaderMoveToAttributeNo(xmlTextReaderPtr reader,
227                                                  int no);
228 XMLPUBFUN int XMLCALL
229                     xmlTextReaderMoveToAttribute(xmlTextReaderPtr reader,
230                                                  const xmlChar *name);
231 XMLPUBFUN int XMLCALL
232                     xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr reader,
233                                                  const xmlChar *localName,
234                                                  const xmlChar *namespaceURI);
235 XMLPUBFUN int XMLCALL
236                     xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader);
237 XMLPUBFUN int XMLCALL
238                     xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader);
239 XMLPUBFUN int XMLCALL
240                     xmlTextReaderMoveToElement  (xmlTextReaderPtr reader);
241 XMLPUBFUN int XMLCALL
242                     xmlTextReaderNormalization  (xmlTextReaderPtr reader);
243 XMLPUBFUN const xmlChar * XMLCALL
244                     xmlTextReaderConstEncoding  (xmlTextReaderPtr reader);
245
246 /*
247  * Extensions
248  */
249 XMLPUBFUN int XMLCALL
250                     xmlTextReaderSetParserProp  (xmlTextReaderPtr reader,
251                                                  int prop,
252                                                  int value);
253 XMLPUBFUN int XMLCALL
254                     xmlTextReaderGetParserProp  (xmlTextReaderPtr reader,
255                                                  int prop);
256 XMLPUBFUN xmlNodePtr XMLCALL
257                     xmlTextReaderCurrentNode    (xmlTextReaderPtr reader);
258
259 XMLPUBFUN int XMLCALL
260             xmlTextReaderGetParserLineNumber(xmlTextReaderPtr reader);
261
262 XMLPUBFUN int XMLCALL
263             xmlTextReaderGetParserColumnNumber(xmlTextReaderPtr reader);
264
265 XMLPUBFUN xmlNodePtr XMLCALL
266                     xmlTextReaderPreserve       (xmlTextReaderPtr reader);
267 #ifdef LIBXML_PATTERN_ENABLED
268 XMLPUBFUN int XMLCALL
269                     xmlTextReaderPreservePattern(xmlTextReaderPtr reader,
270                                                  const xmlChar *pattern,
271                                                  const xmlChar **namespaces);
272 #endif /* LIBXML_PATTERN_ENABLED */
273 XMLPUBFUN xmlDocPtr XMLCALL
274                     xmlTextReaderCurrentDoc     (xmlTextReaderPtr reader);
275 XMLPUBFUN xmlNodePtr XMLCALL
276                     xmlTextReaderExpand         (xmlTextReaderPtr reader);
277 XMLPUBFUN int XMLCALL
278                     xmlTextReaderNext           (xmlTextReaderPtr reader);
279 XMLPUBFUN int XMLCALL
280                     xmlTextReaderNextSibling    (xmlTextReaderPtr reader);
281 XMLPUBFUN int XMLCALL
282                     xmlTextReaderIsValid        (xmlTextReaderPtr reader);
283 #ifdef LIBXML_SCHEMAS_ENABLED
284 XMLPUBFUN int XMLCALL
285                     xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader,
286                                                  const char *rng);
287 XMLPUBFUN int XMLCALL
288                     xmlTextReaderRelaxNGValidateCtxt(xmlTextReaderPtr reader,
289                                                  xmlRelaxNGValidCtxtPtr ctxt,
290                                                  int options);
291
292 XMLPUBFUN int XMLCALL
293                     xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader,
294                                                  xmlRelaxNGPtr schema);
295 XMLPUBFUN int XMLCALL
296                     xmlTextReaderSchemaValidate (xmlTextReaderPtr reader,
297                                                  const char *xsd);
298 XMLPUBFUN int XMLCALL
299                     xmlTextReaderSchemaValidateCtxt(xmlTextReaderPtr reader,
300                                                  xmlSchemaValidCtxtPtr ctxt,
301                                                  int options);
302 XMLPUBFUN int XMLCALL
303                     xmlTextReaderSetSchema      (xmlTextReaderPtr reader,
304                                                  xmlSchemaPtr schema);
305 #endif
306 XMLPUBFUN const xmlChar * XMLCALL
307                     xmlTextReaderConstXmlVersion(xmlTextReaderPtr reader);
308 XMLPUBFUN int XMLCALL
309                     xmlTextReaderStandalone     (xmlTextReaderPtr reader);
310
311
312 /*
313  * Index lookup
314  */
315 XMLPUBFUN long XMLCALL
316                 xmlTextReaderByteConsumed       (xmlTextReaderPtr reader);
317
318 /*
319  * New more complete APIs for simpler creation and reuse of readers
320  */
321 XMLPUBFUN xmlTextReaderPtr XMLCALL
322                 xmlReaderWalker         (xmlDocPtr doc);
323 XMLPUBFUN xmlTextReaderPtr XMLCALL
324                 xmlReaderForDoc         (const xmlChar * cur,
325                                          const char *URL,
326                                          const char *encoding,
327                                          int options);
328 XMLPUBFUN xmlTextReaderPtr XMLCALL
329                 xmlReaderForFile        (const char *filename,
330                                          const char *encoding,
331                                          int options);
332 XMLPUBFUN xmlTextReaderPtr XMLCALL
333                 xmlReaderForMemory      (const char *buffer,
334                                          int size,
335                                          const char *URL,
336                                          const char *encoding,
337                                          int options);
338 XMLPUBFUN xmlTextReaderPtr XMLCALL
339                 xmlReaderForFd          (int fd,
340                                          const char *URL,
341                                          const char *encoding,
342                                          int options);
343 XMLPUBFUN xmlTextReaderPtr XMLCALL
344                 xmlReaderForIO          (xmlInputReadCallback ioread,
345                                          xmlInputCloseCallback ioclose,
346                                          void *ioctx,
347                                          const char *URL,
348                                          const char *encoding,
349                                          int options);
350
351 XMLPUBFUN int XMLCALL
352                 xmlReaderNewWalker      (xmlTextReaderPtr reader,
353                                          xmlDocPtr doc);
354 XMLPUBFUN int XMLCALL
355                 xmlReaderNewDoc         (xmlTextReaderPtr reader,
356                                          const xmlChar * cur,
357                                          const char *URL,
358                                          const char *encoding,
359                                          int options);
360 XMLPUBFUN int XMLCALL
361                 xmlReaderNewFile        (xmlTextReaderPtr reader,
362                                          const char *filename,
363                                          const char *encoding,
364                                          int options);
365 XMLPUBFUN int XMLCALL
366                 xmlReaderNewMemory      (xmlTextReaderPtr reader,
367                                          const char *buffer,
368                                          int size,
369                                          const char *URL,
370                                          const char *encoding,
371                                          int options);
372 XMLPUBFUN int XMLCALL
373                 xmlReaderNewFd          (xmlTextReaderPtr reader,
374                                          int fd,
375                                          const char *URL,
376                                          const char *encoding,
377                                          int options);
378 XMLPUBFUN int XMLCALL
379                 xmlReaderNewIO          (xmlTextReaderPtr reader,
380                                          xmlInputReadCallback ioread,
381                                          xmlInputCloseCallback ioclose,
382                                          void *ioctx,
383                                          const char *URL,
384                                          const char *encoding,
385                                          int options);
386 /*
387  * Error handling extensions
388  */
389 typedef void *  xmlTextReaderLocatorPtr;
390
391 /**
392  * xmlTextReaderErrorFunc:
393  * @arg: the user argument
394  * @msg: the message
395  * @severity: the severity of the error
396  * @locator: a locator indicating where the error occured
397  *
398  * Signature of an error callback from a reader parser
399  */
400 typedef void   (XMLCALL *xmlTextReaderErrorFunc)(void *arg,
401                                                  const char *msg,
402                                                  xmlParserSeverities severity,
403                                                  xmlTextReaderLocatorPtr locator);
404 XMLPUBFUN int XMLCALL
405                     xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator);
406 /*int             xmlTextReaderLocatorLinePosition(xmlTextReaderLocatorPtr locator);*/
407 XMLPUBFUN xmlChar * XMLCALL
408                     xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator);
409 XMLPUBFUN void XMLCALL
410                     xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader,
411                                                  xmlTextReaderErrorFunc f,
412                                                  void *arg);
413 XMLPUBFUN void XMLCALL
414                     xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader,
415                                                            xmlStructuredErrorFunc f,
416                                                            void *arg);
417 XMLPUBFUN void XMLCALL
418                     xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader,
419                                                  xmlTextReaderErrorFunc *f,
420                                                  void **arg);
421
422 #endif /* LIBXML_READER_ENABLED */
423
424 #ifdef __cplusplus
425 }
426 #endif
427
428 #endif /* __XML_XMLREADER_H__ */
429