Annotation of embedaddon/libxml2/include/libxml/tree.h, revision 1.1.1.3

1.1       misho       1: /*
                      2:  * Summary: interfaces for tree manipulation
                      3:  * Description: this module describes the structures found in an tree resulting
                      4:  *              from an XML or HTML parsing, as well as the API provided for
                      5:  *              various processing on that tree
                      6:  *
                      7:  * Copy: See Copyright for the status of this software.
                      8:  *
                      9:  * Author: Daniel Veillard
                     10:  */
                     11: 
                     12: #ifndef __XML_TREE_H__
                     13: #define __XML_TREE_H__
                     14: 
                     15: #include <stdio.h>
1.1.1.3 ! misho      16: #include <limits.h>
1.1       misho      17: #include <libxml/xmlversion.h>
                     18: #include <libxml/xmlstring.h>
                     19: 
                     20: #ifdef __cplusplus
                     21: extern "C" {
                     22: #endif
                     23: 
                     24: /*
                     25:  * Some of the basic types pointer to structures:
                     26:  */
                     27: /* xmlIO.h */
                     28: typedef struct _xmlParserInputBuffer xmlParserInputBuffer;
                     29: typedef xmlParserInputBuffer *xmlParserInputBufferPtr;
                     30: 
                     31: typedef struct _xmlOutputBuffer xmlOutputBuffer;
                     32: typedef xmlOutputBuffer *xmlOutputBufferPtr;
                     33: 
                     34: /* parser.h */
                     35: typedef struct _xmlParserInput xmlParserInput;
                     36: typedef xmlParserInput *xmlParserInputPtr;
                     37: 
                     38: typedef struct _xmlParserCtxt xmlParserCtxt;
                     39: typedef xmlParserCtxt *xmlParserCtxtPtr;
                     40: 
                     41: typedef struct _xmlSAXLocator xmlSAXLocator;
                     42: typedef xmlSAXLocator *xmlSAXLocatorPtr;
                     43: 
                     44: typedef struct _xmlSAXHandler xmlSAXHandler;
                     45: typedef xmlSAXHandler *xmlSAXHandlerPtr;
                     46: 
                     47: /* entities.h */
                     48: typedef struct _xmlEntity xmlEntity;
                     49: typedef xmlEntity *xmlEntityPtr;
                     50: 
                     51: /**
                     52:  * BASE_BUFFER_SIZE:
                     53:  *
                     54:  * default buffer size 4000.
                     55:  */
                     56: #define BASE_BUFFER_SIZE 4096
                     57: 
                     58: /**
                     59:  * LIBXML_NAMESPACE_DICT:
                     60:  *
                     61:  * Defines experimental behaviour:
                     62:  * 1) xmlNs gets an additional field @context (a xmlDoc)
                     63:  * 2) when creating a tree, xmlNs->href is stored in the dict of xmlDoc.
                     64:  */
                     65: /* #define LIBXML_NAMESPACE_DICT */
                     66: 
                     67: /**
                     68:  * xmlBufferAllocationScheme:
                     69:  *
                     70:  * A buffer allocation scheme can be defined to either match exactly the
                     71:  * need or double it's allocated size each time it is found too small.
                     72:  */
                     73: 
                     74: typedef enum {
                     75:     XML_BUFFER_ALLOC_DOUBLEIT, /* double each time one need to grow */
                     76:     XML_BUFFER_ALLOC_EXACT,    /* grow only to the minimal size */
                     77:     XML_BUFFER_ALLOC_IMMUTABLE, /* immutable buffer */
1.1.1.2   misho      78:     XML_BUFFER_ALLOC_IO,       /* special allocation scheme used for I/O */
                     79:     XML_BUFFER_ALLOC_HYBRID    /* exact up to a threshold, and doubleit thereafter */
1.1       misho      80: } xmlBufferAllocationScheme;
                     81: 
                     82: /**
                     83:  * xmlBuffer:
                     84:  *
1.1.1.3 ! misho      85:  * A buffer structure, this old construct is limited to 2GB and
        !            86:  * is being deprecated, use API with xmlBuf instead
1.1       misho      87:  */
                     88: typedef struct _xmlBuffer xmlBuffer;
                     89: typedef xmlBuffer *xmlBufferPtr;
                     90: struct _xmlBuffer {
                     91:     xmlChar *content;          /* The buffer content UTF8 */
                     92:     unsigned int use;          /* The buffer size used */
                     93:     unsigned int size;         /* The buffer size */
                     94:     xmlBufferAllocationScheme alloc; /* The realloc method */
                     95:     xmlChar *contentIO;                /* in IO mode we may have a different base */
                     96: };
                     97: 
                     98: /**
1.1.1.3 ! misho      99:  * xmlBuf:
        !           100:  *
        !           101:  * A buffer structure, new one, the actual structure internals are not public
        !           102:  */
        !           103: 
        !           104: typedef struct _xmlBuf xmlBuf;
        !           105: 
        !           106: /**
        !           107:  * xmlBufPtr:
        !           108:  *
        !           109:  * A pointer to a buffer structure, the actual structure internals are not
        !           110:  * public
        !           111:  */
        !           112: 
        !           113: typedef xmlBuf *xmlBufPtr;
        !           114: 
        !           115: /*
        !           116:  * A few public routines for xmlBuf. As those are expected to be used
        !           117:  * mostly internally the bulk of the routines are internal in buf.h
        !           118:  */
        !           119: XMLPUBFUN xmlChar* XMLCALL       xmlBufContent (const xmlBufPtr buf);
        !           120: XMLPUBFUN xmlChar* XMLCALL       xmlBufEnd      (const xmlBufPtr buf);
        !           121: XMLPUBFUN size_t XMLCALL         xmlBufUse      (const xmlBufPtr buf);
        !           122: XMLPUBFUN size_t XMLCALL         xmlBufShrink  (xmlBufPtr buf, size_t len);
        !           123: 
        !           124: /*
        !           125:  * LIBXML2_NEW_BUFFER:
        !           126:  *
        !           127:  * Macro used to express that the API use the new buffers for
        !           128:  * xmlParserInputBuffer and xmlOutputBuffer. The change was
        !           129:  * introduced in 2.9.0.
        !           130:  */
        !           131: #define LIBXML2_NEW_BUFFER
        !           132: 
        !           133: /**
1.1       misho     134:  * XML_XML_NAMESPACE:
                    135:  *
                    136:  * This is the namespace for the special xml: prefix predefined in the
                    137:  * XML Namespace specification.
                    138:  */
                    139: #define XML_XML_NAMESPACE \
                    140:     (const xmlChar *) "http://www.w3.org/XML/1998/namespace"
                    141: 
                    142: /**
                    143:  * XML_XML_ID:
                    144:  *
                    145:  * This is the name for the special xml:id attribute
                    146:  */
                    147: #define XML_XML_ID (const xmlChar *) "xml:id"
                    148: 
                    149: /*
                    150:  * The different element types carried by an XML tree.
                    151:  *
                    152:  * NOTE: This is synchronized with DOM Level1 values
                    153:  *       See http://www.w3.org/TR/REC-DOM-Level-1/
                    154:  *
                    155:  * Actually this had diverged a bit, and now XML_DOCUMENT_TYPE_NODE should
                    156:  * be deprecated to use an XML_DTD_NODE.
                    157:  */
                    158: typedef enum {
                    159:     XML_ELEMENT_NODE=          1,
                    160:     XML_ATTRIBUTE_NODE=                2,
                    161:     XML_TEXT_NODE=             3,
                    162:     XML_CDATA_SECTION_NODE=    4,
                    163:     XML_ENTITY_REF_NODE=       5,
                    164:     XML_ENTITY_NODE=           6,
                    165:     XML_PI_NODE=               7,
                    166:     XML_COMMENT_NODE=          8,
                    167:     XML_DOCUMENT_NODE=         9,
                    168:     XML_DOCUMENT_TYPE_NODE=    10,
                    169:     XML_DOCUMENT_FRAG_NODE=    11,
                    170:     XML_NOTATION_NODE=         12,
                    171:     XML_HTML_DOCUMENT_NODE=    13,
                    172:     XML_DTD_NODE=              14,
                    173:     XML_ELEMENT_DECL=          15,
                    174:     XML_ATTRIBUTE_DECL=                16,
                    175:     XML_ENTITY_DECL=           17,
                    176:     XML_NAMESPACE_DECL=                18,
                    177:     XML_XINCLUDE_START=                19,
                    178:     XML_XINCLUDE_END=          20
                    179: #ifdef LIBXML_DOCB_ENABLED
                    180:    ,XML_DOCB_DOCUMENT_NODE=    21
                    181: #endif
                    182: } xmlElementType;
                    183: 
                    184: 
                    185: /**
                    186:  * xmlNotation:
                    187:  *
                    188:  * A DTD Notation definition.
                    189:  */
                    190: 
                    191: typedef struct _xmlNotation xmlNotation;
                    192: typedef xmlNotation *xmlNotationPtr;
                    193: struct _xmlNotation {
                    194:     const xmlChar               *name;         /* Notation name */
                    195:     const xmlChar               *PublicID;     /* Public identifier, if any */
                    196:     const xmlChar               *SystemID;     /* System identifier, if any */
                    197: };
                    198: 
                    199: /**
                    200:  * xmlAttributeType:
                    201:  *
                    202:  * A DTD Attribute type definition.
                    203:  */
                    204: 
                    205: typedef enum {
                    206:     XML_ATTRIBUTE_CDATA = 1,
                    207:     XML_ATTRIBUTE_ID,
                    208:     XML_ATTRIBUTE_IDREF        ,
                    209:     XML_ATTRIBUTE_IDREFS,
                    210:     XML_ATTRIBUTE_ENTITY,
                    211:     XML_ATTRIBUTE_ENTITIES,
                    212:     XML_ATTRIBUTE_NMTOKEN,
                    213:     XML_ATTRIBUTE_NMTOKENS,
                    214:     XML_ATTRIBUTE_ENUMERATION,
                    215:     XML_ATTRIBUTE_NOTATION
                    216: } xmlAttributeType;
                    217: 
                    218: /**
                    219:  * xmlAttributeDefault:
                    220:  *
                    221:  * A DTD Attribute default definition.
                    222:  */
                    223: 
                    224: typedef enum {
                    225:     XML_ATTRIBUTE_NONE = 1,
                    226:     XML_ATTRIBUTE_REQUIRED,
                    227:     XML_ATTRIBUTE_IMPLIED,
                    228:     XML_ATTRIBUTE_FIXED
                    229: } xmlAttributeDefault;
                    230: 
                    231: /**
                    232:  * xmlEnumeration:
                    233:  *
                    234:  * List structure used when there is an enumeration in DTDs.
                    235:  */
                    236: 
                    237: typedef struct _xmlEnumeration xmlEnumeration;
                    238: typedef xmlEnumeration *xmlEnumerationPtr;
                    239: struct _xmlEnumeration {
                    240:     struct _xmlEnumeration    *next;   /* next one */
                    241:     const xmlChar            *name;    /* Enumeration name */
                    242: };
                    243: 
                    244: /**
                    245:  * xmlAttribute:
                    246:  *
                    247:  * An Attribute declaration in a DTD.
                    248:  */
                    249: 
                    250: typedef struct _xmlAttribute xmlAttribute;
                    251: typedef xmlAttribute *xmlAttributePtr;
                    252: struct _xmlAttribute {
                    253:     void           *_private;          /* application data */
                    254:     xmlElementType          type;       /* XML_ATTRIBUTE_DECL, must be second ! */
                    255:     const xmlChar          *name;      /* Attribute name */
                    256:     struct _xmlNode    *children;      /* NULL */
                    257:     struct _xmlNode        *last;      /* NULL */
                    258:     struct _xmlDtd       *parent;      /* -> DTD */
                    259:     struct _xmlNode        *next;      /* next sibling link  */
                    260:     struct _xmlNode        *prev;      /* previous sibling link  */
                    261:     struct _xmlDoc          *doc;       /* the containing document */
                    262: 
                    263:     struct _xmlAttribute  *nexth;      /* next in hash table */
                    264:     xmlAttributeType       atype;      /* The attribute type */
                    265:     xmlAttributeDefault      def;      /* the default */
                    266:     const xmlChar  *defaultValue;      /* or the default value */
                    267:     xmlEnumerationPtr       tree;       /* or the enumeration tree if any */
                    268:     const xmlChar        *prefix;      /* the namespace prefix if any */
                    269:     const xmlChar          *elem;      /* Element holding the attribute */
                    270: };
                    271: 
                    272: /**
                    273:  * xmlElementContentType:
                    274:  *
                    275:  * Possible definitions of element content types.
                    276:  */
                    277: typedef enum {
                    278:     XML_ELEMENT_CONTENT_PCDATA = 1,
                    279:     XML_ELEMENT_CONTENT_ELEMENT,
                    280:     XML_ELEMENT_CONTENT_SEQ,
                    281:     XML_ELEMENT_CONTENT_OR
                    282: } xmlElementContentType;
                    283: 
                    284: /**
                    285:  * xmlElementContentOccur:
                    286:  *
                    287:  * Possible definitions of element content occurrences.
                    288:  */
                    289: typedef enum {
                    290:     XML_ELEMENT_CONTENT_ONCE = 1,
                    291:     XML_ELEMENT_CONTENT_OPT,
                    292:     XML_ELEMENT_CONTENT_MULT,
                    293:     XML_ELEMENT_CONTENT_PLUS
                    294: } xmlElementContentOccur;
                    295: 
                    296: /**
                    297:  * xmlElementContent:
                    298:  *
                    299:  * An XML Element content as stored after parsing an element definition
                    300:  * in a DTD.
                    301:  */
                    302: 
                    303: typedef struct _xmlElementContent xmlElementContent;
                    304: typedef xmlElementContent *xmlElementContentPtr;
                    305: struct _xmlElementContent {
                    306:     xmlElementContentType     type;    /* PCDATA, ELEMENT, SEQ or OR */
                    307:     xmlElementContentOccur    ocur;    /* ONCE, OPT, MULT or PLUS */
                    308:     const xmlChar             *name;   /* Element name */
                    309:     struct _xmlElementContent *c1;     /* first child */
                    310:     struct _xmlElementContent *c2;     /* second child */
                    311:     struct _xmlElementContent *parent; /* parent */
                    312:     const xmlChar             *prefix; /* Namespace prefix */
                    313: };
                    314: 
                    315: /**
                    316:  * xmlElementTypeVal:
                    317:  *
                    318:  * The different possibilities for an element content type.
                    319:  */
                    320: 
                    321: typedef enum {
                    322:     XML_ELEMENT_TYPE_UNDEFINED = 0,
                    323:     XML_ELEMENT_TYPE_EMPTY = 1,
                    324:     XML_ELEMENT_TYPE_ANY,
                    325:     XML_ELEMENT_TYPE_MIXED,
                    326:     XML_ELEMENT_TYPE_ELEMENT
                    327: } xmlElementTypeVal;
                    328: 
                    329: #ifdef __cplusplus
                    330: }
                    331: #endif
                    332: #include <libxml/xmlregexp.h>
                    333: #ifdef __cplusplus
                    334: extern "C" {
                    335: #endif
                    336: 
                    337: /**
                    338:  * xmlElement:
                    339:  *
                    340:  * An XML Element declaration from a DTD.
                    341:  */
                    342: 
                    343: typedef struct _xmlElement xmlElement;
                    344: typedef xmlElement *xmlElementPtr;
                    345: struct _xmlElement {
                    346:     void           *_private;          /* application data */
                    347:     xmlElementType          type;       /* XML_ELEMENT_DECL, must be second ! */
                    348:     const xmlChar          *name;      /* Element name */
                    349:     struct _xmlNode    *children;      /* NULL */
                    350:     struct _xmlNode        *last;      /* NULL */
                    351:     struct _xmlDtd       *parent;      /* -> DTD */
                    352:     struct _xmlNode        *next;      /* next sibling link  */
                    353:     struct _xmlNode        *prev;      /* previous sibling link  */
                    354:     struct _xmlDoc          *doc;       /* the containing document */
                    355: 
                    356:     xmlElementTypeVal      etype;      /* The type */
                    357:     xmlElementContentPtr content;      /* the allowed element content */
                    358:     xmlAttributePtr   attributes;      /* List of the declared attributes */
                    359:     const xmlChar        *prefix;      /* the namespace prefix if any */
                    360: #ifdef LIBXML_REGEXP_ENABLED
                    361:     xmlRegexpPtr       contModel;      /* the validating regexp */
                    362: #else
                    363:     void             *contModel;
                    364: #endif
                    365: };
                    366: 
                    367: 
                    368: /**
                    369:  * XML_LOCAL_NAMESPACE:
                    370:  *
                    371:  * A namespace declaration node.
                    372:  */
                    373: #define XML_LOCAL_NAMESPACE XML_NAMESPACE_DECL
                    374: typedef xmlElementType xmlNsType;
                    375: 
                    376: /**
                    377:  * xmlNs:
                    378:  *
                    379:  * An XML namespace.
                    380:  * Note that prefix == NULL is valid, it defines the default namespace
                    381:  * within the subtree (until overridden).
                    382:  *
                    383:  * xmlNsType is unified with xmlElementType.
                    384:  */
                    385: 
                    386: typedef struct _xmlNs xmlNs;
                    387: typedef xmlNs *xmlNsPtr;
                    388: struct _xmlNs {
                    389:     struct _xmlNs  *next;      /* next Ns link for this node  */
                    390:     xmlNsType      type;       /* global or local */
                    391:     const xmlChar *href;       /* URL for the namespace */
                    392:     const xmlChar *prefix;     /* prefix for the namespace */
                    393:     void           *_private;   /* application data */
                    394:     struct _xmlDoc *context;           /* normally an xmlDoc */
                    395: };
                    396: 
                    397: /**
                    398:  * xmlDtd:
                    399:  *
                    400:  * An XML DTD, as defined by <!DOCTYPE ... There is actually one for
                    401:  * the internal subset and for the external subset.
                    402:  */
                    403: typedef struct _xmlDtd xmlDtd;
                    404: typedef xmlDtd *xmlDtdPtr;
                    405: struct _xmlDtd {
                    406:     void           *_private;  /* application data */
                    407:     xmlElementType  type;       /* XML_DTD_NODE, must be second ! */
                    408:     const xmlChar *name;       /* Name of the DTD */
                    409:     struct _xmlNode *children; /* the value of the property link */
                    410:     struct _xmlNode *last;     /* last child link */
                    411:     struct _xmlDoc  *parent;   /* child->parent link */
                    412:     struct _xmlNode *next;     /* next sibling link  */
                    413:     struct _xmlNode *prev;     /* previous sibling link  */
                    414:     struct _xmlDoc  *doc;      /* the containing document */
                    415: 
                    416:     /* End of common part */
                    417:     void          *notations;   /* Hash table for notations if any */
                    418:     void          *elements;    /* Hash table for elements if any */
                    419:     void          *attributes;  /* Hash table for attributes if any */
                    420:     void          *entities;    /* Hash table for entities if any */
                    421:     const xmlChar *ExternalID; /* External identifier for PUBLIC DTD */
                    422:     const xmlChar *SystemID;   /* URI for a SYSTEM or PUBLIC DTD */
                    423:     void          *pentities;   /* Hash table for param entities if any */
                    424: };
                    425: 
                    426: /**
                    427:  * xmlAttr:
                    428:  *
                    429:  * An attribute on an XML node.
                    430:  */
                    431: typedef struct _xmlAttr xmlAttr;
                    432: typedef xmlAttr *xmlAttrPtr;
                    433: struct _xmlAttr {
                    434:     void           *_private;  /* application data */
                    435:     xmlElementType   type;      /* XML_ATTRIBUTE_NODE, must be second ! */
                    436:     const xmlChar   *name;      /* the name of the property */
                    437:     struct _xmlNode *children; /* the value of the property */
                    438:     struct _xmlNode *last;     /* NULL */
                    439:     struct _xmlNode *parent;   /* child->parent link */
                    440:     struct _xmlAttr *next;     /* next sibling link  */
                    441:     struct _xmlAttr *prev;     /* previous sibling link  */
                    442:     struct _xmlDoc  *doc;      /* the containing document */
                    443:     xmlNs           *ns;        /* pointer to the associated namespace */
                    444:     xmlAttributeType atype;     /* the attribute type if validating */
                    445:     void            *psvi;     /* for type/PSVI informations */
                    446: };
                    447: 
                    448: /**
                    449:  * xmlID:
                    450:  *
                    451:  * An XML ID instance.
                    452:  */
                    453: 
                    454: typedef struct _xmlID xmlID;
                    455: typedef xmlID *xmlIDPtr;
                    456: struct _xmlID {
                    457:     struct _xmlID    *next;    /* next ID */
                    458:     const xmlChar    *value;   /* The ID name */
                    459:     xmlAttrPtr        attr;    /* The attribute holding it */
                    460:     const xmlChar    *name;    /* The attribute if attr is not available */
                    461:     int               lineno;  /* The line number if attr is not available */
                    462:     struct _xmlDoc   *doc;     /* The document holding the ID */
                    463: };
                    464: 
                    465: /**
                    466:  * xmlRef:
                    467:  *
                    468:  * An XML IDREF instance.
                    469:  */
                    470: 
                    471: typedef struct _xmlRef xmlRef;
                    472: typedef xmlRef *xmlRefPtr;
                    473: struct _xmlRef {
                    474:     struct _xmlRef    *next;   /* next Ref */
                    475:     const xmlChar     *value;  /* The Ref name */
                    476:     xmlAttrPtr        attr;    /* The attribute holding it */
                    477:     const xmlChar    *name;    /* The attribute if attr is not available */
                    478:     int               lineno;  /* The line number if attr is not available */
                    479: };
                    480: 
                    481: /**
                    482:  * xmlNode:
                    483:  *
                    484:  * A node in an XML tree.
                    485:  */
                    486: typedef struct _xmlNode xmlNode;
                    487: typedef xmlNode *xmlNodePtr;
                    488: struct _xmlNode {
                    489:     void           *_private;  /* application data */
                    490:     xmlElementType   type;     /* type number, must be second ! */
                    491:     const xmlChar   *name;      /* the name of the node, or the entity */
                    492:     struct _xmlNode *children; /* parent->childs link */
                    493:     struct _xmlNode *last;     /* last child link */
                    494:     struct _xmlNode *parent;   /* child->parent link */
                    495:     struct _xmlNode *next;     /* next sibling link  */
                    496:     struct _xmlNode *prev;     /* previous sibling link  */
                    497:     struct _xmlDoc  *doc;      /* the containing document */
                    498: 
                    499:     /* End of common part */
                    500:     xmlNs           *ns;        /* pointer to the associated namespace */
                    501:     xmlChar         *content;   /* the content */
                    502:     struct _xmlAttr *properties;/* properties list */
                    503:     xmlNs           *nsDef;     /* namespace definitions on this node */
                    504:     void            *psvi;     /* for type/PSVI informations */
                    505:     unsigned short   line;     /* line number */
                    506:     unsigned short   extra;    /* extra data for XPath/XSLT */
                    507: };
                    508: 
                    509: /**
                    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)
                    516: 
                    517: /**
                    518:  * XML_GET_LINE:
                    519:  *
1.1.1.3 ! misho     520:  * Macro to extract the line number of an element node.
1.1       misho     521:  */
                    522: #define XML_GET_LINE(n)                                                \
                    523:     (xmlGetLineNo(n))
                    524: 
                    525: /**
                    526:  * xmlDocProperty
                    527:  *
                    528:  * Set of properties of the document as found by the parser
                    529:  * Some of them are linked to similary named xmlParserOption
                    530:  */
                    531: typedef enum {
                    532:     XML_DOC_WELLFORMED         = 1<<0, /* document is XML well formed */
                    533:     XML_DOC_NSVALID            = 1<<1, /* document is Namespace valid */
                    534:     XML_DOC_OLD10              = 1<<2, /* parsed with old XML-1.0 parser */
                    535:     XML_DOC_DTDVALID           = 1<<3, /* DTD validation was successful */
                    536:     XML_DOC_XINCLUDE           = 1<<4, /* XInclude substitution was done */
                    537:     XML_DOC_USERBUILT          = 1<<5, /* Document was built using the API
                    538:                                            and not by parsing an instance */
                    539:     XML_DOC_INTERNAL           = 1<<6, /* built for internal processing */
                    540:     XML_DOC_HTML               = 1<<7  /* parsed or built HTML document */
                    541: } xmlDocProperties;
                    542: 
                    543: /**
                    544:  * xmlDoc:
                    545:  *
                    546:  * An XML document.
                    547:  */
                    548: typedef struct _xmlDoc xmlDoc;
                    549: typedef xmlDoc *xmlDocPtr;
                    550: struct _xmlDoc {
                    551:     void           *_private;  /* application data */
                    552:     xmlElementType  type;       /* XML_DOCUMENT_NODE, must be second ! */
                    553:     char           *name;      /* name/filename/URI of the document */
                    554:     struct _xmlNode *children; /* the document tree */
                    555:     struct _xmlNode *last;     /* last child link */
                    556:     struct _xmlNode *parent;   /* child->parent link */
                    557:     struct _xmlNode *next;     /* next sibling link  */
                    558:     struct _xmlNode *prev;     /* previous sibling link  */
                    559:     struct _xmlDoc  *doc;      /* autoreference to itself */
                    560: 
                    561:     /* End of common part */
                    562:     int             compression;/* level of zlib compression */
1.1.1.3 ! misho     563:     int             standalone; /* standalone document (no external refs)
1.1       misho     564:                                     1 if standalone="yes"
                    565:                                     0 if standalone="no"
                    566:                                    -1 if there is no XML declaration
                    567:                                    -2 if there is an XML declaration, but no
                    568:                                        standalone attribute was specified */
                    569:     struct _xmlDtd  *intSubset;        /* the document internal subset */
                    570:     struct _xmlDtd  *extSubset;        /* the document external subset */
                    571:     struct _xmlNs   *oldNs;    /* Global namespace, the old way */
                    572:     const xmlChar  *version;   /* the XML version string */
                    573:     const xmlChar  *encoding;   /* external initial encoding, if any */
                    574:     void           *ids;        /* Hash table for ID attributes if any */
                    575:     void           *refs;       /* Hash table for IDREFs attributes if any */
                    576:     const xmlChar  *URL;       /* The URI for that document */
                    577:     int             charset;    /* encoding of the in-memory content
                    578:                                   actually an xmlCharEncoding */
                    579:     struct _xmlDict *dict;      /* dict used to allocate names or NULL */
                    580:     void           *psvi;      /* for type/PSVI informations */
                    581:     int             parseFlags;        /* set of xmlParserOption used to parse the
                    582:                                   document */
                    583:     int             properties;        /* set of xmlDocProperties for this document
                    584:                                   set at the end of parsing */
                    585: };
                    586: 
                    587: 
                    588: typedef struct _xmlDOMWrapCtxt xmlDOMWrapCtxt;
                    589: typedef xmlDOMWrapCtxt *xmlDOMWrapCtxtPtr;
                    590: 
                    591: /**
                    592:  * xmlDOMWrapAcquireNsFunction:
                    593:  * @ctxt:  a DOM wrapper context
1.1.1.3 ! misho     594:  * @node:  the context node (element or attribute)
1.1       misho     595:  * @nsName:  the requested namespace name
1.1.1.3 ! misho     596:  * @nsPrefix:  the requested namespace prefix
1.1       misho     597:  *
                    598:  * A function called to acquire namespaces (xmlNs) from the wrapper.
                    599:  *
                    600:  * Returns an xmlNsPtr or NULL in case of an error.
                    601:  */
                    602: typedef xmlNsPtr (*xmlDOMWrapAcquireNsFunction) (xmlDOMWrapCtxtPtr ctxt,
                    603:                                                 xmlNodePtr node,
                    604:                                                 const xmlChar *nsName,
                    605:                                                 const xmlChar *nsPrefix);
                    606: 
                    607: /**
                    608:  * xmlDOMWrapCtxt:
                    609:  *
                    610:  * Context for DOM wrapper-operations.
                    611:  */
                    612: struct _xmlDOMWrapCtxt {
                    613:     void * _private;
                    614:     /*
                    615:     * The type of this context, just in case we need specialized
                    616:     * contexts in the future.
                    617:     */
                    618:     int type;
                    619:     /*
                    620:     * Internal namespace map used for various operations.
                    621:     */
                    622:     void * 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:     */
                    627:     xmlDOMWrapAcquireNsFunction getNsForNodeFunc;
                    628: };
                    629: 
                    630: /**
                    631:  * xmlChildrenNode:
                    632:  *
                    633:  * Macro for compatibility naming layer with libxml1. Maps
                    634:  * to "children."
                    635:  */
                    636: #ifndef xmlChildrenNode
                    637: #define xmlChildrenNode children
                    638: #endif
                    639: 
                    640: /**
                    641:  * xmlRootNode:
                    642:  *
1.1.1.3 ! misho     643:  * Macro for compatibility naming layer with libxml1. Maps
1.1       misho     644:  * to "children".
                    645:  */
                    646: #ifndef xmlRootNode
                    647: #define xmlRootNode children
                    648: #endif
                    649: 
                    650: /*
                    651:  * Variables.
                    652:  */
                    653: 
                    654: /*
                    655:  * Some helper functions
                    656:  */
                    657: #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED)
                    658: XMLPUBFUN int XMLCALL
                    659:                xmlValidateNCName       (const xmlChar *value,
                    660:                                         int space);
                    661: #endif
                    662: 
                    663: #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
1.1.1.3 ! misho     664: XMLPUBFUN int XMLCALL
1.1       misho     665:                xmlValidateQName        (const xmlChar *value,
                    666:                                         int space);
1.1.1.3 ! misho     667: XMLPUBFUN int XMLCALL
1.1       misho     668:                xmlValidateName         (const xmlChar *value,
                    669:                                         int space);
1.1.1.3 ! misho     670: XMLPUBFUN int XMLCALL
1.1       misho     671:                xmlValidateNMToken      (const xmlChar *value,
                    672:                                         int space);
                    673: #endif
                    674: 
1.1.1.3 ! misho     675: XMLPUBFUN xmlChar * XMLCALL
1.1       misho     676:                xmlBuildQName           (const xmlChar *ncname,
                    677:                                         const xmlChar *prefix,
                    678:                                         xmlChar *memory,
                    679:                                         int len);
1.1.1.3 ! misho     680: XMLPUBFUN xmlChar * XMLCALL
1.1       misho     681:                xmlSplitQName2          (const xmlChar *name,
                    682:                                         xmlChar **prefix);
1.1.1.3 ! misho     683: XMLPUBFUN const xmlChar * XMLCALL
1.1       misho     684:                xmlSplitQName3          (const xmlChar *name,
                    685:                                         int *len);
                    686: 
                    687: /*
1.1.1.3 ! misho     688:  * Handling Buffers, the old ones see @xmlBuf for the new ones.
1.1       misho     689:  */
                    690: 
1.1.1.3 ! misho     691: XMLPUBFUN void XMLCALL
1.1       misho     692:                xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme);
1.1.1.3 ! misho     693: XMLPUBFUN xmlBufferAllocationScheme XMLCALL
1.1       misho     694:                xmlGetBufferAllocationScheme(void);
                    695: 
