blob: 2c99e3a765df9cfceb63586ff98496db74ca1393 [file] [log] [blame]
Daniel Veillarde1ca5032002-12-09 14:13:43 +00001/*
Daniel Veillardbe586972003-11-18 20:56:51 +00002 * Summary: the XMLReader implementation
3 * Description: API of the XML streaming API based on C# interfaces.
Daniel Veillarde1ca5032002-12-09 14:13:43 +00004 *
Daniel Veillardbe586972003-11-18 20:56:51 +00005 * Copy: See Copyright for the status of this software.
Daniel Veillarde1ca5032002-12-09 14:13:43 +00006 *
Daniel Veillardbe586972003-11-18 20:56:51 +00007 * Author: Daniel Veillard
Daniel Veillarde1ca5032002-12-09 14:13:43 +00008 */
9
10#ifndef __XML_XMLREADER_H__
11#define __XML_XMLREADER_H__
12
Igor Zlatkovic76874e42003-08-25 09:05:12 +000013#include <libxml/xmlversion.h>
Daniel Veillarde1ca5032002-12-09 14:13:43 +000014#include <libxml/tree.h>
15#include <libxml/xmlIO.h>
Daniel Veillard33300b42003-04-17 09:09:19 +000016#ifdef LIBXML_SCHEMAS_ENABLED
17#include <libxml/relaxng.h>
Daniel Veillardf10ae122005-07-10 19:03:16 +000018#include <libxml/xmlschemas.h>
Daniel Veillard33300b42003-04-17 09:09:19 +000019#endif
Daniel Veillarde1ca5032002-12-09 14:13:43 +000020
21#ifdef __cplusplus
22extern "C" {
23#endif
24
Daniel Veillardda0ff5d2004-04-20 09:45:26 +000025/**
Daniel Veillard438ebbd2008-05-12 12:58:46 +000026 * xmlParserSeverities:
27 *
28 * How severe an error callback is when the per-reader error callback API
29 * is used.
30 */
31typedef 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/**
Daniel Veillardda0ff5d2004-04-20 09:45:26 +000041 * xmlTextReaderMode:
42 *
43 * Internal state values for the reader.
44 */
45typedef 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
Daniel Veillarddee23482008-04-11 12:58:43 +000058 * is better to use xmlParserOption and the xmlReaderNewxxx and
Daniel Veillardda0ff5d2004-04-20 09:45:26 +000059 * xmlReaderForxxx APIs now.
60 */
Daniel Veillardbeb70bd2002-12-18 14:53:54 +000061typedef enum {
62 XML_PARSER_LOADDTD = 1,
Daniel Veillarde18fc182002-12-28 22:56:33 +000063 XML_PARSER_DEFAULTATTRS = 2,
64 XML_PARSER_VALIDATE = 3,
65 XML_PARSER_SUBST_ENTITIES = 4
Daniel Veillardbeb70bd2002-12-18 14:53:54 +000066} xmlParserProperties;
67
Daniel Veillardda0ff5d2004-04-20 09:45:26 +000068/**
Daniel Veillardda0ff5d2004-04-20 09:45:26 +000069 * xmlReaderTypes:
70 *
71 * Predefined constants for the different types of nodes.
72 */
Daniel Veillard0ab6fa02003-08-09 18:01:53 +000073typedef enum {
Daniel Veillardd6038e02003-07-30 16:37:18 +000074 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
Daniel Veillard0ab6fa02003-08-09 18:01:53 +000092} xmlReaderTypes;
Daniel Veillardd6038e02003-07-30 16:37:18 +000093
Daniel Veillardda0ff5d2004-04-20 09:45:26 +000094/**
95 * xmlTextReader:
96 *
97 * Structure for an xmlReader context.
98 */
Daniel Veillarde1ca5032002-12-09 14:13:43 +000099typedef struct _xmlTextReader xmlTextReader;
Daniel Veillardda0ff5d2004-04-20 09:45:26 +0000100
101/**
102 * xmlTextReaderPtr:
103 *
104 * Pointer to an xmlReader context.
105 */
Daniel Veillarde1ca5032002-12-09 14:13:43 +0000106typedef xmlTextReader *xmlTextReaderPtr;
107
108/*
109 * Constructors & Destructor
110 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000111XMLPUBFUN xmlTextReaderPtr XMLCALL
112 xmlNewTextReader (xmlParserInputBufferPtr input,
Daniel Veillardea7751d2002-12-20 00:16:24 +0000113 const char *URI);
Daniel Veillarddee23482008-04-11 12:58:43 +0000114XMLPUBFUN xmlTextReaderPtr XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000115 xmlNewTextReaderFilename(const char *URI);
Aleksey Sanind8377642007-01-03 23:13:12 +0000116
Daniel Veillarddee23482008-04-11 12:58:43 +0000117XMLPUBFUN void XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000118 xmlFreeTextReader (xmlTextReaderPtr reader);
Daniel Veillarde1ca5032002-12-09 14:13:43 +0000119
Daniel Veillarddee23482008-04-11 12:58:43 +0000120XMLPUBFUN int XMLCALL
Aleksey Sanind8377642007-01-03 23:13:12 +0000121 xmlTextReaderSetup(xmlTextReaderPtr reader,
122 xmlParserInputBufferPtr input, const char *URL,
123 const char *encoding, int options);
124
Daniel Veillarde1ca5032002-12-09 14:13:43 +0000125/*
126 * Iterators
127 */
Daniel Veillarddee23482008-04-11 12:58:43 +0000128XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000129 xmlTextReaderRead (xmlTextReaderPtr reader);
Daniel Veillardd0271472006-01-02 10:22:02 +0000130
131#ifdef LIBXML_WRITER_ENABLED
Daniel Veillarddee23482008-04-11 12:58:43 +0000132XMLPUBFUN xmlChar * XMLCALL
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800133 xmlTextReaderReadInnerXml(xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000134
135XMLPUBFUN xmlChar * XMLCALL
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800136 xmlTextReaderReadOuterXml(xmlTextReaderPtr reader);
Daniel Veillardd0271472006-01-02 10:22:02 +0000137#endif
138
Daniel Veillarddee23482008-04-11 12:58:43 +0000139XMLPUBFUN xmlChar * XMLCALL
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800140 xmlTextReaderReadString (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000141XMLPUBFUN int XMLCALL
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800142 xmlTextReaderReadAttributeValue(xmlTextReaderPtr reader);
Daniel Veillarde1ca5032002-12-09 14:13:43 +0000143
144/*
145 * Attributes of the node
146 */
Daniel Veillarddee23482008-04-11 12:58:43 +0000147XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000148 xmlTextReaderAttributeCount(xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000149XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000150 xmlTextReaderDepth (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000151XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000152 xmlTextReaderHasAttributes(xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000153XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000154 xmlTextReaderHasValue(xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000155XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000156 xmlTextReaderIsDefault (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000157XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000158 xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000159XMLPUBFUN int XMLCALL
Daniel Veillarde72c5082003-09-19 12:44:05 +0000160 xmlTextReaderNodeType (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000161XMLPUBFUN int XMLCALL
Daniel Veillarde72c5082003-09-19 12:44:05 +0000162 xmlTextReaderQuoteChar (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000163XMLPUBFUN int XMLCALL
Daniel Veillarde72c5082003-09-19 12:44:05 +0000164 xmlTextReaderReadState (xmlTextReaderPtr reader);
Daniel Veillarde2811272004-10-19 09:04:23 +0000165XMLPUBFUN int XMLCALL
166 xmlTextReaderIsNamespaceDecl(xmlTextReaderPtr reader);
Daniel Veillard0eb38c72002-12-14 23:00:35 +0000167
Daniel Veillarddee23482008-04-11 12:58:43 +0000168XMLPUBFUN const xmlChar * XMLCALL
Daniel Veillarde72c5082003-09-19 12:44:05 +0000169 xmlTextReaderConstBaseUri (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000170XMLPUBFUN const xmlChar * XMLCALL
Daniel Veillarde72c5082003-09-19 12:44:05 +0000171 xmlTextReaderConstLocalName (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000172XMLPUBFUN const xmlChar * XMLCALL
Daniel Veillarde72c5082003-09-19 12:44:05 +0000173 xmlTextReaderConstName (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000174XMLPUBFUN const xmlChar * XMLCALL
Daniel Veillarde72c5082003-09-19 12:44:05 +0000175 xmlTextReaderConstNamespaceUri(xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000176XMLPUBFUN const xmlChar * XMLCALL
Daniel Veillarde72c5082003-09-19 12:44:05 +0000177 xmlTextReaderConstPrefix (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000178XMLPUBFUN const xmlChar * XMLCALL
Daniel Veillarde72c5082003-09-19 12:44:05 +0000179 xmlTextReaderConstXmlLang (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000180XMLPUBFUN const xmlChar * XMLCALL
Daniel Veillardf85ce8e2003-09-22 10:24:45 +0000181 xmlTextReaderConstString (xmlTextReaderPtr reader,
Daniel Veillarddee23482008-04-11 12:58:43 +0000182 const xmlChar *str);
183XMLPUBFUN const xmlChar * XMLCALL
Daniel Veillard198c1bf2003-10-20 17:07:41 +0000184 xmlTextReaderConstValue (xmlTextReaderPtr reader);
185
186/*
187 * use the Const version of the routine for
188 * better performance and simpler code
189 */
Daniel Veillarddee23482008-04-11 12:58:43 +0000190XMLPUBFUN xmlChar * XMLCALL
Daniel Veillard198c1bf2003-10-20 17:07:41 +0000191 xmlTextReaderBaseUri (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000192XMLPUBFUN xmlChar * XMLCALL
Daniel Veillard198c1bf2003-10-20 17:07:41 +0000193 xmlTextReaderLocalName (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000194XMLPUBFUN xmlChar * XMLCALL
Daniel Veillard198c1bf2003-10-20 17:07:41 +0000195 xmlTextReaderName (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000196XMLPUBFUN xmlChar * XMLCALL
Daniel Veillard198c1bf2003-10-20 17:07:41 +0000197 xmlTextReaderNamespaceUri(xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000198XMLPUBFUN xmlChar * XMLCALL
Daniel Veillard198c1bf2003-10-20 17:07:41 +0000199 xmlTextReaderPrefix (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000200XMLPUBFUN xmlChar * XMLCALL
Daniel Veillard198c1bf2003-10-20 17:07:41 +0000201 xmlTextReaderXmlLang (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000202XMLPUBFUN xmlChar * XMLCALL
Daniel Veillard198c1bf2003-10-20 17:07:41 +0000203 xmlTextReaderValue (xmlTextReaderPtr reader);
Daniel Veillardf85ce8e2003-09-22 10:24:45 +0000204
Daniel Veillard0eb38c72002-12-14 23:00:35 +0000205/*
206 * Methods of the XmlTextReader
207 */
Daniel Veillarddee23482008-04-11 12:58:43 +0000208XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000209 xmlTextReaderClose (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000210XMLPUBFUN xmlChar * XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000211 xmlTextReaderGetAttributeNo (xmlTextReaderPtr reader,
Daniel Veillard0eb38c72002-12-14 23:00:35 +0000212 int no);
Daniel Veillarddee23482008-04-11 12:58:43 +0000213XMLPUBFUN xmlChar * XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000214 xmlTextReaderGetAttribute (xmlTextReaderPtr reader,
Daniel Veillard0eb38c72002-12-14 23:00:35 +0000215 const xmlChar *name);
Daniel Veillarddee23482008-04-11 12:58:43 +0000216XMLPUBFUN xmlChar * XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000217 xmlTextReaderGetAttributeNs (xmlTextReaderPtr reader,
Daniel Veillard0eb38c72002-12-14 23:00:35 +0000218 const xmlChar *localName,
219 const xmlChar *namespaceURI);
Daniel Veillarddee23482008-04-11 12:58:43 +0000220XMLPUBFUN xmlParserInputBufferPtr XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000221 xmlTextReaderGetRemainder (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000222XMLPUBFUN xmlChar * XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000223 xmlTextReaderLookupNamespace(xmlTextReaderPtr reader,
Daniel Veillardda46d2d2002-12-15 23:36:49 +0000224 const xmlChar *prefix);
Daniel Veillarddee23482008-04-11 12:58:43 +0000225XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000226 xmlTextReaderMoveToAttributeNo(xmlTextReaderPtr reader,
Daniel Veillardda46d2d2002-12-15 23:36:49 +0000227 int no);
Daniel Veillarddee23482008-04-11 12:58:43 +0000228XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000229 xmlTextReaderMoveToAttribute(xmlTextReaderPtr reader,
Daniel Veillardda46d2d2002-12-15 23:36:49 +0000230 const xmlChar *name);
Daniel Veillarddee23482008-04-11 12:58:43 +0000231XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000232 xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr reader,
Daniel Veillardda46d2d2002-12-15 23:36:49 +0000233 const xmlChar *localName,
234 const xmlChar *namespaceURI);
Daniel Veillarddee23482008-04-11 12:58:43 +0000235XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000236 xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000237XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000238 xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000239XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000240 xmlTextReaderMoveToElement (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000241XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000242 xmlTextReaderNormalization (xmlTextReaderPtr reader);
Daniel Veillarde2811272004-10-19 09:04:23 +0000243XMLPUBFUN const xmlChar * XMLCALL
244 xmlTextReaderConstEncoding (xmlTextReaderPtr reader);
Daniel Veillardda46d2d2002-12-15 23:36:49 +0000245
Daniel Veillardbeb70bd2002-12-18 14:53:54 +0000246/*
247 * Extensions
248 */
Daniel Veillarddee23482008-04-11 12:58:43 +0000249XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000250 xmlTextReaderSetParserProp (xmlTextReaderPtr reader,
Daniel Veillardbeb70bd2002-12-18 14:53:54 +0000251 int prop,
252 int value);
Daniel Veillarddee23482008-04-11 12:58:43 +0000253XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000254 xmlTextReaderGetParserProp (xmlTextReaderPtr reader,
Daniel Veillardbeb70bd2002-12-18 14:53:54 +0000255 int prop);
Daniel Veillarddee23482008-04-11 12:58:43 +0000256XMLPUBFUN xmlNodePtr XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000257 xmlTextReaderCurrentNode (xmlTextReaderPtr reader);
Aleksey Sanind671e282005-01-03 21:58:59 +0000258
259XMLPUBFUN int XMLCALL
260 xmlTextReaderGetParserLineNumber(xmlTextReaderPtr reader);
261
262XMLPUBFUN int XMLCALL
263 xmlTextReaderGetParserColumnNumber(xmlTextReaderPtr reader);
264
Daniel Veillarddee23482008-04-11 12:58:43 +0000265XMLPUBFUN xmlNodePtr XMLCALL
Daniel Veillard9ee35f32003-09-28 00:19:54 +0000266 xmlTextReaderPreserve (xmlTextReaderPtr reader);
William M. Brack21e4ef22005-01-02 09:53:13 +0000267#ifdef LIBXML_PATTERN_ENABLED
Daniel Veillarddee23482008-04-11 12:58:43 +0000268XMLPUBFUN int XMLCALL
Daniel Veillard1e906612003-12-05 14:57:46 +0000269 xmlTextReaderPreservePattern(xmlTextReaderPtr reader,
Daniel Veillarddee23482008-04-11 12:58:43 +0000270 const xmlChar *pattern,
Daniel Veillardffa7b7e2003-12-05 16:10:21 +0000271 const xmlChar **namespaces);
William M. Brack21e4ef22005-01-02 09:53:13 +0000272#endif /* LIBXML_PATTERN_ENABLED */
Daniel Veillarddee23482008-04-11 12:58:43 +0000273XMLPUBFUN xmlDocPtr XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000274 xmlTextReaderCurrentDoc (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000275XMLPUBFUN xmlNodePtr XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000276 xmlTextReaderExpand (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000277XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000278 xmlTextReaderNext (xmlTextReaderPtr reader);
Daniel Veillard198c1bf2003-10-20 17:07:41 +0000279XMLPUBFUN int XMLCALL
280 xmlTextReaderNextSibling (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000281XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000282 xmlTextReaderIsValid (xmlTextReaderPtr reader);
Daniel Veillardf4e55762003-04-15 23:32:22 +0000283#ifdef LIBXML_SCHEMAS_ENABLED
Daniel Veillarddee23482008-04-11 12:58:43 +0000284XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000285 xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader,
Daniel Veillardf4e55762003-04-15 23:32:22 +0000286 const char *rng);
Daniel Veillarddee23482008-04-11 12:58:43 +0000287XMLPUBFUN int XMLCALL
Noam Postavsky15794992012-03-19 16:08:16 +0800288 xmlTextReaderRelaxNGValidateCtxt(xmlTextReaderPtr reader,
289 xmlRelaxNGValidCtxtPtr ctxt,
290 int options);
291
292XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000293 xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader,
Daniel Veillard33300b42003-04-17 09:09:19 +0000294 xmlRelaxNGPtr schema);
Daniel Veillardf10ae122005-07-10 19:03:16 +0000295XMLPUBFUN int XMLCALL
296 xmlTextReaderSchemaValidate (xmlTextReaderPtr reader,
Daniel Veillarddee23482008-04-11 12:58:43 +0000297 const char *xsd);
Kasimier T. Buchcikbdadaed2005-12-07 14:02:42 +0000298XMLPUBFUN int XMLCALL
299 xmlTextReaderSchemaValidateCtxt(xmlTextReaderPtr reader,
300 xmlSchemaValidCtxtPtr ctxt,
301 int options);
Daniel Veillarddee23482008-04-11 12:58:43 +0000302XMLPUBFUN int XMLCALL
Daniel Veillardf10ae122005-07-10 19:03:16 +0000303 xmlTextReaderSetSchema (xmlTextReaderPtr reader,
Daniel Veillarddee23482008-04-11 12:58:43 +0000304 xmlSchemaPtr schema);
Daniel Veillardf4e55762003-04-15 23:32:22 +0000305#endif
Daniel Veillarde2811272004-10-19 09:04:23 +0000306XMLPUBFUN const xmlChar * XMLCALL
307 xmlTextReaderConstXmlVersion(xmlTextReaderPtr reader);
308XMLPUBFUN int XMLCALL
309 xmlTextReaderStandalone (xmlTextReaderPtr reader);
Daniel Veillard26f70262003-01-16 22:45:08 +0000310
Daniel Veillard5e094142005-02-18 19:36:12 +0000311
312/*
313 * Index lookup
314 */
315XMLPUBFUN long XMLCALL
316 xmlTextReaderByteConsumed (xmlTextReaderPtr reader);
317
Daniel Veillard26f70262003-01-16 22:45:08 +0000318/*
Daniel Veillardfc8dc352003-10-18 09:07:46 +0000319 * New more complete APIs for simpler creation and reuse of readers
320 */
321XMLPUBFUN xmlTextReaderPtr XMLCALL
Daniel Veillard198c1bf2003-10-20 17:07:41 +0000322 xmlReaderWalker (xmlDocPtr doc);
323XMLPUBFUN xmlTextReaderPtr XMLCALL
Daniel Veillardfc8dc352003-10-18 09:07:46 +0000324 xmlReaderForDoc (const xmlChar * cur,
325 const char *URL,
326 const char *encoding,
327 int options);
328XMLPUBFUN xmlTextReaderPtr XMLCALL
329 xmlReaderForFile (const char *filename,
330 const char *encoding,
331 int options);
332XMLPUBFUN xmlTextReaderPtr XMLCALL
333 xmlReaderForMemory (const char *buffer,
334 int size,
335 const char *URL,
336 const char *encoding,
337 int options);
338XMLPUBFUN xmlTextReaderPtr XMLCALL
339 xmlReaderForFd (int fd,
340 const char *URL,
341 const char *encoding,
342 int options);
343XMLPUBFUN xmlTextReaderPtr XMLCALL
344 xmlReaderForIO (xmlInputReadCallback ioread,
345 xmlInputCloseCallback ioclose,
346 void *ioctx,
347 const char *URL,
348 const char *encoding,
349 int options);
350
351XMLPUBFUN int XMLCALL
Daniel Veillard198c1bf2003-10-20 17:07:41 +0000352 xmlReaderNewWalker (xmlTextReaderPtr reader,
353 xmlDocPtr doc);
354XMLPUBFUN int XMLCALL
Daniel Veillardfc8dc352003-10-18 09:07:46 +0000355 xmlReaderNewDoc (xmlTextReaderPtr reader,
356 const xmlChar * cur,
357 const char *URL,
358 const char *encoding,
359 int options);
360XMLPUBFUN int XMLCALL
361 xmlReaderNewFile (xmlTextReaderPtr reader,
362 const char *filename,
363 const char *encoding,
364 int options);
365XMLPUBFUN int XMLCALL
366 xmlReaderNewMemory (xmlTextReaderPtr reader,
367 const char *buffer,
368 int size,
369 const char *URL,
370 const char *encoding,
371 int options);
372XMLPUBFUN int XMLCALL
373 xmlReaderNewFd (xmlTextReaderPtr reader,
374 int fd,
375 const char *URL,
376 const char *encoding,
377 int options);
378XMLPUBFUN 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/*
Daniel Veillard26f70262003-01-16 22:45:08 +0000387 * Error handling extensions
388 */
Daniel Veillard417be3a2003-01-20 21:26:34 +0000389typedef void * xmlTextReaderLocatorPtr;
Daniel Veillarddee23482008-04-11 12:58:43 +0000390
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 */
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800400typedef void (XMLCALL *xmlTextReaderErrorFunc)(void *arg,
401 const char *msg,
402 xmlParserSeverities severity,
403 xmlTextReaderLocatorPtr locator);
Daniel Veillarddee23482008-04-11 12:58:43 +0000404XMLPUBFUN int XMLCALL
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800405 xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator);
Daniel Veillarddee23482008-04-11 12:58:43 +0000406XMLPUBFUN xmlChar * XMLCALL
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800407 xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator);
Daniel Veillarddee23482008-04-11 12:58:43 +0000408XMLPUBFUN void XMLCALL
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800409 xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader,
410 xmlTextReaderErrorFunc f,
411 void *arg);
William M. Brack93d004f2004-02-03 00:14:10 +0000412XMLPUBFUN void XMLCALL
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800413 xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader,
414 xmlStructuredErrorFunc f,
415 void *arg);
Daniel Veillarddee23482008-04-11 12:58:43 +0000416XMLPUBFUN void XMLCALL
Daniel Veillardf8e3db02012-09-11 13:26:36 +0800417 xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader,
418 xmlTextReaderErrorFunc *f,
419 void **arg);
Daniel Veillard26f70262003-01-16 22:45:08 +0000420
Daniel Veillard438ebbd2008-05-12 12:58:46 +0000421#endif /* LIBXML_READER_ENABLED */
422
Daniel Veillarde1ca5032002-12-09 14:13:43 +0000423#ifdef __cplusplus
424}
425#endif
Daniel Veillarda2351322004-06-27 12:08:10 +0000426
Daniel Veillarde1ca5032002-12-09 14:13:43 +0000427#endif /* __XML_XMLREADER_H__ */
428