11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci See the file COPYING for copying permission. 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef Expat_INCLUDED 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define Expat_INCLUDED 1 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifdef __VMS 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* 0 1 2 3 0 1 2 3 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1234567890123456789012345678901 1234567890123456789012345678901 */ 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_SetProcessingInstructionHandler XML_SetProcessingInstrHandler 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_SetUnparsedEntityDeclHandler XML_SetUnparsedEntDeclHandler 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_SetStartNamespaceDeclHandler XML_SetStartNamespcDeclHandler 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_SetExternalEntityRefHandlerArg XML_SetExternalEntRefHandlerArg 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <stdlib.h> 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "expat_external.h" 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifdef __cplusplus 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciextern "C" { 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct XML_ParserStruct; 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef struct XML_ParserStruct *XML_Parser; 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Should this be defined using stdbool.h when C99 is available? */ 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef unsigned char XML_Bool; 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_TRUE ((XML_Bool) 1) 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_FALSE ((XML_Bool) 0) 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* The XML_Status enum gives the possible return values for several 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci API functions. The preprocessor #defines are included so this 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci stanza can be added to code that still needs to support older 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci versions of Expat 1.95.x: 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci #ifndef XML_STATUS_OK 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci #define XML_STATUS_OK 1 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci #define XML_STATUS_ERROR 0 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci #endif 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Otherwise, the #define hackery is quite ugly and would have been 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci dropped. 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccienum XML_Status { 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_STATUS_ERROR = 0, 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_STATUS_ERROR XML_STATUS_ERROR 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_STATUS_OK = 1, 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_STATUS_OK XML_STATUS_OK 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_STATUS_SUSPENDED = 2 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccienum XML_Error { 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_NONE, 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_NO_MEMORY, 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_SYNTAX, 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_NO_ELEMENTS, 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_INVALID_TOKEN, 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_UNCLOSED_TOKEN, 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_PARTIAL_CHAR, 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_TAG_MISMATCH, 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_DUPLICATE_ATTRIBUTE, 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_JUNK_AFTER_DOC_ELEMENT, 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_PARAM_ENTITY_REF, 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_UNDEFINED_ENTITY, 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_RECURSIVE_ENTITY_REF, 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_ASYNC_ENTITY, 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_BAD_CHAR_REF, 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_BINARY_ENTITY_REF, 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_MISPLACED_XML_PI, 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_UNKNOWN_ENCODING, 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_INCORRECT_ENCODING, 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_UNCLOSED_CDATA_SECTION, 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_EXTERNAL_ENTITY_HANDLING, 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_NOT_STANDALONE, 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_UNEXPECTED_STATE, 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_ENTITY_DECLARED_IN_PE, 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_FEATURE_REQUIRES_XML_DTD, 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING, 821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /* Added in 1.95.7. */ 831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_UNBOUND_PREFIX, 841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /* Added in 1.95.8. */ 851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_UNDECLARING_PREFIX, 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_INCOMPLETE_PE, 871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_XML_DECL, 881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_TEXT_DECL, 891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_PUBLICID, 901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_SUSPENDED, 911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_NOT_SUSPENDED, 921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_ABORTED, 931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_FINISHED, 941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_SUSPEND_PE, 951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /* Added in 2.0. */ 961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_RESERVED_PREFIX_XML, 971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_RESERVED_PREFIX_XMLNS, 981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_RESERVED_NAMESPACE_URI 991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 1001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccienum XML_Content_Type { 1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_CTYPE_EMPTY = 1, 1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_CTYPE_ANY, 1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_CTYPE_MIXED, 1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_CTYPE_NAME, 1061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_CTYPE_CHOICE, 1071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_CTYPE_SEQ 1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 1091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccienum XML_Content_Quant { 1111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_CQUANT_NONE, 1121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_CQUANT_OPT, 1131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_CQUANT_REP, 1141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_CQUANT_PLUS 1151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 1161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* If type == XML_CTYPE_EMPTY or XML_CTYPE_ANY, then quant will be 1181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_CQUANT_NONE, and the other fields will be zero or NULL. 1191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci If type == XML_CTYPE_MIXED, then quant will be NONE or REP and 1201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci numchildren will contain number of elements that may be mixed in 1211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci and children point to an array of XML_Content cells that will be 1221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci all of XML_CTYPE_NAME type with no quantification. 1231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci If type == XML_CTYPE_NAME, then the name points to the name, and 1251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci the numchildren field will be zero and children will be NULL. The 1261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci quant fields indicates any quantifiers placed on the name. 1271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci CHOICE and SEQ will have name NULL, the number of children in 1291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci numchildren and children will point, recursively, to an array 1301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci of XML_Content cells. 1311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci The EMPTY, ANY, and MIXED types will only occur at top level. 1331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 1341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef struct XML_cp XML_Content; 1361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct XML_cp { 1381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci enum XML_Content_Type type; 1391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci enum XML_Content_Quant quant; 1401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_Char * name; 1411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci unsigned int numchildren; 1421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_Content * children; 1431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 1441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This is called for an element declaration. See above for 1471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci description of the model argument. It's the caller's responsibility 1481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci to free model when finished with it. 1491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 1501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_ElementDeclHandler) (void *userData, 1511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *name, 1521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_Content *model); 1531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 1551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetElementDeclHandler(XML_Parser parser, 1561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ElementDeclHandler eldecl); 1571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* The Attlist declaration handler is called for *each* attribute. So 1591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci a single Attlist declaration with multiple attributes declared will 1601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci generate multiple calls to this handler. The "default" parameter 1611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci may be NULL in the case of the "#IMPLIED" or "#REQUIRED" 1621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci keyword. The "isrequired" parameter will be true and the default 1631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci value will be NULL in the case of "#REQUIRED". If "isrequired" is 1641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci true and default is non-NULL, then this is a "#FIXED" default. 1651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 1661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_AttlistDeclHandler) ( 1671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void *userData, 1681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *elname, 1691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *attname, 1701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *att_type, 1711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *dflt, 1721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int isrequired); 1731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 1751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetAttlistDeclHandler(XML_Parser parser, 1761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_AttlistDeclHandler attdecl); 1771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* The XML declaration handler is called for *both* XML declarations 1791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci and text declarations. The way to distinguish is that the version 1801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci parameter will be NULL for text declarations. The encoding 1811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci parameter may be NULL for XML declarations. The standalone 1821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci parameter will be -1, 0, or 1 indicating respectively that there 1831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci was no standalone parameter in the declaration, that it was given 1841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci as no, or that it was given as yes. 1851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 1861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_XmlDeclHandler) (void *userData, 1871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *version, 1881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *encoding, 1891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int standalone); 1901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 1921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetXmlDeclHandler(XML_Parser parser, 1931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_XmlDeclHandler xmldecl); 1941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef struct { 1971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void *(*malloc_fcn)(size_t size); 1981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void *(*realloc_fcn)(void *ptr, size_t size); 1991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void (*free_fcn)(void *ptr); 2001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} XML_Memory_Handling_Suite; 2011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Constructs a new parser; encoding is the encoding specified by the 2031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci external protocol or NULL if there is none specified. 2041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 2051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(XML_Parser) 2061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_ParserCreate(const XML_Char *encoding); 2071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Constructs a new parser and namespace processor. Element type 2091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci names and attribute names that belong to a namespace will be 2101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci expanded; unprefixed attribute names are never expanded; unprefixed 2111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci element type names are expanded only if there is a default 2121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci namespace. The expanded name is the concatenation of the namespace 2131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci URI, the namespace separator character, and the local part of the 2141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci name. If the namespace separator is '\0' then the namespace URI 2151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci and the local part will be concatenated without any separator. 2161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci It is a programming error to use the separator '\0' with namespace 2171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci triplets (see XML_SetReturnNSTriplet). 2181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 2191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(XML_Parser) 2201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator); 2211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Constructs a new parser using the memory management suite referred to 2241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci by memsuite. If memsuite is NULL, then use the standard library memory 2251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci suite. If namespaceSeparator is non-NULL it creates a parser with 2261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci namespace processing as described above. The character pointed at 2271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci will serve as the namespace separator. 2281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci All further memory operations used for the created parser will come from 2301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci the given suite. 2311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 2321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(XML_Parser) 2331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_ParserCreate_MM(const XML_Char *encoding, 2341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Memory_Handling_Suite *memsuite, 2351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *namespaceSeparator); 2361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Prepare a parser object to be re-used. This is particularly 2381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci valuable when memory allocation overhead is disproportionatly high, 2391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci such as when a large number of small documnents need to be parsed. 2401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci All handlers are cleared from the parser, except for the 2411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci unknownEncodingHandler. The parser's external state is re-initialized 2421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci except for the values of ns and ns_triplets. 2431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Added in Expat 1.95.3. 2451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 2461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(XML_Bool) 2471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_ParserReset(XML_Parser parser, const XML_Char *encoding); 2481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* atts is array of name/value pairs, terminated by 0; 2501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci names and values are 0 terminated. 2511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 2521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_StartElementHandler) (void *userData, 2531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *name, 2541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char **atts); 2551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_EndElementHandler) (void *userData, 2571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *name); 2581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* s is not 0 terminated. */ 2611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_CharacterDataHandler) (void *userData, 2621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *s, 2631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int len); 2641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* target and data are 0 terminated */ 2661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_ProcessingInstructionHandler) ( 2671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void *userData, 2681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *target, 2691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *data); 2701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* data is 0 terminated */ 2721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_CommentHandler) (void *userData, 2731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *data); 2741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_StartCdataSectionHandler) (void *userData); 2761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_EndCdataSectionHandler) (void *userData); 2771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This is called for any characters in the XML document for which 2791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci there is no applicable handler. This includes both characters that 2801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci are part of markup which is of a kind that is not reported 2811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci (comments, markup declarations), or characters that are part of a 2821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci construct which could be reported but for which no handler has been 2831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci supplied. The characters are passed exactly as they were in the XML 2841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci document except that they will be encoded in UTF-8 or UTF-16. 2851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Line boundaries are not normalized. Note that a byte order mark 2861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci character is not passed to the default handler. There are no 2871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci guarantees about how characters are divided between calls to the 2881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci default handler: for example, a comment might be split between 2891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci multiple calls. 2901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 2911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_DefaultHandler) (void *userData, 2921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *s, 2931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int len); 2941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This is called for the start of the DOCTYPE declaration, before 2961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci any DTD or internal subset is parsed. 2971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 2981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_StartDoctypeDeclHandler) ( 2991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void *userData, 3001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *doctypeName, 3011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *sysid, 3021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *pubid, 3031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int has_internal_subset); 3041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This is called for the start of the DOCTYPE declaration when the 3061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci closing > is encountered, but after processing any external 3071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci subset. 3081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 3091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_EndDoctypeDeclHandler)(void *userData); 3101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This is called for entity declarations. The is_parameter_entity 3121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci argument will be non-zero if the entity is a parameter entity, zero 3131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci otherwise. 3141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci For internal entities (<!ENTITY foo "bar">), value will 3161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci be non-NULL and systemId, publicID, and notationName will be NULL. 3171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci The value string is NOT nul-terminated; the length is provided in 3181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci the value_length argument. Since it is legal to have zero-length 3191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci values, do not use this argument to test for internal entities. 3201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci For external entities, value will be NULL and systemId will be 3221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci non-NULL. The publicId argument will be NULL unless a public 3231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci identifier was provided. The notationName argument will have a 3241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci non-NULL value only for unparsed entity declarations. 3251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Note that is_parameter_entity can't be changed to XML_Bool, since 3271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci that would break binary compatibility. 3281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 3291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_EntityDeclHandler) ( 3301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void *userData, 3311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *entityName, 3321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int is_parameter_entity, 3331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *value, 3341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int value_length, 3351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *base, 3361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *systemId, 3371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *publicId, 3381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *notationName); 3391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 3411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetEntityDeclHandler(XML_Parser parser, 3421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_EntityDeclHandler handler); 3431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* OBSOLETE -- OBSOLETE -- OBSOLETE 3451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci This handler has been superceded by the EntityDeclHandler above. 3461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci It is provided here for backward compatibility. 3471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci This is called for a declaration of an unparsed (NDATA) entity. 3491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci The base argument is whatever was set by XML_SetBase. The 3501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci entityName, systemId and notationName arguments will never be 3511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci NULL. The other arguments may be. 3521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 3531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_UnparsedEntityDeclHandler) ( 3541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void *userData, 3551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *entityName, 3561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *base, 3571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *systemId, 3581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *publicId, 3591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *notationName); 3601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This is called for a declaration of notation. The base argument is 3621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci whatever was set by XML_SetBase. The notationName will never be 3631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci NULL. The other arguments can be. 3641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 3651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_NotationDeclHandler) ( 3661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void *userData, 3671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *notationName, 3681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *base, 3691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *systemId, 3701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *publicId); 3711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* When namespace processing is enabled, these are called once for 3731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci each namespace declaration. The call to the start and end element 3741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci handlers occur between the calls to the start and end namespace 3751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci declaration handlers. For an xmlns attribute, prefix will be 3761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci NULL. For an xmlns="" attribute, uri will be NULL. 3771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 3781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_StartNamespaceDeclHandler) ( 3791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void *userData, 3801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *prefix, 3811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *uri); 3821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_EndNamespaceDeclHandler) ( 3841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void *userData, 3851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *prefix); 3861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This is called if the document is not standalone, that is, it has an 3881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci external subset or a reference to a parameter entity, but does not 3891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci have standalone="yes". If this handler returns XML_STATUS_ERROR, 3901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci then processing will not continue, and the parser will return a 3911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_NOT_STANDALONE error. 3921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci If parameter entity parsing is enabled, then in addition to the 3931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci conditions above this handler will only be called if the referenced 3941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci entity was actually read. 3951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 3961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef int (XMLCALL *XML_NotStandaloneHandler) (void *userData); 3971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This is called for a reference to an external parsed general 3991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci entity. The referenced entity is not automatically parsed. The 4001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci application can parse it immediately or later using 4011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ExternalEntityParserCreate. 4021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci The parser argument is the parser parsing the entity containing the 4041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci reference; it can be passed as the parser argument to 4051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ExternalEntityParserCreate. The systemId argument is the 4061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci system identifier as specified in the entity declaration; it will 4071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci not be NULL. 4081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci The base argument is the system identifier that should be used as 4101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci the base for resolving systemId if systemId was relative; this is 4111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci set by XML_SetBase; it may be NULL. 4121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci The publicId argument is the public identifier as specified in the 4141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci entity declaration, or NULL if none was specified; the whitespace 4151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci in the public identifier will have been normalized as required by 4161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci the XML spec. 4171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci The context argument specifies the parsing context in the format 4191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci expected by the context argument to XML_ExternalEntityParserCreate; 4201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci context is valid only until the handler returns, so if the 4211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci referenced entity is to be parsed later, it must be copied. 4221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci context is NULL only when the entity is a parameter entity. 4231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci The handler should return XML_STATUS_ERROR if processing should not 4251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci continue because of a fatal error in the handling of the external 4261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci entity. In this case the calling parser will return an 4271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_EXTERNAL_ENTITY_HANDLING error. 4281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Note that unlike other handlers the first argument is the parser, 4301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci not userData. 4311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 4321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef int (XMLCALL *XML_ExternalEntityRefHandler) ( 4331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_Parser parser, 4341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *context, 4351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *base, 4361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *systemId, 4371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *publicId); 4381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This is called in two situations: 4401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1) An entity reference is encountered for which no declaration 4411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci has been read *and* this is not an error. 4421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2) An internal entity reference is read, but not expanded, because 4431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_SetDefaultHandler has been called. 4441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Note: skipped parameter entities in declarations and skipped general 4451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci entities in attribute values cannot be reported, because 4461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci the event would be out of sync with the reporting of the 4471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci declarations or attribute values 4481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 4491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef void (XMLCALL *XML_SkippedEntityHandler) ( 4501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void *userData, 4511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *entityName, 4521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int is_parameter_entity); 4531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This structure is filled in by the XML_UnknownEncodingHandler to 4551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci provide information to the parser about encodings that are unknown 4561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci to the parser. 4571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci The map[b] member gives information about byte sequences whose 4591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci first byte is b. 4601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci If map[b] is c where c is >= 0, then b by itself encodes the 4621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Unicode scalar value c. 4631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci If map[b] is -1, then the byte sequence is malformed. 4651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci If map[b] is -n, where n >= 2, then b is the first byte of an 4671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci n-byte sequence that encodes a single Unicode scalar value. 4681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci The data member will be passed as the first argument to the convert 4701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci function. 4711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci The convert function is used to convert multibyte sequences; s will 4731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci point to a n-byte sequence where map[(unsigned char)*s] == -n. The 4741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci convert function must return the Unicode scalar value represented 4751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci by this byte sequence or -1 if the byte sequence is malformed. 4761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci The convert function may be NULL if the encoding is a single-byte 4781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci encoding, that is if map[b] >= -1 for all bytes b. 4791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci When the parser is finished with the encoding, then if release is 4811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci not NULL, it will call release passing it the data member; once 4821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci release has been called, the convert function will not be called 4831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci again. 4841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Expat places certain restrictions on the encodings that are supported 4861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci using this mechanism. 4871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1. Every ASCII character that can appear in a well-formed XML document, 4891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci other than the characters 4901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci $@\^`{}~ 4921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci must be represented by a single byte, and that byte must be the 4941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci same byte that represents that character in ASCII. 4951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2. No character may require more than 4 bytes to encode. 4971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3. All characters encoded must have Unicode scalar values <= 4991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 0xFFFF, (i.e., characters that would be encoded by surrogates in 5001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UTF-16 are not allowed). Note that this restriction doesn't 5011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci apply to the built-in support for UTF-8 and UTF-16. 5021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4. No Unicode character may be encoded by more than one distinct 5041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci sequence of bytes. 5051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 5061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef struct { 5071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int map[256]; 5081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void *data; 5091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int (XMLCALL *convert)(void *data, const char *s); 5101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void (XMLCALL *release)(void *data); 5111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} XML_Encoding; 5121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This is called for an encoding that is unknown to the parser. 5141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci The encodingHandlerData argument is that which was passed as the 5161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci second argument to XML_SetUnknownEncodingHandler. 5171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci The name argument gives the name of the encoding as specified in 5191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci the encoding declaration. 5201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci If the callback can provide information about the encoding, it must 5221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci fill in the XML_Encoding structure, and return XML_STATUS_OK. 5231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Otherwise it must return XML_STATUS_ERROR. 5241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci If info does not describe a suitable encoding, then the parser will 5261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return an XML_UNKNOWN_ENCODING error. 5271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 5281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef int (XMLCALL *XML_UnknownEncodingHandler) ( 5291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void *encodingHandlerData, 5301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *name, 5311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_Encoding *info); 5321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 5341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetElementHandler(XML_Parser parser, 5351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_StartElementHandler start, 5361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_EndElementHandler end); 5371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 5391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetStartElementHandler(XML_Parser parser, 5401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_StartElementHandler handler); 5411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 5431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetEndElementHandler(XML_Parser parser, 5441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_EndElementHandler handler); 5451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 5471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetCharacterDataHandler(XML_Parser parser, 5481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_CharacterDataHandler handler); 5491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 5511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetProcessingInstructionHandler(XML_Parser parser, 5521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ProcessingInstructionHandler handler); 5531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 5541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetCommentHandler(XML_Parser parser, 5551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_CommentHandler handler); 5561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 5581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetCdataSectionHandler(XML_Parser parser, 5591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_StartCdataSectionHandler start, 5601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_EndCdataSectionHandler end); 5611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 5631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetStartCdataSectionHandler(XML_Parser parser, 5641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_StartCdataSectionHandler start); 5651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 5671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetEndCdataSectionHandler(XML_Parser parser, 5681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_EndCdataSectionHandler end); 5691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This sets the default handler and also inhibits expansion of 5711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci internal entities. These entity references will be passed to the 5721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci default handler, or to the skipped entity handler, if one is set. 5731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 5741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 5751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetDefaultHandler(XML_Parser parser, 5761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_DefaultHandler handler); 5771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This sets the default handler but does not inhibit expansion of 5791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci internal entities. The entity reference will not be passed to the 5801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci default handler. 5811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 5821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 5831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetDefaultHandlerExpand(XML_Parser parser, 5841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_DefaultHandler handler); 5851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 5871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetDoctypeDeclHandler(XML_Parser parser, 5881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_StartDoctypeDeclHandler start, 5891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_EndDoctypeDeclHandler end); 5901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 5921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetStartDoctypeDeclHandler(XML_Parser parser, 5931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_StartDoctypeDeclHandler start); 5941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 5961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetEndDoctypeDeclHandler(XML_Parser parser, 5971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_EndDoctypeDeclHandler end); 5981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 6001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetUnparsedEntityDeclHandler(XML_Parser parser, 6011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_UnparsedEntityDeclHandler handler); 6021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 6041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetNotationDeclHandler(XML_Parser parser, 6051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_NotationDeclHandler handler); 6061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 6081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetNamespaceDeclHandler(XML_Parser parser, 6091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_StartNamespaceDeclHandler start, 6101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_EndNamespaceDeclHandler end); 6111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 6131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetStartNamespaceDeclHandler(XML_Parser parser, 6141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_StartNamespaceDeclHandler start); 6151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 6171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetEndNamespaceDeclHandler(XML_Parser parser, 6181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_EndNamespaceDeclHandler end); 6191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 6211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetNotStandaloneHandler(XML_Parser parser, 6221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_NotStandaloneHandler handler); 6231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 6251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetExternalEntityRefHandler(XML_Parser parser, 6261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ExternalEntityRefHandler handler); 6271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* If a non-NULL value for arg is specified here, then it will be 6291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci passed as the first argument to the external entity ref handler 6301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci instead of the parser object. 6311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 6321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 6331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetExternalEntityRefHandlerArg(XML_Parser parser, 6341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void *arg); 6351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 6371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetSkippedEntityHandler(XML_Parser parser, 6381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_SkippedEntityHandler handler); 6391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 6411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetUnknownEncodingHandler(XML_Parser parser, 6421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_UnknownEncodingHandler handler, 6431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void *encodingHandlerData); 6441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This can be called within a handler for a start element, end 6461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci element, processing instruction or character data. It causes the 6471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci corresponding markup to be passed to the default handler. 6481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 6491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 6501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_DefaultCurrent(XML_Parser parser); 6511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* If do_nst is non-zero, and namespace processing is in effect, and 6531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci a name has a prefix (i.e. an explicit namespace qualifier) then 6541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci that name is returned as a triplet in a single string separated by 6551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci the separator character specified when the parser was created: URI 6561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci + sep + local_name + sep + prefix. 6571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci If do_nst is zero, then namespace information is returned in the 6591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci default manner (URI + sep + local_name) whether or not the name 6601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci has a prefix. 6611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Note: Calling XML_SetReturnNSTriplet after XML_Parse or 6631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ParseBuffer has no effect. 6641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 6651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 6671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetReturnNSTriplet(XML_Parser parser, int do_nst); 6681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This value is passed as the userData argument to callbacks. */ 6701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 6711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetUserData(XML_Parser parser, void *userData); 6721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Returns the last value set by XML_SetUserData or NULL. */ 6741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_GetUserData(parser) (*(void **)(parser)) 6751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* This is equivalent to supplying an encoding argument to 6771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ParserCreate. On success XML_SetEncoding returns non-zero, 6781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci zero otherwise. 6791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Note: Calling XML_SetEncoding after XML_Parse or XML_ParseBuffer 6801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci has no effect and returns XML_STATUS_ERROR. 6811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 6821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(enum XML_Status) 6831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetEncoding(XML_Parser parser, const XML_Char *encoding); 6841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* If this function is called, then the parser will be passed as the 6861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci first argument to callbacks instead of userData. The userData will 6871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci still be accessible using XML_GetUserData. 6881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 6891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 6901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_UseParserAsHandlerArg(XML_Parser parser); 6911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* If useDTD == XML_TRUE is passed to this function, then the parser 6931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci will assume that there is an external subset, even if none is 6941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci specified in the document. In such a case the parser will call the 6951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci externalEntityRefHandler with a value of NULL for the systemId 6961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci argument (the publicId and context arguments will be NULL as well). 6971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Note: For the purpose of checking WFC: Entity Declared, passing 6981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci useDTD == XML_TRUE will make the parser behave as if the document 6991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci had a DTD with an external subset. 7001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Note: If this function is called, then this must be done before 7011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci the first call to XML_Parse or XML_ParseBuffer, since it will 7021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci have no effect after that. Returns 7031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING. 7041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Note: If the document does not have a DOCTYPE declaration at all, 7051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci then startDoctypeDeclHandler and endDoctypeDeclHandler will not 7061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci be called, despite an external subset being parsed. 7071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Note: If XML_DTD is not defined when Expat is compiled, returns 7081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ERROR_FEATURE_REQUIRES_XML_DTD. 7091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 7101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(enum XML_Error) 7111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD); 7121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 7131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 7141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Sets the base to be used for resolving relative URIs in system 7151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci identifiers in declarations. Resolving relative identifiers is 7161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci left to the application: this value will be passed through as the 7171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base argument to the XML_ExternalEntityRefHandler, 7181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_NotationDeclHandler and XML_UnparsedEntityDeclHandler. The base 7191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci argument will be copied. Returns XML_STATUS_ERROR if out of memory, 7201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_STATUS_OK otherwise. 7211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 7221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(enum XML_Status) 7231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetBase(XML_Parser parser, const XML_Char *base); 7241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 7251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(const XML_Char *) 7261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_GetBase(XML_Parser parser); 7271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 7281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Returns the number of the attribute/value pairs passed in last call 7291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci to the XML_StartElementHandler that were specified in the start-tag 7301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci rather than defaulted. Each attribute/value pair counts as 2; thus 7311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci this correspondds to an index into the atts array passed to the 7321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_StartElementHandler. 7331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 7341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(int) 7351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_GetSpecifiedAttributeCount(XML_Parser parser); 7361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 7371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Returns the index of the ID attribute passed in the last call to 7381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_StartElementHandler, or -1 if there is no ID attribute. Each 7391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci attribute/value pair counts as 2; thus this correspondds to an 7401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci index into the atts array passed to the XML_StartElementHandler. 7411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 7421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(int) 7431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_GetIdAttributeIndex(XML_Parser parser); 7441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 7451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifdef XML_ATTR_INFO 7461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Source file byte offsets for the start and end of attribute names and values. 7471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci The value indices are exclusive of surrounding quotes; thus in a UTF-8 source 7481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci file an attribute value of "blah" will yield: 7491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci info->valueEnd - info->valueStart = 4 bytes. 7501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 7511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef struct { 7521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_Index nameStart; /* Offset to beginning of the attribute name. */ 7531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_Index nameEnd; /* Offset after the attribute name's last byte. */ 7541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_Index valueStart; /* Offset to beginning of the attribute value. */ 7551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_Index valueEnd; /* Offset after the attribute value's last byte. */ 7561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} XML_AttrInfo; 7571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 7581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Returns an array of XML_AttrInfo structures for the attribute/value pairs 7591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci passed in last call to the XML_StartElementHandler that were specified 7601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci in the start-tag rather than defaulted. Each attribute/value pair counts 7611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci as 1; thus the number of entries in the array is 7621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_GetSpecifiedAttributeCount(parser) / 2. 7631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 7641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(const XML_AttrInfo *) 7651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_GetAttributeInfo(XML_Parser parser); 7661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 7671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 7681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Parses some input. Returns XML_STATUS_ERROR if a fatal error is 7691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci detected. The last call to XML_Parse must have isFinal true; len 7701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci may be zero for this call (or any other). 7711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 7721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Though the return values for these functions has always been 7731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci described as a Boolean value, the implementation, at least for the 7741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1.95.x series, has always returned exactly one of the XML_Status 7751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci values. 7761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 7771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(enum XML_Status) 7781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_Parse(XML_Parser parser, const char *s, int len, int isFinal); 7791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 7801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void *) 7811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_GetBuffer(XML_Parser parser, int len); 7821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 7831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(enum XML_Status) 7841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_ParseBuffer(XML_Parser parser, int len, int isFinal); 7851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 7861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Stops parsing, causing XML_Parse() or XML_ParseBuffer() to return. 7871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Must be called from within a call-back handler, except when aborting 7881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci (resumable = 0) an already suspended parser. Some call-backs may 7891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci still follow because they would otherwise get lost. Examples: 7901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci - endElementHandler() for empty elements when stopped in 7911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci startElementHandler(), 7921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci - endNameSpaceDeclHandler() when stopped in endElementHandler(), 7931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci and possibly others. 7941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 7951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Can be called from most handlers, including DTD related call-backs, 7961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci except when parsing an external parameter entity and resumable != 0. 7971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Returns XML_STATUS_OK when successful, XML_STATUS_ERROR otherwise. 7981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Possible error codes: 7991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci - XML_ERROR_SUSPENDED: when suspending an already suspended parser. 8001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci - XML_ERROR_FINISHED: when the parser has already finished. 8011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci - XML_ERROR_SUSPEND_PE: when suspending while parsing an external PE. 8021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 8031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci When resumable != 0 (true) then parsing is suspended, that is, 8041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_Parse() and XML_ParseBuffer() return XML_STATUS_SUSPENDED. 8051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Otherwise, parsing is aborted, that is, XML_Parse() and XML_ParseBuffer() 8061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return XML_STATUS_ERROR with error code XML_ERROR_ABORTED. 8071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 8081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci *Note*: 8091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci This will be applied to the current parser instance only, that is, if 8101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci there is a parent parser then it will continue parsing when the 8111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci externalEntityRefHandler() returns. It is up to the implementation of 8121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci the externalEntityRefHandler() to call XML_StopParser() on the parent 8131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci parser (recursively), if one wants to stop parsing altogether. 8141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 8151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci When suspended, parsing can be resumed by calling XML_ResumeParser(). 8161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 8171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(enum XML_Status) 8181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_StopParser(XML_Parser parser, XML_Bool resumable); 8191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 8201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Resumes parsing after it has been suspended with XML_StopParser(). 8211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Must not be called from within a handler call-back. Returns same 8221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci status codes as XML_Parse() or XML_ParseBuffer(). 8231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Additional error code XML_ERROR_NOT_SUSPENDED possible. 8241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 8251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci *Note*: 8261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci This must be called on the most deeply nested child parser instance 8271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci first, and on its parent parser only after the child parser has finished, 8281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci to be applied recursively until the document entity's parser is restarted. 8291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci That is, the parent parser will not resume by itself and it is up to the 8301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci application to call XML_ResumeParser() on it at the appropriate moment. 8311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 8321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(enum XML_Status) 8331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_ResumeParser(XML_Parser parser); 8341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 8351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccienum XML_Parsing { 8361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_INITIALIZED, 8371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_PARSING, 8381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_FINISHED, 8391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_SUSPENDED 8401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 8411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 8421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef struct { 8431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci enum XML_Parsing parsing; 8441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_Bool finalBuffer; 8451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} XML_ParsingStatus; 8461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 8471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Returns status of parser with respect to being initialized, parsing, 8481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci finished, or suspended and processing the final buffer. 8491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XXX XML_Parse() and XML_ParseBuffer() should return XML_ParsingStatus, 8501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XXX with XML_FINISHED_OK or XML_FINISHED_ERROR replacing XML_FINISHED 8511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 8521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 8531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status); 8541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 8551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Creates an XML_Parser object that can parse an external general 8561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci entity; context is a '\0'-terminated string specifying the parse 8571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci context; encoding is a '\0'-terminated string giving the name of 8581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci the externally specified encoding, or NULL if there is no 8591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci externally specified encoding. The context string consists of a 8601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci sequence of tokens separated by formfeeds (\f); a token consisting 8611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci of a name specifies that the general entity of the name is open; a 8621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci token of the form prefix=uri specifies the namespace for a 8631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci particular prefix; a token of the form =uri specifies the default 8641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci namespace. This can be called at any point after the first call to 8651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci an ExternalEntityRefHandler so longer as the parser has not yet 8661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci been freed. The new parser is completely independent and may 8671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci safely be used in a separate thread. The handlers and userData are 8681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci initialized from the parser argument. Returns NULL if out of memory. 8691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Otherwise returns a new XML_Parser object. 8701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 8711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(XML_Parser) 8721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_ExternalEntityParserCreate(XML_Parser parser, 8731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *context, 8741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_Char *encoding); 8751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 8761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccienum XML_ParamEntityParsing { 8771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_PARAM_ENTITY_PARSING_NEVER, 8781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE, 8791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_PARAM_ENTITY_PARSING_ALWAYS 8801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 8811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 8821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Controls parsing of parameter entities (including the external DTD 8831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci subset). If parsing of parameter entities is enabled, then 8841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci references to external parameter entities (including the external 8851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DTD subset) will be passed to the handler set with 8861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_SetExternalEntityRefHandler. The context passed will be 0. 8871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 8881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Unlike external general entities, external parameter entities can 8891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci only be parsed synchronously. If the external parameter entity is 8901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci to be parsed, it must be parsed during the call to the external 8911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci entity ref handler: the complete sequence of 8921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ExternalEntityParserCreate, XML_Parse/XML_ParseBuffer and 8931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ParserFree calls must be made during this call. After 8941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ExternalEntityParserCreate has been called to create the parser 8951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci for the external parameter entity (context must be 0 for this 8961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci call), it is illegal to make any calls on the old parser until 8971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ParserFree has been called on the newly created parser. 8981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci If the library has been compiled without support for parameter 8991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci entity parsing (ie without XML_DTD being defined), then 9001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_SetParamEntityParsing will return 0 if parsing of parameter 9011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci entities is requested; otherwise it will return non-zero. 9021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Note: If XML_SetParamEntityParsing is called after XML_Parse or 9031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_ParseBuffer, then it has no effect and will always return 0. 9041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 9051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(int) 9061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetParamEntityParsing(XML_Parser parser, 9071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci enum XML_ParamEntityParsing parsing); 9081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Sets the hash salt to use for internal hash calculations. 9101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Helps in preventing DoS attacks based on predicting hash 9111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci function behavior. This must be called before parsing is started. 9121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Returns 1 if successful, 0 when called after parsing has started. 9131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 9141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(int) 9151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_SetHashSalt(XML_Parser parser, 9161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci unsigned long hash_salt); 9171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then 9191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_GetErrorCode returns information about the error. 9201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 9211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(enum XML_Error) 9221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_GetErrorCode(XML_Parser parser); 9231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* These functions return information about the current parse 9251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci location. They may be called from any callback called to report 9261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci some parse event; in this case the location is the location of the 9271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci first of the sequence of characters that generated the event. When 9281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci called from callbacks generated by declarations in the document 9291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci prologue, the location identified isn't as neatly defined, but will 9301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci be within the relevant markup. When called outside of the callback 9311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci functions, the position indicated will be just past the last parse 9321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci event (regardless of whether there was an associated callback). 9331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci They may also be called after returning from a call to XML_Parse 9351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci or XML_ParseBuffer. If the return value is XML_STATUS_ERROR then 9361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci the location is the location of the character at which the error 9371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci was detected; otherwise the location is the location of the last 9381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci parse event, as described above. 9391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 9401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(XML_Size) XML_GetCurrentLineNumber(XML_Parser parser); 9411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(XML_Size) XML_GetCurrentColumnNumber(XML_Parser parser); 9421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(XML_Index) XML_GetCurrentByteIndex(XML_Parser parser); 9431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Return the number of bytes in the current event. 9451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Returns 0 if the event is in an internal entity. 9461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 9471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(int) 9481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_GetCurrentByteCount(XML_Parser parser); 9491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* If XML_CONTEXT_BYTES is defined, returns the input buffer, sets 9511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci the integer pointed to by offset to the offset within this buffer 9521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci of the current parse position, and sets the integer pointed to by size 9531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci to the size of this buffer (the number of input bytes). Otherwise 9541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci returns a NULL pointer. Also returns a NULL pointer if a parse isn't 9551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci active. 9561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci NOTE: The character pointer returned should not be used outside 9581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci the handler that makes the call. 9591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 9601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(const char *) 9611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_GetInputContext(XML_Parser parser, 9621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int *offset, 9631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int *size); 9641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* For backwards compatibility with previous versions. */ 9661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_GetErrorLineNumber XML_GetCurrentLineNumber 9671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber 9681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_GetErrorByteIndex XML_GetCurrentByteIndex 9691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Frees the content model passed to the element declaration handler */ 9711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 9721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_FreeContentModel(XML_Parser parser, XML_Content *model); 9731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Exposing the memory handling functions used in Expat */ 9751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void *) 9761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_MemMalloc(XML_Parser parser, size_t size); 9771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void *) 9791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_MemRealloc(XML_Parser parser, void *ptr, size_t size); 9801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 9821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_MemFree(XML_Parser parser, void *ptr); 9831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Frees memory used by the parser. */ 9851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(void) 9861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_ParserFree(XML_Parser parser); 9871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Returns a string describing the error. */ 9891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(const XML_LChar *) 9901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_ErrorString(enum XML_Error code); 9911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Return a string containing the version number of this expat */ 9931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(const XML_LChar *) 9941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_ExpatVersion(void); 9951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 9961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef struct { 9971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int major; 9981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int minor; 9991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int micro; 10001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} XML_Expat_Version; 10011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 10021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Return an XML_Expat_Version structure containing numeric version 10031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci number information for this version of expat. 10041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 10051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(XML_Expat_Version) 10061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_ExpatVersionInfo(void); 10071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 10081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Added in Expat 1.95.5. */ 10091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccienum XML_FeatureEnum { 10101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_FEATURE_END = 0, 10111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_FEATURE_UNICODE, 10121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_FEATURE_UNICODE_WCHAR_T, 10131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_FEATURE_DTD, 10141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_FEATURE_CONTEXT_BYTES, 10151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_FEATURE_MIN_SIZE, 10161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_FEATURE_SIZEOF_XML_CHAR, 10171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_FEATURE_SIZEOF_XML_LCHAR, 10181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_FEATURE_NS, 10191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_FEATURE_LARGE_SIZE, 10201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci XML_FEATURE_ATTR_INFO 10211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci /* Additional features must be added to the end of this enum. */ 10221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 10231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 10241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef struct { 10251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci enum XML_FeatureEnum feature; 10261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const XML_LChar *name; 10271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci long int value; 10281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} XML_Feature; 10291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 10301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXMLPARSEAPI(const XML_Feature *) 10311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciXML_GetFeatureList(void); 10321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 10331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 10341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Expat follows the GNU/Linux convention of odd number minor version for 10351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci beta/development releases and even number minor version for stable 10361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci releases. Micro is bumped with each release, and set to 0 with each 10371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci change to major or minor version. 10381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci*/ 10391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_MAJOR_VERSION 2 10401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_MINOR_VERSION 1 10411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define XML_MICRO_VERSION 0 10421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 10431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifdef __cplusplus 10441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 10451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 10461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 10471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif /* not Expat_INCLUDED */ 1048