15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Summary: the core parser module
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Description: Interfaces, constants and types related to the XML parser
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copy: See Copyright for the status of this software.
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Author: Daniel Veillard
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef __XML_PARSER_H__
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define __XML_PARSER_H__
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdarg.h>
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/xmlversion.h>
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/tree.h>
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/dict.h>
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/hash.h>
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/valid.h>
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/entities.h>
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/xmlerror.h>
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/xmlstring.h>
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XML_DEFAULT_VERSION:
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The default version of XML used: 1.0
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XML_DEFAULT_VERSION	"1.0"
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xmlParserInput:
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * An xmlParserInput is an input flow for the XML processor.
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Each entity parsed is associated an xmlParserInput (except the
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * few predefined ones). This is the case both for internal entities
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * - in which case the flow is already completely in memory - or
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * external entities - in which case we use the buf structure for
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * progressive reading and I18N conversions to the internal UTF-8 format.
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xmlParserInputDeallocate:
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @str:  the string to deallocate
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Callback for freeing some parser input allocations.
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (* xmlParserInputDeallocate)(xmlChar *str);
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xmlParserInput {
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* Input buffer */
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlParserInputBufferPtr buf;      /* UTF-8 encoded buffer */
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const char *filename;             /* The file analyzed, if any */
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const char *directory;            /* the directory/base of the file */
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *base;              /* Base of the array to parse */
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *cur;               /* Current char being parsed */
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *end;               /* end of the array to parse */
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int length;                       /* length if known */
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int line;                         /* Current line */
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int col;                          /* Current column */
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * NOTE: consumed is only tested for equality in the parser code,
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     *       so even if there is an overflow this should not give troubles
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     *       for parsing very large instances.
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    unsigned long consumed;           /* How many xmlChars already consumed */
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlParserInputDeallocate free;    /* function to deallocate the base */
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *encoding;          /* the encoding string for entity */
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *version;           /* the version string for entity */
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int standalone;                   /* Was that entity marked standalone */
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int id;                           /* an unique identifier for the entity */
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xmlParserNodeInfo:
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The parser can be asked to collect Node informations, i.e. at what
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * place in the file they were detected.
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * NOTE: This is off by default and not very well tested.
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xmlParserNodeInfo xmlParserNodeInfo;
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xmlParserNodeInfo *xmlParserNodeInfoPtr;
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xmlParserNodeInfo {
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const struct _xmlNode* node;
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* Position & line # that text that created the node begins & ends on */
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  unsigned long begin_pos;
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  unsigned long begin_line;
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  unsigned long end_pos;
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  unsigned long end_line;
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xmlParserNodeInfoSeq xmlParserNodeInfoSeq;
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xmlParserNodeInfoSeq *xmlParserNodeInfoSeqPtr;
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xmlParserNodeInfoSeq {
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  unsigned long maximum;
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  unsigned long length;
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  xmlParserNodeInfo* buffer;
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xmlParserInputState:
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The parser is now working also as a state based parser.
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The recursive one use the state info for entities processing.
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum {
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSER_EOF = -1,	/* nothing is to be parsed */
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSER_START = 0,	/* nothing has been parsed */
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSER_MISC,		/* Misc* before int subset */
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSER_PI,		/* Within a processing instruction */
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSER_DTD,		/* within some DTD content */
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSER_PROLOG,		/* Misc* after internal subset */
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSER_COMMENT,		/* within a comment */
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSER_START_TAG,	/* within a start tag */
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSER_CONTENT,		/* within the content */
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSER_CDATA_SECTION,	/* within a CDATA section */
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSER_END_TAG,		/* within a closing tag */
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSER_ENTITY_DECL,	/* within an entity declaration */
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSER_ENTITY_VALUE,	/* within an entity value in a decl */
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSER_ATTRIBUTE_VALUE,	/* within an attribute value */
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSER_SYSTEM_LITERAL,	/* within a SYSTEM value */
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSER_EPILOG, 		/* the Misc* after the last end tag */
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSER_IGNORE,		/* within an IGNORED section */
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSER_PUBLIC_LITERAL 	/* within a PUBLIC value */
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} xmlParserInputState;
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XML_DETECT_IDS:
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Bit in the loadsubset context field to tell to do ID/REFs lookups.
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use it to initialize xmlLoadExtDtdDefaultValue.
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XML_DETECT_IDS		2
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XML_COMPLETE_ATTRS:
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Bit in the loadsubset context field to tell to do complete the
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * elements attributes lists with the ones defaulted from the DTDs.
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use it to initialize xmlLoadExtDtdDefaultValue.
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XML_COMPLETE_ATTRS	4
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XML_SKIP_IDS:
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Bit in the loadsubset context field to tell to not do ID/REFs registration.
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Used to initialize xmlLoadExtDtdDefaultValue in some special cases.
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XML_SKIP_IDS		8
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xmlParserMode:
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * A parser can operate in various modes
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum {
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_UNKNOWN = 0,
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_DOM = 1,
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_SAX = 2,
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_PUSH_DOM = 3,
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_PUSH_SAX = 4,
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_READER = 5
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} xmlParserMode;
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xmlParserCtxt:
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The parser context.
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * NOTE This doesn't completely define the parser state, the (current ?)
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *      design of the parser uses recursive function calls since this allow
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *      and easy mapping from the production rules of the specification
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *      to the actual code. The drawback is that the actual function call
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *      also reflect the parser state. However most of the parsing routines
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *      takes as the only argument the parser context pointer, so migrating
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *      to a state based parser for progressive parsing shouldn't be too hard.
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xmlParserCtxt {
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    struct _xmlSAXHandler *sax;       /* The SAX handler */
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void            *userData;        /* For SAX interface only, used by DOM build */
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlDocPtr           myDoc;        /* the document being built */
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int            wellFormed;        /* is the document well formed */
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int       replaceEntities;        /* shall we replace entities ? */
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar    *version;        /* the XML version string */
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar   *encoding;        /* the declared encoding, if any */
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int            standalone;        /* standalone document */
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                  html;        /* an HTML(1)/Docbook(2) document
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       * 3 is HTML after <head>
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       * 10 is HTML after <body>
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       */
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* Input stream stack */
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlParserInputPtr  input;         /* Current input stream */
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                inputNr;       /* Number of current input streams */
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                inputMax;      /* Max number of input streams */
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlParserInputPtr *inputTab;      /* stack of inputs */
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* Node analysis stack only used for DOM building */
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNodePtr         node;          /* Current parsed Node */
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                nodeNr;        /* Depth of the parsing stack */
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                nodeMax;       /* Max depth of the parsing stack */
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNodePtr        *nodeTab;       /* array of nodes */
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int record_info;                  /* Whether node info should be kept */
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlParserNodeInfoSeq node_seq;    /* info about each node parsed */
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int errNo;                        /* error code */
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int     hasExternalSubset;        /* reference and external subset */
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int             hasPErefs;        /* the internal subset has PE refs */
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int              external;        /* are we parsing an external entity */
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                 valid;        /* is the document valid */
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int              validate;        /* shall we try to validate ? */
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlValidCtxt        vctxt;        /* The validity context */
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlParserInputState instate;      /* current type of input */
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                 token;        /* next char look-ahead */
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    char           *directory;        /* the data directory */
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* Node name stack */
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar     *name;          /* Current parsed Node */
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                nameNr;        /* Depth of the parsing stack */
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                nameMax;       /* Max depth of the parsing stack */
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *   *nameTab;       /* array of nodes */
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    long               nbChars;       /* number of xmlChar processed */
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    long            checkIndex;       /* used by progressive parsing lookup */
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int             keepBlanks;       /* ugly but ... */
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int             disableSAX;       /* SAX callbacks are disabled */
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int               inSubset;       /* Parsing is in int 1/ext 2 subset */
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *    intSubName;    /* name of subset */
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *          extSubURI;     /* URI of external subset */
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *          extSubSystem;  /* SYSTEM ID of external subset */
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* xml:space values */
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int *              space;         /* Should the parser preserve spaces */
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                spaceNr;       /* Depth of the parsing stack */
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                spaceMax;      /* Max depth of the parsing stack */
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int *              spaceTab;      /* array of space infos */
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                depth;         /* to prevent entity substitution loops */
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlParserInputPtr  entity;        /* used to check entities boundaries */
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                charset;       /* encoding of the in-memory content
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				         actually an xmlCharEncoding */
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                nodelen;       /* Those two fields are there to */
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                nodemem;       /* Speed up large node parsing */
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                pedantic;      /* signal pedantic warnings */
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void              *_private;      /* For user data, libxml won't touch it */
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                loadsubset;    /* should the external subset be loaded */
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                linenumbers;   /* set line number in element content */
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void              *catalogs;      /* document's own catalog */
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                recovery;      /* run in recovery mode */
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                progressive;   /* is this a progressive parsing */
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlDictPtr         dict;          /* dictionnary for the parser */
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *   *atts;          /* array for the attributes callbacks */
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                maxatts;       /* the size of the array */
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                docdict;       /* use strings from dict to build tree */
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * pre-interned strings
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *str_xml;
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *str_xmlns;
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *str_xml_ns;
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Everything below is used only by the new SAX mode
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                sax2;          /* operating in the new SAX mode */
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                nsNr;          /* the number of inherited namespaces */
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                nsMax;         /* the size of the arrays */
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *   *nsTab;         /* the array of prefix/namespace name */
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int               *attallocs;     /* which attribute were allocated */
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void *            *pushTab;       /* array of data for push */
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlHashTablePtr    attsDefault;   /* defaulted attributes if any */
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlHashTablePtr    attsSpecial;   /* non-CDATA attributes if any */
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                nsWellFormed;  /* is the document XML Nanespace okay */
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                options;       /* Extra options */
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Those fields are needed only for treaming parsing so far
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int               dictNames;    /* Use dictionary names for the tree */
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int               freeElemsNr;  /* number of freed element nodes */
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNodePtr        freeElems;    /* List of freed element nodes */
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int               freeAttrsNr;  /* number of freed attributes nodes */
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlAttrPtr        freeAttrs;    /* List of freed attributes nodes */
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * the complete error informations for the last error.
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlError          lastError;
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlParserMode     parseMode;    /* the parser mode */
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    unsigned long    nbentities;    /* number of entities references */
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    unsigned long  sizeentities;    /* size of parsed entities */
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* for use by HTML non-recursive parser */
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlParserNodeInfo *nodeInfo;      /* Current NodeInfo */
3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                nodeInfoNr;    /* Depth of the parsing stack */
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int                nodeInfoMax;   /* Max depth of the parsing stack */
3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlParserNodeInfo *nodeInfoTab;   /* array of nodeInfos */
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xmlSAXLocator:
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * A SAX Locator.
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xmlSAXLocator {
3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *(*getPublicId)(void *ctx);
3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *(*getSystemId)(void *ctx);
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int (*getLineNumber)(void *ctx);
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int (*getColumnNumber)(void *ctx);
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xmlSAXHandler:
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * A SAX handler is bunch of callbacks called by the parser when processing
3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * of the input generate data or structure informations.
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * resolveEntitySAXFunc:
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @publicId: The public ID of the entity
3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @systemId: The system ID of the entity
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Callback:
3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The entity loader, to control the loading of external entities,
3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the application can either:
3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *    - override this resolveEntity() callback in the SAX block
3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *    - or better use the xmlSetExternalEntityLoader() function to
3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *      set up it's own entity resolution routine
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xmlParserInputPtr (*resolveEntitySAXFunc) (void *ctx,
3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *publicId,
3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *systemId);
3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * internalSubsetSAXFunc:
3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name:  the root element name
3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ExternalID:  the external ID
3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @SystemID:  the SYSTEM ID (e.g. filename or URL)
3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Callback on internal subset declaration.
3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*internalSubsetSAXFunc) (void *ctx,
3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *name,
3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *ExternalID,
3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *SystemID);
3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * externalSubsetSAXFunc:
3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name:  the root element name
3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ExternalID:  the external ID
3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @SystemID:  the SYSTEM ID (e.g. filename or URL)
3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Callback on external subset declaration.
3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*externalSubsetSAXFunc) (void *ctx,
3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *name,
3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *ExternalID,
3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *SystemID);
3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * getEntitySAXFunc:
3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name: The entity name
3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Get an entity by name.
3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns the xmlEntityPtr if found.
3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xmlEntityPtr (*getEntitySAXFunc) (void *ctx,
3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *name);
3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * getParameterEntitySAXFunc:
3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name: The entity name
3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Get a parameter entity by name.
3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns the xmlEntityPtr if found.
3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xmlEntityPtr (*getParameterEntitySAXFunc) (void *ctx,
3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *name);
3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * entityDeclSAXFunc:
4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name:  the entity name
4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @type:  the entity type
4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @publicId: The public ID of the entity
4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @systemId: The system ID of the entity
4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @content: the entity value (without processing).
4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * An entity definition has been parsed.
4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*entityDeclSAXFunc) (void *ctx,
4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *name,
4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				int type,
4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *publicId,
4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *systemId,
4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				xmlChar *content);
4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * notationDeclSAXFunc:
4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name: The name of the notation
4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @publicId: The public ID of the entity
4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @systemId: The system ID of the entity
4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * What to do when a notation declaration has been parsed.
4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*notationDeclSAXFunc)(void *ctx,
4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *name,
4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *publicId,
4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *systemId);
4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * attributeDeclSAXFunc:
4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @elem:  the name of the element
4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @fullname:  the attribute name
4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @type:  the attribute type
4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @def:  the type of default value
4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @defaultValue: the attribute default value
4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @tree:  the tree of enumerated value set
4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * An attribute definition has been parsed.
4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*attributeDeclSAXFunc)(void *ctx,
4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *elem,
4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *fullname,
4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				int type,
4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				int def,
4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *defaultValue,
4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				xmlEnumerationPtr tree);
4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * elementDeclSAXFunc:
4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name:  the element name
4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @type:  the element type
4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @content: the element value tree
4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * An element definition has been parsed.
4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*elementDeclSAXFunc)(void *ctx,
4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *name,
4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				int type,
4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				xmlElementContentPtr content);
4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * unparsedEntityDeclSAXFunc:
4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name: The name of the entity
4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @publicId: The public ID of the entity
4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @systemId: The system ID of the entity
4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @notationName: the name of the notation
4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * What to do when an unparsed entity declaration is parsed.
4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*unparsedEntityDeclSAXFunc)(void *ctx,
4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *name,
4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *publicId,
4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *systemId,
4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *notationName);
4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * setDocumentLocatorSAXFunc:
4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @loc: A SAX Locator
4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Receive the document locator at startup, actually xmlDefaultSAXLocator.
4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Everything is available on the context, so this is useless in our case.
4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*setDocumentLocatorSAXFunc) (void *ctx,
4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				xmlSAXLocatorPtr loc);
4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * startDocumentSAXFunc:
4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Called when the document start being processed.
4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*startDocumentSAXFunc) (void *ctx);
4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * endDocumentSAXFunc:
4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Called when the document end has been detected.
4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*endDocumentSAXFunc) (void *ctx);
4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * startElementSAXFunc:
5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name:  The element name, including namespace prefix
5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @atts:  An array of name/value attributes pairs, NULL terminated
5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Called when an opening tag has been processed.
5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*startElementSAXFunc) (void *ctx,
5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *name,
5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar **atts);
5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * endElementSAXFunc:
5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name:  The element name
5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Called when the end of an element has been detected.
5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*endElementSAXFunc) (void *ctx,
5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *name);
5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * attributeSAXFunc:
5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name:  The attribute name, including namespace prefix
5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @value:  The attribute value
5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Handle an attribute that has been read by the parser.
5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The default handling is to convert the attribute into an
5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * DOM subtree and past it in a new xmlAttr element added to
5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the element.
5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*attributeSAXFunc) (void *ctx,
5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *name,
5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *value);
5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * referenceSAXFunc:
5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @name:  The entity name
5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Called when an entity reference is detected.
5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*referenceSAXFunc) (void *ctx,
5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *name);
5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * charactersSAXFunc:
5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ch:  a xmlChar string
5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @len: the number of xmlChar
5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Receiving some chars from the parser.
5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*charactersSAXFunc) (void *ctx,
5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *ch,
5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				int len);
5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ignorableWhitespaceSAXFunc:
5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ch:  a xmlChar string
5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @len: the number of xmlChar
5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Receiving some ignorable whitespaces from the parser.
5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * UNUSED: by default the DOM building will use characters.
5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*ignorableWhitespaceSAXFunc) (void *ctx,
5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *ch,
5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				int len);
5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * processingInstructionSAXFunc:
5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @target:  the target name
5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @data: the PI data's
5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * A processing instruction has been parsed.
5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*processingInstructionSAXFunc) (void *ctx,
5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *target,
5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *data);
5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * commentSAXFunc:
5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @value:  the comment content
5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * A comment has been parsed.
5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*commentSAXFunc) (void *ctx,
5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *value);
5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * cdataBlockSAXFunc:
5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @value:  The pcdata content
5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @len:  the block length
5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Called when a pcdata block has been parsed.
5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*cdataBlockSAXFunc) (
5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	                        void *ctx,
5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const xmlChar *value,
5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				int len);
5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * warningSAXFunc:
5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  an XML parser context
6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @msg:  the message to display/transmit
6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @...:  extra parameters for the message display
6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Display and format a warning messages, callback.
6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (XMLCDECL *warningSAXFunc) (void *ctx,
6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * errorSAXFunc:
6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  an XML parser context
6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @msg:  the message to display/transmit
6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @...:  extra parameters for the message display
6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Display and format an error messages, callback.
6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (XMLCDECL *errorSAXFunc) (void *ctx,
6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * fatalErrorSAXFunc:
6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  an XML parser context
6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @msg:  the message to display/transmit
6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @...:  extra parameters for the message display
6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Display and format fatal error messages, callback.
6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Note: so far fatalError() SAX callbacks are not used, error()
6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *       get all the callbacks for errors.
6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (XMLCDECL *fatalErrorSAXFunc) (void *ctx,
6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * isStandaloneSAXFunc:
6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Is this document tagged standalone?
6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns 1 if true
6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef int (*isStandaloneSAXFunc) (void *ctx);
6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * hasInternalSubsetSAXFunc:
6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Does this document has an internal subset.
6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns 1 if true
6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef int (*hasInternalSubsetSAXFunc) (void *ctx);
6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * hasExternalSubsetSAXFunc:
6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Does this document has an external subset?
6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns 1 if true
6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef int (*hasExternalSubsetSAXFunc) (void *ctx);
6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/************************************************************************
6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *									*
6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *			The SAX version 2 API extensions		*
6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *									*
6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ************************************************************************/
6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XML_SAX2_MAGIC:
6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Special constant found in SAX2 blocks initialized fields
6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XML_SAX2_MAGIC 0xDEEDBEAF
6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * startElementNsSAX2Func:
6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @localname:  the local name of the element
6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @prefix:  the element namespace prefix if available
6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @URI:  the element namespace name if available
6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @nb_namespaces:  number of namespace definitions on that node
6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @namespaces:  pointer to the array of prefix/URI pairs namespace definitions
6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @nb_attributes:  the number of attributes on that node
6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @nb_defaulted:  the number of defaulted attributes. The defaulted
6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *                  ones are at the end of the array
6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @attributes:  pointer to the array of (localname/prefix/URI/value/end)
6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *               attribute values.
6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * SAX2 callback when an element start has been detected by the parser.
6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * It provides the namespace informations for the element, as well as
6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the new namespace declarations on the element.
6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*startElementNsSAX2Func) (void *ctx,
6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					const xmlChar *localname,
6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					const xmlChar *prefix,
6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					const xmlChar *URI,
6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					int nb_namespaces,
6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					const xmlChar **namespaces,
6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					int nb_attributes,
6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					int nb_defaulted,
6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					const xmlChar **attributes);
6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * endElementNsSAX2Func:
7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctx:  the user data (XML parser context)
7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @localname:  the local name of the element
7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @prefix:  the element namespace prefix if available
7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @URI:  the element namespace name if available
7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * SAX2 callback when an element end has been detected by the parser.
7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * It provides the namespace informations for the element.
7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*endElementNsSAX2Func)   (void *ctx,
7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					const xmlChar *localname,
7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					const xmlChar *prefix,
7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					const xmlChar *URI);
7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xmlSAXHandler {
7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    internalSubsetSAXFunc internalSubset;
7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    isStandaloneSAXFunc isStandalone;
7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    hasInternalSubsetSAXFunc hasInternalSubset;
7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    hasExternalSubsetSAXFunc hasExternalSubset;
7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    resolveEntitySAXFunc resolveEntity;
7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    getEntitySAXFunc getEntity;
7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    entityDeclSAXFunc entityDecl;
7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    notationDeclSAXFunc notationDecl;
7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    attributeDeclSAXFunc attributeDecl;
7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    elementDeclSAXFunc elementDecl;
7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    unparsedEntityDeclSAXFunc unparsedEntityDecl;
7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    setDocumentLocatorSAXFunc setDocumentLocator;
7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    startDocumentSAXFunc startDocument;
7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    endDocumentSAXFunc endDocument;
7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    startElementSAXFunc startElement;
7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    endElementSAXFunc endElement;
7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    referenceSAXFunc reference;
7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    charactersSAXFunc characters;
7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ignorableWhitespaceSAXFunc ignorableWhitespace;
7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    processingInstructionSAXFunc processingInstruction;
7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    commentSAXFunc comment;
7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    warningSAXFunc warning;
7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    errorSAXFunc error;
7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fatalErrorSAXFunc fatalError; /* unused error() get all the errors */
7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    getParameterEntitySAXFunc getParameterEntity;
7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    cdataBlockSAXFunc cdataBlock;
7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    externalSubsetSAXFunc externalSubset;
7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    unsigned int initialized;
7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* The following fields are extensions available only on version 2 */
7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void *_private;
7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    startElementNsSAX2Func startElementNs;
7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    endElementNsSAX2Func endElementNs;
7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlStructuredErrorFunc serror;
7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * SAX Version 1
7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xmlSAXHandlerV1 xmlSAXHandlerV1;
7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xmlSAXHandlerV1 *xmlSAXHandlerV1Ptr;
7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xmlSAXHandlerV1 {
7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    internalSubsetSAXFunc internalSubset;
7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    isStandaloneSAXFunc isStandalone;
7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    hasInternalSubsetSAXFunc hasInternalSubset;
7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    hasExternalSubsetSAXFunc hasExternalSubset;
7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    resolveEntitySAXFunc resolveEntity;
7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    getEntitySAXFunc getEntity;
7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    entityDeclSAXFunc entityDecl;
7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    notationDeclSAXFunc notationDecl;
7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    attributeDeclSAXFunc attributeDecl;
7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    elementDeclSAXFunc elementDecl;
7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    unparsedEntityDeclSAXFunc unparsedEntityDecl;
7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    setDocumentLocatorSAXFunc setDocumentLocator;
7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    startDocumentSAXFunc startDocument;
7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    endDocumentSAXFunc endDocument;
7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    startElementSAXFunc startElement;
7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    endElementSAXFunc endElement;
7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    referenceSAXFunc reference;
7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    charactersSAXFunc characters;
7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ignorableWhitespaceSAXFunc ignorableWhitespace;
7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    processingInstructionSAXFunc processingInstruction;
7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    commentSAXFunc comment;
7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    warningSAXFunc warning;
7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    errorSAXFunc error;
7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fatalErrorSAXFunc fatalError; /* unused error() get all the errors */
7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    getParameterEntitySAXFunc getParameterEntity;
7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    cdataBlockSAXFunc cdataBlock;
7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    externalSubsetSAXFunc externalSubset;
7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    unsigned int initialized;
7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xmlExternalEntityLoader:
7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @URL: The System ID of the resource requested
7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ID: The Public ID of the resource requested
7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @context: the XML parser context
7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * External entity loaders types.
7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns the entity input parser.
7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xmlParserInputPtr (*xmlExternalEntityLoader) (const char *URL,
8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *ID,
8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 xmlParserCtxtPtr context);
8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus
8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/encoding.h>
8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/xmlIO.h>
8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/globals.h>
8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus
8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" {
8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Init/Cleanup
8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN void XMLCALL
8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlInitParser		(void);
8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN void XMLCALL
8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlCleanupParser	(void);
8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Input functions
8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlParserInputRead	(xmlParserInputPtr in,
8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int len);
8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlParserInputGrow	(xmlParserInputPtr in,
8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int len);
8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Basic parsing Interfaces
8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef LIBXML_SAX1_ENABLED
8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlParseDoc		(const xmlChar *cur);
8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlParseFile		(const char *filename);
8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlParseMemory		(const char *buffer,
8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int size);
8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* LIBXML_SAX1_ENABLED */
8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlSubstituteEntitiesDefault(int val);
8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlKeepBlanksDefault	(int val);
8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN void XMLCALL
8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlStopParser		(xmlParserCtxtPtr ctxt);
8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlPedanticParserDefault(int val);
8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlLineNumbersDefault	(int val);
8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef LIBXML_SAX1_ENABLED
8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Recovery mode
8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlRecoverDoc		(const xmlChar *cur);
8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlRecoverMemory	(const char *buffer,
8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int size);
8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlRecoverFile		(const char *filename);
8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* LIBXML_SAX1_ENABLED */
8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Less common routines and SAX interfaces
8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlParseDocument	(xmlParserCtxtPtr ctxt);
8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlParseExtParsedEnt	(xmlParserCtxtPtr ctxt);
8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef LIBXML_SAX1_ENABLED
8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlSAXUserParseFile	(xmlSAXHandlerPtr sax,
8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 void *user_data,
8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *filename);
8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlSAXUserParseMemory	(xmlSAXHandlerPtr sax,
8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 void *user_data,
8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *buffer,
8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int size);
8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlSAXParseDoc		(xmlSAXHandlerPtr sax,
8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const xmlChar *cur,
8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int recovery);
8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlSAXParseMemory	(xmlSAXHandlerPtr sax,
8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *buffer,
8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   	 int size,
8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int recovery);
8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlSAXParseMemoryWithData (xmlSAXHandlerPtr sax,
8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *buffer,
8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   	 int size,
9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int recovery,
9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 void *data);
9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlSAXParseFile		(xmlSAXHandlerPtr sax,
9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *filename,
9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int recovery);
9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlSAXParseFileWithData	(xmlSAXHandlerPtr sax,
9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *filename,
9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int recovery,
9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 void *data);
9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlSAXParseEntity	(xmlSAXHandlerPtr sax,
9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *filename);
9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlParseEntity		(const char *filename);
9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* LIBXML_SAX1_ENABLED */
9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef LIBXML_VALID_ENABLED
9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDtdPtr XMLCALL
9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlSAXParseDTD		(xmlSAXHandlerPtr sax,
9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const xmlChar *ExternalID,
9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const xmlChar *SystemID);
9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDtdPtr XMLCALL
9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlParseDTD		(const xmlChar *ExternalID,
9255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const xmlChar *SystemID);
9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDtdPtr XMLCALL
9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlIOParseDTD		(xmlSAXHandlerPtr sax,
9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 xmlParserInputBufferPtr input,
9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 xmlCharEncoding enc);
9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* LIBXML_VALID_ENABLE */
9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef LIBXML_SAX1_ENABLED
9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlParseBalancedChunkMemory(xmlDocPtr doc,
9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 xmlSAXHandlerPtr sax,
9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 void *user_data,
9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int depth,
9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const xmlChar *string,
9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 xmlNodePtr *lst);
9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* LIBXML_SAX1_ENABLED */
9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlParserErrors XMLCALL
9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlParseInNodeContext	(xmlNodePtr node,
9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *data,
9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int datalen,
9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int options,
9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 xmlNodePtr *lst);
9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef LIBXML_SAX1_ENABLED
9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlParseBalancedChunkMemoryRecover(xmlDocPtr doc,
9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     xmlSAXHandlerPtr sax,
9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     void *user_data,
9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int depth,
9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     const xmlChar *string,
9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     xmlNodePtr *lst,
9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     int recover);
9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlParseExternalEntity	(xmlDocPtr doc,
9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 xmlSAXHandlerPtr sax,
9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 void *user_data,
9595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int depth,
9605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const xmlChar *URL,
9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const xmlChar *ID,
9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 xmlNodePtr *lst);
9635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* LIBXML_SAX1_ENABLED */
9645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlParseCtxtExternalEntity(xmlParserCtxtPtr ctx,
9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const xmlChar *URL,
9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const xmlChar *ID,
9685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 xmlNodePtr *lst);
9695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
9715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Parser contexts handling.
9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlParserCtxtPtr XMLCALL
9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlNewParserCtxt	(void);
9755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlInitParserCtxt	(xmlParserCtxtPtr ctxt);
9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN void XMLCALL
9785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlClearParserCtxt	(xmlParserCtxtPtr ctxt);
9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN void XMLCALL
9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlFreeParserCtxt	(xmlParserCtxtPtr ctxt);
9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef LIBXML_SAX1_ENABLED
9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN void XMLCALL
9835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlSetupParserForBuffer	(xmlParserCtxtPtr ctxt,
9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const xmlChar* buffer,
9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *filename);
9865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* LIBXML_SAX1_ENABLED */
9875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlParserCtxtPtr XMLCALL
9885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlCreateDocParserCtxt	(const xmlChar *cur);
9895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef LIBXML_LEGACY_ENABLED
9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Reading/setting optional parsing features.
9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
9945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
9955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlGetFeaturesList	(int *len,
9965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char **result);
9975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlGetFeature		(xmlParserCtxtPtr ctxt,
9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *name,
10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 void *result);
10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlSetFeature		(xmlParserCtxtPtr ctxt,
10035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *name,
10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 void *value);
10055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* LIBXML_LEGACY_ENABLED */
10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef LIBXML_PUSH_ENABLED
10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Interfaces for the Push mode.
10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
10115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlParserCtxtPtr XMLCALL
10125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax,
10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 void *user_data,
10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *chunk,
10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int size,
10165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *filename);
10175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
10185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlParseChunk		(xmlParserCtxtPtr ctxt,
10195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *chunk,
10205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int size,
10215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int terminate);
10225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* LIBXML_PUSH_ENABLED */
10235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
10255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Special I/O mode.
10265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlParserCtxtPtr XMLCALL
10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlCreateIOParserCtxt	(xmlSAXHandlerPtr sax,
10305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 void *user_data,
10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 xmlInputReadCallback   ioread,
10325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 xmlInputCloseCallback  ioclose,
10335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 void *ioctx,
10345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 xmlCharEncoding enc);
10355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlParserInputPtr XMLCALL
10375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlNewIOInputStream	(xmlParserCtxtPtr ctxt,
10385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 xmlParserInputBufferPtr input,
10395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 xmlCharEncoding enc);
10405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
10425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Node infos.
10435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
10445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN const xmlParserNodeInfo* XMLCALL
10455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlParserFindNodeInfo	(const xmlParserCtxtPtr ctxt,
10465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				         const xmlNodePtr node);
10475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN void XMLCALL
10485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlInitNodeInfoSeq	(xmlParserNodeInfoSeqPtr seq);
10495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN void XMLCALL
10505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlClearNodeInfoSeq	(xmlParserNodeInfoSeqPtr seq);
10515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN unsigned long XMLCALL
10525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlParserFindNodeInfoIndex(const xmlParserNodeInfoSeqPtr seq,
10535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                         const xmlNodePtr node);
10545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN void XMLCALL
10555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlParserAddNodeInfo	(xmlParserCtxtPtr ctxt,
10565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const xmlParserNodeInfoPtr info);
10575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
10595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * External entities handling actually implemented in xmlIO.
10605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN void XMLCALL
10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlSetExternalEntityLoader(xmlExternalEntityLoader f);
10645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlExternalEntityLoader XMLCALL
10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlGetExternalEntityLoader(void);
10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlParserInputPtr XMLCALL
10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlLoadExternalEntity	(const char *URL,
10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *ID,
10695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 xmlParserCtxtPtr ctxt);
10705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Index lookup, actually implemented in the encoding module
10735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
10745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN long XMLCALL
10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlByteConsumed		(xmlParserCtxtPtr ctxt);
10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * New set of simpler/more flexible APIs
10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
10805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xmlParserOption:
10825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
10835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This is the set of XML parser options that can be passed down
10845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * to the xmlReadDoc() and similar calls.
10855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
10865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum {
10875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_RECOVER	= 1<<0,	/* recover on errors */
10885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_NOENT	= 1<<1,	/* substitute entities */
10895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_DTDLOAD	= 1<<2,	/* load the external subset */
10905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_DTDATTR	= 1<<3,	/* default DTD attributes */
10915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_DTDVALID	= 1<<4,	/* validate with the DTD */
10925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_NOERROR	= 1<<5,	/* suppress error reports */
10935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_NOWARNING	= 1<<6,	/* suppress warning reports */
10945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_PEDANTIC	= 1<<7,	/* pedantic error reporting */
10955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_NOBLANKS	= 1<<8,	/* remove blank nodes */
10965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_SAX1	= 1<<9,	/* use the SAX1 interface internally */
10975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_XINCLUDE	= 1<<10,/* Implement XInclude substitition  */
10985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_NONET	= 1<<11,/* Forbid network access */
10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_NODICT	= 1<<12,/* Do not reuse the context dictionnary */
11005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_NSCLEAN	= 1<<13,/* remove redundant namespaces declarations */
11015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_NOCDATA	= 1<<14,/* merge CDATA as text nodes */
11025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_NOXINCNODE= 1<<15,/* do not generate XINCLUDE START/END nodes */
11035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_COMPACT   = 1<<16,/* compact small text nodes; no modification of
11045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   the tree allowed afterwards (will possibly
11055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				   crash if you try to modify the tree) */
11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_OLD10	= 1<<17,/* parse using XML-1.0 before update 5 */
11075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_NOBASEFIX = 1<<18,/* do not fixup XINCLUDE xml:base uris */
11085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_HUGE      = 1<<19, /* relax any hardcoded limit from the parser */
11095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_PARSE_OLDSAX    = 1<<20 /* parse using SAX2 interface from before 2.7.0 */
11105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} xmlParserOption;
11115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN void XMLCALL
11135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlCtxtReset		(xmlParserCtxtPtr ctxt);
11145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
11155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlCtxtResetPush	(xmlParserCtxtPtr ctxt,
11165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *chunk,
11175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int size,
11185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *filename,
11195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *encoding);
11205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
11215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlCtxtUseOptions	(xmlParserCtxtPtr ctxt,
11225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int options);
11235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
11245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlReadDoc		(const xmlChar *cur,
11255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *URL,
11265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *encoding,
11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int options);
11285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlReadFile		(const char *URL,
11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *encoding,
11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int options);
11325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
11335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlReadMemory		(const char *buffer,
11345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int size,
11355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *URL,
11365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *encoding,
11375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int options);
11385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
11395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlReadFd		(int fd,
11405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *URL,
11415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *encoding,
11425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int options);
11435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
11445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlReadIO		(xmlInputReadCallback ioread,
11455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 xmlInputCloseCallback ioclose,
11465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 void *ioctx,
11475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *URL,
11485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *encoding,
11495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int options);
11505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
11515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlCtxtReadDoc		(xmlParserCtxtPtr ctxt,
11525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const xmlChar *cur,
11535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *URL,
11545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *encoding,
11555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int options);
11565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
11575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlCtxtReadFile		(xmlParserCtxtPtr ctxt,
11585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *filename,
11595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *encoding,
11605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int options);
11615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
11625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlCtxtReadMemory		(xmlParserCtxtPtr ctxt,
11635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *buffer,
11645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int size,
11655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *URL,
11665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *encoding,
11675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int options);
11685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
11695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlCtxtReadFd		(xmlParserCtxtPtr ctxt,
11705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int fd,
11715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *URL,
11725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *encoding,
11735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int options);
11745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN xmlDocPtr XMLCALL
11755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlCtxtReadIO		(xmlParserCtxtPtr ctxt,
11765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 xmlInputReadCallback ioread,
11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 xmlInputCloseCallback ioclose,
11785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 void *ioctx,
11795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *URL,
11805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 const char *encoding,
11815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					 int options);
11825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
11845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Library wide options
11855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
11865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
11875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xmlFeature:
11885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
11895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Used to examine the existance of features that can be enabled
11905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * or disabled at compile-time.
11915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * They used to be called XML_FEATURE_xxx but this clashed with Expat
11925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
11935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum {
11945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_THREAD = 1,
11955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_TREE = 2,
11965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_OUTPUT = 3,
11975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_PUSH = 4,
11985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_READER = 5,
11995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_PATTERN = 6,
12005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_WRITER = 7,
12015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_SAX1 = 8,
12025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_FTP = 9,
12035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_HTTP = 10,
12045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_VALID = 11,
12055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_HTML = 12,
12065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_LEGACY = 13,
12075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_C14N = 14,
12085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_CATALOG = 15,
12095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_XPATH = 16,
12105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_XPTR = 17,
12115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_XINCLUDE = 18,
12125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_ICONV = 19,
12135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_ISO8859X = 20,
12145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_UNICODE = 21,
12155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_REGEXP = 22,
12165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_AUTOMATA = 23,
12175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_EXPR = 24,
12185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_SCHEMAS = 25,
12195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_SCHEMATRON = 26,
12205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_MODULES = 27,
12215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_DEBUG = 28,
12225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_DEBUG_MEM = 29,
12235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_DEBUG_RUN = 30,
12245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_ZLIB = 31,
12255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_ICU = 32,
12265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XML_WITH_NONE = 99999 /* just to be sure of allocation size */
12275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} xmlFeature;
12285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XMLPUBFUN int XMLCALL
12305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xmlHasFeature		(xmlFeature feature);
12315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus
12335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
12345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
12355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* __XML_PARSER_H__ */
12365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1237