blob: 696448258bd8a68f5838f2a1b2d50ef37fc9981a [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
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000133 xmlTextReaderReadInnerXml (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000134
135XMLPUBFUN xmlChar * XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000136 xmlTextReaderReadOuterXml (xmlTextReaderPtr reader);
Daniel Veillardd0271472006-01-02 10:22:02 +0000137#endif
138
Daniel Veillarddee23482008-04-11 12:58:43 +0000139XMLPUBFUN xmlChar * XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000140 xmlTextReaderReadString (xmlTextReaderPtr reader);
Daniel Veillarddee23482008-04-11 12:58:43 +0000141XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000142 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
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000288 xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader,
Daniel Veillard33300b42003-04-17 09:09:19 +0000289 xmlRelaxNGPtr schema);
Daniel Veillardf10ae122005-07-10 19:03:16 +0000290XMLPUBFUN int XMLCALL
291 xmlTextReaderSchemaValidate (xmlTextReaderPtr reader,
Daniel Veillarddee23482008-04-11 12:58:43 +0000292 const char *xsd);
Kasimier T. Buchcikbdadaed2005-12-07 14:02:42 +0000293XMLPUBFUN int XMLCALL
294 xmlTextReaderSchemaValidateCtxt(xmlTextReaderPtr reader,
295 xmlSchemaValidCtxtPtr ctxt,
296 int options);
Daniel Veillarddee23482008-04-11 12:58:43 +0000297XMLPUBFUN int XMLCALL
Daniel Veillardf10ae122005-07-10 19:03:16 +0000298 xmlTextReaderSetSchema (xmlTextReaderPtr reader,
Daniel Veillarddee23482008-04-11 12:58:43 +0000299 xmlSchemaPtr schema);
Daniel Veillardf4e55762003-04-15 23:32:22 +0000300#endif
Daniel Veillarde2811272004-10-19 09:04:23 +0000301XMLPUBFUN const xmlChar * XMLCALL
302 xmlTextReaderConstXmlVersion(xmlTextReaderPtr reader);
303XMLPUBFUN int XMLCALL
304 xmlTextReaderStandalone (xmlTextReaderPtr reader);
Daniel Veillard26f70262003-01-16 22:45:08 +0000305
Daniel Veillard5e094142005-02-18 19:36:12 +0000306
307/*
308 * Index lookup
309 */
310XMLPUBFUN long XMLCALL
311 xmlTextReaderByteConsumed (xmlTextReaderPtr reader);
312
Daniel Veillard26f70262003-01-16 22:45:08 +0000313/*
Daniel Veillardfc8dc352003-10-18 09:07:46 +0000314 * New more complete APIs for simpler creation and reuse of readers
315 */
316XMLPUBFUN xmlTextReaderPtr XMLCALL
Daniel Veillard198c1bf2003-10-20 17:07:41 +0000317 xmlReaderWalker (xmlDocPtr doc);
318XMLPUBFUN xmlTextReaderPtr XMLCALL
Daniel Veillardfc8dc352003-10-18 09:07:46 +0000319 xmlReaderForDoc (const xmlChar * cur,
320 const char *URL,
321 const char *encoding,
322 int options);
323XMLPUBFUN xmlTextReaderPtr XMLCALL
324 xmlReaderForFile (const char *filename,
325 const char *encoding,
326 int options);
327XMLPUBFUN xmlTextReaderPtr XMLCALL
328 xmlReaderForMemory (const char *buffer,
329 int size,
330 const char *URL,
331 const char *encoding,
332 int options);
333XMLPUBFUN xmlTextReaderPtr XMLCALL
334 xmlReaderForFd (int fd,
335 const char *URL,
336 const char *encoding,
337 int options);
338XMLPUBFUN xmlTextReaderPtr XMLCALL
339 xmlReaderForIO (xmlInputReadCallback ioread,
340 xmlInputCloseCallback ioclose,
341 void *ioctx,
342 const char *URL,
343 const char *encoding,
344 int options);
345
346XMLPUBFUN int XMLCALL
Daniel Veillard198c1bf2003-10-20 17:07:41 +0000347 xmlReaderNewWalker (xmlTextReaderPtr reader,
348 xmlDocPtr doc);
349XMLPUBFUN int XMLCALL
Daniel Veillardfc8dc352003-10-18 09:07:46 +0000350 xmlReaderNewDoc (xmlTextReaderPtr reader,
351 const xmlChar * cur,
352 const char *URL,
353 const char *encoding,
354 int options);
355XMLPUBFUN int XMLCALL
356 xmlReaderNewFile (xmlTextReaderPtr reader,
357 const char *filename,
358 const char *encoding,
359 int options);
360XMLPUBFUN int XMLCALL
361 xmlReaderNewMemory (xmlTextReaderPtr reader,
362 const char *buffer,
363 int size,
364 const char *URL,
365 const char *encoding,
366 int options);
367XMLPUBFUN int XMLCALL
368 xmlReaderNewFd (xmlTextReaderPtr reader,
369 int fd,
370 const char *URL,
371 const char *encoding,
372 int options);
373XMLPUBFUN int XMLCALL
374 xmlReaderNewIO (xmlTextReaderPtr reader,
375 xmlInputReadCallback ioread,
376 xmlInputCloseCallback ioclose,
377 void *ioctx,
378 const char *URL,
379 const char *encoding,
380 int options);
381/*
Daniel Veillard26f70262003-01-16 22:45:08 +0000382 * Error handling extensions
383 */
Daniel Veillard417be3a2003-01-20 21:26:34 +0000384typedef void * xmlTextReaderLocatorPtr;
Daniel Veillarddee23482008-04-11 12:58:43 +0000385
386/**
387 * xmlTextReaderErrorFunc:
388 * @arg: the user argument
389 * @msg: the message
390 * @severity: the severity of the error
391 * @locator: a locator indicating where the error occured
392 *
393 * Signature of an error callback from a reader parser
394 */
395typedef void (XMLCALL *xmlTextReaderErrorFunc)(void *arg,
Daniel Veillard26f70262003-01-16 22:45:08 +0000396 const char *msg,
Daniel Veillard417be3a2003-01-20 21:26:34 +0000397 xmlParserSeverities severity,
398 xmlTextReaderLocatorPtr locator);
Daniel Veillarddee23482008-04-11 12:58:43 +0000399XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000400 xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator);
Daniel Veillard417be3a2003-01-20 21:26:34 +0000401/*int xmlTextReaderLocatorLinePosition(xmlTextReaderLocatorPtr locator);*/
Daniel Veillarddee23482008-04-11 12:58:43 +0000402XMLPUBFUN xmlChar * XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000403 xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator);
Daniel Veillarddee23482008-04-11 12:58:43 +0000404XMLPUBFUN void XMLCALL
405 xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader,
406 xmlTextReaderErrorFunc f,
Daniel Veillard26f70262003-01-16 22:45:08 +0000407 void *arg);
William M. Brack93d004f2004-02-03 00:14:10 +0000408XMLPUBFUN void XMLCALL
409 xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader,
410 xmlStructuredErrorFunc f,
411 void *arg);
Daniel Veillarddee23482008-04-11 12:58:43 +0000412XMLPUBFUN void XMLCALL
413 xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader,
414 xmlTextReaderErrorFunc *f,
Daniel Veillard26f70262003-01-16 22:45:08 +0000415 void **arg);
416
Daniel Veillard438ebbd2008-05-12 12:58:46 +0000417#endif /* LIBXML_READER_ENABLED */
418
Daniel Veillarde1ca5032002-12-09 14:13:43 +0000419#ifdef __cplusplus
420}
421#endif
Daniel Veillarda2351322004-06-27 12:08:10 +0000422
Daniel Veillarde1ca5032002-12-09 14:13:43 +0000423#endif /* __XML_XMLREADER_H__ */
424