1.1.1.3 ! misho     696: XMLPUBFUN xmlBufferPtr XMLCALL
1.1       misho     697:                xmlBufferCreate         (void);
1.1.1.3 ! misho     698: XMLPUBFUN xmlBufferPtr XMLCALL
1.1       misho     699:                xmlBufferCreateSize     (size_t size);
1.1.1.3 ! misho     700: XMLPUBFUN xmlBufferPtr XMLCALL
1.1       misho     701:                xmlBufferCreateStatic   (void *mem,
                    702:                                         size_t size);
1.1.1.3 ! misho     703: XMLPUBFUN int XMLCALL
1.1       misho     704:                xmlBufferResize         (xmlBufferPtr buf,
                    705:                                         unsigned int size);
1.1.1.3 ! misho     706: XMLPUBFUN void XMLCALL
1.1       misho     707:                xmlBufferFree           (xmlBufferPtr buf);
1.1.1.3 ! misho     708: XMLPUBFUN int XMLCALL
1.1       misho     709:                xmlBufferDump           (FILE *file,
                    710:                                         xmlBufferPtr buf);
1.1.1.3 ! misho     711: XMLPUBFUN int XMLCALL
1.1       misho     712:                xmlBufferAdd            (xmlBufferPtr buf,
                    713:                                         const xmlChar *str,
                    714:                                         int len);
