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

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

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