ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

parser.h
Go to the documentation of this file.
00001 /*
00002  * Summary: the core parser module
00003  * Description: Interfaces, constants and types related to the XML parser
00004  *
00005  * Copy: See Copyright for the status of this software.
00006  *
00007  * Author: Daniel Veillard
00008  */
00009 
00010 #ifndef __XML_PARSER_H__
00011 #define __XML_PARSER_H__
00012 
00013 #include <stdarg.h>
00014 
00015 #include <libxml/xmlversion.h>
00016 #include <libxml/tree.h>
00017 #include <libxml/dict.h>
00018 #include <libxml/hash.h>
00019 #include <libxml/valid.h>
00020 #include <libxml/entities.h>
00021 #include <libxml/xmlerror.h>
00022 #include <libxml/xmlstring.h>
00023 
00024 #ifdef __cplusplus
00025 extern "C" {
00026 #endif
00027 
00033 #define XML_DEFAULT_VERSION "1.0"
00034 
00052 typedef void (* xmlParserInputDeallocate)(xmlChar *str);
00053 
00054 struct _xmlParserInput {
00055     /* Input buffer */
00056     xmlParserInputBufferPtr buf;      /* UTF-8 encoded buffer */
00057 
00058     const char *filename;             /* The file analyzed, if any */
00059     const char *directory;            /* the directory/base of the file */
00060     const xmlChar *base;              /* Base of the array to parse */
00061     const xmlChar *cur;               /* Current char being parsed */
00062     const xmlChar *end;               /* end of the array to parse */
00063     int length;                       /* length if known */
00064     int line;                         /* Current line */
00065     int col;                          /* Current column */
00066     /*
00067      * NOTE: consumed is only tested for equality in the parser code,
00068      *       so even if there is an overflow this should not give troubles
00069      *       for parsing very large instances.
00070      */
00071     unsigned long consumed;           /* How many xmlChars already consumed */
00072     xmlParserInputDeallocate free;    /* function to deallocate the base */
00073     const xmlChar *encoding;          /* the encoding string for entity */
00074     const xmlChar *version;           /* the version string for entity */
00075     int standalone;                   /* Was that entity marked standalone */
00076     int id;                           /* an unique identifier for the entity */
00077 };
00078 
00086 typedef struct _xmlParserNodeInfo xmlParserNodeInfo;
00087 typedef xmlParserNodeInfo *xmlParserNodeInfoPtr;
00088 
00089 struct _xmlParserNodeInfo {
00090   const struct _xmlNode* node;
00091   /* Position & line # that text that created the node begins & ends on */
00092   unsigned long begin_pos;
00093   unsigned long begin_line;
00094   unsigned long end_pos;
00095   unsigned long end_line;
00096 };
00097 
00098 typedef struct _xmlParserNodeInfoSeq xmlParserNodeInfoSeq;
00099 typedef xmlParserNodeInfoSeq *xmlParserNodeInfoSeqPtr;
00100 struct _xmlParserNodeInfoSeq {
00101   unsigned long maximum;
00102   unsigned long length;
00103   xmlParserNodeInfo* buffer;
00104 };
00105 
00112 typedef enum {
00113     XML_PARSER_EOF = -1,    /* nothing is to be parsed */
00114     XML_PARSER_START = 0,   /* nothing has been parsed */
00115     XML_PARSER_MISC,        /* Misc* before int subset */
00116     XML_PARSER_PI,      /* Within a processing instruction */
00117     XML_PARSER_DTD,     /* within some DTD content */
00118     XML_PARSER_PROLOG,      /* Misc* after internal subset */
00119     XML_PARSER_COMMENT,     /* within a comment */
00120     XML_PARSER_START_TAG,   /* within a start tag */
00121     XML_PARSER_CONTENT,     /* within the content */
00122     XML_PARSER_CDATA_SECTION,   /* within a CDATA section */
00123     XML_PARSER_END_TAG,     /* within a closing tag */
00124     XML_PARSER_ENTITY_DECL, /* within an entity declaration */
00125     XML_PARSER_ENTITY_VALUE,    /* within an entity value in a decl */
00126     XML_PARSER_ATTRIBUTE_VALUE, /* within an attribute value */
00127     XML_PARSER_SYSTEM_LITERAL,  /* within a SYSTEM value */
00128     XML_PARSER_EPILOG,      /* the Misc* after the last end tag */
00129     XML_PARSER_IGNORE,      /* within an IGNORED section */
00130     XML_PARSER_PUBLIC_LITERAL   /* within a PUBLIC value */
00131 } xmlParserInputState;
00132 
00139 #define XML_DETECT_IDS      2
00140 
00148 #define XML_COMPLETE_ATTRS  4
00149 
00156 #define XML_SKIP_IDS        8
00157 
00163 typedef enum {
00164     XML_PARSE_UNKNOWN = 0,
00165     XML_PARSE_DOM = 1,
00166     XML_PARSE_SAX = 2,
00167     XML_PARSE_PUSH_DOM = 3,
00168     XML_PARSE_PUSH_SAX = 4,
00169     XML_PARSE_READER = 5
00170 } xmlParserMode;
00171 
00184 struct _xmlParserCtxt {
00185     struct _xmlSAXHandler *sax;       /* The SAX handler */
00186     void            *userData;        /* For SAX interface only, used by DOM build */
00187     xmlDocPtr           myDoc;        /* the document being built */
00188     int            wellFormed;        /* is the document well formed */
00189     int       replaceEntities;        /* shall we replace entities ? */
00190     const xmlChar    *version;        /* the XML version string */
00191     const xmlChar   *encoding;        /* the declared encoding, if any */
00192     int            standalone;        /* standalone document */
00193     int                  html;        /* an HTML(1)/Docbook(2) document
00194                                        * 3 is HTML after <head>
00195                                        * 10 is HTML after <body>
00196                                        */
00197 
00198     /* Input stream stack */
00199     xmlParserInputPtr  input;         /* Current input stream */
00200     int                inputNr;       /* Number of current input streams */
00201     int                inputMax;      /* Max number of input streams */
00202     xmlParserInputPtr *inputTab;      /* stack of inputs */
00203 
00204     /* Node analysis stack only used for DOM building */
00205     xmlNodePtr         node;          /* Current parsed Node */
00206     int                nodeNr;        /* Depth of the parsing stack */
00207     int                nodeMax;       /* Max depth of the parsing stack */
00208     xmlNodePtr        *nodeTab;       /* array of nodes */
00209 
00210     int record_info;                  /* Whether node info should be kept */
00211     xmlParserNodeInfoSeq node_seq;    /* info about each node parsed */
00212 
00213     int errNo;                        /* error code */
00214 
00215     int     hasExternalSubset;        /* reference and external subset */
00216     int             hasPErefs;        /* the internal subset has PE refs */
00217     int              external;        /* are we parsing an external entity */
00218 
00219     int                 valid;        /* is the document valid */
00220     int              validate;        /* shall we try to validate ? */
00221     xmlValidCtxt        vctxt;        /* The validity context */
00222 
00223     xmlParserInputState instate;      /* current type of input */
00224     int                 token;        /* next char look-ahead */    
00225 
00226     char           *directory;        /* the data directory */
00227 
00228     /* Node name stack */
00229     const xmlChar     *name;          /* Current parsed Node */
00230     int                nameNr;        /* Depth of the parsing stack */
00231     int                nameMax;       /* Max depth of the parsing stack */
00232     const xmlChar *   *nameTab;       /* array of nodes */
00233 
00234     long               nbChars;       /* number of xmlChar processed */
00235     long            checkIndex;       /* used by progressive parsing lookup */
00236     int             keepBlanks;       /* ugly but ... */
00237     int             disableSAX;       /* SAX callbacks are disabled */
00238     int               inSubset;       /* Parsing is in int 1/ext 2 subset */
00239     const xmlChar *    intSubName;    /* name of subset */
00240     xmlChar *          extSubURI;     /* URI of external subset */
00241     xmlChar *          extSubSystem;  /* SYSTEM ID of external subset */
00242 
00243     /* xml:space values */
00244     int *              space;         /* Should the parser preserve spaces */
00245     int                spaceNr;       /* Depth of the parsing stack */
00246     int                spaceMax;      /* Max depth of the parsing stack */
00247     int *              spaceTab;      /* array of space infos */
00248 
00249     int                depth;         /* to prevent entity substitution loops */
00250     xmlParserInputPtr  entity;        /* used to check entities boundaries */
00251     int                charset;       /* encoding of the in-memory content
00252                          actually an xmlCharEncoding */
00253     int                nodelen;       /* Those two fields are there to */
00254     int                nodemem;       /* Speed up large node parsing */
00255     int                pedantic;      /* signal pedantic warnings */
00256     void              *_private;      /* For user data, libxml won't touch it */
00257 
00258     int                loadsubset;    /* should the external subset be loaded */
00259     int                linenumbers;   /* set line number in element content */
00260     void              *catalogs;      /* document's own catalog */
00261     int                recovery;      /* run in recovery mode */
00262     int                progressive;   /* is this a progressive parsing */
00263     xmlDictPtr         dict;          /* dictionnary for the parser */
00264     const xmlChar *   *atts;          /* array for the attributes callbacks */
00265     int                maxatts;       /* the size of the array */
00266     int                docdict;       /* use strings from dict to build tree */
00267 
00268     /*
00269      * pre-interned strings
00270      */
00271     const xmlChar *str_xml;
00272     const xmlChar *str_xmlns;
00273     const xmlChar *str_xml_ns;
00274 
00275     /*
00276      * Everything below is used only by the new SAX mode
00277      */
00278     int                sax2;          /* operating in the new SAX mode */
00279     int                nsNr;          /* the number of inherited namespaces */
00280     int                nsMax;         /* the size of the arrays */
00281     const xmlChar *   *nsTab;         /* the array of prefix/namespace name */
00282     int               *attallocs;     /* which attribute were allocated */
00283     void *            *pushTab;       /* array of data for push */
00284     xmlHashTablePtr    attsDefault;   /* defaulted attributes if any */
00285     xmlHashTablePtr    attsSpecial;   /* non-CDATA attributes if any */
00286     int                nsWellFormed;  /* is the document XML Nanespace okay */
00287     int                options;       /* Extra options */
00288 
00289     /*
00290      * Those fields are needed only for treaming parsing so far
00291      */
00292     int               dictNames;    /* Use dictionary names for the tree */
00293     int               freeElemsNr;  /* number of freed element nodes */
00294     xmlNodePtr        freeElems;    /* List of freed element nodes */
00295     int               freeAttrsNr;  /* number of freed attributes nodes */
00296     xmlAttrPtr        freeAttrs;    /* List of freed attributes nodes */
00297 
00298     /*
00299      * the complete error informations for the last error.
00300      */
00301     xmlError          lastError;
00302     xmlParserMode     parseMode;    /* the parser mode */
00303     unsigned long    nbentities;    /* number of entities references */
00304     unsigned long  sizeentities;    /* size of parsed entities */
00305 
00306     /* for use by HTML non-recursive parser */
00307     xmlParserNodeInfo *nodeInfo;      /* Current NodeInfo */
00308     int                nodeInfoNr;    /* Depth of the parsing stack */
00309     int                nodeInfoMax;   /* Max depth of the parsing stack */
00310     xmlParserNodeInfo *nodeInfoTab;   /* array of nodeInfos */
00311 };
00312 
00318 struct _xmlSAXLocator {
00319     const xmlChar *(*getPublicId)(void *ctx);
00320     const xmlChar *(*getSystemId)(void *ctx);
00321     int (*getLineNumber)(void *ctx);
00322     int (*getColumnNumber)(void *ctx);
00323 };
00324 
00347 typedef xmlParserInputPtr (*resolveEntitySAXFunc) (void *ctx,
00348                 const xmlChar *publicId,
00349                 const xmlChar *systemId);
00359 typedef void (*internalSubsetSAXFunc) (void *ctx,
00360                 const xmlChar *name,
00361                 const xmlChar *ExternalID,
00362                 const xmlChar *SystemID);
00372 typedef void (*externalSubsetSAXFunc) (void *ctx,
00373                 const xmlChar *name,
00374                 const xmlChar *ExternalID,
00375                 const xmlChar *SystemID);
00385 typedef xmlEntityPtr (*getEntitySAXFunc) (void *ctx,
00386                 const xmlChar *name);
00396 typedef xmlEntityPtr (*getParameterEntitySAXFunc) (void *ctx,
00397                 const xmlChar *name);
00409 typedef void (*entityDeclSAXFunc) (void *ctx,
00410                 const xmlChar *name,
00411                 int type,
00412                 const xmlChar *publicId,
00413                 const xmlChar *systemId,
00414                 xmlChar *content);
00424 typedef void (*notationDeclSAXFunc)(void *ctx,
00425                 const xmlChar *name,
00426                 const xmlChar *publicId,
00427                 const xmlChar *systemId);
00440 typedef void (*attributeDeclSAXFunc)(void *ctx,
00441                 const xmlChar *elem,
00442                 const xmlChar *fullname,
00443                 int type,
00444                 int def,
00445                 const xmlChar *defaultValue,
00446                 xmlEnumerationPtr tree);
00456 typedef void (*elementDeclSAXFunc)(void *ctx,
00457                 const xmlChar *name,
00458                 int type,
00459                 xmlElementContentPtr content);
00470 typedef void (*unparsedEntityDeclSAXFunc)(void *ctx,
00471                 const xmlChar *name,
00472                 const xmlChar *publicId,
00473                 const xmlChar *systemId,
00474                 const xmlChar *notationName);
00483 typedef void (*setDocumentLocatorSAXFunc) (void *ctx,
00484                 xmlSAXLocatorPtr loc);
00491 typedef void (*startDocumentSAXFunc) (void *ctx);
00498 typedef void (*endDocumentSAXFunc) (void *ctx);
00507 typedef void (*startElementSAXFunc) (void *ctx,
00508                 const xmlChar *name,
00509                 const xmlChar **atts);
00517 typedef void (*endElementSAXFunc) (void *ctx,
00518                 const xmlChar *name);
00530 typedef void (*attributeSAXFunc) (void *ctx,
00531                 const xmlChar *name,
00532                 const xmlChar *value);
00540 typedef void (*referenceSAXFunc) (void *ctx,
00541                 const xmlChar *name);
00550 typedef void (*charactersSAXFunc) (void *ctx,
00551                 const xmlChar *ch,
00552                 int len);
00562 typedef void (*ignorableWhitespaceSAXFunc) (void *ctx,
00563                 const xmlChar *ch,
00564                 int len);
00573 typedef void (*processingInstructionSAXFunc) (void *ctx,
00574                 const xmlChar *target,
00575                 const xmlChar *data);
00583 typedef void (*commentSAXFunc) (void *ctx,
00584                 const xmlChar *value);
00593 typedef void (*cdataBlockSAXFunc) (
00594                             void *ctx,
00595                 const xmlChar *value,
00596                 int len);
00605 typedef void (XMLCDECL *warningSAXFunc) (void *ctx,
00606                 const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
00615 typedef void (XMLCDECL *errorSAXFunc) (void *ctx,
00616                 const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
00627 typedef void (XMLCDECL *fatalErrorSAXFunc) (void *ctx,
00628                 const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
00637 typedef int (*isStandaloneSAXFunc) (void *ctx);
00646 typedef int (*hasInternalSubsetSAXFunc) (void *ctx);
00647 
00656 typedef int (*hasExternalSubsetSAXFunc) (void *ctx);
00657 
00658 /************************************************************************
00659  *                                  *
00660  *          The SAX version 2 API extensions        *
00661  *                                  *
00662  ************************************************************************/
00668 #define XML_SAX2_MAGIC 0xDEEDBEAF
00669 
00689 typedef void (*startElementNsSAX2Func) (void *ctx,
00690                     const xmlChar *localname,
00691                     const xmlChar *prefix,
00692                     const xmlChar *URI,
00693                     int nb_namespaces,
00694                     const xmlChar **namespaces,
00695                     int nb_attributes,
00696                     int nb_defaulted,
00697                     const xmlChar **attributes);
00698  
00710 typedef void (*endElementNsSAX2Func)   (void *ctx,
00711                     const xmlChar *localname,
00712                     const xmlChar *prefix,
00713                     const xmlChar *URI);
00714 
00715 
00716 struct _xmlSAXHandler {
00717     internalSubsetSAXFunc internalSubset;
00718     isStandaloneSAXFunc isStandalone;
00719     hasInternalSubsetSAXFunc hasInternalSubset;
00720     hasExternalSubsetSAXFunc hasExternalSubset;
00721     resolveEntitySAXFunc resolveEntity;
00722     getEntitySAXFunc getEntity;
00723     entityDeclSAXFunc entityDecl;
00724     notationDeclSAXFunc notationDecl;
00725     attributeDeclSAXFunc attributeDecl;
00726     elementDeclSAXFunc elementDecl;
00727     unparsedEntityDeclSAXFunc unparsedEntityDecl;
00728     setDocumentLocatorSAXFunc setDocumentLocator;
00729     startDocumentSAXFunc startDocument;
00730     endDocumentSAXFunc endDocument;
00731     startElementSAXFunc startElement;
00732     endElementSAXFunc endElement;
00733     referenceSAXFunc reference;
00734     charactersSAXFunc characters;
00735     ignorableWhitespaceSAXFunc ignorableWhitespace;
00736     processingInstructionSAXFunc processingInstruction;
00737     commentSAXFunc comment;
00738     warningSAXFunc warning;
00739     errorSAXFunc error;
00740     fatalErrorSAXFunc fatalError; /* unused error() get all the errors */
00741     getParameterEntitySAXFunc getParameterEntity;
00742     cdataBlockSAXFunc cdataBlock;
00743     externalSubsetSAXFunc externalSubset;
00744     unsigned int initialized;
00745     /* The following fields are extensions available only on version 2 */
00746     void *_private;
00747     startElementNsSAX2Func startElementNs;
00748     endElementNsSAX2Func endElementNs;
00749     xmlStructuredErrorFunc serror;
00750 };
00751 
00752 /*
00753  * SAX Version 1
00754  */
00755 typedef struct _xmlSAXHandlerV1 xmlSAXHandlerV1;
00756 typedef xmlSAXHandlerV1 *xmlSAXHandlerV1Ptr;
00757 struct _xmlSAXHandlerV1 {
00758     internalSubsetSAXFunc internalSubset;
00759     isStandaloneSAXFunc isStandalone;
00760     hasInternalSubsetSAXFunc hasInternalSubset;
00761     hasExternalSubsetSAXFunc hasExternalSubset;
00762     resolveEntitySAXFunc resolveEntity;
00763     getEntitySAXFunc getEntity;
00764     entityDeclSAXFunc entityDecl;
00765     notationDeclSAXFunc notationDecl;
00766     attributeDeclSAXFunc attributeDecl;
00767     elementDeclSAXFunc elementDecl;
00768     unparsedEntityDeclSAXFunc unparsedEntityDecl;
00769     setDocumentLocatorSAXFunc setDocumentLocator;
00770     startDocumentSAXFunc startDocument;
00771     endDocumentSAXFunc endDocument;
00772     startElementSAXFunc startElement;
00773     endElementSAXFunc endElement;
00774     referenceSAXFunc reference;
00775     charactersSAXFunc characters;
00776     ignorableWhitespaceSAXFunc ignorableWhitespace;
00777     processingInstructionSAXFunc processingInstruction;
00778     commentSAXFunc comment;
00779     warningSAXFunc warning;
00780     errorSAXFunc error;
00781     fatalErrorSAXFunc fatalError; /* unused error() get all the errors */
00782     getParameterEntitySAXFunc getParameterEntity;
00783     cdataBlockSAXFunc cdataBlock;
00784     externalSubsetSAXFunc externalSubset;
00785     unsigned int initialized;
00786 };
00787 
00788 
00799 typedef xmlParserInputPtr (*xmlExternalEntityLoader) (const char *URL,
00800                      const char *ID,
00801                      xmlParserCtxtPtr context);
00802 
00803 #ifdef __cplusplus
00804 }
00805 #endif
00806 
00807 #include <libxml/encoding.h>
00808 #include <libxml/xmlIO.h>
00809 #include <libxml/globals.h>
00810 
00811 #ifdef __cplusplus
00812 extern "C" {
00813 #endif
00814 
00815 
00816 /*
00817  * Init/Cleanup
00818  */
00819 XMLPUBFUN void XMLCALL      
00820         xmlInitParser       (void);
00821 XMLPUBFUN void XMLCALL      
00822         xmlCleanupParser    (void);
00823 
00824 /*
00825  * Input functions
00826  */
00827 XMLPUBFUN int XMLCALL       
00828         xmlParserInputRead  (xmlParserInputPtr in,
00829                      int len);
00830 XMLPUBFUN int XMLCALL       
00831         xmlParserInputGrow  (xmlParserInputPtr in,
00832                      int len);
00833 
00834 /*
00835  * Basic parsing Interfaces
00836  */
00837 #ifdef LIBXML_SAX1_ENABLED
00838 XMLPUBFUN xmlDocPtr XMLCALL 
00839         xmlParseDoc     (const xmlChar *cur);
00840 XMLPUBFUN xmlDocPtr XMLCALL 
00841         xmlParseFile        (const char *filename);
00842 XMLPUBFUN xmlDocPtr XMLCALL 
00843         xmlParseMemory      (const char *buffer,
00844                      int size);
00845 #endif /* LIBXML_SAX1_ENABLED */
00846 XMLPUBFUN int XMLCALL       
00847         xmlSubstituteEntitiesDefault(int val);
00848 XMLPUBFUN int XMLCALL       
00849         xmlKeepBlanksDefault    (int val);
00850 XMLPUBFUN void XMLCALL      
00851         xmlStopParser       (xmlParserCtxtPtr ctxt);
00852 XMLPUBFUN int XMLCALL       
00853         xmlPedanticParserDefault(int val);
00854 XMLPUBFUN int XMLCALL       
00855         xmlLineNumbersDefault   (int val);
00856 
00857 #ifdef LIBXML_SAX1_ENABLED
00858 /*
00859  * Recovery mode 
00860  */
00861 XMLPUBFUN xmlDocPtr XMLCALL 
00862         xmlRecoverDoc       (const xmlChar *cur);
00863 XMLPUBFUN xmlDocPtr XMLCALL 
00864         xmlRecoverMemory    (const char *buffer,
00865                      int size);
00866 XMLPUBFUN xmlDocPtr XMLCALL 
00867         xmlRecoverFile      (const char *filename);
00868 #endif /* LIBXML_SAX1_ENABLED */
00869 
00870 /*
00871  * Less common routines and SAX interfaces
00872  */
00873 XMLPUBFUN int XMLCALL       
00874         xmlParseDocument    (xmlParserCtxtPtr ctxt);
00875 XMLPUBFUN int XMLCALL       
00876         xmlParseExtParsedEnt    (xmlParserCtxtPtr ctxt);
00877 #ifdef LIBXML_SAX1_ENABLED
00878 XMLPUBFUN int XMLCALL       
00879         xmlSAXUserParseFile (xmlSAXHandlerPtr sax,
00880                      void *user_data,
00881                      const char *filename);
00882 XMLPUBFUN int XMLCALL       
00883         xmlSAXUserParseMemory   (xmlSAXHandlerPtr sax,
00884                      void *user_data,
00885                      const char *buffer,
00886                      int size);
00887 XMLPUBFUN xmlDocPtr XMLCALL 
00888         xmlSAXParseDoc      (xmlSAXHandlerPtr sax,
00889                      const xmlChar *cur,
00890                      int recovery);
00891 XMLPUBFUN xmlDocPtr XMLCALL 
00892         xmlSAXParseMemory   (xmlSAXHandlerPtr sax,
00893                      const char *buffer,
00894                                      int size,
00895                      int recovery);
00896 XMLPUBFUN xmlDocPtr XMLCALL 
00897         xmlSAXParseMemoryWithData (xmlSAXHandlerPtr sax,
00898                      const char *buffer,
00899                                      int size,
00900                      int recovery,
00901                      void *data);
00902 XMLPUBFUN xmlDocPtr XMLCALL 
00903         xmlSAXParseFile     (xmlSAXHandlerPtr sax,
00904                      const char *filename,
00905                      int recovery);
00906 XMLPUBFUN xmlDocPtr XMLCALL 
00907         xmlSAXParseFileWithData (xmlSAXHandlerPtr sax,
00908                      const char *filename,
00909                      int recovery,
00910                      void *data);
00911 XMLPUBFUN xmlDocPtr XMLCALL 
00912         xmlSAXParseEntity   (xmlSAXHandlerPtr sax,
00913                      const char *filename);
00914 XMLPUBFUN xmlDocPtr XMLCALL 
00915         xmlParseEntity      (const char *filename);
00916 #endif /* LIBXML_SAX1_ENABLED */
00917 
00918 #ifdef LIBXML_VALID_ENABLED
00919 XMLPUBFUN xmlDtdPtr XMLCALL 
00920         xmlSAXParseDTD      (xmlSAXHandlerPtr sax,
00921                      const xmlChar *ExternalID,
00922                      const xmlChar *SystemID);
00923 XMLPUBFUN xmlDtdPtr XMLCALL 
00924         xmlParseDTD     (const xmlChar *ExternalID,
00925                      const xmlChar *SystemID);
00926 XMLPUBFUN xmlDtdPtr XMLCALL 
00927         xmlIOParseDTD       (xmlSAXHandlerPtr sax,
00928                      xmlParserInputBufferPtr input,
00929                      xmlCharEncoding enc);
00930 #endif /* LIBXML_VALID_ENABLE */
00931 #ifdef LIBXML_SAX1_ENABLED
00932 XMLPUBFUN int XMLCALL   
00933         xmlParseBalancedChunkMemory(xmlDocPtr doc,
00934                      xmlSAXHandlerPtr sax,
00935                      void *user_data,
00936                      int depth,
00937                      const xmlChar *string,
00938                      xmlNodePtr *lst);
00939 #endif /* LIBXML_SAX1_ENABLED */
00940 XMLPUBFUN xmlParserErrors XMLCALL
00941         xmlParseInNodeContext   (xmlNodePtr node,
00942                      const char *data,
00943                      int datalen,
00944                      int options,
00945                      xmlNodePtr *lst);
00946 #ifdef LIBXML_SAX1_ENABLED
00947 XMLPUBFUN int XMLCALL          
00948         xmlParseBalancedChunkMemoryRecover(xmlDocPtr doc,
00949                      xmlSAXHandlerPtr sax,
00950                      void *user_data,
00951                      int depth,
00952                      const xmlChar *string,
00953                      xmlNodePtr *lst,
00954                      int recover);
00955 XMLPUBFUN int XMLCALL       
00956         xmlParseExternalEntity  (xmlDocPtr doc,
00957                      xmlSAXHandlerPtr sax,
00958                      void *user_data,
00959                      int depth,
00960                      const xmlChar *URL,
00961                      const xmlChar *ID,
00962                      xmlNodePtr *lst);
00963 #endif /* LIBXML_SAX1_ENABLED */
00964 XMLPUBFUN int XMLCALL       
00965         xmlParseCtxtExternalEntity(xmlParserCtxtPtr ctx,
00966                      const xmlChar *URL,
00967                      const xmlChar *ID,
00968                      xmlNodePtr *lst);
00969 
00970 /*
00971  * Parser contexts handling.
00972  */
00973 XMLPUBFUN xmlParserCtxtPtr XMLCALL  
00974         xmlNewParserCtxt    (void);
00975 XMLPUBFUN int XMLCALL       
00976         xmlInitParserCtxt   (xmlParserCtxtPtr ctxt);
00977 XMLPUBFUN void XMLCALL      
00978         xmlClearParserCtxt  (xmlParserCtxtPtr ctxt);
00979 XMLPUBFUN void XMLCALL      
00980         xmlFreeParserCtxt   (xmlParserCtxtPtr ctxt);
00981 #ifdef LIBXML_SAX1_ENABLED
00982 XMLPUBFUN void XMLCALL      
00983         xmlSetupParserForBuffer (xmlParserCtxtPtr ctxt,
00984                      const xmlChar* buffer,
00985                      const char *filename);
00986 #endif /* LIBXML_SAX1_ENABLED */
00987 XMLPUBFUN xmlParserCtxtPtr XMLCALL 
00988         xmlCreateDocParserCtxt  (const xmlChar *cur);
00989 
00990 #ifdef LIBXML_LEGACY_ENABLED
00991 /*
00992  * Reading/setting optional parsing features.
00993  */
00994 XMLPUBFUN int XMLCALL       
00995         xmlGetFeaturesList  (int *len,
00996                      const char **result);
00997 XMLPUBFUN int XMLCALL       
00998         xmlGetFeature       (xmlParserCtxtPtr ctxt,
00999                      const char *name,
01000                      void *result);
01001 XMLPUBFUN int XMLCALL       
01002         xmlSetFeature       (xmlParserCtxtPtr ctxt,
01003                      const char *name,
01004                      void *value);
01005 #endif /* LIBXML_LEGACY_ENABLED */
01006 
01007 #ifdef LIBXML_PUSH_ENABLED
01008 /*
01009  * Interfaces for the Push mode.
01010  */
01011 XMLPUBFUN xmlParserCtxtPtr XMLCALL 
01012         xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax,
01013                      void *user_data,
01014                      const char *chunk,
01015                      int size,
01016                      const char *filename);
01017 XMLPUBFUN int XMLCALL        
01018         xmlParseChunk       (xmlParserCtxtPtr ctxt,
01019                      const char *chunk,
01020                      int size,
01021                      int terminate);
01022 #endif /* LIBXML_PUSH_ENABLED */
01023 
01024 /*
01025  * Special I/O mode.
01026  */
01027 
01028 XMLPUBFUN xmlParserCtxtPtr XMLCALL 
01029         xmlCreateIOParserCtxt   (xmlSAXHandlerPtr sax,
01030                      void *user_data,
01031                      xmlInputReadCallback   ioread,
01032                      xmlInputCloseCallback  ioclose,
01033                      void *ioctx,
01034                      xmlCharEncoding enc);
01035 
01036 XMLPUBFUN xmlParserInputPtr XMLCALL 
01037         xmlNewIOInputStream (xmlParserCtxtPtr ctxt,
01038                      xmlParserInputBufferPtr input,
01039                      xmlCharEncoding enc);
01040 
01041 /*
01042  * Node infos.
01043  */
01044 XMLPUBFUN const xmlParserNodeInfo* XMLCALL
01045         xmlParserFindNodeInfo   (const xmlParserCtxtPtr ctxt,
01046                          const xmlNodePtr node);
01047 XMLPUBFUN void XMLCALL      
01048         xmlInitNodeInfoSeq  (xmlParserNodeInfoSeqPtr seq);
01049 XMLPUBFUN void XMLCALL      
01050         xmlClearNodeInfoSeq (xmlParserNodeInfoSeqPtr seq);
01051 XMLPUBFUN unsigned long XMLCALL 
01052         xmlParserFindNodeInfoIndex(const xmlParserNodeInfoSeqPtr seq,
01053                                          const xmlNodePtr node);
01054 XMLPUBFUN void XMLCALL      
01055         xmlParserAddNodeInfo    (xmlParserCtxtPtr ctxt,
01056                      const xmlParserNodeInfoPtr info);
01057 
01058 /*
01059  * External entities handling actually implemented in xmlIO.
01060  */
01061 
01062 XMLPUBFUN void XMLCALL      
01063         xmlSetExternalEntityLoader(xmlExternalEntityLoader f);
01064 XMLPUBFUN xmlExternalEntityLoader XMLCALL
01065         xmlGetExternalEntityLoader(void);
01066 XMLPUBFUN xmlParserInputPtr XMLCALL
01067         xmlLoadExternalEntity   (const char *URL,
01068                      const char *ID,
01069                      xmlParserCtxtPtr ctxt);
01070 
01071 /*
01072  * Index lookup, actually implemented in the encoding module
01073  */
01074 XMLPUBFUN long XMLCALL
01075         xmlByteConsumed     (xmlParserCtxtPtr ctxt);
01076 
01077 /*
01078  * New set of simpler/more flexible APIs
01079  */
01086 typedef enum {
01087     XML_PARSE_RECOVER   = 1<<0, /* recover on errors */
01088     XML_PARSE_NOENT = 1<<1, /* substitute entities */
01089     XML_PARSE_DTDLOAD   = 1<<2, /* load the external subset */
01090     XML_PARSE_DTDATTR   = 1<<3, /* default DTD attributes */
01091     XML_PARSE_DTDVALID  = 1<<4, /* validate with the DTD */
01092     XML_PARSE_NOERROR   = 1<<5, /* suppress error reports */
01093     XML_PARSE_NOWARNING = 1<<6, /* suppress warning reports */
01094     XML_PARSE_PEDANTIC  = 1<<7, /* pedantic error reporting */
01095     XML_PARSE_NOBLANKS  = 1<<8, /* remove blank nodes */
01096     XML_PARSE_SAX1  = 1<<9, /* use the SAX1 interface internally */
01097     XML_PARSE_XINCLUDE  = 1<<10,/* Implement XInclude substitition  */
01098     XML_PARSE_NONET = 1<<11,/* Forbid network access */
01099     XML_PARSE_NODICT    = 1<<12,/* Do not reuse the context dictionnary */
01100     XML_PARSE_NSCLEAN   = 1<<13,/* remove redundant namespaces declarations */
01101     XML_PARSE_NOCDATA   = 1<<14,/* merge CDATA as text nodes */
01102     XML_PARSE_NOXINCNODE= 1<<15,/* do not generate XINCLUDE START/END nodes */
01103     XML_PARSE_COMPACT   = 1<<16,/* compact small text nodes; no modification of
01104                                    the tree allowed afterwards (will possibly
01105                    crash if you try to modify the tree) */
01106     XML_PARSE_OLD10 = 1<<17,/* parse using XML-1.0 before update 5 */
01107     XML_PARSE_NOBASEFIX = 1<<18,/* do not fixup XINCLUDE xml:base uris */
01108     XML_PARSE_HUGE      = 1<<19, /* relax any hardcoded limit from the parser */
01109     XML_PARSE_OLDSAX    = 1<<20 /* parse using SAX2 interface from before 2.7.0 */
01110 } xmlParserOption;
01111 
01112 XMLPUBFUN void XMLCALL
01113         xmlCtxtReset        (xmlParserCtxtPtr ctxt);
01114 XMLPUBFUN int XMLCALL
01115         xmlCtxtResetPush    (xmlParserCtxtPtr ctxt,
01116                      const char *chunk,
01117                      int size,
01118                      const char *filename,
01119                      const char *encoding);
01120 XMLPUBFUN int XMLCALL
01121         xmlCtxtUseOptions   (xmlParserCtxtPtr ctxt,
01122                      int options);
01123 XMLPUBFUN xmlDocPtr XMLCALL
01124         xmlReadDoc      (const xmlChar *cur,
01125                      const char *URL,
01126                      const char *encoding,
01127                      int options);
01128 XMLPUBFUN xmlDocPtr XMLCALL
01129         xmlReadFile     (const char *URL,
01130                      const char *encoding,
01131                      int options);
01132 XMLPUBFUN xmlDocPtr XMLCALL
01133         xmlReadMemory       (const char *buffer,
01134                      int size,
01135                      const char *URL,
01136                      const char *encoding,
01137                      int options);
01138 XMLPUBFUN xmlDocPtr XMLCALL
01139         xmlReadFd       (int fd,
01140                      const char *URL,
01141                      const char *encoding,
01142                      int options);
01143 XMLPUBFUN xmlDocPtr XMLCALL
01144         xmlReadIO       (xmlInputReadCallback ioread,
01145                      xmlInputCloseCallback ioclose,
01146                      void *ioctx,
01147                      const char *URL,
01148                      const char *encoding,
01149                      int options);
01150 XMLPUBFUN xmlDocPtr XMLCALL
01151         xmlCtxtReadDoc      (xmlParserCtxtPtr ctxt,
01152                      const xmlChar *cur,
01153                      const char *URL,
01154                      const char *encoding,
01155                      int options);
01156 XMLPUBFUN xmlDocPtr XMLCALL
01157         xmlCtxtReadFile     (xmlParserCtxtPtr ctxt,
01158                      const char *filename,
01159                      const char *encoding,
01160                      int options);
01161 XMLPUBFUN xmlDocPtr XMLCALL
01162         xmlCtxtReadMemory       (xmlParserCtxtPtr ctxt,
01163                      const char *buffer,
01164                      int size,
01165                      const char *URL,
01166                      const char *encoding,
01167                      int options);
01168 XMLPUBFUN xmlDocPtr XMLCALL
01169         xmlCtxtReadFd       (xmlParserCtxtPtr ctxt,
01170                      int fd,
01171                      const char *URL,
01172                      const char *encoding,
01173                      int options);
01174 XMLPUBFUN xmlDocPtr XMLCALL
01175         xmlCtxtReadIO       (xmlParserCtxtPtr ctxt,
01176                      xmlInputReadCallback ioread,
01177                      xmlInputCloseCallback ioclose,
01178                      void *ioctx,
01179                      const char *URL,
01180                      const char *encoding,
01181                      int options);
01182 
01183 /*
01184  * Library wide options
01185  */
01193 typedef enum {
01194     XML_WITH_THREAD = 1,
01195     XML_WITH_TREE = 2,
01196     XML_WITH_OUTPUT = 3,
01197     XML_WITH_PUSH = 4,
01198     XML_WITH_READER = 5,
01199     XML_WITH_PATTERN = 6,
01200     XML_WITH_WRITER = 7,
01201     XML_WITH_SAX1 = 8,
01202     XML_WITH_FTP = 9,
01203     XML_WITH_HTTP = 10,
01204     XML_WITH_VALID = 11,
01205     XML_WITH_HTML = 12,
01206     XML_WITH_LEGACY = 13,
01207     XML_WITH_C14N = 14,
01208     XML_WITH_CATALOG = 15,
01209     XML_WITH_XPATH = 16,
01210     XML_WITH_XPTR = 17,
01211     XML_WITH_XINCLUDE = 18,
01212     XML_WITH_ICONV = 19,
01213     XML_WITH_ISO8859X = 20,
01214     XML_WITH_UNICODE = 21,
01215     XML_WITH_REGEXP = 22,
01216     XML_WITH_AUTOMATA = 23,
01217     XML_WITH_EXPR = 24,
01218     XML_WITH_SCHEMAS = 25,
01219     XML_WITH_SCHEMATRON = 26,
01220     XML_WITH_MODULES = 27,
01221     XML_WITH_DEBUG = 28,
01222     XML_WITH_DEBUG_MEM = 29,
01223     XML_WITH_DEBUG_RUN = 30,
01224     XML_WITH_ZLIB = 31,
01225     XML_WITH_ICU = 32,
01226     XML_WITH_NONE = 99999 /* just to be sure of allocation size */
01227 } xmlFeature;
01228 
01229 XMLPUBFUN int XMLCALL
01230         xmlHasFeature       (xmlFeature feature);
01231 
01232 #ifdef __cplusplus
01233 }
01234 #endif
01235 #endif /* __XML_PARSER_H__ */

Generated on Sun May 27 2012 04:21:57 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.