1.1.1.3 ! misho     715: XMLPUBFUN int XMLCALL
1.1       misho     716:                xmlBufferAddHead        (xmlBufferPtr buf,
                    717:                                         const xmlChar *str,
                    718:                                         int len);
1.1.1.3 ! misho     719: XMLPUBFUN int XMLCALL
1.1       misho     720:                xmlBufferCat            (xmlBufferPtr buf,
                    721:                                         const xmlChar *str);
1.1.1.3 ! misho     722: XMLPUBFUN int XMLCALL
1.1       misho     723:                xmlBufferCCat           (xmlBufferPtr buf,
                    724:                                         const char *str);
1.1.1.3 ! misho     725: XMLPUBFUN int XMLCALL
1.1       misho     726:                xmlBufferShrink         (xmlBufferPtr buf,
                    727:                                         unsigned int len);
1.1.1.3 ! misho     728: XMLPUBFUN int XMLCALL
1.1       misho     729:                xmlBufferGrow           (xmlBufferPtr buf,
                    730:                                         unsigned int len);
1.1.1.3 ! misho     731: XMLPUBFUN void XMLCALL
1.1       misho     732:                xmlBufferEmpty          (xmlBufferPtr buf);
1.1.1.3 ! misho     733: XMLPUBFUN const xmlChar* XMLCALL
1.1       misho     734:                xmlBufferContent        (const xmlBufferPtr buf);
1.1.1.2   misho     735: XMLPUBFUN xmlChar* XMLCALL
1.1.1.3 ! misho     736:                xmlBufferDetach         (xmlBufferPtr buf);
        !           737: XMLPUBFUN void XMLCALL
