123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979 |
- (*
- * Summary: the core parser module
- * Description: Interfaces, constants and types related to the XML parser
- *
- * Copy: See Copyright for the status of this software.
- *
- * Author: Daniel Veillard
- *)
- {$IFDEF POINTER}
- xmlParserInputPtr = ^xmlParserInput;
- xmlParserInputPtrPtr = ^xmlParserInputPtr;
- xmlParserNodeInfoPtr = ^xmlParserNodeInfo;
- xmlParserNodeInfoSeqPtr = ^xmlParserNodeInfoSeq;
- xmlParserCtxtPtr = ^xmlParserCtxt;
- xmlSAXLocatorPtr = ^xmlSAXLocator;
- xmlSAXHandlerPtr = ^xmlSAXHandler;
- xmlSAXHandlerV1Ptr = ^xmlSAXHandlerV1;
- {$ENDIF}
- {$IFDEF CONST}
- (**
- * XML_DEFAULT_VERSION:
- *
- * The default version of XML used: 1.0
- *)
- XML_DEFAULT_VERSION = '1.0';
- {$ENDIF}
- {$IFDEF TYPE}
- (**
- * xmlParserInput:
- *
- * An xmlParserInput is an input flow for the XML processor.
- * Each entity parsed is associated an xmlParserInput (except the
- * few predefined ones). This is the case both for internal entities
- * - in which case the flow is already completely in memory - or
- * external entities - in which case we use the buf structure for
- * progressive reading and I18N conversions to the internal UTF-8 format.
- *)
- (**
- * xmlParserInputDeallocate:
- * @str: the string to deallocate
- *
- * Callback for freeing some parser input allocations.
- *)
- xmlParserInputDeallocate = procedure(str: xmlCharPtr); EXTDECL;
- xmlParserInput = record
- (* Input buffer *)
- buf : xmlParserInputBufferPtr; (* UTF-8 encoded buffer *)
- filename : pchar; (* The file analyzed, if any *)
- directory : pchar; (* the directory/base of the file *)
- base : xmlCharPtr; (* Base of the array to parse *)
- cur : xmlCharPtr; (* Current char being parsed *)
- _end : xmlCharPtr; (* end of the array to parse *)
- length : cint; (* length if known *)
- line : cint; (* Current line *)
- col : cint; (* Current column *)
- (*
- * NOTE: consumed is only tested for equality in the parser code,
- * so even if there is an overflow this should not give troubles
- * for parsing very large instances.
- *)
- consumed : culong; (* How many xmlChars already consumed *)
- free : xmlParserInputDeallocate; (* function to deallocate the base *)
- encoding : xmlCharPtr; (* the encoding string for entity *)
- version : xmlCharPtr; (* the version string for entity *)
- standalone : cint; (* Was that entity marked standalone *)
- id : cint; (* an unique identifier for the entity *)
- end;
- (**
- * xmlParserNodeInfo:
- *
- * The parser can be asked to collect Node informations, i.e. at what
- * place in the file they were detected.
- * NOTE: This is off by default and not very well tested.
- *)
- xmlParserNodeInfo = record
- node : xmlNodePtr;
- (* Position & line # that text that created the node begins & ends on *)
- begin_pos : culong;
- begin_line : culong;
- end_pos : culong;
- end_line : culong;
- end;
- xmlParserNodeInfoSeq = record
- maximum : culong;
- length : culong;
- buffer : xmlParserNodeInfoPtr;
- end;
- (**
- * xmlParserInputState:
- *
- * The parser is now working also as a state based parser.
- * The recursive one use the state info for entities processing.
- *)
- xmlParserInputState = (
- XML_PARSER_EOF = -1, (* nothing is to be parsed *)
- XML_PARSER_START = 0, (* nothing has been parsed *)
- XML_PARSER_MISC, (* Misc* before int subset *)
- XML_PARSER_PI, (* Within a processing instruction *)
- XML_PARSER_DTD, (* within some DTD content *)
- XML_PARSER_PROLOG, (* Misc* after internal subset *)
- XML_PARSER_COMMENT, (* within a comment *)
- XML_PARSER_START_TAG, (* within a start tag *)
- XML_PARSER_CONTENT, (* within the content *)
- XML_PARSER_CDATA_SECTION, (* within a CDATA section *)
- XML_PARSER_END_TAG, (* within a closing tag *)
- XML_PARSER_ENTITY_DECL, (* within an entity declaration *)
- XML_PARSER_ENTITY_VALUE, (* within an entity value in a decl *)
- XML_PARSER_ATTRIBUTE_VALUE, (* within an attribute value *)
- XML_PARSER_SYSTEM_LITERAL, (* within a SYSTEM value *)
- XML_PARSER_EPILOG, (* the Misc* after the last end tag *)
- XML_PARSER_IGNORE, (* within an IGNORED section *)
- XML_PARSER_PUBLIC_LITERAL (* within a PUBLIC value *)
- );
- {$ENDIF}
- {$IFDEF CONST}
- (**
- * XML_DETECT_IDS:
- *
- * Bit in the loadsubset context field to tell to do ID/REFs lookups.
- * Use it to initialize xmlLoadExtDtdDefaultValue.
- *)
- XML_DETECT_IDS = 2;
- (**
- * XML_COMPLETE_ATTRS:
- *
- * Bit in the loadsubset context field to tell to do complete the
- * elements attributes lists with the ones defaulted from the DTDs.
- * Use it to initialize xmlLoadExtDtdDefaultValue.
- *)
- XML_COMPLETE_ATTRS = 4;
- (**
- * XML_SKIP_IDS:
- *
- * Bit in the loadsubset context field to tell to not do ID/REFs registration.
- * Used to initialize xmlLoadExtDtdDefaultValue in some special cases.
- *)
- XML_SKIP_IDS = 8;
- {$ENDIF}
- {$IFDEF TYPE}
- (**
- * xmlParserMode:
- *
- * A parser can operate in various modes
- *)
- xmlParserMode = (
- XML_PARSE_UNKNOWN = 0,
- XML_PARSE_DOM = 1,
- XML_PARSE_SAX = 2,
- XML_PARSE_PUSH_DOM = 3,
- XML_PARSE_PUSH_SAX = 4,
- XML_PARSE_READER = 5
- );
- (**
- * xmlParserCtxt:
- *
- * The parser context.
- * NOTE This doesn't completely define the parser state, the (current ?)
- * design of the parser uses recursive function calls since this allow
- * and easy mapping from the production rules of the specification
- * to the actual code. The drawback is that the actual function call
- * also reflect the parser state. However most of the parsing routines
- * takes as the only argument the parser context pointer, so migrating
- * to a state based parser for progressive parsing shouldn't be too hard.
- *)
- xmlParserCtxt = record
- sax : xmlSAXHandlerPtr; (* The SAX handler *)
- userData : pointer; (* For SAX interface only, used by DOM build *)
- myDoc : xmlDocPtr; (* the document being built *)
- wellFormed : cint; (* is the document well formed *)
- replaceEntities : cint; (* shall we replace entities ? *)
- version : xmlCharPtr; (* the XML version string *)
- encoding : xmlCharPtr; (* the declared encoding, if any *)
- standalone : cint; (* standalone document *)
- html : cint; (* an HTML(1)/Docbook(2) document *)
- (* Input stream stack *)
- input : xmlParserInputPtr; (* Current input stream *)
- inputNr : cint; (* Number of current input streams *)
- inputMax : cint; (* Max number of input streams *)
- inputTab : xmlParserInputPtrPtr; (* stack of inputs *)
- (* Node analysis stack only used for DOM building *)
- node : xmlNodePtr; (* Current parsed Node *)
- nodeNr : cint; (* Depth of the parsing stack *)
- nodeMax : cint; (* Max depth of the parsing stack *)
- nodeTab : xmlNodePtrPtr; (* array of nodes *)
- record_info : cint; (* Whether node info should be kept *)
- node_seq : xmlParserNodeInfoSeq; (* info about each node parsed *)
- errNo : cint; (* error code *)
- hasExternalSubset : cint; (* reference and external subset *)
- hasPErefs : cint; (* the internal subset has PE refs *)
- external : cint; (* are we parsing an external entity *)
- valid : cint; (* is the document valid *)
- validate : cint; (* shall we try to validate ? *)
- vctxt : xmlValidCtxt; (* The validity context *)
- instate : xmlParserInputState; (* current type of input *)
- token : cint; (* next char look-ahead *)
- directory : pchar; (* the data directory *)
- (* Node name stack *)
- name : xmlCharPtr; (* Current parsed Node *)
- nameNr : cint; (* Depth of the parsing stack *)
- nameMax : cint; (* Max depth of the parsing stack *)
- nameTab : xmlCharPtrPtr; (* array of nodes *)
- nbChars : culong; (* number of xmlChar processed *)
- checkIndex : culong; (* used by progressive parsing lookup *)
- keepBlanks : cint; (* ugly but ... *)
- disableSAX : cint; (* SAX callbacks are disabled *)
- inSubset : cint; (* Parsing is in int 1/ext 2 subset *)
- intSubName : xmlCharPtr; (* name of subset *)
- extSubURI : xmlCharPtr; (* URI of external subset *)
- extSubSystem : xmlCharPtr; (* SYSTEM ID of external subset *)
- (* xml:space values *)
- space : pcint; (* Should the parser preserve spaces *)
- spaceNr : cint; (* Depth of the parsing stack *)
- spaceMax : cint; (* Max depth of the parsing stack *)
- spaceTab : pcint; (* array of space infos *)
- depth : cint; (* to prevent entity substitution loops *)
- entity : xmlParserInputPtr; (* used to check entities boundaries *)
- charset : cint; (* encoding of the in-memory content
- actually an xmlCharEncoding *)
- nodelen : cint; (* Those two fields are there to *)
- nodemem : cint; (* Speed up large node parsing *)
- pedantic : cint; (* signal pedantic warnings *)
- _private : pointer; (* For user data, libxml won't touch it *)
- loadsubset : cint; (* should the external subset be loaded *)
- linenumbers : cint; (* set line number in element content *)
- catalogs : pointer; (* document's own catalog *)
- recovery : cint; (* run in recovery mode *)
- progressive : cint; (* is this a progressive parsing *)
- dict : xmlDictPtr; (* dictionnary for the parser *)
- atts : xmlCharPtrPtr; (* array for the attributes callbacks *)
- maxatts : cint; (* the size of the array *)
- docdict : cint; (* use strings from dict to build tree *)
- (*
- * pre-interned strings
- *)
- str_xml : xmlCharPtr;
- str_xmlns : xmlCharPtr;
- str_xml_ns : xmlCharPtr;
- (*
- * Everything below is used only by the new SAX mode
- *)
- sax2 : cint; (* operating in the new SAX mode *)
- nsNr : cint; (* the number of inherited namespaces *)
- nsMax : cint; (* the size of the arrays *)
- nsTab : xmlCharPtrPtr; (* the array of prefix/namespace name *)
- attallocs : pcint; (* which attribute were allocated *)
- pushTab : ppointer; (* array of data for push *)
- attsDefault : xmlHashTablePtr; (* defaulted attributes if any *)
- attsSpecial : xmlHashTablePtr; (* non-CDATA attributes if any *)
- nsWellFormed : cint; (* is the document XML Nanespace okay *)
- options : cint; (* Extra options *)
- (*
- * Those fields are needed only for treaming parsing so far
- *)
- dictNames : cint; (* Use dictionary names for the tree *)
- freeElemsNr : cint; (* number of freed element nodes *)
- freeElems : xmlNodePtr; (* List of freed element nodes *)
- freeAttrsNr : cint; (* number of freed attributes nodes *)
- freeAttrs : xmlAttrPtr; (* List of freed attributes nodes *)
- (*
- * the complete error informations for the last error.
- *)
- lastError : xmlError;
- parseMode : xmlParserMode; (* the parser mode *)
- end;
- (**
- * xmlSAXLocator:
- *
- * A SAX Locator.
- *)
- getPublicIdFunc = function(ctx: pointer): xmlCharPtr; EXTDECL;
- getSystemIdFunc = function(ctx: pointer): xmlCharPtr; EXTDECL;
- getLineNumberFunc = function(ctx: pointer): cint; EXTDECL;
- getColumnNumberFunc = function(ctx: pointer): cint; EXTDECL;
- xmlSAXLocator = record
- getPublicId : getPublicIdFunc;
- getSystemId : getSystemIdFunc;
- getLineNumber : getLineNumberFunc;
- getColumnNumber : getColumnNumberFunc;
- end;
- (**
- * xmlSAXHandler:
- *
- * A SAX handler is bunch of callbacks called by the parser when processing
- * of the input generate data or structure informations.
- *)
- (**
- * resolveEntitySAXFunc:
- * @ctx: the user data (XML parser context)
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- *
- * Callback:
- * The entity loader, to control the loading of external entities,
- * the application can either:
- * - override this resolveEntity() callback in the SAX block
- * - or better use the xmlSetExternalEntityLoader() function to
- * set up it's own entity resolution routine
- *
- * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
- *)
- resolveEntitySAXFunc = function(ctx: pointer; publicID, systemID: xmlCharPtr): xmlParserInputPtr; EXTDECL;
- (**
- * internalSubsetSAXFunc:
- * @ctx: the user data (XML parser context)
- * @name: the root element name
- * @ExternalID: the external ID
- * @SystemID: the SYSTEM ID (e.g. filename or URL)
- *
- * Callback on internal subset declaration.
- *)
- internalSubsetSAXFunc = procedure(ctx: pointer; name, ExternalID, SystemID: xmlCharPtr); EXTDECL;
- (**
- * externalSubsetSAXFunc:
- * @ctx: the user data (XML parser context)
- * @name: the root element name
- * @ExternalID: the external ID
- * @SystemID: the SYSTEM ID (e.g. filename or URL)
- *
- * Callback on external subset declaration.
- *)
- externalSubsetSAXFunc = procedure(ctx: pointer; name, ExternalID, SystemID: xmlCharPtr); EXTDECL;
- (**
- * getEntitySAXFunc:
- * @ctx: the user data (XML parser context)
- * @name: The entity name
- *
- * Get an entity by name.
- *
- * Returns the xmlEntityPtr if found.
- *)
- getEntitySAXFunc = function(ctx: pointer; name: xmlCharPtr): xmlEntityPtr; EXTDECL;
- (**
- * getParameterEntitySAXFunc:
- * @ctx: the user data (XML parser context)
- * @name: The entity name
- *
- * Get a parameter entity by name.
- *
- * Returns the xmlEntityPtr if found.
- *)
- getParameterEntitySAXFunc = function(ctx: pointer; name: xmlCharPtr): xmlEntityPtr; EXTDECL;
- (**
- * entityDeclSAXFunc:
- * @ctx: the user data (XML parser context)
- * @name: the entity name
- * @type: the entity type
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- * @content: the entity value (without processing).
- *
- * An entity definition has been parsed.
- *)
- entityDeclSAXFunc = procedure(ctx: pointer; name: xmlCharPtr; _type: cint; publicId, systemId, content: xmlCharPtr); EXTDECL;
- (**
- * notationDeclSAXFunc:
- * @ctx: the user data (XML parser context)
- * @name: The name of the notation
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- *
- * What to do when a notation declaration has been parsed.
- *)
- notationDeclSAXFunc = procedure(ctx: pointer; name, publicId, systemId: xmlCharPtr); EXTDECL;
- (**
- * attributeDeclSAXFunc:
- * @ctx: the user data (XML parser context)
- * @elem: the name of the element
- * @fullname: the attribute name
- * @type: the attribute type
- * @def: the type of default value
- * @defaultValue: the attribute default value
- * @tree: the tree of enumerated value set
- *
- * An attribute definition has been parsed.
- *)
- attributeDeclSAXFunc = procedure(ctx: pointer; elem, fullname: xmlCharPtr; _type, def: cint; defaultValue: xmlCharPtr; tree: xmlEnumerationPtr); EXTDECL;
- (**
- * elementDeclSAXFunc:
- * @ctx: the user data (XML parser context)
- * @name: the element name
- * @type: the element type
- * @content: the element value tree
- *
- * An element definition has been parsed.
- *)
- elementDeclSAXFunc = procedure(ctx: pointer; name: xmlCharPtr; _type: cint; content: xmlElementContentPtr); EXTDECL;
- (**
- * unparsedEntityDeclSAXFunc:
- * @ctx: the user data (XML parser context)
- * @name: The name of the entity
- * @publicId: The public ID of the entity
- * @systemId: The system ID of the entity
- * @notationName: the name of the notation
- *
- * What to do when an unparsed entity declaration is parsed.
- *)
- unparsedEntityDeclSAXFunc = procedure(ctx: pointer; name, publicId, systemId, notationName: xmlCharPtr); EXTDECL;
- (**
- * setDocumentLocatorSAXFunc:
- * @ctx: the user data (XML parser context)
- * @loc: A SAX Locator
- *
- * Receive the document locator at startup, actually xmlDefaultSAXLocator.
- * Everything is available on the context, so this is useless in our case.
- *)
- setDocumentLocatorSAXFunc = procedure(ctx: pointer; loc: xmlSAXLocatorPtr); EXTDECL;
- (**
- * startDocumentSAXFunc:
- * @ctx: the user data (XML parser context)
- *
- * Called when the document start being processed.
- *)
- startDocumentSAXFunc = procedure(ctx: pointer); EXTDECL;
- (**
- * endDocumentSAXFunc:
- * @ctx: the user data (XML parser context)
- *
- * Called when the document end has been detected.
- *)
- endDocumentSAXFunc = procedure(ctx: pointer); EXTDECL;
- (**
- * startElementSAXFunc:
- * @ctx: the user data (XML parser context)
- * @name: The element name, including namespace prefix
- * @atts: An array of name/value attributes pairs, NULL terminated
- *
- * Called when an opening tag has been processed.
- *)
- startElementSAXFunc = procedure(ctx: pointer; name: xmlCharPtr; atts: xmlCharPtrPtr); EXTDECL;
- (**
- * endElementSAXFunc:
- * @ctx: the user data (XML parser context)
- * @name: The element name
- *
- * Called when the end of an element has been detected.
- *)
- endElementSAXFunc = procedure(ctx: pointer; name: xmlCharPtr); EXTDECL;
- (**
- * attributeSAXFunc:
- * @ctx: the user data (XML parser context)
- * @name: The attribute name, including namespace prefix
- * @value: The attribute value
- *
- * Handle an attribute that has been read by the parser.
- * The default handling is to convert the attribute into an
- * DOM subtree and past it in a new xmlAttr element added to
- * the element.
- *)
- attributeSAXFunc = procedure(ctx: pointer; name, value: xmlCharPtr); EXTDECL;
- (**
- * referenceSAXFunc:
- * @ctx: the user data (XML parser context)
- * @name: The entity name
- *
- * Called when an entity reference is detected.
- *)
- referenceSAXFunc = procedure(ctx: pointer; name: xmlCharPtr); EXTDECL;
- (**
- * charactersSAXFunc:
- * @ctx: the user data (XML parser context)
- * @ch: a xmlChar string
- * @len: the number of xmlChar
- *
- * Receiving some chars from the parser.
- *)
- charactersSAXFunc = procedure(ctx: pointer; ch: xmlCharPtr; len: cint); EXTDECL;
- (**
- * ignorableWhitespaceSAXFunc:
- * @ctx: the user data (XML parser context)
- * @ch: a xmlChar string
- * @len: the number of xmlChar
- *
- * Receiving some ignorable whitespaces from the parser.
- * UNUSED: by default the DOM building will use characters.
- *)
- ignorableWhitespaceSAXFunc = procedure(ctx: pointer; ch: xmlCharPtr; len: cint); EXTDECL;
- (**
- * processingInstructionSAXFunc:
- * @ctx: the user data (XML parser context)
- * @target: the target name
- * @data: the PI data's
- *
- * A processing instruction has been parsed.
- *)
- processingInstructionSAXFunc = procedure(ctx: pointer; target, data: xmlCharPtr); EXTDECL;
- (**
- * commentSAXFunc:
- * @ctx: the user data (XML parser context)
- * @value: the comment content
- *
- * A comment has been parsed.
- *)
- commentSAXFunc = procedure(ctx: pointer; value: xmlCharPtr); EXTDECL;
- (**
- * cdataBlockSAXFunc:
- * @ctx: the user data (XML parser context)
- * @value: The pcdata content
- * @len: the block length
- *
- * Called when a pcdata block has been parsed.
- *)
- cdataBlockSAXFunc = procedure(ctx: pointer; value: xmlCharPtr; len: cint); EXTDECL;
- (**
- * warningSAXFunc:
- * @ctx: an XML parser context
- * @msg: the message to display/transmit
- * @...: extra parameters for the message display
- *
- * Display and format a warning messages, callback.
- *)
- warningSAXFunc = procedure(ctx: pointer; msg: pchar); cdecl; varargs;
- (**
- * errorSAXFunc:
- * @ctx: an XML parser context
- * @msg: the message to display/transmit
- * @...: extra parameters for the message display
- *
- * Display and format an error messages, callback.
- *)
- errorSAXFunc = procedure(ctx: pointer; msg: pchar); cdecl; varargs;
- (**
- * fatalErrorSAXFunc:
- * @ctx: an XML parser context
- * @msg: the message to display/transmit
- * @...: extra parameters for the message display
- *
- * Display and format fatal error messages, callback.
- * Note: so far fatalError() SAX callbacks are not used, error()
- * get all the callbacks for errors.
- *)
- fatalErrorSAXFunc = procedure(ctx: pointer; msg: pchar); cdecl; varargs;
- (**
- * isStandaloneSAXFunc:
- * @ctx: the user data (XML parser context)
- *
- * Is this document tagged standalone?
- *
- * Returns 1 if true
- *)
- isStandaloneSAXFunc = function(ctx: pointer): cint; EXTDECL;
- (**
- * hasInternalSubsetSAXFunc:
- * @ctx: the user data (XML parser context)
- *
- * Does this document has an internal subset.
- *
- * Returns 1 if true
- *)
- hasInternalSubsetSAXFunc = function(ctx: pointer): cint; EXTDECL;
- (**
- * hasExternalSubsetSAXFunc:
- * @ctx: the user data (XML parser context)
- *
- * Does this document has an external subset?
- *
- * Returns 1 if true
- *)
- hasExternalSubsetSAXFunc = function(ctx: pointer): cint; EXTDECL;
- {$ENDIF}
- (************************************************************************
- * *
- * The SAX version 2 API extensions *
- * *
- ************************************************************************)
- (**
- * XML_SAX2_MAGIC:
- *
- * Special constant found in SAX2 blocks initialized fields
- *)
- {$IFDEF CONST}
- XML_SAX2_MAGIC = $DEEDBEAF;
- {$ENDIF}
- {$IFDEF TYPE}
- (**
- * startElementNsSAX2Func:
- * @ctx: the user data (XML parser context)
- * @localname: the local name of the element
- * @prefix: the element namespace prefix if available
- * @URI: the element namespace name if available
- * @nb_namespaces: number of namespace definitions on that node
- * @namespaces: pointer to the array of prefix/URI pairs namespace definitions
- * @nb_attributes: the number of attributes on that node
- * @nb_defaulted: the number of defaulted attributes. The defaulted
- * ones are at the end of the array
- * @attributes: pointer to the array of (localname/prefix/URI/value/end)
- * attribute values.
- *
- * SAX2 callback when an element start has been detected by the parser.
- * It provides the namespace informations for the element, as well as
- * the new namespace declarations on the element.
- *)
- startElementNsSAX2Func = procedure(ctx: pointer; localname, prefix, URI: xmlCharPtr; nb_namespaces: cint;
- namespaces: xmlCharPtrPtr; nb_attributes, nb_defaulted: cint; attributes: xmlCharPtrPtr); EXTDECL;
- (**
- * endElementNsSAX2Func:
- * @ctx: the user data (XML parser context)
- * @localname: the local name of the element
- * @prefix: the element namespace prefix if available
- * @URI: the element namespace name if available
- *
- * SAX2 callback when an element end has been detected by the parser.
- * It provides the namespace informations for the element.
- *)
- endElementNsSAX2Func = procedure(ctx: pointer; localname, prefix, URI: xmlCharPtr); EXTDECL;
- xmlSAXHandler = record
- internalSubset: internalSubsetSAXFunc;
- isStandalone: isStandaloneSAXFunc;
- hasInternalSubset: hasInternalSubsetSAXFunc;
- hasExternalSubset: hasExternalSubsetSAXFunc;
- resolveEntity: resolveEntitySAXFunc;
- getEntity: getEntitySAXFunc;
- entityDecl: entityDeclSAXFunc;
- notationDecl: notationDeclSAXFunc;
- attributeDecl: attributeDeclSAXFunc;
- elementDecl: elementDeclSAXFunc;
- unparsedEntityDecl: unparsedEntityDeclSAXFunc;
- setDocumentLocator: setDocumentLocatorSAXFunc;
- startDocument: startDocumentSAXFunc;
- endDocument: endDocumentSAXFunc;
- startElement: startElementSAXFunc;
- endElement: endElementSAXFunc;
- reference: referenceSAXFunc;
- characters: charactersSAXFunc;
- ignorableWhitespace: ignorableWhitespaceSAXFunc;
- processingInstruction: processingInstructionSAXFunc;
- comment: commentSAXFunc;
- warning: warningSAXFunc;
- error: errorSAXFunc;
- fatalError: fatalErrorSAXFunc; (* unused error() get all the errors *)
- getParameterEntity: getParameterEntitySAXFunc;
- cdataBlock: cdataBlockSAXFunc;
- externalSubset: externalSubsetSAXFunc;
- initialized: cuint;
- (* The following fields are extensions available only on version 2 *)
- _private: pointer;
- startElementNs: startElementNsSAX2Func;
- endElementNs: endElementNsSAX2Func;
- serror: xmlStructuredErrorFunc;
- end;
- (*
- * SAX Version 1
- *)
- xmlSAXHandlerV1 = record
- internalSubset: internalSubsetSAXFunc;
- isStandalone: isStandaloneSAXFunc;
- hasInternalSubset: hasInternalSubsetSAXFunc;
- hasExternalSubset: hasExternalSubsetSAXFunc;
- resolveEntity: resolveEntitySAXFunc;
- getEntity: getEntitySAXFunc;
- entityDecl: entityDeclSAXFunc;
- notationDecl: notationDeclSAXFunc;
- attributeDecl: attributeDeclSAXFunc;
- elementDecl: elementDeclSAXFunc;
- unparsedEntityDecl: unparsedEntityDeclSAXFunc;
- setDocumentLocator: setDocumentLocatorSAXFunc;
- startDocument: startDocumentSAXFunc;
- endDocument: endDocumentSAXFunc;
- startElement: startElementSAXFunc;
- endElement: endElementSAXFunc;
- reference: referenceSAXFunc;
- characters: charactersSAXFunc;
- ignorableWhitespace: ignorableWhitespaceSAXFunc;
- processingInstruction: processingInstructionSAXFunc;
- comment: commentSAXFunc;
- warning: warningSAXFunc;
- error: errorSAXFunc;
- fatalError: fatalErrorSAXFunc; (* unused error() get all the errors *)
- getParameterEntity: getParameterEntitySAXFunc;
- cdataBlock: cdataBlockSAXFunc;
- externalSubset: externalSubsetSAXFunc;
- initialized: cuint;
- end;
- (**
- * xmlExternalEntityLoader:
- * @URL: The System ID of the resource requested
- * @ID: The Public ID of the resource requested
- * @context: the XML parser context
- *
- * External entity loaders types.
- *
- * Returns the entity input parser.
- *)
- xmlExternalEntityLoader = function(URL, ID: pchar; context: xmlParserCtxtPtr): xmlParserInputPtr; EXTDECL;
- (**
- * xmlParserOption:
- *
- * This is the set of XML parser options that can be passed down
- * to the xmlReadDoc() and similar calls.
- *)
- xmlParserOption = type cint;
- {$ENDIF}
- {$IFDEF CONST}
- XML_PARSE_RECOVER = (1 shl 0); (* recover on errors *)
- XML_PARSE_NOENT = (1 shl 1); (* substitute entities *)
- XML_PARSE_DTDLOAD = (1 shl 2); (* load the external subset *)
- XML_PARSE_DTDATTR = (1 shl 3); (* default DTD attributes *)
- XML_PARSE_DTDVALID = (1 shl 4); (* validate with the DTD *)
- XML_PARSE_NOERROR = (1 shl 5); (* suppress error reports *)
- XML_PARSE_NOWARNING = (1 shl 6); (* suppress warning reports *)
- XML_PARSE_PEDANTIC = (1 shl 7); (* pedantic error reporting *)
- XML_PARSE_NOBLANKS = (1 shl 8); (* remove blank nodes *)
- XML_PARSE_SAX1 = (1 shl 9); (* use the SAX1 interface internally *)
- XML_PARSE_XINCLUDE = (1 shl 10);(* Implement XInclude substitition *)
- XML_PARSE_NONET = (1 shl 11);(* Forbid network access *)
- XML_PARSE_NODICT = (1 shl 12);(* Do not reuse the context dictionnary *)
- XML_PARSE_NSCLEAN = (1 shl 13);(* remove redundant namespaces declarations *)
- XML_PARSE_NOCDATA = (1 shl 14);(* merge CDATA as text nodes *)
- XML_PARSE_NOXINCNODE = (1 shl 15);(* do not generate XINCLUDE START/END nodes *)
- XML_PARSE_COMPACT = (1 shl 16); (* compact small text nodes); no modification of
- the tree allowed afterwards (will possibly
- crash if you try to modify the tree) *)
- {$ENDIF}
- {$IFDEF TYPE}
- xmlFeature = (
- XML_WITH_THREAD = 1,
- XML_WITH_TREE = 2,
- XML_WITH_OUTPUT = 3,
- XML_WITH_PUSH = 4,
- XML_WITH_READER = 5,
- XML_WITH_PATTERN = 6,
- XML_WITH_WRITER = 7,
- XML_WITH_SAX1 = 8,
- XML_WITH_FTP = 9,
- XML_WITH_HTTP = 10,
- XML_WITH_VALID = 11,
- XML_WITH_HTML = 12,
- XML_WITH_LEGACY = 13,
- XML_WITH_C14N = 14,
- XML_WITH_CATALOG = 15,
- XML_WITH_XPATH = 16,
- XML_WITH_XPTR = 17,
- XML_WITH_XINCLUDE = 18,
- XML_WITH_ICONV = 19,
- XML_WITH_ISO8859X = 20,
- XML_WITH_UNICODE = 21,
- XML_WITH_REGEXP = 22,
- XML_WITH_AUTOMATA = 23,
- XML_WITH_EXPR = 24,
- XML_WITH_SCHEMAS = 25,
- XML_WITH_SCHEMATRON = 26,
- XML_WITH_MODULES = 27,
- XML_WITH_DEBUG = 28,
- XML_WITH_DEBUG_MEM = 29,
- XML_WITH_DEBUG_RUN = 30,
- XML_WITH_ZLIB = 31,
- XML_WITH_NONE = 99999 (* just to be sure of allocation size *)
- );
- {$ENDIF}
- {$IFDEF FUNCTION}
- (*
- * Init/Cleanup
- *)
- procedure xmlInitParser; EXTDECL; external xml2lib;
- procedure xmlCleanupParser; EXTDECL; external xml2lib;
- (*
- * Input functions
- *)
- function xmlParserInputRead(_in: xmlParserInputPtr; len: cint): cint; EXTDECL; external xml2lib;
- function xmlParserInputGrow(_in: xmlParserInputPtr; len: cint): cint; EXTDECL; external xml2lib;
- (*
- * Basic parsing Interfaces
- *)
- {$IFDEF LIBXML_SAX1_ENABLED}
- function xmlParseDoc(cur: xmlCharPtr): xmlDocPtr; EXTDECL; external xml2lib;
- function xmlParseFile(filename: pchar): xmlDocPtr; EXTDECL; external xml2lib;
- function xmlParseMemory(buffer: pchar; size: cint): xmlDocPtr; EXTDECL; external xml2lib;
- {$ENDIF} (* LIBXML_SAX1_ENABLED *)
- function xmlSubstituteEntitiesDefault(val: cint): cint; EXTDECL; external xml2lib;
- function xmlKeepBlanksDefault(val: cint): cint; EXTDECL; external xml2lib;
- procedure xmlStopParser(ctxt: xmlParserCtxtPtr); EXTDECL; external xml2lib;
- function xmlPedanticParserDefault(val: cint): cint; EXTDECL; external xml2lib;
- function xmlLineNumbersDefault(val: cint): cint; EXTDECL; external xml2lib;
- {$IFDEF LIBXML_SAX1_ENABLED}
- (*
- * Recovery mode
- *)
- function xmlRecoverDoc(cur: xmlCharPtr): xmlDocPtr; EXTDECL; external xml2lib;
- function xmlRecoverMemory(buffer: pchar; size: cint): xmlDocPtr; EXTDECL; external xml2lib;
- function xmlRecoverFile(filename: pchar): xmlDocPtr; EXTDECL; external xml2lib;
- {$ENDIF} (* LIBXML_SAX1_ENABLED *)
- (*
- * Less common routines and SAX interfaces
- *)
- function xmlParseDocument(ctxt: xmlParserCtxtPtr): cint; EXTDECL; external xml2lib;
- function xmlParseExtParsedEnt(ctxt: xmlParserCtxtPtr): cint; EXTDECL; external xml2lib;
- {$IFDEF LIBXML_SAX1_ENABLED}
- function xmlSAXUserParseFile(sax: xmlSAXHandlerPtr; user_data: pointer; filename: pchar): cint; EXTDECL; external xml2lib;
- function xmlSAXUserParseMemory(sax: xmlSAXHandlerPtr; user_data: pointer; buffer: pchar; size: cint): cint; EXTDECL; external xml2lib;
- function xmlSAXParseDoc(sax: xmlSAXHandlerPtr; cur: xmlCharPtr; recovery: cint): xmlDocPtr; EXTDECL; external xml2lib;
- function xmlSAXParseMemory(sax: xmlSAXHandlerPtr; buffer: pchar; size: cint; recovery: cint): xmlDocPtr; EXTDECL; external xml2lib;
- function xmlSAXParseMemoryWithData(sax: xmlSAXHandlerPtr; buffer: pchar; size: cint; recovery: cint; data: pointer): xmlDocPtr; EXTDECL; external xml2lib;
- function xmlSAXParseFile(sax: xmlSAXHandlerPtr; filename: pchar; recovery: cint): xmlDocPtr; EXTDECL; external xml2lib;
- function xmlSAXParseFileWithData(sax: xmlSAXHandlerPtr; filename: pchar; recovery: cint; data: pointer): xmlDocPtr; EXTDECL; external xml2lib;
- function xmlSAXParseEntity(sax: xmlSAXHandlerPtr; filename: pchar): xmlDocPtr; EXTDECL; external xml2lib;
- function xmlParseEntity(filename: pchar): xmlDocPtr; EXTDECL; external xml2lib;
- {$ENDIF} (* LIBXML_SAX1_ENABLED *)
- {$IFDEF LIBXML_VALID_ENABLED}
- function xmlSAXParseDTD(sax: xmlSAXHandlerPtr; ExternalID, SystemID: xmlCharPtr): xmlDtdPtr; EXTDECL; external xml2lib;
- function xmlParseDTD(ExternalID, SystemID: xmlCharPtr): xmlDtdPtr; EXTDECL; external xml2lib;
- function xmlIOParseDTD(sax: xmlSAXHandlerPtr; input: xmlParserInputBufferPtr; enc: xmlCharEncoding): xmlDtdPtr; EXTDECL; external xml2lib;
- {$ENDIF} (* LIBXML_VALID_ENABLE *)
- {$IFDEF LIBXML_SAX1_ENABLED}
- function xmlParseBalancedChunkMemory(doc: xmlDocPtr; sax: xmlSAXHandlerPtr; user_data: pointer; depth: cint; _string: xmlCharPtr; lst: xmlNodePtrPtr): cint; EXTDECL; external xml2lib;
- {$ENDIF} (* LIBXML_SAX1_ENABLED *)
- function xmlParseInNodeContext(node: xmlNodePtr; data: pchar; datalen, options: cint; lst: xmlNodePtrPtr): xmlParserErrors; EXTDECL; external xml2lib;
- {$IFDEF LIBXML_SAX1_ENABLED}
- function xmlParseBalancedChunkMemoryRecover(doc: xmlDocPtr; sax: xmlSAXHandlerPtr; user_data: pointer;
- depth: cint; _string: xmlCharPtr; lst: xmlNodePtrPtr; recover: cint): cint; EXTDECL; external xml2lib;
- function xmlParseExternalEntity(doc: xmlDocPtr; sax: xmlSAXHandlerPtr; user_data: pointer;
- depth: cint; URL, ID: xmlCharPtr; lst: xmlNodePtrPtr): cint; EXTDECL; external xml2lib;
- {$ENDIF} (* LIBXML_SAX1_ENABLED *)
- function xmlParseCtxtExternalEntity(ctx: xmlParserCtxtPtr; URL, ID: xmlCharPtr; lst: xmlNodePtrPtr): cint; EXTDECL; external xml2lib;
- (*
- * Parser contexts handling.
- *)
- function xmlNewParserCtxt: xmlParserCtxtPtr; EXTDECL; external xml2lib;
- function xmlInitParserCtxt(ctxt: xmlParserCtxtPtr): cint; EXTDECL; external xml2lib;
- procedure xmlClearParserCtxt(ctxt: xmlParserCtxtPtr); EXTDECL; external xml2lib;
- procedure xmlFreeParserCtxt(ctxt: xmlParserCtxtPtr); EXTDECL; external xml2lib;
- {$IFDEF LIBXML_SAX1_ENABLED}
- procedure xmlSetupParserForBuffer(ctxt: xmlParserCtxtPtr; buffer: xmlCharPtr; filename: pchar); EXTDECL; external xml2lib;
- {$ENDIF} (* LIBXML_SAX1_ENABLED *)
- function xmlCreateDocParserCtxt(cur: xmlCharPtr): xmlParserCtxtPtr; EXTDECL; external xml2lib;
- {$IFDEF LIBXML_LEGACY_ENABLED}
- (*
- * Reading/setting optional parsing features.
- *)
- function xmlGetFeaturesList(var len: cint; var result: pchar): cint; EXTDECL; external xml2lib;
- function xmlGetFeature(ctxt: xmlParserCtxtPtr; name: pchar; result: pointer): cint; EXTDECL; external xml2lib;
- function xmlSetFeature(ctxt: xmlParserCtxtPtr; name: pchar; value: pointer): cint; EXTDECL; external xml2lib;
- {$ENDIF} (* LIBXML_LEGACY_ENABLED *)
- {$IFDEF LIBXML_PUSH_ENABLED}
- (*
- * Interfaces for the Push mode.
- *)
- function xmlCreatePushParserCtxt(sax: xmlSAXHandlerPtr; user_data: pointer; chunk: pchar; size: cint; filename: pchar): xmlParserCtxtPtr; EXTDECL; external xml2lib;
- function xmlParseChunk(ctxt: xmlParserCtxtPtr; chunk: pchar; size, terminate: cint): cint; EXTDECL; external xml2lib;
- {$ENDIF} (* LIBXML_PUSH_ENABLED *)
- (*
- * Special I/O mode.
- *)
- function xmlCreateIOParserCtxt(sax: xmlSAXHandlerPtr; user_data: pointer; ioread: xmlInputReadCallback;
- ioclose: xmlInputCloseCallback; ioctx: pointer; enc: xmlCharEncoding): xmlParserCtxtPtr; EXTDECL; external xml2lib;
- function xmlNewIOInputStream(ctxt: xmlParserCtxtPtr; input: xmlParserInputBufferPtr; enc: xmlCharEncoding): xmlParserInputPtr; EXTDECL; external xml2lib;
- (*
- * Node infos.
- *)
- function xmlParserFindNodeInfo(ctxt: xmlParserCtxtPtr; node: xmlNodePtr): xmlParserNodeInfoPtr; EXTDECL; external xml2lib;
- procedure xmlInitNodeInfoSeq(seq: xmlParserNodeInfoSeqPtr); EXTDECL; external xml2lib;
- procedure xmlClearNodeInfoSeq(seq: xmlParserNodeInfoSeqPtr); EXTDECL; external xml2lib;
- function xmlParserFindNodeInfoIndex(seq: xmlParserNodeInfoSeqPtr; node: xmlNodePtr): culong; EXTDECL; external xml2lib;
- procedure xmlParserAddNodeInfo(ctxt: xmlParserCtxtPtr; info: xmlParserNodeInfoPtr); EXTDECL; external xml2lib;
- (*
- * External entities handling actually implemented in xmlIO.
- *)
- procedure xmlSetExternalEntityLoader(f: xmlExternalEntityLoader); EXTDECL; external xml2lib;
- function xmlGetExternalEntityLoader(): xmlExternalEntityLoader; EXTDECL; external xml2lib;
- function xmlLoadExternalEntity(URL, ID: pchar; ctxt: xmlParserCtxtPtr): xmlParserInputPtr; EXTDECL; external xml2lib;
- (*
- * Index lookup, actually implemented in the encoding module
- *)
- function xmlByteConsumed(ctxt: xmlParserCtxtPtr): culong; EXTDECL; external xml2lib;
- (*
- * New set of simpler/more flexible APIs
- *)
- procedure xmlCtxtReset(ctxt: xmlParserCtxtPtr); EXTDECL; external xml2lib;
- function xmlCtxtResetPush(ctxt: xmlParserCtxtPtr; chunk: pchar; size: cint; filename, encoding: pchar): cint; EXTDECL; external xml2lib;
- function xmlCtxtUseOptions(ctxt: xmlParserCtxtPtr; options: cint): cint; EXTDECL; external xml2lib;
- function xmlReadDoc(cur: xmlCharPtr; URL, encoding: pchar; options: cint): xmlDocPtr; EXTDECL; external xml2lib;
- function xmlReadFile(filename, encoding: pchar; options: cint): xmlDocPtr; EXTDECL; external xml2lib;
- function xmlReadMemory(buffer: pchar; size: cint; URL, encoding: pchar; options: cint): xmlDocPtr; EXTDECL; external xml2lib;
- function xmlReadFd(fd: cint; URL, encoding: pchar; options: cint): xmlDocPtr; EXTDECL; external xml2lib;
- function xmlReadIO(ioread: xmlInputReadCallback; ioclose: xmlInputCloseCallback; ioctx: pointer; URL, encoding: pchar; options: cint): xmlDocPtr; EXTDECL; external xml2lib;
- function xmlCtxtReadDoc(ctxt: xmlParserCtxtPtr; cur: xmlCharPtr; URL, encoding: pchar; options: cint): xmlDocPtr; EXTDECL; external xml2lib;
- function xmlCtxtReadFile(ctxt: xmlParserCtxtPtr; filename, encoding: pchar; options: cint): xmlDocPtr; EXTDECL; external xml2lib;
- function xmlCtxtReadMemory(ctxt: xmlParserCtxtPtr; buffer: pchar; size: cint; URL, encoding: pchar; options: cint): xmlDocPtr; EXTDECL; external xml2lib;
- function xmlCtxtReadFd(ctxt: xmlParserCtxtPtr; fd: cint; URL, encoding: pchar; options: cint): xmlDocPtr; EXTDECL; external xml2lib;
- function xmlCtxtReadIO(ctxt: xmlParserCtxtPtr; ioread: xmlInputReadCallback; ioclose: xmlInputCloseCallback; ioctx: pchar; URL, encoding: pchar; options: cint): xmlDocPtr; EXTDECL; external xml2lib;
- (*
- * Library wide options
- *)
- (**
- * xmlFeature:
- *
- * Used to examine the existance of features that can be enabled
- * or disabled at compile-time.
- * They used to be called XML_FEATURE_xxx but this clashed with Expat
- *)
- function xmlHasFeature(feature: xmlFeature): cint; EXTDECL; external xml2lib;
- {$ENDIF}
|