blob: 1ced8b85bcf1086e49027edd677f3ac1e07599db [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>
14
15#ifdef __cplusplus
16extern "C" {
17#endif
18
Daniel Veillardbeb70bd2002-12-18 14:53:54 +000019typedef enum {
20 XML_PARSER_LOADDTD = 1,
Daniel Veillarde18fc182002-12-28 22:56:33 +000021 XML_PARSER_DEFAULTATTRS = 2,
22 XML_PARSER_VALIDATE = 3,
23 XML_PARSER_SUBST_ENTITIES = 4
Daniel Veillardbeb70bd2002-12-18 14:53:54 +000024} xmlParserProperties;
25
Daniel Veillard26f70262003-01-16 22:45:08 +000026typedef enum {
Daniel Veillard417be3a2003-01-20 21:26:34 +000027 XML_PARSER_SEVERITY_VALIDITY_WARNING = 1,
28 XML_PARSER_SEVERITY_VALIDITY_ERROR = 2,
29 XML_PARSER_SEVERITY_WARNING = 3,
30 XML_PARSER_SEVERITY_ERROR = 4
31} xmlParserSeverities;
Daniel Veillard26f70262003-01-16 22:45:08 +000032
Daniel Veillarde1ca5032002-12-09 14:13:43 +000033typedef struct _xmlTextReader xmlTextReader;
34typedef xmlTextReader *xmlTextReaderPtr;
35
36/*
37 * Constructors & Destructor
38 */
Daniel Veillardea7751d2002-12-20 00:16:24 +000039xmlTextReaderPtr xmlNewTextReader (xmlParserInputBufferPtr input,
40 const char *URI);
Daniel Veillarde1ca5032002-12-09 14:13:43 +000041xmlTextReaderPtr xmlNewTextReaderFilename(const char *URI);
42void xmlFreeTextReader (xmlTextReaderPtr reader);
43
44/*
45 * Iterators
46 */
47int xmlTextReaderRead (xmlTextReaderPtr reader);
Daniel Veillard67df8092002-12-16 22:04:11 +000048xmlChar * xmlTextReaderReadInnerXml (xmlTextReaderPtr reader);
49xmlChar * xmlTextReaderReadOuterXml (xmlTextReaderPtr reader);
50xmlChar * xmlTextReaderReadString (xmlTextReaderPtr reader);
Daniel Veillardbeb70bd2002-12-18 14:53:54 +000051int xmlTextReaderReadAttributeValue (xmlTextReaderPtr reader);
Daniel Veillarde1ca5032002-12-09 14:13:43 +000052
53/*
54 * Attributes of the node
55 */
56int xmlTextReaderAttributeCount(xmlTextReaderPtr reader);
57xmlChar * xmlTextReaderBaseUri (xmlTextReaderPtr reader);
58int xmlTextReaderDepth (xmlTextReaderPtr reader);
59int xmlTextReaderHasAttributes(xmlTextReaderPtr reader);
60int xmlTextReaderHasValue(xmlTextReaderPtr reader);
61int xmlTextReaderIsDefault (xmlTextReaderPtr reader);
62int xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader);
63xmlChar * xmlTextReaderLocalName (xmlTextReaderPtr reader);
64xmlChar * xmlTextReaderName (xmlTextReaderPtr reader);
65xmlChar * xmlTextReaderNamespaceUri(xmlTextReaderPtr reader);
66int xmlTextReaderNodeType (xmlTextReaderPtr reader);
67xmlChar * xmlTextReaderPrefix (xmlTextReaderPtr reader);
68int xmlTextReaderQuoteChar (xmlTextReaderPtr reader);
69xmlChar * xmlTextReaderValue (xmlTextReaderPtr reader);
70xmlChar * xmlTextReaderXmlLang (xmlTextReaderPtr reader);
Daniel Veillard67df8092002-12-16 22:04:11 +000071int xmlTextReaderReadState (xmlTextReaderPtr reader);
Daniel Veillard0eb38c72002-12-14 23:00:35 +000072
73/*
74 * Methods of the XmlTextReader
75 */
76int xmlTextReaderClose (xmlTextReaderPtr reader);
77xmlChar * xmlTextReaderGetAttributeNo (xmlTextReaderPtr reader,
78 int no);
79xmlChar * xmlTextReaderGetAttribute (xmlTextReaderPtr reader,
80 const xmlChar *name);
81xmlChar * xmlTextReaderGetAttributeNs (xmlTextReaderPtr reader,
82 const xmlChar *localName,
83 const xmlChar *namespaceURI);
Daniel Veillardda46d2d2002-12-15 23:36:49 +000084xmlParserInputBufferPtr xmlTextReaderGetRemainder(xmlTextReaderPtr reader);
85xmlChar * xmlTextReaderLookupNamespace (xmlTextReaderPtr reader,
86 const xmlChar *prefix);
87int xmlTextReaderMoveToAttributeNo (xmlTextReaderPtr reader,
88 int no);
89int xmlTextReaderMoveToAttribute (xmlTextReaderPtr reader,
90 const xmlChar *name);
91int xmlTextReaderMoveToAttributeNs (xmlTextReaderPtr reader,
92 const xmlChar *localName,
93 const xmlChar *namespaceURI);
94int xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader);
95int xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader);
96int xmlTextReaderMoveToElement (xmlTextReaderPtr reader);
Daniel Veillard67df8092002-12-16 22:04:11 +000097int xmlTextReaderNormalization (xmlTextReaderPtr reader);
Daniel Veillardda46d2d2002-12-15 23:36:49 +000098
Daniel Veillardbeb70bd2002-12-18 14:53:54 +000099/*
100 * Extensions
101 */
102int xmlTextReaderSetParserProp (xmlTextReaderPtr reader,
103 int prop,
104 int value);
105int xmlTextReaderGetParserProp (xmlTextReaderPtr reader,
106 int prop);
Daniel Veillarde18fc182002-12-28 22:56:33 +0000107xmlNodePtr xmlTextReaderCurrentNode (xmlTextReaderPtr reader);
108xmlDocPtr xmlTextReaderCurrentDoc (xmlTextReaderPtr reader);
Daniel Veillardc6cae7b2003-04-11 09:02:11 +0000109xmlNodePtr xmlTextReaderExpand (xmlTextReaderPtr reader);
110int xmlTextReaderNext (xmlTextReaderPtr reader);
Daniel Veillardf6bad792003-04-11 19:38:54 +0000111int xmlTextReaderIsValid (xmlTextReaderPtr reader);
Daniel Veillardf4e55762003-04-15 23:32:22 +0000112#ifdef LIBXML_SCHEMAS_ENABLED
113int xmlTextReaderRelaxNGValidate (xmlTextReaderPtr reader,
114 const char *rng);
115#endif
Daniel Veillard26f70262003-01-16 22:45:08 +0000116
117/*
118 * Error handling extensions
119 */
Daniel Veillard417be3a2003-01-20 21:26:34 +0000120typedef void * xmlTextReaderLocatorPtr;
121typedef void (*xmlTextReaderErrorFunc) (void *arg,
Daniel Veillard26f70262003-01-16 22:45:08 +0000122 const char *msg,
Daniel Veillard417be3a2003-01-20 21:26:34 +0000123 xmlParserSeverities severity,
124 xmlTextReaderLocatorPtr locator);
125int xmlTextReaderLocatorLineNumber (xmlTextReaderLocatorPtr locator);
126/*int xmlTextReaderLocatorLinePosition(xmlTextReaderLocatorPtr locator);*/
127xmlChar * xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator);
Daniel Veillard26f70262003-01-16 22:45:08 +0000128void xmlTextReaderSetErrorHandler (xmlTextReaderPtr reader,
129 xmlTextReaderErrorFunc f,
130 void *arg);
131void xmlTextReaderGetErrorHandler (xmlTextReaderPtr reader,
132 xmlTextReaderErrorFunc *f,
133 void **arg);
134
Daniel Veillarde1ca5032002-12-09 14:13:43 +0000135#ifdef __cplusplus
136}
137#endif
138#endif /* __XML_XMLREADER_H__ */
139