1.1       misho     738:                xmlBufferSetAllocationScheme(xmlBufferPtr buf,
                    739:                                         xmlBufferAllocationScheme scheme);
1.1.1.3 ! misho     740: XMLPUBFUN int XMLCALL
1.1       misho     741:                xmlBufferLength         (const xmlBufferPtr buf);
                    742: 
                    743: /*
                    744:  * Creating/freeing new structures.
                    745:  */
1.1.1.3 ! misho     746: XMLPUBFUN xmlDtdPtr XMLCALL
1.1       misho     747:                xmlCreateIntSubset      (xmlDocPtr doc,
                    748:                                         const xmlChar *name,
                    749:                                         const xmlChar *ExternalID,
                    750:                                         const xmlChar *SystemID);
1.1.1.3 ! misho     751: XMLPUBFUN xmlDtdPtr XMLCALL
1.1       misho     752:                xmlNewDtd               (xmlDocPtr doc,
                    753:                                         const xmlChar *name,
                    754:                                         const xmlChar *ExternalID,
                    755:                                         const xmlChar *SystemID);
1.1.1.3 ! misho     756: XMLPUBFUN xmlDtdPtr XMLCALL
1.1       misho     757:                xmlGetIntSubset         (xmlDocPtr doc);
1.1.1.3 ! misho     758: XMLPUBFUN void XMLCALL
1.1       misho     759:                xmlFreeDtd              (xmlDtdPtr cur);
                    760: #ifdef LIBXML_LEGACY_ENABLED
