Annotation of embedaddon/libxml2/include/libxml/parser.h, revision 1.1
1.1 ! misho 1: /*
! 2: * Summary: the core parser module
! 3: * Description: Interfaces, constants and types related to the XML parser
! 4: *
! 5: * Copy: See Copyright for the status of this software.
! 6: *
! 7: * Author: Daniel Veillard
! 8: */
! 9:
! 10: #ifndef __XML_PARSER_H__
! 11: #define __XML_PARSER_H__
! 12:
! 13: #include <stdarg.h>
! 14:
! 15: #include <libxml/xmlversion.h>
! 16: #include <libxml/tree.h>
! 17: #include <libxml/dict.h>
! 18: #include <libxml/hash.h>
! 19: #include <libxml/valid.h>
! 20: #include <libxml/entities.h>
! 21: #include <libxml/xmlerror.h>
! 22: #include <libxml/xmlstring.h>
! 23:
! 24: #ifdef __cplusplus
! 25: extern "C" {
! 26: #endif
! 27:
! 28: /**
! 29: * XML_DEFAULT_VERSION:
! 30: *
! 31: * The default version of XML used: 1.0
! 32: */
! 33: #define XML_DEFAULT_VERSION "1.0"
! 34:
! 35: /**
! 36: * xmlParserInput:
! 37: *
! 38: * An xmlParserInput is an input flow for the XML processor.
! 39: * Each entity parsed is associated an xmlParserInput (except the
! 40: * few predefined ones). This is the case both for internal entities
! 41: * - in which case the flow is already completely in memory - or
! 42: * external entities - in which case we use the buf structure for
! 43: * progressive reading and I18N conversions to the internal UTF-8 format.
! 44: */
! 45:
! 46: /**
! 47: * xmlParserInputDeallocate:
! 48: * @str: the string to deallocate
! 49: *
! 50: * Callback for freeing some parser input allocations.
! 51: */
! 52: typedef void (* xmlParserInputDeallocate)(xmlChar *str);
! 53:
! 54: struct _xmlParserInput {
! 55: /* Input buffer */
! 56: xmlParserInputBufferPtr buf; /* UTF-8 encoded buffer */
! 57:
! 58: const char *filename; /* The file analyzed, if any */
! 59: const char *directory; /* the directory/base of the file */
! 60: const xmlChar *base; /* Base of the array to parse */
! 61: const xmlChar *cur; /* Current char being parsed */
! 62: const xmlChar *end; /* end of the array to parse */
! 63: int length; /* length if known */
! 64: int line; /* Current line */
! 65: int col; /* Current column */
! 66: /*
! 67: * NOTE: consumed is only tested for equality in the parser code,
! 68: * so even if there is an overflow this should not give troubles
! 69: * for parsing very large instances.
! 70: */
! 71: unsigned long consumed; /* How many xmlChars already consumed */
! 72: xmlParserInputDeallocate free; /* function to deallocate the base */
! 73: const xmlChar *encoding; /* the encoding string for entity */
! 74: const xmlChar *version; /* the version string for entity */
! 75: int standalone; /* Was that entity marked standalone */
! 76: int id; /* an unique identifier for the entity */
! 77: };
! 78:
! 79: /**
! 80: * xmlParserNodeInfo:
! 81: *
! 82: * The parser can be asked to collect Node informations, i.e. at what
! 83: * place in the file they were detected.
! 84: * NOTE: This is off by default and not very well tested.
! 85: */
! 86: typedef struct _xmlParserNodeInfo xmlParserNodeInfo;
! 87: typedef xmlParserNodeInfo *xmlParserNodeInfoPtr;
! 88:
! 89: struct _xmlParserNodeInfo {
! 90: const struct _xmlNode* node;
! 91: /* Position & line # that text that created the node begins & ends on */
! 92: unsigned long begin_pos;
! 93: unsigned long begin_line;
! 94: unsigned long end_pos;
! 95: unsigned long end_line;
! 96: };
! 97:
! 98: typedef struct _xmlParserNodeInfoSeq xmlParserNodeInfoSeq;
! 99: typedef xmlParserNodeInfoSeq *xmlParserNodeInfoSeqPtr;
! 100: struct _xmlParserNodeInfoSeq {
! 101: unsigned long maximum;
! 102: unsigned long length;
! 103: xmlParserNodeInfo* buffer;
! 104: };
! 105:
! 106: /**
! 107: * xmlParserInputState:
! 108: *
! 109: * The parser is now working also as a state based parser.
! 110: * The recursive one use the state info for entities processing.
! 111: */
! 112: typedef enum {
! 113: XML_PARSER_EOF = -1, /* nothing is to be parsed */
! 114: XML_PARSER_START = 0, /* nothing has been parsed */
! 115: XML_PARSER_MISC, /* Misc* before int subset */
! 116: XML_PARSER_PI, /* Within a processing instruction */
! 117: XML_PARSER_DTD, /* within some DTD content */
! 118: XML_PARSER_PROLOG, /* Misc* after internal subset */
! 119: XML_PARSER_COMMENT, /* within a comment */
! 120: XML_PARSER_START_TAG, /* within a start tag */
! 121: XML_PARSER_CONTENT, /* within the content */
! 122: XML_PARSER_CDATA_SECTION, /* within a CDATA section */
! 123: XML_PARSER_END_TAG, /* within a closing tag */
! 124: XML_PARSER_ENTITY_DECL, /* within an entity declaration */
! 125: XML_PARSER_ENTITY_VALUE, /* within an entity value in a decl */
! 126: XML_PARSER_ATTRIBUTE_VALUE, /* within an attribute value */
! 127: XML_PARSER_SYSTEM_LITERAL, /* within a SYSTEM value */
! 128: XML_PARSER_EPILOG, /* the Misc* after the last end tag */
! 129: XML_PARSER_IGNORE, /* within an IGNORED section */
! 130: XML_PARSER_PUBLIC_LITERAL /* within a PUBLIC value */
! 131: } xmlParserInputState;
! 132:
! 133: /**
! 134: * XML_DETECT_IDS:
! 135: *
! 136: * Bit in the loadsubset context field to tell to do ID/REFs lookups.
! 137: * Use it to initialize xmlLoadExtDtdDefaultValue.
! 138: */
! 139: #define XML_DETECT_IDS 2
! 140:
! 141: /**
! 142: * XML_COMPLETE_ATTRS:
! 143: *
! 144: * Bit in the loadsubset context field to tell to do complete the
! 145: * elements attributes lists with the ones defaulted from the DTDs.
! 146: * Use it to initialize xmlLoadExtDtdDefaultValue.
! 147: */
! 148: #define XML_COMPLETE_ATTRS 4
! 149:
! 150: /**
! 151: * XML_SKIP_IDS:
! 152: *
! 153: * Bit in the loadsubset context field to tell to not do ID/REFs registration.
! 154: * Used to initialize xmlLoadExtDtdDefaultValue in some special cases.
! 155: */
! 156: #define XML_SKIP_IDS 8
! 157:
! 158: /**
! 159: * xmlParserMode:
! 160: *
! 161: * A parser can operate in various modes
! 162: */
! 163: typedef enum {
! 164: XML_PARSE_UNKNOWN = 0,
! 165: XML_PARSE_DOM = 1,
! 166: XML_PARSE_SAX = 2,
! 167: XML_PARSE_PUSH_DOM = 3,
! 168: XML_PARSE_PUSH_SAX = 4,
! 169: XML_PARSE_READER = 5
! 170: } xmlParserMode;
! 171:
! 172: /**
! 173: * xmlParserCtxt:
! 174: *
! 175: * The parser context.
! 176: * NOTE This doesn't completely define the parser state, the (current ?)
! 177: * design of the parser uses recursive function calls since this allow
! 178: * and easy mapping from the production rules of the specification
! 179: * to the actual code. The drawback is that the actual function call
! 180: * also reflect the parser state. However most of the parsing routines
! 181: * takes as the only argument the parser context pointer, so migrating
! 182: * to a state based parser for progressive parsing shouldn't be too hard.
! 183: */
! 184: struct _xmlParserCtxt {
! 185: struct _xmlSAXHandler *sax; /* The SAX handler */
! 186: void *userData; /* For SAX interface only, used by DOM build */
! 187: xmlDocPtr myDoc; /* the document being built */
! 188: int wellFormed; /* is the document well formed */
! 189: int replaceEntities; /* shall we replace entities ? */
! 190: const xmlChar *version; /* the XML version string */
! 191: const xmlChar *encoding; /* the declared encoding, if any */
! 192: int standalone; /* standalone document */
! 193: int html; /* an HTML(1)/Docbook(2) document
! 194: * 3 is HTML after <head>
! 195: * 10 is HTML after <body>
! 196: */
! 197:
! 198: /* Input stream stack */
! 199: xmlParserInputPtr input; /* Current input stream */
! 200: int inputNr; /* Number of current input streams */
! 201: int inputMax; /* Max number of input streams */
! 202: xmlParserInputPtr *inputTab; /* stack of inputs */
! 203:
! 204: /* Node analysis stack only used for DOM building */
! 205: xmlNodePtr node; /* Current parsed Node */
! 206: int nodeNr; /* Depth of the parsing stack */
! 207: int nodeMax; /* Max depth of the parsing stack */
! 208: xmlNodePtr *nodeTab; /* array of nodes */
! 209:
! 210: int record_info; /* Whether node info should be kept */
! 211: xmlParserNodeInfoSeq node_seq; /* info about each node parsed */
! 212:
! 213: int errNo; /* error code */
! 214:
! 215: int hasExternalSubset; /* reference and external subset */
! 216: int hasPErefs; /* the internal subset has PE refs */
! 217: int external; /* are we parsing an external entity */
! 218:
! 219: int valid; /* is the document valid */
! 220: int validate; /* shall we try to validate ? */
! 221: xmlValidCtxt vctxt; /* The validity context */
! 222:
! 223: xmlParserInputState instate; /* current type of input */
! 224: int token; /* next char look-ahead */
! 225:
! 226: char *directory; /* the data directory */
! 227:
! 228: /* Node name stack */
! 229: const xmlChar *name; /* Current parsed Node */
! 230: int nameNr; /* Depth of the parsing stack */
! 231: int nameMax; /* Max depth of the parsing stack */
! 232: const xmlChar * *nameTab; /* array of nodes */
! 233:
! 234: long nbChars; /* number of xmlChar processed */
! 235: long checkIndex; /* used by progressive parsing lookup */
! 236: int keepBlanks; /* ugly but ... */
! 237: int disableSAX; /* SAX callbacks are disabled */
! 238: int inSubset; /* Parsing is in int 1/ext 2 subset */
! 239: const xmlChar * intSubName; /* name of subset */
! 240: xmlChar * extSubURI; /* URI of external subset */
! 241: xmlChar * extSubSystem; /* SYSTEM ID of external subset */
! 242:
! 243: /* xml:space values */
! 244: int * space; /* Should the parser preserve spaces */
! 245: int spaceNr; /* Depth of the parsing stack */
! 246: int spaceMax; /* Max depth of the parsing stack */
! 247: int * spaceTab; /* array of space infos */
! 248:
! 249: int depth; /* to prevent entity substitution loops */
! 250: xmlParserInputPtr entity; /* used to check entities boundaries */
! 251: int charset; /* encoding of the in-memory content
! 252: actually an xmlCharEncoding */
! 253: int nodelen; /* Those two fields are there to */
! 254: int nodemem; /* Speed up large node parsing */
! 255: int pedantic; /* signal pedantic warnings */
! 256: void *_private; /* For user data, libxml won't touch it */
! 257:
! 258: int loadsubset; /* should the external subset be loaded */
! 259: int linenumbers; /* set line number in element content */
! 260: void *catalogs; /* document's own catalog */
! 261: int recovery; /* run in recovery mode */
! 262: int progressive; /* is this a progressive parsing */
! 263: xmlDictPtr dict; /* dictionnary for the parser */
! 264: const xmlChar * *atts; /* array for the attributes callbacks */
! 265: int maxatts; /* the size of the array */
! 266: int docdict; /* use strings from dict to build tree */
! 267:
! 268: /*
! 269: * pre-interned strings
! 270: */
! 271: const xmlChar *str_xml;
! 272: const xmlChar *str_xmlns;
! 273: const xmlChar *str_xml_ns;
! 274:
! 275: /*
! 276: * Everything below is used only by the new SAX mode
! 277: */
! 278: int sax2; /* operating in the new SAX mode */
! 279: int nsNr; /* the number of inherited namespaces */
! 280: int nsMax; /* the size of the arrays */
! 281: const xmlChar * *nsTab; /* the array of prefix/namespace name */
! 282: int *attallocs; /* which attribute were allocated */
! 283: void * *pushTab; /* array of data for push */
! 284: xmlHashTablePtr attsDefault; /* defaulted attributes if any */
! 285: xmlHashTablePtr attsSpecial; /* non-CDATA attributes if any */
! 286: int nsWellFormed; /* is the document XML Nanespace okay */
! 287: int options; /* Extra options */
! 288:
! 289: /*
! 290: * Those fields are needed only for treaming parsing so far
! 291: */
! 292: int dictNames; /* Use dictionary names for the tree */
! 293: int freeElemsNr; /* number of freed element nodes */
! 294: xmlNodePtr freeElems; /* List of freed element nodes */
! 295: int freeAttrsNr; /* number of freed attributes nodes */
! 296: xmlAttrPtr freeAttrs; /* List of freed attributes nodes */
! 297:
! 298: /*
! 299: * the complete error informations for the last error.
! 300: */
! 301: xmlError lastError;
! 302: xmlParserMode parseMode; /* the parser mode */
! 303: unsigned long nbentities; /* number of entities references */
! 304: unsigned long sizeentities; /* size of parsed entities */
! 305:
! 306: /* for use by HTML non-recursive parser */
! 307: xmlParserNodeInfo *nodeInfo; /* Current NodeInfo */
! 308: int nodeInfoNr; /* Depth of the parsing stack */
! 309: int nodeInfoMax; /* Max depth of the parsing stack */
! 310: xmlParserNodeInfo *nodeInfoTab; /* array of nodeInfos */
! 311: };
! 312:
! 313: /**
! 314: * xmlSAXLocator:
! 315: *
! 316: * A SAX Locator.
! 317: */
! 318: struct _xmlSAXLocator {
! 319: const xmlChar *(*getPublicId)(void *ctx);
! 320: const xmlChar *(*getSystemId)(void *ctx);
! 321: int (*getLineNumber)(void *ctx);
! 322: int (*getColumnNumber)(void *ctx);
! 323: };
! 324:
! 325: /**
! 326: * xmlSAXHandler:
! 327: *
! 328: * A SAX handler is bunch of callbacks called by the parser when processing
! 329: * of the input generate data or structure informations.
! 330: */
! 331:
! 332: /**
! 333: * resolveEntitySAXFunc:
! 334: * @ctx: the user data (XML parser context)
! 335: * @publicId: The public ID of the entity
! 336: * @systemId: The system ID of the entity
! 337: *
! 338: * Callback:
! 339: * The entity loader, to control the loading of external entities,
! 340: * the application can either:
! 341: * - override this resolveEntity() callback in the SAX block
! 342: * - or better use the xmlSetExternalEntityLoader() function to
! 343: * set up it's own entity resolution routine
! 344: *
! 345: * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
! 346: */
! 347: typedef xmlParserInputPtr (*resolveEntitySAXFunc) (void *ctx,
! 348: const xmlChar *publicId,
! 349: const xmlChar *systemId);
! 350: /**
! 351: * internalSubsetSAXFunc:
! 352: * @ctx: the user data (XML parser context)
! 353: * @name: the root element name
! 354: * @ExternalID: the external ID
! 355: * @SystemID: the SYSTEM ID (e.g. filename or URL)
! 356: *
! 357: * Callback on internal subset declaration.
! 358: */
! 359: typedef void (*internalSubsetSAXFunc) (void *ctx,
! 360: const xmlChar *name,
! 361: const xmlChar *ExternalID,
! 362: const xmlChar *SystemID);
! 363: /**
! 364: * externalSubsetSAXFunc:
! 365: * @ctx: the user data (XML parser context)
! 366: * @name: the root element name
! 367: * @ExternalID: the external ID
! 368: * @SystemID: the SYSTEM ID (e.g. filename or URL)
! 369: *
! 370: * Callback on external subset declaration.
! 371: */
! 372: typedef void (*externalSubsetSAXFunc) (void *ctx,
! 373: const xmlChar *name,
! 374: const xmlChar *ExternalID,
! 375: const xmlChar *SystemID);
! 376: /**
! 377: * getEntitySAXFunc:
! 378: * @ctx: the user data (XML parser context)
! 379: * @name: The entity name
! 380: *
! 381: * Get an entity by name.
! 382: *
! 383: * Returns the xmlEntityPtr if found.
! 384: */
! 385: typedef xmlEntityPtr (*getEntitySAXFunc) (void *ctx,
! 386: const xmlChar *name);
! 387: /**
! 388: * getParameterEntitySAXFunc:
! 389: * @ctx: the user data (XML parser context)
! 390: * @name: The entity name
! 391: *
! 392: * Get a parameter entity by name.
! 393: *
! 394: * Returns the xmlEntityPtr if found.
! 395: */
! 396: typedef xmlEntityPtr (*getParameterEntitySAXFunc) (void *ctx,
! 397: const xmlChar *name);
! 398: /**
! 399: * entityDeclSAXFunc:
! 400: * @ctx: the user data (XML parser context)
! 401: * @name: the entity name
! 402: * @type: the entity type
! 403: * @publicId: The public ID of the entity
! 404: * @systemId: The system ID of the entity
! 405: * @content: the entity value (without processing).
! 406: *
! 407: * An entity definition has been parsed.
! 408: */
! 409: typedef void (*entityDeclSAXFunc) (void *ctx,
! 410: const xmlChar *name,
! 411: int type,
! 412: const xmlChar *publicId,
! 413: const xmlChar *systemId,
! 414: xmlChar *content);
! 415: /**
! 416: * notationDeclSAXFunc:
! 417: * @ctx: the user data (XML parser context)
! 418: * @name: The name of the notation
! 419: * @publicId: The public ID of the entity
! 420: * @systemId: The system ID of the entity
! 421: *
! 422: * What to do when a notation declaration has been parsed.
! 423: */
! 424: typedef void (*notationDeclSAXFunc)(void *ctx,
! 425: const xmlChar *name,
! 426: const xmlChar *publicId,
! 427: const xmlChar *systemId);
! 428: /**
! 429: * attributeDeclSAXFunc:
! 430: * @ctx: the user data (XML parser context)
! 431: * @elem: the name of the element
! 432: * @fullname: the attribute name
! 433: * @type: the attribute type
! 434: * @def: the type of default value
! 435: * @defaultValue: the attribute default value
! 436: * @tree: the tree of enumerated value set
! 437: *
! 438: * An attribute definition has been parsed.
! 439: */
! 440: typedef void (*attributeDeclSAXFunc)(void *ctx,
! 441: const xmlChar *elem,
! 442: const xmlChar *fullname,
! 443: int type,
! 444: int def,
! 445: const xmlChar *defaultValue,
! 446: xmlEnumerationPtr tree);
! 447: /**
! 448: * elementDeclSAXFunc:
! 449: * @ctx: the user data (XML parser context)
! 450: * @name: the element name
! 451: * @type: the element type
! 452: * @content: the element value tree
! 453: *
! 454: * An element definition has been parsed.
! 455: */
! 456: typedef void (*elementDeclSAXFunc)(void *ctx,
! 457: const xmlChar *name,
! 458: int type,
! 459: xmlElementContentPtr content);
! 460: /**
! 461: * unparsedEntityDeclSAXFunc:
! 462: * @ctx: the user data (XML parser context)
! 463: * @name: The name of the entity
! 464: * @publicId: The public ID of the entity
! 465: * @systemId: The system ID of the entity
! 466: * @notationName: the name of the notation
! 467: *
! 468: * What to do when an unparsed entity declaration is parsed.
! 469: */
! 470: typedef void (*unparsedEntityDeclSAXFunc)(void *ctx,
! 471: const xmlChar *name,
! 472: const xmlChar *publicId,
! 473: const xmlChar *systemId,
! 474: const xmlChar *notationName);
! 475: /**
! 476: * setDocumentLocatorSAXFunc:
! 477: * @ctx: the user data (XML parser context)
! 478: * @loc: A SAX Locator
! 479: *
! 480: * Receive the document locator at startup, actually xmlDefaultSAXLocator.
! 481: * Everything is available on the context, so this is useless in our case.
! 482: */
! 483: typedef void (*setDocumentLocatorSAXFunc) (void *ctx,
! 484: xmlSAXLocatorPtr loc);
! 485: /**
! 486: * startDocumentSAXFunc:
! 487: * @ctx: the user data (XML parser context)
! 488: *
! 489: * Called when the document start being processed.
! 490: */
! 491: typedef void (*startDocumentSAXFunc) (void *ctx);
! 492: /**
! 493: * endDocumentSAXFunc:
! 494: * @ctx: the user data (XML parser context)
! 495: *
! 496: * Called when the document end has been detected.
! 497: */
! 498: typedef void (*endDocumentSAXFunc) (void *ctx);
! 499: /**
! 500: * startElementSAXFunc:
! 501: * @ctx: the user data (XML parser context)
! 502: * @name: The element name, including namespace prefix
! 503: * @atts: An array of name/value attributes pairs, NULL terminated
! 504: *
! 505: * Called when an opening tag has been processed.
! 506: */
! 507: typedef void (*startElementSAXFunc) (void *ctx,
! 508: const xmlChar *name,
! 509: const xmlChar **atts);
! 510: /**
! 511: * endElementSAXFunc:
! 512: * @ctx: the user data (XML parser context)
! 513: * @name: The element name
! 514: *
! 515: * Called when the end of an element has been detected.
! 516: */
! 517: typedef void (*endElementSAXFunc) (void *ctx,
! 518: const xmlChar *name);
! 519: /**
! 520: * attributeSAXFunc:
! 521: * @ctx: the user data (XML parser context)
! 522: * @name: The attribute name, including namespace prefix
! 523: * @value: The attribute value
! 524: *
! 525: * Handle an attribute that has been read by the parser.
! 526: * The default handling is to convert the attribute into an
! 527: * DOM subtree and past it in a new xmlAttr element added to
! 528: * the element.
! 529: */
! 530: typedef void (*attributeSAXFunc) (void *ctx,
! 531: const xmlChar *name,
! 532: const xmlChar *value);
! 533: /**
! 534: * referenceSAXFunc:
! 535: * @ctx: the user data (XML parser context)
! 536: * @name: The entity name
! 537: *
! 538: * Called when an entity reference is detected.
! 539: */
! 540: typedef void (*referenceSAXFunc) (void *ctx,
! 541: const xmlChar *name);
! 542: /**
! 543: * charactersSAXFunc:
! 544: * @ctx: the user data (XML parser context)
! 545: * @ch: a xmlChar string
! 546: * @len: the number of xmlChar
! 547: *
! 548: * Receiving some chars from the parser.
! 549: */
! 550: typedef void (*charactersSAXFunc) (void *ctx,
! 551: const xmlChar *ch,
! 552: int len);
! 553: /**
! 554: * ignorableWhitespaceSAXFunc:
! 555: * @ctx: the user data (XML parser context)
! 556: * @ch: a xmlChar string
! 557: * @len: the number of xmlChar
! 558: *
! 559: * Receiving some ignorable whitespaces from the parser.
! 560: * UNUSED: by default the DOM building will use characters.
! 561: */
! 562: typedef void (*ignorableWhitespaceSAXFunc) (void *ctx,
! 563: const xmlChar *ch,
! 564: int len);
! 565: /**
! 566: * processingInstructionSAXFunc:
! 567: * @ctx: the user data (XML parser context)
! 568: * @target: the target name
! 569: * @data: the PI data's
! 570: *
! 571: * A processing instruction has been parsed.
! 572: */
! 573: typedef void (*processingInstructionSAXFunc) (void *ctx,
! 574: const xmlChar *target,
! 575: const xmlChar *data);
! 576: /**
! 577: * commentSAXFunc:
! 578: * @ctx: the user data (XML parser context)
! 579: * @value: the comment content
! 580: *
! 581: * A comment has been parsed.
! 582: */
! 583: typedef void (*commentSAXFunc) (void *ctx,
! 584: const xmlChar *value);
! 585: /**
! 586: * cdataBlockSAXFunc:
! 587: * @ctx: the user data (XML parser context)
! 588: * @value: The pcdata content
! 589: * @len: the block length
! 590: *
! 591: * Called when a pcdata block has been parsed.
! 592: */
! 593: typedef void (*cdataBlockSAXFunc) (
! 594: void *ctx,
! 595: const xmlChar *value,
! 596: int len);
! 597: /**
! 598: * warningSAXFunc:
! 599: * @ctx: an XML parser context
! 600: * @msg: the message to display/transmit
! 601: * @...: extra parameters for the message display
! 602: *
! 603: * Display and format a warning messages, callback.
! 604: */
! 605: typedef void (XMLCDECL *warningSAXFunc) (void *ctx,
! 606: const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
! 607: /**
! 608: * errorSAXFunc:
! 609: * @ctx: an XML parser context
! 610: * @msg: the message to display/transmit
! 611: * @...: extra parameters for the message display
! 612: *
! 613: * Display and format an error messages, callback.
! 614: */
! 615: typedef void (XMLCDECL *errorSAXFunc) (void *ctx,
! 616: const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
! 617: /**
! 618: * fatalErrorSAXFunc:
! 619: * @ctx: an XML parser context
! 620: * @msg: the message to display/transmit
! 621: * @...: extra parameters for the message display
! 622: *
! 623: * Display and format fatal error messages, callback.
! 624: * Note: so far fatalError() SAX callbacks are not used, error()
! 625: * get all the callbacks for errors.
! 626: */
! 627: typedef void (XMLCDECL *fatalErrorSAXFunc) (void *ctx,
! 628: const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
! 629: /**
! 630: * isStandaloneSAXFunc:
! 631: * @ctx: the user data (XML parser context)
! 632: *
! 633: * Is this document tagged standalone?
! 634: *
! 635: * Returns 1 if true
! 636: */
! 637: typedef int (*isStandaloneSAXFunc) (void *ctx);
! 638: /**
! 639: * hasInternalSubsetSAXFunc:
! 640: * @ctx: the user data (XML parser context)
! 641: *
! 642: * Does this document has an internal subset.
! 643: *
! 644: * Returns 1 if true
! 645: */
! 646: typedef int (*hasInternalSubsetSAXFunc) (void *ctx);
! 647:
! 648: /**
! 649: * hasExternalSubsetSAXFunc:
! 650: * @ctx: the user data (XML parser context)
! 651: *
! 652: * Does this document has an external subset?
! 653: *
! 654: * Returns 1 if true
! 655: */
! 656: typedef int (*hasExternalSubsetSAXFunc) (void *ctx);
! 657:
! 658: /************************************************************************
! 659: * *
! 660: * The SAX version 2 API extensions *
! 661: * *
! 662: ************************************************************************/
! 663: /**
! 664: * XML_SAX2_MAGIC:
! 665: *
! 666: * Special constant found in SAX2 blocks initialized fields
! 667: */
! 668: #define XML_SAX2_MAGIC 0xDEEDBEAF
! 669:
! 670: /**
! 671: * startElementNsSAX2Func:
! 672: * @ctx: the user data (XML parser context)
! 673: * @localname: the local name of the element
! 674: * @prefix: the element namespace prefix if available
! 675: * @URI: the element namespace name if available
! 676: * @nb_namespaces: number of namespace definitions on that node
! 677: * @namespaces: pointer to the array of prefix/URI pairs namespace definitions
! 678: * @nb_attributes: the number of attributes on that node
! 679: * @nb_defaulted: the number of defaulted attributes. The defaulted
! 680: * ones are at the end of the array
! 681: * @attributes: pointer to the array of (localname/prefix/URI/value/end)
! 682: * attribute values.
! 683: *
! 684: * SAX2 callback when an element start has been detected by the parser.
! 685: * It provides the namespace informations for the element, as well as
! 686: * the new namespace declarations on the element.
! 687: */
! 688:
! 689: typedef void (*startElementNsSAX2Func) (void *ctx,
! 690: const xmlChar *localname,
! 691: const xmlChar *prefix,
! 692: const xmlChar *URI,
! 693: int nb_namespaces,
! 694: const xmlChar **namespaces,
! 695: int nb_attributes,
! 696: int nb_defaulted,
! 697: const xmlChar **attributes);
! 698:
! 699: /**
! 700: * endElementNsSAX2Func:
! 701: * @ctx: the user data (XML parser context)
! 702: * @localname: the local name of the element
! 703: * @prefix: the element namespace prefix if available
! 704: * @URI: the element namespace name if available
! 705: *
! 706: * SAX2 callback when an element end has been detected by the parser.
! 707: * It provides the namespace informations for the element.
! 708: */
! 709:
! 710: typedef void (*endElementNsSAX2Func) (void *ctx,
! 711: const xmlChar *localname,
! 712: const xmlChar *prefix,
! 713: const xmlChar *URI);
! 714:
! 715:
! 716: struct _xmlSAXHandler {
! 717: internalSubsetSAXFunc internalSubset;
! 718: isStandaloneSAXFunc isStandalone;
! 719: hasInternalSubsetSAXFunc hasInternalSubset;
! 720: hasExternalSubsetSAXFunc hasExternalSubset;
! 721: resolveEntitySAXFunc resolveEntity;
! 722: getEntitySAXFunc getEntity;
! 723: entityDeclSAXFunc entityDecl;
! 724: notationDeclSAXFunc notationDecl;
! 725: attributeDeclSAXFunc attributeDecl;
! 726: elementDeclSAXFunc elementDecl;
! 727: unparsedEntityDeclSAXFunc unparsedEntityDecl;
! 728: setDocumentLocatorSAXFunc setDocumentLocator;
! 729: startDocumentSAXFunc startDocument;
! 730: endDocumentSAXFunc endDocument;
! 731: startElementSAXFunc startElement;
! 732: endElementSAXFunc endElement;
! 733: referenceSAXFunc reference;
! 734: charactersSAXFunc characters;
! 735: ignorableWhitespaceSAXFunc ignorableWhitespace;
! 736: processingInstructionSAXFunc processingInstruction;
! 737: commentSAXFunc comment;
! 738: warningSAXFunc warning;
! 739: errorSAXFunc error;
! 740: fatalErrorSAXFunc fatalError; /* unused error() get all the errors */
! 741: getParameterEntitySAXFunc getParameterEntity;
! 742: cdataBlockSAXFunc cdataBlock;
! 743: externalSubsetSAXFunc externalSubset;
! 744: unsigned int initialized;
! 745: /* The following fields are extensions available only on version 2 */
! 746: void *_private;
! 747: startElementNsSAX2Func startElementNs;
! 748: endElementNsSAX2Func endElementNs;
! 749: xmlStructuredErrorFunc serror;
! 750: };
! 751:
! 752: /*
! 753: * SAX Version 1
! 754: */
! 755: typedef struct _xmlSAXHandlerV1 xmlSAXHandlerV1;
! 756: typedef xmlSAXHandlerV1 *xmlSAXHandlerV1Ptr;
! 757: struct _xmlSAXHandlerV1 {
! 758: internalSubsetSAXFunc internalSubset;
! 759: isStandaloneSAXFunc isStandalone;
! 760: hasInternalSubsetSAXFunc hasInternalSubset;
! 761: hasExternalSubsetSAXFunc hasExternalSubset;
! 762: resolveEntitySAXFunc resolveEntity;
! 763: getEntitySAXFunc getEntity;
! 764: entityDeclSAXFunc entityDecl;
! 765: notationDeclSAXFunc notationDecl;
! 766: attributeDeclSAXFunc attributeDecl;
! 767: elementDeclSAXFunc elementDecl;
! 768: unparsedEntityDeclSAXFunc unparsedEntityDecl;
! 769: setDocumentLocatorSAXFunc setDocumentLocator;
! 770: startDocumentSAXFunc startDocument;
! 771: endDocumentSAXFunc endDocument;
! 772: startElementSAXFunc startElement;
! 773: endElementSAXFunc endElement;
! 774: referenceSAXFunc reference;
! 775: charactersSAXFunc characters;
! 776: ignorableWhitespaceSAXFunc ignorableWhitespace;
! 777: processingInstructionSAXFunc processingInstruction;
! 778: commentSAXFunc comment;
! 779: warningSAXFunc warning;
! 780: errorSAXFunc error;
! 781: fatalErrorSAXFunc fatalError; /* unused error() get all the errors */
! 782: getParameterEntitySAXFunc getParameterEntity;
! 783: cdataBlockSAXFunc cdataBlock;
! 784: externalSubsetSAXFunc externalSubset;
! 785: unsigned int initialized;
! 786: };
! 787:
! 788:
! 789: /**
! 790: * xmlExternalEntityLoader:
! 791: * @URL: The System ID of the resource requested
! 792: * @ID: The Public ID of the resource requested
! 793: * @context: the XML parser context
! 794: *
! 795: * External entity loaders types.
! 796: *
! 797: * Returns the entity input parser.
! 798: */
! 799: typedef xmlParserInputPtr (*xmlExternalEntityLoader) (const char *URL,
! 800: const char *ID,
! 801: xmlParserCtxtPtr context);
! 802:
! 803: #ifdef __cplusplus
! 804: }
! 805: #endif
! 806:
! 807: #include <libxml/encoding.h>
! 808: #include <libxml/xmlIO.h>
! 809: #include <libxml/globals.h>
! 810:
! 811: #ifdef __cplusplus
! 812: extern "C" {
! 813: #endif
! 814:
! 815:
! 816: /*
! 817: * Init/Cleanup
! 818: */
! 819: XMLPUBFUN void XMLCALL
! 820: xmlInitParser (void);
! 821: XMLPUBFUN void XMLCALL
! 822: xmlCleanupParser (void);
! 823:
! 824: /*
! 825: * Input functions
! 826: */
! 827: XMLPUBFUN int XMLCALL
! 828: xmlParserInputRead (xmlParserInputPtr in,
! 829: int len);
! 830: XMLPUBFUN int XMLCALL
! 831: xmlParserInputGrow (xmlParserInputPtr in,
! 832: int len);
! 833:
! 834: /*
! 835: * Basic parsing Interfaces
! 836: */
! 837: #ifdef LIBXML_SAX1_ENABLED
! 838: XMLPUBFUN xmlDocPtr XMLCALL
! 839: xmlParseDoc (const xmlChar *cur);
! 840: XMLPUBFUN xmlDocPtr XMLCALL
! 841: xmlParseFile (const char *filename);
! 842: XMLPUBFUN xmlDocPtr XMLCALL
! 843: xmlParseMemory (const char *buffer,
! 844: int size);
! 845: #endif /* LIBXML_SAX1_ENABLED */
! 846: XMLPUBFUN int XMLCALL
! 847: xmlSubstituteEntitiesDefault(int val);
! 848: XMLPUBFUN int XMLCALL
! 849: xmlKeepBlanksDefault (int val);
! 850: XMLPUBFUN void XMLCALL
! 851: xmlStopParser (xmlParserCtxtPtr ctxt);
! 852: XMLPUBFUN int XMLCALL
! 853: xmlPedanticParserDefault(int val);
! 854: XMLPUBFUN int XMLCALL
! 855: xmlLineNumbersDefault (int val);
! 856:
! 857: #ifdef LIBXML_SAX1_ENABLED
! 858: /*
! 859: * Recovery mode
! 860: */
! 861: XMLPUBFUN xmlDocPtr XMLCALL
! 862: xmlRecoverDoc (const xmlChar *cur);
! 863: XMLPUBFUN xmlDocPtr XMLCALL
! 864: xmlRecoverMemory (const char *buffer,
! 865: int size);
! 866: XMLPUBFUN xmlDocPtr XMLCALL
! 867: xmlRecoverFile (const char *filename);
! 868: #endif /* LIBXML_SAX1_ENABLED */
! 869:
! 870: /*
! 871: * Less common routines and SAX interfaces
! 872: */
! 873: XMLPUBFUN int XMLCALL
! 874: xmlParseDocument (xmlParserCtxtPtr ctxt);
! 875: XMLPUBFUN int XMLCALL
! 876: xmlParseExtParsedEnt (xmlParserCtxtPtr ctxt);
! 877: #ifdef LIBXML_SAX1_ENABLED
! 878: XMLPUBFUN int XMLCALL
! 879: xmlSAXUserParseFile (xmlSAXHandlerPtr sax,
! 880: void *user_data,
! 881: const char *filename);
! 882: XMLPUBFUN int XMLCALL
! 883: xmlSAXUserParseMemory (xmlSAXHandlerPtr sax,
! 884: void *user_data,
! 885: const char *buffer,
! 886: int size);
! 887: XMLPUBFUN xmlDocPtr XMLCALL
! 888: xmlSAXParseDoc (xmlSAXHandlerPtr sax,
! 889: const xmlChar *cur,
! 890: int recovery);
! 891: XMLPUBFUN xmlDocPtr XMLCALL
! 892: xmlSAXParseMemory (xmlSAXHandlerPtr sax,
! 893: const char *buffer,
! 894: int size,
! 895: int recovery);
! 896: XMLPUBFUN xmlDocPtr XMLCALL
! 897: xmlSAXParseMemoryWithData (xmlSAXHandlerPtr sax,
! 898: const char *buffer,
! 899: int size,
! 900: int recovery,
! 901: void *data);
! 902: XMLPUBFUN xmlDocPtr XMLCALL
! 903: xmlSAXParseFile (xmlSAXHandlerPtr sax,
! 904: const char *filename,
! 905: int recovery);
! 906: XMLPUBFUN xmlDocPtr XMLCALL
! 907: xmlSAXParseFileWithData (xmlSAXHandlerPtr sax,
! 908: const char *filename,
! 909: int recovery,
! 910: void *data);
! 911: XMLPUBFUN xmlDocPtr XMLCALL
! 912: xmlSAXParseEntity (xmlSAXHandlerPtr sax,
! 913: const char *filename);
! 914: XMLPUBFUN xmlDocPtr XMLCALL
! 915: xmlParseEntity (const char *filename);
! 916: #endif /* LIBXML_SAX1_ENABLED */
! 917:
! 918: #ifdef LIBXML_VALID_ENABLED
! 919: XMLPUBFUN xmlDtdPtr XMLCALL
! 920: xmlSAXParseDTD (xmlSAXHandlerPtr sax,
! 921: const xmlChar *ExternalID,
! 922: const xmlChar *SystemID);
! 923: XMLPUBFUN xmlDtdPtr XMLCALL
! 924: xmlParseDTD (const xmlChar *ExternalID,
! 925: const xmlChar *SystemID);
! 926: XMLPUBFUN xmlDtdPtr XMLCALL
! 927: xmlIOParseDTD (xmlSAXHandlerPtr sax,
! 928: xmlParserInputBufferPtr input,
! 929: xmlCharEncoding enc);
! 930: #endif /* LIBXML_VALID_ENABLE */
! 931: #ifdef LIBXML_SAX1_ENABLED
! 932: XMLPUBFUN int XMLCALL
! 933: xmlParseBalancedChunkMemory(xmlDocPtr doc,
! 934: xmlSAXHandlerPtr sax,
! 935: void *user_data,
! 936: int depth,
! 937: const xmlChar *string,
! 938: xmlNodePtr *lst);
! 939: #endif /* LIBXML_SAX1_ENABLED */
! 940: XMLPUBFUN xmlParserErrors XMLCALL
! 941: xmlParseInNodeContext (xmlNodePtr node,
! 942: const char *data,
! 943: int datalen,
! 944: int options,
! 945: xmlNodePtr *lst);
! 946: #ifdef LIBXML_SAX1_ENABLED
! 947: XMLPUBFUN int XMLCALL
! 948: xmlParseBalancedChunkMemoryRecover(xmlDocPtr doc,
! 949: xmlSAXHandlerPtr sax,
! 950: void *user_data,
! 951: int depth,
! 952: const xmlChar *string,
! 953: xmlNodePtr *lst,
! 954: int recover);
! 955: XMLPUBFUN int XMLCALL
! 956: xmlParseExternalEntity (xmlDocPtr doc,
! 957: xmlSAXHandlerPtr sax,
! 958: void *user_data,
! 959: int depth,
! 960: const xmlChar *URL,
! 961: const xmlChar *ID,
! 962: xmlNodePtr *lst);
! 963: #endif /* LIBXML_SAX1_ENABLED */
! 964: XMLPUBFUN int XMLCALL
! 965: xmlParseCtxtExternalEntity(xmlParserCtxtPtr ctx,
! 966: const xmlChar *URL,
! 967: const xmlChar *ID,
! 968: xmlNodePtr *lst);
! 969:
! 970: /*
! 971: * Parser contexts handling.
! 972: */
! 973: XMLPUBFUN xmlParserCtxtPtr XMLCALL
! 974: xmlNewParserCtxt (void);
! 975: XMLPUBFUN int XMLCALL
! 976: xmlInitParserCtxt (xmlParserCtxtPtr ctxt);
! 977: XMLPUBFUN void XMLCALL
! 978: xmlClearParserCtxt (xmlParserCtxtPtr ctxt);
! 979: XMLPUBFUN void XMLCALL
! 980: xmlFreeParserCtxt (xmlParserCtxtPtr ctxt);
! 981: #ifdef LIBXML_SAX1_ENABLED
! 982: XMLPUBFUN void XMLCALL
! 983: xmlSetupParserForBuffer (xmlParserCtxtPtr ctxt,
! 984: const xmlChar* buffer,
! 985: const char *filename);
! 986: #endif /* LIBXML_SAX1_ENABLED */
! 987: XMLPUBFUN xmlParserCtxtPtr XMLCALL
! 988: xmlCreateDocParserCtxt (const xmlChar *cur);
! 989:
! 990: #ifdef LIBXML_LEGACY_ENABLED
! 991: /*
! 992: * Reading/setting optional parsing features.
! 993: */
! 994: XMLPUBFUN int XMLCALL
! 995: xmlGetFeaturesList (int *len,
! 996: const char **result);
! 997: XMLPUBFUN int XMLCALL
! 998: xmlGetFeature (xmlParserCtxtPtr ctxt,
! 999: const char *name,
! 1000: void *result);
! 1001: XMLPUBFUN int XMLCALL
! 1002: xmlSetFeature (xmlParserCtxtPtr ctxt,
! 1003: const char *name,
! 1004: void *value);
! 1005: #endif /* LIBXML_LEGACY_ENABLED */
! 1006:
! 1007: #ifdef LIBXML_PUSH_ENABLED
! 1008: /*
! 1009: * Interfaces for the Push mode.
! 1010: */
! 1011: XMLPUBFUN xmlParserCtxtPtr XMLCALL
! 1012: xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax,
! 1013: void *user_data,
! 1014: const char *chunk,
! 1015: int size,
! 1016: const char *filename);
! 1017: XMLPUBFUN int XMLCALL
! 1018: xmlParseChunk (xmlParserCtxtPtr ctxt,
! 1019: const char *chunk,
! 1020: int size,
! 1021: int terminate);
! 1022: #endif /* LIBXML_PUSH_ENABLED */
! 1023:
! 1024: /*
! 1025: * Special I/O mode.
! 1026: */
! 1027:
! 1028: XMLPUBFUN xmlParserCtxtPtr XMLCALL
! 1029: xmlCreateIOParserCtxt (xmlSAXHandlerPtr sax,
! 1030: void *user_data,
! 1031: xmlInputReadCallback ioread,
! 1032: xmlInputCloseCallback ioclose,
! 1033: void *ioctx,
! 1034: xmlCharEncoding enc);
! 1035:
! 1036: XMLPUBFUN xmlParserInputPtr XMLCALL
! 1037: xmlNewIOInputStream (xmlParserCtxtPtr ctxt,
! 1038: xmlParserInputBufferPtr input,
! 1039: xmlCharEncoding enc);
! 1040:
! 1041: /*
! 1042: * Node infos.
! 1043: */
! 1044: XMLPUBFUN const xmlParserNodeInfo* XMLCALL
! 1045: xmlParserFindNodeInfo (const xmlParserCtxtPtr ctxt,
! 1046: const xmlNodePtr node);
! 1047: XMLPUBFUN void XMLCALL
! 1048: xmlInitNodeInfoSeq (xmlParserNodeInfoSeqPtr seq);
! 1049: XMLPUBFUN void XMLCALL
! 1050: xmlClearNodeInfoSeq (xmlParserNodeInfoSeqPtr seq);
! 1051: XMLPUBFUN unsigned long XMLCALL
! 1052: xmlParserFindNodeInfoIndex(const xmlParserNodeInfoSeqPtr seq,
! 1053: const xmlNodePtr node);
! 1054: XMLPUBFUN void XMLCALL
! 1055: xmlParserAddNodeInfo (xmlParserCtxtPtr ctxt,
! 1056: const xmlParserNodeInfoPtr info);
! 1057:
! 1058: /*
! 1059: * External entities handling actually implemented in xmlIO.
! 1060: */
! 1061:
! 1062: XMLPUBFUN void XMLCALL
! 1063: xmlSetExternalEntityLoader(xmlExternalEntityLoader f);
! 1064: XMLPUBFUN xmlExternalEntityLoader XMLCALL
! 1065: xmlGetExternalEntityLoader(void);
! 1066: XMLPUBFUN xmlParserInputPtr XMLCALL
! 1067: xmlLoadExternalEntity (const char *URL,
! 1068: const char *ID,
! 1069: xmlParserCtxtPtr ctxt);
! 1070:
! 1071: /*
! 1072: * Index lookup, actually implemented in the encoding module
! 1073: */
! 1074: XMLPUBFUN long XMLCALL
! 1075: xmlByteConsumed (xmlParserCtxtPtr ctxt);
! 1076:
! 1077: /*
! 1078: * New set of simpler/more flexible APIs
! 1079: */
! 1080: /**
! 1081: * xmlParserOption:
! 1082: *
! 1083: * This is the set of XML parser options that can be passed down
! 1084: * to the xmlReadDoc() and similar calls.
! 1085: */
! 1086: typedef enum {
! 1087: XML_PARSE_RECOVER = 1<<0, /* recover on errors */
! 1088: XML_PARSE_NOENT = 1<<1, /* substitute entities */
! 1089: XML_PARSE_DTDLOAD = 1<<2, /* load the external subset */
! 1090: XML_PARSE_DTDATTR = 1<<3, /* default DTD attributes */
! 1091: XML_PARSE_DTDVALID = 1<<4, /* validate with the DTD */
! 1092: XML_PARSE_NOERROR = 1<<5, /* suppress error reports */
! 1093: XML_PARSE_NOWARNING = 1<<6, /* suppress warning reports */
! 1094: XML_PARSE_PEDANTIC = 1<<7, /* pedantic error reporting */
! 1095: XML_PARSE_NOBLANKS = 1<<8, /* remove blank nodes */
! 1096: XML_PARSE_SAX1 = 1<<9, /* use the SAX1 interface internally */
! 1097: XML_PARSE_XINCLUDE = 1<<10,/* Implement XInclude substitition */
! 1098: XML_PARSE_NONET = 1<<11,/* Forbid network access */
! 1099: XML_PARSE_NODICT = 1<<12,/* Do not reuse the context dictionnary */
! 1100: XML_PARSE_NSCLEAN = 1<<13,/* remove redundant namespaces declarations */
! 1101: XML_PARSE_NOCDATA = 1<<14,/* merge CDATA as text nodes */
! 1102: XML_PARSE_NOXINCNODE= 1<<15,/* do not generate XINCLUDE START/END nodes */
! 1103: XML_PARSE_COMPACT = 1<<16,/* compact small text nodes; no modification of
! 1104: the tree allowed afterwards (will possibly
! 1105: crash if you try to modify the tree) */
! 1106: XML_PARSE_OLD10 = 1<<17,/* parse using XML-1.0 before update 5 */
! 1107: XML_PARSE_NOBASEFIX = 1<<18,/* do not fixup XINCLUDE xml:base uris */
! 1108: XML_PARSE_HUGE = 1<<19, /* relax any hardcoded limit from the parser */
! 1109: XML_PARSE_OLDSAX = 1<<20 /* parse using SAX2 interface from before 2.7.0 */
! 1110: } xmlParserOption;
! 1111:
! 1112: XMLPUBFUN void XMLCALL
! 1113: xmlCtxtReset (xmlParserCtxtPtr ctxt);
! 1114: XMLPUBFUN int XMLCALL
! 1115: xmlCtxtResetPush (xmlParserCtxtPtr ctxt,
! 1116: const char *chunk,
! 1117: int size,
! 1118: const char *filename,
! 1119: const char *encoding);
! 1120: XMLPUBFUN int XMLCALL
! 1121: xmlCtxtUseOptions (xmlParserCtxtPtr ctxt,
! 1122: int options);
! 1123: XMLPUBFUN xmlDocPtr XMLCALL
! 1124: xmlReadDoc (const xmlChar *cur,
! 1125: const char *URL,
! 1126: const char *encoding,
! 1127: int options);
! 1128: XMLPUBFUN xmlDocPtr XMLCALL
! 1129: xmlReadFile (const char *URL,
! 1130: const char *encoding,
! 1131: int options);
! 1132: XMLPUBFUN xmlDocPtr XMLCALL
! 1133: xmlReadMemory (const char *buffer,
! 1134: int size,
! 1135: const char *URL,
! 1136: const char *encoding,
! 1137: int options);
! 1138: XMLPUBFUN xmlDocPtr XMLCALL
! 1139: xmlReadFd (int fd,
! 1140: const char *URL,
! 1141: const char *encoding,
! 1142: int options);
! 1143: XMLPUBFUN xmlDocPtr XMLCALL
! 1144: xmlReadIO (xmlInputReadCallback ioread,
! 1145: xmlInputCloseCallback ioclose,
! 1146: void *ioctx,
! 1147: const char *URL,
! 1148: const char *encoding,
! 1149: int options);
! 1150: XMLPUBFUN xmlDocPtr XMLCALL
! 1151: xmlCtxtReadDoc (xmlParserCtxtPtr ctxt,
! 1152: const xmlChar *cur,
! 1153: const char *URL,
! 1154: const char *encoding,
! 1155: int options);
! 1156: XMLPUBFUN xmlDocPtr XMLCALL
! 1157: xmlCtxtReadFile (xmlParserCtxtPtr ctxt,
! 1158: const char *filename,
! 1159: const char *encoding,
! 1160: int options);
! 1161: XMLPUBFUN xmlDocPtr XMLCALL
! 1162: xmlCtxtReadMemory (xmlParserCtxtPtr ctxt,
! 1163: const char *buffer,
! 1164: int size,
! 1165: const char *URL,
! 1166: const char *encoding,
! 1167: int options);
! 1168: XMLPUBFUN xmlDocPtr XMLCALL
! 1169: xmlCtxtReadFd (xmlParserCtxtPtr ctxt,
! 1170: int fd,
! 1171: const char *URL,
! 1172: const char *encoding,
! 1173: int options);
! 1174: XMLPUBFUN xmlDocPtr XMLCALL
! 1175: xmlCtxtReadIO (xmlParserCtxtPtr ctxt,
! 1176: xmlInputReadCallback ioread,
! 1177: xmlInputCloseCallback ioclose,
! 1178: void *ioctx,
! 1179: const char *URL,
! 1180: const char *encoding,
! 1181: int options);
! 1182:
! 1183: /*
! 1184: * Library wide options
! 1185: */
! 1186: /**
! 1187: * xmlFeature:
! 1188: *
! 1189: * Used to examine the existance of features that can be enabled
! 1190: * or disabled at compile-time.
! 1191: * They used to be called XML_FEATURE_xxx but this clashed with Expat
! 1192: */
! 1193: typedef enum {
! 1194: XML_WITH_THREAD = 1,
! 1195: XML_WITH_TREE = 2,
! 1196: XML_WITH_OUTPUT = 3,
! 1197: XML_WITH_PUSH = 4,
! 1198: XML_WITH_READER = 5,
! 1199: XML_WITH_PATTERN = 6,
! 1200: XML_WITH_WRITER = 7,
! 1201: XML_WITH_SAX1 = 8,
! 1202: XML_WITH_FTP = 9,
! 1203: XML_WITH_HTTP = 10,
! 1204: XML_WITH_VALID = 11,
! 1205: XML_WITH_HTML = 12,
! 1206: XML_WITH_LEGACY = 13,
! 1207: XML_WITH_C14N = 14,
! 1208: XML_WITH_CATALOG = 15,
! 1209: XML_WITH_XPATH = 16,
! 1210: XML_WITH_XPTR = 17,
! 1211: XML_WITH_XINCLUDE = 18,
! 1212: XML_WITH_ICONV = 19,
! 1213: XML_WITH_ISO8859X = 20,
! 1214: XML_WITH_UNICODE = 21,
! 1215: XML_WITH_REGEXP = 22,
! 1216: XML_WITH_AUTOMATA = 23,
! 1217: XML_WITH_EXPR = 24,
! 1218: XML_WITH_SCHEMAS = 25,
! 1219: XML_WITH_SCHEMATRON = 26,
! 1220: XML_WITH_MODULES = 27,
! 1221: XML_WITH_DEBUG = 28,
! 1222: XML_WITH_DEBUG_MEM = 29,
! 1223: XML_WITH_DEBUG_RUN = 30,
! 1224: XML_WITH_ZLIB = 31,
! 1225: XML_WITH_ICU = 32,
! 1226: XML_WITH_NONE = 99999 /* just to be sure of allocation size */
! 1227: } xmlFeature;
! 1228:
! 1229: XMLPUBFUN int XMLCALL
! 1230: xmlHasFeature (xmlFeature feature);
! 1231:
! 1232: #ifdef __cplusplus
! 1233: }
! 1234: #endif
! 1235: #endif /* __XML_PARSER_H__ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>