| /** | |
| * @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 */ | |