1.1.1.3 ! misho     761: XMLPUBFUN xmlNsPtr XMLCALL
1.1       misho     762:                xmlNewGlobalNs          (xmlDocPtr doc,
                    763:                                         const xmlChar *href,
                    764:                                         const xmlChar *prefix);
                    765: #endif /* LIBXML_LEGACY_ENABLED */
1.1.1.3 ! misho     766: XMLPUBFUN xmlNsPtr XMLCALL
1.1       misho     767:                xmlNewNs                (xmlNodePtr node,
                    768:                                         const xmlChar *href,
                    769:                                         const xmlChar *prefix);
1.1.1.3 ! misho     770: XMLPUBFUN void XMLCALL
1.1       misho     771:                xmlFreeNs               (xmlNsPtr cur);
1.1.1.3 ! misho     772: XMLPUBFUN void XMLCALL
1.1       misho     773:                xmlFreeNsList           (xmlNsPtr cur);
1.1.1.3 ! misho     774: XMLPUBFUN xmlDocPtr XMLCALL
1.1       misho     775:                xmlNewDoc               (const xmlChar *version);
1.1.1.3 ! misho     776: XMLPUBFUN void XMLCALL
1.1       misho     777:                xmlFreeDoc              (xmlDocPtr cur);
1.1.1.3 ! misho     778: XMLPUBFUN xmlAttrPtr XMLCALL
1.1       misho     779:                xmlNewDocProp           (xmlDocPtr doc,
                    780:                                         const xmlChar *name,
                    781:                                         const xmlChar *value);
                    782: #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \
                    783:     defined(LIBXML_SCHEMAS_ENABLED)
1.1.1.3 ! misho     784: XMLPUBFUN xmlAttrPtr XMLCALL
1.1       misho     785:                xmlNewProp              (xmlNodePtr node,
                    786:                                         const xmlChar *name,
                    787:                                         const xmlChar *value);
                    788: #endif
1.1.1.3 ! misho     789: XMLPUBFUN xmlAttrPtr XMLCALL
1.1       misho     790:                xmlNewNsProp            (xmlNodePtr node,
                    791:                                         xmlNsPtr ns,
                    792:                                         const xmlChar *name,
                    793:                                         const xmlChar *value);
1.1.1.3 ! misho     794: XMLPUBFUN xmlAttrPtr XMLCALL
1.1       misho     795:                xmlNewNsPropEatName     (xmlNodePtr node,
                    796:                                         xmlNsPtr ns,
                    797:                                         xmlChar *name,
                    798:                                         const xmlChar *value);
1.1.1.3 ! misho     799: XMLPUBFUN void XMLCALL
1.1       misho     800:                xmlFreePropList         (xmlAttrPtr cur);
1.1.1.3 ! misho     801: XMLPUBFUN void XMLCALL
1.1       misho     802:                xmlFreeProp             (xmlAttrPtr cur);
1.1.1.3 ! misho     803: XMLPUBFUN xmlAttrPtr XMLCALL
1.1       misho     804:                xmlCopyProp             (xmlNodePtr target,
                    805:                                         xmlAttrPtr cur);
1.1.1.3 ! misho     806: XMLPUBFUN xmlAttrPtr XMLCALL
1.1       misho     807:                xmlCopyPropList         (xmlNodePtr target,
                    808:                                         xmlAttrPtr cur);
                    809: #ifdef LIBXML_TREE_ENABLED
1.1.1.3 ! misho     810: XMLPUBFUN xmlDtdPtr XMLCALL
1.1       misho     811:                xmlCopyDtd              (xmlDtdPtr dtd);
                    812: #endif /* LIBXML_TREE_ENABLED */
                    813: #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
1.1.1.3 ! misho     814: XMLPUBFUN xmlDocPtr XMLCALL
1.1       misho     815:                xmlCopyDoc              (xmlDocPtr doc,
                    816:                                         int recursive);
                    817: #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
                    818: /*
                    819:  * Creating new nodes.
                    820:  */
1.1.1.3 ! misho     821: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     822:                xmlNewDocNode           (xmlDocPtr doc,
                    823:                                         xmlNsPtr ns,
                    824:                                         const xmlChar *name,
                    825:                                         const xmlChar *content);
1.1.1.3 ! misho     826: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     827:                xmlNewDocNodeEatName    (xmlDocPtr doc,
                    828:                                         xmlNsPtr ns,
                    829:                                         xmlChar *name,
                    830:                                         const xmlChar *content);
1.1.1.3 ! misho     831: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     832:                xmlNewNode              (xmlNsPtr ns,
                    833:                                         const xmlChar *name);
1.1.1.3 ! misho     834: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     835:                xmlNewNodeEatName       (xmlNsPtr ns,
                    836:                                         xmlChar *name);
                    837: #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
1.1.1.3 ! misho     838: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     839:                xmlNewChild             (xmlNodePtr parent,
                    840:                                         xmlNsPtr ns,
                    841:                                         const xmlChar *name,
                    842:                                         const xmlChar *content);
                    843: #endif
1.1.1.3 ! misho     844: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     845:                xmlNewDocText           (xmlDocPtr doc,
                    846:                                         const xmlChar *content);
1.1.1.3 ! misho     847: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     848:                xmlNewText              (const xmlChar *content);
1.1.1.3 ! misho     849: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     850:                xmlNewDocPI             (xmlDocPtr doc,
                    851:                                         const xmlChar *name,
                    852:                                         const xmlChar *content);
1.1.1.3 ! misho     853: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     854:                xmlNewPI                (const xmlChar *name,
                    855:                                         const xmlChar *content);
1.1.1.3 ! misho     856: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     857:                xmlNewDocTextLen        (xmlDocPtr doc,
                    858:                                         const xmlChar *content,
                    859:                                         int len);
