Annotation of XML/parser.h, revision 1.90

1.1       veillard    1: /*
1.39      daniel      2:  * parser.h : Interfaces, constants and types related to the XML parser.
1.6       veillard    3:  *
                      4:  * See Copyright for the status of this software.
                      5:  *
1.23      daniel      6:  * Daniel.Veillard@w3.org
1.1       veillard    7:  */
                      8: 
                      9: #ifndef __XML_PARSER_H__
                     10: #define __XML_PARSER_H__
                     11: 
1.73      daniel     12: #include <libxml/tree.h>
                     13: #include <libxml/valid.h>
                     14: #include <libxml/xmlIO.h>
                     15: #include <libxml/entities.h>
1.55      daniel     16: 
1.2       veillard   17: 
1.7       daniel     18: #ifdef __cplusplus
                     19: extern "C" {
                     20: #endif
                     21: 
1.1       veillard   22: /*
                     23:  * Constants.
                     24:  */
                     25: #define XML_DEFAULT_VERSION    "1.0"
                     26: 
1.39      daniel     27: /**
                     28:  * an xmlParserInput is an input flow for the XML processor.
                     29:  * Each entity parsed is associated an xmlParserInput (except the
                     30:  * few predefined ones). This is the case both for internal entities
                     31:  * - in which case the flow is already completely in memory - or
                     32:  * external entities - in which case we use the buf structure for
                     33:  * progressive reading and I18N conversions to the internal UTF-8 format.
                     34:  */
                     35: 
1.49      daniel     36: typedef void (* xmlParserInputDeallocate)(xmlChar *);
1.58      daniel     37: typedef struct _xmlParserInput xmlParserInput;
                     38: typedef xmlParserInput *xmlParserInputPtr;
                     39: struct _xmlParserInput {
1.32      daniel     40:     /* Input buffer */
                     41:     xmlParserInputBufferPtr buf;      /* UTF-8 encoded buffer */
                     42: 
1.14      daniel     43:     const char *filename;             /* The file analyzed, if any */
1.36      daniel     44:     const char *directory;            /* the directory/base of teh file */
1.56      daniel     45:     const xmlChar *base;              /* Base of the array to parse */
                     46:     const xmlChar *cur;               /* Current char being parsed */
                     47:     int length;                       /* length if known */
1.14      daniel     48:     int line;                         /* Current line */
                     49:     int col;                          /* Current column */
1.56      daniel     50:     int consumed;                     /* How many xmlChars already consumed */
1.25      daniel     51:     xmlParserInputDeallocate free;    /* function to deallocate the base */
1.60      daniel     52:     const xmlChar *encoding;          /* the encoding string for entity */
1.61      daniel     53:     const xmlChar *version;           /* the version string for entity */
1.63      daniel     54:     int standalone;                   /* Was that entity marked standalone */
1.58      daniel     55: };
1.7       daniel     56: 
1.39      daniel     57: /**
                     58:  * the parser can be asked to collect Node informations, i.e. at what
                     59:  * place in the file they were detected. 
                     60:  * NOTE: This is off by default and not very well tested.
                     61:  */
1.58      daniel     62: typedef struct _xmlParserNodeInfo xmlParserNodeInfo;
                     63: typedef xmlParserNodeInfo *xmlParserNodeInfoPtr;
                     64: 
                     65: struct _xmlParserNodeInfo {
                     66:   const struct _xmlNode* node;
1.13      daniel     67:   /* Position & line # that text that created the node begins & ends on */
                     68:   unsigned long begin_pos;
                     69:   unsigned long begin_line;
                     70:   unsigned long end_pos;
                     71:   unsigned long end_line;
1.58      daniel     72: };
1.13      daniel     73: 
1.58      daniel     74: typedef struct _xmlParserNodeInfoSeq xmlParserNodeInfoSeq;
                     75: typedef xmlParserNodeInfoSeq *xmlParserNodeInfoSeqPtr;
                     76: struct _xmlParserNodeInfoSeq {
1.13      daniel     77:   unsigned long maximum;
                     78:   unsigned long length;
                     79:   xmlParserNodeInfo* buffer;
1.58      daniel     80: };
1.13      daniel     81: 
1.39      daniel     82: /**
1.58      daniel     83:  * The parser is now working also as a state based parser
                     84:  * The recursive one use the stagte info for entities processing
1.39      daniel     85:  */
1.50      daniel     86: typedef enum {
1.56      daniel     87:     XML_PARSER_EOF = -1,       /* nothing is to be parsed */
                     88:     XML_PARSER_START = 0,      /* nothing has been parsed */
                     89:     XML_PARSER_MISC,           /* Misc* before int subset */
                     90:     XML_PARSER_PI,             /* Whithin a processing instruction */
                     91:     XML_PARSER_DTD,            /* within some DTD content */
                     92:     XML_PARSER_PROLOG,         /* Misc* after internal subset */
                     93:     XML_PARSER_COMMENT,                /* within a comment */
                     94:     XML_PARSER_START_TAG,      /* within a start tag */
                     95:     XML_PARSER_CONTENT,                /* within the content */
                     96:     XML_PARSER_CDATA_SECTION,  /* within a CDATA section */
                     97:     XML_PARSER_END_TAG,                /* within a closing tag */
                     98:     XML_PARSER_ENTITY_DECL,    /* within an entity declaration */
                     99:     XML_PARSER_ENTITY_VALUE,   /* within an entity value in a decl */
                    100:     XML_PARSER_ATTRIBUTE_VALUE,        /* within an attribute value */
1.64      daniel    101:     XML_PARSER_SYSTEM_LITERAL, /* within a SYSTEM value */
1.89      veillard  102:     XML_PARSER_EPILOG,                 /* the Misc* after the last end tag */
                    103:     XML_PARSER_IGNORE          /* within an IGNORED section */
1.37      daniel    104: } xmlParserInputState;
                    105: 
1.39      daniel    106: /**
                    107:  * The parser context.
                    108:  * NOTE This doesn't completely defines the parser state, the (current ?)
                    109:  *      design of the parser uses recursive function calls since this allow
                    110:  *      and easy mapping from the production rules of the specification
                    111:  *      to the actual code. The drawback is that the actual function call
                    112:  *      also reflect the parser state. However most of the parsing routines
                    113:  *      takes as the only argument the parser context pointer, so migrating
                    114:  *      to a state based parser for progressive parsing shouldn't be too hard.
                    115:  */
1.58      daniel    116: typedef struct _xmlParserCtxt xmlParserCtxt;
                    117: typedef xmlParserCtxt *xmlParserCtxtPtr;
                    118: struct _xmlParserCtxt {
                    119:     struct _xmlSAXHandler *sax;       /* The SAX handler */
1.82      veillard  120:     void            *userData;        /* For SAX interface only, used by DOM build */
1.27      daniel    121:     xmlDocPtr           myDoc;        /* the document being built */
1.49      daniel    122:     int            wellFormed;        /* is the document well formed */
1.30      daniel    123:     int       replaceEntities;        /* shall we replace entities ? */
1.75      daniel    124:     const xmlChar    *version;        /* the XML version string */
                    125:     const xmlChar   *encoding;        /* the declared encoding, if any */
1.37      daniel    126:     int            standalone;        /* standalone document */
1.81      veillard  127:     int                  html;        /* an HTML(1)/Docbook(2) document */
1.16      daniel    128: 
1.14      daniel    129:     /* Input stream stack */
1.15      daniel    130:     xmlParserInputPtr  input;         /* Current input stream */
1.14      daniel    131:     int                inputNr;       /* Number of current input streams */
                    132:     int                inputMax;      /* Max number of input streams */
                    133:     xmlParserInputPtr *inputTab;      /* stack of inputs */
1.15      daniel    134: 
1.39      daniel    135:     /* Node analysis stack only used for DOM building */
1.15      daniel    136:     xmlNodePtr         node;          /* Current parsed Node */
                    137:     int                nodeNr;        /* Depth of the parsing stack */
                    138:     int                nodeMax;       /* Max depth of the parsing stack */
                    139:     xmlNodePtr        *nodeTab;       /* array of nodes */
1.14      daniel    140: 
1.13      daniel    141:     int record_info;                  /* Whether node info should be kept */
                    142:     xmlParserNodeInfoSeq node_seq;    /* info about each node parsed */
1.48      daniel    143: 
1.49      daniel    144:     int errNo;                        /* error code */
                    145: 
                    146:     int     hasExternalSubset;        /* reference and external subset */
                    147:     int             hasPErefs;        /* the internal subset has PE refs */
                    148:     int              external;        /* are we parsing an external entity */
                    149: 
                    150:     int                 valid;        /* is the document valid */
                    151:     int              validate;        /* shall we try to validate ? */
                    152:     xmlValidCtxt        vctxt;        /* The validity context */
                    153: 
                    154:     xmlParserInputState instate;      /* current type of input */
                    155:     int                 token;        /* next char look-ahead */    
                    156: 
                    157:     char           *directory;        /* the data directory */
1.51      daniel    158: 
1.66      daniel    159:     /* Node name stack */
1.51      daniel    160:     xmlChar           *name;          /* Current parsed Node */
                    161:     int                nameNr;        /* Depth of the parsing stack */
                    162:     int                nameMax;       /* Max depth of the parsing stack */
                    163:     xmlChar *         *nameTab;       /* array of nodes */
                    164: 
1.53      daniel    165:     long               nbChars;       /* number of xmlChar processed */
1.56      daniel    166:     long            checkIndex;       /* used by progressive parsing lookup */
1.67      daniel    167:     int             keepBlanks;       /* ugly but ... */
1.65      daniel    168:     int             disableSAX;       /* SAX callbacks are disabled */
1.62      daniel    169:     int               inSubset;       /* Parsing is in int 1/ext 2 subset */
1.61      daniel    170:     xmlChar *          intSubName;    /* name of subset */
                    171:     xmlChar *          extSubURI;     /* URI of external subset */
                    172:     xmlChar *          extSubSystem;  /* SYSTEM ID of external subset */
1.66      daniel    173: 
                    174:     /* xml:space values */
                    175:     int *              space;         /* Should the parser preserve spaces */
                    176:     int                spaceNr;       /* Depth of the parsing stack */
                    177:     int                spaceMax;      /* Max depth of the parsing stack */
                    178:     int *              spaceTab;      /* array of space infos */
1.71      daniel    179: 
                    180:     int                depth;         /* to prevent entity substitution loops */
1.75      daniel    181:     xmlParserInputPtr  entity;        /* used to check entities boundaries */
                    182:     int                charset;       /* encoding of the in-memory content
                    183:                                         actually an xmlCharEncoding */
1.76      daniel    184:     int                nodelen;       /* Those two fields are there to */
                    185:     int                nodemem;       /* Speed up large node parsing */
1.80      veillard  186:     int                pedantic;      /* signal pedantic warnings */
1.82      veillard  187:     void              *_private;      /* For user data, libxml won't touch it */
1.58      daniel    188: };
1.7       daniel    189: 
1.39      daniel    190: /**
1.17      daniel    191:  * a SAX Locator.
                    192:  */
1.58      daniel    193: typedef struct _xmlSAXLocator xmlSAXLocator;
                    194: typedef xmlSAXLocator *xmlSAXLocatorPtr;
                    195: struct _xmlSAXLocator {
1.49      daniel    196:     const xmlChar *(*getPublicId)(void *ctx);
                    197:     const xmlChar *(*getSystemId)(void *ctx);
1.28      daniel    198:     int (*getLineNumber)(void *ctx);
                    199:     int (*getColumnNumber)(void *ctx);
1.58      daniel    200: };
1.17      daniel    201: 
1.39      daniel    202: /**
                    203:  * a SAX handler is bunch of callbacks called by the parser when processing
                    204:  * of the input generate data or structure informations.
1.17      daniel    205:  */
                    206: 
1.28      daniel    207: typedef xmlParserInputPtr (*resolveEntitySAXFunc) (void *ctx,
1.49      daniel    208:                            const xmlChar *publicId, const xmlChar *systemId);
                    209: typedef void (*internalSubsetSAXFunc) (void *ctx, const xmlChar *name,
                    210:                             const xmlChar *ExternalID, const xmlChar *SystemID);
1.61      daniel    211: typedef void (*externalSubsetSAXFunc) (void *ctx, const xmlChar *name,
                    212:                             const xmlChar *ExternalID, const xmlChar *SystemID);
1.28      daniel    213: typedef xmlEntityPtr (*getEntitySAXFunc) (void *ctx,
1.49      daniel    214:                             const xmlChar *name);
1.39      daniel    215: typedef xmlEntityPtr (*getParameterEntitySAXFunc) (void *ctx,
1.49      daniel    216:                             const xmlChar *name);
1.28      daniel    217: typedef void (*entityDeclSAXFunc) (void *ctx,
1.49      daniel    218:                             const xmlChar *name, int type, const xmlChar *publicId,
                    219:                            const xmlChar *systemId, xmlChar *content);
                    220: typedef void (*notationDeclSAXFunc)(void *ctx, const xmlChar *name,
                    221:                            const xmlChar *publicId, const xmlChar *systemId);
                    222: typedef void (*attributeDeclSAXFunc)(void *ctx, const xmlChar *elem,
                    223:                             const xmlChar *name, int type, int def,
                    224:                            const xmlChar *defaultValue, xmlEnumerationPtr tree);
                    225: typedef void (*elementDeclSAXFunc)(void *ctx, const xmlChar *name,
1.27      daniel    226:                            int type, xmlElementContentPtr content);
1.28      daniel    227: typedef void (*unparsedEntityDeclSAXFunc)(void *ctx,
1.49      daniel    228:                             const xmlChar *name, const xmlChar *publicId,
                    229:                            const xmlChar *systemId, const xmlChar *notationName);
1.28      daniel    230: typedef void (*setDocumentLocatorSAXFunc) (void *ctx,
1.18      daniel    231:                             xmlSAXLocatorPtr loc);
1.28      daniel    232: typedef void (*startDocumentSAXFunc) (void *ctx);
                    233: typedef void (*endDocumentSAXFunc) (void *ctx);
1.49      daniel    234: typedef void (*startElementSAXFunc) (void *ctx, const xmlChar *name,
                    235:                             const xmlChar **atts);
                    236: typedef void (*endElementSAXFunc) (void *ctx, const xmlChar *name);
                    237: typedef void (*attributeSAXFunc) (void *ctx, const xmlChar *name,
                    238:                                   const xmlChar *value);
                    239: typedef void (*referenceSAXFunc) (void *ctx, const xmlChar *name);
                    240: typedef void (*charactersSAXFunc) (void *ctx, const xmlChar *ch,
1.27      daniel    241:                            int len);
1.28      daniel    242: typedef void (*ignorableWhitespaceSAXFunc) (void *ctx,
1.49      daniel    243:                            const xmlChar *ch, int len);
1.28      daniel    244: typedef void (*processingInstructionSAXFunc) (void *ctx,
1.49      daniel    245:                             const xmlChar *target, const xmlChar *data);
                    246: typedef void (*commentSAXFunc) (void *ctx, const xmlChar *value);
                    247: typedef void (*cdataBlockSAXFunc) (void *ctx, const xmlChar *value, int len);
1.28      daniel    248: typedef void (*warningSAXFunc) (void *ctx, const char *msg, ...);
                    249: typedef void (*errorSAXFunc) (void *ctx, const char *msg, ...);
                    250: typedef void (*fatalErrorSAXFunc) (void *ctx, const char *msg, ...);
                    251: typedef int (*isStandaloneSAXFunc) (void *ctx);
                    252: typedef int (*hasInternalSubsetSAXFunc) (void *ctx);
                    253: typedef int (*hasExternalSubsetSAXFunc) (void *ctx);
1.18      daniel    254: 
1.58      daniel    255: typedef struct _xmlSAXHandler xmlSAXHandler;
                    256: typedef xmlSAXHandler *xmlSAXHandlerPtr;
                    257: struct _xmlSAXHandler {
1.27      daniel    258:     internalSubsetSAXFunc internalSubset;
                    259:     isStandaloneSAXFunc isStandalone;
                    260:     hasInternalSubsetSAXFunc hasInternalSubset;
                    261:     hasExternalSubsetSAXFunc hasExternalSubset;
1.18      daniel    262:     resolveEntitySAXFunc resolveEntity;
1.27      daniel    263:     getEntitySAXFunc getEntity;
                    264:     entityDeclSAXFunc entityDecl;
1.18      daniel    265:     notationDeclSAXFunc notationDecl;
1.27      daniel    266:     attributeDeclSAXFunc attributeDecl;
                    267:     elementDeclSAXFunc elementDecl;
1.18      daniel    268:     unparsedEntityDeclSAXFunc unparsedEntityDecl;
                    269:     setDocumentLocatorSAXFunc setDocumentLocator;
                    270:     startDocumentSAXFunc startDocument;
                    271:     endDocumentSAXFunc endDocument;
                    272:     startElementSAXFunc startElement;
                    273:     endElementSAXFunc endElement;
1.27      daniel    274:     referenceSAXFunc reference;
1.18      daniel    275:     charactersSAXFunc characters;
                    276:     ignorableWhitespaceSAXFunc ignorableWhitespace;
                    277:     processingInstructionSAXFunc processingInstruction;
1.27      daniel    278:     commentSAXFunc comment;
1.18      daniel    279:     warningSAXFunc warning;
                    280:     errorSAXFunc error;
                    281:     fatalErrorSAXFunc fatalError;
1.39      daniel    282:     getParameterEntitySAXFunc getParameterEntity;
1.43      daniel    283:     cdataBlockSAXFunc cdataBlock;
1.61      daniel    284:     externalSubsetSAXFunc externalSubset;
1.58      daniel    285: };
1.17      daniel    286: 
1.39      daniel    287: /**
1.57      daniel    288:  * External entity loaders types
                    289:  */
                    290: typedef xmlParserInputPtr (*xmlExternalEntityLoader)(const char *URL,
                    291:                                                     const char *ID,
                    292:                                                     xmlParserCtxtPtr context);
                    293: 
                    294: /**
1.47      daniel    295:  * Global variables: just the default SAX interface tables and XML
                    296:  * version infos.
1.17      daniel    297:  */
1.88      veillard  298: LIBXML_DLL_IMPORT extern const char *xmlParserVersion;
1.33      daniel    299: 
1.88      veillard  300: LIBXML_DLL_IMPORT extern xmlSAXLocator xmlDefaultSAXLocator;
                    301: LIBXML_DLL_IMPORT extern xmlSAXHandler xmlDefaultSAXHandler;
                    302: LIBXML_DLL_IMPORT extern xmlSAXHandler htmlDefaultSAXHandler;
                    303: LIBXML_DLL_IMPORT extern xmlSAXHandler sgmlDefaultSAXHandler;
1.47      daniel    304: 
                    305: /**
                    306:  * entity substitution default behaviour.
                    307:  */
                    308: 
1.90    ! veillard  309: #ifdef VMS
        !           310: LIBXML_DLL_IMPORT extern int xmlSubstituteEntitiesDefaultVal;
        !           311: #define xmlSubstituteEntitiesDefaultValue xmlSubstituteEntitiesDefaultVal
        !           312: #else
1.88      veillard  313: LIBXML_DLL_IMPORT extern int xmlSubstituteEntitiesDefaultValue;
1.90    ! veillard  314: #endif
1.88      veillard  315: LIBXML_DLL_IMPORT extern int xmlGetWarningsDefaultValue;
1.19      daniel    316: 
1.35      daniel    317: 
1.39      daniel    318: /**
1.85      veillard  319:  * Init/Cleanup
1.52      daniel    320:  */
1.85      veillard  321: void           xmlInitParser           (void);
1.52      daniel    322: void           xmlCleanupParser        (void);
                    323: 
                    324: /**
1.35      daniel    325:  * Input functions
                    326:  */
1.45      daniel    327: int            xmlParserInputRead      (xmlParserInputPtr in,
                    328:                                         int len);
                    329: int            xmlParserInputGrow      (xmlParserInputPtr in,
                    330:                                         int len);
1.17      daniel    331: 
1.39      daniel    332: /**
1.49      daniel    333:  * xmlChar handling
1.2       veillard  334:  */
1.49      daniel    335: xmlChar *      xmlStrdup               (const xmlChar *cur);
                    336: xmlChar *      xmlStrndup              (const xmlChar *cur,
1.45      daniel    337:                                         int len);
1.49      daniel    338: xmlChar *      xmlStrsub               (const xmlChar *str,
1.45      daniel    339:                                         int start,
                    340:                                         int len);
1.49      daniel    341: const xmlChar *        xmlStrchr               (const xmlChar *str,
                    342:                                         xmlChar val);
                    343: const xmlChar *        xmlStrstr               (const xmlChar *str,
                    344:                                         xmlChar *val);
1.84      veillard  345: const xmlChar *        xmlStrcasestr           (const xmlChar *str,
                    346:                                         xmlChar *val);
1.49      daniel    347: int            xmlStrcmp               (const xmlChar *str1,
                    348:                                         const xmlChar *str2);
                    349: int            xmlStrncmp              (const xmlChar *str1,
1.84      veillard  350:                                         const xmlChar *str2,
                    351:                                         int len);
                    352: int            xmlStrcasecmp           (const xmlChar *str1,
                    353:                                         const xmlChar *str2);
                    354: int            xmlStrncasecmp          (const xmlChar *str1,
1.49      daniel    355:                                         const xmlChar *str2,
1.45      daniel    356:                                         int len);
1.86      veillard  357: int            xmlStrEqual             (const xmlChar *str1,
                    358:                                         const xmlChar *str2);
1.49      daniel    359: int            xmlStrlen               (const xmlChar *str);
                    360: xmlChar *      xmlStrcat               (xmlChar *cur,
                    361:                                         const xmlChar *add);
                    362: xmlChar *      xmlStrncat              (xmlChar *cur,
                    363:                                         const xmlChar *add,
1.45      daniel    364:                                         int len);
1.9       daniel    365: 
1.39      daniel    366: /**
                    367:  * Basic parsing Interfaces
1.22      daniel    368:  */
1.49      daniel    369: xmlDocPtr      xmlParseDoc             (xmlChar *cur);
1.45      daniel    370: xmlDocPtr      xmlParseMemory          (char *buffer,
                    371:                                         int size);
                    372: xmlDocPtr      xmlParseFile            (const char *filename);
                    373: int            xmlSubstituteEntitiesDefault(int val);
1.68      daniel    374: int            xmlKeepBlanksDefault    (int val);
1.77      daniel    375: void           xmlStopParser           (xmlParserCtxtPtr ctxt);
1.80      veillard  376: int            xmlPedanticParserDefault(int val);
1.22      daniel    377: 
1.39      daniel    378: /**
1.22      daniel    379:  * Recovery mode 
                    380:  */
1.49      daniel    381: xmlDocPtr      xmlRecoverDoc           (xmlChar *cur);
1.45      daniel    382: xmlDocPtr      xmlRecoverMemory        (char *buffer,
                    383:                                         int size);
                    384: xmlDocPtr      xmlRecoverFile          (const char *filename);
1.22      daniel    385: 
1.39      daniel    386: /**
                    387:  * Less common routines and SAX interfaces
1.22      daniel    388:  */
1.45      daniel    389: int            xmlParseDocument        (xmlParserCtxtPtr ctxt);
1.83      veillard  390: int            xmlParseExtParsedEnt    (xmlParserCtxtPtr ctxt);
1.45      daniel    391: xmlDocPtr      xmlSAXParseDoc          (xmlSAXHandlerPtr sax,
1.49      daniel    392:                                         xmlChar *cur,
1.45      daniel    393:                                         int recovery);
1.49      daniel    394: int            xmlSAXUserParseFile     (xmlSAXHandlerPtr sax,
                    395:                                         void *user_data,
                    396:                                         const char *filename);
                    397: int            xmlSAXUserParseMemory   (xmlSAXHandlerPtr sax,
                    398:                                         void *user_data,
                    399:                                         char *buffer,
                    400:                                         int size);
1.45      daniel    401: xmlDocPtr      xmlSAXParseMemory       (xmlSAXHandlerPtr sax,
                    402:                                         char *buffer,
                    403:                                         int size,
                    404:                                         int recovery);
                    405: xmlDocPtr      xmlSAXParseFile         (xmlSAXHandlerPtr sax,
                    406:                                         const char *filename,
                    407:                                         int recovery);
1.83      veillard  408: xmlDocPtr      xmlSAXParseEntity       (xmlSAXHandlerPtr sax,
                    409:                                         const char *filename);
                    410: xmlDocPtr      xmlParseEntity          (const char *filename);
1.49      daniel    411: xmlDtdPtr      xmlParseDTD             (const xmlChar *ExternalID,
                    412:                                         const xmlChar *SystemID);
1.45      daniel    413: xmlDtdPtr      xmlSAXParseDTD          (xmlSAXHandlerPtr sax,
1.49      daniel    414:                                         const xmlChar *ExternalID,
                    415:                                         const xmlChar *SystemID);
1.87      veillard  416: xmlDtdPtr      xmlIOParseDTD           (xmlSAXHandlerPtr sax,
                    417:                                         xmlParserInputBufferPtr input,
                    418:                                         xmlCharEncoding enc);
1.66      daniel    419: int            xmlParseBalancedChunkMemory(xmlDocPtr doc,
                    420:                                         xmlSAXHandlerPtr sax,
                    421:                                         void *user_data,
1.71      daniel    422:                                         int depth,
1.66      daniel    423:                                         const xmlChar *string,
                    424:                                         xmlNodePtr *list);
1.69      daniel    425: int            xmlParseExternalEntity  (xmlDocPtr doc,
                    426:                                         xmlSAXHandlerPtr sax,
                    427:                                         void *user_data,
1.71      daniel    428:                                         int depth,
1.70      daniel    429:                                         const xmlChar *URL,
                    430:                                         const xmlChar *ID,
1.69      daniel    431:                                         xmlNodePtr *list);
1.78      veillard  432: int            xmlParseCtxtExternalEntity(xmlParserCtxtPtr ctx,
                    433:                                         const xmlChar *URL,
                    434:                                         const xmlChar *ID,
                    435:                                         xmlNodePtr *list);
1.66      daniel    436: 
1.56      daniel    437: /**
                    438:  * SAX initialization routines
                    439:  */
                    440: void           xmlDefaultSAXHandlerInit(void);
                    441: void           htmlDefaultSAXHandlerInit(void);
                    442: 
                    443: /**
                    444:  * Parser contexts handling.
                    445:  */
1.45      daniel    446: void           xmlInitParserCtxt       (xmlParserCtxtPtr ctxt);
                    447: void           xmlClearParserCtxt      (xmlParserCtxtPtr ctxt);
1.56      daniel    448: void           xmlFreeParserCtxt       (xmlParserCtxtPtr ctxt);
1.45      daniel    449: void           xmlSetupParserForBuffer (xmlParserCtxtPtr ctxt,
1.49      daniel    450:                                         const xmlChar* buffer,
1.45      daniel    451:                                         const char* filename);
1.56      daniel    452: xmlParserCtxtPtr xmlCreateDocParserCtxt        (xmlChar *cur);
                    453: 
                    454: /**
1.79      veillard  455:  * Reading/setting optional parsing features.
                    456:  */
                    457: 
                    458: int            xmlGetFeaturesList      (int *len,
                    459:                                         const char **result);
                    460: int            xmlGetFeature           (xmlParserCtxtPtr ctxt,
                    461:                                         const char *name,
                    462:                                         void *result);
                    463: int            xmlSetFeature           (xmlParserCtxtPtr ctxt,
                    464:                                         const char *name,
                    465:                                         void *value);
                    466: 
                    467: /**
1.56      daniel    468:  * Interfaces for the Push mode
                    469:  */
                    470: xmlParserCtxtPtr xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax,
                    471:                                         void *user_data,
                    472:                                         const char *chunk,
                    473:                                         int size,
                    474:                                         const char *filename);
                    475: int             xmlParseChunk          (xmlParserCtxtPtr ctxt,
                    476:                                         const char *chunk,
                    477:                                         int size,
                    478:                                         int terminate);
