Annotation of win32/gnome/gnome-xml/include/libxml/tree.h, revision 1.2

1.1       paf         1: /*
                      2:  * tree.h : describes the structures found in an tree resulting
                      3:  *          from an XML parsing.
                      4:  *
                      5:  * See Copyright for the status of this software.
                      6:  *
                      7:  * daniel@veillard.com
                      8:  *
                      9:  */
                     10: 
                     11: #ifndef __XML_TREE_H__
                     12: #define __XML_TREE_H__
                     13: 
                     14: #include <stdio.h>
                     15: #include <libxml/xmlversion.h>
                     16: 
                     17: #ifdef __cplusplus
                     18: extern "C" {
                     19: #endif
                     20: 
                     21: /*
                     22:  * Some of the basic types pointer to structures:
                     23:  */
                     24: /* xmlIO.h */
                     25: typedef struct _xmlParserInputBuffer xmlParserInputBuffer;
                     26: typedef xmlParserInputBuffer *xmlParserInputBufferPtr;
                     27: 
                     28: typedef struct _xmlOutputBuffer xmlOutputBuffer;
                     29: typedef xmlOutputBuffer *xmlOutputBufferPtr;
                     30: 
                     31: /* parser.h */
                     32: typedef struct _xmlParserInput xmlParserInput;
                     33: typedef xmlParserInput *xmlParserInputPtr;
                     34: 
                     35: typedef struct _xmlParserCtxt xmlParserCtxt;
                     36: typedef xmlParserCtxt *xmlParserCtxtPtr;
                     37: 
                     38: typedef struct _xmlSAXLocator xmlSAXLocator;
                     39: typedef xmlSAXLocator *xmlSAXLocatorPtr;
                     40: 
                     41: typedef struct _xmlSAXHandler xmlSAXHandler;
                     42: typedef xmlSAXHandler *xmlSAXHandlerPtr;
                     43: 
                     44: /* entities.h */
                     45: typedef struct _xmlEntity xmlEntity;
                     46: typedef xmlEntity *xmlEntityPtr;
                     47: 
                     48: /**
                     49:  * BASE_BUFFER_SIZE:
                     50:  *
                     51:  * default buffer size 4000.
                     52:  */
                     53: #define BASE_BUFFER_SIZE 4000
                     54: 
                     55: /**
                     56:  * XML_XML_NAMESPACE:
                     57:  *
                     58:  * This is the namespace for the special xml: prefix predefined in the
                     59:  * XML Namespace specification.
                     60:  */
                     61: #define XML_XML_NAMESPACE \
                     62:     (const xmlChar *) "http://www.w3.org/XML/1998/namespace"
                     63: 
                     64: /*
                     65:  * The different element types carried by an XML tree.
                     66:  *
                     67:  * NOTE: This is synchronized with DOM Level1 values
                     68:  *       See http://www.w3.org/TR/REC-DOM-Level-1/
                     69:  *
                     70:  * Actually this had diverged a bit, and now XML_DOCUMENT_TYPE_NODE should
                     71:  * be deprecated to use an XML_DTD_NODE.
                     72:  */
                     73: typedef enum {
                     74:     XML_ELEMENT_NODE=          1,
                     75:     XML_ATTRIBUTE_NODE=                2,
                     76:     XML_TEXT_NODE=             3,
                     77:     XML_CDATA_SECTION_NODE=    4,
                     78:     XML_ENTITY_REF_NODE=       5,
                     79:     XML_ENTITY_NODE=           6,
                     80:     XML_PI_NODE=               7,
                     81:     XML_COMMENT_NODE=          8,
                     82:     XML_DOCUMENT_NODE=         9,
                     83:     XML_DOCUMENT_TYPE_NODE=    10,
                     84:     XML_DOCUMENT_FRAG_NODE=    11,
                     85:     XML_NOTATION_NODE=         12,
                     86:     XML_HTML_DOCUMENT_NODE=    13,
                     87:     XML_DTD_NODE=              14,
                     88:     XML_ELEMENT_DECL=          15,
                     89:     XML_ATTRIBUTE_DECL=                16,
                     90:     XML_ENTITY_DECL=           17,
                     91:     XML_NAMESPACE_DECL=                18,
                     92:     XML_XINCLUDE_START=                19,
                     93:     XML_XINCLUDE_END=          20
                     94: #ifdef LIBXML_DOCB_ENABLED
                     95:    ,XML_DOCB_DOCUMENT_NODE=    21
                     96: #endif
                     97: } xmlElementType;
                     98: 
                     99: /**
                    100:  * xmlChar:
                    101:  *
                    102:  * This is a basic byte in an UTF-8 encoded string.
                    103:  * It's unsigned allowing to pinpoint case where char * are assigned
                    104:  * to xmlChar * (possibly making serialization back impossible).
                    105:  */
                    106: 
                    107: typedef unsigned char xmlChar;
                    108: 
                    109: /**
                    110:  * BAD_CAST:
                    111:  *
                    112:  * Macro to cast a string to an xmlChar * when one know its safe.
                    113:  */
                    114: #define BAD_CAST (xmlChar *)
                    115: 
                    116: /**
                    117:  * xmlNotation:
                    118:  *
                    119:  * A DTD Notation definition.
                    120:  */
                    121: 
                    122: typedef struct _xmlNotation xmlNotation;
                    123: typedef xmlNotation *xmlNotationPtr;
                    124: struct _xmlNotation {
                    125:     const xmlChar               *name;         /* Notation name */
                    126:     const xmlChar               *PublicID;     /* Public identifier, if any */
                    127:     const xmlChar               *SystemID;     /* System identifier, if any */
                    128: };
                    129: 
                    130: /**
                    131:  * xmlAttributeType:
                    132:  *
                    133:  * A DTD Attribute type definition.
                    134:  */
                    135: 
                    136: typedef enum {
                    137:     XML_ATTRIBUTE_CDATA = 1,
                    138:     XML_ATTRIBUTE_ID,
                    139:     XML_ATTRIBUTE_IDREF        ,
                    140:     XML_ATTRIBUTE_IDREFS,
                    141:     XML_ATTRIBUTE_ENTITY,
                    142:     XML_ATTRIBUTE_ENTITIES,
                    143:     XML_ATTRIBUTE_NMTOKEN,
                    144:     XML_ATTRIBUTE_NMTOKENS,
                    145:     XML_ATTRIBUTE_ENUMERATION,
                    146:     XML_ATTRIBUTE_NOTATION
                    147: } xmlAttributeType;
                    148: 
                    149: /**
                    150:  * xmlAttributeDefault:
                    151:  *
                    152:  * A DTD Attribute default definition.
                    153:  */
                    154: 
                    155: typedef enum {
                    156:     XML_ATTRIBUTE_NONE = 1,
                    157:     XML_ATTRIBUTE_REQUIRED,
                    158:     XML_ATTRIBUTE_IMPLIED,
                    159:     XML_ATTRIBUTE_FIXED
                    160: } xmlAttributeDefault;
                    161: 
                    162: /**
                    163:  * xmlEnumeration:
                    164:  *
                    165:  * List structure used when there is an enumeration in DTDs.
                    166:  */
                    167: 
                    168: typedef struct _xmlEnumeration xmlEnumeration;
                    169: typedef xmlEnumeration *xmlEnumerationPtr;
                    170: struct _xmlEnumeration {
                    171:     struct _xmlEnumeration    *next;   /* next one */
                    172:     const xmlChar            *name;    /* Enumeration name */
                    173: };
                    174: 
                    175: /**
                    176:  * xmlAttribute:
                    177:  *
                    178:  * An Attribute declaration in a DTD.
                    179:  */
                    180: 
                    181: typedef struct _xmlAttribute xmlAttribute;
                    182: typedef xmlAttribute *xmlAttributePtr;
                    183: struct _xmlAttribute {
                    184:     void           *_private;          /* application data */
                    185:     xmlElementType          type;       /* XML_ATTRIBUTE_DECL, must be second ! */
                    186:     const xmlChar          *name;      /* Attribute name */
                    187:     struct _xmlNode    *children;      /* NULL */
                    188:     struct _xmlNode        *last;      /* NULL */
                    189:     struct _xmlDtd       *parent;      /* -> DTD */
                    190:     struct _xmlNode        *next;      /* next sibling link  */
                    191:     struct _xmlNode        *prev;      /* previous sibling link  */
                    192:     struct _xmlDoc          *doc;       /* the containing document */
                    193: 
                    194:     struct _xmlAttribute  *nexth;      /* next in hash table */
                    195:     xmlAttributeType       atype;      /* The attribute type */
                    196:     xmlAttributeDefault      def;      /* the default */
                    197:     const xmlChar  *defaultValue;      /* or the default value */
                    198:     xmlEnumerationPtr       tree;       /* or the enumeration tree if any */
                    199:     const xmlChar        *prefix;      /* the namespace prefix if any */
                    200:     const xmlChar          *elem;      /* Element holding the attribute */
                    201: };
                    202: 
                    203: /**
                    204:  * xmlElementContentType:
                    205:  *
                    206:  * Possible definitions of element content types.
                    207:  */
                    208: typedef enum {
                    209:     XML_ELEMENT_CONTENT_PCDATA = 1,
                    210:     XML_ELEMENT_CONTENT_ELEMENT,
                    211:     XML_ELEMENT_CONTENT_SEQ,
                    212:     XML_ELEMENT_CONTENT_OR
                    213: } xmlElementContentType;
                    214: 
                    215: /**
                    216:  * xmlElementContentOccur:
                    217:  *
                    218:  * Possible definitions of element content occurrences.
                    219:  */
                    220: typedef enum {
                    221:     XML_ELEMENT_CONTENT_ONCE = 1,
                    222:     XML_ELEMENT_CONTENT_OPT,
                    223:     XML_ELEMENT_CONTENT_MULT,
                    224:     XML_ELEMENT_CONTENT_PLUS
                    225: } xmlElementContentOccur;
                    226: 
                    227: /**
                    228:  * xmlElementContent:
                    229:  *
                    230:  * An XML Element content as stored after parsing an element definition
                    231:  * in a DTD.
                    232:  */
                    233: 
                    234: typedef struct _xmlElementContent xmlElementContent;
                    235: typedef xmlElementContent *xmlElementContentPtr;
                    236: struct _xmlElementContent {
                    237:     xmlElementContentType     type;    /* PCDATA, ELEMENT, SEQ or OR */
                    238:     xmlElementContentOccur    ocur;    /* ONCE, OPT, MULT or PLUS */
                    239:     const xmlChar             *name;   /* Element name */
                    240:     struct _xmlElementContent *c1;     /* first child */
                    241:     struct _xmlElementContent *c2;     /* second child */
                    242:     struct _xmlElementContent *parent; /* parent */
                    243:     const xmlChar             *prefix; /* Namespace prefix */
                    244: };
                    245: 
                    246: /**
                    247:  * xmlElementTypeVal:
                    248:  *
                    249:  * The different possibilities for an element content type.
                    250:  */
                    251: 
                    252: typedef enum {
                    253:     XML_ELEMENT_TYPE_UNDEFINED = 0,
                    254:     XML_ELEMENT_TYPE_EMPTY = 1,
                    255:     XML_ELEMENT_TYPE_ANY,
                    256:     XML_ELEMENT_TYPE_MIXED,
                    257:     XML_ELEMENT_TYPE_ELEMENT
                    258: } xmlElementTypeVal;
                    259: 
                    260: 
                    261: #ifdef __cplusplus
                    262: }
                    263: #endif
                    264: #include <libxml/xmlregexp.h>
                    265: #ifdef __cplusplus
                    266: extern "C" {
                    267: #endif
                    268: 
                    269: /**
                    270:  * xmlElement:
                    271:  *
                    272:  * An XML Element declaration from a DTD.
                    273:  */
                    274: 
                    275: typedef struct _xmlElement xmlElement;
                    276: typedef xmlElement *xmlElementPtr;
                    277: struct _xmlElement {
                    278:     void           *_private;          /* application data */
                    279:     xmlElementType          type;       /* XML_ELEMENT_DECL, must be second ! */
                    280:     const xmlChar          *name;      /* Element name */
                    281:     struct _xmlNode    *children;      /* NULL */
                    282:     struct _xmlNode        *last;      /* NULL */
                    283:     struct _xmlDtd       *parent;      /* -> DTD */
                    284:     struct _xmlNode        *next;      /* next sibling link  */
                    285:     struct _xmlNode        *prev;      /* previous sibling link  */
                    286:     struct _xmlDoc          *doc;       /* the containing document */
                    287: 
                    288:     xmlElementTypeVal      etype;      /* The type */
                    289:     xmlElementContentPtr content;      /* the allowed element content */
                    290:     xmlAttributePtr   attributes;      /* List of the declared attributes */
                    291:     const xmlChar        *prefix;      /* the namespace prefix if any */
                    292: #ifdef LIBXML_REGEXP_ENABLED
                    293:     xmlRegexpPtr       contModel;      /* the validating regexp */
                    294: #else
                    295:     void             *contModel;
                    296: #endif
                    297: };
                    298: 
                    299: 
                    300: /**
                    301:  * XML_LOCAL_NAMESPACE:
                    302:  *
                    303:  * A namespace declaration node.
                    304:  */
                    305: #define XML_LOCAL_NAMESPACE XML_NAMESPACE_DECL
                    306: typedef xmlElementType xmlNsType;
                    307: 
                    308: /**
                    309:  * xmlNs:
                    310:  *
                    311:  * An XML namespace.
                    312:  * Note that prefix == NULL is valid, it defines the default namespace
                    313:  * within the subtree (until overridden).
                    314:  *
                    315:  * xmlNsType is unified with xmlElementType.
                    316:  */
                    317: 
                    318: typedef struct _xmlNs xmlNs;
                    319: typedef xmlNs *xmlNsPtr;
                    320: struct _xmlNs {
                    321:     struct _xmlNs  *next;      /* next Ns link for this node  */
                    322:     xmlNsType      type;       /* global or local */
                    323:     const xmlChar *href;       /* URL for the namespace */
                    324:     const xmlChar *prefix;     /* prefix for the namespace */
                    325:     void           *_private;   /* application data */
                    326: };
                    327: 
                    328: /**
                    329:  * xmlDtd:
                    330:  *
                    331:  * An XML DTD, as defined by <!DOCTYPE ... There is actually one for
                    332:  * the internal subset and for the external subset.
                    333:  */
                    334: typedef struct _xmlDtd xmlDtd;
                    335: typedef xmlDtd *xmlDtdPtr;
                    336: struct _xmlDtd {
                    337:     void           *_private;  /* application data */
                    338:     xmlElementType  type;       /* XML_DTD_NODE, must be second ! */
                    339:     const xmlChar *name;       /* Name of the DTD */
                    340:     struct _xmlNode *children; /* the value of the property link */
                    341:     struct _xmlNode *last;     /* last child link */
                    342:     struct _xmlDoc  *parent;   /* child->parent link */
                    343:     struct _xmlNode *next;     /* next sibling link  */
                    344:     struct _xmlNode *prev;     /* previous sibling link  */
                    345:     struct _xmlDoc  *doc;      /* the containing document */
                    346: 
                    347:     /* End of common part */
                    348:     void          *notations;   /* Hash table for notations if any */
                    349:     void          *elements;    /* Hash table for elements if any */
                    350:     void          *attributes;  /* Hash table for attributes if any */
                    351:     void          *entities;    /* Hash table for entities if any */
                    352:     const xmlChar *ExternalID; /* External identifier for PUBLIC DTD */
                    353:     const xmlChar *SystemID;   /* URI for a SYSTEM or PUBLIC DTD */
                    354:     void          *pentities;   /* Hash table for param entities if any */
                    355: };
                    356: 
                    357: /**
                    358:  * xmlAttr:
                    359:  *
                    360:  * An attribute on an XML node.
                    361:  */
                    362: typedef struct _xmlAttr xmlAttr;
                    363: typedef xmlAttr *xmlAttrPtr;
                    364: struct _xmlAttr {
                    365:     void           *_private;  /* application data */
                    366:     xmlElementType   type;      /* XML_ATTRIBUTE_NODE, must be second ! */
                    367:     const xmlChar   *name;      /* the name of the property */
                    368:     struct _xmlNode *children; /* the value of the property */
                    369:     struct _xmlNode *last;     /* NULL */
                    370:     struct _xmlNode *parent;   /* child->parent link */
                    371:     struct _xmlAttr *next;     /* next sibling link  */
                    372:     struct _xmlAttr *prev;     /* previous sibling link  */
                    373:     struct _xmlDoc  *doc;      /* the containing document */
                    374:     xmlNs           *ns;        /* pointer to the associated namespace */
                    375:     xmlAttributeType atype;     /* the attribute type if validating */
                    376: };
                    377: 
                    378: /**
                    379:  * xmlID:
                    380:  *
                    381:  * An XML ID instance.
                    382:  */
                    383: 
                    384: typedef struct _xmlID xmlID;
                    385: typedef xmlID *xmlIDPtr;
                    386: struct _xmlID {
                    387:     struct _xmlID    *next;    /* next ID */
                    388:     const xmlChar    *value;   /* The ID name */
                    389:     xmlAttrPtr        attr;    /* The attribute holding it */
                    390:     const xmlChar    *name;    /* The attribute if attr is not available */
                    391:     int               lineno;  /* The line number if attr is not available */
                    392: };
                    393: 
                    394: /**
                    395:  * xmlRef:
                    396:  *
                    397:  * An XML IDREF instance.
                    398:  */
                    399: 
                    400: typedef struct _xmlRef xmlRef;
                    401: typedef xmlRef *xmlRefPtr;
                    402: struct _xmlRef {
                    403:     struct _xmlRef    *next;   /* next Ref */
                    404:     const xmlChar     *value;  /* The Ref name */
                    405:     xmlAttrPtr        attr;    /* The attribute holding it */
                    406:     const xmlChar    *name;    /* The attribute if attr is not available */
                    407:     int               lineno;  /* The line number if attr is not available */
                    408: };
                    409: 
                    410: /**
                    411:  * xmlBufferAllocationScheme:
                    412:  *
                    413:  * A buffer allocation scheme can be defined to either match exactly the
                    414:  * need or double it's allocated size each time it is found too small.
                    415:  */
                    416: 
                    417: typedef enum {
                    418:     XML_BUFFER_ALLOC_DOUBLEIT,
                    419:     XML_BUFFER_ALLOC_EXACT
                    420: } xmlBufferAllocationScheme;
                    421: 
                    422: /**
                    423:  * xmlBuffer:
                    424:  *
                    425:  * A buffer structure.
                    426:  */
                    427: typedef struct _xmlBuffer xmlBuffer;
                    428: typedef xmlBuffer *xmlBufferPtr;
                    429: struct _xmlBuffer {
                    430:     xmlChar *content;          /* The buffer content UTF8 */
                    431:     unsigned int use;          /* The buffer size used */
                    432:     unsigned int size;         /* The buffer size */
                    433:     xmlBufferAllocationScheme alloc; /* The realloc method */
                    434: };
                    435: 
                    436: /**
                    437:  * xmlNode:
                    438:  *
                    439:  * A node in an XML tree.
                    440:  */
                    441: typedef struct _xmlNode xmlNode;
                    442: typedef xmlNode *xmlNodePtr;
                    443: struct _xmlNode {
                    444:     void           *_private;  /* application data */
                    445:     xmlElementType   type;     /* type number, must be second ! */
                    446:     const xmlChar   *name;      /* the name of the node, or the entity */
                    447:     struct _xmlNode *children; /* parent->childs link */
                    448:     struct _xmlNode *last;     /* last child link */
                    449:     struct _xmlNode *parent;   /* child->parent link */
                    450:     struct _xmlNode *next;     /* next sibling link  */
                    451:     struct _xmlNode *prev;     /* previous sibling link  */
                    452:     struct _xmlDoc  *doc;      /* the containing document */
                    453: 
                    454:     /* End of common part */
                    455:     xmlNs           *ns;        /* pointer to the associated namespace */
                    456:     xmlChar         *content;   /* the content */
                    457:     struct _xmlAttr *properties;/* properties list */
                    458:     xmlNs           *nsDef;     /* namespace definitions on this node */
                    459: };
                    460: 
                    461: /**
                    462:  * XML_GET_CONTENT:
                    463:  *
                    464:  * Macro to extract the content pointer of a node.
                    465:  */
                    466: #define XML_GET_CONTENT(n)                                     \
                    467:     ((n)->type == XML_ELEMENT_NODE ? NULL : (n)->content)
                    468: 
                    469: /**
                    470:  * XML_GET_LINE:
                    471:  *
                    472:  * Macro to extract the line number of an element node. 
                    473:  * This will work only if line numbering is activated by
                    474:  * calling xmlLineNumbersDefault(1) before parsing.
                    475:  */
                    476: #define XML_GET_LINE(n)                                                \
                    477:     ((n)->type == XML_ELEMENT_NODE ? (int) (n)->content : 0)
                    478: 
                    479: /**
                    480:  * xmlDoc:
                    481:  *
                    482:  * An XML document.
                    483:  */
                    484: typedef struct _xmlDoc xmlDoc;
                    485: typedef xmlDoc *xmlDocPtr;
                    486: struct _xmlDoc {
                    487:     void           *_private;  /* application data */
                    488:     xmlElementType  type;       /* XML_DOCUMENT_NODE, must be second ! */
                    489:     char           *name;      /* name/filename/URI of the document */
                    490:     struct _xmlNode *children; /* the document tree */
                    491:     struct _xmlNode *last;     /* last child link */
                    492:     struct _xmlNode *parent;   /* child->parent link */
                    493:     struct _xmlNode *next;     /* next sibling link  */
                    494:     struct _xmlNode *prev;     /* previous sibling link  */
                    495:     struct _xmlDoc  *doc;      /* autoreference to itself */
                    496: 
                    497:     /* End of common part */
                    498:     int             compression;/* level of zlib compression */
                    499:     int             standalone; /* standalone document (no external refs) */
                    500:     struct _xmlDtd  *intSubset;        /* the document internal subset */
                    501:     struct _xmlDtd  *extSubset;        /* the document external subset */
                    502:     struct _xmlNs   *oldNs;    /* Global namespace, the old way */
                    503:     const xmlChar  *version;   /* the XML version string */
                    504:     const xmlChar  *encoding;   /* external initial encoding, if any */
                    505:     void           *ids;        /* Hash table for ID attributes if any */
                    506:     void           *refs;       /* Hash table for IDREFs attributes if any */
                    507:     const xmlChar  *URL;       /* The URI for that document */
                    508:     int             charset;    /* encoding of the in-memory content
                    509:                                   actually an xmlCharEncoding */
                    510: };
                    511: 
                    512: /**
                    513:  * xmlChildrenNode:
                    514:  *
                    515:  * Macro for compatibility naming layer with libxml1.
                    516:  */
                    517: #ifndef xmlChildrenNode
                    518: #define xmlChildrenNode children
                    519: #endif
                    520: 
                    521: /**
                    522:  * xmlRootNode:
                    523:  *
                    524:  * Macro for compatibility naming layer with libxml1.
                    525:  */
                    526: #ifndef xmlRootNode
                    527: #define xmlRootNode children
                    528: #endif
                    529: 
                    530: /*
                    531:  * Variables.
                    532:  */
                    533: #if 0
                    534: LIBXML_DLL_IMPORT extern int oldXMLWDcompatibility;/* maintain compatibility with old WD */
                    535: LIBXML_DLL_IMPORT extern int xmlIndentTreeOutput;  /* try to indent the tree dumps */
                    536: LIBXML_DLL_IMPORT extern xmlBufferAllocationScheme xmlBufferAllocScheme; /* alloc scheme to use */
                    537: LIBXML_DLL_IMPORT extern int xmlSaveNoEmptyTags; /* save empty tags as <empty></empty> */
                    538: LIBXML_DLL_IMPORT extern int xmlDefaultBufferSize; /* default buffer size */
                    539: #endif
                    540: 
1.2     ! paf       541: /*
        !           542:  * Some helper functions
        !           543:  */
        !           544: int            xmlValidateNCName       (const xmlChar *value,
        !           545:                                         int space);
        !           546: int            xmlValidateQName        (const xmlChar *value,
        !           547:                                         int space);
        !           548: int            xmlValidateName         (const xmlChar *value,
        !           549:                                         int space);
        !           550: int            xmlValidateNMToken      (const xmlChar *value,
        !           551:                                         int space);
        !           552: 
        !           553: xmlChar *      xmlBuildQName           (const xmlChar *ncname,
        !           554:                                         const xmlChar *prefix,
        !           555:                                         xmlChar *memory,
        !           556:                                         int len);
        !           557: xmlChar *      xmlSplitQName2          (const xmlChar *name,
        !           558:                                         xmlChar **prefix);
1.1       paf       559: /*
                    560:  * Handling Buffers.
                    561:  */
                    562: 
                    563: void           xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme);
                    564: xmlBufferAllocationScheme       xmlGetBufferAllocationScheme(void);
                    565: 
                    566: xmlBufferPtr   xmlBufferCreate         (void);
                    567: xmlBufferPtr   xmlBufferCreateSize     (size_t size);
                    568: int            xmlBufferResize         (xmlBufferPtr buf,
                    569:                                         unsigned int size);
                    570: void           xmlBufferFree           (xmlBufferPtr buf);
                    571: int            xmlBufferDump           (FILE *file,
                    572:                                         xmlBufferPtr buf);
                    573: void           xmlBufferAdd            (xmlBufferPtr buf,
                    574:                                         const xmlChar *str,
                    575:                                         int len);
                    576: void           xmlBufferAddHead        (xmlBufferPtr buf,
                    577:                                         const xmlChar *str,
                    578:                                         int len);
                    579: void           xmlBufferCat            (xmlBufferPtr buf,
                    580:                                         const xmlChar *str);
                    581: void           xmlBufferCCat           (xmlBufferPtr buf,
                    582:                                         const char *str);
                    583: int            xmlBufferShrink         (xmlBufferPtr buf,
                    584:                                         unsigned int len);
                    585: int            xmlBufferGrow           (xmlBufferPtr buf,
                    586:                                         unsigned int len);
                    587: void           xmlBufferEmpty          (xmlBufferPtr buf);
                    588: const xmlChar* xmlBufferContent        (const xmlBufferPtr buf);
                    589: void           xmlBufferSetAllocationScheme(xmlBufferPtr buf,
                    590:                                         xmlBufferAllocationScheme scheme);
                    591: int            xmlBufferLength         (const xmlBufferPtr buf);
                    592: 
                    593: /*
                    594:  * Creating/freeing new structures.
                    595:  */
                    596: xmlDtdPtr      xmlCreateIntSubset      (xmlDocPtr doc,
                    597:                                         const xmlChar *name,
                    598:                                         const xmlChar *ExternalID,
                    599:                                         const xmlChar *SystemID);
                    600: xmlDtdPtr      xmlNewDtd               (xmlDocPtr doc,
                    601:                                         const xmlChar *name,
                    602:                                         const xmlChar *ExternalID,
                    603:                                         const xmlChar *SystemID);
                    604: xmlDtdPtr      xmlGetIntSubset         (xmlDocPtr doc);
                    605: void           xmlFreeDtd              (xmlDtdPtr cur);
                    606: xmlNsPtr       xmlNewGlobalNs          (xmlDocPtr doc,
                    607:                                         const xmlChar *href,
                    608:                                         const xmlChar *prefix);
                    609: xmlNsPtr       xmlNewNs                (xmlNodePtr node,
                    610:                                         const xmlChar *href,
                    611:                                         const xmlChar *prefix);
                    612: void           xmlFreeNs               (xmlNsPtr cur);
                    613: void           xmlFreeNsList           (xmlNsPtr cur);
                    614: xmlDocPtr      xmlNewDoc               (const xmlChar *version);
                    615: void           xmlFreeDoc              (xmlDocPtr cur);
                    616: xmlAttrPtr     xmlNewDocProp           (xmlDocPtr doc,
                    617:                                         const xmlChar *name,
                    618:                                         const xmlChar *value);
                    619: xmlAttrPtr     xmlNewProp              (xmlNodePtr node,
                    620:                                         const xmlChar *name,
                    621:                                         const xmlChar *value);
                    622: xmlAttrPtr     xmlNewNsProp            (xmlNodePtr node,
                    623:                                         xmlNsPtr ns,
                    624:                                         const xmlChar *name,
                    625:                                         const xmlChar *value);
                    626: xmlAttrPtr     xmlNewNsPropEatName     (xmlNodePtr node,
                    627:                                         xmlNsPtr ns,
                    628:                                         xmlChar *name,
                    629:                                         const xmlChar *value);
                    630: void           xmlFreePropList         (xmlAttrPtr cur);
                    631: void           xmlFreeProp             (xmlAttrPtr cur);
                    632: xmlAttrPtr     xmlCopyProp             (xmlNodePtr target,
                    633:                                         xmlAttrPtr cur);
                    634: xmlAttrPtr     xmlCopyPropList         (xmlNodePtr target,
                    635:                                         xmlAttrPtr cur);
                    636: xmlDtdPtr      xmlCopyDtd              (xmlDtdPtr dtd);
                    637: xmlDocPtr      xmlCopyDoc              (xmlDocPtr doc,
                    638:                                         int recursive);
                    639: 
                    640: /*
                    641:  * Creating new nodes.
                    642:  */
                    643: xmlNodePtr     xmlNewDocNode           (xmlDocPtr doc,
                    644:                                         xmlNsPtr ns,
                    645:                                         const xmlChar *name,
                    646:                                         const xmlChar *content);
                    647: xmlNodePtr     xmlNewDocNodeEatName    (xmlDocPtr doc,
                    648:                                         xmlNsPtr ns,
                    649:                                         xmlChar *name,
                    650:                                         const xmlChar *content);
                    651: xmlNodePtr     xmlNewDocRawNode        (xmlDocPtr doc,
                    652:                                         xmlNsPtr ns,
                    653:                                         const xmlChar *name,
                    654:                                         const xmlChar *content);
                    655: xmlNodePtr     xmlNewNode              (xmlNsPtr ns,
                    656:                                         const xmlChar *name);
                    657: xmlNodePtr     xmlNewNodeEatName       (xmlNsPtr ns,
                    658:                                         xmlChar *name);
                    659: xmlNodePtr     xmlNewChild             (xmlNodePtr parent,
                    660:                                         xmlNsPtr ns,
                    661:                                         const xmlChar *name,
                    662:                                         const xmlChar *content);
                    663: xmlNodePtr     xmlNewTextChild         (xmlNodePtr parent,
                    664:                                         xmlNsPtr ns,
                    665:                                         const xmlChar *name,
                    666:                                         const xmlChar *content);
                    667: xmlNodePtr     xmlNewDocText           (xmlDocPtr doc,
                    668:                                         const xmlChar *content);
                    669: xmlNodePtr     xmlNewText              (const xmlChar *content);
                    670: xmlNodePtr     xmlNewPI                (const xmlChar *name,
                    671:                                         const xmlChar *content);
                    672: xmlNodePtr     xmlNewDocTextLen        (xmlDocPtr doc,
                    673:                                         const xmlChar *content,
                    674:                                         int len);
                    675: xmlNodePtr     xmlNewTextLen           (const xmlChar *content,
                    676:                                         int len);
                    677: xmlNodePtr     xmlNewDocComment        (xmlDocPtr doc,
                    678:                                         const xmlChar *content);
                    679: xmlNodePtr     xmlNewComment           (const xmlChar *content);
                    680: xmlNodePtr     xmlNewCDataBlock        (xmlDocPtr doc,
                    681:                                         const xmlChar *content,
                    682:                                         int len);
                    683: xmlNodePtr     xmlNewCharRef           (xmlDocPtr doc,
                    684:                                         const xmlChar *name);
                    685: xmlNodePtr     xmlNewReference         (xmlDocPtr doc,
                    686:                                         const xmlChar *name);
                    687: xmlNodePtr     xmlCopyNode             (const xmlNodePtr node,
                    688:                                         int recursive);
                    689: xmlNodePtr     xmlDocCopyNode          (const xmlNodePtr node,
                    690:                                         xmlDocPtr doc,
                    691:                                         int recursive);
                    692: xmlNodePtr     xmlCopyNodeList         (const xmlNodePtr node);
                    693: xmlNodePtr     xmlNewDocFragment       (xmlDocPtr doc);
                    694: 
                    695: /*
                    696:  * Navigating.
                    697:  */
                    698: long           xmlGetLineNo            (xmlNodePtr node);
                    699: xmlChar *      xmlGetNodePath          (xmlNodePtr node);
                    700: xmlNodePtr     xmlDocGetRootElement    (xmlDocPtr doc);
                    701: xmlNodePtr     xmlGetLastChild         (xmlNodePtr parent);
                    702: int            xmlNodeIsText           (xmlNodePtr node);
                    703: int            xmlIsBlankNode          (xmlNodePtr node);
                    704: 
                    705: /*
                    706:  * Changing the structure.
                    707:  */
                    708: xmlNodePtr     xmlDocSetRootElement    (xmlDocPtr doc,
                    709:                                         xmlNodePtr root);
                    710: void           xmlNodeSetName          (xmlNodePtr cur,
                    711:                                         const xmlChar *name);
                    712: xmlNodePtr     xmlAddChild             (xmlNodePtr parent,
                    713:                                         xmlNodePtr cur);
                    714: xmlNodePtr     xmlAddChildList         (xmlNodePtr parent,
                    715:                                         xmlNodePtr cur);
                    716: xmlNodePtr     xmlReplaceNode          (xmlNodePtr old,
                    717:                                         xmlNodePtr cur);
                    718: xmlNodePtr     xmlAddSibling           (xmlNodePtr cur,
                    719:                                         xmlNodePtr elem);
                    720: xmlNodePtr     xmlAddPrevSibling       (xmlNodePtr cur,
                    721:                                         xmlNodePtr elem);
                    722: xmlNodePtr     xmlAddNextSibling       (xmlNodePtr cur,
                    723:                                         xmlNodePtr elem);
                    724: void           xmlUnlinkNode           (xmlNodePtr cur);
                    725: xmlNodePtr     xmlTextMerge            (xmlNodePtr first,
                    726:                                         xmlNodePtr second);
