| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 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 |  * | 
| Daniel Veillard | 39a1f9a | 1999-01-17 19:11:59 +0000 | [diff] [blame] | 7 |  * Daniel.Veillard@w3.org | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 8 |  */ | 
 | 9 |  | 
 | 10 | #ifndef __XML_TREE_H__ | 
 | 11 | #define __XML_TREE_H__ | 
 | 12 |  | 
 | 13 |  | 
 | 14 | #ifdef __cplusplus | 
 | 15 | extern "C" { | 
 | 16 | #endif | 
 | 17 |  | 
| Daniel Veillard | 39a1f9a | 1999-01-17 19:11:59 +0000 | [diff] [blame] | 18 | #include <stdio.h> | 
 | 19 |  | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 20 | /* | 
| Daniel Veillard | ccb0963 | 1998-10-27 06:21:04 +0000 | [diff] [blame] | 21 |  * The different element types carried by an XML tree | 
 | 22 |  * | 
 | 23 |  * NOTE: This is synchronized with DOM Level1 values | 
 | 24 |  *       See http://www.w3.org/TR/REC-DOM-Level-1/ | 
 | 25 |  */ | 
 | 26 | typedef enum { | 
 | 27 |     XML_ELEMENT_NODE=		1, | 
 | 28 |     XML_ATTRIBUTE_NODE=		2, | 
 | 29 |     XML_TEXT_NODE=		3, | 
 | 30 |     XML_CDATA_SECTION_NODE=	4, | 
 | 31 |     XML_ENTITY_REF_NODE=	5, | 
 | 32 |     XML_ENTITY_NODE=		6, | 
 | 33 |     XML_PI_NODE=		7, | 
 | 34 |     XML_COMMENT_NODE=		8, | 
 | 35 |     XML_DOCUMENT_NODE=		9, | 
 | 36 |     XML_DOCUMENT_TYPE_NODE=	10, | 
 | 37 |     XML_DOCUMENT_FRAG_NODE=	11, | 
 | 38 |     XML_NOTATION_NODE=		12 | 
 | 39 | } xmlElementType; | 
 | 40 |  | 
 | 41 | /* | 
| Daniel Veillard | 0ba4d53 | 1998-11-01 19:34:31 +0000 | [diff] [blame] | 42 |  * Size of an internal character representation. | 
 | 43 |  * | 
 | 44 |  * Currently we use 8bit chars internal representation for memory efficiency, | 
 | 45 |  * but the parser is not tied to that, just define UNICODE to switch to | 
 | 46 |  * a 16 bits internal representation. Note that with 8 bits wide | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 47 |  * xmlChars one can still use UTF-8 to handle correctly non ISO-Latin | 
| Daniel Veillard | 0ba4d53 | 1998-11-01 19:34:31 +0000 | [diff] [blame] | 48 |  * input. | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 49 |  */ | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 50 |  | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 51 | #ifdef UNICODE | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 52 | typedef unsigned short xmlChar; | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 53 | #else | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 54 | typedef unsigned char xmlChar; | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 55 | #endif | 
 | 56 |  | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 57 | #ifndef WIN32 | 
 | 58 | #ifndef CHAR | 
 | 59 | #define CHAR xmlChar | 
 | 60 | #endif | 
 | 61 | #endif | 
 | 62 |  | 
 | 63 | #define BAD_CAST (xmlChar *) | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 64 |  | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 65 | /* | 
 | 66 |  * a DTD Notation definition | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 67 |  */ | 
 | 68 |  | 
| Daniel Veillard | 1e346af | 1999-02-22 10:33:01 +0000 | [diff] [blame] | 69 | typedef struct xmlNotation { | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 70 |     const xmlChar               *name;	/* Notation name */ | 
 | 71 |     const xmlChar               *PublicID;	/* Public identifier, if any */ | 
 | 72 |     const xmlChar               *SystemID;	/* System identifier, if any */ | 
| Daniel Veillard | 1e346af | 1999-02-22 10:33:01 +0000 | [diff] [blame] | 73 | } xmlNotation; | 
 | 74 | typedef xmlNotation *xmlNotationPtr; | 
 | 75 |  | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 76 | /* | 
 | 77 |  * a DTD Attribute definition | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 78 |  */ | 
 | 79 |  | 
| Daniel Veillard | 1e346af | 1999-02-22 10:33:01 +0000 | [diff] [blame] | 80 | typedef enum { | 
 | 81 |     XML_ATTRIBUTE_CDATA = 1, | 
 | 82 |     XML_ATTRIBUTE_ID, | 
 | 83 |     XML_ATTRIBUTE_IDREF	, | 
 | 84 |     XML_ATTRIBUTE_IDREFS, | 
 | 85 |     XML_ATTRIBUTE_ENTITY, | 
 | 86 |     XML_ATTRIBUTE_ENTITIES, | 
 | 87 |     XML_ATTRIBUTE_NMTOKEN, | 
 | 88 |     XML_ATTRIBUTE_NMTOKENS, | 
 | 89 |     XML_ATTRIBUTE_ENUMERATION, | 
 | 90 |     XML_ATTRIBUTE_NOTATION | 
 | 91 | } xmlAttributeType; | 
| Daniel Veillard | 39a1f9a | 1999-01-17 19:11:59 +0000 | [diff] [blame] | 92 |  | 
| Daniel Veillard | 1e346af | 1999-02-22 10:33:01 +0000 | [diff] [blame] | 93 | typedef enum { | 
 | 94 |     XML_ATTRIBUTE_NONE = 1, | 
 | 95 |     XML_ATTRIBUTE_REQUIRED, | 
 | 96 |     XML_ATTRIBUTE_IMPLIED, | 
 | 97 |     XML_ATTRIBUTE_FIXED | 
 | 98 | } xmlAttributeDefault; | 
 | 99 |  | 
 | 100 | typedef struct xmlEnumeration { | 
 | 101 |     struct xmlEnumeration    *next;	/* next one */ | 
| Daniel Veillard | 6077d03 | 1999-10-09 09:11:45 +0000 | [diff] [blame] | 102 |     const xmlChar            *name;	/* Enumeration name */ | 
| Daniel Veillard | 1e346af | 1999-02-22 10:33:01 +0000 | [diff] [blame] | 103 | } xmlEnumeration; | 
 | 104 | typedef xmlEnumeration *xmlEnumerationPtr; | 
 | 105 |  | 
 | 106 | typedef struct xmlAttribute { | 
| Daniel Veillard | 6077d03 | 1999-10-09 09:11:45 +0000 | [diff] [blame] | 107 |     const xmlChar         *elem;	/* Element holding the attribute */ | 
 | 108 |     const xmlChar         *name;	/* Attribute name */ | 
| Daniel Veillard | b05deb7 | 1999-08-10 19:04:08 +0000 | [diff] [blame] | 109 |     struct xmlAttribute   *next;        /* list of attributes of an element */ | 
| Daniel Veillard | 1e346af | 1999-02-22 10:33:01 +0000 | [diff] [blame] | 110 |     xmlAttributeType       type;	/* The type */ | 
 | 111 |     xmlAttributeDefault    def;		/* the default */ | 
| Daniel Veillard | 6077d03 | 1999-10-09 09:11:45 +0000 | [diff] [blame] | 112 |     const xmlChar         *defaultValue;/* or the default value */ | 
| Daniel Veillard | 1e346af | 1999-02-22 10:33:01 +0000 | [diff] [blame] | 113 |     xmlEnumerationPtr      tree;        /* or the enumeration tree if any */ | 
 | 114 | } xmlAttribute; | 
 | 115 | typedef xmlAttribute *xmlAttributePtr; | 
| Daniel Veillard | 39a1f9a | 1999-01-17 19:11:59 +0000 | [diff] [blame] | 116 |  | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 117 | /* | 
 | 118 |  * a DTD Element definition. | 
 | 119 |  */ | 
| Daniel Veillard | 1899e85 | 1999-02-01 12:18:54 +0000 | [diff] [blame] | 120 | typedef enum { | 
| Daniel Veillard | 1e346af | 1999-02-22 10:33:01 +0000 | [diff] [blame] | 121 |     XML_ELEMENT_CONTENT_PCDATA = 1, | 
| Daniel Veillard | 1899e85 | 1999-02-01 12:18:54 +0000 | [diff] [blame] | 122 |     XML_ELEMENT_CONTENT_ELEMENT, | 
 | 123 |     XML_ELEMENT_CONTENT_SEQ, | 
 | 124 |     XML_ELEMENT_CONTENT_OR | 
 | 125 | } xmlElementContentType; | 
| Daniel Veillard | 39a1f9a | 1999-01-17 19:11:59 +0000 | [diff] [blame] | 126 |  | 
| Daniel Veillard | 1899e85 | 1999-02-01 12:18:54 +0000 | [diff] [blame] | 127 | typedef enum { | 
| Daniel Veillard | 1e346af | 1999-02-22 10:33:01 +0000 | [diff] [blame] | 128 |     XML_ELEMENT_CONTENT_ONCE = 1, | 
| Daniel Veillard | 1899e85 | 1999-02-01 12:18:54 +0000 | [diff] [blame] | 129 |     XML_ELEMENT_CONTENT_OPT, | 
 | 130 |     XML_ELEMENT_CONTENT_MULT, | 
 | 131 |     XML_ELEMENT_CONTENT_PLUS | 
 | 132 | } xmlElementContentOccur; | 
| Daniel Veillard | 39a1f9a | 1999-01-17 19:11:59 +0000 | [diff] [blame] | 133 |  | 
 | 134 | typedef struct xmlElementContent { | 
| Daniel Veillard | 1899e85 | 1999-02-01 12:18:54 +0000 | [diff] [blame] | 135 |     xmlElementContentType     type;	/* PCDATA, ELEMENT, SEQ or OR */ | 
 | 136 |     xmlElementContentOccur    ocur;	/* ONCE, OPT, MULT or PLUS */ | 
| Daniel Veillard | 6077d03 | 1999-10-09 09:11:45 +0000 | [diff] [blame] | 137 |     const xmlChar            *name;	/* Element name */ | 
| Daniel Veillard | 39a1f9a | 1999-01-17 19:11:59 +0000 | [diff] [blame] | 138 |     struct xmlElementContent *c1;	/* first child */ | 
 | 139 |     struct xmlElementContent *c2;	/* second child */ | 
| Daniel Veillard | 1e346af | 1999-02-22 10:33:01 +0000 | [diff] [blame] | 140 | } xmlElementContent; | 
 | 141 | typedef xmlElementContent *xmlElementContentPtr; | 
| Daniel Veillard | 39a1f9a | 1999-01-17 19:11:59 +0000 | [diff] [blame] | 142 |  | 
| Daniel Veillard | 1899e85 | 1999-02-01 12:18:54 +0000 | [diff] [blame] | 143 | typedef enum { | 
| Daniel Veillard | 1e346af | 1999-02-22 10:33:01 +0000 | [diff] [blame] | 144 |     XML_ELEMENT_TYPE_EMPTY = 1, | 
| Daniel Veillard | 1899e85 | 1999-02-01 12:18:54 +0000 | [diff] [blame] | 145 |     XML_ELEMENT_TYPE_ANY, | 
 | 146 |     XML_ELEMENT_TYPE_MIXED, | 
 | 147 |     XML_ELEMENT_TYPE_ELEMENT | 
 | 148 | } xmlElementTypeVal; | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 149 |  | 
 | 150 | typedef struct xmlElement { | 
| Daniel Veillard | 6077d03 | 1999-10-09 09:11:45 +0000 | [diff] [blame] | 151 |     const xmlChar          *name;	/* Element name */ | 
| Daniel Veillard | b05deb7 | 1999-08-10 19:04:08 +0000 | [diff] [blame] | 152 |     xmlElementTypeVal       type;	/* The type */ | 
| Daniel Veillard | 39a1f9a | 1999-01-17 19:11:59 +0000 | [diff] [blame] | 153 |     xmlElementContentPtr content;	/* the allowed element content */ | 
| Daniel Veillard | b05deb7 | 1999-08-10 19:04:08 +0000 | [diff] [blame] | 154 |     xmlAttributePtr   attributes;	/* List of the declared attributes */ | 
| Daniel Veillard | 1e346af | 1999-02-22 10:33:01 +0000 | [diff] [blame] | 155 | } xmlElement; | 
 | 156 | typedef xmlElement *xmlElementPtr; | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 157 |  | 
 | 158 | /* | 
 | 159 |  * An XML namespace. | 
 | 160 |  * Note that prefix == NULL is valid, it defines the default namespace | 
 | 161 |  * within the subtree (until overriden). | 
 | 162 |  */ | 
 | 163 |  | 
| Daniel Veillard | 1899e85 | 1999-02-01 12:18:54 +0000 | [diff] [blame] | 164 | typedef enum { | 
| Daniel Veillard | 1e346af | 1999-02-22 10:33:01 +0000 | [diff] [blame] | 165 |     XML_GLOBAL_NAMESPACE = 1,	/* old style global namespace */ | 
| Daniel Veillard | 1899e85 | 1999-02-01 12:18:54 +0000 | [diff] [blame] | 166 |     XML_LOCAL_NAMESPACE		/* new style local scoping */ | 
 | 167 | } xmlNsType; | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 168 |  | 
 | 169 | typedef struct xmlNs { | 
 | 170 |     struct xmlNs  *next;	/* next Ns link for this node  */ | 
| Daniel Veillard | 1899e85 | 1999-02-01 12:18:54 +0000 | [diff] [blame] | 171 |     xmlNsType      type;	/* global or local */ | 
| Daniel Veillard | 6077d03 | 1999-10-09 09:11:45 +0000 | [diff] [blame] | 172 |     const xmlChar *href;	/* URL for the namespace */ | 
 | 173 |     const xmlChar *prefix;	/* prefix for the namespace */ | 
| Daniel Veillard | 1e346af | 1999-02-22 10:33:01 +0000 | [diff] [blame] | 174 | } xmlNs; | 
 | 175 | typedef xmlNs *xmlNsPtr; | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 176 |  | 
 | 177 | /* | 
 | 178 |  * An XML DtD, as defined by <!DOCTYPE. | 
 | 179 |  */ | 
 | 180 | typedef struct xmlDtd { | 
| Daniel Veillard | 6077d03 | 1999-10-09 09:11:45 +0000 | [diff] [blame] | 181 |     const xmlChar *name;	/* Name of the DTD */ | 
 | 182 |     const xmlChar *ExternalID;	/* External identifier for PUBLIC DTD */ | 
 | 183 |     const xmlChar *SystemID;	/* URI for a SYSTEM or PUBLIC DTD */ | 
| Daniel Veillard | 1e346af | 1999-02-22 10:33:01 +0000 | [diff] [blame] | 184 |     void          *notations;   /* Hash table for notations if any */ | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 185 |     void          *elements;    /* Hash table for elements if any */ | 
| Daniel Veillard | 1e346af | 1999-02-22 10:33:01 +0000 | [diff] [blame] | 186 |     void          *attributes;  /* Hash table for attributes if any */ | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 187 |     void          *entities;    /* Hash table for entities if any */ | 
 | 188 |     /* struct xmlDtd *next;	 * next  link for this document  */ | 
| Daniel Veillard | 1e346af | 1999-02-22 10:33:01 +0000 | [diff] [blame] | 189 | } xmlDtd; | 
 | 190 | typedef xmlDtd *xmlDtdPtr; | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 191 |  | 
 | 192 | /* | 
 | 193 |  * A attribute of an XML node. | 
 | 194 |  */ | 
 | 195 | typedef struct xmlAttr { | 
| Daniel Veillard | 27fb075 | 1998-10-17 06:47:46 +0000 | [diff] [blame] | 196 | #ifndef XML_WITHOUT_CORBA | 
 | 197 |     void           *_private;	/* for Corba, must be first ! */ | 
 | 198 |     void           *vepv;	/* for Corba, must be next ! */ | 
 | 199 | #endif | 
| Daniel Veillard | ccb0963 | 1998-10-27 06:21:04 +0000 | [diff] [blame] | 200 |     xmlElementType  type;       /* XML_ATTRIBUTE_NODE, must be third ! */ | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 201 |     struct xmlNode *node;	/* attr->node link */ | 
| Daniel Veillard | b05deb7 | 1999-08-10 19:04:08 +0000 | [diff] [blame] | 202 |     struct xmlAttr *next;	/* attribute list link */ | 
| Daniel Veillard | 6077d03 | 1999-10-09 09:11:45 +0000 | [diff] [blame] | 203 |     const xmlChar  *name;       /* the name of the property */ | 
| Daniel Veillard | ccb0963 | 1998-10-27 06:21:04 +0000 | [diff] [blame] | 204 |     struct xmlNode *val;        /* the value of the property */ | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 205 |     xmlNs          *ns;         /* pointer to the associated namespace */ | 
| Daniel Veillard | 1e346af | 1999-02-22 10:33:01 +0000 | [diff] [blame] | 206 | } xmlAttr; | 
 | 207 | typedef xmlAttr *xmlAttrPtr; | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 208 |  | 
 | 209 | /* | 
| Daniel Veillard | 991e63d | 1999-08-15 23:32:28 +0000 | [diff] [blame] | 210 |  * An XML ID instance. | 
 | 211 |  */ | 
 | 212 |  | 
 | 213 | typedef struct xmlID { | 
 | 214 |     struct xmlID     *next;	/* next ID */ | 
| Daniel Veillard | 6077d03 | 1999-10-09 09:11:45 +0000 | [diff] [blame] | 215 |     const xmlChar    *value;	/* The ID name */ | 
| Daniel Veillard | 991e63d | 1999-08-15 23:32:28 +0000 | [diff] [blame] | 216 |     xmlAttrPtr        attr;	/* The attribut holding it */ | 
 | 217 | } xmlID; | 
 | 218 | typedef xmlID *xmlIDPtr; | 
 | 219 |  | 
 | 220 | /* | 
| Daniel Veillard | c08a2c6 | 1999-09-08 21:35:25 +0000 | [diff] [blame] | 221 |  * An XML IDREF instance. | 
 | 222 |  */ | 
 | 223 |  | 
 | 224 | typedef struct xmlRef { | 
 | 225 |     struct xmlRef     *next;	/* next Ref */ | 
| Daniel Veillard | 6077d03 | 1999-10-09 09:11:45 +0000 | [diff] [blame] | 226 |     const xmlChar     *value;	/* The Ref name */ | 
| Daniel Veillard | c08a2c6 | 1999-09-08 21:35:25 +0000 | [diff] [blame] | 227 |     xmlAttrPtr        attr;	/* The attribut holding it */ | 
 | 228 | } xmlRef; | 
 | 229 | typedef xmlRef *xmlRefPtr; | 
 | 230 |  | 
 | 231 | /* | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 232 |  * A node in an XML tree. | 
 | 233 |  */ | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 234 | typedef struct xmlNode { | 
| Daniel Veillard | 27fb075 | 1998-10-17 06:47:46 +0000 | [diff] [blame] | 235 | #ifndef XML_WITHOUT_CORBA | 
 | 236 |     void           *_private;	/* for Corba, must be first ! */ | 
 | 237 |     void           *vepv;	/* for Corba, must be next ! */ | 
 | 238 | #endif | 
| Daniel Veillard | ccb0963 | 1998-10-27 06:21:04 +0000 | [diff] [blame] | 239 |     xmlElementType  type;	/* type number in the DTD, must be third ! */ | 
| Daniel Veillard | 0bef131 | 1998-10-14 02:36:47 +0000 | [diff] [blame] | 240 |     struct xmlDoc  *doc;	/* the containing document */ | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 241 |     struct xmlNode *parent;	/* child->parent link */ | 
 | 242 |     struct xmlNode *next;	/* next sibling link  */ | 
| Daniel Veillard | 0bef131 | 1998-10-14 02:36:47 +0000 | [diff] [blame] | 243 |     struct xmlNode *prev;	/* previous sibling link  */ | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 244 |     struct xmlNode *childs;	/* parent->childs link */ | 
| Daniel Veillard | 39a1f9a | 1999-01-17 19:11:59 +0000 | [diff] [blame] | 245 |     struct xmlNode *last;	/* last child link */ | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 246 |     struct xmlAttr *properties;	/* properties list */ | 
| Daniel Veillard | 6077d03 | 1999-10-09 09:11:45 +0000 | [diff] [blame] | 247 |     const xmlChar  *name;       /* the name of the node, or the entity */ | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 248 |     xmlNs          *ns;         /* pointer to the associated namespace */ | 
 | 249 |     xmlNs          *nsDef;      /* namespace definitions on this node */ | 
| Daniel Veillard | 6077d03 | 1999-10-09 09:11:45 +0000 | [diff] [blame] | 250 |     xmlChar        *content;    /* the content */ | 
| Daniel Veillard | 1e346af | 1999-02-22 10:33:01 +0000 | [diff] [blame] | 251 | } _xmlNode; | 
 | 252 | typedef _xmlNode xmlNode; | 
 | 253 | typedef _xmlNode *xmlNodePtr; | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 254 |  | 
 | 255 | /* | 
 | 256 |  * An XML document. | 
 | 257 |  */ | 
 | 258 | typedef struct xmlDoc { | 
| Daniel Veillard | 27fb075 | 1998-10-17 06:47:46 +0000 | [diff] [blame] | 259 | #ifndef XML_WITHOUT_CORBA | 
 | 260 |     void           *_private;	/* for Corba, must be first ! */ | 
 | 261 |     void           *vepv;	/* for Corba, must be next ! */ | 
 | 262 | #endif | 
| Daniel Veillard | ccb0963 | 1998-10-27 06:21:04 +0000 | [diff] [blame] | 263 |     xmlElementType  type;       /* XML_DOCUMENT_NODE, must be second ! */ | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 264 |     char           *name;	/* name/filename/URI of the document */ | 
| Daniel Veillard | 6077d03 | 1999-10-09 09:11:45 +0000 | [diff] [blame] | 265 |     const xmlChar  *version;	/* the XML version string */ | 
 | 266 |     const xmlChar  *encoding;   /* encoding, if any */ | 
| Daniel Veillard | 15a8df4 | 1998-09-24 19:15:06 +0000 | [diff] [blame] | 267 |     int             compression;/* level of zlib compression */ | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 268 |     int             standalone; /* standalone document (no external refs) */ | 
| Daniel Veillard | 39a1f9a | 1999-01-17 19:11:59 +0000 | [diff] [blame] | 269 |     struct xmlDtd  *intSubset;	/* the document internal subset */ | 
 | 270 |     struct xmlDtd  *extSubset;	/* the document external subset */ | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 271 |     struct xmlNs   *oldNs;	/* Global namespace, the old way */ | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 272 |     struct xmlNode *root;	/* the document tree */ | 
| Daniel Veillard | 991e63d | 1999-08-15 23:32:28 +0000 | [diff] [blame] | 273 |     void           *ids;        /* Hash table for ID attributes if any */ | 
| Daniel Veillard | c08a2c6 | 1999-09-08 21:35:25 +0000 | [diff] [blame] | 274 |     void           *refs;       /* Hash table for IDREFs attributes if any */ | 
| Daniel Veillard | 1e346af | 1999-02-22 10:33:01 +0000 | [diff] [blame] | 275 | } _xmlDoc; | 
 | 276 | typedef _xmlDoc xmlDoc; | 
 | 277 | typedef xmlDoc *xmlDocPtr; | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 278 |  | 
 | 279 | /* | 
| Daniel Veillard | 5099ae8 | 1999-04-21 20:12:07 +0000 | [diff] [blame] | 280 |  * A buffer structure | 
 | 281 |  */ | 
 | 282 |  | 
 | 283 | typedef struct xmlBuffer { | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 284 |     xmlChar *content;		/* The buffer content UTF8 */ | 
| Daniel Veillard | 5099ae8 | 1999-04-21 20:12:07 +0000 | [diff] [blame] | 285 |     unsigned int use;		/* The buffer size used */ | 
 | 286 |     unsigned int size;		/* The buffer size */ | 
 | 287 | } _xmlBuffer; | 
 | 288 | typedef _xmlBuffer xmlBuffer; | 
 | 289 | typedef xmlBuffer *xmlBufferPtr; | 
 | 290 |  | 
 | 291 | /* | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 292 |  * Variables. | 
 | 293 |  */ | 
 | 294 | extern xmlNsPtr baseDTD; | 
 | 295 | extern int oldXMLWDcompatibility;/* maintain compatibility with old WD */ | 
 | 296 | extern int xmlIndentTreeOutput;  /* try to indent the tree dumps */ | 
 | 297 |  | 
 | 298 | /* | 
| Daniel Veillard | 5099ae8 | 1999-04-21 20:12:07 +0000 | [diff] [blame] | 299 |  * Handling Buffers. | 
 | 300 |  */ | 
 | 301 |  | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 302 | xmlBufferPtr	xmlBufferCreate		(void); | 
 | 303 | void		xmlBufferFree		(xmlBufferPtr buf); | 
 | 304 | int		xmlBufferDump		(FILE *file, | 
 | 305 | 					 xmlBufferPtr buf); | 
 | 306 | void		xmlBufferAdd		(xmlBufferPtr buf, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 307 | 					 const xmlChar *str, | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 308 | 					 int len); | 
 | 309 | void		xmlBufferCat		(xmlBufferPtr buf, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 310 | 					 const xmlChar *str); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 311 | void		xmlBufferCCat		(xmlBufferPtr buf, | 
 | 312 | 					 const char *str); | 
 | 313 | int		xmlBufferShrink		(xmlBufferPtr buf, | 
 | 314 | 					 int len); | 
 | 315 | void		xmlBufferEmpty		(xmlBufferPtr buf); | 
| Daniel Veillard | 5099ae8 | 1999-04-21 20:12:07 +0000 | [diff] [blame] | 316 |  | 
 | 317 | /* | 
| Daniel Veillard | 1625364 | 1998-10-28 22:58:05 +0000 | [diff] [blame] | 318 |  * Creating/freeing new structures | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 319 |  */ | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 320 | xmlDtdPtr	xmlCreateIntSubset	(xmlDocPtr doc, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 321 | 					 const xmlChar *name, | 
 | 322 | 					 const xmlChar *ExternalID, | 
 | 323 | 					 const xmlChar *SystemID); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 324 | xmlDtdPtr	xmlNewDtd		(xmlDocPtr doc, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 325 | 					 const xmlChar *name, | 
 | 326 | 					 const xmlChar *ExternalID, | 
 | 327 | 					 const xmlChar *SystemID); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 328 | void		xmlFreeDtd		(xmlDtdPtr cur); | 
 | 329 | xmlNsPtr	xmlNewGlobalNs		(xmlDocPtr doc, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 330 | 					 const xmlChar *href, | 
 | 331 | 					 const xmlChar *prefix); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 332 | xmlNsPtr	xmlNewNs		(xmlNodePtr node, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 333 | 					 const xmlChar *href, | 
 | 334 | 					 const xmlChar *prefix); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 335 | void		xmlFreeNs		(xmlNsPtr cur); | 
| Daniel Veillard | 6077d03 | 1999-10-09 09:11:45 +0000 | [diff] [blame] | 336 | xmlDocPtr 	xmlNewDoc		(const xmlChar *version); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 337 | void		xmlFreeDoc		(xmlDocPtr cur); | 
 | 338 | xmlAttrPtr	xmlNewDocProp		(xmlDocPtr doc, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 339 | 					 const xmlChar *name, | 
 | 340 | 					 const xmlChar *value); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 341 | xmlAttrPtr	xmlNewProp		(xmlNodePtr node, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 342 | 					 const xmlChar *name, | 
 | 343 | 					 const xmlChar *value); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 344 | xmlAttrPtr	xmlNewNsProp		(xmlNodePtr node, | 
 | 345 | 					 xmlNsPtr ns, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 346 | 					 const xmlChar *name, | 
 | 347 | 					 const xmlChar *value); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 348 | void		xmlFreePropList		(xmlAttrPtr cur); | 
 | 349 | void		xmlFreeProp		(xmlAttrPtr cur); | 
 | 350 | xmlAttrPtr	xmlCopyProp		(xmlNodePtr target, | 
 | 351 | 					 xmlAttrPtr cur); | 
 | 352 | xmlAttrPtr	xmlCopyPropList		(xmlNodePtr target, | 
 | 353 | 					 xmlAttrPtr cur); | 
 | 354 | xmlDtdPtr	xmlCopyDtd		(xmlDtdPtr dtd); | 
 | 355 | xmlDocPtr	xmlCopyDoc		(xmlDocPtr doc, | 
 | 356 | 					 int recursive); | 
| Daniel Veillard | 1625364 | 1998-10-28 22:58:05 +0000 | [diff] [blame] | 357 |  | 
 | 358 | /* | 
 | 359 |  * Creating new nodes | 
 | 360 |  */ | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 361 | xmlNodePtr	xmlNewDocNode		(xmlDocPtr doc, | 
 | 362 | 					 xmlNsPtr ns, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 363 | 					 const xmlChar *name, | 
 | 364 | 					 const xmlChar *content); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 365 | xmlNodePtr	xmlNewNode		(xmlNsPtr ns, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 366 | 					 const xmlChar *name); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 367 | xmlNodePtr	xmlNewChild		(xmlNodePtr parent, | 
 | 368 | 					 xmlNsPtr ns, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 369 | 					 const xmlChar *name, | 
 | 370 | 					 const xmlChar *content); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 371 | xmlNodePtr	xmlNewDocText		(xmlDocPtr doc, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 372 | 					 const xmlChar *content); | 
 | 373 | xmlNodePtr	xmlNewText		(const xmlChar *content); | 
 | 374 | xmlNodePtr	xmlNewPI		(const xmlChar *name, | 
 | 375 | 					 const xmlChar *content); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 376 | xmlNodePtr	xmlNewDocTextLen	(xmlDocPtr doc, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 377 | 					 const xmlChar *content, | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 378 | 					 int len); | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 379 | xmlNodePtr	xmlNewTextLen		(const xmlChar *content, | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 380 | 					 int len); | 
 | 381 | xmlNodePtr	xmlNewDocComment	(xmlDocPtr doc, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 382 | 					 const xmlChar *content); | 
 | 383 | xmlNodePtr	xmlNewComment		(const xmlChar *content); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 384 | xmlNodePtr	xmlNewCDataBlock	(xmlDocPtr doc, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 385 | 					 const xmlChar *content, | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 386 | 					 int len); | 
 | 387 | xmlNodePtr	xmlNewReference		(xmlDocPtr doc, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 388 | 					 const xmlChar *name); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 389 | xmlNodePtr	xmlCopyNode		(xmlNodePtr node, | 
 | 390 | 					 int recursive); | 
 | 391 | xmlNodePtr	xmlCopyNodeList		(xmlNodePtr node); | 
| Daniel Veillard | 1625364 | 1998-10-28 22:58:05 +0000 | [diff] [blame] | 392 |  | 
 | 393 | /* | 
 | 394 |  * Navigating | 
 | 395 |  */ | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 396 | xmlNodePtr	xmlGetLastChild		(xmlNodePtr parent); | 
 | 397 | int		xmlNodeIsText		(xmlNodePtr node); | 
| Daniel Veillard | 1625364 | 1998-10-28 22:58:05 +0000 | [diff] [blame] | 398 |  | 
 | 399 | /* | 
 | 400 |  * Changing the structure | 
 | 401 |  */ | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 402 | xmlNodePtr	xmlAddChild		(xmlNodePtr parent, | 
 | 403 | 					 xmlNodePtr cur); | 
 | 404 | xmlNodePtr	xmlAddSibling		(xmlNodePtr cur, | 
 | 405 | 					 xmlNodePtr elem); | 
 | 406 | void		xmlUnlinkNode		(xmlNodePtr cur); | 
 | 407 | xmlNodePtr	xmlTextMerge		(xmlNodePtr first, | 
 | 408 | 					 xmlNodePtr second); | 
 | 409 | void		xmlTextConcat		(xmlNodePtr node, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 410 | 					 const xmlChar *content, | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 411 | 					 int len); | 
 | 412 | void		xmlFreeNodeList		(xmlNodePtr cur); | 
 | 413 | void		xmlFreeNode		(xmlNodePtr cur); | 
| Daniel Veillard | 1625364 | 1998-10-28 22:58:05 +0000 | [diff] [blame] | 414 |  | 
 | 415 | /* | 
 | 416 |  * Namespaces | 
 | 417 |  */ | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 418 | xmlNsPtr	xmlSearchNs		(xmlDocPtr doc, | 
 | 419 | 					 xmlNodePtr node, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 420 | 					 const xmlChar *nameSpace); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 421 | xmlNsPtr	xmlSearchNsByHref	(xmlDocPtr doc, | 
 | 422 | 					 xmlNodePtr node, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 423 | 					 const xmlChar *href); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 424 | xmlNsPtr *	xmlGetNsList		(xmlDocPtr doc, | 
 | 425 | 					 xmlNodePtr node); | 
 | 426 | void		xmlSetNs		(xmlNodePtr node, | 
 | 427 | 					 xmlNsPtr ns); | 
 | 428 | xmlNsPtr	xmlCopyNamespace	(xmlNsPtr cur); | 
 | 429 | xmlNsPtr	xmlCopyNamespaceList	(xmlNsPtr cur); | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 430 |  | 
| Daniel Veillard | 1625364 | 1998-10-28 22:58:05 +0000 | [diff] [blame] | 431 | /* | 
 | 432 |  * Changing the content. | 
 | 433 |  */ | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 434 | xmlAttrPtr	xmlSetProp		(xmlNodePtr node, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 435 | 					 const xmlChar *name, | 
 | 436 | 					 const xmlChar *value); | 
| Daniel Veillard | 6077d03 | 1999-10-09 09:11:45 +0000 | [diff] [blame] | 437 | xmlChar *	xmlGetProp		(xmlNodePtr node, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 438 | 					 const xmlChar *name); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 439 | xmlNodePtr	xmlStringGetNodeList	(xmlDocPtr doc, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 440 | 					 const xmlChar *value); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 441 | xmlNodePtr	xmlStringLenGetNodeList	(xmlDocPtr doc, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 442 | 					 const xmlChar *value, | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 443 | 					 int len); | 
| Daniel Veillard | 6077d03 | 1999-10-09 09:11:45 +0000 | [diff] [blame] | 444 | xmlChar *	xmlNodeListGetString	(xmlDocPtr doc, | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 445 | 					 xmlNodePtr list, | 
 | 446 | 					 int inLine); | 
 | 447 | void		xmlNodeSetContent	(xmlNodePtr cur, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 448 | 					 const xmlChar *content); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 449 | void		xmlNodeSetContentLen	(xmlNodePtr cur, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 450 | 					 const xmlChar *content, | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 451 | 					 int len); | 
 | 452 | void		xmlNodeAddContent	(xmlNodePtr cur, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 453 | 					 const xmlChar *content); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 454 | void		xmlNodeAddContentLen	(xmlNodePtr cur, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 455 | 					 const xmlChar *content, | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 456 | 					 int len); | 
| Daniel Veillard | 6077d03 | 1999-10-09 09:11:45 +0000 | [diff] [blame] | 457 | xmlChar *	xmlNodeGetContent	(xmlNodePtr cur); | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 458 | const xmlChar *	xmlNodeGetLang		(xmlNodePtr cur); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 459 | void		xmlNodeSetLang		(xmlNodePtr cur, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 460 | 					 const xmlChar *lang); | 
| Daniel Veillard | 1625364 | 1998-10-28 22:58:05 +0000 | [diff] [blame] | 461 |  | 
 | 462 | /* | 
| Daniel Veillard | c08a2c6 | 1999-09-08 21:35:25 +0000 | [diff] [blame] | 463 |  * Removing content. | 
 | 464 |  */ | 
 | 465 | int		xmlRemoveProp		(xmlAttrPtr attr); /* TODO */ | 
 | 466 | int		xmlRemoveNode		(xmlNodePtr node); /* TODO */ | 
 | 467 |  | 
 | 468 | /* | 
| Daniel Veillard | 1625364 | 1998-10-28 22:58:05 +0000 | [diff] [blame] | 469 |  * Internal, don't use | 
 | 470 |  */ | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 471 | void		xmlBufferWriteCHAR	(xmlBufferPtr buf, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 472 | 					 const xmlChar *string); | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 473 | void		xmlBufferWriteChar	(xmlBufferPtr buf, | 
 | 474 | 					 const char *string); | 
 | 475 | void		xmlBufferWriteQuotedString(xmlBufferPtr buf, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 476 | 					 const xmlChar *string); | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 477 |  | 
| Daniel Veillard | 1625364 | 1998-10-28 22:58:05 +0000 | [diff] [blame] | 478 | /* | 
 | 479 |  * Saving | 
 | 480 |  */ | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 481 | void		xmlDocDumpMemory	(xmlDocPtr cur, | 
| Daniel Veillard | dd6b367 | 1999-09-23 22:19:22 +0000 | [diff] [blame] | 482 | 					 xmlChar**mem, | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 483 | 					 int *size); | 
 | 484 | void		xmlDocDump		(FILE *f, | 
 | 485 | 					 xmlDocPtr cur); | 
 | 486 | int		xmlSaveFile		(const char *filename, | 
 | 487 | 					 xmlDocPtr cur); | 
| Daniel Veillard | 151b1b0 | 1998-09-23 00:49:46 +0000 | [diff] [blame] | 488 |  | 
| Daniel Veillard | 1625364 | 1998-10-28 22:58:05 +0000 | [diff] [blame] | 489 | /* | 
 | 490 |  * Compression | 
 | 491 |  */ | 
| Daniel Veillard | b96e643 | 1999-08-29 21:02:19 +0000 | [diff] [blame] | 492 | int		xmlGetDocCompressMode	(xmlDocPtr doc); | 
 | 493 | void		xmlSetDocCompressMode	(xmlDocPtr doc, | 
 | 494 | 					 int mode); | 
 | 495 | int		xmlGetCompressMode	(void); | 
 | 496 | void		xmlSetCompressMode	(int mode); | 
| Daniel Veillard | 260a68f | 1998-08-13 03:39:55 +0000 | [diff] [blame] | 497 |  | 
 | 498 | #ifdef __cplusplus | 
 | 499 | } | 
 | 500 | #endif | 
 | 501 |  | 
 | 502 | #endif /* __XML_TREE_H__ */ | 
 | 503 |  |