blob: 2f9a4cebdba520db9229439a9186f2684919f8d9 [file] [log] [blame]
Daniel Veillarde1ca5032002-12-09 14:13:43 +00001/*
2 * xmlreader.h : Interfaces, constants and types of the XML streaming API.
3 *
4 * See Copyright for the status of this software.
5 *
6 * daniel@veillard.com
7 */
8
9#ifndef __XML_XMLREADER_H__
10#define __XML_XMLREADER_H__
11
Igor Zlatkovic76874e42003-08-25 09:05:12 +000012#include <libxml/xmlversion.h>
Daniel Veillarde1ca5032002-12-09 14:13:43 +000013#include <libxml/tree.h>
14#include <libxml/xmlIO.h>
Daniel Veillard33300b42003-04-17 09:09:19 +000015#ifdef LIBXML_SCHEMAS_ENABLED
16#include <libxml/relaxng.h>
17#endif
Daniel Veillarde1ca5032002-12-09 14:13:43 +000018
19#ifdef __cplusplus
20extern "C" {
21#endif
22
Daniel Veillardbeb70bd2002-12-18 14:53:54 +000023typedef enum {
24 XML_PARSER_LOADDTD = 1,
Daniel Veillarde18fc182002-12-28 22:56:33 +000025 XML_PARSER_DEFAULTATTRS = 2,
26 XML_PARSER_VALIDATE = 3,
27 XML_PARSER_SUBST_ENTITIES = 4
Daniel Veillardbeb70bd2002-12-18 14:53:54 +000028} xmlParserProperties;
29
Daniel Veillard26f70262003-01-16 22:45:08 +000030typedef enum {
Daniel Veillard417be3a2003-01-20 21:26:34 +000031 XML_PARSER_SEVERITY_VALIDITY_WARNING = 1,
32 XML_PARSER_SEVERITY_VALIDITY_ERROR = 2,
33 XML_PARSER_SEVERITY_WARNING = 3,
34 XML_PARSER_SEVERITY_ERROR = 4
35} xmlParserSeverities;
Daniel Veillard26f70262003-01-16 22:45:08 +000036
Daniel Veillard0ab6fa02003-08-09 18:01:53 +000037typedef enum {
Daniel Veillardd6038e02003-07-30 16:37:18 +000038 XML_READER_TYPE_NONE = 0,
39 XML_READER_TYPE_ELEMENT = 1,
40 XML_READER_TYPE_ATTRIBUTE = 2,
41 XML_READER_TYPE_TEXT = 3,
42 XML_READER_TYPE_CDATA = 4,
43 XML_READER_TYPE_ENTITY_REFERENCE = 5,
44 XML_READER_TYPE_ENTITY = 6,
45 XML_READER_TYPE_PROCESSING_INSTRUCTION = 7,
46 XML_READER_TYPE_COMMENT = 8,
47 XML_READER_TYPE_DOCUMENT = 9,
48 XML_READER_TYPE_DOCUMENT_TYPE = 10,
49 XML_READER_TYPE_DOCUMENT_FRAGMENT = 11,
50 XML_READER_TYPE_NOTATION = 12,
51 XML_READER_TYPE_WHITESPACE = 13,
52 XML_READER_TYPE_SIGNIFICANT_WHITESPACE = 14,
53 XML_READER_TYPE_END_ELEMENT = 15,
54 XML_READER_TYPE_END_ENTITY = 16,
55 XML_READER_TYPE_XML_DECLARATION = 17
Daniel Veillard0ab6fa02003-08-09 18:01:53 +000056} xmlReaderTypes;
Daniel Veillardd6038e02003-07-30 16:37:18 +000057
Daniel Veillarde1ca5032002-12-09 14:13:43 +000058typedef struct _xmlTextReader xmlTextReader;
59typedef xmlTextReader *xmlTextReaderPtr;
60
61/*
62 * Constructors & Destructor
63 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +000064XMLPUBFUN xmlTextReaderPtr XMLCALL
65 xmlNewTextReader (xmlParserInputBufferPtr input,
Daniel Veillardea7751d2002-12-20 00:16:24 +000066 const char *URI);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000067XMLPUBFUN xmlTextReaderPtr XMLCALL
68 xmlNewTextReaderFilename(const char *URI);
69XMLPUBFUN void XMLCALL
70 xmlFreeTextReader (xmlTextReaderPtr reader);
Daniel Veillarde1ca5032002-12-09 14:13:43 +000071
72/*
73 * Iterators
74 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000075XMLPUBFUN int XMLCALL
76 xmlTextReaderRead (xmlTextReaderPtr reader);
77XMLPUBFUN xmlChar * XMLCALL
78 xmlTextReaderReadInnerXml (xmlTextReaderPtr reader);
79XMLPUBFUN xmlChar * XMLCALL
80 xmlTextReaderReadOuterXml (xmlTextReaderPtr reader);
81XMLPUBFUN xmlChar * XMLCALL
82 xmlTextReaderReadString (xmlTextReaderPtr reader);
83XMLPUBFUN int XMLCALL
84 xmlTextReaderReadAttributeValue (xmlTextReaderPtr reader);
Daniel Veillarde1ca5032002-12-09 14:13:43 +000085
86/*
87 * Attributes of the node
88 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000089XMLPUBFUN int XMLCALL
90 xmlTextReaderAttributeCount(xmlTextReaderPtr reader);
91XMLPUBFUN xmlChar * XMLCALL
92 xmlTextReaderBaseUri (xmlTextReaderPtr reader);
93XMLPUBFUN int XMLCALL
94 xmlTextReaderDepth (xmlTextReaderPtr reader);
95XMLPUBFUN int XMLCALL
96 xmlTextReaderHasAttributes(xmlTextReaderPtr reader);
97XMLPUBFUN int XMLCALL
98 xmlTextReaderHasValue(xmlTextReaderPtr reader);
99XMLPUBFUN int XMLCALL
100 xmlTextReaderIsDefault (xmlTextReaderPtr reader);
101XMLPUBFUN int XMLCALL
102 xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader);
103XMLPUBFUN xmlChar * XMLCALL
104 xmlTextReaderLocalName (xmlTextReaderPtr reader);
105XMLPUBFUN xmlChar * XMLCALL
106 xmlTextReaderName (xmlTextReaderPtr reader);
107XMLPUBFUN xmlChar * XMLCALL
108 xmlTextReaderNamespaceUri(xmlTextReaderPtr reader);
109XMLPUBFUN int XMLCALL
110 xmlTextReaderNodeType (xmlTextReaderPtr reader);
111XMLPUBFUN xmlChar * XMLCALL
112 xmlTextReaderPrefix (xmlTextReaderPtr reader);
113XMLPUBFUN int XMLCALL
114 xmlTextReaderQuoteChar (xmlTextReaderPtr reader);
115XMLPUBFUN xmlChar * XMLCALL
116 xmlTextReaderValue (xmlTextReaderPtr reader);
117XMLPUBFUN xmlChar * XMLCALL
118 xmlTextReaderXmlLang (xmlTextReaderPtr reader);
119XMLPUBFUN int XMLCALL
120 xmlTextReaderReadState (xmlTextReaderPtr reader);
Daniel Veillard0eb38c72002-12-14 23:00:35 +0000121
122/*
123 * Methods of the XmlTextReader
124 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000125XMLPUBFUN int XMLCALL
126 xmlTextReaderClose (xmlTextReaderPtr reader);
127XMLPUBFUN xmlChar * XMLCALL
128 xmlTextReaderGetAttributeNo (xmlTextReaderPtr reader,
Daniel Veillard0eb38c72002-12-14 23:00:35 +0000129 int no);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000130XMLPUBFUN xmlChar * XMLCALL
131 xmlTextReaderGetAttribute (xmlTextReaderPtr reader,
Daniel Veillard0eb38c72002-12-14 23:00:35 +0000132 const xmlChar *name);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000133XMLPUBFUN xmlChar * XMLCALL
134 xmlTextReaderGetAttributeNs (xmlTextReaderPtr reader,
Daniel Veillard0eb38c72002-12-14 23:00:35 +0000135 const xmlChar *localName,
136 const xmlChar *namespaceURI);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000137XMLPUBFUN xmlParserInputBufferPtr XMLCALL
138 xmlTextReaderGetRemainder (xmlTextReaderPtr reader);
139XMLPUBFUN xmlChar * XMLCALL
140 xmlTextReaderLookupNamespace(xmlTextReaderPtr reader,
Daniel Veillardda46d2d2002-12-15 23:36:49 +0000141 const xmlChar *prefix);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000142XMLPUBFUN int XMLCALL
143 xmlTextReaderMoveToAttributeNo(xmlTextReaderPtr reader,
Daniel Veillardda46d2d2002-12-15 23:36:49 +0000144 int no);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000145XMLPUBFUN int XMLCALL
146 xmlTextReaderMoveToAttribute(xmlTextReaderPtr reader,
Daniel Veillardda46d2d2002-12-15 23:36:49 +0000147 const xmlChar *name);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000148XMLPUBFUN int XMLCALL
149 xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr reader,
Daniel Veillardda46d2d2002-12-15 23:36:49 +0000150 const xmlChar *localName,
151 const xmlChar *namespaceURI);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000152XMLPUBFUN int XMLCALL
153 xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader);
154XMLPUBFUN int XMLCALL
155 xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader);
156XMLPUBFUN int XMLCALL
157 xmlTextReaderMoveToElement (xmlTextReaderPtr reader);
158XMLPUBFUN int XMLCALL
159 xmlTextReaderNormalization (xmlTextReaderPtr reader);
Daniel Veillardda46d2d2002-12-15 23:36:49 +0000160
Daniel Veillardbeb70bd2002-12-18 14:53:54 +0000161/*
162 * Extensions
163 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000164XMLPUBFUN int XMLCALL
165 xmlTextReaderSetParserProp (xmlTextReaderPtr reader,
Daniel Veillardbeb70bd2002-12-18 14:53:54 +0000166 int prop,
167 int value);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000168XMLPUBFUN int XMLCALL
169 xmlTextReaderGetParserProp (xmlTextReaderPtr reader,
Daniel Veillardbeb70bd2002-12-18 14:53:54 +0000170 int prop);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000171XMLPUBFUN xmlNodePtr XMLCALL
172 xmlTextReaderCurrentNode (xmlTextReaderPtr reader);
173XMLPUBFUN xmlDocPtr XMLCALL
174 xmlTextReaderCurrentDoc (xmlTextReaderPtr reader);
175XMLPUBFUN xmlNodePtr XMLCALL
176 xmlTextReaderExpand (xmlTextReaderPtr reader);
177XMLPUBFUN int XMLCALL
178 xmlTextReaderNext (xmlTextReaderPtr reader);
179XMLPUBFUN int XMLCALL
180 xmlTextReaderIsValid (xmlTextReaderPtr reader);
Daniel Veillardf4e55762003-04-15 23:32:22 +0000181#ifdef LIBXML_SCHEMAS_ENABLED
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000182XMLPUBFUN int XMLCALL
183 xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader,
Daniel Veillardf4e55762003-04-15 23:32:22 +0000184 const char *rng);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000185XMLPUBFUN int XMLCALL
186 xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader,
Daniel Veillard33300b42003-04-17 09:09:19 +0000187 xmlRelaxNGPtr schema);
Daniel Veillardf4e55762003-04-15 23:32:22 +0000188#endif
Daniel Veillard26f70262003-01-16 22:45:08 +0000189
190/*
191 * Error handling extensions
192 */
Daniel Veillard417be3a2003-01-20 21:26:34 +0000193typedef void * xmlTextReaderLocatorPtr;
194typedef void (*xmlTextReaderErrorFunc) (void *arg,
Daniel Veillard26f70262003-01-16 22:45:08 +0000195 const char *msg,
Daniel Veillard417be3a2003-01-20 21:26:34 +0000196 xmlParserSeverities severity,
197 xmlTextReaderLocatorPtr locator);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000198XMLPUBFUN int XMLCALL
199 xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator);
Daniel Veillard417be3a2003-01-20 21:26:34 +0000200/*int xmlTextReaderLocatorLinePosition(xmlTextReaderLocatorPtr locator);*/
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000201XMLPUBFUN xmlChar * XMLCALL
202 xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator);
203XMLPUBFUN void XMLCALL
204 xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader,
Daniel Veillard26f70262003-01-16 22:45:08 +0000205 xmlTextReaderErrorFunc f,
206 void *arg);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000207XMLPUBFUN void XMLCALL
208 xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader,
Daniel Veillard26f70262003-01-16 22:45:08 +0000209 xmlTextReaderErrorFunc *f,
210 void **arg);
211
Daniel Veillarde1ca5032002-12-09 14:13:43 +0000212#ifdef __cplusplus
213}
214#endif
215#endif /* __XML_XMLREADER_H__ */
216