1.1.1.3 ! misho     860: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     861:                xmlNewTextLen           (const xmlChar *content,
                    862:                                         int len);
1.1.1.3 ! misho     863: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     864:                xmlNewDocComment        (xmlDocPtr doc,
                    865:                                         const xmlChar *content);
1.1.1.3 ! misho     866: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     867:                xmlNewComment           (const xmlChar *content);
1.1.1.3 ! misho     868: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     869:                xmlNewCDataBlock        (xmlDocPtr doc,
                    870:                                         const xmlChar *content,
                    871:                                         int len);
1.1.1.3 ! misho     872: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     873:                xmlNewCharRef           (xmlDocPtr doc,
                    874:                                         const xmlChar *name);
1.1.1.3 ! misho     875: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     876:                xmlNewReference         (xmlDocPtr doc,
                    877:                                         const xmlChar *name);
1.1.1.3 ! misho     878: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     879:                xmlCopyNode             (const xmlNodePtr node,
                    880:                                         int recursive);
1.1.1.3 ! misho     881: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     882:                xmlDocCopyNode          (const xmlNodePtr node,
                    883:                                         xmlDocPtr doc,
                    884:                                         int recursive);
1.1.1.3 ! misho     885: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     886:                xmlDocCopyNodeList      (xmlDocPtr doc,
                    887:                                         const xmlNodePtr node);
1.1.1.3 ! misho     888: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     889:                xmlCopyNodeList         (const xmlNodePtr node);
                    890: #ifdef LIBXML_TREE_ENABLED
1.1.1.3 ! misho     891: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     892:                xmlNewTextChild         (xmlNodePtr parent,
                    893:                                         xmlNsPtr ns,
                    894:                                         const xmlChar *name,
                    895:                                         const xmlChar *content);
1.1.1.3 ! misho     896: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     897:                xmlNewDocRawNode        (xmlDocPtr doc,
                    898:                                         xmlNsPtr ns,
                    899:                                         const xmlChar *name,
                    900:                                         const xmlChar *content);
1.1.1.3 ! misho     901: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     902:                xmlNewDocFragment       (xmlDocPtr doc);
                    903: #endif /* LIBXML_TREE_ENABLED */
                    904: 
                    905: /*
                    906:  * Navigating.
                    907:  */
1.1.1.3 ! misho     908: XMLPUBFUN long XMLCALL
1.1       misho     909:                xmlGetLineNo            (xmlNodePtr node);
                    910: #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED)
1.1.1.3 ! misho     911: XMLPUBFUN xmlChar * XMLCALL
1.1       misho     912:                xmlGetNodePath          (xmlNodePtr node);
                    913: #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) */
1.1.1.3 ! misho     914: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     915:                xmlDocGetRootElement    (xmlDocPtr doc);
1.1.1.3 ! misho     916: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     917:                xmlGetLastChild         (xmlNodePtr parent);
1.1.1.3 ! misho     918: XMLPUBFUN int XMLCALL
1.1       misho     919:                xmlNodeIsText           (xmlNodePtr node);
1.1.1.3 ! misho     920: XMLPUBFUN int XMLCALL
1.1       misho     921:                xmlIsBlankNode          (xmlNodePtr node);
                    922: 
                    923: /*
                    924:  * Changing the structure.
                    925:  */
                    926: #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)
1.1.1.3 ! misho     927: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     928:                xmlDocSetRootElement    (xmlDocPtr doc,
                    929:                                         xmlNodePtr root);
                    930: #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */
                    931: #ifdef LIBXML_TREE_ENABLED
1.1.1.3 ! misho     932: XMLPUBFUN void XMLCALL
1.1       misho     933:                xmlNodeSetName          (xmlNodePtr cur,
                    934:                                         const xmlChar *name);
                    935: #endif /* LIBXML_TREE_ENABLED */
1.1.1.3 ! misho     936: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     937:                xmlAddChild             (xmlNodePtr parent,
                    938:                                         xmlNodePtr cur);
1.1.1.3 ! misho     939: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     940:                xmlAddChildList         (xmlNodePtr parent,
                    941:                                         xmlNodePtr cur);
                    942: #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)
1.1.1.3 ! misho     943: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     944:                xmlReplaceNode          (xmlNodePtr old,
                    945:                                         xmlNodePtr cur);
                    946: #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */
                    947: #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \
                    948:     defined(LIBXML_SCHEMAS_ENABLED)
1.1.1.3 ! misho     949: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     950:                xmlAddPrevSibling       (xmlNodePtr cur,
                    951:                                         xmlNodePtr elem);
                    952: #endif /* LIBXML_TREE_ENABLED || LIBXML_HTML_ENABLED || LIBXML_SCHEMAS_ENABLED */
1.1.1.3 ! misho     953: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     954:                xmlAddSibling           (xmlNodePtr cur,
                    955:                                         xmlNodePtr elem);
1.1.1.3 ! misho     956: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     957:                xmlAddNextSibling       (xmlNodePtr cur,
                    958:                                         xmlNodePtr elem);
1.1.1.3 ! misho     959: XMLPUBFUN void XMLCALL
1.1       misho     960:                xmlUnlinkNode           (xmlNodePtr cur);
1.1.1.3 ! misho     961: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho     962:                xmlTextMerge            (xmlNodePtr first,
                    963:                                         xmlNodePtr second);
1.1.1.3 ! misho     964: XMLPUBFUN int XMLCALL
1.1       misho     965:                xmlTextConcat           (xmlNodePtr node,
                    966:                                         const xmlChar *content,
                    967:                                         int len);
1.1.1.3 ! misho     968: XMLPUBFUN void XMLCALL
1.1       misho     969:                xmlFreeNodeList         (xmlNodePtr cur);
1.1.1.3 ! misho     970: XMLPUBFUN void XMLCALL
1.1       misho     971:                xmlFreeNode             (xmlNodePtr cur);
1.1.1.3 ! misho     972: XMLPUBFUN void XMLCALL
1.1       misho     973:                xmlSetTreeDoc           (xmlNodePtr tree,
                    974:                                         xmlDocPtr doc);
1.1.1.3 ! misho     975: XMLPUBFUN void XMLCALL
1.1       misho     976:                xmlSetListDoc           (xmlNodePtr list,
                    977:                                         xmlDocPtr doc);
                    978: /*
                    979:  * Namespaces.
                    980:  */
1.1.1.3 ! misho     981: XMLPUBFUN xmlNsPtr XMLCALL
1.1       misho     982:                xmlSearchNs             (xmlDocPtr doc,
                    983:                                         xmlNodePtr node,
                    984:                                         const xmlChar *nameSpace);
1.1.1.3 ! misho     985: XMLPUBFUN xmlNsPtr XMLCALL
1.1       misho     986:                xmlSearchNsByHref       (xmlDocPtr doc,
                    987:                                         xmlNodePtr node,
                    988:                                         const xmlChar *href);
                    989: #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
1.1.1.3 ! misho     990: XMLPUBFUN xmlNsPtr * XMLCALL
1.1       misho     991:                xmlGetNsList            (xmlDocPtr doc,
                    992:                                         xmlNodePtr node);
                    993: #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) */
                    994: 
1.1.1.3 ! misho     995: XMLPUBFUN void XMLCALL
1.1       misho     996:                xmlSetNs                (xmlNodePtr node,
                    997:                                         xmlNsPtr ns);
1.1.1.3 ! misho     998: XMLPUBFUN xmlNsPtr XMLCALL
1.1       misho     999:                xmlCopyNamespace        (xmlNsPtr cur);
1.1.1.3 ! misho    1000: XMLPUBFUN xmlNsPtr XMLCALL
1.1       misho    1001:                xmlCopyNamespaceList    (xmlNsPtr cur);
                   1002: 
                   1003: /*
                   1004:  * Changing the content.
                   1005:  */
                   1006: #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED)
1.1.1.3 ! misho    1007: XMLPUBFUN xmlAttrPtr XMLCALL
1.1       misho    1008:                xmlSetProp              (xmlNodePtr node,
                   1009:                                         const xmlChar *name,
                   1010:                                         const xmlChar *value);
1.1.1.3 ! misho    1011: XMLPUBFUN xmlAttrPtr XMLCALL
1.1       misho    1012:                xmlSetNsProp            (xmlNodePtr node,
                   1013:                                         xmlNsPtr ns,
                   1014:                                         const xmlChar *name,
                   1015:                                         const xmlChar *value);
                   1016: #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) */