1.9       daniel    479: 
1.45      daniel    480: /**
1.74      daniel    481:  * Special I/O mode
                    482:  */
                    483: 
                    484: xmlParserCtxtPtr xmlCreateIOParserCtxt (xmlSAXHandlerPtr sax,
                    485:                                         void *user_data,
                    486:                                         xmlInputReadCallback   ioread,
                    487:                                         xmlInputCloseCallback  ioclose,
                    488:                                         void *ioctx,
                    489:                                         xmlCharEncoding enc);
                    490: 
                    491: xmlParserInputPtr xmlNewIOInputStream  (xmlParserCtxtPtr ctxt,
                    492:                                         xmlParserInputBufferPtr input,
                    493:                                         xmlCharEncoding enc);
                    494: 
                    495: /**
1.45      daniel    496:  * Node infos
                    497:  */
                    498: const xmlParserNodeInfo*
                    499:                xmlParserFindNodeInfo   (const xmlParserCtxt* ctxt,
1.24      daniel    500:                                                const xmlNode* node);
1.45      daniel    501: void           xmlInitNodeInfoSeq      (xmlParserNodeInfoSeqPtr seq);
                    502: void           xmlClearNodeInfoSeq     (xmlParserNodeInfoSeqPtr seq);
1.13      daniel    503: unsigned long xmlParserFindNodeInfoIndex(const xmlParserNodeInfoSeq* seq,
                    504:                                          const xmlNode* node);
1.45      daniel    505: void           xmlParserAddNodeInfo    (xmlParserCtxtPtr ctxt,
                    506:                                         const xmlParserNodeInfo* info);
                    507: 
                    508: /*
                    509:  * External entities handling actually implemented in xmlIO
                    510:  */
1.7       daniel    511: 
1.45      daniel    512: void           xmlSetExternalEntityLoader(xmlExternalEntityLoader f);
                    513: xmlExternalEntityLoader
                    514:                xmlGetExternalEntityLoader(void);
                    515: xmlParserInputPtr
                    516:                xmlLoadExternalEntity   (const char *URL,
                    517:                                         const char *ID,
1.57      daniel    518:                                         xmlParserCtxtPtr context);
1.55      daniel    519: 
1.7       daniel    520: #ifdef __cplusplus
                    521: }
                    522: #endif
1.1       veillard  523: 
                    524: #endif /* __XML_PARSER_H__ */
                    525: 

Webmaster