blob: 8ece600166d3581d99592b00f13cba62f5f335a5 [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
12#include <libxml/tree.h>
13#include <libxml/xmlIO.h>
Daniel Veillard33300b42003-04-17 09:09:19 +000014#ifdef LIBXML_SCHEMAS_ENABLED
15#include <libxml/relaxng.h>
16#endif
Daniel Veillarde1ca5032002-12-09 14:13:43 +000017
18#ifdef __cplusplus
19extern "C" {
20#endif
21
Daniel Veillardbeb70bd2002-12-18 14:53:54 +000022typedef enum {
23 XML_PARSER_LOADDTD = 1,
Daniel Veillarde18fc182002-12-28 22:56:33 +000024 XML_PARSER_DEFAULTATTRS = 2,
25 XML_PARSER_VALIDATE = 3,
26 XML_PARSER_SUBST_ENTITIES = 4
Daniel Veillardbeb70bd2002-12-18 14:53:54 +000027} xmlParserProperties;
28
Daniel Veillard26f70262003-01-16 22:45:08 +000029typedef enum {
Daniel Veillard417be3a2003-01-20 21:26:34 +000030 XML_PARSER_SEVERITY_VALIDITY_WARNING = 1,
31 XML_PARSER_SEVERITY_VALIDITY_ERROR = 2,
32 XML_PARSER_SEVERITY_WARNING = 3,
33 XML_PARSER_SEVERITY_ERROR = 4
34} xmlParserSeverities;
Daniel Veillard26f70262003-01-16 22:45:08 +000035
Daniel Veillard0ab6fa02003-08-09 18:01:53 +000036typedef enum {
Daniel Veillardd6038e02003-07-30 16:37:18 +000037 XML_READER_TYPE_NONE = 0,
38 XML_READER_TYPE_ELEMENT = 1,
39 XML_READER_TYPE_ATTRIBUTE = 2,
40 XML_READER_TYPE_TEXT = 3,
41 XML_READER_TYPE_CDATA = 4,
42 XML_READER_TYPE_ENTITY_REFERENCE = 5,
43 XML_READER_TYPE_ENTITY = 6,
44 XML_READER_TYPE_PROCESSING_INSTRUCTION = 7,
45 XML_READER_TYPE_COMMENT = 8,
46 XML_READER_TYPE_DOCUMENT = 9,
47 XML_READER_TYPE_DOCUMENT_TYPE = 10,
48 XML_READER_TYPE_DOCUMENT_FRAGMENT = 11,
49 XML_READER_TYPE_NOTATION = 12,
50 XML_READER_TYPE_WHITESPACE = 13,
51 XML_READER_TYPE_SIGNIFICANT_WHITESPACE = 14,
52 XML_READER_TYPE_END_ELEMENT = 15,
53 XML_READER_TYPE_END_ENTITY = 16,
54 XML_READER_TYPE_XML_DECLARATION = 17
Daniel Veillard0ab6fa02003-08-09 18:01:53 +000055} xmlReaderTypes;
Daniel Veillardd6038e02003-07-30 16:37:18 +000056
Daniel Veillarde1ca5032002-12-09 14:13:43 +000057typedef struct _xmlTextReader xmlTextReader;
58typedef xmlTextReader *xmlTextReaderPtr;
59
60/*
61 * Constructors & Destructor
62 */
Daniel Veillardea7751d2002-12-20 00:16:24 +000063xmlTextReaderPtr xmlNewTextReader (xmlParserInputBufferPtr input,
64 const char *URI);
Daniel Veillarde1ca5032002-12-09 14:13:43 +000065xmlTextReaderPtr xmlNewTextReaderFilename(const char *URI);
66void xmlFreeTextReader (xmlTextReaderPtr reader);
67
68/*
69 * Iterators
70 */
71int xmlTextReaderRead (xmlTextReaderPtr reader);
Daniel Veillard67df8092002-12-16 22:04:11 +000072xmlChar * xmlTextReaderReadInnerXml (xmlTextReaderPtr reader);
73xmlChar * xmlTextReaderReadOuterXml (xmlTextReaderPtr reader);
74xmlChar * xmlTextReaderReadString (xmlTextReaderPtr reader);
Daniel Veillardbeb70bd2002-12-18 14:53:54 +000075int xmlTextReaderReadAttributeValue (xmlTextReaderPtr reader);
Daniel Veillarde1ca5032002-12-09 14:13:43 +000076
77/*
78 * Attributes of the node
79 */
80int xmlTextReaderAttributeCount(xmlTextReaderPtr reader);
81xmlChar * xmlTextReaderBaseUri (xmlTextReaderPtr reader);
82int xmlTextReaderDepth (xmlTextReaderPtr reader);
83int xmlTextReaderHasAttributes(xmlTextReaderPtr reader);
84int xmlTextReaderHasValue(xmlTextReaderPtr reader);
85int xmlTextReaderIsDefault (xmlTextReaderPtr reader);
86int xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader);
87xmlChar * xmlTextReaderLocalName (xmlTextReaderPtr reader);
88xmlChar * xmlTextReaderName (xmlTextReaderPtr reader);
89xmlChar * xmlTextReaderNamespaceUri(xmlTextReaderPtr reader);
90int xmlTextReaderNodeType (xmlTextReaderPtr reader);
91xmlChar * xmlTextReaderPrefix (xmlTextReaderPtr reader);
92int xmlTextReaderQuoteChar (xmlTextReaderPtr reader);
93xmlChar * xmlTextReaderValue (xmlTextReaderPtr reader);
94xmlChar * xmlTextReaderXmlLang (xmlTextReaderPtr reader);
Daniel Veillard67df8092002-12-16 22:04:11 +000095int xmlTextReaderReadState (xmlTextReaderPtr reader);
Daniel Veillard0eb38c72002-12-14 23:00:35 +000096
97/*
98 * Methods of the XmlTextReader
99 */
100int xmlTextReaderClose (xmlTextReaderPtr reader);
101xmlChar * xmlTextReaderGetAttributeNo (xmlTextReaderPtr reader,
102 int no);
103xmlChar * xmlTextReaderGetAttribute (xmlTextReaderPtr reader,
104 const xmlChar *name);
105xmlChar * xmlTextReaderGetAttributeNs (xmlTextReaderPtr reader,
106 const xmlChar *localName,
107 const xmlChar *namespaceURI);
Daniel Veillardda46d2d2002-12-15 23:36:49 +0000108xmlParserInputBufferPtr xmlTextReaderGetRemainder(xmlTextReaderPtr reader);
109xmlChar * xmlTextReaderLookupNamespace (xmlTextReaderPtr reader,
110 const xmlChar *prefix);
111int xmlTextReaderMoveToAttributeNo (xmlTextReaderPtr reader,
112 int no);
113int xmlTextReaderMoveToAttribute (xmlTextReaderPtr reader,
114 const xmlChar *name);
115int xmlTextReaderMoveToAttributeNs (xmlTextReaderPtr reader,
116 const xmlChar *localName,
117 const xmlChar *namespaceURI);
118int xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader);
119int xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader);
120int xmlTextReaderMoveToElement (xmlTextReaderPtr reader);
Daniel Veillard67df8092002-12-16 22:04:11 +0000121int xmlTextReaderNormalization (xmlTextReaderPtr reader);
Daniel Veillardda46d2d2002-12-15 23:36:49 +0000122
Daniel Veillardbeb70bd2002-12-18 14:53:54 +0000123/*
124 * Extensions
125 */
126int xmlTextReaderSetParserProp (xmlTextReaderPtr reader,
127 int prop,
128 int value);
129int xmlTextReaderGetParserProp (xmlTextReaderPtr reader,
130 int prop);
Daniel Veillarde18fc182002-12-28 22:56:33 +0000131xmlNodePtr xmlTextReaderCurrentNode (xmlTextReaderPtr reader);
132xmlDocPtr xmlTextReaderCurrentDoc (xmlTextReaderPtr reader);
Daniel Veillardc6cae7b2003-04-11 09:02:11 +0000133xmlNodePtr xmlTextReaderExpand (xmlTextReaderPtr reader);
134int xmlTextReaderNext (xmlTextReaderPtr reader);
Daniel Veillardf6bad792003-04-11 19:38:54 +0000135int xmlTextReaderIsValid (xmlTextReaderPtr reader);
Daniel Veillardf4e55762003-04-15 23:32:22 +0000136#ifdef LIBXML_SCHEMAS_ENABLED
137int xmlTextReaderRelaxNGValidate (xmlTextReaderPtr reader,
138 const char *rng);
Daniel Veillard33300b42003-04-17 09:09:19 +0000139int xmlTextReaderRelaxNGSetSchema (xmlTextReaderPtr reader,
140 xmlRelaxNGPtr schema);
Daniel Veillardf4e55762003-04-15 23:32:22 +0000141#endif
Daniel Veillard26f70262003-01-16 22:45:08 +0000142
143/*
144 * Error handling extensions
145 */
Daniel Veillard417be3a2003-01-20 21:26:34 +0000146typedef void * xmlTextReaderLocatorPtr;
147typedef void (*xmlTextReaderErrorFunc) (void *arg,
Daniel Veillard26f70262003-01-16 22:45:08 +0000148 const char *msg,
Daniel Veillard417be3a2003-01-20 21:26:34 +0000149 xmlParserSeverities severity,
150 xmlTextReaderLocatorPtr locator);
151int xmlTextReaderLocatorLineNumber (xmlTextReaderLocatorPtr locator);
152/*int xmlTextReaderLocatorLinePosition(xmlTextReaderLocatorPtr locator);*/
153xmlChar * xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator);
Daniel Veillard26f70262003-01-16 22:45:08 +0000154void xmlTextReaderSetErrorHandler (xmlTextReaderPtr reader,
155 xmlTextReaderErrorFunc f,
156 void *arg);
157void xmlTextReaderGetErrorHandler (xmlTextReaderPtr reader,
158 xmlTextReaderErrorFunc *f,
159 void **arg);
160
Daniel Veillarde1ca5032002-12-09 14:13:43 +0000161#ifdef __cplusplus
162}
163#endif
164#endif /* __XML_XMLREADER_H__ */
165