File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / include / libxml / xmlreader.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:37:58 2012 UTC (12 years, 5 months ago) by misho
Branches: libxml2, MAIN
CVS tags: v2_7_8, HEAD
libxml2

    1: /*
    2:  * Summary: the XMLReader implementation
    3:  * Description: API of the XML streaming API based on C# interfaces.
    4:  *
    5:  * Copy: See Copyright for the status of this software.
    6:  *
    7:  * Author: Daniel Veillard
    8:  */
    9: 
   10: #ifndef __XML_XMLREADER_H__
   11: #define __XML_XMLREADER_H__
   12: 
   13: #include <libxml/xmlversion.h>
   14: #include <libxml/tree.h>
   15: #include <libxml/xmlIO.h>
   16: #ifdef LIBXML_SCHEMAS_ENABLED
   17: #include <libxml/relaxng.h>
   18: #include <libxml/xmlschemas.h>
   19: #endif
   20: 
   21: #ifdef __cplusplus
   22: extern "C" {
   23: #endif
   24: 
   25: /**
   26:  * xmlParserSeverities:
   27:  *
   28:  * How severe an error callback is when the per-reader error callback API
   29:  * is used.
   30:  */
   31: typedef 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: /**
   41:  * xmlTextReaderMode:
   42:  *
   43:  * Internal state values for the reader.
   44:  */
   45: typedef 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
   58:  * is better to use xmlParserOption and the xmlReaderNewxxx and
   59:  * xmlReaderForxxx APIs now.
   60:  */
   61: typedef enum {
   62:     XML_PARSER_LOADDTD = 1,
   63:     XML_PARSER_DEFAULTATTRS = 2,
   64:     XML_PARSER_VALIDATE = 3,
   65:     XML_PARSER_SUBST_ENTITIES = 4
   66: } xmlParserProperties;
   67: 
   68: /**
   69:  * xmlReaderTypes:
   70:  *
   71:  * Predefined constants for the different types of nodes.
   72:  */
   73: typedef enum {
   74:     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
   92: } xmlReaderTypes;
   93: 
   94: /**
   95:  * xmlTextReader:
   96:  *
   97:  * Structure for an xmlReader context.
   98:  */
   99: typedef struct _xmlTextReader xmlTextReader;
  100: 
  101: /**
  102:  * xmlTextReaderPtr:
  103:  *
  104:  * Pointer to an xmlReader context.
  105:  */
  106: typedef xmlTextReader *xmlTextReaderPtr;
  107: 
  108: /*
  109:  * Constructors & Destructor
  110:  */
  111: XMLPUBFUN xmlTextReaderPtr XMLCALL
  112: 			xmlNewTextReader	(xmlParserInputBufferPtr input,
  113: 	                                         const char *URI);
  114: XMLPUBFUN xmlTextReaderPtr XMLCALL
  115: 			xmlNewTextReaderFilename(const char *URI);
  116: 
  117: XMLPUBFUN void XMLCALL
  118: 			xmlFreeTextReader	(xmlTextReaderPtr reader);
  119: 
  120: XMLPUBFUN int XMLCALL
  121:             xmlTextReaderSetup(xmlTextReaderPtr reader,
  122:                    xmlParserInputBufferPtr input, const char *URL,
  123:                    const char *encoding, int options);
  124: 
  125: /*
  126:  * Iterators
  127:  */
  128: XMLPUBFUN int XMLCALL
  129: 			xmlTextReaderRead	(xmlTextReaderPtr reader);
  130: 
  131: #ifdef LIBXML_WRITER_ENABLED
  132: XMLPUBFUN xmlChar * XMLCALL
  133: 			xmlTextReaderReadInnerXml	(xmlTextReaderPtr reader);
  134: 
  135: XMLPUBFUN xmlChar * XMLCALL
  136: 			xmlTextReaderReadOuterXml	(xmlTextReaderPtr reader);
  137: #endif
  138: 
  139: XMLPUBFUN xmlChar * XMLCALL
  140: 			xmlTextReaderReadString		(xmlTextReaderPtr reader);
  141: XMLPUBFUN int XMLCALL
  142: 			xmlTextReaderReadAttributeValue	(xmlTextReaderPtr reader);
  143: 
  144: /*
  145:  * Attributes of the node
  146:  */
  147: XMLPUBFUN int XMLCALL
  148: 			xmlTextReaderAttributeCount(xmlTextReaderPtr reader);
  149: XMLPUBFUN int XMLCALL
  150: 			xmlTextReaderDepth	(xmlTextReaderPtr reader);
  151: XMLPUBFUN int XMLCALL
  152: 			xmlTextReaderHasAttributes(xmlTextReaderPtr reader);
  153: XMLPUBFUN int XMLCALL
  154: 			xmlTextReaderHasValue(xmlTextReaderPtr reader);
  155: XMLPUBFUN int XMLCALL
  156: 			xmlTextReaderIsDefault	(xmlTextReaderPtr reader);
  157: XMLPUBFUN int XMLCALL
  158: 			xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader);
  159: XMLPUBFUN int XMLCALL
  160: 			xmlTextReaderNodeType	(xmlTextReaderPtr reader);
  161: XMLPUBFUN int XMLCALL
  162: 			xmlTextReaderQuoteChar	(xmlTextReaderPtr reader);
  163: XMLPUBFUN int XMLCALL
  164: 			xmlTextReaderReadState	(xmlTextReaderPtr reader);
  165: XMLPUBFUN int XMLCALL
  166:                         xmlTextReaderIsNamespaceDecl(xmlTextReaderPtr reader);
  167: 
  168: XMLPUBFUN const xmlChar * XMLCALL
  169: 		    xmlTextReaderConstBaseUri	(xmlTextReaderPtr reader);
  170: XMLPUBFUN const xmlChar * XMLCALL
  171: 		    xmlTextReaderConstLocalName	(xmlTextReaderPtr reader);
  172: XMLPUBFUN const xmlChar * XMLCALL
  173: 		    xmlTextReaderConstName	(xmlTextReaderPtr reader);
  174: XMLPUBFUN const xmlChar * XMLCALL
  175: 		    xmlTextReaderConstNamespaceUri(xmlTextReaderPtr reader);
  176: XMLPUBFUN const xmlChar * XMLCALL
  177: 		    xmlTextReaderConstPrefix	(xmlTextReaderPtr reader);
  178: XMLPUBFUN const xmlChar * XMLCALL
  179: 		    xmlTextReaderConstXmlLang	(xmlTextReaderPtr reader);
  180: XMLPUBFUN const xmlChar * XMLCALL
  181: 		    xmlTextReaderConstString	(xmlTextReaderPtr reader,
  182: 						 const xmlChar *str);
  183: XMLPUBFUN const xmlChar * XMLCALL
  184: 		    xmlTextReaderConstValue	(xmlTextReaderPtr reader);
  185: 
  186: /*
  187:  * use the Const version of the routine for
  188:  * better performance and simpler code
  189:  */
  190: XMLPUBFUN xmlChar * XMLCALL
  191: 			xmlTextReaderBaseUri	(xmlTextReaderPtr reader);
  192: XMLPUBFUN xmlChar * XMLCALL
  193: 			xmlTextReaderLocalName	(xmlTextReaderPtr reader);
  194: XMLPUBFUN xmlChar * XMLCALL
  195: 			xmlTextReaderName	(xmlTextReaderPtr reader);
  196: XMLPUBFUN xmlChar * XMLCALL
  197: 			xmlTextReaderNamespaceUri(xmlTextReaderPtr reader);
  198: XMLPUBFUN xmlChar * XMLCALL
  199: 			xmlTextReaderPrefix	(xmlTextReaderPtr reader);
  200: XMLPUBFUN xmlChar * XMLCALL
  201: 			xmlTextReaderXmlLang	(xmlTextReaderPtr reader);
  202: XMLPUBFUN xmlChar * XMLCALL
  203: 			xmlTextReaderValue	(xmlTextReaderPtr reader);
  204: 
  205: /*
  206:  * Methods of the XmlTextReader
  207:  */
  208: XMLPUBFUN int XMLCALL
  209: 		    xmlTextReaderClose		(xmlTextReaderPtr reader);
  210: XMLPUBFUN xmlChar * XMLCALL
  211: 		    xmlTextReaderGetAttributeNo	(xmlTextReaderPtr reader,
  212: 						 int no);
  213: XMLPUBFUN xmlChar * XMLCALL
  214: 		    xmlTextReaderGetAttribute	(xmlTextReaderPtr reader,
  215: 						 const xmlChar *name);
  216: XMLPUBFUN xmlChar * XMLCALL
  217: 		    xmlTextReaderGetAttributeNs	(xmlTextReaderPtr reader,
  218: 						 const xmlChar *localName,
  219: 						 const xmlChar *namespaceURI);
  220: XMLPUBFUN xmlParserInputBufferPtr XMLCALL
  221: 		    xmlTextReaderGetRemainder	(xmlTextReaderPtr reader);
  222: XMLPUBFUN xmlChar * XMLCALL
  223: 		    xmlTextReaderLookupNamespace(xmlTextReaderPtr reader,
  224: 						 const xmlChar *prefix);
  225: XMLPUBFUN int XMLCALL
  226: 		    xmlTextReaderMoveToAttributeNo(xmlTextReaderPtr reader,
  227: 						 int no);
  228: XMLPUBFUN int XMLCALL
  229: 		    xmlTextReaderMoveToAttribute(xmlTextReaderPtr reader,
  230: 						 const xmlChar *name);
  231: XMLPUBFUN int XMLCALL
  232: 		    xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr reader,
  233: 						 const xmlChar *localName,
  234: 						 const xmlChar *namespaceURI);
  235: XMLPUBFUN int XMLCALL
  236: 		    xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader);
  237: XMLPUBFUN int XMLCALL
  238: 		    xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader);
  239: XMLPUBFUN int XMLCALL
  240: 		    xmlTextReaderMoveToElement	(xmlTextReaderPtr reader);
  241: XMLPUBFUN int XMLCALL
  242: 		    xmlTextReaderNormalization	(xmlTextReaderPtr reader);
  243: XMLPUBFUN const xmlChar * XMLCALL
  244: 		    xmlTextReaderConstEncoding  (xmlTextReaderPtr reader);
  245: 
  246: /*
  247:  * Extensions
  248:  */
  249: XMLPUBFUN int XMLCALL
  250: 		    xmlTextReaderSetParserProp	(xmlTextReaderPtr reader,
  251: 						 int prop,
  252: 						 int value);
  253: XMLPUBFUN int XMLCALL
  254: 		    xmlTextReaderGetParserProp	(xmlTextReaderPtr reader,
  255: 						 int prop);
  256: XMLPUBFUN xmlNodePtr XMLCALL
  257: 		    xmlTextReaderCurrentNode	(xmlTextReaderPtr reader);
  258: 
  259: XMLPUBFUN int XMLCALL
  260:             xmlTextReaderGetParserLineNumber(xmlTextReaderPtr reader);
  261: 
  262: XMLPUBFUN int XMLCALL
  263:             xmlTextReaderGetParserColumnNumber(xmlTextReaderPtr reader);
  264: 
  265: XMLPUBFUN xmlNodePtr XMLCALL
  266: 		    xmlTextReaderPreserve	(xmlTextReaderPtr reader);
  267: #ifdef LIBXML_PATTERN_ENABLED
  268: XMLPUBFUN int XMLCALL
  269: 		    xmlTextReaderPreservePattern(xmlTextReaderPtr reader,
  270: 						 const xmlChar *pattern,
  271: 						 const xmlChar **namespaces);
  272: #endif /* LIBXML_PATTERN_ENABLED */
  273: XMLPUBFUN xmlDocPtr XMLCALL
  274: 		    xmlTextReaderCurrentDoc	(xmlTextReaderPtr reader);
  275: XMLPUBFUN xmlNodePtr XMLCALL
  276: 		    xmlTextReaderExpand		(xmlTextReaderPtr reader);
  277: XMLPUBFUN int XMLCALL
  278: 		    xmlTextReaderNext		(xmlTextReaderPtr reader);
  279: XMLPUBFUN int XMLCALL
  280: 		    xmlTextReaderNextSibling	(xmlTextReaderPtr reader);
  281: XMLPUBFUN int XMLCALL
  282: 		    xmlTextReaderIsValid	(xmlTextReaderPtr reader);
  283: #ifdef LIBXML_SCHEMAS_ENABLED
  284: XMLPUBFUN int XMLCALL
  285: 		    xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader,
  286: 						 const char *rng);
  287: XMLPUBFUN int XMLCALL
  288: 		    xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader,
  289: 						 xmlRelaxNGPtr schema);
  290: XMLPUBFUN int XMLCALL
  291: 		    xmlTextReaderSchemaValidate	(xmlTextReaderPtr reader,
  292: 						 const char *xsd);
  293: XMLPUBFUN int XMLCALL
  294: 		    xmlTextReaderSchemaValidateCtxt(xmlTextReaderPtr reader,
  295: 						 xmlSchemaValidCtxtPtr ctxt,
  296: 						 int options);
  297: XMLPUBFUN int XMLCALL
  298: 		    xmlTextReaderSetSchema	(xmlTextReaderPtr reader,
  299: 						 xmlSchemaPtr schema);
  300: #endif
  301: XMLPUBFUN const xmlChar * XMLCALL
  302: 		    xmlTextReaderConstXmlVersion(xmlTextReaderPtr reader);
  303: XMLPUBFUN int XMLCALL
  304: 		    xmlTextReaderStandalone     (xmlTextReaderPtr reader);
  305: 
  306: 
  307: /*
  308:  * Index lookup
  309:  */
  310: XMLPUBFUN long XMLCALL
  311: 		xmlTextReaderByteConsumed	(xmlTextReaderPtr reader);
  312: 
  313: /*
  314:  * New more complete APIs for simpler creation and reuse of readers
  315:  */
  316: XMLPUBFUN xmlTextReaderPtr XMLCALL
  317: 		xmlReaderWalker		(xmlDocPtr doc);
  318: XMLPUBFUN xmlTextReaderPtr XMLCALL
  319: 		xmlReaderForDoc		(const xmlChar * cur,
  320: 					 const char *URL,
  321: 					 const char *encoding,
  322: 					 int options);
  323: XMLPUBFUN xmlTextReaderPtr XMLCALL
  324: 		xmlReaderForFile	(const char *filename,
  325: 					 const char *encoding,
  326: 					 int options);
  327: XMLPUBFUN xmlTextReaderPtr XMLCALL
  328: 		xmlReaderForMemory	(const char *buffer,
  329: 					 int size,
  330: 					 const char *URL,
  331: 					 const char *encoding,
  332: 					 int options);
  333: XMLPUBFUN xmlTextReaderPtr XMLCALL
  334: 		xmlReaderForFd		(int fd,
  335: 					 const char *URL,
  336: 					 const char *encoding,
  337: 					 int options);
  338: XMLPUBFUN xmlTextReaderPtr XMLCALL
  339: 		xmlReaderForIO		(xmlInputReadCallback ioread,
  340: 					 xmlInputCloseCallback ioclose,
  341: 					 void *ioctx,
  342: 					 const char *URL,
  343: 					 const char *encoding,
  344: 					 int options);
  345: 
  346: XMLPUBFUN int XMLCALL
  347: 		xmlReaderNewWalker	(xmlTextReaderPtr reader,
  348: 					 xmlDocPtr doc);
  349: XMLPUBFUN int XMLCALL
  350: 		xmlReaderNewDoc		(xmlTextReaderPtr reader,
  351: 					 const xmlChar * cur,
  352: 					 const char *URL,
  353: 					 const char *encoding,
  354: 					 int options);
  355: XMLPUBFUN int XMLCALL
  356: 		xmlReaderNewFile	(xmlTextReaderPtr reader,
  357: 					 const char *filename,
  358: 					 const char *encoding,
  359: 					 int options);
  360: XMLPUBFUN int XMLCALL
  361: 		xmlReaderNewMemory	(xmlTextReaderPtr reader,
  362: 					 const char *buffer,
  363: 					 int size,
  364: 					 const char *URL,
  365: 					 const char *encoding,
  366: 					 int options);
  367: XMLPUBFUN int XMLCALL
  368: 		xmlReaderNewFd		(xmlTextReaderPtr reader,
  369: 					 int fd,
  370: 					 const char *URL,
  371: 					 const char *encoding,
  372: 					 int options);
  373: XMLPUBFUN 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: /*
  382:  * Error handling extensions
  383:  */
  384: typedef void *  xmlTextReaderLocatorPtr;
  385: 
  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:  */
  395: typedef void   (XMLCALL *xmlTextReaderErrorFunc)(void *arg,
  396: 						 const char *msg,
  397: 						 xmlParserSeverities severity,
  398: 						 xmlTextReaderLocatorPtr locator);
  399: XMLPUBFUN int XMLCALL
  400: 		    xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator);
  401: /*int             xmlTextReaderLocatorLinePosition(xmlTextReaderLocatorPtr locator);*/
  402: XMLPUBFUN xmlChar * XMLCALL
  403: 		    xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator);
  404: XMLPUBFUN void XMLCALL
  405: 		    xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader,
  406: 						 xmlTextReaderErrorFunc f,
  407: 						 void *arg);
  408: XMLPUBFUN void XMLCALL
  409: 		    xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader,
  410: 							   xmlStructuredErrorFunc f,
  411: 							   void *arg);
  412: XMLPUBFUN void XMLCALL
  413: 		    xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader,
  414: 						 xmlTextReaderErrorFunc *f,
  415: 						 void **arg);
  416: 
  417: #endif /* LIBXML_READER_ENABLED */
  418: 
  419: #ifdef __cplusplus
  420: }
  421: #endif
  422: 
  423: #endif /* __XML_XMLREADER_H__ */
  424: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>