1.1.1.3 ! misho    1017: XMLPUBFUN xmlChar * XMLCALL
1.1       misho    1018:                xmlGetNoNsProp          (xmlNodePtr node,
                   1019:                                         const xmlChar *name);
1.1.1.3 ! misho    1020: XMLPUBFUN xmlChar * XMLCALL
1.1       misho    1021:                xmlGetProp              (xmlNodePtr node,
                   1022:                                         const xmlChar *name);
1.1.1.3 ! misho    1023: XMLPUBFUN xmlAttrPtr XMLCALL
1.1       misho    1024:                xmlHasProp              (xmlNodePtr node,
                   1025:                                         const xmlChar *name);
1.1.1.3 ! misho    1026: XMLPUBFUN xmlAttrPtr XMLCALL
1.1       misho    1027:                xmlHasNsProp            (xmlNodePtr node,
                   1028:                                         const xmlChar *name,
                   1029:                                         const xmlChar *nameSpace);
1.1.1.3 ! misho    1030: XMLPUBFUN xmlChar * XMLCALL
1.1       misho    1031:                xmlGetNsProp            (xmlNodePtr node,
                   1032:                                         const xmlChar *name,
                   1033:                                         const xmlChar *nameSpace);
1.1.1.3 ! misho    1034: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho    1035:                xmlStringGetNodeList    (xmlDocPtr doc,
                   1036:                                         const xmlChar *value);
1.1.1.3 ! misho    1037: XMLPUBFUN xmlNodePtr XMLCALL
1.1       misho    1038:                xmlStringLenGetNodeList (xmlDocPtr doc,
                   1039:                                         const xmlChar *value,
                   1040:                                         int len);
1.1.1.3 ! misho    1041: XMLPUBFUN xmlChar * XMLCALL
1.1       misho    1042:                xmlNodeListGetString    (xmlDocPtr doc,
                   1043:                                         xmlNodePtr list,
                   1044:                                         int inLine);
                   1045: #ifdef LIBXML_TREE_ENABLED
1.1.1.3 ! misho    1046: XMLPUBFUN xmlChar * XMLCALL
1.1       misho    1047:                xmlNodeListGetRawString (xmlDocPtr doc,
                   1048:                                         xmlNodePtr list,
                   1049:                                         int inLine);
                   1050: #endif /* LIBXML_TREE_ENABLED */
1.1.1.3 ! misho    1051: XMLPUBFUN void XMLCALL
1.1       misho    1052:                xmlNodeSetContent       (xmlNodePtr cur,
                   1053:                                         const xmlChar *content);
                   1054: #ifdef LIBXML_TREE_ENABLED
1.1.1.3 ! misho    1055: XMLPUBFUN void XMLCALL
1.1       misho    1056:                xmlNodeSetContentLen    (xmlNodePtr cur,
                   1057:                                         const xmlChar *content,
                   1058:                                         int len);
                   1059: #endif /* LIBXML_TREE_ENABLED */
1.1.1.3 ! misho    1060: XMLPUBFUN void XMLCALL
1.1       misho    1061:                xmlNodeAddContent       (xmlNodePtr cur,
                   1062:                                         const xmlChar *content);
1.1.1.3 ! misho    1063: XMLPUBFUN void XMLCALL
1.1       misho    1064:                xmlNodeAddContentLen    (xmlNodePtr cur,
                   1065:                                         const xmlChar *content,
                   1066:                                         int len);
1.1.1.3 ! misho    1067: XMLPUBFUN xmlChar * XMLCALL
1.1       misho    1068:                xmlNodeGetContent       (xmlNodePtr cur);
1.1.1.3 ! misho    1069: 
1.1       misho    1070: XMLPUBFUN int XMLCALL
                   1071:                xmlNodeBufGetContent    (xmlBufferPtr buffer,
                   1072:                                         xmlNodePtr cur);
1.1.1.3 ! misho    1073: XMLPUBFUN int XMLCALL
        !          1074:                xmlBufGetNodeContent    (xmlBufPtr buf,
        !          1075:                                         xmlNodePtr cur);
        !          1076: 
        !          1077: XMLPUBFUN xmlChar * XMLCALL
1.1       misho    1078:                xmlNodeGetLang          (xmlNodePtr cur);
1.1.1.3 ! misho    1079: XMLPUBFUN int XMLCALL
1.1       misho    1080:                xmlNodeGetSpacePreserve (xmlNodePtr cur);
                   1081: #ifdef LIBXML_TREE_ENABLED
1.1.1.3 ! misho    1082: XMLPUBFUN void XMLCALL
1.1       misho    1083:                xmlNodeSetLang          (xmlNodePtr cur,
                   1084:                                         const xmlChar *lang);
1.1.1.3 ! misho    1085: XMLPUBFUN void XMLCALL
1.1       misho    1086:                xmlNodeSetSpacePreserve (xmlNodePtr cur,
                   1087:                                         int val);
                   1088: #endif /* LIBXML_TREE_ENABLED */
1.1.1.3 ! misho    1089: XMLPUBFUN xmlChar * XMLCALL
1.1       misho    1090:                xmlNodeGetBase          (xmlDocPtr doc,
                   1091:                                         xmlNodePtr cur);
                   1092: #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED)
1.1.1.3 ! misho    1093: XMLPUBFUN void XMLCALL
1.1       misho    1094:                xmlNodeSetBase          (xmlNodePtr cur,
                   1095:                                         const xmlChar *uri);
                   1096: #endif
                   1097: 
                   1098: /*
                   1099:  * Removing content.
                   1100:  */
1.1.1.3 ! misho    1101: XMLPUBFUN int XMLCALL
1.1       misho    1102:                xmlRemoveProp           (xmlAttrPtr cur);
                   1103: #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
1.1.1.3 ! misho    1104: XMLPUBFUN int XMLCALL
1.1       misho    1105:                xmlUnsetNsProp          (xmlNodePtr node,
                   1106:                                         xmlNsPtr ns,
                   1107:                                         const xmlChar *name);
1.1.1.3 ! misho    1108: XMLPUBFUN int XMLCALL
1.1       misho    1109:                xmlUnsetProp            (xmlNodePtr node,
                   1110:                                         const xmlChar *name);
                   1111: #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
                   1112: 
                   1113: /*
                   1114:  * Internal, don't use.
                   1115:  */
1.1.1.3 ! misho    1116: XMLPUBFUN void XMLCALL
1.1       misho    1117:                xmlBufferWriteCHAR      (xmlBufferPtr buf,
                   1118:                                         const xmlChar *string);
1.1.1.3 ! misho    1119: XMLPUBFUN void XMLCALL
1.1       misho    1120:                xmlBufferWriteChar      (xmlBufferPtr buf,
                   1121:                                         const char *string);
1.1.1.3 ! misho    1122: XMLPUBFUN void XMLCALL
1.1       misho    1123:                xmlBufferWriteQuotedString(xmlBufferPtr buf,
                   1124:                                         const xmlChar *string);
                   1125: 
                   1126: #ifdef LIBXML_OUTPUT_ENABLED
                   1127: XMLPUBFUN void xmlAttrSerializeTxtContent(xmlBufferPtr buf,
                   1128:                                         xmlDocPtr doc,
                   1129:                                         xmlAttrPtr attr,
                   1130:                                         const xmlChar *string);
                   1131: #endif /* LIBXML_OUTPUT_ENABLED */
                   1132: 
                   1133: #ifdef LIBXML_TREE_ENABLED
                   1134: /*
                   1135:  * Namespace handling.
                   1136:  */
1.1.1.3 ! misho    1137: XMLPUBFUN int XMLCALL
1.1       misho    1138:                xmlReconciliateNs       (xmlDocPtr doc,
                   1139:                                         xmlNodePtr tree);
                   1140: #endif
                   1141: 
                   1142: #ifdef LIBXML_OUTPUT_ENABLED
                   1143: /*
                   1144:  * Saving.
                   1145:  */
1.1.1.3 ! misho    1146: XMLPUBFUN void XMLCALL
1.1       misho    1147:                xmlDocDumpFormatMemory  (xmlDocPtr cur,
                   1148:                                         xmlChar **mem,
                   1149:                                         int *size,
                   1150:                                         int format);
1.1.1.3 ! misho    1151: XMLPUBFUN void XMLCALL
1.1       misho    1152:                xmlDocDumpMemory        (xmlDocPtr cur,
                   1153:                                         xmlChar **mem,
                   1154:                                         int *size);
