blob: 6bc839dc37e8ead3a51855b39d026aeac509fdd9 [file] [log] [blame]
Owen Taylor3473f882001-02-23 17:55:21 +00001/*
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 Veillardc5d64342001-06-24 12:13:24 +00007 * daniel@veillard.com
Owen Taylor3473f882001-02-23 17:55:21 +00008 *
Owen Taylor3473f882001-02-23 17:55:21 +00009 */
10
11#ifndef __XML_TREE_H__
12#define __XML_TREE_H__
13
14#include <stdio.h>
15#include <libxml/xmlversion.h>
Igor Zlatkovic7ae91bc2002-11-08 17:18:52 +000016
Owen Taylor3473f882001-02-23 17:55:21 +000017#ifdef __cplusplus
18extern "C" {
19#endif
20
Daniel Veillard8bdb91d2001-10-31 17:52:43 +000021/*
22 * Some of the basic types pointer to structures:
23 */
24/* xmlIO.h */
25typedef struct _xmlParserInputBuffer xmlParserInputBuffer;
26typedef xmlParserInputBuffer *xmlParserInputBufferPtr;
27
CET 2001 Daniel Veillard5a37bde2001-11-01 14:31:22 +000028typedef struct _xmlOutputBuffer xmlOutputBuffer;
29typedef xmlOutputBuffer *xmlOutputBufferPtr;
30
Daniel Veillard8bdb91d2001-10-31 17:52:43 +000031/* parser.h */
32typedef struct _xmlParserInput xmlParserInput;
33typedef xmlParserInput *xmlParserInputPtr;
34
35typedef struct _xmlParserCtxt xmlParserCtxt;
36typedef xmlParserCtxt *xmlParserCtxtPtr;
37
Daniel Veillard6c4ffaf2002-02-11 08:54:05 +000038typedef struct _xmlSAXLocator xmlSAXLocator;
39typedef xmlSAXLocator *xmlSAXLocatorPtr;
40
41typedef struct _xmlSAXHandler xmlSAXHandler;
42typedef xmlSAXHandler *xmlSAXHandlerPtr;
43
44/* entities.h */
45typedef struct _xmlEntity xmlEntity;
46typedef xmlEntity *xmlEntityPtr;
47
Daniel Veillard9d06d302002-01-22 18:15:52 +000048/**
49 * BASE_BUFFER_SIZE:
50 *
Daniel Veillard61f26172002-03-12 18:46:39 +000051 * default buffer size 4000.
Daniel Veillard9d06d302002-01-22 18:15:52 +000052 */
Daniel Veillard6155d8a2003-08-19 15:01:28 +000053#define BASE_BUFFER_SIZE 4096
Daniel Veillardd0463562001-10-13 09:15:48 +000054
Daniel Veillard5e2dace2001-07-18 19:30:27 +000055/**
56 * XML_XML_NAMESPACE:
57 *
58 * This is the namespace for the special xml: prefix predefined in the
Daniel Veillard61f26172002-03-12 18:46:39 +000059 * XML Namespace specification.
Daniel Veillard5e2dace2001-07-18 19:30:27 +000060 */
Owen Taylor3473f882001-02-23 17:55:21 +000061#define XML_XML_NAMESPACE \
62 (const xmlChar *) "http://www.w3.org/XML/1998/namespace"
63
64/*
Daniel Veillard61f26172002-03-12 18:46:39 +000065 * The different element types carried by an XML tree.
Owen Taylor3473f882001-02-23 17:55:21 +000066 *
67 * NOTE: This is synchronized with DOM Level1 values
68 * See http://www.w3.org/TR/REC-DOM-Level-1/
69 *
70 * Actually this had diverged a bit, and now XML_DOCUMENT_TYPE_NODE should
71 * be deprecated to use an XML_DTD_NODE.
72 */
73typedef enum {
74 XML_ELEMENT_NODE= 1,
75 XML_ATTRIBUTE_NODE= 2,
76 XML_TEXT_NODE= 3,
77 XML_CDATA_SECTION_NODE= 4,
78 XML_ENTITY_REF_NODE= 5,
79 XML_ENTITY_NODE= 6,
80 XML_PI_NODE= 7,
81 XML_COMMENT_NODE= 8,
82 XML_DOCUMENT_NODE= 9,
83 XML_DOCUMENT_TYPE_NODE= 10,
84 XML_DOCUMENT_FRAG_NODE= 11,
85 XML_NOTATION_NODE= 12,
86 XML_HTML_DOCUMENT_NODE= 13,
87 XML_DTD_NODE= 14,
88 XML_ELEMENT_DECL= 15,
89 XML_ATTRIBUTE_DECL= 16,
90 XML_ENTITY_DECL= 17,
91 XML_NAMESPACE_DECL= 18,
92 XML_XINCLUDE_START= 19,
93 XML_XINCLUDE_END= 20
Daniel Veillardeae522a2001-04-23 13:41:34 +000094#ifdef LIBXML_DOCB_ENABLED
95 ,XML_DOCB_DOCUMENT_NODE= 21
Owen Taylor3473f882001-02-23 17:55:21 +000096#endif
97} xmlElementType;
98
Daniel Veillardbed7b052001-05-19 14:59:49 +000099/**
100 * xmlChar:
Owen Taylor3473f882001-02-23 17:55:21 +0000101 *
Daniel Veillardbed7b052001-05-19 14:59:49 +0000102 * This is a basic byte in an UTF-8 encoded string.
103 * It's unsigned allowing to pinpoint case where char * are assigned
104 * to xmlChar * (possibly making serialization back impossible).
Owen Taylor3473f882001-02-23 17:55:21 +0000105 */
106
107typedef unsigned char xmlChar;
108
Daniel Veillardbed7b052001-05-19 14:59:49 +0000109/**
110 * BAD_CAST:
111 *
112 * Macro to cast a string to an xmlChar * when one know its safe.
113 */
Owen Taylor3473f882001-02-23 17:55:21 +0000114#define BAD_CAST (xmlChar *)
115
Daniel Veillardbed7b052001-05-19 14:59:49 +0000116/**
117 * xmlNotation:
118 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000119 * A DTD Notation definition.
Owen Taylor3473f882001-02-23 17:55:21 +0000120 */
121
122typedef struct _xmlNotation xmlNotation;
123typedef xmlNotation *xmlNotationPtr;
124struct _xmlNotation {
Daniel Veillard9e7160d2001-03-18 23:17:47 +0000125 const xmlChar *name; /* Notation name */
Owen Taylor3473f882001-02-23 17:55:21 +0000126 const xmlChar *PublicID; /* Public identifier, if any */
127 const xmlChar *SystemID; /* System identifier, if any */
128};
129
Daniel Veillardbed7b052001-05-19 14:59:49 +0000130/**
131 * xmlAttributeType:
132 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000133 * A DTD Attribute type definition.
Owen Taylor3473f882001-02-23 17:55:21 +0000134 */
135
136typedef enum {
137 XML_ATTRIBUTE_CDATA = 1,
138 XML_ATTRIBUTE_ID,
139 XML_ATTRIBUTE_IDREF ,
140 XML_ATTRIBUTE_IDREFS,
141 XML_ATTRIBUTE_ENTITY,
142 XML_ATTRIBUTE_ENTITIES,
143 XML_ATTRIBUTE_NMTOKEN,
144 XML_ATTRIBUTE_NMTOKENS,
145 XML_ATTRIBUTE_ENUMERATION,
146 XML_ATTRIBUTE_NOTATION
147} xmlAttributeType;
148
Daniel Veillardbed7b052001-05-19 14:59:49 +0000149/**
150 * xmlAttributeDefault:
151 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000152 * A DTD Attribute default definition.
Daniel Veillardbed7b052001-05-19 14:59:49 +0000153 */
154
Owen Taylor3473f882001-02-23 17:55:21 +0000155typedef enum {
156 XML_ATTRIBUTE_NONE = 1,
157 XML_ATTRIBUTE_REQUIRED,
158 XML_ATTRIBUTE_IMPLIED,
159 XML_ATTRIBUTE_FIXED
160} xmlAttributeDefault;
161
Daniel Veillardbed7b052001-05-19 14:59:49 +0000162/**
163 * xmlEnumeration:
164 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000165 * List structure used when there is an enumeration in DTDs.
Daniel Veillardbed7b052001-05-19 14:59:49 +0000166 */
167
Owen Taylor3473f882001-02-23 17:55:21 +0000168typedef struct _xmlEnumeration xmlEnumeration;
169typedef xmlEnumeration *xmlEnumerationPtr;
170struct _xmlEnumeration {
171 struct _xmlEnumeration *next; /* next one */
172 const xmlChar *name; /* Enumeration name */
173};
174
Daniel Veillardbed7b052001-05-19 14:59:49 +0000175/**
176 * xmlAttribute:
177 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000178 * An Attribute declaration in a DTD.
Daniel Veillardbed7b052001-05-19 14:59:49 +0000179 */
180
Owen Taylor3473f882001-02-23 17:55:21 +0000181typedef struct _xmlAttribute xmlAttribute;
182typedef xmlAttribute *xmlAttributePtr;
183struct _xmlAttribute {
Daniel Veillard0ec98632001-11-14 15:04:32 +0000184 void *_private; /* application data */
Owen Taylor3473f882001-02-23 17:55:21 +0000185 xmlElementType type; /* XML_ATTRIBUTE_DECL, must be second ! */
186 const xmlChar *name; /* Attribute name */
187 struct _xmlNode *children; /* NULL */
188 struct _xmlNode *last; /* NULL */
189 struct _xmlDtd *parent; /* -> DTD */
190 struct _xmlNode *next; /* next sibling link */
191 struct _xmlNode *prev; /* previous sibling link */
192 struct _xmlDoc *doc; /* the containing document */
193
194 struct _xmlAttribute *nexth; /* next in hash table */
195 xmlAttributeType atype; /* The attribute type */
196 xmlAttributeDefault def; /* the default */
197 const xmlChar *defaultValue; /* or the default value */
198 xmlEnumerationPtr tree; /* or the enumeration tree if any */
199 const xmlChar *prefix; /* the namespace prefix if any */
200 const xmlChar *elem; /* Element holding the attribute */
201};
202
Daniel Veillardbed7b052001-05-19 14:59:49 +0000203/**
204 * xmlElementContentType:
205 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000206 * Possible definitions of element content types.
Owen Taylor3473f882001-02-23 17:55:21 +0000207 */
208typedef enum {
209 XML_ELEMENT_CONTENT_PCDATA = 1,
210 XML_ELEMENT_CONTENT_ELEMENT,
211 XML_ELEMENT_CONTENT_SEQ,
212 XML_ELEMENT_CONTENT_OR
213} xmlElementContentType;
214
Daniel Veillardbed7b052001-05-19 14:59:49 +0000215/**
216 * xmlElementContentOccur:
217 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000218 * Possible definitions of element content occurrences.
Daniel Veillardbed7b052001-05-19 14:59:49 +0000219 */
Owen Taylor3473f882001-02-23 17:55:21 +0000220typedef enum {
221 XML_ELEMENT_CONTENT_ONCE = 1,
222 XML_ELEMENT_CONTENT_OPT,
223 XML_ELEMENT_CONTENT_MULT,
224 XML_ELEMENT_CONTENT_PLUS
225} xmlElementContentOccur;
226
Daniel Veillardbed7b052001-05-19 14:59:49 +0000227/**
228 * xmlElementContent:
229 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000230 * An XML Element content as stored after parsing an element definition
Daniel Veillardbed7b052001-05-19 14:59:49 +0000231 * in a DTD.
232 */
233
Owen Taylor3473f882001-02-23 17:55:21 +0000234typedef struct _xmlElementContent xmlElementContent;
235typedef xmlElementContent *xmlElementContentPtr;
236struct _xmlElementContent {
237 xmlElementContentType type; /* PCDATA, ELEMENT, SEQ or OR */
238 xmlElementContentOccur ocur; /* ONCE, OPT, MULT or PLUS */
Daniel Veillardbe480fb2001-11-08 23:36:42 +0000239 const xmlChar *name; /* Element name */
Owen Taylor3473f882001-02-23 17:55:21 +0000240 struct _xmlElementContent *c1; /* first child */
241 struct _xmlElementContent *c2; /* second child */
Daniel Veillarddab4cb32001-04-20 13:03:48 +0000242 struct _xmlElementContent *parent; /* parent */
Daniel Veillarda9b66d02002-12-11 14:23:49 +0000243 const xmlChar *prefix; /* Namespace prefix */
Owen Taylor3473f882001-02-23 17:55:21 +0000244};
245
Daniel Veillardbed7b052001-05-19 14:59:49 +0000246/**
247 * xmlElementTypeVal:
248 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000249 * The different possibilities for an element content type.
Daniel Veillardbed7b052001-05-19 14:59:49 +0000250 */
251
Owen Taylor3473f882001-02-23 17:55:21 +0000252typedef enum {
Daniel Veillarda10efa82001-04-18 13:09:01 +0000253 XML_ELEMENT_TYPE_UNDEFINED = 0,
Owen Taylor3473f882001-02-23 17:55:21 +0000254 XML_ELEMENT_TYPE_EMPTY = 1,
255 XML_ELEMENT_TYPE_ANY,
256 XML_ELEMENT_TYPE_MIXED,
257 XML_ELEMENT_TYPE_ELEMENT
258} xmlElementTypeVal;
259
Daniel Veillardaeb258a2002-09-13 14:48:12 +0000260
261#ifdef __cplusplus
262}
263#endif
264#include <libxml/xmlregexp.h>
265#ifdef __cplusplus
266extern "C" {
267#endif
268
Daniel Veillardbed7b052001-05-19 14:59:49 +0000269/**
270 * xmlElement:
271 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000272 * An XML Element declaration from a DTD.
Daniel Veillardbed7b052001-05-19 14:59:49 +0000273 */
274
Owen Taylor3473f882001-02-23 17:55:21 +0000275typedef struct _xmlElement xmlElement;
276typedef xmlElement *xmlElementPtr;
277struct _xmlElement {
Daniel Veillard0ec98632001-11-14 15:04:32 +0000278 void *_private; /* application data */
Owen Taylor3473f882001-02-23 17:55:21 +0000279 xmlElementType type; /* XML_ELEMENT_DECL, must be second ! */
280 const xmlChar *name; /* Element name */
281 struct _xmlNode *children; /* NULL */
282 struct _xmlNode *last; /* NULL */
283 struct _xmlDtd *parent; /* -> DTD */
284 struct _xmlNode *next; /* next sibling link */
285 struct _xmlNode *prev; /* previous sibling link */
286 struct _xmlDoc *doc; /* the containing document */
287
288 xmlElementTypeVal etype; /* The type */
289 xmlElementContentPtr content; /* the allowed element content */
290 xmlAttributePtr attributes; /* List of the declared attributes */
291 const xmlChar *prefix; /* the namespace prefix if any */
Daniel Veillardaeb258a2002-09-13 14:48:12 +0000292#ifdef LIBXML_REGEXP_ENABLED
293 xmlRegexpPtr contModel; /* the validating regexp */
294#else
295 void *contModel;
296#endif
Owen Taylor3473f882001-02-23 17:55:21 +0000297};
298
Daniel Veillardbed7b052001-05-19 14:59:49 +0000299
Daniel Veillard5e2dace2001-07-18 19:30:27 +0000300/**
301 * XML_LOCAL_NAMESPACE:
302 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000303 * A namespace declaration node.
Daniel Veillard5e2dace2001-07-18 19:30:27 +0000304 */
Daniel Veillardbed7b052001-05-19 14:59:49 +0000305#define XML_LOCAL_NAMESPACE XML_NAMESPACE_DECL
306typedef xmlElementType xmlNsType;
307
308/**
309 * xmlNs:
310 *
Owen Taylor3473f882001-02-23 17:55:21 +0000311 * An XML namespace.
312 * Note that prefix == NULL is valid, it defines the default namespace
Daniel Veillardd1640922001-12-17 15:30:10 +0000313 * within the subtree (until overridden).
Owen Taylor3473f882001-02-23 17:55:21 +0000314 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000315 * xmlNsType is unified with xmlElementType.
Owen Taylor3473f882001-02-23 17:55:21 +0000316 */
317
Owen Taylor3473f882001-02-23 17:55:21 +0000318typedef struct _xmlNs xmlNs;
319typedef xmlNs *xmlNsPtr;
320struct _xmlNs {
321 struct _xmlNs *next; /* next Ns link for this node */
322 xmlNsType type; /* global or local */
323 const xmlChar *href; /* URL for the namespace */
324 const xmlChar *prefix; /* prefix for the namespace */
PDT 2002 Aleksey Sanin8e8a7032002-07-22 18:03:11 +0000325 void *_private; /* application data */
Owen Taylor3473f882001-02-23 17:55:21 +0000326};
327
Daniel Veillardbed7b052001-05-19 14:59:49 +0000328/**
329 * xmlDtd:
330 *
Daniel Veillardd1640922001-12-17 15:30:10 +0000331 * An XML DTD, as defined by <!DOCTYPE ... There is actually one for
Daniel Veillard61f26172002-03-12 18:46:39 +0000332 * the internal subset and for the external subset.
Owen Taylor3473f882001-02-23 17:55:21 +0000333 */
334typedef struct _xmlDtd xmlDtd;
335typedef xmlDtd *xmlDtdPtr;
336struct _xmlDtd {
Daniel Veillard0ec98632001-11-14 15:04:32 +0000337 void *_private; /* application data */
Owen Taylor3473f882001-02-23 17:55:21 +0000338 xmlElementType type; /* XML_DTD_NODE, must be second ! */
339 const xmlChar *name; /* Name of the DTD */
340 struct _xmlNode *children; /* the value of the property link */
341 struct _xmlNode *last; /* last child link */
342 struct _xmlDoc *parent; /* child->parent link */
343 struct _xmlNode *next; /* next sibling link */
344 struct _xmlNode *prev; /* previous sibling link */
345 struct _xmlDoc *doc; /* the containing document */
346
347 /* End of common part */
348 void *notations; /* Hash table for notations if any */
349 void *elements; /* Hash table for elements if any */
350 void *attributes; /* Hash table for attributes if any */
351 void *entities; /* Hash table for entities if any */
352 const xmlChar *ExternalID; /* External identifier for PUBLIC DTD */
353 const xmlChar *SystemID; /* URI for a SYSTEM or PUBLIC DTD */
354 void *pentities; /* Hash table for param entities if any */
355};
356
Daniel Veillardbed7b052001-05-19 14:59:49 +0000357/**
358 * xmlAttr:
359 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000360 * An attribute on an XML node.
Owen Taylor3473f882001-02-23 17:55:21 +0000361 */
362typedef struct _xmlAttr xmlAttr;
363typedef xmlAttr *xmlAttrPtr;
364struct _xmlAttr {
Daniel Veillard0ec98632001-11-14 15:04:32 +0000365 void *_private; /* application data */
Owen Taylor3473f882001-02-23 17:55:21 +0000366 xmlElementType type; /* XML_ATTRIBUTE_NODE, must be second ! */
367 const xmlChar *name; /* the name of the property */
368 struct _xmlNode *children; /* the value of the property */
369 struct _xmlNode *last; /* NULL */
370 struct _xmlNode *parent; /* child->parent link */
371 struct _xmlAttr *next; /* next sibling link */
372 struct _xmlAttr *prev; /* previous sibling link */
373 struct _xmlDoc *doc; /* the containing document */
374 xmlNs *ns; /* pointer to the associated namespace */
375 xmlAttributeType atype; /* the attribute type if validating */
376};
377
Daniel Veillardbed7b052001-05-19 14:59:49 +0000378/**
379 * xmlID:
380 *
Owen Taylor3473f882001-02-23 17:55:21 +0000381 * An XML ID instance.
382 */
383
384typedef struct _xmlID xmlID;
385typedef xmlID *xmlIDPtr;
386struct _xmlID {
387 struct _xmlID *next; /* next ID */
388 const xmlChar *value; /* The ID name */
Daniel Veillardd1640922001-12-17 15:30:10 +0000389 xmlAttrPtr attr; /* The attribute holding it */
Daniel Veillardea7751d2002-12-20 00:16:24 +0000390 const xmlChar *name; /* The attribute if attr is not available */
391 int lineno; /* The line number if attr is not available */
Owen Taylor3473f882001-02-23 17:55:21 +0000392};
393
Daniel Veillardbed7b052001-05-19 14:59:49 +0000394/**
395 * xmlRef:
396 *
Owen Taylor3473f882001-02-23 17:55:21 +0000397 * An XML IDREF instance.
398 */
399
400typedef struct _xmlRef xmlRef;
401typedef xmlRef *xmlRefPtr;
402struct _xmlRef {
403 struct _xmlRef *next; /* next Ref */
404 const xmlChar *value; /* The Ref name */
Daniel Veillardd1640922001-12-17 15:30:10 +0000405 xmlAttrPtr attr; /* The attribute holding it */
Daniel Veillardea7751d2002-12-20 00:16:24 +0000406 const xmlChar *name; /* The attribute if attr is not available */
407 int lineno; /* The line number if attr is not available */
Owen Taylor3473f882001-02-23 17:55:21 +0000408};
409
Daniel Veillardbed7b052001-05-19 14:59:49 +0000410/**
411 * xmlBufferAllocationScheme:
412 *
413 * A buffer allocation scheme can be defined to either match exactly the
Daniel Veillard61f26172002-03-12 18:46:39 +0000414 * need or double it's allocated size each time it is found too small.
Owen Taylor3473f882001-02-23 17:55:21 +0000415 */
416
417typedef enum {
418 XML_BUFFER_ALLOC_DOUBLEIT,
Daniel Veillard561b7f82002-03-20 21:55:57 +0000419 XML_BUFFER_ALLOC_EXACT
Owen Taylor3473f882001-02-23 17:55:21 +0000420} xmlBufferAllocationScheme;
421
Daniel Veillardbed7b052001-05-19 14:59:49 +0000422/**
423 * xmlBuffer:
424 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000425 * A buffer structure.
Daniel Veillardbed7b052001-05-19 14:59:49 +0000426 */
Owen Taylor3473f882001-02-23 17:55:21 +0000427typedef struct _xmlBuffer xmlBuffer;
428typedef xmlBuffer *xmlBufferPtr;
429struct _xmlBuffer {
430 xmlChar *content; /* The buffer content UTF8 */
431 unsigned int use; /* The buffer size used */
432 unsigned int size; /* The buffer size */
433 xmlBufferAllocationScheme alloc; /* The realloc method */
434};
435
Daniel Veillardf69bb4b2001-05-19 13:24:56 +0000436/**
437 * xmlNode:
438 *
Owen Taylor3473f882001-02-23 17:55:21 +0000439 * A node in an XML tree.
440 */
441typedef struct _xmlNode xmlNode;
442typedef xmlNode *xmlNodePtr;
443struct _xmlNode {
Daniel Veillard0ec98632001-11-14 15:04:32 +0000444 void *_private; /* application data */
Owen Taylor3473f882001-02-23 17:55:21 +0000445 xmlElementType type; /* type number, must be second ! */
446 const xmlChar *name; /* the name of the node, or the entity */
447 struct _xmlNode *children; /* parent->childs link */
448 struct _xmlNode *last; /* last child link */
449 struct _xmlNode *parent; /* child->parent link */
450 struct _xmlNode *next; /* next sibling link */
451 struct _xmlNode *prev; /* previous sibling link */
452 struct _xmlDoc *doc; /* the containing document */
Daniel Veillardcbaf3992001-12-31 16:16:02 +0000453
454 /* End of common part */
Owen Taylor3473f882001-02-23 17:55:21 +0000455 xmlNs *ns; /* pointer to the associated namespace */
Owen Taylor3473f882001-02-23 17:55:21 +0000456 xmlChar *content; /* the content */
Owen Taylor3473f882001-02-23 17:55:21 +0000457 struct _xmlAttr *properties;/* properties list */
458 xmlNs *nsDef; /* namespace definitions on this node */
459};
460
Daniel Veillard5e2dace2001-07-18 19:30:27 +0000461/**
462 * XML_GET_CONTENT:
463 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000464 * Macro to extract the content pointer of a node.
Daniel Veillard5e2dace2001-07-18 19:30:27 +0000465 */
466#define XML_GET_CONTENT(n) \
Daniel Veillard566d4df2001-11-22 13:00:53 +0000467 ((n)->type == XML_ELEMENT_NODE ? NULL : (n)->content)
Daniel Veillard5e2dace2001-07-18 19:30:27 +0000468
469/**
470 * XML_GET_LINE:
471 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000472 * Macro to extract the line number of an element node.
Daniel Veillard566d4df2001-11-22 13:00:53 +0000473 * This will work only if line numbering is activated by
Daniel Veillard61f26172002-03-12 18:46:39 +0000474 * calling xmlLineNumbersDefault(1) before parsing.
Daniel Veillard5e2dace2001-07-18 19:30:27 +0000475 */
476#define XML_GET_LINE(n) \
Daniel Veillard566d4df2001-11-22 13:00:53 +0000477 ((n)->type == XML_ELEMENT_NODE ? (int) (n)->content : 0)
Daniel Veillard7db37732001-07-12 01:20:08 +0000478
Daniel Veillardbed7b052001-05-19 14:59:49 +0000479/**
480 * xmlDoc:
481 *
Owen Taylor3473f882001-02-23 17:55:21 +0000482 * An XML document.
483 */
484typedef struct _xmlDoc xmlDoc;
485typedef xmlDoc *xmlDocPtr;
486struct _xmlDoc {
Daniel Veillard0ec98632001-11-14 15:04:32 +0000487 void *_private; /* application data */
Owen Taylor3473f882001-02-23 17:55:21 +0000488 xmlElementType type; /* XML_DOCUMENT_NODE, must be second ! */
489 char *name; /* name/filename/URI of the document */
490 struct _xmlNode *children; /* the document tree */
491 struct _xmlNode *last; /* last child link */
492 struct _xmlNode *parent; /* child->parent link */
493 struct _xmlNode *next; /* next sibling link */
494 struct _xmlNode *prev; /* previous sibling link */
495 struct _xmlDoc *doc; /* autoreference to itself */
496
497 /* End of common part */
498 int compression;/* level of zlib compression */
499 int standalone; /* standalone document (no external refs) */
500 struct _xmlDtd *intSubset; /* the document internal subset */
501 struct _xmlDtd *extSubset; /* the document external subset */
502 struct _xmlNs *oldNs; /* Global namespace, the old way */
503 const xmlChar *version; /* the XML version string */
504 const xmlChar *encoding; /* external initial encoding, if any */
505 void *ids; /* Hash table for ID attributes if any */
506 void *refs; /* Hash table for IDREFs attributes if any */
507 const xmlChar *URL; /* The URI for that document */
508 int charset; /* encoding of the in-memory content
509 actually an xmlCharEncoding */
510};
511
Daniel Veillardbed7b052001-05-19 14:59:49 +0000512/**
513 * xmlChildrenNode:
514 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000515 * Macro for compatibility naming layer with libxml1.
Owen Taylor3473f882001-02-23 17:55:21 +0000516 */
517#ifndef xmlChildrenNode
518#define xmlChildrenNode children
Daniel Veillardbed7b052001-05-19 14:59:49 +0000519#endif
520
521/**
522 * xmlRootNode:
523 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000524 * Macro for compatibility naming layer with libxml1.
Daniel Veillardbed7b052001-05-19 14:59:49 +0000525 */
526#ifndef xmlRootNode
Owen Taylor3473f882001-02-23 17:55:21 +0000527#define xmlRootNode children
528#endif
529
530/*
531 * Variables.
532 */
Daniel Veillard0ba59232002-02-10 13:20:39 +0000533#if 0
Owen Taylor3473f882001-02-23 17:55:21 +0000534LIBXML_DLL_IMPORT extern int oldXMLWDcompatibility;/* maintain compatibility with old WD */
535LIBXML_DLL_IMPORT extern int xmlIndentTreeOutput; /* try to indent the tree dumps */
536LIBXML_DLL_IMPORT extern xmlBufferAllocationScheme xmlBufferAllocScheme; /* alloc scheme to use */
Daniel Veillarde356c282001-03-10 12:32:04 +0000537LIBXML_DLL_IMPORT extern int xmlSaveNoEmptyTags; /* save empty tags as <empty></empty> */
538LIBXML_DLL_IMPORT extern int xmlDefaultBufferSize; /* default buffer size */
Daniel Veillard0ba59232002-02-10 13:20:39 +0000539#endif
Owen Taylor3473f882001-02-23 17:55:21 +0000540
Daniel Veillardc00cda82003-04-07 10:22:39 +0000541/*
542 * Some helper functions
543 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000544XMLPUBFUN int XMLCALL
545 xmlValidateNCName (const xmlChar *value,
Daniel Veillardc00cda82003-04-07 10:22:39 +0000546 int space);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000547XMLPUBFUN int XMLCALL xmlValidateQName (const xmlChar *value,
Daniel Veillardc00cda82003-04-07 10:22:39 +0000548 int space);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000549XMLPUBFUN int XMLCALL xmlValidateName (const xmlChar *value,
Daniel Veillardc00cda82003-04-07 10:22:39 +0000550 int space);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000551XMLPUBFUN int XMLCALL xmlValidateNMToken (const xmlChar *value,
Daniel Veillardc00cda82003-04-07 10:22:39 +0000552 int space);
Daniel Veillardd4310742003-02-18 21:12:46 +0000553
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000554XMLPUBFUN xmlChar * XMLCALL xmlBuildQName (const xmlChar *ncname,
Daniel Veillardc00cda82003-04-07 10:22:39 +0000555 const xmlChar *prefix,
556 xmlChar *memory,
557 int len);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000558XMLPUBFUN xmlChar * XMLCALL xmlSplitQName2 (const xmlChar *name,
Daniel Veillardc00cda82003-04-07 10:22:39 +0000559 xmlChar **prefix);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000560XMLPUBFUN const xmlChar * XMLCALL xmlSplitQName3 (const xmlChar *name,
Daniel Veillard8d73bcb2003-08-04 01:06:15 +0000561 int *len);
562
Owen Taylor3473f882001-02-23 17:55:21 +0000563/*
564 * Handling Buffers.
565 */
566
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000567XMLPUBFUN void XMLCALL xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme);
568XMLPUBFUN xmlBufferAllocationScheme XMLCALL xmlGetBufferAllocationScheme(void);
Daniel Veillard56a4cb82001-03-24 17:00:36 +0000569
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000570XMLPUBFUN xmlBufferPtr XMLCALL xmlBufferCreate (void);
571XMLPUBFUN xmlBufferPtr XMLCALL xmlBufferCreateSize (size_t size);
572XMLPUBFUN int XMLCALL xmlBufferResize (xmlBufferPtr buf,
Daniel Veillard56a4cb82001-03-24 17:00:36 +0000573 unsigned int size);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000574XMLPUBFUN void XMLCALL xmlBufferFree (xmlBufferPtr buf);
575XMLPUBFUN int XMLCALL xmlBufferDump (FILE *file,
Owen Taylor3473f882001-02-23 17:55:21 +0000576 xmlBufferPtr buf);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000577XMLPUBFUN void XMLCALL xmlBufferAdd (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000578 const xmlChar *str,
579 int len);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000580XMLPUBFUN void XMLCALL xmlBufferAddHead (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000581 const xmlChar *str,
582 int len);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000583XMLPUBFUN void XMLCALL xmlBufferCat (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000584 const xmlChar *str);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000585XMLPUBFUN void XMLCALL xmlBufferCCat (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000586 const char *str);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000587XMLPUBFUN int XMLCALL xmlBufferShrink (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000588 unsigned int len);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000589XMLPUBFUN int XMLCALL xmlBufferGrow (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000590 unsigned int len);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000591XMLPUBFUN void XMLCALL xmlBufferEmpty (xmlBufferPtr buf);
592XMLPUBFUN const xmlChar* XMLCALL xmlBufferContent (const xmlBufferPtr buf);
593XMLPUBFUN void XMLCALL xmlBufferSetAllocationScheme(xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000594 xmlBufferAllocationScheme scheme);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000595XMLPUBFUN int XMLCALL xmlBufferLength (const xmlBufferPtr buf);
Owen Taylor3473f882001-02-23 17:55:21 +0000596
597/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000598 * Creating/freeing new structures.
Owen Taylor3473f882001-02-23 17:55:21 +0000599 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000600XMLPUBFUN xmlDtdPtr XMLCALL xmlCreateIntSubset (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000601 const xmlChar *name,
602 const xmlChar *ExternalID,
603 const xmlChar *SystemID);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000604XMLPUBFUN xmlDtdPtr XMLCALL xmlNewDtd (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000605 const xmlChar *name,
606 const xmlChar *ExternalID,
607 const xmlChar *SystemID);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000608XMLPUBFUN xmlDtdPtr XMLCALL xmlGetIntSubset (xmlDocPtr doc);
609XMLPUBFUN void XMLCALL xmlFreeDtd (xmlDtdPtr cur);
610XMLPUBFUN xmlNsPtr XMLCALL xmlNewGlobalNs (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000611 const xmlChar *href,
612 const xmlChar *prefix);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000613XMLPUBFUN xmlNsPtr XMLCALL xmlNewNs (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000614 const xmlChar *href,
615 const xmlChar *prefix);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000616XMLPUBFUN void XMLCALL xmlFreeNs (xmlNsPtr cur);
617XMLPUBFUN void XMLCALL xmlFreeNsList (xmlNsPtr cur);
618XMLPUBFUN xmlDocPtr XMLCALL xmlNewDoc (const xmlChar *version);
619XMLPUBFUN void XMLCALL xmlFreeDoc (xmlDocPtr cur);
620XMLPUBFUN xmlAttrPtr XMLCALL xmlNewDocProp (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000621 const xmlChar *name,
622 const xmlChar *value);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000623XMLPUBFUN xmlAttrPtr XMLCALL xmlNewProp (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000624 const xmlChar *name,
625 const xmlChar *value);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000626XMLPUBFUN xmlAttrPtr XMLCALL xmlNewNsProp (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000627 xmlNsPtr ns,
628 const xmlChar *name,
629 const xmlChar *value);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000630XMLPUBFUN xmlAttrPtr XMLCALL xmlNewNsPropEatName (xmlNodePtr node,
Daniel Veillard46de64e2002-05-29 08:21:33 +0000631 xmlNsPtr ns,
632 xmlChar *name,
633 const xmlChar *value);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000634XMLPUBFUN void XMLCALL xmlFreePropList (xmlAttrPtr cur);
635XMLPUBFUN void XMLCALL xmlFreeProp (xmlAttrPtr cur);
636XMLPUBFUN xmlAttrPtr XMLCALL xmlCopyProp (xmlNodePtr target,
Owen Taylor3473f882001-02-23 17:55:21 +0000637 xmlAttrPtr cur);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000638XMLPUBFUN xmlAttrPtr XMLCALL xmlCopyPropList (xmlNodePtr target,
Owen Taylor3473f882001-02-23 17:55:21 +0000639 xmlAttrPtr cur);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000640XMLPUBFUN xmlDtdPtr XMLCALL xmlCopyDtd (xmlDtdPtr dtd);
641XMLPUBFUN xmlDocPtr XMLCALL xmlCopyDoc (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000642 int recursive);
643
644/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000645 * Creating new nodes.
Owen Taylor3473f882001-02-23 17:55:21 +0000646 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000647XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocNode (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000648 xmlNsPtr ns,
649 const xmlChar *name,
650 const xmlChar *content);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000651XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocNodeEatName (xmlDocPtr doc,
Daniel Veillard46de64e2002-05-29 08:21:33 +0000652 xmlNsPtr ns,
653 xmlChar *name,
654 const xmlChar *content);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000655XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocRawNode (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000656 xmlNsPtr ns,
657 const xmlChar *name,
658 const xmlChar *content);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000659XMLPUBFUN xmlNodePtr XMLCALL xmlNewNode (xmlNsPtr ns,
Owen Taylor3473f882001-02-23 17:55:21 +0000660 const xmlChar *name);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000661XMLPUBFUN xmlNodePtr XMLCALL xmlNewNodeEatName (xmlNsPtr ns,
Daniel Veillard46de64e2002-05-29 08:21:33 +0000662 xmlChar *name);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000663XMLPUBFUN xmlNodePtr XMLCALL xmlNewChild (xmlNodePtr parent,
Owen Taylor3473f882001-02-23 17:55:21 +0000664 xmlNsPtr ns,
665 const xmlChar *name,
666 const xmlChar *content);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000667XMLPUBFUN xmlNodePtr XMLCALL xmlNewTextChild (xmlNodePtr parent,
Owen Taylor3473f882001-02-23 17:55:21 +0000668 xmlNsPtr ns,
669 const xmlChar *name,
670 const xmlChar *content);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000671XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocText (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000672 const xmlChar *content);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000673XMLPUBFUN xmlNodePtr XMLCALL xmlNewText (const xmlChar *content);
674XMLPUBFUN xmlNodePtr XMLCALL xmlNewPI (const xmlChar *name,
Owen Taylor3473f882001-02-23 17:55:21 +0000675 const xmlChar *content);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000676XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocTextLen (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000677 const xmlChar *content,
678 int len);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000679XMLPUBFUN xmlNodePtr XMLCALL xmlNewTextLen (const xmlChar *content,
Owen Taylor3473f882001-02-23 17:55:21 +0000680 int len);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000681XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocComment (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000682 const xmlChar *content);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000683XMLPUBFUN xmlNodePtr XMLCALL xmlNewComment (const xmlChar *content);
684XMLPUBFUN xmlNodePtr XMLCALL xmlNewCDataBlock (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000685 const xmlChar *content,
686 int len);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000687XMLPUBFUN xmlNodePtr XMLCALL xmlNewCharRef (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000688 const xmlChar *name);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000689XMLPUBFUN xmlNodePtr XMLCALL xmlNewReference (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000690 const xmlChar *name);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000691XMLPUBFUN xmlNodePtr XMLCALL xmlCopyNode (const xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000692 int recursive);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000693XMLPUBFUN xmlNodePtr XMLCALL xmlDocCopyNode (const xmlNodePtr node,
Daniel Veillard82daa812001-04-12 08:55:36 +0000694 xmlDocPtr doc,
695 int recursive);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000696XMLPUBFUN xmlNodePtr XMLCALL xmlCopyNodeList (const xmlNodePtr node);
697XMLPUBFUN xmlNodePtr XMLCALL xmlNewDocFragment (xmlDocPtr doc);
Owen Taylor3473f882001-02-23 17:55:21 +0000698
699/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000700 * Navigating.
Owen Taylor3473f882001-02-23 17:55:21 +0000701 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000702XMLPUBFUN long XMLCALL xmlGetLineNo (xmlNodePtr node);
703XMLPUBFUN xmlChar * XMLCALL xmlGetNodePath (xmlNodePtr node);
704XMLPUBFUN xmlNodePtr XMLCALL xmlDocGetRootElement (xmlDocPtr doc);
705XMLPUBFUN xmlNodePtr XMLCALL xmlGetLastChild (xmlNodePtr parent);
706XMLPUBFUN int XMLCALL xmlNodeIsText (xmlNodePtr node);
707XMLPUBFUN int XMLCALL xmlIsBlankNode (xmlNodePtr node);
Owen Taylor3473f882001-02-23 17:55:21 +0000708
709/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000710 * Changing the structure.
Owen Taylor3473f882001-02-23 17:55:21 +0000711 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000712XMLPUBFUN xmlNodePtr XMLCALL xmlDocSetRootElement (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000713 xmlNodePtr root);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000714XMLPUBFUN void XMLCALL xmlNodeSetName (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +0000715 const xmlChar *name);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000716XMLPUBFUN xmlNodePtr XMLCALL xmlAddChild (xmlNodePtr parent,
Owen Taylor3473f882001-02-23 17:55:21 +0000717 xmlNodePtr cur);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000718XMLPUBFUN xmlNodePtr XMLCALL xmlAddChildList (xmlNodePtr parent,
Owen Taylor3473f882001-02-23 17:55:21 +0000719 xmlNodePtr cur);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000720XMLPUBFUN xmlNodePtr XMLCALL xmlReplaceNode (xmlNodePtr old,
Owen Taylor3473f882001-02-23 17:55:21 +0000721 xmlNodePtr cur);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000722XMLPUBFUN xmlNodePtr XMLCALL xmlAddSibling (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +0000723 xmlNodePtr elem);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000724XMLPUBFUN xmlNodePtr XMLCALL xmlAddPrevSibling (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +0000725 xmlNodePtr elem);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000726XMLPUBFUN xmlNodePtr XMLCALL xmlAddNextSibling (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +0000727 xmlNodePtr elem);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000728XMLPUBFUN void XMLCALL xmlUnlinkNode (xmlNodePtr cur);
729XMLPUBFUN xmlNodePtr XMLCALL xmlTextMerge (xmlNodePtr first,
Owen Taylor3473f882001-02-23 17:55:21 +0000730 xmlNodePtr second);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000731XMLPUBFUN int XMLCALL xmlTextConcat (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000732 const xmlChar *content,
733 int len);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000734XMLPUBFUN void XMLCALL xmlFreeNodeList (xmlNodePtr cur);
735XMLPUBFUN void XMLCALL xmlFreeNode (xmlNodePtr cur);
736XMLPUBFUN void XMLCALL xmlSetTreeDoc (xmlNodePtr tree,
Owen Taylor3473f882001-02-23 17:55:21 +0000737 xmlDocPtr doc);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000738XMLPUBFUN void XMLCALL xmlSetListDoc (xmlNodePtr list,
Owen Taylor3473f882001-02-23 17:55:21 +0000739 xmlDocPtr doc);
740
741/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000742 * Namespaces.
Owen Taylor3473f882001-02-23 17:55:21 +0000743 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000744XMLPUBFUN xmlNsPtr XMLCALL xmlSearchNs (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000745 xmlNodePtr node,
746 const xmlChar *nameSpace);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000747XMLPUBFUN xmlNsPtr XMLCALL xmlSearchNsByHref (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000748 xmlNodePtr node,
749 const xmlChar *href);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000750XMLPUBFUN xmlNsPtr * XMLCALL xmlGetNsList (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000751 xmlNodePtr node);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000752XMLPUBFUN void XMLCALL xmlSetNs (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000753 xmlNsPtr ns);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000754XMLPUBFUN xmlNsPtr XMLCALL xmlCopyNamespace (xmlNsPtr cur);
755XMLPUBFUN xmlNsPtr XMLCALL xmlCopyNamespaceList (xmlNsPtr cur);
Owen Taylor3473f882001-02-23 17:55:21 +0000756
757/*
758 * Changing the content.
759 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000760XMLPUBFUN xmlAttrPtr XMLCALL xmlSetProp (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000761 const xmlChar *name,
762 const xmlChar *value);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000763XMLPUBFUN xmlChar * XMLCALL xmlGetProp (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000764 const xmlChar *name);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000765XMLPUBFUN xmlChar * XMLCALL xmlGetNoNsProp (xmlNodePtr node,
Daniel Veillard71531f32003-02-05 13:19:53 +0000766 const xmlChar *name);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000767XMLPUBFUN xmlAttrPtr XMLCALL xmlHasProp (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000768 const xmlChar *name);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000769XMLPUBFUN xmlAttrPtr XMLCALL xmlHasNsProp (xmlNodePtr node,
Daniel Veillarde95e2392001-06-06 10:46:28 +0000770 const xmlChar *name,
Daniel Veillardca2366a2001-06-11 12:09:01 +0000771 const xmlChar *nameSpace);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000772XMLPUBFUN xmlAttrPtr XMLCALL xmlSetNsProp (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000773 xmlNsPtr ns,
774 const xmlChar *name,
775 const xmlChar *value);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000776XMLPUBFUN xmlChar * XMLCALL xmlGetNsProp (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000777 const xmlChar *name,
778 const xmlChar *nameSpace);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000779XMLPUBFUN xmlNodePtr XMLCALL xmlStringGetNodeList (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000780 const xmlChar *value);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000781XMLPUBFUN xmlNodePtr XMLCALL xmlStringLenGetNodeList (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000782 const xmlChar *value,
783 int len);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000784XMLPUBFUN xmlChar * XMLCALL xmlNodeListGetString (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000785 xmlNodePtr list,
786 int inLine);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000787XMLPUBFUN xmlChar * XMLCALL xmlNodeListGetRawString (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000788 xmlNodePtr list,
789 int inLine);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000790XMLPUBFUN void XMLCALL xmlNodeSetContent (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +0000791 const xmlChar *content);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000792XMLPUBFUN void XMLCALL xmlNodeSetContentLen (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +0000793 const xmlChar *content,
794 int len);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000795XMLPUBFUN void XMLCALL xmlNodeAddContent (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +0000796 const xmlChar *content);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000797XMLPUBFUN void XMLCALL xmlNodeAddContentLen (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +0000798 const xmlChar *content,
799 int len);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000800XMLPUBFUN xmlChar * XMLCALL xmlNodeGetContent (xmlNodePtr cur);
801XMLPUBFUN xmlChar * XMLCALL xmlNodeGetLang (xmlNodePtr cur);
802XMLPUBFUN void XMLCALL xmlNodeSetLang (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +0000803 const xmlChar *lang);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000804XMLPUBFUN int XMLCALL xmlNodeGetSpacePreserve (xmlNodePtr cur);
805XMLPUBFUN void XMLCALL xmlNodeSetSpacePreserve (xmlNodePtr cur,
Daniel Veillardd1640922001-12-17 15:30:10 +0000806 int val);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000807XMLPUBFUN xmlChar * XMLCALL xmlNodeGetBase (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000808 xmlNodePtr cur);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000809XMLPUBFUN void XMLCALL xmlNodeSetBase (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +0000810 xmlChar *uri);
811
812/*
813 * Removing content.
814 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000815XMLPUBFUN int XMLCALL xmlRemoveProp (xmlAttrPtr cur);
816XMLPUBFUN int XMLCALL xmlUnsetProp (xmlNodePtr node,
Daniel Veillard9403a042001-05-28 11:00:53 +0000817 const xmlChar *name);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000818XMLPUBFUN int XMLCALL xmlUnsetNsProp (xmlNodePtr node,
Daniel Veillard9403a042001-05-28 11:00:53 +0000819 xmlNsPtr ns,
820 const xmlChar *name);
Owen Taylor3473f882001-02-23 17:55:21 +0000821
822/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000823 * Internal, don't use.
Owen Taylor3473f882001-02-23 17:55:21 +0000824 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000825XMLPUBFUN void XMLCALL xmlBufferWriteCHAR (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000826 const xmlChar *string);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000827XMLPUBFUN void XMLCALL xmlBufferWriteChar (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000828 const char *string);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000829XMLPUBFUN void XMLCALL xmlBufferWriteQuotedString(xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000830 const xmlChar *string);
831
832/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000833 * Namespace handling.
Owen Taylor3473f882001-02-23 17:55:21 +0000834 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000835XMLPUBFUN int XMLCALL xmlReconciliateNs (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000836 xmlNodePtr tree);
837
838/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000839 * Saving.
Owen Taylor3473f882001-02-23 17:55:21 +0000840 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000841XMLPUBFUN void XMLCALL xmlDocDumpFormatMemory (xmlDocPtr cur,
Daniel Veillard963d2ae2002-01-20 22:08:18 +0000842 xmlChar **mem,
Owen Taylor3473f882001-02-23 17:55:21 +0000843 int *size,
844 int format);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000845XMLPUBFUN void XMLCALL xmlDocDumpMemory (xmlDocPtr cur,
Daniel Veillard963d2ae2002-01-20 22:08:18 +0000846 xmlChar **mem,
Owen Taylor3473f882001-02-23 17:55:21 +0000847 int *size);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000848XMLPUBFUN void XMLCALL xmlDocDumpMemoryEnc (xmlDocPtr out_doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000849 xmlChar **doc_txt_ptr,
850 int * doc_txt_len,
851 const char *txt_encoding);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000852XMLPUBFUN void XMLCALL xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000853 xmlChar **doc_txt_ptr,
854 int * doc_txt_len,
855 const char *txt_encoding,
856 int format);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000857XMLPUBFUN int XMLCALL xmlDocFormatDump(FILE *f,
Daniel Veillard9e412302002-06-10 15:59:44 +0000858 xmlDocPtr cur,
859 int format);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000860XMLPUBFUN int XMLCALL xmlDocDump (FILE *f,
Owen Taylor3473f882001-02-23 17:55:21 +0000861 xmlDocPtr cur);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000862XMLPUBFUN void XMLCALL xmlElemDump (FILE *f,
Owen Taylor3473f882001-02-23 17:55:21 +0000863 xmlDocPtr doc,
864 xmlNodePtr cur);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000865XMLPUBFUN int XMLCALL xmlSaveFile (const char *filename,
Owen Taylor3473f882001-02-23 17:55:21 +0000866 xmlDocPtr cur);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000867XMLPUBFUN int XMLCALL xmlSaveFormatFile (const char *filename,
Daniel Veillard67fee942001-04-26 18:59:03 +0000868 xmlDocPtr cur,
869 int format);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000870XMLPUBFUN int XMLCALL xmlNodeDump (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000871 xmlDocPtr doc,
872 xmlNodePtr cur,
873 int level,
874 int format);
875
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000876XMLPUBFUN int XMLCALL xmlSaveFileTo (xmlOutputBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000877 xmlDocPtr cur,
878 const char *encoding);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000879XMLPUBFUN int XMLCALL xmlSaveFormatFileTo (xmlOutputBufferPtr buf,
CET 2001 Daniel Veillard5a37bde2001-11-01 14:31:22 +0000880 xmlDocPtr cur,
881 const char *encoding,
882 int format);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000883XMLPUBFUN void XMLCALL xmlNodeDumpOutput (xmlOutputBufferPtr buf,
CET 2001 Daniel Veillard5a37bde2001-11-01 14:31:22 +0000884 xmlDocPtr doc,
885 xmlNodePtr cur,
886 int level,
887 int format,
888 const char *encoding);
Owen Taylor3473f882001-02-23 17:55:21 +0000889
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000890XMLPUBFUN int XMLCALL xmlSaveFormatFileEnc (const char *filename,
Daniel Veillardd1640922001-12-17 15:30:10 +0000891 xmlDocPtr cur,
892 const char *encoding,
893 int format);
Daniel Veillardf012a642001-07-23 19:10:52 +0000894
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000895XMLPUBFUN int XMLCALL xmlSaveFileEnc (const char *filename,
Owen Taylor3473f882001-02-23 17:55:21 +0000896 xmlDocPtr cur,
897 const char *encoding);
898
899/*
Daniel Veillardd5c2f922002-11-21 14:10:52 +0000900 * XHTML
901 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000902XMLPUBFUN int XMLCALL xmlIsXHTML (const xmlChar *systemID,
Daniel Veillardd5c2f922002-11-21 14:10:52 +0000903 const xmlChar *publicID);
904
905/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000906 * Compression.
Owen Taylor3473f882001-02-23 17:55:21 +0000907 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000908XMLPUBFUN int XMLCALL xmlGetDocCompressMode (xmlDocPtr doc);
909XMLPUBFUN void XMLCALL xmlSetDocCompressMode (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000910 int mode);
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000911XMLPUBFUN int XMLCALL xmlGetCompressMode (void);
912XMLPUBFUN void XMLCALL xmlSetCompressMode (int mode);
Owen Taylor3473f882001-02-23 17:55:21 +0000913
914#ifdef __cplusplus
915}
916#endif
Daniel Veillard6c4ffaf2002-02-11 08:54:05 +0000917#ifndef __XML_PARSER_H__
918#include <libxml/xmlmemory.h>
919#endif
Owen Taylor3473f882001-02-23 17:55:21 +0000920
921#endif /* __XML_TREE_H__ */
922