Annotation of win32/gnome/gnome-xml/include/libxml/parser.h, revision 1.2
1.1 paf 1: /*
2: * parser.h : Interfaces, constants and types related to the XML parser.
3: *
4: * See Copyright for the status of this software.
5: *
6: * daniel@veillard.com
7: */
8:
9: #ifndef __XML_PARSER_H__
10: #define __XML_PARSER_H__
11:
12: #include <libxml/tree.h>
13: #include <libxml/valid.h>
14: #include <libxml/entities.h>
15:
16: #ifdef __cplusplus
17: extern "C" {
18: #endif
19:
20: /**
21: * XML_DEFAULT_VERSION:
22: *
23: * The default version of XML used: 1.0
24: */
25: #define XML_DEFAULT_VERSION "1.0"
26:
27: /**
28: * xmlParserInput:
29: *
30: * An xmlParserInput is an input flow for the XML processor.
31: * Each entity parsed is associated an xmlParserInput (except the
32: * few predefined ones). This is the case both for internal entities
33: * - in which case the flow is already completely in memory - or
34: * external entities - in which case we use the buf structure for
35: * progressive reading and I18N conversions to the internal UTF-8 format.
36: */
37:
38: /**
39: * xmlParserInputDeallocate:
40: * @str: the string to deallocate
41: *
42: * Callback for freeing some parser input allocations.
43: */
44: typedef void (* xmlParserInputDeallocate)(xmlChar *str);
45:
46: struct _xmlParserInput {
47: /* Input buffer */
48: xmlParserInputBufferPtr buf; /* UTF-8 encoded buffer */
49:
50: const char *filename; /* The file analyzed, if any */
51: const char *directory; /* the directory/base of the file */
52: const xmlChar *base; /* Base of the array to parse */
53: const xmlChar *cur; /* Current char being parsed */
54: const xmlChar *end; /* end of the array to parse */
55: int length; /* length if known */
56: int line; /* Current line */
57: int col; /* Current column */
1.2 ! paf 58: /*
! 59: * NOTE: consumed is only tested for equality in the parser code,
! 60: * so even if there is an overflow this should not give troubles
! 61: * for parsing very large instances.
! 62: */
! 63: unsigned long consumed; /* How many xmlChars already consumed */
1.1 paf 64: xmlParserInputDeallocate free; /* function to deallocate the base */
65: const xmlChar *encoding; /* the encoding string for entity */
66: const xmlChar *version; /* the version string for entity */
67: int standalone; /* Was that entity marked standalone */
68: };
69:
70: /**
71: * xmlParserNodeInfo:
72: *
73: * The parser can be asked to collect Node informations, i.e. at what
74: * place in the file they were detected.
75: * NOTE: This is off by default and not very well tested.
76: */
77: typedef struct _xmlParserNodeInfo xmlParserNodeInfo;
78: typedef xmlParserNodeInfo *xmlParserNodeInfoPtr;
79:
80: struct _xmlParserNodeInfo {
81: const struct _xmlNode* node;
82: /* Position & line # that text that created the node begins & ends on */
83: unsigned long begin_pos;
84: unsigned long begin_line;
85: unsigned long end_pos;
86: unsigned long end_line;
87: };
88:
89: typedef struct _xmlParserNodeInfoSeq xmlParserNodeInfoSeq;
90: typedef xmlParserNodeInfoSeq *xmlParserNodeInfoSeqPtr;
91: struct _xmlParserNodeInfoSeq {
92: unsigned long maximum;
93: unsigned long length;
94: xmlParserNodeInfo* buffer;
95: };
96:
97: /**
98: * xmlParserInputState:
99: *
100: * The parser is now working also as a state based parser.
101: * The recursive one use the state info for entities processing.
102: */
103: typedef enum {
104: XML_PARSER_EOF = -1, /* nothing is to be parsed */
105: XML_PARSER_START = 0, /* nothing has been parsed */
106: XML_PARSER_MISC, /* Misc* before int subset */
107: XML_PARSER_PI, /* Within a processing instruction */
108: XML_PARSER_DTD, /* within some DTD content */
109: XML_PARSER_PROLOG, /* Misc* after internal subset */
110: XML_PARSER_COMMENT, /* within a comment */
111: XML_PARSER_START_TAG, /* within a start tag */
112: XML_PARSER_CONTENT, /* within the content */
113: XML_PARSER_CDATA_SECTION, /* within a CDATA section */
114: XML_PARSER_END_TAG, /* within a closing tag */
115: XML_PARSER_ENTITY_DECL, /* within an entity declaration */
116: XML_PARSER_ENTITY_VALUE, /* within an entity value in a decl */
117: XML_PARSER_ATTRIBUTE_VALUE, /* within an attribute value */
118: XML_PARSER_SYSTEM_LITERAL, /* within a SYSTEM value */
119: XML_PARSER_EPILOG, /* the Misc* after the last end tag */
120: XML_PARSER_IGNORE, /* within an IGNORED section */
121: XML_PARSER_PUBLIC_LITERAL /* within a PUBLIC value */
122: } xmlParserInputState;
123:
124: /**
125: * XML_DETECT_IDS:
126: *
127: * Bit in the loadsubset context field to tell to do ID/REFs lookups.
128: * Use it to initialize xmlLoadExtDtdDefaultValue.
129: */
130: #define XML_DETECT_IDS 2
131:
132: /**
133: * XML_COMPLETE_ATTRS:
134: *
135: * Bit in the loadsubset context field to tell to do complete the
136: * elements attributes lists with the ones defaulted from the DTDs.
137: * Use it to initialize xmlLoadExtDtdDefaultValue.
138: */
139: #define XML_COMPLETE_ATTRS 4
140:
141: /**
142: * XML_SKIP_IDS:
143: *
144: * Bit in the loadsubset context field to tell to not do ID/REFs registration.
145: * Used to initialize xmlLoadExtDtdDefaultValue in some special cases.
146: */
147: #define XML_SKIP_IDS 8
148:
149: /**
150: * xmlParserCtxt:
151: *
152: * The parser context.
153: * NOTE This doesn't completely define the parser state, the (current ?)
154: * design of the parser uses recursive function calls since this allow
155: * and easy mapping from the production rules of the specification
156: * to the actual code. The drawback is that the actual function call
157: * also reflect the parser state. However most of the parsing routines
158: * takes as the only argument the parser context pointer, so migrating
159: * to a state based parser for progressive parsing shouldn't be too hard.
160: */
161: struct _xmlParserCtxt {
162: struct _xmlSAXHandler *sax; /* The SAX handler */
163: void *userData; /* For SAX interface only, used by DOM build */
164: xmlDocPtr myDoc; /* the document being built */
165: int wellFormed; /* is the document well formed */
166: int replaceEntities; /* shall we replace entities ? */
167: const xmlChar *version; /* the XML version string */
168: const xmlChar *encoding; /* the declared encoding, if any */
169: int standalone; /* standalone document */
170: int html; /* an HTML(1)/Docbook(2) document */
171:
172: /* Input stream stack */
173: xmlParserInputPtr input; /* Current input stream */
174: int inputNr; /* Number of current input streams */
175: int inputMax; /* Max number of input streams */
176: xmlParserInputPtr *inputTab; /* stack of inputs */
177:
178: /* Node analysis stack only used for DOM building */
179: xmlNodePtr node; /* Current parsed Node */
180: int nodeNr; /* Depth of the parsing stack */
181: int nodeMax; /* Max depth of the parsing stack */
182: xmlNodePtr *nodeTab; /* array of nodes */
183:
184: int record_info; /* Whether node info should be kept */
185: xmlParserNodeInfoSeq node_seq; /* info about each node parsed */
186:
187: int errNo; /* error code */
188:
189: int hasExternalSubset; /* reference and external subset */
190: int hasPErefs; /* the internal subset has PE refs */
191: int external; /* are we parsing an external entity */
192:
193: int valid; /* is the document valid */
194: int validate; /* shall we try to validate ? */
195: xmlValidCtxt vctxt; /* The validity context */
196:
197: xmlParserInputState instate; /* current type of input */
198: int token; /* next char look-ahead */
199:
200: char *directory; /* the data directory */
201:
202: /* Node name stack */
203: xmlChar *name; /* Current parsed Node */
204: int nameNr; /* Depth of the parsing stack */
205: int nameMax; /* Max depth of the parsing stack */
206: xmlChar * *nameTab; /* array of nodes */
207:
208: long nbChars; /* number of xmlChar processed */
209: long checkIndex; /* used by progressive parsing lookup */
210: int keepBlanks; /* ugly but ... */
211: int disableSAX; /* SAX callbacks are disabled */
212: int inSubset; /* Parsing is in int 1/ext 2 subset */
213: xmlChar * intSubName; /* name of subset */
214: xmlChar * extSubURI; /* URI of external subset */
215: xmlChar * extSubSystem; /* SYSTEM ID of external subset */
216:
217: /* xml:space values */
218: int * space; /* Should the parser preserve spaces */
219: int spaceNr; /* Depth of the parsing stack */
220: int spaceMax; /* Max depth of the parsing stack */
221: int * spaceTab; /* array of space infos */
222:
223: int depth; /* to prevent entity substitution loops */
224: xmlParserInputPtr entity; /* used to check entities boundaries */
225: int charset; /* encoding of the in-memory content
226: actually an xmlCharEncoding */
227: int nodelen; /* Those two fields are there to */
228: int nodemem; /* Speed up large node parsing */
229: int pedantic; /* signal pedantic warnings */
230: void *_private; /* For user data, libxml won't touch it */
231:
232: int loadsubset; /* should the external subset be loaded */
233: int linenumbers; /* set line number in element content */
234: void *catalogs; /* document's own catalog */
235: int recovery; /* run in recovery mode */
1.2 ! paf 236: int progressive; /* is this a progressive parsing */
1.1 paf 237: };
238:
239: /**
240: * xmlSAXLocator:
241: *
242: * A SAX Locator.
243: */
244: struct _xmlSAXLocator {
245: const xmlChar *(*getPublicId)(void *ctx);
246: const xmlChar *(*getSystemId)(void *ctx);
247: int (*getLineNumber)(void *ctx);
248: int (*getColumnNumber)(void *ctx);
249: };
250:
251: /**
252: * xmlSAXHandler:
253: *
254: * A SAX handler is bunch of callbacks called by the parser when processing
255: * of the input generate data or structure informations.
256: */
257:
258: /**
259: * resolveEntitySAXFunc:
260: * @ctx: the user data (XML parser context)
261: * @publicId: The public ID of the entity
262: * @systemId: The system ID of the entity
263: *
264: * Callback:
265: * The entity loader, to control the loading of external entities,
266: * the application can either:
267: * - override this resolveEntity() callback in the SAX block
268: * - or better use the xmlSetExternalEntityLoader() function to
269: * set up it's own entity resolution routine
270: *
271: * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
272: */
273: typedef xmlParserInputPtr (*resolveEntitySAXFunc) (void *ctx,
274: const xmlChar *publicId,
275: const xmlChar *systemId);
276: /**
277: * internalSubsetSAXFunc:
278: * @ctx: the user data (XML parser context)
279: * @name: the root element name
280: * @ExternalID: the external ID
281: * @SystemID: the SYSTEM ID (e.g. filename or URL)
282: *
283: * Callback on internal subset declaration.
284: */
285: typedef void (*internalSubsetSAXFunc) (void *ctx,
286: const xmlChar *name,
287: const xmlChar *ExternalID,
288: const xmlChar *SystemID);
289: /**
290: * externalSubsetSAXFunc:
291: * @ctx: the user data (XML parser context)
292: * @name: the root element name
293: * @ExternalID: the external ID
294: * @SystemID: the SYSTEM ID (e.g. filename or URL)
295: *
296: * Callback on external subset declaration.
297: */
298: typedef void (*externalSubsetSAXFunc) (void *ctx,
299: const xmlChar *name,
300: const xmlChar *ExternalID,
301: const xmlChar *SystemID);
302: /**
303: * getEntitySAXFunc:
304: * @ctx: the user data (XML parser context)
305: * @name: The entity name
306: *
307: * Get an entity by name.
308: *
309: * Returns the xmlEntityPtr if found.
310: */
311: typedef xmlEntityPtr (*getEntitySAXFunc) (void *ctx,
312: const xmlChar *name);
313: /**
314: * getParameterEntitySAXFunc:
315: * @ctx: the user data (XML parser context)
316: * @name: The entity name
317: *
318: * Get a parameter entity by name.
319: *
320: * Returns the xmlEntityPtr if found.
321: */
322: typedef xmlEntityPtr (*getParameterEntitySAXFunc) (void *ctx,
323: const xmlChar *name);
324: /**
325: * entityDeclSAXFunc:
326: * @ctx: the user data (XML parser context)
327: * @name: the entity name
328: * @type: the entity type
329: * @publicId: The public ID of the entity
330: * @systemId: The system ID of the entity
331: * @content: the entity value (without processing).
332: *
333: * An entity definition has been parsed.
334: */
335: typedef void (*entityDeclSAXFunc) (void *ctx,
336: const xmlChar *name,
337: int type,
338: const xmlChar *publicId,
339: const xmlChar *systemId,
340: xmlChar *content);
341: /**
342: * notationDeclSAXFunc:
343: * @ctx: the user data (XML parser context)
344: * @name: The name of the notation
345: * @publicId: The public ID of the entity
346: * @systemId: The system ID of the entity
347: *
348: * What to do when a notation declaration has been parsed.
349: */
350: typedef void (*notationDeclSAXFunc)(void *ctx,
351: const xmlChar *name,
352: const xmlChar *publicId,
353: const xmlChar *systemId);
354: /**
355: * attributeDeclSAXFunc:
356: * @ctx: the user data (XML parser context)
357: * @elem: the name of the element
358: * @fullname: the attribute name
359: * @type: the attribute type
360: * @def: the type of default value
361: * @defaultValue: the attribute default value
362: * @tree: the tree of enumerated value set
363: *
364: * An attribute definition has been parsed.
365: */
366: typedef void (*attributeDeclSAXFunc)(void *ctx,
367: const xmlChar *elem,
368: const xmlChar *fullname,
369: int type,
370: int def,
371: const xmlChar *defaultValue,
372: xmlEnumerationPtr tree);
373: /**
374: * elementDeclSAXFunc:
375: * @ctx: the user data (XML parser context)
376: * @name: the element name
377: * @type: the element type
378: * @content: the element value tree
379: *
380: * An element definition has been parsed.
381: */
382: typedef void (*elementDeclSAXFunc)(void *ctx,
383: const xmlChar *name,
384: int type,
385: xmlElementContentPtr content);
386: /**
387: * unparsedEntityDeclSAXFunc:
388: * @ctx: the user data (XML parser context)
389: * @name: The name of the entity
390: * @publicId: The public ID of the entity
391: * @systemId: The system ID of the entity
392: * @notationName: the name of the notation
393: *
394: * What to do when an unparsed entity declaration is parsed.
395: */
396: typedef void (*unparsedEntityDeclSAXFunc)(void *ctx,
397: const xmlChar *name,
398: const xmlChar *publicId,
399: const xmlChar *systemId,
400: const xmlChar *notationName);
401: /**
402: * setDocumentLocatorSAXFunc:
403: * @ctx: the user data (XML parser context)
404: * @loc: A SAX Locator
405: *
406: * Receive the document locator at startup, actually xmlDefaultSAXLocator.
407: * Everything is available on the context, so this is useless in our case.
408: */
409: typedef void (*setDocumentLocatorSAXFunc) (void *ctx,
410: xmlSAXLocatorPtr loc);
411: /**
412: * startDocumentSAXFunc:
413: * @ctx: the user data (XML parser context)
414: *
415: * Called when the document start being processed.
416: */
417: typedef void (*startDocumentSAXFunc) (void *ctx);
418: /**
419: * endDocumentSAXFunc:
420: * @ctx: the user data (XML parser context)
421: *
422: * Called when the document end has been detected.
423: */
424: typedef void (*endDocumentSAXFunc) (void *ctx);
425: /**
426: * startElementSAXFunc:
427: * @ctx: the user data (XML parser context)
428: * @name: The element name, including namespace prefix
429: * @atts: An array of name/value attributes pairs, NULL terminated
430: *
431: * Called when an opening tag has been processed.
432: */
433: typedef void (*startElementSAXFunc) (void *ctx,
434: const xmlChar *name,
435: const xmlChar **atts);
436: /**
437: * endElementSAXFunc:
438: * @ctx: the user data (XML parser context)
439: * @name: The element name
440: *
441: * Called when the end of an element has been detected.
442: */
443: typedef void (*endElementSAXFunc) (void *ctx,
444: const xmlChar *name);
445: /**
446: * attributeSAXFunc:
447: * @ctx: the user data (XML parser context)
448: * @name: The attribute name, including namespace prefix
449: * @value: The attribute value
450: *
451: * Handle an attribute that has been read by the parser.
452: * The default handling is to convert the attribute into an
453: * DOM subtree and past it in a new xmlAttr element added to
454: * the element.
455: */
456: typedef void (*attributeSAXFunc) (void *ctx,
457: const xmlChar *name,
458: const xmlChar *value);
459: /**
460: * referenceSAXFunc:
461: * @ctx: the user data (XML parser context)
462: * @name: The entity name
463: *
464: * Called when an entity reference is detected.
465: */
466: typedef void (*referenceSAXFunc) (void *ctx,
467: const xmlChar *name);
468: /**
469: * charactersSAXFunc:
470: * @ctx: the user data (XML parser context)
471: * @ch: a xmlChar string
472: * @len: the number of xmlChar
473: *
474: * Receiving some chars from the parser.
475: */
476: typedef void (*charactersSAXFunc) (void *ctx,
477: const xmlChar *ch,
478: int len);
479: /**
480: * ignorableWhitespaceSAXFunc:
481: * @ctx: the user data (XML parser context)
482: * @ch: a xmlChar string
483: * @len: the number of xmlChar
484: *
485: * Receiving some ignorable whitespaces from the parser.
486: * UNUSED: by default the DOM building will use characters.
487: */
488: typedef void (*ignorableWhitespaceSAXFunc) (void *ctx,
489: const xmlChar *ch,
490: int len);
491: /**
492: * processingInstructionSAXFunc:
493: * @ctx: the user data (XML parser context)
494: * @target: the target name
495: * @data: the PI data's
496: *
497: * A processing instruction has been parsed.
498: */
499: typedef void (*processingInstructionSAXFunc) (void *ctx,
500: const xmlChar *target,
501: const xmlChar *data);
502: /**
503: * commentSAXFunc:
504: * @ctx: the user data (XML parser context)
505: * @value: the comment content
506: *
507: * A comment has been parsed.
508: */
509: typedef void (*commentSAXFunc) (void *ctx,
510: const xmlChar *value);
511: /**
512: * cdataBlockSAXFunc:
513: * @ctx: the user data (XML parser context)
514: * @value: The pcdata content
515: * @len: the block length
516: *
517: * Called when a pcdata block has been parsed.
518: */
519: typedef void (*cdataBlockSAXFunc) (
520: void *ctx,
521: const xmlChar *value,
522: int len);
523: /**
524: * warningSAXFunc:
525: * @ctx: an XML parser context
526: * @msg: the message to display/transmit
527: * @...: extra parameters for the message display
528: *
529: * Display and format a warning messages, callback.
530: */
531: typedef void (*warningSAXFunc) (void *ctx,
532: const char *msg, ...);
533: /**
534: * errorSAXFunc:
535: * @ctx: an XML parser context
536: * @msg: the message to display/transmit
537: * @...: extra parameters for the message display
538: *
539: * Display and format an error messages, callback.
540: */
541: typedef void (*errorSAXFunc) (void *ctx,
542: const char *msg, ...);
543: /**
544: * fatalErrorSAXFunc:
545: * @ctx: an XML parser context
546: * @msg: the message to display/transmit
547: * @...: extra parameters for the message display
548: *
549: * Display and format fatal error messages, callback.
550: * Note: so far fatalError() SAX callbacks are not used, error()
551: * get all the callbacks for errors.
552: */
553: typedef void (*fatalErrorSAXFunc) (void *ctx,
554: const char *msg, ...);
555: /**
556: * isStandaloneSAXFunc:
557: * @ctx: the user data (XML parser context)
558: *
559: * Is this document tagged standalone?
560: *
561: * Returns 1 if true
562: */
563: typedef int (*isStandaloneSAXFunc) (void *ctx);
564: /**
565: * hasInternalSubsetSAXFunc:
566: * @ctx: the user data (XML parser context)
567: *
568: * Does this document has an internal subset.
569: *
570: * Returns 1 if true
571: */
572: typedef int (*hasInternalSubsetSAXFunc) (void *ctx);
573: /**
574: * hasExternalSubsetSAXFunc:
575: * @ctx: the user data (XML parser context)
576: *
577: * Does this document has an external subset?
578: *
579: * Returns 1 if true
580: */
581: typedef int (*hasExternalSubsetSAXFunc) (void *ctx);
582:
583: struct _xmlSAXHandler {
584: internalSubsetSAXFunc internalSubset;
585: isStandaloneSAXFunc isStandalone;
586: hasInternalSubsetSAXFunc hasInternalSubset;
587: hasExternalSubsetSAXFunc hasExternalSubset;
588: resolveEntitySAXFunc resolveEntity;
589: getEntitySAXFunc getEntity;
590: entityDeclSAXFunc entityDecl;
591: notationDeclSAXFunc notationDecl;
592: attributeDeclSAXFunc attributeDecl;
593: elementDeclSAXFunc elementDecl;
594: unparsedEntityDeclSAXFunc unparsedEntityDecl;
595: setDocumentLocatorSAXFunc setDocumentLocator;
596: startDocumentSAXFunc startDocument;
597: endDocumentSAXFunc endDocument;
598: startElementSAXFunc startElement;
599: endElementSAXFunc endElement;
600: referenceSAXFunc reference;
601: charactersSAXFunc characters;
602: ignorableWhitespaceSAXFunc ignorableWhitespace;
603: processingInstructionSAXFunc processingInstruction;
604: commentSAXFunc comment;
605: warningSAXFunc warning;
606: errorSAXFunc error;
607: fatalErrorSAXFunc fatalError; /* unused error() get all the errors */
608: getParameterEntitySAXFunc getParameterEntity;
609: cdataBlockSAXFunc cdataBlock;
610: externalSubsetSAXFunc externalSubset;
611: int initialized;
612: };
613:
614: /**
615: * xmlExternalEntityLoader:
616: * @URL: The System ID of the resource requested
617: * @ID: The Public ID of the resource requested
618: * @context: the XML parser context
619: *
620: * External entity loaders types.
621: *
622: * Returns the entity input parser.
623: */
624: typedef xmlParserInputPtr (*xmlExternalEntityLoader) (const char *URL,
625: const char *ID,
626: xmlParserCtxtPtr context);
627:
628: /*
629: * Global variables: just the default SAX interface tables and XML
630: * version infos.
631: */
632: #if 0
633: LIBXML_DLL_IMPORT extern const char *xmlParserVersion;
634: #endif
635:
636: /*
637: LIBXML_DLL_IMPORT extern xmlSAXLocator xmlDefaultSAXLocator;
638: LIBXML_DLL_IMPORT extern xmlSAXHandler xmlDefaultSAXHandler;
639: LIBXML_DLL_IMPORT extern xmlSAXHandler htmlDefaultSAXHandler;
640: LIBXML_DLL_IMPORT extern xmlSAXHandler docbDefaultSAXHandler;
641: */
642:
643: /*
644: * Entity substitution default behavior.
645: */
646:
647: #if 0
648: LIBXML_DLL_IMPORT extern int xmlSubstituteEntitiesDefaultValue;
649: LIBXML_DLL_IMPORT extern int xmlGetWarningsDefaultValue;
650: #endif
651:
652: #ifdef __cplusplus
653: }
654: #endif
655: #include <libxml/encoding.h>
656: #include <libxml/xmlIO.h>
657: #include <libxml/globals.h>
658: #ifdef __cplusplus
659: extern "C" {
660: #endif
661:
662:
663: /*
664: * Init/Cleanup
665: */
666: void xmlInitParser (void);
667: void xmlCleanupParser (void);
668:
669: /*
670: * Input functions
671: */
672: int xmlParserInputRead (xmlParserInputPtr in,
673: int len);
674: int xmlParserInputGrow (xmlParserInputPtr in,
675: int len);
676:
677: /*
678: * xmlChar handling
679: */
680: xmlChar * xmlStrdup (const xmlChar *cur);
681: xmlChar * xmlStrndup (const xmlChar *cur,
682: int len);
683: xmlChar * xmlCharStrndup (const char *cur,
684: int len);
685: xmlChar * xmlCharStrdup (const char *cur);
686: xmlChar * xmlStrsub (const xmlChar *str,
687: int start,
688: int len);
689: const xmlChar * xmlStrchr (const xmlChar *str,
690: xmlChar val);
691: const xmlChar * xmlStrstr (const xmlChar *str,
692: const xmlChar *val);
693: const xmlChar * xmlStrcasestr (const xmlChar *str,
694: xmlChar *val);
695: int xmlStrcmp (const xmlChar *str1,
696: const xmlChar *str2);
697: int xmlStrncmp (const xmlChar *str1,
698: const xmlChar *str2,
699: int len);
700: int xmlStrcasecmp (const xmlChar *str1,
701: const xmlChar *str2);
702: int xmlStrncasecmp (const xmlChar *str1,
703: const xmlChar *str2,
704: int len);
705: int xmlStrEqual (const xmlChar *str1,
706: const xmlChar *str2);
707: int xmlStrlen (const xmlChar *str);
708: xmlChar * xmlStrcat (xmlChar *cur,
709: const xmlChar *add);
710: xmlChar * xmlStrncat (xmlChar *cur,
711: const xmlChar *add,
712: int len);
713:
714: /*
715: * Basic parsing Interfaces
716: */
717: xmlDocPtr xmlParseDoc (xmlChar *cur);
718: xmlDocPtr xmlParseMemory (const char *buffer,
719: int size);
720: xmlDocPtr xmlParseFile (const char *filename);
721: int xmlSubstituteEntitiesDefault(int val);
722: int xmlKeepBlanksDefault (int val);
723: void xmlStopParser (xmlParserCtxtPtr ctxt);
724: int xmlPedanticParserDefault(int val);
725: int xmlLineNumbersDefault (int val);
726:
727: /*
728: * Recovery mode
729: */
730: xmlDocPtr xmlRecoverDoc (xmlChar *cur);
731: xmlDocPtr xmlRecoverMemory (const char *buffer,
732: int size);
733: xmlDocPtr xmlRecoverFile (const char *filename);
734:
735: /*
736: * Less common routines and SAX interfaces
737: */
738: int xmlParseDocument (xmlParserCtxtPtr ctxt);
739: int xmlParseExtParsedEnt (xmlParserCtxtPtr ctxt);
740: xmlDocPtr xmlSAXParseDoc (xmlSAXHandlerPtr sax,
741: xmlChar *cur,
742: int recovery);
743: int xmlSAXUserParseFile (xmlSAXHandlerPtr sax,
744: void *user_data,
745: const char *filename);
746: int xmlSAXUserParseMemory (xmlSAXHandlerPtr sax,
747: void *user_data,
748: const char *buffer,
749: int size);
750: xmlDocPtr xmlSAXParseMemory (xmlSAXHandlerPtr sax,
751: const char *buffer,
752: int size,
753: int recovery);
754: xmlDocPtr xmlSAXParseMemoryWithData (xmlSAXHandlerPtr sax,
755: const char *buffer,
756: int size,
757: int recovery,
758: void *data);
759: xmlDocPtr xmlSAXParseFile (xmlSAXHandlerPtr sax,
760: const char *filename,
761: int recovery);
762: xmlDocPtr xmlSAXParseFileWithData (xmlSAXHandlerPtr sax,
763: const char *filename,
764: int recovery,
765: void *data);
766: xmlDocPtr xmlSAXParseEntity (xmlSAXHandlerPtr sax,
767: const char *filename);
768: xmlDocPtr xmlParseEntity (const char *filename);
769: xmlDtdPtr xmlParseDTD (const xmlChar *ExternalID,
770: const xmlChar *SystemID);
771: xmlDtdPtr xmlSAXParseDTD (xmlSAXHandlerPtr sax,
772: const xmlChar *ExternalID,
773: const xmlChar *SystemID);
774: xmlDtdPtr xmlIOParseDTD (xmlSAXHandlerPtr sax,
775: xmlParserInputBufferPtr input,
776: xmlCharEncoding enc);
777: int xmlParseBalancedChunkMemory(xmlDocPtr doc,
778: xmlSAXHandlerPtr sax,
779: void *user_data,
780: int depth,
781: const xmlChar *string,
782: xmlNodePtr *lst);
783: int xmlParseBalancedChunkMemoryRecover(xmlDocPtr doc,
784: xmlSAXHandlerPtr sax,
785: void *user_data,
786: int depth,
787: const xmlChar *string,
788: xmlNodePtr *lst,
789: int recover);
790: int xmlParseExternalEntity (xmlDocPtr doc,
791: xmlSAXHandlerPtr sax,
792: void *user_data,
793: int depth,
794: const xmlChar *URL,
795: const xmlChar *ID,
796: xmlNodePtr *lst);
797: int xmlParseCtxtExternalEntity(xmlParserCtxtPtr ctx,
798: const xmlChar *URL,
799: const xmlChar *ID,
800: xmlNodePtr *lst);
801:
802: /*
803: * Parser contexts handling.
804: */
1.2 ! paf 805: int xmlInitParserCtxt (xmlParserCtxtPtr ctxt);
1.1 paf 806: void xmlClearParserCtxt (xmlParserCtxtPtr ctxt);
807: void xmlFreeParserCtxt (xmlParserCtxtPtr ctxt);
808: void xmlSetupParserForBuffer (xmlParserCtxtPtr ctxt,
809: const xmlChar* buffer,
810: const char *filename);
811: xmlParserCtxtPtr xmlCreateDocParserCtxt (xmlChar *cur);
812:
813: /*
814: * Reading/setting optional parsing features.
815: */
816:
817: int xmlGetFeaturesList (int *len,
818: const char **result);
819: int xmlGetFeature (xmlParserCtxtPtr ctxt,
820: const char *name,
821: void *result);
822: int xmlSetFeature (xmlParserCtxtPtr ctxt,
823: const char *name,
824: void *value);
825:
826: /*
827: * Interfaces for the Push mode.
828: */
829: xmlParserCtxtPtr xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax,
830: void *user_data,
831: const char *chunk,
832: int size,
833: const char *filename);
834: int xmlParseChunk (xmlParserCtxtPtr ctxt,
835: const char *chunk,
836: int size,
837: int terminate);
838:
839: /*
840: * Special I/O mode.
841: */
842:
843: xmlParserCtxtPtr xmlCreateIOParserCtxt (xmlSAXHandlerPtr sax,
844: void *user_data,
845: xmlInputReadCallback ioread,
846: xmlInputCloseCallback ioclose,
847: void *ioctx,
848: xmlCharEncoding enc);
849:
850: xmlParserInputPtr xmlNewIOInputStream (xmlParserCtxtPtr ctxt,
851: xmlParserInputBufferPtr input,
852: xmlCharEncoding enc);
853:
854: /*
855: * Node infos.
856: */
857: const xmlParserNodeInfo*
858: xmlParserFindNodeInfo (const xmlParserCtxtPtr ctxt,
859: const xmlNodePtr node);
860: void xmlInitNodeInfoSeq (xmlParserNodeInfoSeqPtr seq);
861: void xmlClearNodeInfoSeq (xmlParserNodeInfoSeqPtr seq);
862: unsigned long xmlParserFindNodeInfoIndex(const xmlParserNodeInfoSeqPtr seq,
863: const xmlNodePtr node);
864: void xmlParserAddNodeInfo (xmlParserCtxtPtr ctxt,
865: const xmlParserNodeInfoPtr info);
866:
867: /*
868: * External entities handling actually implemented in xmlIO.
869: */
870:
871: void xmlSetExternalEntityLoader(xmlExternalEntityLoader f);
872: xmlExternalEntityLoader
873: xmlGetExternalEntityLoader(void);
874: xmlParserInputPtr
875: xmlLoadExternalEntity (const char *URL,
876: const char *ID,
877: xmlParserCtxtPtr ctxt);
878:
879: #ifdef __cplusplus
880: }
881: #endif
882: #endif /* __XML_PARSER_H__ */
883:
E-mail: