/ lib / lxml / includes / libxml / xmlreader.h
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 occurred
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  XMLPUBFUN xmlChar * XMLCALL
407  	    xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator);
408  XMLPUBFUN void XMLCALL
409  	    xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader,
410  					 xmlTextReaderErrorFunc f,
411  					 void *arg);
412  XMLPUBFUN void XMLCALL
413  	    xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader,
414  						   xmlStructuredErrorFunc f,
415  						   void *arg);
416  XMLPUBFUN void XMLCALL
417  	    xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader,
418  					 xmlTextReaderErrorFunc *f,
419  					 void **arg);
420  
421  #endif /* LIBXML_READER_ENABLED */
422  
423  #ifdef __cplusplus
424  }
425  #endif
426  
427  #endif /* __XML_XMLREADER_H__ */
428