1.1.1.3 ! misho    1155: XMLPUBFUN void XMLCALL
1.1       misho    1156:                xmlDocDumpMemoryEnc     (xmlDocPtr out_doc,
                   1157:                                         xmlChar **doc_txt_ptr,
                   1158:                                         int * doc_txt_len,
                   1159:                                         const char *txt_encoding);
1.1.1.3 ! misho    1160: XMLPUBFUN void XMLCALL
1.1       misho    1161:                xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc,
                   1162:                                         xmlChar **doc_txt_ptr,
                   1163:                                         int * doc_txt_len,
                   1164:                                         const char *txt_encoding,
                   1165:                                         int format);
1.1.1.3 ! misho    1166: XMLPUBFUN int XMLCALL
1.1       misho    1167:                xmlDocFormatDump        (FILE *f,
                   1168:                                         xmlDocPtr cur,
                   1169:                                         int format);
1.1.1.3 ! misho    1170: XMLPUBFUN int XMLCALL
1.1       misho    1171:                xmlDocDump              (FILE *f,
                   1172:                                         xmlDocPtr cur);
1.1.1.3 ! misho    1173: XMLPUBFUN void XMLCALL
1.1       misho    1174:                xmlElemDump             (FILE *f,
                   1175:                                         xmlDocPtr doc,
                   1176:                                         xmlNodePtr cur);
1.1.1.3 ! misho    1177: XMLPUBFUN int XMLCALL
1.1       misho    1178:                xmlSaveFile             (const char *filename,
                   1179:                                         xmlDocPtr cur);
1.1.1.3 ! misho    1180: XMLPUBFUN int XMLCALL
1.1       misho    1181:                xmlSaveFormatFile       (const char *filename,
                   1182:                                         xmlDocPtr cur,
                   1183:                                         int format);
1.1.1.3 ! misho    1184: XMLPUBFUN size_t XMLCALL
        !          1185:                xmlBufNodeDump          (xmlBufPtr buf,
        !          1186:                                         xmlDocPtr doc,
        !          1187:                                         xmlNodePtr cur,
        !          1188:                                         int level,
        !          1189:                                         int format);
        !          1190: XMLPUBFUN int XMLCALL
1.1       misho    1191:                xmlNodeDump             (xmlBufferPtr buf,
                   1192:                                         xmlDocPtr doc,
                   1193:                                         xmlNodePtr cur,
                   1194:                                         int level,
                   1195:                                         int format);
                   1196: 
1.1.1.3 ! misho    1197: XMLPUBFUN int XMLCALL
1.1       misho    1198:                xmlSaveFileTo           (xmlOutputBufferPtr buf,
                   1199:                                         xmlDocPtr cur,
                   1200:                                         const char *encoding);
1.1.1.3 ! misho    1201: XMLPUBFUN int XMLCALL
1.1       misho    1202:                xmlSaveFormatFileTo     (xmlOutputBufferPtr buf,
                   1203:                                         xmlDocPtr cur,
                   1204:                                         const char *encoding,
                   1205:                                         int format);
1.1.1.3 ! misho    1206: XMLPUBFUN void XMLCALL
1.1       misho    1207:                xmlNodeDumpOutput       (xmlOutputBufferPtr buf,
                   1208:                                         xmlDocPtr doc,
                   1209:                                         xmlNodePtr cur,
                   1210:                                         int level,
                   1211:                                         int format,
                   1212:                                         const char *encoding);
                   1213: 
1.1.1.3 ! misho    1214: XMLPUBFUN int XMLCALL
1.1       misho    1215:                xmlSaveFormatFileEnc    (const char *filename,
                   1216:                                         xmlDocPtr cur,
                   1217:                                         const char *encoding,
                   1218:                                         int format);
                   1219: 
1.1.1.3 ! misho    1220: XMLPUBFUN int XMLCALL
1.1       misho    1221:                xmlSaveFileEnc          (const char *filename,
                   1222:                                         xmlDocPtr cur,
                   1223:                                         const char *encoding);
                   1224: 
                   1225: #endif /* LIBXML_OUTPUT_ENABLED */
                   1226: /*
                   1227:  * XHTML
                   1228:  */
1.1.1.3 ! misho    1229: XMLPUBFUN int XMLCALL
1.1       misho    1230:                xmlIsXHTML              (const xmlChar *systemID,
                   1231:                                         const xmlChar *publicID);
                   1232: 
                   1233: /*
                   1234:  * Compression.
                   1235:  */
1.1.1.3 ! misho    1236: XMLPUBFUN int XMLCALL
1.1       misho    1237:                xmlGetDocCompressMode   (xmlDocPtr doc);
1.1.1.3 ! misho    1238: XMLPUBFUN void XMLCALL
1.1       misho    1239:                xmlSetDocCompressMode   (xmlDocPtr doc,
                   1240:                                         int mode);
1.1.1.3 ! misho    1241: XMLPUBFUN int XMLCALL
1.1       misho    1242:                xmlGetCompressMode      (void);
1.1.1.3 ! misho    1243: XMLPUBFUN void XMLCALL
1.1       misho    1244:                xmlSetCompressMode      (int mode);
                   1245: 
                   1246: /*
                   1247: * DOM-wrapper helper functions.
                   1248: */
                   1249: XMLPUBFUN xmlDOMWrapCtxtPtr XMLCALL
                   1250:                xmlDOMWrapNewCtxt       (void);
                   1251: XMLPUBFUN void XMLCALL
                   1252:                xmlDOMWrapFreeCtxt      (xmlDOMWrapCtxtPtr ctxt);
                   1253: XMLPUBFUN int XMLCALL
                   1254:            xmlDOMWrapReconcileNamespaces(xmlDOMWrapCtxtPtr ctxt,
                   1255:                                         xmlNodePtr elem,
                   1256:                                         int options);
                   1257: XMLPUBFUN int XMLCALL
                   1258:            xmlDOMWrapAdoptNode         (xmlDOMWrapCtxtPtr ctxt,
                   1259:                                         xmlDocPtr sourceDoc,
                   1260:                                         xmlNodePtr node,
1.1.1.3 ! misho    1261:                                         xmlDocPtr destDoc,
1.1       misho    1262:                                         xmlNodePtr destParent,
                   1263:                                         int options);
                   1264: XMLPUBFUN int XMLCALL
                   1265:            xmlDOMWrapRemoveNode        (xmlDOMWrapCtxtPtr ctxt,
                   1266:                                         xmlDocPtr doc,
                   1267:                                         xmlNodePtr node,
                   1268:                                         int options);
                   1269: XMLPUBFUN int XMLCALL
                   1270:            xmlDOMWrapCloneNode         (xmlDOMWrapCtxtPtr ctxt,
                   1271:                                         xmlDocPtr sourceDoc,
                   1272:                                         xmlNodePtr node,
                   1273:                                         xmlNodePtr *clonedNode,
                   1274:                                         xmlDocPtr destDoc,
                   1275:                                         xmlNodePtr destParent,
                   1276:                                         int deep,
                   1277:                                         int options);
                   1278: 
                   1279: #ifdef LIBXML_TREE_ENABLED
                   1280: /*
                   1281:  * 5 interfaces from DOM ElementTraversal, but different in entities
                   1282:  * traversal.
                   1283:  */
                   1284: XMLPUBFUN unsigned long XMLCALL
                   1285:             xmlChildElementCount        (xmlNodePtr parent);
                   1286: XMLPUBFUN xmlNodePtr XMLCALL
                   1287:             xmlNextElementSibling       (xmlNodePtr node);
                   1288: XMLPUBFUN xmlNodePtr XMLCALL
                   1289:             xmlFirstElementChild        (xmlNodePtr parent);
                   1290: XMLPUBFUN xmlNodePtr XMLCALL
                   1291:             xmlLastElementChild         (xmlNodePtr parent);
                   1292: XMLPUBFUN xmlNodePtr XMLCALL
                   1293:             xmlPreviousElementSibling   (xmlNodePtr node);
                   1294: #endif
                   1295: #ifdef __cplusplus
                   1296: }
                   1297: #endif
                   1298: #ifndef __XML_PARSER_H__
                   1299: #include <libxml/xmlmemory.h>
                   1300: #endif
                   1301: 
                   1302: #endif /* __XML_TREE_H__ */
                   1303: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>