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