| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576 |
- /**
- * @file
- *
- * @brief Document tree API
- *
- * Data structures and functions to build, modify, query and
- * serialize XML and HTML document trees. Also contains the
- * buffer API.
- *
- * @copyright See Copyright for the status of this software.
- *
- * @author Daniel Veillard
- */
- #ifndef XML_TREE_INTERNALS
- /*
- * Emulate circular dependency for backward compatibility
- */
- #include <libxml/parser.h>
- #else /* XML_TREE_INTERNALS */
- #ifndef __XML_TREE_H__
- /** @cond ignore */
- #define __XML_TREE_H__
- /** @endcond */
- #include <stdio.h>
- #include <limits.h>
- #include <libxml/xmlversion.h>
- #include <libxml/xmlstring.h>
- #include <libxml/xmlmemory.h>
- #include <libxml/xmlregexp.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- /*
- * Backward compatibility
- */
- /** @cond ignore */
- #define xmlBufferAllocScheme XML_BUFFER_ALLOC_EXACT
- #define xmlDefaultBufferSize 4096
- #define XML_GET_CONTENT(n) \
- ((n)->type == XML_ELEMENT_NODE ? NULL : (n)->content)
- #define XML_GET_LINE(n) xmlGetLineNo(n)
- /** @endcond */
- /*
- * Some of the basic types pointer to structures:
- */
- /* xmlIO.h */
- /**
- * Parser input buffer
- *
- * This struct and all related functions should ultimately
- * be removed from the public interface.
- */
- typedef struct _xmlParserInputBuffer xmlParserInputBuffer;
- typedef xmlParserInputBuffer *xmlParserInputBufferPtr;
- /** Output buffer */
- typedef struct _xmlOutputBuffer xmlOutputBuffer;
- typedef xmlOutputBuffer *xmlOutputBufferPtr;
- /* parser.h */
- /** Parser input */
- typedef struct _xmlParserInput xmlParserInput;
- typedef xmlParserInput *xmlParserInputPtr;
- /** Parser context */
- typedef struct _xmlParserCtxt xmlParserCtxt;
- typedef xmlParserCtxt *xmlParserCtxtPtr;
- /** SAX locator */
- typedef struct _xmlSAXLocator xmlSAXLocator;
- typedef xmlSAXLocator *xmlSAXLocatorPtr;
- /** SAX handler */
- typedef struct _xmlSAXHandler xmlSAXHandler;
- typedef xmlSAXHandler *xmlSAXHandlerPtr;
- /* entities.h */
- /** Entity declaration */
- typedef struct _xmlEntity xmlEntity;
- typedef xmlEntity *xmlEntityPtr;
- /**
- * Removed, buffers always use XML_BUFFER_ALLOC_IO now.
- */
- typedef enum {
- XML_BUFFER_ALLOC_DOUBLEIT, /* double each time one need to grow */
- XML_BUFFER_ALLOC_EXACT, /* grow only to the minimal size */
- XML_BUFFER_ALLOC_IMMUTABLE, /* immutable buffer, deprecated */
- XML_BUFFER_ALLOC_IO, /* special allocation scheme used for I/O */
- XML_BUFFER_ALLOC_HYBRID, /* exact up to a threshold, and doubleit thereafter */
- XML_BUFFER_ALLOC_BOUNDED /* limit the upper size of the buffer */
- } xmlBufferAllocationScheme;
- /** Buffer type */
- typedef struct _xmlBuffer xmlBuffer;
- typedef xmlBuffer *xmlBufferPtr;
- /**
- * A buffer structure, this old construct is limited to 2GB and
- * is being deprecated, use API with xmlBuf instead.
- */
- struct _xmlBuffer {
- /**
- * @deprecated Use #xmlBufferContent
- *
- * The buffer content UTF8
- */
- xmlChar *content XML_DEPRECATED_MEMBER;
- /**
- * @deprecated Use #xmlBufferLength
- *
- * The buffer size used
- */
- unsigned int use XML_DEPRECATED_MEMBER;
- /* The buffer size */
- unsigned int size XML_DEPRECATED_MEMBER;
- /* The realloc method */
- xmlBufferAllocationScheme alloc XML_DEPRECATED_MEMBER;
- /* in IO mode we may have a different base */
- xmlChar *contentIO XML_DEPRECATED_MEMBER;
- };
- /** Buffer with 64-bit support */
- typedef struct _xmlBuf xmlBuf;
- typedef xmlBuf *xmlBufPtr;
- /**
- * Macro used to express that the API use the new buffers for
- * xmlParserInputBuffer and xmlOutputBuffer. The change was
- * introduced in 2.9.0.
- */
- #define LIBXML2_NEW_BUFFER
- /**
- * This is the namespace for the special xml: prefix predefined in the
- * XML Namespace specification.
- */
- #define XML_XML_NAMESPACE \
- (const xmlChar *) "http://www.w3.org/XML/1998/namespace"
- /**
- * This is the name for the special xml:id attribute
- */
- #define XML_XML_ID (const xmlChar *) "xml:id"
- /**
- * The different element types carried by an XML tree.
- *
- * NOTE: This is synchronized with DOM Level 1 values.
- * See http://www.w3.org/TR/REC-DOM-Level-1/
- *
- * Actually this had diverged a bit, and XML_DTD_NODE is used instead
- * of XML_DOCUMENT_TYPE_NODE.
- */
- typedef enum {
- /**
- * An element.
- *
- * Objects of this type are an xmlNode.
- */
- XML_ELEMENT_NODE= 1,
- /**
- * An attribute.
- *
- * Objects of this type are an xmlAttr.
- */
- XML_ATTRIBUTE_NODE= 2,
- /**
- * A text node.
- *
- * Objects of this type are an xmlNode.
- */
- XML_TEXT_NODE= 3,
- /**
- * A CDATA section.
- *
- * Objects of this type are an xmlNode.
- */
- XML_CDATA_SECTION_NODE= 4,
- /**
- * An entity reference.
- *
- * Objects of this type are an xmlNode. The `children` member
- * points to the entity declaration if available.
- */
- XML_ENTITY_REF_NODE= 5,
- /** unused */
- XML_ENTITY_NODE= 6,
- /**
- * A processing instruction.
- *
- * Objects of this type are an xmlNode.
- */
- XML_PI_NODE= 7,
- /**
- * A comment.
- *
- * Objects of this type are an xmlNode.
- */
- XML_COMMENT_NODE= 8,
- /**
- * A document.
- *
- * Objects of this type are an xmlDoc.
- */
- XML_DOCUMENT_NODE= 9,
- /** unused */
- XML_DOCUMENT_TYPE_NODE= 10,
- /**
- * A document fragment.
- *
- * Objects of this type are an xmlNode.
- */
- XML_DOCUMENT_FRAG_NODE= 11,
- /** A notation, unused */
- XML_NOTATION_NODE= 12,
- /**
- * An HTML document.
- *
- * Objects of this type are an xmlDoc.
- */
- XML_HTML_DOCUMENT_NODE= 13,
- /**
- * A document type definition.
- *
- * Objects of this type are an xmlDtd.
- */
- XML_DTD_NODE= 14,
- /**
- * An element declaration.
- *
- * Objects of this type are an xmlElement.
- */
- XML_ELEMENT_DECL= 15,
- /**
- * An attribute declaration.
- *
- * Objects of this type are an xmlAttribute.
- */
- XML_ATTRIBUTE_DECL= 16,
- /**
- * An entity declaration.
- *
- * Objects of this type are an xmlEntity.
- */
- XML_ENTITY_DECL= 17,
- /**
- * An XPath namespace node.
- *
- * Can only be returned by the XPath engine. Objects of this
- * type are an xmlNs which has a completely different layout
- * than xmlNode. The `next` member contains a pointer to the
- * xmlNode element to which the namespace applies.
- *
- * Nodes of this type must be handled with extreme care to
- * avoid type confusion bugs.
- */
- XML_NAMESPACE_DECL= 18,
- /**
- * An XInclude start marker.
- *
- * Objects of this type are an xmlNode. Inserted as preceding
- * sibling of XIncluded content.
- */
- XML_XINCLUDE_START= 19,
- /**
- * An XInclude end marker.
- *
- * Objects of this type are an xmlNode. Inserted as following
- * sibling of XIncluded content.
- */
- XML_XINCLUDE_END= 20
- /* XML_DOCB_DOCUMENT_NODE= 21 */ /* removed */
- } xmlElementType;
- /** @cond IGNORE */
- /* For backward compatibility */
- #define XML_DOCB_DOCUMENT_NODE 21
- /** @endcond */
- /** Notation declaration */
- typedef struct _xmlNotation xmlNotation;
- typedef xmlNotation *xmlNotationPtr;
- /**
- * A DTD Notation definition.
- *
- * Should be treated as opaque. Accessing members directly
- * is deprecated.
- */
- struct _xmlNotation {
- /** Notation name */
- const xmlChar *name;
- /** Public identifier, if any */
- const xmlChar *PublicID;
- /** System identifier, if any */
- const xmlChar *SystemID;
- };
- /**
- * A DTD Attribute type definition.
- */
- typedef enum {
- XML_ATTRIBUTE_CDATA = 1,
- XML_ATTRIBUTE_ID,
- XML_ATTRIBUTE_IDREF ,
- XML_ATTRIBUTE_IDREFS,
- XML_ATTRIBUTE_ENTITY,
- XML_ATTRIBUTE_ENTITIES,
- XML_ATTRIBUTE_NMTOKEN,
- XML_ATTRIBUTE_NMTOKENS,
- XML_ATTRIBUTE_ENUMERATION,
- XML_ATTRIBUTE_NOTATION
- } xmlAttributeType;
- /**
- * A DTD Attribute default definition.
- */
- typedef enum {
- XML_ATTRIBUTE_NONE = 1,
- XML_ATTRIBUTE_REQUIRED,
- XML_ATTRIBUTE_IMPLIED,
- XML_ATTRIBUTE_FIXED
- } xmlAttributeDefault;
- /** Enumeration in a DTD */
- typedef struct _xmlEnumeration xmlEnumeration;
- typedef xmlEnumeration *xmlEnumerationPtr;
- /**
- * List structure used when there is an enumeration in DTDs.
- *
- * Should be treated as opaque. Accessing members directly
- * is deprecated.
- */
- struct _xmlEnumeration {
- /** next enumeration */
- struct _xmlEnumeration *next XML_DEPRECATED_MEMBER;
- /** value */
- const xmlChar *name XML_DEPRECATED_MEMBER;
- };
- /** Attribute declaration */
- typedef struct _xmlAttribute xmlAttribute;
- typedef xmlAttribute *xmlAttributePtr;
- /**
- * An Attribute declaration in a DTD.
- *
- * Should be treated as opaque. Accessing members directly
- * is deprecated.
- */
- struct _xmlAttribute {
- /** application data */
- void *_private;
- /** XML_ATTRIBUTE_DECL */
- xmlElementType type;
- /** attribute name */
- const xmlChar *name;
- /** NULL */
- struct _xmlNode *children;
- /** NULL */
- struct _xmlNode *last;
- /** DTD */
- struct _xmlDtd *parent;
- /** next sibling */
- struct _xmlNode *next;
- /** previous sibling */
- struct _xmlNode *prev;
- /** containing document */
- struct _xmlDoc *doc;
- /** next in hash table */
- struct _xmlAttribute *nexth;
- /** attribute type */
- xmlAttributeType atype;
- /** attribute default */
- xmlAttributeDefault def;
- /** default value */
- xmlChar *defaultValue;
- /** enumeration tree if any */
- xmlEnumeration *tree XML_DEPRECATED_MEMBER;
- /** namespace prefix if any */
- const xmlChar *prefix;
- /** element name */
- const xmlChar *elem;
- };
- /**
- * Possible definitions of element content types.
- */
- typedef enum {
- XML_ELEMENT_CONTENT_PCDATA = 1,
- XML_ELEMENT_CONTENT_ELEMENT,
- XML_ELEMENT_CONTENT_SEQ,
- XML_ELEMENT_CONTENT_OR
- } xmlElementContentType;
- /**
- * Possible definitions of element content occurrences.
- */
- typedef enum {
- XML_ELEMENT_CONTENT_ONCE = 1,
- XML_ELEMENT_CONTENT_OPT,
- XML_ELEMENT_CONTENT_MULT,
- XML_ELEMENT_CONTENT_PLUS
- } xmlElementContentOccur;
- /** Element content in element declarations */
- typedef struct _xmlElementContent xmlElementContent;
- typedef xmlElementContent *xmlElementContentPtr;
- /**
- * An XML Element content as stored after parsing an element definition
- * in a DTD.
- *
- * Should be treated as opaque. Accessing members directly
- * is deprecated.
- */
- struct _xmlElementContent {
- /** PCDATA, ELEMENT, SEQ or OR */
- xmlElementContentType type XML_DEPRECATED_MEMBER;
- /** ONCE, OPT, MULT or PLUS */
- xmlElementContentOccur ocur XML_DEPRECATED_MEMBER;
- /** element name */
- const xmlChar *name XML_DEPRECATED_MEMBER;
- /** first child */
- struct _xmlElementContent *c1 XML_DEPRECATED_MEMBER;
- /** second child */
- struct _xmlElementContent *c2 XML_DEPRECATED_MEMBER;
- /** parent */
- struct _xmlElementContent *parent XML_DEPRECATED_MEMBER;
- /** namespace prefix */
- const xmlChar *prefix XML_DEPRECATED_MEMBER;
- };
- /**
- * The different possibilities for an element content type.
- */
- typedef enum {
- XML_ELEMENT_TYPE_UNDEFINED = 0,
- XML_ELEMENT_TYPE_EMPTY = 1,
- XML_ELEMENT_TYPE_ANY,
- XML_ELEMENT_TYPE_MIXED,
- XML_ELEMENT_TYPE_ELEMENT
- } xmlElementTypeVal;
- /** Element declaration */
- typedef struct _xmlElement xmlElement;
- typedef xmlElement *xmlElementPtr;
- /**
- * An XML Element declaration from a DTD.
- *
- * Should be treated as opaque. Accessing members directly
- * is deprecated.
- */
- struct _xmlElement {
- /** application data */
- void *_private;
- /** XML_ELEMENT_DECL */
- xmlElementType type;
- /** element name */
- const xmlChar *name;
- /** NULL */
- struct _xmlNode *children;
- /** NULL */
- struct _xmlNode *last;
- /** -> DTD */
- struct _xmlDtd *parent;
- /** next sibling */
- struct _xmlNode *next;
- /** previous sibling */
- struct _xmlNode *prev;
- /** containing document */
- struct _xmlDoc *doc;
- /** element type */
- xmlElementTypeVal etype;
- /** allowed element content */
- xmlElementContent *content;
- /** list of declared attributes */
- xmlAttribute *attributes;
- /** namespace prefix if any */
- const xmlChar *prefix;
- #ifdef LIBXML_REGEXP_ENABLED
- /** validating regexp */
- xmlRegexp *contModel XML_DEPRECATED_MEMBER;
- #else
- void *contModel XML_DEPRECATED_MEMBER;
- #endif
- };
- /**
- * A namespace declaration node.
- */
- #define XML_LOCAL_NAMESPACE XML_NAMESPACE_DECL
- typedef xmlElementType xmlNsType;
- /** Namespace declaration */
- typedef struct _xmlNs xmlNs;
- typedef xmlNs *xmlNsPtr;
- /**
- * An XML namespace.
- * Note that prefix == NULL is valid, it defines the default namespace
- * within the subtree (until overridden).
- *
- * xmlNsType is unified with xmlElementType.
- *
- * Note that the XPath engine returns XPath namespace nodes as
- * xmlNs cast to xmlNode. This is a terrible design decision that
- * can easily cause type confusion errors. In this case, the `next`
- * member points to the xmlNode element to which the namespace
- * node belongs.
- */
- struct _xmlNs {
- /** next namespace */
- struct _xmlNs *next;
- /** XML_NAMESPACE_DECL */
- xmlNsType type;
- /** namespace URI */
- const xmlChar *href;
- /** namespace prefix */
- const xmlChar *prefix;
- /** application data */
- void *_private;
- /** normally an xmlDoc */
- struct _xmlDoc *context XML_DEPRECATED_MEMBER;
- };
- /** Document type definition (DTD) */
- typedef struct _xmlDtd xmlDtd;
- typedef xmlDtd *xmlDtdPtr;
- /**
- * An XML DTD, as defined by <!DOCTYPE ... There is actually one for
- * the internal subset and for the external subset.
- *
- * Should be treated as opaque. Accessing members directly
- * is deprecated.
- */
- struct _xmlDtd {
- /** application data */
- void *_private;
- /** XML_DTD_NODE */
- xmlElementType type;
- /** name of the DTD */
- const xmlChar *name;
- /** first child */
- struct _xmlNode *children;
- /** last child */
- struct _xmlNode *last;
- /** parent node */
- struct _xmlDoc *parent;
- /** next sibling */
- struct _xmlNode *next;
- /** previous sibling */
- struct _xmlNode *prev;
- /** containing document */
- struct _xmlDoc *doc;
- /* End of common part */
- /** hash table for notations if any */
- void *notations;
- /** hash table for elements if any */
- void *elements;
- /** hash table for attributes if any */
- void *attributes;
- /** hash table for entities if any */
- void *entities;
- /** public identifier */
- xmlChar *ExternalID;
- /** system identifier */
- xmlChar *SystemID;
- /** hash table for parameter entities if any */
- void *pentities;
- };
- /** Attribute of an element */
- typedef struct _xmlAttr xmlAttr;
- typedef xmlAttr *xmlAttrPtr;
- /**
- * An attribute of element.
- */
- struct _xmlAttr {
- /** application data */
- void *_private;
- /** XML_ATTRIBUTE_NODE */
- xmlElementType type;
- /** local name */
- const xmlChar *name;
- /** first child */
- struct _xmlNode *children;
- /** last child */
- struct _xmlNode *last;
- /** parent node */
- struct _xmlNode *parent;
- /** next sibling */
- struct _xmlAttr *next;
- /** previous sibling */
- struct _xmlAttr *prev;
- /** containing document */
- struct _xmlDoc *doc;
- /** namespace if any */
- xmlNs *ns;
- /** attribute type if validating */
- xmlAttributeType atype;
- /** for type/PSVI information */
- void *psvi;
- /** ID struct if any */
- struct _xmlID *id XML_DEPRECATED_MEMBER;
- };
- /** Extra data for ID attributes */
- typedef struct _xmlID xmlID;
- typedef xmlID *xmlIDPtr;
- /**
- * An XML ID instance.
- *
- * Should be treated as opaque. Accessing members directly
- * is deprecated.
- */
- struct _xmlID {
- /* next ID */
- struct _xmlID *next XML_DEPRECATED_MEMBER;
- /* The ID name */
- xmlChar *value XML_DEPRECATED_MEMBER;
- /* The attribute holding it */
- xmlAttr *attr XML_DEPRECATED_MEMBER;
- /* The attribute if attr is not available */
- const xmlChar *name XML_DEPRECATED_MEMBER;
- /* The line number if attr is not available */
- int lineno XML_DEPRECATED_MEMBER;
- /* The document holding the ID */
- struct _xmlDoc *doc XML_DEPRECATED_MEMBER;
- };
- /** @cond ignore */
- typedef struct _xmlRef xmlRef;
- typedef xmlRef *xmlRefPtr;
- /*
- * An XML IDREF instance.
- */
- struct _xmlRef {
- /* next Ref */
- struct _xmlRef *next XML_DEPRECATED_MEMBER;
- /* The Ref name */
- const xmlChar *value XML_DEPRECATED_MEMBER;
- /* The attribute holding it */
- xmlAttr *attr XML_DEPRECATED_MEMBER;
- /* The attribute if attr is not available */
- const xmlChar *name XML_DEPRECATED_MEMBER;
- /* The line number if attr is not available */
- int lineno XML_DEPRECATED_MEMBER;
- };
- /** @endcond */
- /** Generic node type in an XML or HTML tree */
- typedef struct _xmlNode xmlNode;
- typedef xmlNode *xmlNodePtr;
- /**
- * Generic node type in an XML or HTML tree.
- *
- * This is used for
- *
- * - XML_ELEMENT_NODE
- * - XML_TEXT_NODE
- * - XML_CDATA_SECTION_NODE
- * - XML_ENTITY_REF_NODE
- * - XML_PI_NODE
- * - XML_COMMENT_NODE
- * - XML_DOCUMENT_FRAG_NODE
- * - XML_XINCLUDE_START_NODE
- * - XML_XINCLUDE_END_NODE
- *
- * Other node types have a different struct layout than xmlNode,
- * see xmlElementType. Except for XML_NAMESPACE_DECL all nodes
- * share the following members at the same offset:
- *
- * - `_private`
- * - `type` (also for XML_NAMESPACE_DECL)
- * - `name`
- * - `children`
- * - `last`
- * - `parent`
- * - `next`
- * - `prev`
- * - `doc`
- *
- * xmlNode and xmlAttr also share the `ns` member.
- */
- struct _xmlNode {
- /** Application data. Often used by language bindings. */
- void *_private;
- /** Type enum, an xmlElementType value */
- xmlElementType type;
- /**
- * Name of the node.
- *
- * - Local name of elements or attributes. As a corner case,
- * this can also contain Names which are invalid QNames in
- * non-namespace-wellformed documents.
- * - Name of entity references
- * - Target of processing instructions
- * - Fixed string for text and comments
- * - Unused otherwise
- */
- const xmlChar *name;
- /** First child. Entity declaration of entity references. */
- struct _xmlNode *children;
- /** Last child */
- struct _xmlNode *last;
- /** Parent node. NULL for documents or unlinked root nodes. */
- struct _xmlNode *parent;
- /** Next sibling */
- struct _xmlNode *next;
- /** Previous sibling */
- struct _xmlNode *prev;
- /**
- * Associated document.
- *
- * Used to access DTDs, entities, ID tables, dictionary or
- * other document properties. All children of a node share the
- * same document.
- */
- struct _xmlDoc *doc;
- /* End of common part */
- /** Namespace of element if any */
- xmlNs *ns;
- /**
- * Content of text, comment, PI nodes.
- *
- * Sort index for elements after calling #xmlXPathOrderDocElems.
- * Content of internal entities for entity references.
- */
- xmlChar *content;
- /**
- * First attribute of element.
- *
- * Also used to store small strings with XML_PARSE_COMPACT.
- */
- struct _xmlAttr *properties;
- /** First namespace definition of element */
- xmlNs *nsDef;
- /** For type/PSVI information */
- void *psvi;
- /** Line number */
- unsigned short line;
- /** Extra data for XPath/XSLT */
- unsigned short extra;
- };
- /**
- * Set of properties of the document as found by the parser.
- * Some of them are linked to similarly named xmlParserOption.
- */
- typedef enum {
- /** document is XML well formed */
- XML_DOC_WELLFORMED = 1<<0,
- /** document is Namespace valid */
- XML_DOC_NSVALID = 1<<1,
- /** parsed with old XML-1.0 parser */
- XML_DOC_OLD10 = 1<<2,
- /** DTD validation was successful */
- XML_DOC_DTDVALID = 1<<3,
- /** XInclude substitution was done */
- XML_DOC_XINCLUDE = 1<<4,
- /** Document was built using the API and not by parsing an instance */
- XML_DOC_USERBUILT = 1<<5,
- /** built for internal processing */
- XML_DOC_INTERNAL = 1<<6,
- /** parsed or built HTML document */
- XML_DOC_HTML = 1<<7
- } xmlDocProperties;
- /** XML or HTML document */
- typedef struct _xmlDoc xmlDoc;
- typedef xmlDoc *xmlDocPtr;
- /**
- * An XML or HTML document.
- */
- struct _xmlDoc {
- /** application data */
- void *_private;
- /** XML_DOCUMENT_NODE or XML_HTML_DOCUMENT_NODE */
- xmlElementType type;
- /** NULL */
- char *name;
- /** first child */
- struct _xmlNode *children;
- /** last child */
- struct _xmlNode *last;
- /** parent node */
- struct _xmlNode *parent;
- /** next sibling */
- struct _xmlNode *next;
- /** previous sibling */
- struct _xmlNode *prev;
- /** reference to itself */
- struct _xmlDoc *doc;
- /* End of common part */
- /** level of zlib compression */
- int compression;
- /**
- * standalone document (no external refs)
- *
- * - 1 if standalone="yes",
- * - 0 if standalone="no",
- * - -1 if there is no XML declaration,
- * - -2 if there is an XML declaration, but no
- * standalone attribute was specified
- */
- int standalone;
- /** internal subset */
- struct _xmlDtd *intSubset;
- /** external subset */
- struct _xmlDtd *extSubset;
- /** used to hold the XML namespace if needed */
- struct _xmlNs *oldNs;
- /** version string from XML declaration */
- xmlChar *version;
- /** actual encoding if any */
- xmlChar *encoding;
- /** hash table for ID attributes if any */
- void *ids;
- /** hash table for IDREFs attributes if any */
- void *refs XML_DEPRECATED_MEMBER;
- /** URI of the document */
- xmlChar *URL;
- /** unused */
- int charset;
- /** dict used to allocate names if any */
- struct _xmlDict *dict;
- /** for type/PSVI information */
- void *psvi;
- /** xmlParserOption enum used to parse the document */
- int parseFlags;
- /** xmlDocProperties of the document */
- int properties;
- };
- /** Context for DOM wrapper operations */
- typedef struct _xmlDOMWrapCtxt xmlDOMWrapCtxt;
- typedef xmlDOMWrapCtxt *xmlDOMWrapCtxtPtr;
- /**
- * A function called to acquire namespaces (xmlNs) from the wrapper.
- *
- * @param ctxt a DOM wrapper context
- * @param node the context node (element or attribute)
- * @param nsName the requested namespace name
- * @param nsPrefix the requested namespace prefix
- * @returns an xmlNs or NULL in case of an error.
- */
- typedef xmlNs *(*xmlDOMWrapAcquireNsFunction) (xmlDOMWrapCtxt *ctxt,
- xmlNode *node,
- const xmlChar *nsName,
- const xmlChar *nsPrefix);
- /**
- * Context for DOM wrapper-operations.
- */
- struct _xmlDOMWrapCtxt {
- void * _private;
- /*
- * The type of this context, just in case we need specialized
- * contexts in the future.
- */
- int type;
- /*
- * Internal namespace map used for various operations.
- */
- void * namespaceMap;
- /*
- * Use this one to acquire an xmlNs intended for node->ns.
- * (Note that this is not intended for elem->nsDef).
- */
- xmlDOMWrapAcquireNsFunction getNsForNodeFunc;
- };
- /**
- * Signature for the registration callback of a created node
- *
- * @param node the current node
- */
- typedef void (*xmlRegisterNodeFunc) (xmlNode *node);
- /**
- * Signature for the deregistration callback of a discarded node
- *
- * @param node the current node
- */
- typedef void (*xmlDeregisterNodeFunc) (xmlNode *node);
- /**
- * Macro for compatibility naming layer with libxml1. Maps
- * to "children."
- */
- #ifndef xmlChildrenNode
- #define xmlChildrenNode children
- #endif
- /**
- * Macro for compatibility naming layer with libxml1. Maps
- * to "children".
- */
- #ifndef xmlRootNode
- #define xmlRootNode children
- #endif
- /*
- * Variables.
- */
- /** @cond ignore */
- XML_DEPRECATED
- XMLPUBFUN xmlRegisterNodeFunc *__xmlRegisterNodeDefaultValue(void);
- XML_DEPRECATED
- XMLPUBFUN xmlDeregisterNodeFunc *__xmlDeregisterNodeDefaultValue(void);
- #ifndef XML_GLOBALS_NO_REDEFINITION
- #define xmlRegisterNodeDefaultValue \
- (*__xmlRegisterNodeDefaultValue())
- #define xmlDeregisterNodeDefaultValue \
- (*__xmlDeregisterNodeDefaultValue())
- #endif
- /** @endcond */
- /*
- * Some helper functions
- */
- XMLPUBFUN int
- xmlValidateNCName (const xmlChar *value,
- int space);
- XMLPUBFUN int
- xmlValidateQName (const xmlChar *value,
- int space);
- XMLPUBFUN int
- xmlValidateName (const xmlChar *value,
- int space);
- XMLPUBFUN int
- xmlValidateNMToken (const xmlChar *value,
- int space);
- XMLPUBFUN xmlChar *
- xmlBuildQName (const xmlChar *ncname,
- const xmlChar *prefix,
- xmlChar *memory,
- int len);
- XMLPUBFUN xmlChar *
- xmlSplitQName2 (const xmlChar *name,
- xmlChar **prefix);
- XMLPUBFUN const xmlChar *
- xmlSplitQName3 (const xmlChar *name,
- int *len);
- /*
- * Creating/freeing new structures.
- */
- XMLPUBFUN xmlDtd *
- xmlCreateIntSubset (xmlDoc *doc,
- const xmlChar *name,
- const xmlChar *publicId,
- const xmlChar *systemId);
- XMLPUBFUN xmlDtd *
- xmlNewDtd (xmlDoc *doc,
- const xmlChar *name,
- const xmlChar *publicId,
- const xmlChar *systemId);
- XMLPUBFUN xmlDtd *
- xmlGetIntSubset (const xmlDoc *doc);
- XMLPUBFUN void
- xmlFreeDtd (xmlDtd *cur);
- XMLPUBFUN xmlNs *
- xmlNewNs (xmlNode *node,
- const xmlChar *href,
- const xmlChar *prefix);
- XMLPUBFUN void
- xmlFreeNs (xmlNs *cur);
- XMLPUBFUN void
- xmlFreeNsList (xmlNs *cur);
- XMLPUBFUN xmlDoc *
- xmlNewDoc (const xmlChar *version);
- XMLPUBFUN void
- xmlFreeDoc (xmlDoc *cur);
- XMLPUBFUN xmlAttr *
- xmlNewDocProp (xmlDoc *doc,
- const xmlChar *name,
- const xmlChar *value);
- XMLPUBFUN xmlAttr *
- xmlNewProp (xmlNode *node,
- const xmlChar *name,
- const xmlChar *value);
- XMLPUBFUN xmlAttr *
- xmlNewNsProp (xmlNode *node,
- xmlNs *ns,
- const xmlChar *name,
- const xmlChar *value);
- XMLPUBFUN xmlAttr *
- xmlNewNsPropEatName (xmlNode *node,
- xmlNs *ns,
- xmlChar *name,
- const xmlChar *value);
- XMLPUBFUN void
- xmlFreePropList (xmlAttr *cur);
- XMLPUBFUN void
- xmlFreeProp (xmlAttr *cur);
- XMLPUBFUN xmlAttr *
- xmlCopyProp (xmlNode *target,
- xmlAttr *cur);
- XMLPUBFUN xmlAttr *
- xmlCopyPropList (xmlNode *target,
- xmlAttr *cur);
- XMLPUBFUN xmlDtd *
- xmlCopyDtd (xmlDtd *dtd);
- XMLPUBFUN xmlDoc *
- xmlCopyDoc (xmlDoc *doc,
- int recursive);
- /*
- * Creating new nodes.
- */
- XMLPUBFUN xmlNode *
- xmlNewDocNode (xmlDoc *doc,
- xmlNs *ns,
- const xmlChar *name,
- const xmlChar *content);
- XMLPUBFUN xmlNode *
- xmlNewDocNodeEatName (xmlDoc *doc,
- xmlNs *ns,
- xmlChar *name,
- const xmlChar *content);
- XMLPUBFUN xmlNode *
- xmlNewNode (xmlNs *ns,
- const xmlChar *name);
- XMLPUBFUN xmlNode *
- xmlNewNodeEatName (xmlNs *ns,
- xmlChar *name);
- XMLPUBFUN xmlNode *
- xmlNewChild (xmlNode *parent,
- xmlNs *ns,
- const xmlChar *name,
- const xmlChar *content);
- XMLPUBFUN xmlNode *
- xmlNewDocText (const xmlDoc *doc,
- const xmlChar *content);
- XMLPUBFUN xmlNode *
- xmlNewText (const xmlChar *content);
- XMLPUBFUN xmlNode *
- xmlNewDocPI (xmlDoc *doc,
- const xmlChar *name,
- const xmlChar *content);
- XMLPUBFUN xmlNode *
- xmlNewPI (const xmlChar *name,
- const xmlChar *content);
- XMLPUBFUN xmlNode *
- xmlNewDocTextLen (xmlDoc *doc,
- const xmlChar *content,
- int len);
- XMLPUBFUN xmlNode *
- xmlNewTextLen (const xmlChar *content,
- int len);
- XMLPUBFUN xmlNode *
- xmlNewDocComment (xmlDoc *doc,
- const xmlChar *content);
- XMLPUBFUN xmlNode *
- xmlNewComment (const xmlChar *content);
- XMLPUBFUN xmlNode *
- xmlNewCDataBlock (xmlDoc *doc,
- const xmlChar *content,
- int len);
- XMLPUBFUN xmlNode *
- xmlNewCharRef (xmlDoc *doc,
- const xmlChar *name);
- XMLPUBFUN xmlNode *
- xmlNewReference (const xmlDoc *doc,
- const xmlChar *name);
- XMLPUBFUN xmlNode *
- xmlCopyNode (xmlNode *node,
- int recursive);
- XMLPUBFUN xmlNode *
- xmlDocCopyNode (xmlNode *node,
- xmlDoc *doc,
- int recursive);
- XMLPUBFUN xmlNode *
- xmlDocCopyNodeList (xmlDoc *doc,
- xmlNode *node);
- XMLPUBFUN xmlNode *
- xmlCopyNodeList (xmlNode *node);
- XMLPUBFUN xmlNode *
- xmlNewTextChild (xmlNode *parent,
- xmlNs *ns,
- const xmlChar *name,
- const xmlChar *content);
- XMLPUBFUN xmlNode *
- xmlNewDocRawNode (xmlDoc *doc,
- xmlNs *ns,
- const xmlChar *name,
- const xmlChar *content);
- XMLPUBFUN xmlNode *
- xmlNewDocFragment (xmlDoc *doc);
- /*
- * Navigating.
- */
- XMLPUBFUN long
- xmlGetLineNo (const xmlNode *node);
- XMLPUBFUN xmlChar *
- xmlGetNodePath (const xmlNode *node);
- XMLPUBFUN xmlNode *
- xmlDocGetRootElement (const xmlDoc *doc);
- XMLPUBFUN xmlNode *
- xmlGetLastChild (const xmlNode *parent);
- XMLPUBFUN int
- xmlNodeIsText (const xmlNode *node);
- XMLPUBFUN int
- xmlIsBlankNode (const xmlNode *node);
- /*
- * Changing the structure.
- */
- XMLPUBFUN xmlNode *
- xmlDocSetRootElement (xmlDoc *doc,
- xmlNode *root);
- XMLPUBFUN void
- xmlNodeSetName (xmlNode *cur,
- const xmlChar *name);
- XMLPUBFUN xmlNode *
- xmlAddChild (xmlNode *parent,
- xmlNode *cur);
- XMLPUBFUN xmlNode *
- xmlAddChildList (xmlNode *parent,
- xmlNode *cur);
- XMLPUBFUN xmlNode *
- xmlReplaceNode (xmlNode *old,
- xmlNode *cur);
- XMLPUBFUN xmlNode *
- xmlAddPrevSibling (xmlNode *cur,
- xmlNode *elem);
- XMLPUBFUN xmlNode *
- xmlAddSibling (xmlNode *cur,
- xmlNode *elem);
- XMLPUBFUN xmlNode *
- xmlAddNextSibling (xmlNode *cur,
- xmlNode *elem);
- XMLPUBFUN void
- xmlUnlinkNode (xmlNode *cur);
- XMLPUBFUN xmlNode *
- xmlTextMerge (xmlNode *first,
- xmlNode *second);
- XMLPUBFUN int
- xmlTextConcat (xmlNode *node,
- const xmlChar *content,
- int len);
- XMLPUBFUN void
- xmlFreeNodeList (xmlNode *cur);
- XMLPUBFUN void
- xmlFreeNode (xmlNode *cur);
- XMLPUBFUN int
- xmlSetTreeDoc (xmlNode *tree,
- xmlDoc *doc);
- XMLPUBFUN int
- xmlSetListDoc (xmlNode *list,
- xmlDoc *doc);
- /*
- * Namespaces.
- */
- XMLPUBFUN xmlNs *
- xmlSearchNs (xmlDoc *doc,
- xmlNode *node,
- const xmlChar *nameSpace);
- XMLPUBFUN xmlNs *
- xmlSearchNsByHref (xmlDoc *doc,
- xmlNode *node,
- const xmlChar *href);
- XMLPUBFUN int
- xmlGetNsListSafe (const xmlDoc *doc,
- const xmlNode *node,
- xmlNs ***out);
- XMLPUBFUN xmlNs **
- xmlGetNsList (const xmlDoc *doc,
- const xmlNode *node);
- XMLPUBFUN void
- xmlSetNs (xmlNode *node,
- xmlNs *ns);
- XMLPUBFUN xmlNs *
- xmlCopyNamespace (xmlNs *cur);
- XMLPUBFUN xmlNs *
- xmlCopyNamespaceList (xmlNs *cur);
- /*
- * Changing the content.
- */
- XMLPUBFUN xmlAttr *
- xmlSetProp (xmlNode *node,
- const xmlChar *name,
- const xmlChar *value);
- XMLPUBFUN xmlAttr *
- xmlSetNsProp (xmlNode *node,
- xmlNs *ns,
- const xmlChar *name,
- const xmlChar *value);
- XMLPUBFUN int
- xmlNodeGetAttrValue (const xmlNode *node,
- const xmlChar *name,
- const xmlChar *nsUri,
- xmlChar **out);
- XMLPUBFUN xmlChar *
- xmlGetNoNsProp (const xmlNode *node,
- const xmlChar *name);
- XMLPUBFUN xmlChar *
- xmlGetProp (const xmlNode *node,
- const xmlChar *name);
- XMLPUBFUN xmlAttr *
- xmlHasProp (const xmlNode *node,
- const xmlChar *name);
- XMLPUBFUN xmlAttr *
- xmlHasNsProp (const xmlNode *node,
- const xmlChar *name,
- const xmlChar *nameSpace);
- XMLPUBFUN xmlChar *
- xmlGetNsProp (const xmlNode *node,
- const xmlChar *name,
- const xmlChar *nameSpace);
- XMLPUBFUN xmlNode *
- xmlStringGetNodeList (const xmlDoc *doc,
- const xmlChar *value);
- XMLPUBFUN xmlNode *
- xmlStringLenGetNodeList (const xmlDoc *doc,
- const xmlChar *value,
- int len);
- XMLPUBFUN xmlChar *
- xmlNodeListGetString (xmlDoc *doc,
- const xmlNode *list,
- int inLine);
- XMLPUBFUN xmlChar *
- xmlNodeListGetRawString (const xmlDoc *doc,
- const xmlNode *list,
- int inLine);
- XMLPUBFUN int
- xmlNodeSetContent (xmlNode *cur,
- const xmlChar *content);
- XMLPUBFUN int
- xmlNodeSetContentLen (xmlNode *cur,
- const xmlChar *content,
- int len);
- XMLPUBFUN int
- xmlNodeAddContent (xmlNode *cur,
- const xmlChar *content);
- XMLPUBFUN int
- xmlNodeAddContentLen (xmlNode *cur,
- const xmlChar *content,
- int len);
- XMLPUBFUN xmlChar *
- xmlNodeGetContent (const xmlNode *cur);
- XMLPUBFUN int
- xmlNodeBufGetContent (xmlBuffer *buffer,
- const xmlNode *cur);
- XMLPUBFUN int
- xmlBufGetNodeContent (xmlBuf *buf,
- const xmlNode *cur);
- XMLPUBFUN xmlChar *
- xmlNodeGetLang (const xmlNode *cur);
- XMLPUBFUN int
- xmlNodeGetSpacePreserve (const xmlNode *cur);
- XMLPUBFUN int
- xmlNodeSetLang (xmlNode *cur,
- const xmlChar *lang);
- XMLPUBFUN int
- xmlNodeSetSpacePreserve (xmlNode *cur,
- int val);
- XMLPUBFUN int
- xmlNodeGetBaseSafe (const xmlDoc *doc,
- const xmlNode *cur,
- xmlChar **baseOut);
- XMLPUBFUN xmlChar *
- xmlNodeGetBase (const xmlDoc *doc,
- const xmlNode *cur);
- XMLPUBFUN int
- xmlNodeSetBase (xmlNode *cur,
- const xmlChar *uri);
- /*
- * Removing content.
- */
- XMLPUBFUN int
- xmlRemoveProp (xmlAttr *cur);
- XMLPUBFUN int
- xmlUnsetNsProp (xmlNode *node,
- xmlNs *ns,
- const xmlChar *name);
- XMLPUBFUN int
- xmlUnsetProp (xmlNode *node,
- const xmlChar *name);
- #ifdef LIBXML_OUTPUT_ENABLED
- XMLPUBFUN void xmlAttrSerializeTxtContent(xmlBuffer *buf,
- xmlDoc *doc,
- xmlAttr *attr,
- const xmlChar *string);
- #endif /* LIBXML_OUTPUT_ENABLED */
- /*
- * Namespace handling.
- */
- XMLPUBFUN int
- xmlReconciliateNs (xmlDoc *doc,
- xmlNode *tree);
- #ifdef LIBXML_OUTPUT_ENABLED
- /*
- * Saving.
- */
- XMLPUBFUN void
- xmlDocDumpFormatMemory (xmlDoc *cur,
- xmlChar **mem,
- int *size,
- int format);
- XMLPUBFUN void
- xmlDocDumpMemory (xmlDoc *cur,
- xmlChar **mem,
- int *size);
- XMLPUBFUN void
- xmlDocDumpMemoryEnc (xmlDoc *out_doc,
- xmlChar **doc_txt_ptr,
- int * doc_txt_len,
- const char *txt_encoding);
- XMLPUBFUN void
- xmlDocDumpFormatMemoryEnc(xmlDoc *out_doc,
- xmlChar **doc_txt_ptr,
- int * doc_txt_len,
- const char *txt_encoding,
- int format);
- XMLPUBFUN int
- xmlDocFormatDump (FILE *f,
- xmlDoc *cur,
- int format);
- XMLPUBFUN int
- xmlDocDump (FILE *f,
- xmlDoc *cur);
- XMLPUBFUN void
- xmlElemDump (FILE *f,
- xmlDoc *doc,
- xmlNode *cur);
- XMLPUBFUN int
- xmlSaveFile (const char *filename,
- xmlDoc *cur);
- XMLPUBFUN int
- xmlSaveFormatFile (const char *filename,
- xmlDoc *cur,
- int format);
- XMLPUBFUN size_t
- xmlBufNodeDump (xmlBuf *buf,
- xmlDoc *doc,
- xmlNode *cur,
- int level,
- int format);
- XMLPUBFUN int
- xmlNodeDump (xmlBuffer *buf,
- xmlDoc *doc,
- xmlNode *cur,
- int level,
- int format);
- XMLPUBFUN int
- xmlSaveFileTo (xmlOutputBuffer *buf,
- xmlDoc *cur,
- const char *encoding);
- XMLPUBFUN int
- xmlSaveFormatFileTo (xmlOutputBuffer *buf,
- xmlDoc *cur,
- const char *encoding,
- int format);
- XMLPUBFUN void
- xmlNodeDumpOutput (xmlOutputBuffer *buf,
- xmlDoc *doc,
- xmlNode *cur,
- int level,
- int format,
- const char *encoding);
- XMLPUBFUN int
- xmlSaveFormatFileEnc (const char *filename,
- xmlDoc *cur,
- const char *encoding,
- int format);
- XMLPUBFUN int
- xmlSaveFileEnc (const char *filename,
- xmlDoc *cur,
- const char *encoding);
- #endif /* LIBXML_OUTPUT_ENABLED */
- /*
- * XHTML
- */
- XMLPUBFUN int
- xmlIsXHTML (const xmlChar *systemID,
- const xmlChar *publicID);
- /*
- * Compression.
- */
- XMLPUBFUN int
- xmlGetDocCompressMode (const xmlDoc *doc);
- XMLPUBFUN void
- xmlSetDocCompressMode (xmlDoc *doc,
- int mode);
- XML_DEPRECATED
- XMLPUBFUN int
- xmlGetCompressMode (void);
- XML_DEPRECATED
- XMLPUBFUN void
- xmlSetCompressMode (int mode);
- /*
- * DOM-wrapper helper functions.
- */
- XMLPUBFUN xmlDOMWrapCtxt *
- xmlDOMWrapNewCtxt (void);
- XMLPUBFUN void
- xmlDOMWrapFreeCtxt (xmlDOMWrapCtxt *ctxt);
- XMLPUBFUN int
- xmlDOMWrapReconcileNamespaces(xmlDOMWrapCtxt *ctxt,
- xmlNode *elem,
- int options);
- XMLPUBFUN int
- xmlDOMWrapAdoptNode (xmlDOMWrapCtxt *ctxt,
- xmlDoc *sourceDoc,
- xmlNode *node,
- xmlDoc *destDoc,
- xmlNode *destParent,
- int options);
- XMLPUBFUN int
- xmlDOMWrapRemoveNode (xmlDOMWrapCtxt *ctxt,
- xmlDoc *doc,
- xmlNode *node,
- int options);
- XMLPUBFUN int
- xmlDOMWrapCloneNode (xmlDOMWrapCtxt *ctxt,
- xmlDoc *sourceDoc,
- xmlNode *node,
- xmlNode **clonedNode,
- xmlDoc *destDoc,
- xmlNode *destParent,
- int deep,
- int options);
- /*
- * 5 interfaces from DOM ElementTraversal, but different in entities
- * traversal.
- */
- XMLPUBFUN unsigned long
- xmlChildElementCount (xmlNode *parent);
- XMLPUBFUN xmlNode *
- xmlNextElementSibling (xmlNode *node);
- XMLPUBFUN xmlNode *
- xmlFirstElementChild (xmlNode *parent);
- XMLPUBFUN xmlNode *
- xmlLastElementChild (xmlNode *parent);
- XMLPUBFUN xmlNode *
- xmlPreviousElementSibling (xmlNode *node);
- XML_DEPRECATED
- XMLPUBFUN xmlRegisterNodeFunc
- xmlRegisterNodeDefault (xmlRegisterNodeFunc func);
- XML_DEPRECATED
- XMLPUBFUN xmlDeregisterNodeFunc
- xmlDeregisterNodeDefault (xmlDeregisterNodeFunc func);
- XML_DEPRECATED
- XMLPUBFUN xmlRegisterNodeFunc
- xmlThrDefRegisterNodeDefault(xmlRegisterNodeFunc func);
- XML_DEPRECATED
- XMLPUBFUN xmlDeregisterNodeFunc
- xmlThrDefDeregisterNodeDefault(xmlDeregisterNodeFunc func);
- /*
- * Handling Buffers, the old ones see `xmlBuf` for the new ones.
- */
- XML_DEPRECATED
- XMLPUBFUN void
- xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme);
- XML_DEPRECATED
- XMLPUBFUN xmlBufferAllocationScheme
- xmlGetBufferAllocationScheme(void);
- XMLPUBFUN xmlBuffer *
- xmlBufferCreate (void);
- XMLPUBFUN xmlBuffer *
- xmlBufferCreateSize (size_t size);
- XMLPUBFUN xmlBuffer *
- xmlBufferCreateStatic (void *mem,
- size_t size);
- XML_DEPRECATED
- XMLPUBFUN int
- xmlBufferResize (xmlBuffer *buf,
- unsigned int size);
- XMLPUBFUN void
- xmlBufferFree (xmlBuffer *buf);
- XMLPUBFUN int
- xmlBufferDump (FILE *file,
- xmlBuffer *buf);
- XMLPUBFUN int
- xmlBufferAdd (xmlBuffer *buf,
- const xmlChar *str,
- int len);
- XMLPUBFUN int
- xmlBufferAddHead (xmlBuffer *buf,
- const xmlChar *str,
- int len);
- XMLPUBFUN int
- xmlBufferCat (xmlBuffer *buf,
- const xmlChar *str);
- XMLPUBFUN int
- xmlBufferCCat (xmlBuffer *buf,
- const char *str);
- XML_DEPRECATED
- XMLPUBFUN int
- xmlBufferShrink (xmlBuffer *buf,
- unsigned int len);
- XML_DEPRECATED
- XMLPUBFUN int
- xmlBufferGrow (xmlBuffer *buf,
- unsigned int len);
- XMLPUBFUN void
- xmlBufferEmpty (xmlBuffer *buf);
- XMLPUBFUN const xmlChar*
- xmlBufferContent (const xmlBuffer *buf);
- XMLPUBFUN xmlChar*
- xmlBufferDetach (xmlBuffer *buf);
- XMLPUBFUN void
- xmlBufferSetAllocationScheme(xmlBuffer *buf,
- xmlBufferAllocationScheme scheme);
- XMLPUBFUN int
- xmlBufferLength (const xmlBuffer *buf);
- XMLPUBFUN void
- xmlBufferWriteCHAR (xmlBuffer *buf,
- const xmlChar *string);
- XMLPUBFUN void
- xmlBufferWriteChar (xmlBuffer *buf,
- const char *string);
- XMLPUBFUN void
- xmlBufferWriteQuotedString(xmlBuffer *buf,
- const xmlChar *string);
- /*
- * A few public routines for xmlBuf. As those are expected to be used
- * mostly internally the bulk of the routines are internal in buf.h
- */
- XMLPUBFUN xmlChar* xmlBufContent (const xmlBuf* buf);
- XMLPUBFUN xmlChar* xmlBufEnd (xmlBuf *buf);
- XMLPUBFUN size_t xmlBufUse (xmlBuf *buf);
- XMLPUBFUN size_t xmlBufShrink (xmlBuf *buf, size_t len);
- #ifdef __cplusplus
- }
- #endif
- #endif /* __XML_TREE_H__ */
- #endif /* XML_TREE_INTERNALS */
|