1.2     ! paf       727: int            xmlTextConcat           (xmlNodePtr node,
1.1       paf       728:                                         const xmlChar *content,
                    729:                                         int len);
                    730: void           xmlFreeNodeList         (xmlNodePtr cur);
                    731: void           xmlFreeNode             (xmlNodePtr cur);
                    732: void           xmlSetTreeDoc           (xmlNodePtr tree,
                    733:                                         xmlDocPtr doc);
                    734: void           xmlSetListDoc           (xmlNodePtr list,
                    735:                                         xmlDocPtr doc);
                    736: 
                    737: /*
                    738:  * Namespaces.
                    739:  */
                    740: xmlNsPtr       xmlSearchNs             (xmlDocPtr doc,
                    741:                                         xmlNodePtr node,
                    742:                                         const xmlChar *nameSpace);
                    743: xmlNsPtr       xmlSearchNsByHref       (xmlDocPtr doc,
                    744:                                         xmlNodePtr node,
                    745:                                         const xmlChar *href);
                    746: xmlNsPtr *     xmlGetNsList            (xmlDocPtr doc,
                    747:                                         xmlNodePtr node);
                    748: void           xmlSetNs                (xmlNodePtr node,
                    749:                                         xmlNsPtr ns);
                    750: xmlNsPtr       xmlCopyNamespace        (xmlNsPtr cur);
                    751: xmlNsPtr       xmlCopyNamespaceList    (xmlNsPtr cur);
                    752: 
                    753: /*
                    754:  * Changing the content.
                    755:  */
                    756: xmlAttrPtr     xmlSetProp              (xmlNodePtr node,
                    757:                                         const xmlChar *name,
                    758:                                         const xmlChar *value);
                    759: xmlChar *      xmlGetProp              (xmlNodePtr node,
                    760:                                         const xmlChar *name);
                    761: xmlChar *      xmlGetNoNsProp          (xmlNodePtr node,
                    762:                                         const xmlChar *name);
                    763: xmlAttrPtr     xmlHasProp              (xmlNodePtr node,
                    764:                                         const xmlChar *name);
                    765: xmlAttrPtr     xmlHasNsProp            (xmlNodePtr node,
                    766:                                         const xmlChar *name,
                    767:                                         const xmlChar *nameSpace);
                    768: xmlAttrPtr     xmlSetNsProp            (xmlNodePtr node,
                    769:                                         xmlNsPtr ns,
                    770:                                         const xmlChar *name,
                    771:                                         const xmlChar *value);
                    772: xmlChar *      xmlGetNsProp            (xmlNodePtr node,
                    773:                                         const xmlChar *name,
                    774:                                         const xmlChar *nameSpace);
                    775: xmlNodePtr     xmlStringGetNodeList    (xmlDocPtr doc,
                    776:                                         const xmlChar *value);
                    777: xmlNodePtr     xmlStringLenGetNodeList (xmlDocPtr doc,
                    778:                                         const xmlChar *value,
                    779:                                         int len);
                    780: xmlChar *      xmlNodeListGetString    (xmlDocPtr doc,
                    781:                                         xmlNodePtr list,
                    782:                                         int inLine);
                    783: xmlChar *      xmlNodeListGetRawString (xmlDocPtr doc,
                    784:                                         xmlNodePtr list,
                    785:                                         int inLine);
                    786: void           xmlNodeSetContent       (xmlNodePtr cur,
                    787:                                         const xmlChar *content);
                    788: void           xmlNodeSetContentLen    (xmlNodePtr cur,
                    789:                                         const xmlChar *content,
                    790:                                         int len);
                    791: void           xmlNodeAddContent       (xmlNodePtr cur,
                    792:                                         const xmlChar *content);
                    793: void           xmlNodeAddContentLen    (xmlNodePtr cur,
                    794:                                         const xmlChar *content,
                    795:                                         int len);
                    796: xmlChar *      xmlNodeGetContent       (xmlNodePtr cur);
                    797: xmlChar *      xmlNodeGetLang          (xmlNodePtr cur);
                    798: void           xmlNodeSetLang          (xmlNodePtr cur,
                    799:                                         const xmlChar *lang);
                    800: int            xmlNodeGetSpacePreserve (xmlNodePtr cur);
                    801: void           xmlNodeSetSpacePreserve (xmlNodePtr cur,
                    802:                                         int val);
                    803: xmlChar *      xmlNodeGetBase          (xmlDocPtr doc,
                    804:                                         xmlNodePtr cur);
                    805: void           xmlNodeSetBase          (xmlNodePtr cur,
                    806:                                         xmlChar *uri);
                    807: 
                    808: /*
                    809:  * Removing content.
                    810:  */
                    811: int            xmlRemoveProp           (xmlAttrPtr cur);
                    812: int            xmlUnsetProp            (xmlNodePtr node,
                    813:                                         const xmlChar *name);
                    814: int            xmlUnsetNsProp          (xmlNodePtr node,
                    815:                                         xmlNsPtr ns,
                    816:                                         const xmlChar *name);
                    817: 
                    818: /*
                    819:  * Internal, don't use.
                    820:  */
                    821: void           xmlBufferWriteCHAR      (xmlBufferPtr buf,
                    822:                                         const xmlChar *string);
                    823: void           xmlBufferWriteChar      (xmlBufferPtr buf,
                    824:                                         const char *string);
                    825: void           xmlBufferWriteQuotedString(xmlBufferPtr buf,
                    826:                                         const xmlChar *string);
                    827: 
                    828: /*
                    829:  * Namespace handling.
                    830:  */
                    831: int            xmlReconciliateNs       (xmlDocPtr doc,
                    832:                                         xmlNodePtr tree);
                    833: 
                    834: /*
                    835:  * Saving.
                    836:  */
                    837: void           xmlDocDumpFormatMemory  (xmlDocPtr cur,
                    838:                                         xmlChar **mem,
                    839:                                         int *size,
                    840:                                         int format);
                    841: void           xmlDocDumpMemory        (xmlDocPtr cur,
                    842:                                         xmlChar **mem,
                    843:                                         int *size);
                    844: void           xmlDocDumpMemoryEnc     (xmlDocPtr out_doc,
                    845:                                         xmlChar **doc_txt_ptr,
                    846:                                         int * doc_txt_len,
                    847:                                         const char *txt_encoding);
                    848: void           xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc,
                    849:                                         xmlChar **doc_txt_ptr,
                    850:                                         int * doc_txt_len,
                    851:                                         const char *txt_encoding,
                    852:                                         int format);
                    853: int            xmlDocFormatDump(FILE *f,
                    854:                                         xmlDocPtr cur,
                    855:                                         int format);
                    856: int            xmlDocDump              (FILE *f,
                    857:                                         xmlDocPtr cur);
                    858: void           xmlElemDump             (FILE *f,
                    859:                                         xmlDocPtr doc,
                    860:                                         xmlNodePtr cur);
                    861: int            xmlSaveFile             (const char *filename,
                    862:                                         xmlDocPtr cur);
                    863: int            xmlSaveFormatFile       (const char *filename,
                    864:                                         xmlDocPtr cur,
                    865:                                         int format);
                    866: int            xmlNodeDump             (xmlBufferPtr buf,
                    867:                                         xmlDocPtr doc,
                    868:                                         xmlNodePtr cur,
                    869:                                         int level,
                    870:                                         int format);
                    871: 
                    872: int            xmlSaveFileTo           (xmlOutputBufferPtr buf,
                    873:                                         xmlDocPtr cur,
                    874:                                         const char *encoding);
                    875: int             xmlSaveFormatFileTo     (xmlOutputBufferPtr buf,
                    876:                                         xmlDocPtr cur,
                    877:                                         const char *encoding,
                    878:                                         int format);
                    879: void           xmlNodeDumpOutput       (xmlOutputBufferPtr buf,
                    880:                                         xmlDocPtr doc,
                    881:                                         xmlNodePtr cur,
                    882:                                         int level,
                    883:                                         int format,
                    884:                                         const char *encoding);
                    885: 
                    886: int            xmlSaveFormatFileEnc    (const char *filename,
                    887:                                         xmlDocPtr cur,
                    888:                                         const char *encoding,
                    889:                                         int format);
                    890: 
                    891: int            xmlSaveFileEnc          (const char *filename,
                    892:                                         xmlDocPtr cur,
                    893:                                         const char *encoding);
                    894: 
                    895: /*
                    896:  * XHTML
                    897:  */
                    898: int            xmlIsXHTML              (const xmlChar *systemID,
                    899:                                         const xmlChar *publicID);
                    900: 
                    901: /*
                    902:  * Compression.
                    903:  */
                    904: int            xmlGetDocCompressMode   (xmlDocPtr doc);
                    905: void           xmlSetDocCompressMode   (xmlDocPtr doc,
                    906:                                         int mode);
                    907: int            xmlGetCompressMode      (void);
                    908: void           xmlSetCompressMode      (int mode);
                    909: 
                    910: #ifdef __cplusplus
                    911: }
                    912: #endif
                    913: #ifndef __XML_PARSER_H__
                    914: #include <libxml/xmlmemory.h>
                    915: #endif
                    916: 
                    917: #endif /* __XML_TREE_H__ */
                    918: 

E-mail: