Path: blob/master/venv/Lib/site-packages/lxml/includes/libxml/tree.h
811 views
/*1* Summary: interfaces for tree manipulation2* Description: this module describes the structures found in an tree resulting3* from an XML or HTML parsing, as well as the API provided for4* various processing on that tree5*6* Copy: See Copyright for the status of this software.7*8* Author: Daniel Veillard9*/1011#ifndef __XML_TREE_H__12#define __XML_TREE_H__1314#include <stdio.h>15#include <limits.h>16#include <libxml/xmlversion.h>17#include <libxml/xmlstring.h>1819#ifdef __cplusplus20extern "C" {21#endif2223/*24* Some of the basic types pointer to structures:25*/26/* xmlIO.h */27typedef struct _xmlParserInputBuffer xmlParserInputBuffer;28typedef xmlParserInputBuffer *xmlParserInputBufferPtr;2930typedef struct _xmlOutputBuffer xmlOutputBuffer;31typedef xmlOutputBuffer *xmlOutputBufferPtr;3233/* parser.h */34typedef struct _xmlParserInput xmlParserInput;35typedef xmlParserInput *xmlParserInputPtr;3637typedef struct _xmlParserCtxt xmlParserCtxt;38typedef xmlParserCtxt *xmlParserCtxtPtr;3940typedef struct _xmlSAXLocator xmlSAXLocator;41typedef xmlSAXLocator *xmlSAXLocatorPtr;4243typedef struct _xmlSAXHandler xmlSAXHandler;44typedef xmlSAXHandler *xmlSAXHandlerPtr;4546/* entities.h */47typedef struct _xmlEntity xmlEntity;48typedef xmlEntity *xmlEntityPtr;4950/**51* BASE_BUFFER_SIZE:52*53* default buffer size 4000.54*/55#define BASE_BUFFER_SIZE 40965657/**58* LIBXML_NAMESPACE_DICT:59*60* Defines experimental behaviour:61* 1) xmlNs gets an additional field @context (a xmlDoc)62* 2) when creating a tree, xmlNs->href is stored in the dict of xmlDoc.63*/64/* #define LIBXML_NAMESPACE_DICT */6566/**67* xmlBufferAllocationScheme:68*69* A buffer allocation scheme can be defined to either match exactly the70* need or double it's allocated size each time it is found too small.71*/7273typedef enum {74XML_BUFFER_ALLOC_DOUBLEIT, /* double each time one need to grow */75XML_BUFFER_ALLOC_EXACT, /* grow only to the minimal size */76XML_BUFFER_ALLOC_IMMUTABLE, /* immutable buffer */77XML_BUFFER_ALLOC_IO, /* special allocation scheme used for I/O */78XML_BUFFER_ALLOC_HYBRID, /* exact up to a threshold, and doubleit thereafter */79XML_BUFFER_ALLOC_BOUNDED /* limit the upper size of the buffer */80} xmlBufferAllocationScheme;8182/**83* xmlBuffer:84*85* A buffer structure, this old construct is limited to 2GB and86* is being deprecated, use API with xmlBuf instead87*/88typedef struct _xmlBuffer xmlBuffer;89typedef xmlBuffer *xmlBufferPtr;90struct _xmlBuffer {91xmlChar *content; /* The buffer content UTF8 */92unsigned int use; /* The buffer size used */93unsigned int size; /* The buffer size */94xmlBufferAllocationScheme alloc; /* The realloc method */95xmlChar *contentIO; /* in IO mode we may have a different base */96};9798/**99* xmlBuf:100*101* A buffer structure, new one, the actual structure internals are not public102*/103104typedef struct _xmlBuf xmlBuf;105106/**107* xmlBufPtr:108*109* A pointer to a buffer structure, the actual structure internals are not110* public111*/112113typedef xmlBuf *xmlBufPtr;114115/*116* A few public routines for xmlBuf. As those are expected to be used117* mostly internally the bulk of the routines are internal in buf.h118*/119XMLPUBFUN xmlChar* XMLCALL xmlBufContent (const xmlBuf* buf);120XMLPUBFUN xmlChar* XMLCALL xmlBufEnd (xmlBufPtr buf);121XMLPUBFUN size_t XMLCALL xmlBufUse (const xmlBufPtr buf);122XMLPUBFUN size_t XMLCALL xmlBufShrink (xmlBufPtr buf, size_t len);123124/*125* LIBXML2_NEW_BUFFER:126*127* Macro used to express that the API use the new buffers for128* xmlParserInputBuffer and xmlOutputBuffer. The change was129* introduced in 2.9.0.130*/131#define LIBXML2_NEW_BUFFER132133/**134* XML_XML_NAMESPACE:135*136* This is the namespace for the special xml: prefix predefined in the137* XML Namespace specification.138*/139#define XML_XML_NAMESPACE \140(const xmlChar *) "http://www.w3.org/XML/1998/namespace"141142/**143* XML_XML_ID:144*145* This is the name for the special xml:id attribute146*/147#define XML_XML_ID (const xmlChar *) "xml:id"148149/*150* The different element types carried by an XML tree.151*152* NOTE: This is synchronized with DOM Level1 values153* See http://www.w3.org/TR/REC-DOM-Level-1/154*155* Actually this had diverged a bit, and now XML_DOCUMENT_TYPE_NODE should156* be deprecated to use an XML_DTD_NODE.157*/158typedef enum {159XML_ELEMENT_NODE= 1,160XML_ATTRIBUTE_NODE= 2,161XML_TEXT_NODE= 3,162XML_CDATA_SECTION_NODE= 4,163XML_ENTITY_REF_NODE= 5,164XML_ENTITY_NODE= 6,165XML_PI_NODE= 7,166XML_COMMENT_NODE= 8,167XML_DOCUMENT_NODE= 9,168XML_DOCUMENT_TYPE_NODE= 10,169XML_DOCUMENT_FRAG_NODE= 11,170XML_NOTATION_NODE= 12,171XML_HTML_DOCUMENT_NODE= 13,172XML_DTD_NODE= 14,173XML_ELEMENT_DECL= 15,174XML_ATTRIBUTE_DECL= 16,175XML_ENTITY_DECL= 17,176XML_NAMESPACE_DECL= 18,177XML_XINCLUDE_START= 19,178XML_XINCLUDE_END= 20179#ifdef LIBXML_DOCB_ENABLED180,XML_DOCB_DOCUMENT_NODE= 21181#endif182} xmlElementType;183184185/**186* xmlNotation:187*188* A DTD Notation definition.189*/190191typedef struct _xmlNotation xmlNotation;192typedef xmlNotation *xmlNotationPtr;193struct _xmlNotation {194const xmlChar *name; /* Notation name */195const xmlChar *PublicID; /* Public identifier, if any */196const xmlChar *SystemID; /* System identifier, if any */197};198199/**200* xmlAttributeType:201*202* A DTD Attribute type definition.203*/204205typedef enum {206XML_ATTRIBUTE_CDATA = 1,207XML_ATTRIBUTE_ID,208XML_ATTRIBUTE_IDREF ,209XML_ATTRIBUTE_IDREFS,210XML_ATTRIBUTE_ENTITY,211XML_ATTRIBUTE_ENTITIES,212XML_ATTRIBUTE_NMTOKEN,213XML_ATTRIBUTE_NMTOKENS,214XML_ATTRIBUTE_ENUMERATION,215XML_ATTRIBUTE_NOTATION216} xmlAttributeType;217218/**219* xmlAttributeDefault:220*221* A DTD Attribute default definition.222*/223224typedef enum {225XML_ATTRIBUTE_NONE = 1,226XML_ATTRIBUTE_REQUIRED,227XML_ATTRIBUTE_IMPLIED,228XML_ATTRIBUTE_FIXED229} xmlAttributeDefault;230231/**232* xmlEnumeration:233*234* List structure used when there is an enumeration in DTDs.235*/236237typedef struct _xmlEnumeration xmlEnumeration;238typedef xmlEnumeration *xmlEnumerationPtr;239struct _xmlEnumeration {240struct _xmlEnumeration *next; /* next one */241const xmlChar *name; /* Enumeration name */242};243244/**245* xmlAttribute:246*247* An Attribute declaration in a DTD.248*/249250typedef struct _xmlAttribute xmlAttribute;251typedef xmlAttribute *xmlAttributePtr;252struct _xmlAttribute {253void *_private; /* application data */254xmlElementType type; /* XML_ATTRIBUTE_DECL, must be second ! */255const xmlChar *name; /* Attribute name */256struct _xmlNode *children; /* NULL */257struct _xmlNode *last; /* NULL */258struct _xmlDtd *parent; /* -> DTD */259struct _xmlNode *next; /* next sibling link */260struct _xmlNode *prev; /* previous sibling link */261struct _xmlDoc *doc; /* the containing document */262263struct _xmlAttribute *nexth; /* next in hash table */264xmlAttributeType atype; /* The attribute type */265xmlAttributeDefault def; /* the default */266const xmlChar *defaultValue; /* or the default value */267xmlEnumerationPtr tree; /* or the enumeration tree if any */268const xmlChar *prefix; /* the namespace prefix if any */269const xmlChar *elem; /* Element holding the attribute */270};271272/**273* xmlElementContentType:274*275* Possible definitions of element content types.276*/277typedef enum {278XML_ELEMENT_CONTENT_PCDATA = 1,279XML_ELEMENT_CONTENT_ELEMENT,280XML_ELEMENT_CONTENT_SEQ,281XML_ELEMENT_CONTENT_OR282} xmlElementContentType;283284/**285* xmlElementContentOccur:286*287* Possible definitions of element content occurrences.288*/289typedef enum {290XML_ELEMENT_CONTENT_ONCE = 1,291XML_ELEMENT_CONTENT_OPT,292XML_ELEMENT_CONTENT_MULT,293XML_ELEMENT_CONTENT_PLUS294} xmlElementContentOccur;295296/**297* xmlElementContent:298*299* An XML Element content as stored after parsing an element definition300* in a DTD.301*/302303typedef struct _xmlElementContent xmlElementContent;304typedef xmlElementContent *xmlElementContentPtr;305struct _xmlElementContent {306xmlElementContentType type; /* PCDATA, ELEMENT, SEQ or OR */307xmlElementContentOccur ocur; /* ONCE, OPT, MULT or PLUS */308const xmlChar *name; /* Element name */309struct _xmlElementContent *c1; /* first child */310struct _xmlElementContent *c2; /* second child */311struct _xmlElementContent *parent; /* parent */312const xmlChar *prefix; /* Namespace prefix */313};314315/**316* xmlElementTypeVal:317*318* The different possibilities for an element content type.319*/320321typedef enum {322XML_ELEMENT_TYPE_UNDEFINED = 0,323XML_ELEMENT_TYPE_EMPTY = 1,324XML_ELEMENT_TYPE_ANY,325XML_ELEMENT_TYPE_MIXED,326XML_ELEMENT_TYPE_ELEMENT327} xmlElementTypeVal;328329#ifdef __cplusplus330}331#endif332#include <libxml/xmlregexp.h>333#ifdef __cplusplus334extern "C" {335#endif336337/**338* xmlElement:339*340* An XML Element declaration from a DTD.341*/342343typedef struct _xmlElement xmlElement;344typedef xmlElement *xmlElementPtr;345struct _xmlElement {346void *_private; /* application data */347xmlElementType type; /* XML_ELEMENT_DECL, must be second ! */348const xmlChar *name; /* Element name */349struct _xmlNode *children; /* NULL */350struct _xmlNode *last; /* NULL */351struct _xmlDtd *parent; /* -> DTD */352struct _xmlNode *next; /* next sibling link */353struct _xmlNode *prev; /* previous sibling link */354struct _xmlDoc *doc; /* the containing document */355356xmlElementTypeVal etype; /* The type */357xmlElementContentPtr content; /* the allowed element content */358xmlAttributePtr attributes; /* List of the declared attributes */359const xmlChar *prefix; /* the namespace prefix if any */360#ifdef LIBXML_REGEXP_ENABLED361xmlRegexpPtr contModel; /* the validating regexp */362#else363void *contModel;364#endif365};366367368/**369* XML_LOCAL_NAMESPACE:370*371* A namespace declaration node.372*/373#define XML_LOCAL_NAMESPACE XML_NAMESPACE_DECL374typedef xmlElementType xmlNsType;375376/**377* xmlNs:378*379* An XML namespace.380* Note that prefix == NULL is valid, it defines the default namespace381* within the subtree (until overridden).382*383* xmlNsType is unified with xmlElementType.384*/385386typedef struct _xmlNs xmlNs;387typedef xmlNs *xmlNsPtr;388struct _xmlNs {389struct _xmlNs *next; /* next Ns link for this node */390xmlNsType type; /* global or local */391const xmlChar *href; /* URL for the namespace */392const xmlChar *prefix; /* prefix for the namespace */393void *_private; /* application data */394struct _xmlDoc *context; /* normally an xmlDoc */395};396397/**398* xmlDtd:399*400* An XML DTD, as defined by <!DOCTYPE ... There is actually one for401* the internal subset and for the external subset.402*/403typedef struct _xmlDtd xmlDtd;404typedef xmlDtd *xmlDtdPtr;405struct _xmlDtd {406void *_private; /* application data */407xmlElementType type; /* XML_DTD_NODE, must be second ! */408const xmlChar *name; /* Name of the DTD */409struct _xmlNode *children; /* the value of the property link */410struct _xmlNode *last; /* last child link */411struct _xmlDoc *parent; /* child->parent link */412struct _xmlNode *next; /* next sibling link */413struct _xmlNode *prev; /* previous sibling link */414struct _xmlDoc *doc; /* the containing document */415416/* End of common part */417void *notations; /* Hash table for notations if any */418void *elements; /* Hash table for elements if any */419void *attributes; /* Hash table for attributes if any */420void *entities; /* Hash table for entities if any */421const xmlChar *ExternalID; /* External identifier for PUBLIC DTD */422const xmlChar *SystemID; /* URI for a SYSTEM or PUBLIC DTD */423void *pentities; /* Hash table for param entities if any */424};425426/**427* xmlAttr:428*429* An attribute on an XML node.430*/431typedef struct _xmlAttr xmlAttr;432typedef xmlAttr *xmlAttrPtr;433struct _xmlAttr {434void *_private; /* application data */435xmlElementType type; /* XML_ATTRIBUTE_NODE, must be second ! */436const xmlChar *name; /* the name of the property */437struct _xmlNode *children; /* the value of the property */438struct _xmlNode *last; /* NULL */439struct _xmlNode *parent; /* child->parent link */440struct _xmlAttr *next; /* next sibling link */441struct _xmlAttr *prev; /* previous sibling link */442struct _xmlDoc *doc; /* the containing document */443xmlNs *ns; /* pointer to the associated namespace */444xmlAttributeType atype; /* the attribute type if validating */445void *psvi; /* for type/PSVI informations */446};447448/**449* xmlID:450*451* An XML ID instance.452*/453454typedef struct _xmlID xmlID;455typedef xmlID *xmlIDPtr;456struct _xmlID {457struct _xmlID *next; /* next ID */458const xmlChar *value; /* The ID name */459xmlAttrPtr attr; /* The attribute holding it */460const xmlChar *name; /* The attribute if attr is not available */461int lineno; /* The line number if attr is not available */462struct _xmlDoc *doc; /* The document holding the ID */463};464465/**466* xmlRef:467*468* An XML IDREF instance.469*/470471typedef struct _xmlRef xmlRef;472typedef xmlRef *xmlRefPtr;473struct _xmlRef {474struct _xmlRef *next; /* next Ref */475const xmlChar *value; /* The Ref name */476xmlAttrPtr attr; /* The attribute holding it */477const xmlChar *name; /* The attribute if attr is not available */478int lineno; /* The line number if attr is not available */479};480481/**482* xmlNode:483*484* A node in an XML tree.485*/486typedef struct _xmlNode xmlNode;487typedef xmlNode *xmlNodePtr;488struct _xmlNode {489void *_private; /* application data */490xmlElementType type; /* type number, must be second ! */491const xmlChar *name; /* the name of the node, or the entity */492struct _xmlNode *children; /* parent->childs link */493struct _xmlNode *last; /* last child link */494struct _xmlNode *parent; /* child->parent link */495struct _xmlNode *next; /* next sibling link */496struct _xmlNode *prev; /* previous sibling link */497struct _xmlDoc *doc; /* the containing document */498499/* End of common part */500xmlNs *ns; /* pointer to the associated namespace */501xmlChar *content; /* the content */502struct _xmlAttr *properties;/* properties list */503xmlNs *nsDef; /* namespace definitions on this node */504void *psvi; /* for type/PSVI informations */505unsigned short line; /* line number */506unsigned short extra; /* extra data for XPath/XSLT */507};508509/**510* XML_GET_CONTENT:511*512* Macro to extract the content pointer of a node.513*/514#define XML_GET_CONTENT(n) \515((n)->type == XML_ELEMENT_NODE ? NULL : (n)->content)516517/**518* XML_GET_LINE:519*520* Macro to extract the line number of an element node.521*/522#define XML_GET_LINE(n) \523(xmlGetLineNo(n))524525/**526* xmlDocProperty527*528* Set of properties of the document as found by the parser529* Some of them are linked to similary named xmlParserOption530*/531typedef enum {532XML_DOC_WELLFORMED = 1<<0, /* document is XML well formed */533XML_DOC_NSVALID = 1<<1, /* document is Namespace valid */534XML_DOC_OLD10 = 1<<2, /* parsed with old XML-1.0 parser */535XML_DOC_DTDVALID = 1<<3, /* DTD validation was successful */536XML_DOC_XINCLUDE = 1<<4, /* XInclude substitution was done */537XML_DOC_USERBUILT = 1<<5, /* Document was built using the API538and not by parsing an instance */539XML_DOC_INTERNAL = 1<<6, /* built for internal processing */540XML_DOC_HTML = 1<<7 /* parsed or built HTML document */541} xmlDocProperties;542543/**544* xmlDoc:545*546* An XML document.547*/548typedef struct _xmlDoc xmlDoc;549typedef xmlDoc *xmlDocPtr;550struct _xmlDoc {551void *_private; /* application data */552xmlElementType type; /* XML_DOCUMENT_NODE, must be second ! */553char *name; /* name/filename/URI of the document */554struct _xmlNode *children; /* the document tree */555struct _xmlNode *last; /* last child link */556struct _xmlNode *parent; /* child->parent link */557struct _xmlNode *next; /* next sibling link */558struct _xmlNode *prev; /* previous sibling link */559struct _xmlDoc *doc; /* autoreference to itself */560561/* End of common part */562int compression;/* level of zlib compression */563int standalone; /* standalone document (no external refs)5641 if standalone="yes"5650 if standalone="no"566-1 if there is no XML declaration567-2 if there is an XML declaration, but no568standalone attribute was specified */569struct _xmlDtd *intSubset; /* the document internal subset */570struct _xmlDtd *extSubset; /* the document external subset */571struct _xmlNs *oldNs; /* Global namespace, the old way */572const xmlChar *version; /* the XML version string */573const xmlChar *encoding; /* external initial encoding, if any */574void *ids; /* Hash table for ID attributes if any */575void *refs; /* Hash table for IDREFs attributes if any */576const xmlChar *URL; /* The URI for that document */577int charset; /* encoding of the in-memory content578actually an xmlCharEncoding */579struct _xmlDict *dict; /* dict used to allocate names or NULL */580void *psvi; /* for type/PSVI informations */581int parseFlags; /* set of xmlParserOption used to parse the582document */583int properties; /* set of xmlDocProperties for this document584set at the end of parsing */585};586587588typedef struct _xmlDOMWrapCtxt xmlDOMWrapCtxt;589typedef xmlDOMWrapCtxt *xmlDOMWrapCtxtPtr;590591/**592* xmlDOMWrapAcquireNsFunction:593* @ctxt: a DOM wrapper context594* @node: the context node (element or attribute)595* @nsName: the requested namespace name596* @nsPrefix: the requested namespace prefix597*598* A function called to acquire namespaces (xmlNs) from the wrapper.599*600* Returns an xmlNsPtr or NULL in case of an error.601*/602typedef xmlNsPtr (*xmlDOMWrapAcquireNsFunction) (xmlDOMWrapCtxtPtr ctxt,603xmlNodePtr node,604const xmlChar *nsName,605const xmlChar *nsPrefix);606607/**608* xmlDOMWrapCtxt:609*610* Context for DOM wrapper-operations.611*/612struct _xmlDOMWrapCtxt {613void * _private;614/*615* The type of this context, just in case we need specialized616* contexts in the future.617*/618int type;619/*620* Internal namespace map used for various operations.621*/622void * namespaceMap;623/*624* Use this one to acquire an xmlNsPtr intended for node->ns.625* (Note that this is not intended for elem->nsDef).626*/627xmlDOMWrapAcquireNsFunction getNsForNodeFunc;628};629630/**631* xmlChildrenNode:632*633* Macro for compatibility naming layer with libxml1. Maps634* to "children."635*/636#ifndef xmlChildrenNode637#define xmlChildrenNode children638#endif639640/**641* xmlRootNode:642*643* Macro for compatibility naming layer with libxml1. Maps644* to "children".645*/646#ifndef xmlRootNode647#define xmlRootNode children648#endif649650/*651* Variables.652*/653654/*655* Some helper functions656*/657#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || \658defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || \659defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || \660defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || \661defined(LIBXML_DOCB_ENABLED) || defined(LIBXML_LEGACY_ENABLED)662XMLPUBFUN int XMLCALL663xmlValidateNCName (const xmlChar *value,664int space);665#endif666667#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)668XMLPUBFUN int XMLCALL669xmlValidateQName (const xmlChar *value,670int space);671XMLPUBFUN int XMLCALL672xmlValidateName (const xmlChar *value,673int space);674XMLPUBFUN int XMLCALL675xmlValidateNMToken (const xmlChar *value,676int space);677#endif678679XMLPUBFUN xmlChar * XMLCALL680xmlBuildQName (const xmlChar *ncname,681const xmlChar *prefix,682xmlChar *memory,683int len);684XMLPUBFUN xmlChar * XMLCALL685xmlSplitQName2 (const xmlChar *name,686xmlChar **prefix);687XMLPUBFUN const xmlChar * XMLCALL688xmlSplitQName3 (const xmlChar *name,689int *len);690691/*692* Handling Buffers, the old ones see @xmlBuf for the new ones.693*/694695XMLPUBFUN void XMLCALL696xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme);697XMLPUBFUN xmlBufferAllocationScheme XMLCALL698xmlGetBufferAllocationScheme(void);699700XMLPUBFUN xmlBufferPtr XMLCALL701xmlBufferCreate (void);702XMLPUBFUN xmlBufferPtr XMLCALL703xmlBufferCreateSize (size_t size);704XMLPUBFUN xmlBufferPtr XMLCALL705xmlBufferCreateStatic (void *mem,706size_t size);707XMLPUBFUN int XMLCALL708xmlBufferResize (xmlBufferPtr buf,709unsigned int size);710XMLPUBFUN void XMLCALL711xmlBufferFree (xmlBufferPtr buf);712XMLPUBFUN int XMLCALL713xmlBufferDump (FILE *file,714xmlBufferPtr buf);715XMLPUBFUN int XMLCALL716xmlBufferAdd (xmlBufferPtr buf,717const xmlChar *str,718int len);719XMLPUBFUN int XMLCALL720xmlBufferAddHead (xmlBufferPtr buf,721const xmlChar *str,722int len);723XMLPUBFUN int XMLCALL724xmlBufferCat (xmlBufferPtr buf,725const xmlChar *str);726XMLPUBFUN int XMLCALL727xmlBufferCCat (xmlBufferPtr buf,728const char *str);729XMLPUBFUN int XMLCALL730xmlBufferShrink (xmlBufferPtr buf,731unsigned int len);732XMLPUBFUN int XMLCALL733xmlBufferGrow (xmlBufferPtr buf,734unsigned int len);735XMLPUBFUN void XMLCALL736xmlBufferEmpty (xmlBufferPtr buf);737XMLPUBFUN const xmlChar* XMLCALL738xmlBufferContent (const xmlBuffer *buf);739XMLPUBFUN xmlChar* XMLCALL740xmlBufferDetach (xmlBufferPtr buf);741XMLPUBFUN void XMLCALL742xmlBufferSetAllocationScheme(xmlBufferPtr buf,743xmlBufferAllocationScheme scheme);744XMLPUBFUN int XMLCALL745xmlBufferLength (const xmlBuffer *buf);746747/*748* Creating/freeing new structures.749*/750XMLPUBFUN xmlDtdPtr XMLCALL751xmlCreateIntSubset (xmlDocPtr doc,752const xmlChar *name,753const xmlChar *ExternalID,754const xmlChar *SystemID);755XMLPUBFUN xmlDtdPtr XMLCALL756xmlNewDtd (xmlDocPtr doc,757const xmlChar *name,758const xmlChar *ExternalID,759const xmlChar *SystemID);760XMLPUBFUN xmlDtdPtr XMLCALL761xmlGetIntSubset (const xmlDoc *doc);762XMLPUBFUN void XMLCALL763xmlFreeDtd (xmlDtdPtr cur);764#ifdef LIBXML_LEGACY_ENABLED765XMLPUBFUN xmlNsPtr XMLCALL766xmlNewGlobalNs (xmlDocPtr doc,767const xmlChar *href,768const xmlChar *prefix);769#endif /* LIBXML_LEGACY_ENABLED */770XMLPUBFUN xmlNsPtr XMLCALL771xmlNewNs (xmlNodePtr node,772const xmlChar *href,773const xmlChar *prefix);774XMLPUBFUN void XMLCALL775xmlFreeNs (xmlNsPtr cur);776XMLPUBFUN void XMLCALL777xmlFreeNsList (xmlNsPtr cur);778XMLPUBFUN xmlDocPtr XMLCALL779xmlNewDoc (const xmlChar *version);780XMLPUBFUN void XMLCALL781xmlFreeDoc (xmlDocPtr cur);782XMLPUBFUN xmlAttrPtr XMLCALL783xmlNewDocProp (xmlDocPtr doc,784const xmlChar *name,785const xmlChar *value);786#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \787defined(LIBXML_SCHEMAS_ENABLED)788XMLPUBFUN xmlAttrPtr XMLCALL789xmlNewProp (xmlNodePtr node,790const xmlChar *name,791const xmlChar *value);792#endif793XMLPUBFUN xmlAttrPtr XMLCALL794xmlNewNsProp (xmlNodePtr node,795xmlNsPtr ns,796const xmlChar *name,797const xmlChar *value);798XMLPUBFUN xmlAttrPtr XMLCALL799xmlNewNsPropEatName (xmlNodePtr node,800xmlNsPtr ns,801xmlChar *name,802const xmlChar *value);803XMLPUBFUN void XMLCALL804xmlFreePropList (xmlAttrPtr cur);805XMLPUBFUN void XMLCALL806xmlFreeProp (xmlAttrPtr cur);807XMLPUBFUN xmlAttrPtr XMLCALL808xmlCopyProp (xmlNodePtr target,809xmlAttrPtr cur);810XMLPUBFUN xmlAttrPtr XMLCALL811xmlCopyPropList (xmlNodePtr target,812xmlAttrPtr cur);813#ifdef LIBXML_TREE_ENABLED814XMLPUBFUN xmlDtdPtr XMLCALL815xmlCopyDtd (xmlDtdPtr dtd);816#endif /* LIBXML_TREE_ENABLED */817#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)818XMLPUBFUN xmlDocPtr XMLCALL819xmlCopyDoc (xmlDocPtr doc,820int recursive);821#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */822/*823* Creating new nodes.824*/825XMLPUBFUN xmlNodePtr XMLCALL826xmlNewDocNode (xmlDocPtr doc,827xmlNsPtr ns,828const xmlChar *name,829const xmlChar *content);830XMLPUBFUN xmlNodePtr XMLCALL831xmlNewDocNodeEatName (xmlDocPtr doc,832xmlNsPtr ns,833xmlChar *name,834const xmlChar *content);835XMLPUBFUN xmlNodePtr XMLCALL836xmlNewNode (xmlNsPtr ns,837const xmlChar *name);838XMLPUBFUN xmlNodePtr XMLCALL839xmlNewNodeEatName (xmlNsPtr ns,840xmlChar *name);841#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)842XMLPUBFUN xmlNodePtr XMLCALL843xmlNewChild (xmlNodePtr parent,844xmlNsPtr ns,845const xmlChar *name,846const xmlChar *content);847#endif848XMLPUBFUN xmlNodePtr XMLCALL849xmlNewDocText (const xmlDoc *doc,850const xmlChar *content);851XMLPUBFUN xmlNodePtr XMLCALL852xmlNewText (const xmlChar *content);853XMLPUBFUN xmlNodePtr XMLCALL854xmlNewDocPI (xmlDocPtr doc,855const xmlChar *name,856const xmlChar *content);857XMLPUBFUN xmlNodePtr XMLCALL858xmlNewPI (const xmlChar *name,859const xmlChar *content);860XMLPUBFUN xmlNodePtr XMLCALL861xmlNewDocTextLen (xmlDocPtr doc,862const xmlChar *content,863int len);864XMLPUBFUN xmlNodePtr XMLCALL865xmlNewTextLen (const xmlChar *content,866int len);867XMLPUBFUN xmlNodePtr XMLCALL868xmlNewDocComment (xmlDocPtr doc,869const xmlChar *content);870XMLPUBFUN xmlNodePtr XMLCALL871xmlNewComment (const xmlChar *content);872XMLPUBFUN xmlNodePtr XMLCALL873xmlNewCDataBlock (xmlDocPtr doc,874const xmlChar *content,875int len);876XMLPUBFUN xmlNodePtr XMLCALL877xmlNewCharRef (xmlDocPtr doc,878const xmlChar *name);879XMLPUBFUN xmlNodePtr XMLCALL880xmlNewReference (const xmlDoc *doc,881const xmlChar *name);882XMLPUBFUN xmlNodePtr XMLCALL883xmlCopyNode (xmlNodePtr node,884int recursive);885XMLPUBFUN xmlNodePtr XMLCALL886xmlDocCopyNode (xmlNodePtr node,887xmlDocPtr doc,888int recursive);889XMLPUBFUN xmlNodePtr XMLCALL890xmlDocCopyNodeList (xmlDocPtr doc,891xmlNodePtr node);892XMLPUBFUN xmlNodePtr XMLCALL893xmlCopyNodeList (xmlNodePtr node);894#ifdef LIBXML_TREE_ENABLED895XMLPUBFUN xmlNodePtr XMLCALL896xmlNewTextChild (xmlNodePtr parent,897xmlNsPtr ns,898const xmlChar *name,899const xmlChar *content);900XMLPUBFUN xmlNodePtr XMLCALL901xmlNewDocRawNode (xmlDocPtr doc,902xmlNsPtr ns,903const xmlChar *name,904const xmlChar *content);905XMLPUBFUN xmlNodePtr XMLCALL906xmlNewDocFragment (xmlDocPtr doc);907#endif /* LIBXML_TREE_ENABLED */908909/*910* Navigating.911*/912XMLPUBFUN long XMLCALL913xmlGetLineNo (const xmlNode *node);914#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED)915XMLPUBFUN xmlChar * XMLCALL916xmlGetNodePath (const xmlNode *node);917#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) */918XMLPUBFUN xmlNodePtr XMLCALL919xmlDocGetRootElement (const xmlDoc *doc);920XMLPUBFUN xmlNodePtr XMLCALL921xmlGetLastChild (const xmlNode *parent);922XMLPUBFUN int XMLCALL923xmlNodeIsText (const xmlNode *node);924XMLPUBFUN int XMLCALL925xmlIsBlankNode (const xmlNode *node);926927/*928* Changing the structure.929*/930#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)931XMLPUBFUN xmlNodePtr XMLCALL932xmlDocSetRootElement (xmlDocPtr doc,933xmlNodePtr root);934#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */935#ifdef LIBXML_TREE_ENABLED936XMLPUBFUN void XMLCALL937xmlNodeSetName (xmlNodePtr cur,938const xmlChar *name);939#endif /* LIBXML_TREE_ENABLED */940XMLPUBFUN xmlNodePtr XMLCALL941xmlAddChild (xmlNodePtr parent,942xmlNodePtr cur);943XMLPUBFUN xmlNodePtr XMLCALL944xmlAddChildList (xmlNodePtr parent,945xmlNodePtr cur);946#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)947XMLPUBFUN xmlNodePtr XMLCALL948xmlReplaceNode (xmlNodePtr old,949xmlNodePtr cur);950#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */951#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \952defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED)953XMLPUBFUN xmlNodePtr XMLCALL954xmlAddPrevSibling (xmlNodePtr cur,955xmlNodePtr elem);956#endif /* LIBXML_TREE_ENABLED || LIBXML_HTML_ENABLED || LIBXML_SCHEMAS_ENABLED */957XMLPUBFUN xmlNodePtr XMLCALL958xmlAddSibling (xmlNodePtr cur,959xmlNodePtr elem);960XMLPUBFUN xmlNodePtr XMLCALL961xmlAddNextSibling (xmlNodePtr cur,962xmlNodePtr elem);963XMLPUBFUN void XMLCALL964xmlUnlinkNode (xmlNodePtr cur);965XMLPUBFUN xmlNodePtr XMLCALL966xmlTextMerge (xmlNodePtr first,967xmlNodePtr second);968XMLPUBFUN int XMLCALL969xmlTextConcat (xmlNodePtr node,970const xmlChar *content,971int len);972XMLPUBFUN void XMLCALL973xmlFreeNodeList (xmlNodePtr cur);974XMLPUBFUN void XMLCALL975xmlFreeNode (xmlNodePtr cur);976XMLPUBFUN void XMLCALL977xmlSetTreeDoc (xmlNodePtr tree,978xmlDocPtr doc);979XMLPUBFUN void XMLCALL980xmlSetListDoc (xmlNodePtr list,981xmlDocPtr doc);982/*983* Namespaces.984*/985XMLPUBFUN xmlNsPtr XMLCALL986xmlSearchNs (xmlDocPtr doc,987xmlNodePtr node,988const xmlChar *nameSpace);989XMLPUBFUN xmlNsPtr XMLCALL990xmlSearchNsByHref (xmlDocPtr doc,991xmlNodePtr node,992const xmlChar *href);993#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || \994defined(LIBXML_SCHEMAS_ENABLED)995XMLPUBFUN xmlNsPtr * XMLCALL996xmlGetNsList (const xmlDoc *doc,997const xmlNode *node);998#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) */9991000XMLPUBFUN void XMLCALL1001xmlSetNs (xmlNodePtr node,1002xmlNsPtr ns);1003XMLPUBFUN xmlNsPtr XMLCALL1004xmlCopyNamespace (xmlNsPtr cur);1005XMLPUBFUN xmlNsPtr XMLCALL1006xmlCopyNamespaceList (xmlNsPtr cur);10071008/*1009* Changing the content.1010*/1011#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || \1012defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED)1013XMLPUBFUN xmlAttrPtr XMLCALL1014xmlSetProp (xmlNodePtr node,1015const xmlChar *name,1016const xmlChar *value);1017XMLPUBFUN xmlAttrPtr XMLCALL1018xmlSetNsProp (xmlNodePtr node,1019xmlNsPtr ns,1020const xmlChar *name,1021const xmlChar *value);1022#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || \1023defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) */1024XMLPUBFUN xmlChar * XMLCALL1025xmlGetNoNsProp (const xmlNode *node,1026const xmlChar *name);1027XMLPUBFUN xmlChar * XMLCALL1028xmlGetProp (const xmlNode *node,1029const xmlChar *name);1030XMLPUBFUN xmlAttrPtr XMLCALL1031xmlHasProp (const xmlNode *node,1032const xmlChar *name);1033XMLPUBFUN xmlAttrPtr XMLCALL1034xmlHasNsProp (const xmlNode *node,1035const xmlChar *name,1036const xmlChar *nameSpace);1037XMLPUBFUN xmlChar * XMLCALL1038xmlGetNsProp (const xmlNode *node,1039const xmlChar *name,1040const xmlChar *nameSpace);1041XMLPUBFUN xmlNodePtr XMLCALL1042xmlStringGetNodeList (const xmlDoc *doc,1043const xmlChar *value);1044XMLPUBFUN xmlNodePtr XMLCALL1045xmlStringLenGetNodeList (const xmlDoc *doc,1046const xmlChar *value,1047int len);1048XMLPUBFUN xmlChar * XMLCALL1049xmlNodeListGetString (xmlDocPtr doc,1050const xmlNode *list,1051int inLine);1052#ifdef LIBXML_TREE_ENABLED1053XMLPUBFUN xmlChar * XMLCALL1054xmlNodeListGetRawString (const xmlDoc *doc,1055const xmlNode *list,1056int inLine);1057#endif /* LIBXML_TREE_ENABLED */1058XMLPUBFUN void XMLCALL1059xmlNodeSetContent (xmlNodePtr cur,1060const xmlChar *content);1061#ifdef LIBXML_TREE_ENABLED1062XMLPUBFUN void XMLCALL1063xmlNodeSetContentLen (xmlNodePtr cur,1064const xmlChar *content,1065int len);1066#endif /* LIBXML_TREE_ENABLED */1067XMLPUBFUN void XMLCALL1068xmlNodeAddContent (xmlNodePtr cur,1069const xmlChar *content);1070XMLPUBFUN void XMLCALL1071xmlNodeAddContentLen (xmlNodePtr cur,1072const xmlChar *content,1073int len);1074XMLPUBFUN xmlChar * XMLCALL1075xmlNodeGetContent (const xmlNode *cur);10761077XMLPUBFUN int XMLCALL1078xmlNodeBufGetContent (xmlBufferPtr buffer,1079const xmlNode *cur);1080XMLPUBFUN int XMLCALL1081xmlBufGetNodeContent (xmlBufPtr buf,1082const xmlNode *cur);10831084XMLPUBFUN xmlChar * XMLCALL1085xmlNodeGetLang (const xmlNode *cur);1086XMLPUBFUN int XMLCALL1087xmlNodeGetSpacePreserve (const xmlNode *cur);1088#ifdef LIBXML_TREE_ENABLED1089XMLPUBFUN void XMLCALL1090xmlNodeSetLang (xmlNodePtr cur,1091const xmlChar *lang);1092XMLPUBFUN void XMLCALL1093xmlNodeSetSpacePreserve (xmlNodePtr cur,1094int val);1095#endif /* LIBXML_TREE_ENABLED */1096XMLPUBFUN xmlChar * XMLCALL1097xmlNodeGetBase (const xmlDoc *doc,1098const xmlNode *cur);1099#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED)1100XMLPUBFUN void XMLCALL1101xmlNodeSetBase (xmlNodePtr cur,1102const xmlChar *uri);1103#endif11041105/*1106* Removing content.1107*/1108XMLPUBFUN int XMLCALL1109xmlRemoveProp (xmlAttrPtr cur);1110#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)1111XMLPUBFUN int XMLCALL1112xmlUnsetNsProp (xmlNodePtr node,1113xmlNsPtr ns,1114const xmlChar *name);1115XMLPUBFUN int XMLCALL1116xmlUnsetProp (xmlNodePtr node,1117const xmlChar *name);1118#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */11191120/*1121* Internal, don't use.1122*/1123XMLPUBFUN void XMLCALL1124xmlBufferWriteCHAR (xmlBufferPtr buf,1125const xmlChar *string);1126XMLPUBFUN void XMLCALL1127xmlBufferWriteChar (xmlBufferPtr buf,1128const char *string);1129XMLPUBFUN void XMLCALL1130xmlBufferWriteQuotedString(xmlBufferPtr buf,1131const xmlChar *string);11321133#ifdef LIBXML_OUTPUT_ENABLED1134XMLPUBFUN void xmlAttrSerializeTxtContent(xmlBufferPtr buf,1135xmlDocPtr doc,1136xmlAttrPtr attr,1137const xmlChar *string);1138#endif /* LIBXML_OUTPUT_ENABLED */11391140#ifdef LIBXML_TREE_ENABLED1141/*1142* Namespace handling.1143*/1144XMLPUBFUN int XMLCALL1145xmlReconciliateNs (xmlDocPtr doc,1146xmlNodePtr tree);1147#endif11481149#ifdef LIBXML_OUTPUT_ENABLED1150/*1151* Saving.1152*/1153XMLPUBFUN void XMLCALL1154xmlDocDumpFormatMemory (xmlDocPtr cur,1155xmlChar **mem,1156int *size,1157int format);1158XMLPUBFUN void XMLCALL1159xmlDocDumpMemory (xmlDocPtr cur,1160xmlChar **mem,1161int *size);1162XMLPUBFUN void XMLCALL1163xmlDocDumpMemoryEnc (xmlDocPtr out_doc,1164xmlChar **doc_txt_ptr,1165int * doc_txt_len,1166const char *txt_encoding);1167XMLPUBFUN void XMLCALL1168xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc,1169xmlChar **doc_txt_ptr,1170int * doc_txt_len,1171const char *txt_encoding,1172int format);1173XMLPUBFUN int XMLCALL1174xmlDocFormatDump (FILE *f,1175xmlDocPtr cur,1176int format);1177XMLPUBFUN int XMLCALL1178xmlDocDump (FILE *f,1179xmlDocPtr cur);1180XMLPUBFUN void XMLCALL1181xmlElemDump (FILE *f,1182xmlDocPtr doc,1183xmlNodePtr cur);1184XMLPUBFUN int XMLCALL1185xmlSaveFile (const char *filename,1186xmlDocPtr cur);1187XMLPUBFUN int XMLCALL1188xmlSaveFormatFile (const char *filename,1189xmlDocPtr cur,1190int format);1191XMLPUBFUN size_t XMLCALL1192xmlBufNodeDump (xmlBufPtr buf,1193xmlDocPtr doc,1194xmlNodePtr cur,1195int level,1196int format);1197XMLPUBFUN int XMLCALL1198xmlNodeDump (xmlBufferPtr buf,1199xmlDocPtr doc,1200xmlNodePtr cur,1201int level,1202int format);12031204XMLPUBFUN int XMLCALL1205xmlSaveFileTo (xmlOutputBufferPtr buf,1206xmlDocPtr cur,1207const char *encoding);1208XMLPUBFUN int XMLCALL1209xmlSaveFormatFileTo (xmlOutputBufferPtr buf,1210xmlDocPtr cur,1211const char *encoding,1212int format);1213XMLPUBFUN void XMLCALL1214xmlNodeDumpOutput (xmlOutputBufferPtr buf,1215xmlDocPtr doc,1216xmlNodePtr cur,1217int level,1218int format,1219const char *encoding);12201221XMLPUBFUN int XMLCALL1222xmlSaveFormatFileEnc (const char *filename,1223xmlDocPtr cur,1224const char *encoding,1225int format);12261227XMLPUBFUN int XMLCALL1228xmlSaveFileEnc (const char *filename,1229xmlDocPtr cur,1230const char *encoding);12311232#endif /* LIBXML_OUTPUT_ENABLED */1233/*1234* XHTML1235*/1236XMLPUBFUN int XMLCALL1237xmlIsXHTML (const xmlChar *systemID,1238const xmlChar *publicID);12391240/*1241* Compression.1242*/1243XMLPUBFUN int XMLCALL1244xmlGetDocCompressMode (const xmlDoc *doc);1245XMLPUBFUN void XMLCALL1246xmlSetDocCompressMode (xmlDocPtr doc,1247int mode);1248XMLPUBFUN int XMLCALL1249xmlGetCompressMode (void);1250XMLPUBFUN void XMLCALL1251xmlSetCompressMode (int mode);12521253/*1254* DOM-wrapper helper functions.1255*/1256XMLPUBFUN xmlDOMWrapCtxtPtr XMLCALL1257xmlDOMWrapNewCtxt (void);1258XMLPUBFUN void XMLCALL1259xmlDOMWrapFreeCtxt (xmlDOMWrapCtxtPtr ctxt);1260XMLPUBFUN int XMLCALL1261xmlDOMWrapReconcileNamespaces(xmlDOMWrapCtxtPtr ctxt,1262xmlNodePtr elem,1263int options);1264XMLPUBFUN int XMLCALL1265xmlDOMWrapAdoptNode (xmlDOMWrapCtxtPtr ctxt,1266xmlDocPtr sourceDoc,1267xmlNodePtr node,1268xmlDocPtr destDoc,1269xmlNodePtr destParent,1270int options);1271XMLPUBFUN int XMLCALL1272xmlDOMWrapRemoveNode (xmlDOMWrapCtxtPtr ctxt,1273xmlDocPtr doc,1274xmlNodePtr node,1275int options);1276XMLPUBFUN int XMLCALL1277xmlDOMWrapCloneNode (xmlDOMWrapCtxtPtr ctxt,1278xmlDocPtr sourceDoc,1279xmlNodePtr node,1280xmlNodePtr *clonedNode,1281xmlDocPtr destDoc,1282xmlNodePtr destParent,1283int deep,1284int options);12851286#ifdef LIBXML_TREE_ENABLED1287/*1288* 5 interfaces from DOM ElementTraversal, but different in entities1289* traversal.1290*/1291XMLPUBFUN unsigned long XMLCALL1292xmlChildElementCount (xmlNodePtr parent);1293XMLPUBFUN xmlNodePtr XMLCALL1294xmlNextElementSibling (xmlNodePtr node);1295XMLPUBFUN xmlNodePtr XMLCALL1296xmlFirstElementChild (xmlNodePtr parent);1297XMLPUBFUN xmlNodePtr XMLCALL1298xmlLastElementChild (xmlNodePtr parent);1299XMLPUBFUN xmlNodePtr XMLCALL1300xmlPreviousElementSibling (xmlNodePtr node);1301#endif1302#ifdef __cplusplus1303}1304#endif1305#ifndef __XML_PARSER_H__1306#include <libxml/xmlmemory.h>1307#endif13081309#endif /* __XML_TREE_H__ */1310131113121313