xmlreader.h revision a2351322c89608d09ce1a99e5eccd62d00c79890
1e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard/*
2be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Summary: the XMLReader implementation
3be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Description: API of the XML streaming API based on C# interfaces.
4e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard *
5be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Copy: See Copyright for the status of this software.
6e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard *
7be5869729a416032a4abb5a65430d25831828f75Daniel Veillard * Author: Daniel Veillard
8e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard */
9e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard
10e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard#ifndef __XML_XMLREADER_H__
11e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard#define __XML_XMLREADER_H__
12e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard
1376874e4516a1d7b467d400604f8aef77be015727Igor Zlatkovic#include <libxml/xmlversion.h>
14e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard#include <libxml/tree.h>
15e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard#include <libxml/xmlIO.h>
1633300b49f0801f5efe6363bd6b85b3bb5ace70fdDaniel Veillard#ifdef LIBXML_SCHEMAS_ENABLED
1733300b49f0801f5efe6363bd6b85b3bb5ace70fdDaniel Veillard#include <libxml/relaxng.h>
1833300b49f0801f5efe6363bd6b85b3bb5ace70fdDaniel Veillard#endif
19e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard
20a2351322c89608d09ce1a99e5eccd62d00c79890Daniel Veillard#ifdef LIBXML_READER_ENABLED
21a2351322c89608d09ce1a99e5eccd62d00c79890Daniel Veillard
22e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard#ifdef __cplusplus
23e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillardextern "C" {
24e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard#endif
25e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard
26da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard/**
27da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard * xmlTextReaderMode:
28da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard *
29da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard * Internal state values for the reader.
30da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard */
31da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillardtypedef enum {
32da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard    XML_TEXTREADER_MODE_INITIAL = 0,
33da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard    XML_TEXTREADER_MODE_INTERACTIVE = 1,
34da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard    XML_TEXTREADER_MODE_ERROR = 2,
35da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard    XML_TEXTREADER_MODE_EOF =3,
36da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard    XML_TEXTREADER_MODE_CLOSED = 4,
37da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard    XML_TEXTREADER_MODE_READING = 5
38da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard} xmlTextReaderMode;
39da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard
40da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard/**
41da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard * xmlParserProperties:
42da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard *
43da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard * Some common options to use with xmlTextReaderSetParserProp, but it
44da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard * is better to use xmlParserOption and the xmlReaderNewxxx and
45da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard * xmlReaderForxxx APIs now.
46da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard */
47beb70bd39b74c8146c184857792730b139e7e16bDaniel Veillardtypedef enum {
48beb70bd39b74c8146c184857792730b139e7e16bDaniel Veillard    XML_PARSER_LOADDTD = 1,
49e18fc185fa2604ba73f2b259e34796c106ad5545Daniel Veillard    XML_PARSER_DEFAULTATTRS = 2,
50e18fc185fa2604ba73f2b259e34796c106ad5545Daniel Veillard    XML_PARSER_VALIDATE = 3,
51e18fc185fa2604ba73f2b259e34796c106ad5545Daniel Veillard    XML_PARSER_SUBST_ENTITIES = 4
52beb70bd39b74c8146c184857792730b139e7e16bDaniel Veillard} xmlParserProperties;
53beb70bd39b74c8146c184857792730b139e7e16bDaniel Veillard
54da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard/**
55da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard * xmlParserSeverities:
56da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard *
57da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard * How severe an error callback is when the per-reader error callback API
58da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard * is used.
59da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard */
6026f70269c80140a7fb8a7aae9ef09c95efa98e70Daniel Veillardtypedef enum {
61417be3ae08346c6510c28d2042dd42a22a74b331Daniel Veillard    XML_PARSER_SEVERITY_VALIDITY_WARNING = 1,
62417be3ae08346c6510c28d2042dd42a22a74b331Daniel Veillard    XML_PARSER_SEVERITY_VALIDITY_ERROR = 2,
63417be3ae08346c6510c28d2042dd42a22a74b331Daniel Veillard    XML_PARSER_SEVERITY_WARNING = 3,
64417be3ae08346c6510c28d2042dd42a22a74b331Daniel Veillard    XML_PARSER_SEVERITY_ERROR = 4
65417be3ae08346c6510c28d2042dd42a22a74b331Daniel Veillard} xmlParserSeverities;
6626f70269c80140a7fb8a7aae9ef09c95efa98e70Daniel Veillard
67da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard/**
68da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard * xmlReaderTypes:
69da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard *
70da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard * Predefined constants for the different types of nodes.
71da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard */
720ab6fa01f5291e116d4217767d13d775b35c72a0Daniel Veillardtypedef enum {
73d6038e0283e9f814e408fe4d3dd54cce6b0b32d4Daniel Veillard    XML_READER_TYPE_NONE = 0,
74d6038e0283e9f814e408fe4d3dd54cce6b0b32d4Daniel Veillard    XML_READER_TYPE_ELEMENT = 1,
75d6038e0283e9f814e408fe4d3dd54cce6b0b32d4Daniel Veillard    XML_READER_TYPE_ATTRIBUTE = 2,
76d6038e0283e9f814e408fe4d3dd54cce6b0b32d4Daniel Veillard    XML_READER_TYPE_TEXT = 3,
77d6038e0283e9f814e408fe4d3dd54cce6b0b32d4Daniel Veillard    XML_READER_TYPE_CDATA = 4,
78d6038e0283e9f814e408fe4d3dd54cce6b0b32d4Daniel Veillard    XML_READER_TYPE_ENTITY_REFERENCE = 5,
79d6038e0283e9f814e408fe4d3dd54cce6b0b32d4Daniel Veillard    XML_READER_TYPE_ENTITY = 6,
80d6038e0283e9f814e408fe4d3dd54cce6b0b32d4Daniel Veillard    XML_READER_TYPE_PROCESSING_INSTRUCTION = 7,
81d6038e0283e9f814e408fe4d3dd54cce6b0b32d4Daniel Veillard    XML_READER_TYPE_COMMENT = 8,
82d6038e0283e9f814e408fe4d3dd54cce6b0b32d4Daniel Veillard    XML_READER_TYPE_DOCUMENT = 9,
83d6038e0283e9f814e408fe4d3dd54cce6b0b32d4Daniel Veillard    XML_READER_TYPE_DOCUMENT_TYPE = 10,
84d6038e0283e9f814e408fe4d3dd54cce6b0b32d4Daniel Veillard    XML_READER_TYPE_DOCUMENT_FRAGMENT = 11,
85d6038e0283e9f814e408fe4d3dd54cce6b0b32d4Daniel Veillard    XML_READER_TYPE_NOTATION = 12,
86d6038e0283e9f814e408fe4d3dd54cce6b0b32d4Daniel Veillard    XML_READER_TYPE_WHITESPACE = 13,
87d6038e0283e9f814e408fe4d3dd54cce6b0b32d4Daniel Veillard    XML_READER_TYPE_SIGNIFICANT_WHITESPACE = 14,
88d6038e0283e9f814e408fe4d3dd54cce6b0b32d4Daniel Veillard    XML_READER_TYPE_END_ELEMENT = 15,
89d6038e0283e9f814e408fe4d3dd54cce6b0b32d4Daniel Veillard    XML_READER_TYPE_END_ENTITY = 16,
90d6038e0283e9f814e408fe4d3dd54cce6b0b32d4Daniel Veillard    XML_READER_TYPE_XML_DECLARATION = 17
910ab6fa01f5291e116d4217767d13d775b35c72a0Daniel Veillard} xmlReaderTypes;
92d6038e0283e9f814e408fe4d3dd54cce6b0b32d4Daniel Veillard
93da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard/**
94da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard * xmlTextReader:
95da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard *
96da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard * Structure for an xmlReader context.
97da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard */
98e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillardtypedef struct _xmlTextReader xmlTextReader;
99da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard
100da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard/**
101da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard * xmlTextReaderPtr:
102da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard *
103da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard * Pointer to an xmlReader context.
104da0ff5da92cb7d0b9004b3e60094729bca554e74Daniel Veillard */
105e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillardtypedef xmlTextReader *xmlTextReaderPtr;
106e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard
107e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard/*
108e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard * Constructors & Destructor
109e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard */
11076874e4516a1d7b467d400604f8aef77be015727Igor ZlatkovicXMLPUBFUN xmlTextReaderPtr XMLCALL
11176874e4516a1d7b467d400604f8aef77be015727Igor Zlatkovic			xmlNewTextReader	(xmlParserInputBufferPtr input,
112ea7751d53bf497e873dca39b2c305e300e2574f9Daniel Veillard	                                         const char *URI);
113aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN xmlTextReaderPtr XMLCALL
114aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic			xmlNewTextReaderFilename(const char *URI);
115aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN void XMLCALL
116aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic			xmlFreeTextReader	(xmlTextReaderPtr reader);
117e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard
118e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard/*
119e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard * Iterators
120e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard */
121aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
122aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic			xmlTextReaderRead	(xmlTextReaderPtr reader);
123aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN xmlChar * XMLCALL
124aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic			xmlTextReaderReadInnerXml	(xmlTextReaderPtr reader);
125aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN xmlChar * XMLCALL
126aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic			xmlTextReaderReadOuterXml	(xmlTextReaderPtr reader);
127aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN xmlChar * XMLCALL
128aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic			xmlTextReaderReadString		(xmlTextReaderPtr reader);
129aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
130aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic			xmlTextReaderReadAttributeValue	(xmlTextReaderPtr reader);
131e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard
132e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard/*
133e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard * Attributes of the node
134e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard */
135aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
136aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic			xmlTextReaderAttributeCount(xmlTextReaderPtr reader);
137aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
138aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic			xmlTextReaderDepth	(xmlTextReaderPtr reader);
139aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
140aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic			xmlTextReaderHasAttributes(xmlTextReaderPtr reader);
141aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
142aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic			xmlTextReaderHasValue(xmlTextReaderPtr reader);
143aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
144aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic			xmlTextReaderIsDefault	(xmlTextReaderPtr reader);
145aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
146aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic			xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader);
147e72c508cd0c7a829602906f54fa8a29abaf3afa6Daniel VeillardXMLPUBFUN int XMLCALL
148e72c508cd0c7a829602906f54fa8a29abaf3afa6Daniel Veillard			xmlTextReaderNodeType	(xmlTextReaderPtr reader);
149e72c508cd0c7a829602906f54fa8a29abaf3afa6Daniel VeillardXMLPUBFUN int XMLCALL
150e72c508cd0c7a829602906f54fa8a29abaf3afa6Daniel Veillard			xmlTextReaderQuoteChar	(xmlTextReaderPtr reader);
151e72c508cd0c7a829602906f54fa8a29abaf3afa6Daniel VeillardXMLPUBFUN int XMLCALL
152e72c508cd0c7a829602906f54fa8a29abaf3afa6Daniel Veillard			xmlTextReaderReadState	(xmlTextReaderPtr reader);
1530eb38c7259b04de809f7bc880688f468ac7a15bfDaniel Veillard
154e72c508cd0c7a829602906f54fa8a29abaf3afa6Daniel VeillardXMLPUBFUN const xmlChar * XMLCALL
155e72c508cd0c7a829602906f54fa8a29abaf3afa6Daniel Veillard		    xmlTextReaderConstBaseUri	(xmlTextReaderPtr reader);
156e72c508cd0c7a829602906f54fa8a29abaf3afa6Daniel VeillardXMLPUBFUN const xmlChar * XMLCALL
157e72c508cd0c7a829602906f54fa8a29abaf3afa6Daniel Veillard		    xmlTextReaderConstLocalName	(xmlTextReaderPtr reader);
158e72c508cd0c7a829602906f54fa8a29abaf3afa6Daniel VeillardXMLPUBFUN const xmlChar * XMLCALL
159e72c508cd0c7a829602906f54fa8a29abaf3afa6Daniel Veillard		    xmlTextReaderConstName	(xmlTextReaderPtr reader);
160e72c508cd0c7a829602906f54fa8a29abaf3afa6Daniel VeillardXMLPUBFUN const xmlChar * XMLCALL
161e72c508cd0c7a829602906f54fa8a29abaf3afa6Daniel Veillard		    xmlTextReaderConstNamespaceUri(xmlTextReaderPtr reader);
162e72c508cd0c7a829602906f54fa8a29abaf3afa6Daniel VeillardXMLPUBFUN const xmlChar * XMLCALL
163e72c508cd0c7a829602906f54fa8a29abaf3afa6Daniel Veillard		    xmlTextReaderConstPrefix	(xmlTextReaderPtr reader);
164e72c508cd0c7a829602906f54fa8a29abaf3afa6Daniel VeillardXMLPUBFUN const xmlChar * XMLCALL
165e72c508cd0c7a829602906f54fa8a29abaf3afa6Daniel Veillard		    xmlTextReaderConstXmlLang	(xmlTextReaderPtr reader);
166f85ce8e334f448078a3d71a812824fa5b45d9b07Daniel VeillardXMLPUBFUN const xmlChar * XMLCALL
167f85ce8e334f448078a3d71a812824fa5b45d9b07Daniel Veillard		    xmlTextReaderConstString	(xmlTextReaderPtr reader,
168f85ce8e334f448078a3d71a812824fa5b45d9b07Daniel Veillard		    				 const xmlChar *str);
169198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel VeillardXMLPUBFUN const xmlChar * XMLCALL
170198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel Veillard		    xmlTextReaderConstValue	(xmlTextReaderPtr reader);
171198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel Veillard
172198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel Veillard/*
173198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel Veillard * use the Const version of the routine for
174198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel Veillard * better performance and simpler code
175198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel Veillard */
176198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel VeillardXMLPUBFUN xmlChar * XMLCALL
177198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel Veillard			xmlTextReaderBaseUri	(xmlTextReaderPtr reader);
178198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel VeillardXMLPUBFUN xmlChar * XMLCALL
179198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel Veillard			xmlTextReaderLocalName	(xmlTextReaderPtr reader);
180198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel VeillardXMLPUBFUN xmlChar * XMLCALL
181198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel Veillard			xmlTextReaderName	(xmlTextReaderPtr reader);
182198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel VeillardXMLPUBFUN xmlChar * XMLCALL
183198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel Veillard			xmlTextReaderNamespaceUri(xmlTextReaderPtr reader);
184198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel VeillardXMLPUBFUN xmlChar * XMLCALL
185198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel Veillard			xmlTextReaderPrefix	(xmlTextReaderPtr reader);
186198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel VeillardXMLPUBFUN xmlChar * XMLCALL
187198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel Veillard			xmlTextReaderXmlLang	(xmlTextReaderPtr reader);
188198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel VeillardXMLPUBFUN xmlChar * XMLCALL
189198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel Veillard			xmlTextReaderValue	(xmlTextReaderPtr reader);
190f85ce8e334f448078a3d71a812824fa5b45d9b07Daniel Veillard
1910eb38c7259b04de809f7bc880688f468ac7a15bfDaniel Veillard/*
1920eb38c7259b04de809f7bc880688f468ac7a15bfDaniel Veillard * Methods of the XmlTextReader
1930eb38c7259b04de809f7bc880688f468ac7a15bfDaniel Veillard */
194aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
195aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderClose		(xmlTextReaderPtr reader);
196aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN xmlChar * XMLCALL
197aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderGetAttributeNo	(xmlTextReaderPtr reader,
1980eb38c7259b04de809f7bc880688f468ac7a15bfDaniel Veillard						 int no);
199aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN xmlChar * XMLCALL
200aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderGetAttribute	(xmlTextReaderPtr reader,
2010eb38c7259b04de809f7bc880688f468ac7a15bfDaniel Veillard						 const xmlChar *name);
202aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN xmlChar * XMLCALL
203aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderGetAttributeNs	(xmlTextReaderPtr reader,
2040eb38c7259b04de809f7bc880688f468ac7a15bfDaniel Veillard						 const xmlChar *localName,
2050eb38c7259b04de809f7bc880688f468ac7a15bfDaniel Veillard						 const xmlChar *namespaceURI);
206aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN xmlParserInputBufferPtr XMLCALL
207aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderGetRemainder	(xmlTextReaderPtr reader);
208aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN xmlChar * XMLCALL
209aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderLookupNamespace(xmlTextReaderPtr reader,
210da46d2d31e49503b087874cc987045dd09169d26Daniel Veillard						 const xmlChar *prefix);
211aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
212aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderMoveToAttributeNo(xmlTextReaderPtr reader,
213da46d2d31e49503b087874cc987045dd09169d26Daniel Veillard						 int no);
214aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
215aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderMoveToAttribute(xmlTextReaderPtr reader,
216da46d2d31e49503b087874cc987045dd09169d26Daniel Veillard						 const xmlChar *name);
217aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
218aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr reader,
219da46d2d31e49503b087874cc987045dd09169d26Daniel Veillard						 const xmlChar *localName,
220da46d2d31e49503b087874cc987045dd09169d26Daniel Veillard						 const xmlChar *namespaceURI);
221aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
222aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader);
223aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
224aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader);
225aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
226aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderMoveToElement	(xmlTextReaderPtr reader);
227aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
228aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderNormalization	(xmlTextReaderPtr reader);
229da46d2d31e49503b087874cc987045dd09169d26Daniel Veillard
230beb70bd39b74c8146c184857792730b139e7e16bDaniel Veillard/*
231beb70bd39b74c8146c184857792730b139e7e16bDaniel Veillard * Extensions
232beb70bd39b74c8146c184857792730b139e7e16bDaniel Veillard */
233aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
234aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderSetParserProp	(xmlTextReaderPtr reader,
235beb70bd39b74c8146c184857792730b139e7e16bDaniel Veillard						 int prop,
236beb70bd39b74c8146c184857792730b139e7e16bDaniel Veillard						 int value);
237aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
238aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderGetParserProp	(xmlTextReaderPtr reader,
239beb70bd39b74c8146c184857792730b139e7e16bDaniel Veillard						 int prop);
240aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN xmlNodePtr XMLCALL
241aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderCurrentNode	(xmlTextReaderPtr reader);
2429ee35f36437073d952bc88fd64cf1618aad27c7bDaniel VeillardXMLPUBFUN xmlNodePtr XMLCALL
2439ee35f36437073d952bc88fd64cf1618aad27c7bDaniel Veillard		    xmlTextReaderPreserve	(xmlTextReaderPtr reader);
2441e90661bb817402f85103c3b9d3ce6ebab570f38Daniel VeillardXMLPUBFUN int XMLCALL
2451e90661bb817402f85103c3b9d3ce6ebab570f38Daniel Veillard		    xmlTextReaderPreservePattern(xmlTextReaderPtr reader,
246ffa7b7e2ba3841a80f9c5a69e89cc4b4e457840bDaniel Veillard		    				 const xmlChar *pattern,
247ffa7b7e2ba3841a80f9c5a69e89cc4b4e457840bDaniel Veillard						 const xmlChar **namespaces);
248aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN xmlDocPtr XMLCALL
249aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderCurrentDoc	(xmlTextReaderPtr reader);
250aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN xmlNodePtr XMLCALL
251aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderExpand		(xmlTextReaderPtr reader);
252aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
253aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderNext		(xmlTextReaderPtr reader);
254198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel VeillardXMLPUBFUN int XMLCALL
255198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel Veillard		    xmlTextReaderNextSibling	(xmlTextReaderPtr reader);
256aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
257aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderIsValid	(xmlTextReaderPtr reader);
258f4e5576f8f34362b6bec9396ab073fac839dfb22Daniel Veillard#ifdef LIBXML_SCHEMAS_ENABLED
259aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
260aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader,
261f4e5576f8f34362b6bec9396ab073fac839dfb22Daniel Veillard						 const char *rng);
262aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
263aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader,
26433300b49f0801f5efe6363bd6b85b3bb5ace70fdDaniel Veillard						 xmlRelaxNGPtr schema);
265f4e5576f8f34362b6bec9396ab073fac839dfb22Daniel Veillard#endif
26626f70269c80140a7fb8a7aae9ef09c95efa98e70Daniel Veillard
26726f70269c80140a7fb8a7aae9ef09c95efa98e70Daniel Veillard/*
268fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard * New more complete APIs for simpler creation and reuse of readers
269fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard */
270fc8dc355dac40605e66a7e8722db5077f03076f3Daniel VeillardXMLPUBFUN xmlTextReaderPtr XMLCALL
271198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel Veillard		xmlReaderWalker		(xmlDocPtr doc);
272198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel VeillardXMLPUBFUN xmlTextReaderPtr XMLCALL
273fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard		xmlReaderForDoc		(const xmlChar * cur,
274fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 const char *URL,
275fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 const char *encoding,
276fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 int options);
277fc8dc355dac40605e66a7e8722db5077f03076f3Daniel VeillardXMLPUBFUN xmlTextReaderPtr XMLCALL
278fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard		xmlReaderForFile	(const char *filename,
279fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 const char *encoding,
280fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 int options);
281fc8dc355dac40605e66a7e8722db5077f03076f3Daniel VeillardXMLPUBFUN xmlTextReaderPtr XMLCALL
282fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard		xmlReaderForMemory	(const char *buffer,
283fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 int size,
284fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 const char *URL,
285fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 const char *encoding,
286fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 int options);
287fc8dc355dac40605e66a7e8722db5077f03076f3Daniel VeillardXMLPUBFUN xmlTextReaderPtr XMLCALL
288fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard		xmlReaderForFd		(int fd,
289fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 const char *URL,
290fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 const char *encoding,
291fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 int options);
292fc8dc355dac40605e66a7e8722db5077f03076f3Daniel VeillardXMLPUBFUN xmlTextReaderPtr XMLCALL
293fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard		xmlReaderForIO		(xmlInputReadCallback ioread,
294fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 xmlInputCloseCallback ioclose,
295fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 void *ioctx,
296fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 const char *URL,
297fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 const char *encoding,
298fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 int options);
299fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard
300fc8dc355dac40605e66a7e8722db5077f03076f3Daniel VeillardXMLPUBFUN int XMLCALL
301198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel Veillard		xmlReaderNewWalker	(xmlTextReaderPtr reader,
302198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel Veillard					 xmlDocPtr doc);
303198c1bfc1cd2cc031410e4be4e5faebed45c557cDaniel VeillardXMLPUBFUN int XMLCALL
304fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard		xmlReaderNewDoc		(xmlTextReaderPtr reader,
305fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 const xmlChar * cur,
306fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 const char *URL,
307fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 const char *encoding,
308fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 int options);
309fc8dc355dac40605e66a7e8722db5077f03076f3Daniel VeillardXMLPUBFUN int XMLCALL
310fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard		xmlReaderNewFile	(xmlTextReaderPtr reader,
311fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 const char *filename,
312fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 const char *encoding,
313fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 int options);
314fc8dc355dac40605e66a7e8722db5077f03076f3Daniel VeillardXMLPUBFUN int XMLCALL
315fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard		xmlReaderNewMemory	(xmlTextReaderPtr reader,
316fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 const char *buffer,
317fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 int size,
318fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 const char *URL,
319fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 const char *encoding,
320fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 int options);
321fc8dc355dac40605e66a7e8722db5077f03076f3Daniel VeillardXMLPUBFUN int XMLCALL
322fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard		xmlReaderNewFd		(xmlTextReaderPtr reader,
323fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 int fd,
324fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 const char *URL,
325fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 const char *encoding,
326fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 int options);
327fc8dc355dac40605e66a7e8722db5077f03076f3Daniel VeillardXMLPUBFUN int XMLCALL
328fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard		xmlReaderNewIO		(xmlTextReaderPtr reader,
329fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 xmlInputReadCallback ioread,
330fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 xmlInputCloseCallback ioclose,
331fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 void *ioctx,
332fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 const char *URL,
333fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 const char *encoding,
334fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard					 int options);
335fc8dc355dac40605e66a7e8722db5077f03076f3Daniel Veillard/*
33626f70269c80140a7fb8a7aae9ef09c95efa98e70Daniel Veillard * Error handling extensions
33726f70269c80140a7fb8a7aae9ef09c95efa98e70Daniel Veillard */
338417be3ae08346c6510c28d2042dd42a22a74b331Daniel Veillardtypedef void *  xmlTextReaderLocatorPtr;
33918a88ce2f4bf7fd107d62bcd5724658306e08cb2Igor Zlatkovictypedef void   (XMLCALL *xmlTextReaderErrorFunc)        (void *arg,
34026f70269c80140a7fb8a7aae9ef09c95efa98e70Daniel Veillard						 const char *msg,
341417be3ae08346c6510c28d2042dd42a22a74b331Daniel Veillard						 xmlParserSeverities severity,
342417be3ae08346c6510c28d2042dd42a22a74b331Daniel Veillard						 xmlTextReaderLocatorPtr locator);
343aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN int XMLCALL
344aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator);
345417be3ae08346c6510c28d2042dd42a22a74b331Daniel Veillard/*int             xmlTextReaderLocatorLinePosition(xmlTextReaderLocatorPtr locator);*/
346aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN xmlChar * XMLCALL
347aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator);
348aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN void XMLCALL
349aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader,
35026f70269c80140a7fb8a7aae9ef09c95efa98e70Daniel Veillard						 xmlTextReaderErrorFunc f,
35126f70269c80140a7fb8a7aae9ef09c95efa98e70Daniel Veillard						 void *arg);
35293d004f9d86662251153e2af6e233e974660be78William M. BrackXMLPUBFUN void XMLCALL
35393d004f9d86662251153e2af6e233e974660be78William M. Brack		    xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader,
35493d004f9d86662251153e2af6e233e974660be78William M. Brack							   xmlStructuredErrorFunc f,
35593d004f9d86662251153e2af6e233e974660be78William M. Brack							   void *arg);
356aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor ZlatkovicXMLPUBFUN void XMLCALL
357aa3cfbd0809378d88bc907742a9ddd27cc49b335Igor Zlatkovic		    xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader,
35826f70269c80140a7fb8a7aae9ef09c95efa98e70Daniel Veillard						 xmlTextReaderErrorFunc *f,
35926f70269c80140a7fb8a7aae9ef09c95efa98e70Daniel Veillard						 void **arg);
36026f70269c80140a7fb8a7aae9ef09c95efa98e70Daniel Veillard
361e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard#ifdef __cplusplus
362e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard}
363e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard#endif
364a2351322c89608d09ce1a99e5eccd62d00c79890Daniel Veillard
365a2351322c89608d09ce1a99e5eccd62d00c79890Daniel Veillard#endif /* LIBXML_READER_ENABLED */
366a2351322c89608d09ce1a99e5eccd62d00c79890Daniel Veillard
367e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard#endif /* __XML_XMLREADER_H__ */
368e1ca50330b59d32b228ad9c05a874a96cef9748fDaniel Veillard
369