blob: 7615ff28b8e845ae1ebd6711d57ccf00d33e78ca [file] [log] [blame]
Owen Taylor3473f882001-02-23 17:55:21 +00001/*
Daniel Veillardbe586972003-11-18 20:56:51 +00002 * 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
Owen Taylor3473f882001-02-23 17:55:21 +00006 *
Daniel Veillardbe586972003-11-18 20:56:51 +00007 * Copy: See Copyright for the status of this software.
Owen Taylor3473f882001-02-23 17:55:21 +00008 *
Daniel Veillardbe586972003-11-18 20:56:51 +00009 * Author: Daniel Veillard
Owen Taylor3473f882001-02-23 17:55:21 +000010 */
11
12#ifndef __XML_TREE_H__
13#define __XML_TREE_H__
14
15#include <stdio.h>
16#include <libxml/xmlversion.h>
William M. Bracka2e844a2004-01-06 11:52:13 +000017#include <libxml/xmlstring.h>
Igor Zlatkovic7ae91bc2002-11-08 17:18:52 +000018
Owen Taylor3473f882001-02-23 17:55:21 +000019#ifdef __cplusplus
20extern "C" {
21#endif
22
Daniel Veillard8bdb91d2001-10-31 17:52:43 +000023/*
24 * Some of the basic types pointer to structures:
25 */
26/* xmlIO.h */
27typedef struct _xmlParserInputBuffer xmlParserInputBuffer;
28typedef xmlParserInputBuffer *xmlParserInputBufferPtr;
29
CET 2001 Daniel Veillard5a37bde2001-11-01 14:31:22 +000030typedef struct _xmlOutputBuffer xmlOutputBuffer;
31typedef xmlOutputBuffer *xmlOutputBufferPtr;
32
Daniel Veillard8bdb91d2001-10-31 17:52:43 +000033/* parser.h */
34typedef struct _xmlParserInput xmlParserInput;
35typedef xmlParserInput *xmlParserInputPtr;
36
37typedef struct _xmlParserCtxt xmlParserCtxt;
38typedef xmlParserCtxt *xmlParserCtxtPtr;
39
Daniel Veillard6c4ffaf2002-02-11 08:54:05 +000040typedef struct _xmlSAXLocator xmlSAXLocator;
41typedef xmlSAXLocator *xmlSAXLocatorPtr;
42
43typedef struct _xmlSAXHandler xmlSAXHandler;
44typedef xmlSAXHandler *xmlSAXHandlerPtr;
45
46/* entities.h */
47typedef struct _xmlEntity xmlEntity;
48typedef xmlEntity *xmlEntityPtr;
49
Daniel Veillard9d06d302002-01-22 18:15:52 +000050/**
51 * BASE_BUFFER_SIZE:
52 *
Daniel Veillard61f26172002-03-12 18:46:39 +000053 * default buffer size 4000.
Daniel Veillard9d06d302002-01-22 18:15:52 +000054 */
Daniel Veillard6155d8a2003-08-19 15:01:28 +000055#define BASE_BUFFER_SIZE 4096
Daniel Veillardd0463562001-10-13 09:15:48 +000056
Daniel Veillard5e2dace2001-07-18 19:30:27 +000057/**
58 * XML_XML_NAMESPACE:
59 *
60 * This is the namespace for the special xml: prefix predefined in the
Daniel Veillard61f26172002-03-12 18:46:39 +000061 * XML Namespace specification.
Daniel Veillard5e2dace2001-07-18 19:30:27 +000062 */
Owen Taylor3473f882001-02-23 17:55:21 +000063#define XML_XML_NAMESPACE \
64 (const xmlChar *) "http://www.w3.org/XML/1998/namespace"
65
Daniel Veillard67f8b1c2004-04-09 21:51:49 +000066/**
67 * XML_XML_ID:
68 *
69 * This is the name for the special xml:id attribute
70 */
71#define XML_XML_ID (const xmlChar *) "xml:id"
72
Owen Taylor3473f882001-02-23 17:55:21 +000073/*
Daniel Veillard61f26172002-03-12 18:46:39 +000074 * The different element types carried by an XML tree.
Owen Taylor3473f882001-02-23 17:55:21 +000075 *
76 * NOTE: This is synchronized with DOM Level1 values
77 * See http://www.w3.org/TR/REC-DOM-Level-1/
78 *
79 * Actually this had diverged a bit, and now XML_DOCUMENT_TYPE_NODE should
80 * be deprecated to use an XML_DTD_NODE.
81 */
82typedef enum {
83 XML_ELEMENT_NODE= 1,
84 XML_ATTRIBUTE_NODE= 2,
85 XML_TEXT_NODE= 3,
86 XML_CDATA_SECTION_NODE= 4,
87 XML_ENTITY_REF_NODE= 5,
88 XML_ENTITY_NODE= 6,
89 XML_PI_NODE= 7,
90 XML_COMMENT_NODE= 8,
91 XML_DOCUMENT_NODE= 9,
92 XML_DOCUMENT_TYPE_NODE= 10,
93 XML_DOCUMENT_FRAG_NODE= 11,
94 XML_NOTATION_NODE= 12,
95 XML_HTML_DOCUMENT_NODE= 13,
96 XML_DTD_NODE= 14,
97 XML_ELEMENT_DECL= 15,
98 XML_ATTRIBUTE_DECL= 16,
99 XML_ENTITY_DECL= 17,
100 XML_NAMESPACE_DECL= 18,
101 XML_XINCLUDE_START= 19,
102 XML_XINCLUDE_END= 20
Daniel Veillardeae522a2001-04-23 13:41:34 +0000103#ifdef LIBXML_DOCB_ENABLED
104 ,XML_DOCB_DOCUMENT_NODE= 21
Owen Taylor3473f882001-02-23 17:55:21 +0000105#endif
106} xmlElementType;
107
Owen Taylor3473f882001-02-23 17:55:21 +0000108
Daniel Veillardbed7b052001-05-19 14:59:49 +0000109/**
110 * xmlNotation:
111 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000112 * A DTD Notation definition.
Owen Taylor3473f882001-02-23 17:55:21 +0000113 */
114
115typedef struct _xmlNotation xmlNotation;
116typedef xmlNotation *xmlNotationPtr;
117struct _xmlNotation {
Daniel Veillard9e7160d2001-03-18 23:17:47 +0000118 const xmlChar *name; /* Notation name */
Owen Taylor3473f882001-02-23 17:55:21 +0000119 const xmlChar *PublicID; /* Public identifier, if any */
120 const xmlChar *SystemID; /* System identifier, if any */
121};
122
Daniel Veillardbed7b052001-05-19 14:59:49 +0000123/**
124 * xmlAttributeType:
125 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000126 * A DTD Attribute type definition.
Owen Taylor3473f882001-02-23 17:55:21 +0000127 */
128
129typedef enum {
130 XML_ATTRIBUTE_CDATA = 1,
131 XML_ATTRIBUTE_ID,
132 XML_ATTRIBUTE_IDREF ,
133 XML_ATTRIBUTE_IDREFS,
134 XML_ATTRIBUTE_ENTITY,
135 XML_ATTRIBUTE_ENTITIES,
136 XML_ATTRIBUTE_NMTOKEN,
137 XML_ATTRIBUTE_NMTOKENS,
138 XML_ATTRIBUTE_ENUMERATION,
139 XML_ATTRIBUTE_NOTATION
140} xmlAttributeType;
141
Daniel Veillardbed7b052001-05-19 14:59:49 +0000142/**
143 * xmlAttributeDefault:
144 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000145 * A DTD Attribute default definition.
Daniel Veillardbed7b052001-05-19 14:59:49 +0000146 */
147
Owen Taylor3473f882001-02-23 17:55:21 +0000148typedef enum {
149 XML_ATTRIBUTE_NONE = 1,
150 XML_ATTRIBUTE_REQUIRED,
151 XML_ATTRIBUTE_IMPLIED,
152 XML_ATTRIBUTE_FIXED
153} xmlAttributeDefault;
154
Daniel Veillardbed7b052001-05-19 14:59:49 +0000155/**
156 * xmlEnumeration:
157 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000158 * List structure used when there is an enumeration in DTDs.
Daniel Veillardbed7b052001-05-19 14:59:49 +0000159 */
160
Owen Taylor3473f882001-02-23 17:55:21 +0000161typedef struct _xmlEnumeration xmlEnumeration;
162typedef xmlEnumeration *xmlEnumerationPtr;
163struct _xmlEnumeration {
164 struct _xmlEnumeration *next; /* next one */
165 const xmlChar *name; /* Enumeration name */
166};
167
Daniel Veillardbed7b052001-05-19 14:59:49 +0000168/**
169 * xmlAttribute:
170 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000171 * An Attribute declaration in a DTD.
Daniel Veillardbed7b052001-05-19 14:59:49 +0000172 */
173
Owen Taylor3473f882001-02-23 17:55:21 +0000174typedef struct _xmlAttribute xmlAttribute;
175typedef xmlAttribute *xmlAttributePtr;
176struct _xmlAttribute {
Daniel Veillard0ec98632001-11-14 15:04:32 +0000177 void *_private; /* application data */
Owen Taylor3473f882001-02-23 17:55:21 +0000178 xmlElementType type; /* XML_ATTRIBUTE_DECL, must be second ! */
179 const xmlChar *name; /* Attribute name */
180 struct _xmlNode *children; /* NULL */
181 struct _xmlNode *last; /* NULL */
182 struct _xmlDtd *parent; /* -> DTD */
183 struct _xmlNode *next; /* next sibling link */
184 struct _xmlNode *prev; /* previous sibling link */
185 struct _xmlDoc *doc; /* the containing document */
186
187 struct _xmlAttribute *nexth; /* next in hash table */
188 xmlAttributeType atype; /* The attribute type */
189 xmlAttributeDefault def; /* the default */
190 const xmlChar *defaultValue; /* or the default value */
191 xmlEnumerationPtr tree; /* or the enumeration tree if any */
192 const xmlChar *prefix; /* the namespace prefix if any */
193 const xmlChar *elem; /* Element holding the attribute */
194};
195
Daniel Veillardbed7b052001-05-19 14:59:49 +0000196/**
197 * xmlElementContentType:
198 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000199 * Possible definitions of element content types.
Owen Taylor3473f882001-02-23 17:55:21 +0000200 */
201typedef enum {
202 XML_ELEMENT_CONTENT_PCDATA = 1,
203 XML_ELEMENT_CONTENT_ELEMENT,
204 XML_ELEMENT_CONTENT_SEQ,
205 XML_ELEMENT_CONTENT_OR
206} xmlElementContentType;
207
Daniel Veillardbed7b052001-05-19 14:59:49 +0000208/**
209 * xmlElementContentOccur:
210 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000211 * Possible definitions of element content occurrences.
Daniel Veillardbed7b052001-05-19 14:59:49 +0000212 */
Owen Taylor3473f882001-02-23 17:55:21 +0000213typedef enum {
214 XML_ELEMENT_CONTENT_ONCE = 1,
215 XML_ELEMENT_CONTENT_OPT,
216 XML_ELEMENT_CONTENT_MULT,
217 XML_ELEMENT_CONTENT_PLUS
218} xmlElementContentOccur;
219
Daniel Veillardbed7b052001-05-19 14:59:49 +0000220/**
221 * xmlElementContent:
222 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000223 * An XML Element content as stored after parsing an element definition
Daniel Veillardbed7b052001-05-19 14:59:49 +0000224 * in a DTD.
225 */
226
Owen Taylor3473f882001-02-23 17:55:21 +0000227typedef struct _xmlElementContent xmlElementContent;
228typedef xmlElementContent *xmlElementContentPtr;
229struct _xmlElementContent {
230 xmlElementContentType type; /* PCDATA, ELEMENT, SEQ or OR */
231 xmlElementContentOccur ocur; /* ONCE, OPT, MULT or PLUS */
Daniel Veillardbe480fb2001-11-08 23:36:42 +0000232 const xmlChar *name; /* Element name */
Owen Taylor3473f882001-02-23 17:55:21 +0000233 struct _xmlElementContent *c1; /* first child */
234 struct _xmlElementContent *c2; /* second child */
Daniel Veillarddab4cb32001-04-20 13:03:48 +0000235 struct _xmlElementContent *parent; /* parent */
Daniel Veillarda9b66d02002-12-11 14:23:49 +0000236 const xmlChar *prefix; /* Namespace prefix */
Owen Taylor3473f882001-02-23 17:55:21 +0000237};
238
Daniel Veillardbed7b052001-05-19 14:59:49 +0000239/**
240 * xmlElementTypeVal:
241 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000242 * The different possibilities for an element content type.
Daniel Veillardbed7b052001-05-19 14:59:49 +0000243 */
244
Owen Taylor3473f882001-02-23 17:55:21 +0000245typedef enum {
Daniel Veillarda10efa82001-04-18 13:09:01 +0000246 XML_ELEMENT_TYPE_UNDEFINED = 0,
Owen Taylor3473f882001-02-23 17:55:21 +0000247 XML_ELEMENT_TYPE_EMPTY = 1,
248 XML_ELEMENT_TYPE_ANY,
249 XML_ELEMENT_TYPE_MIXED,
250 XML_ELEMENT_TYPE_ELEMENT
251} xmlElementTypeVal;
252
Daniel Veillardaeb258a2002-09-13 14:48:12 +0000253
254#ifdef __cplusplus
255}
256#endif
257#include <libxml/xmlregexp.h>
258#ifdef __cplusplus
259extern "C" {
260#endif
261
Daniel Veillardbed7b052001-05-19 14:59:49 +0000262/**
263 * xmlElement:
264 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000265 * An XML Element declaration from a DTD.
Daniel Veillardbed7b052001-05-19 14:59:49 +0000266 */
267
Owen Taylor3473f882001-02-23 17:55:21 +0000268typedef struct _xmlElement xmlElement;
269typedef xmlElement *xmlElementPtr;
270struct _xmlElement {
Daniel Veillard0ec98632001-11-14 15:04:32 +0000271 void *_private; /* application data */
Owen Taylor3473f882001-02-23 17:55:21 +0000272 xmlElementType type; /* XML_ELEMENT_DECL, must be second ! */
273 const xmlChar *name; /* Element name */
274 struct _xmlNode *children; /* NULL */
275 struct _xmlNode *last; /* NULL */
276 struct _xmlDtd *parent; /* -> DTD */
277 struct _xmlNode *next; /* next sibling link */
278 struct _xmlNode *prev; /* previous sibling link */
279 struct _xmlDoc *doc; /* the containing document */
280
281 xmlElementTypeVal etype; /* The type */
282 xmlElementContentPtr content; /* the allowed element content */
283 xmlAttributePtr attributes; /* List of the declared attributes */
284 const xmlChar *prefix; /* the namespace prefix if any */
Daniel Veillardaeb258a2002-09-13 14:48:12 +0000285#ifdef LIBXML_REGEXP_ENABLED
286 xmlRegexpPtr contModel; /* the validating regexp */
287#else
288 void *contModel;
289#endif
Owen Taylor3473f882001-02-23 17:55:21 +0000290};
291
Daniel Veillardbed7b052001-05-19 14:59:49 +0000292
Daniel Veillard5e2dace2001-07-18 19:30:27 +0000293/**
294 * XML_LOCAL_NAMESPACE:
295 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000296 * A namespace declaration node.
Daniel Veillard5e2dace2001-07-18 19:30:27 +0000297 */
Daniel Veillardbed7b052001-05-19 14:59:49 +0000298#define XML_LOCAL_NAMESPACE XML_NAMESPACE_DECL
299typedef xmlElementType xmlNsType;
300
301/**
302 * xmlNs:
303 *
Owen Taylor3473f882001-02-23 17:55:21 +0000304 * An XML namespace.
305 * Note that prefix == NULL is valid, it defines the default namespace
Daniel Veillardd1640922001-12-17 15:30:10 +0000306 * within the subtree (until overridden).
Owen Taylor3473f882001-02-23 17:55:21 +0000307 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000308 * xmlNsType is unified with xmlElementType.
Owen Taylor3473f882001-02-23 17:55:21 +0000309 */
310
Owen Taylor3473f882001-02-23 17:55:21 +0000311typedef struct _xmlNs xmlNs;
312typedef xmlNs *xmlNsPtr;
313struct _xmlNs {
314 struct _xmlNs *next; /* next Ns link for this node */
315 xmlNsType type; /* global or local */
316 const xmlChar *href; /* URL for the namespace */
317 const xmlChar *prefix; /* prefix for the namespace */
PDT 2002 Aleksey Sanin8e8a7032002-07-22 18:03:11 +0000318 void *_private; /* application data */
Owen Taylor3473f882001-02-23 17:55:21 +0000319};
320
Daniel Veillardbed7b052001-05-19 14:59:49 +0000321/**
322 * xmlDtd:
323 *
Daniel Veillardd1640922001-12-17 15:30:10 +0000324 * An XML DTD, as defined by <!DOCTYPE ... There is actually one for
Daniel Veillard61f26172002-03-12 18:46:39 +0000325 * the internal subset and for the external subset.
Owen Taylor3473f882001-02-23 17:55:21 +0000326 */
327typedef struct _xmlDtd xmlDtd;
328typedef xmlDtd *xmlDtdPtr;
329struct _xmlDtd {
Daniel Veillard0ec98632001-11-14 15:04:32 +0000330 void *_private; /* application data */
Owen Taylor3473f882001-02-23 17:55:21 +0000331 xmlElementType type; /* XML_DTD_NODE, must be second ! */
332 const xmlChar *name; /* Name of the DTD */
333 struct _xmlNode *children; /* the value of the property link */
334 struct _xmlNode *last; /* last child link */
335 struct _xmlDoc *parent; /* child->parent link */
336 struct _xmlNode *next; /* next sibling link */
337 struct _xmlNode *prev; /* previous sibling link */
338 struct _xmlDoc *doc; /* the containing document */
339
340 /* End of common part */
341 void *notations; /* Hash table for notations if any */
342 void *elements; /* Hash table for elements if any */
343 void *attributes; /* Hash table for attributes if any */
344 void *entities; /* Hash table for entities if any */
345 const xmlChar *ExternalID; /* External identifier for PUBLIC DTD */
346 const xmlChar *SystemID; /* URI for a SYSTEM or PUBLIC DTD */
347 void *pentities; /* Hash table for param entities if any */
348};
349
Daniel Veillardbed7b052001-05-19 14:59:49 +0000350/**
351 * xmlAttr:
352 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000353 * An attribute on an XML node.
Owen Taylor3473f882001-02-23 17:55:21 +0000354 */
355typedef struct _xmlAttr xmlAttr;
356typedef xmlAttr *xmlAttrPtr;
357struct _xmlAttr {
Daniel Veillard0ec98632001-11-14 15:04:32 +0000358 void *_private; /* application data */
Owen Taylor3473f882001-02-23 17:55:21 +0000359 xmlElementType type; /* XML_ATTRIBUTE_NODE, must be second ! */
360 const xmlChar *name; /* the name of the property */
361 struct _xmlNode *children; /* the value of the property */
362 struct _xmlNode *last; /* NULL */
363 struct _xmlNode *parent; /* child->parent link */
364 struct _xmlAttr *next; /* next sibling link */
365 struct _xmlAttr *prev; /* previous sibling link */
366 struct _xmlDoc *doc; /* the containing document */
367 xmlNs *ns; /* pointer to the associated namespace */
368 xmlAttributeType atype; /* the attribute type if validating */
Daniel Veillardd8850402003-10-10 14:24:12 +0000369 void *psvi; /* for type/PSVI informations */
Owen Taylor3473f882001-02-23 17:55:21 +0000370};
371
Daniel Veillardbed7b052001-05-19 14:59:49 +0000372/**
373 * xmlID:
374 *
Owen Taylor3473f882001-02-23 17:55:21 +0000375 * An XML ID instance.
376 */
377
378typedef struct _xmlID xmlID;
379typedef xmlID *xmlIDPtr;
380struct _xmlID {
381 struct _xmlID *next; /* next ID */
382 const xmlChar *value; /* The ID name */
Daniel Veillardd1640922001-12-17 15:30:10 +0000383 xmlAttrPtr attr; /* The attribute holding it */
Daniel Veillardea7751d2002-12-20 00:16:24 +0000384 const xmlChar *name; /* The attribute if attr is not available */
385 int lineno; /* The line number if attr is not available */
Daniel Veillard8d7b5c72003-11-15 18:24:36 +0000386 struct _xmlDoc *doc; /* The document holding the ID */
Owen Taylor3473f882001-02-23 17:55:21 +0000387};
388
Daniel Veillardbed7b052001-05-19 14:59:49 +0000389/**
390 * xmlRef:
391 *
Owen Taylor3473f882001-02-23 17:55:21 +0000392 * An XML IDREF instance.
393 */
394
395typedef struct _xmlRef xmlRef;
396typedef xmlRef *xmlRefPtr;
397struct _xmlRef {
398 struct _xmlRef *next; /* next Ref */
399 const xmlChar *value; /* The Ref name */
Daniel Veillardd1640922001-12-17 15:30:10 +0000400 xmlAttrPtr attr; /* The attribute holding it */
Daniel Veillardea7751d2002-12-20 00:16:24 +0000401 const xmlChar *name; /* The attribute if attr is not available */
402 int lineno; /* The line number if attr is not available */
Owen Taylor3473f882001-02-23 17:55:21 +0000403};
404
Daniel Veillardbed7b052001-05-19 14:59:49 +0000405/**
406 * xmlBufferAllocationScheme:
407 *
408 * A buffer allocation scheme can be defined to either match exactly the
Daniel Veillard61f26172002-03-12 18:46:39 +0000409 * need or double it's allocated size each time it is found too small.
Owen Taylor3473f882001-02-23 17:55:21 +0000410 */
411
412typedef enum {
413 XML_BUFFER_ALLOC_DOUBLEIT,
Daniel Veillard53350552003-09-18 13:35:51 +0000414 XML_BUFFER_ALLOC_EXACT,
415 XML_BUFFER_ALLOC_IMMUTABLE
Owen Taylor3473f882001-02-23 17:55:21 +0000416} xmlBufferAllocationScheme;
417
Daniel Veillardbed7b052001-05-19 14:59:49 +0000418/**
419 * xmlBuffer:
420 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000421 * A buffer structure.
Daniel Veillardbed7b052001-05-19 14:59:49 +0000422 */
Owen Taylor3473f882001-02-23 17:55:21 +0000423typedef struct _xmlBuffer xmlBuffer;
424typedef xmlBuffer *xmlBufferPtr;
425struct _xmlBuffer {
426 xmlChar *content; /* The buffer content UTF8 */
427 unsigned int use; /* The buffer size used */
428 unsigned int size; /* The buffer size */
429 xmlBufferAllocationScheme alloc; /* The realloc method */
430};
431
Daniel Veillardf69bb4b2001-05-19 13:24:56 +0000432/**
433 * xmlNode:
434 *
Owen Taylor3473f882001-02-23 17:55:21 +0000435 * A node in an XML tree.
436 */
437typedef struct _xmlNode xmlNode;
438typedef xmlNode *xmlNodePtr;
439struct _xmlNode {
Daniel Veillard0ec98632001-11-14 15:04:32 +0000440 void *_private; /* application data */
Owen Taylor3473f882001-02-23 17:55:21 +0000441 xmlElementType type; /* type number, must be second ! */
442 const xmlChar *name; /* the name of the node, or the entity */
443 struct _xmlNode *children; /* parent->childs link */
444 struct _xmlNode *last; /* last child link */
445 struct _xmlNode *parent; /* child->parent link */
446 struct _xmlNode *next; /* next sibling link */
447 struct _xmlNode *prev; /* previous sibling link */
448 struct _xmlDoc *doc; /* the containing document */
Daniel Veillardcbaf3992001-12-31 16:16:02 +0000449
450 /* End of common part */
Owen Taylor3473f882001-02-23 17:55:21 +0000451 xmlNs *ns; /* pointer to the associated namespace */
Owen Taylor3473f882001-02-23 17:55:21 +0000452 xmlChar *content; /* the content */
Owen Taylor3473f882001-02-23 17:55:21 +0000453 struct _xmlAttr *properties;/* properties list */
454 xmlNs *nsDef; /* namespace definitions on this node */
Daniel Veillardd8850402003-10-10 14:24:12 +0000455 void *psvi; /* for type/PSVI informations */
Daniel Veillard1d211e22003-10-20 22:32:39 +0000456 unsigned short line; /* line number */
457 unsigned short extra; /* extra data for XPath/XSLT */
Owen Taylor3473f882001-02-23 17:55:21 +0000458};
459
Daniel Veillard5e2dace2001-07-18 19:30:27 +0000460/**
461 * XML_GET_CONTENT:
462 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000463 * Macro to extract the content pointer of a node.
Daniel Veillard5e2dace2001-07-18 19:30:27 +0000464 */
465#define XML_GET_CONTENT(n) \
Daniel Veillard566d4df2001-11-22 13:00:53 +0000466 ((n)->type == XML_ELEMENT_NODE ? NULL : (n)->content)
Daniel Veillard5e2dace2001-07-18 19:30:27 +0000467
468/**
469 * XML_GET_LINE:
470 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000471 * Macro to extract the line number of an element node.
Daniel Veillard5e2dace2001-07-18 19:30:27 +0000472 */
473#define XML_GET_LINE(n) \
Daniel Veillardc76440f2003-11-26 20:39:47 +0000474 (xmlGetLineNo(n))
Daniel Veillard7db37732001-07-12 01:20:08 +0000475
Daniel Veillard40412cd2003-09-03 13:28:32 +0000476
Daniel Veillardbed7b052001-05-19 14:59:49 +0000477/**
478 * xmlDoc:
479 *
Owen Taylor3473f882001-02-23 17:55:21 +0000480 * An XML document.
481 */
482typedef struct _xmlDoc xmlDoc;
483typedef xmlDoc *xmlDocPtr;
484struct _xmlDoc {
Daniel Veillard0ec98632001-11-14 15:04:32 +0000485 void *_private; /* application data */
Owen Taylor3473f882001-02-23 17:55:21 +0000486 xmlElementType type; /* XML_DOCUMENT_NODE, must be second ! */
487 char *name; /* name/filename/URI of the document */
488 struct _xmlNode *children; /* the document tree */
489 struct _xmlNode *last; /* last child link */
490 struct _xmlNode *parent; /* child->parent link */
491 struct _xmlNode *next; /* next sibling link */
492 struct _xmlNode *prev; /* previous sibling link */
493 struct _xmlDoc *doc; /* autoreference to itself */
494
495 /* End of common part */
496 int compression;/* level of zlib compression */
497 int standalone; /* standalone document (no external refs) */
498 struct _xmlDtd *intSubset; /* the document internal subset */
499 struct _xmlDtd *extSubset; /* the document external subset */
500 struct _xmlNs *oldNs; /* Global namespace, the old way */
501 const xmlChar *version; /* the XML version string */
502 const xmlChar *encoding; /* external initial encoding, if any */
503 void *ids; /* Hash table for ID attributes if any */
504 void *refs; /* Hash table for IDREFs attributes if any */
505 const xmlChar *URL; /* The URI for that document */
506 int charset; /* encoding of the in-memory content
507 actually an xmlCharEncoding */
Daniel Veillard40412cd2003-09-03 13:28:32 +0000508 struct _xmlDict *dict; /* dict used to allocate names or NULL */
Daniel Veillardd8850402003-10-10 14:24:12 +0000509 void *psvi; /* for type/PSVI informations */
Owen Taylor3473f882001-02-23 17:55:21 +0000510};
511
Daniel Veillardbed7b052001-05-19 14:59:49 +0000512/**
513 * xmlChildrenNode:
514 *
MST 2003 John Flecka0e7e932003-12-19 03:13:47 +0000515 * Macro for compatibility naming layer with libxml1. Maps
516 * to "children."
Owen Taylor3473f882001-02-23 17:55:21 +0000517 */
518#ifndef xmlChildrenNode
519#define xmlChildrenNode children
Daniel Veillardbed7b052001-05-19 14:59:49 +0000520#endif
521
522/**
523 * xmlRootNode:
524 *
MST 2003 John Flecka0e7e932003-12-19 03:13:47 +0000525 * Macro for compatibility naming layer with libxml1. Maps
526 * to "children".
Daniel Veillardbed7b052001-05-19 14:59:49 +0000527 */
528#ifndef xmlRootNode
Owen Taylor3473f882001-02-23 17:55:21 +0000529#define xmlRootNode children
530#endif
531
532/*
533 * Variables.
534 */
Owen Taylor3473f882001-02-23 17:55:21 +0000535
Daniel Veillardc00cda82003-04-07 10:22:39 +0000536/*
537 * Some helper functions
538 */
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000539XMLPUBFUN int XMLCALL
540 xmlValidateNCName (const xmlChar *value,
Daniel Veillardc00cda82003-04-07 10:22:39 +0000541 int space);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000542XMLPUBFUN int XMLCALL
543 xmlValidateQName (const xmlChar *value,
Daniel Veillardc00cda82003-04-07 10:22:39 +0000544 int space);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000545XMLPUBFUN int XMLCALL
546 xmlValidateName (const xmlChar *value,
Daniel Veillardc00cda82003-04-07 10:22:39 +0000547 int space);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000548XMLPUBFUN int XMLCALL
549 xmlValidateNMToken (const xmlChar *value,
Daniel Veillardc00cda82003-04-07 10:22:39 +0000550 int space);
Daniel Veillardd4310742003-02-18 21:12:46 +0000551
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000552XMLPUBFUN xmlChar * XMLCALL
553 xmlBuildQName (const xmlChar *ncname,
Daniel Veillardc00cda82003-04-07 10:22:39 +0000554 const xmlChar *prefix,
555 xmlChar *memory,
556 int len);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000557XMLPUBFUN xmlChar * XMLCALL
558 xmlSplitQName2 (const xmlChar *name,
Daniel Veillardc00cda82003-04-07 10:22:39 +0000559 xmlChar **prefix);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000560XMLPUBFUN const xmlChar * XMLCALL
561 xmlSplitQName3 (const xmlChar *name,
Daniel Veillard8d73bcb2003-08-04 01:06:15 +0000562 int *len);
563
Owen Taylor3473f882001-02-23 17:55:21 +0000564/*
565 * Handling Buffers.
566 */
567
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000568XMLPUBFUN void XMLCALL
569 xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme);
570XMLPUBFUN xmlBufferAllocationScheme XMLCALL
571 xmlGetBufferAllocationScheme(void);
Daniel Veillard56a4cb82001-03-24 17:00:36 +0000572
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000573XMLPUBFUN xmlBufferPtr XMLCALL
574 xmlBufferCreate (void);
575XMLPUBFUN xmlBufferPtr XMLCALL
576 xmlBufferCreateSize (size_t size);
Daniel Veillard53350552003-09-18 13:35:51 +0000577XMLPUBFUN xmlBufferPtr XMLCALL
578 xmlBufferCreateStatic (void *mem,
579 size_t size);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000580XMLPUBFUN int XMLCALL
581 xmlBufferResize (xmlBufferPtr buf,
Daniel Veillard56a4cb82001-03-24 17:00:36 +0000582 unsigned int size);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000583XMLPUBFUN void XMLCALL
584 xmlBufferFree (xmlBufferPtr buf);
585XMLPUBFUN int XMLCALL
586 xmlBufferDump (FILE *file,
Owen Taylor3473f882001-02-23 17:55:21 +0000587 xmlBufferPtr buf);
William M. Bracka3215c72004-07-31 16:24:01 +0000588XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000589 xmlBufferAdd (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000590 const xmlChar *str,
591 int len);
William M. Bracka3215c72004-07-31 16:24:01 +0000592XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000593 xmlBufferAddHead (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000594 const xmlChar *str,
595 int len);
William M. Bracka3215c72004-07-31 16:24:01 +0000596XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000597 xmlBufferCat (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000598 const xmlChar *str);
William M. Bracka3215c72004-07-31 16:24:01 +0000599XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000600 xmlBufferCCat (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000601 const char *str);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000602XMLPUBFUN int XMLCALL
603 xmlBufferShrink (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000604 unsigned int len);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000605XMLPUBFUN int XMLCALL
606 xmlBufferGrow (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000607 unsigned int len);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000608XMLPUBFUN void XMLCALL
609 xmlBufferEmpty (xmlBufferPtr buf);
610XMLPUBFUN const xmlChar* XMLCALL
611 xmlBufferContent (const xmlBufferPtr buf);
612XMLPUBFUN void XMLCALL
613 xmlBufferSetAllocationScheme(xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000614 xmlBufferAllocationScheme scheme);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000615XMLPUBFUN int XMLCALL
616 xmlBufferLength (const xmlBufferPtr buf);
Owen Taylor3473f882001-02-23 17:55:21 +0000617
618/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000619 * Creating/freeing new structures.
Owen Taylor3473f882001-02-23 17:55:21 +0000620 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000621XMLPUBFUN xmlDtdPtr XMLCALL
622 xmlCreateIntSubset (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000623 const xmlChar *name,
624 const xmlChar *ExternalID,
625 const xmlChar *SystemID);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000626XMLPUBFUN xmlDtdPtr XMLCALL
627 xmlNewDtd (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000628 const xmlChar *name,
629 const xmlChar *ExternalID,
630 const xmlChar *SystemID);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000631XMLPUBFUN xmlDtdPtr XMLCALL
632 xmlGetIntSubset (xmlDocPtr doc);
633XMLPUBFUN void XMLCALL
634 xmlFreeDtd (xmlDtdPtr cur);
635XMLPUBFUN xmlNsPtr XMLCALL
636 xmlNewGlobalNs (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000637 const xmlChar *href,
638 const xmlChar *prefix);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000639XMLPUBFUN xmlNsPtr XMLCALL
640 xmlNewNs (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000641 const xmlChar *href,
642 const xmlChar *prefix);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000643XMLPUBFUN void XMLCALL
644 xmlFreeNs (xmlNsPtr cur);
645XMLPUBFUN void XMLCALL
646 xmlFreeNsList (xmlNsPtr cur);
647XMLPUBFUN xmlDocPtr XMLCALL
648 xmlNewDoc (const xmlChar *version);
649XMLPUBFUN void XMLCALL
650 xmlFreeDoc (xmlDocPtr cur);
651XMLPUBFUN xmlAttrPtr XMLCALL
652 xmlNewDocProp (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000653 const xmlChar *name,
654 const xmlChar *value);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000655XMLPUBFUN xmlAttrPtr XMLCALL
656 xmlNewProp (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000657 const xmlChar *name,
658 const xmlChar *value);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000659XMLPUBFUN xmlAttrPtr XMLCALL
660 xmlNewNsProp (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000661 xmlNsPtr ns,
662 const xmlChar *name,
663 const xmlChar *value);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000664XMLPUBFUN xmlAttrPtr XMLCALL
665 xmlNewNsPropEatName (xmlNodePtr node,
Daniel Veillard46de64e2002-05-29 08:21:33 +0000666 xmlNsPtr ns,
667 xmlChar *name,
668 const xmlChar *value);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000669XMLPUBFUN void XMLCALL
670 xmlFreePropList (xmlAttrPtr cur);
671XMLPUBFUN void XMLCALL
672 xmlFreeProp (xmlAttrPtr cur);
673XMLPUBFUN xmlAttrPtr XMLCALL
674 xmlCopyProp (xmlNodePtr target,
Owen Taylor3473f882001-02-23 17:55:21 +0000675 xmlAttrPtr cur);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000676XMLPUBFUN xmlAttrPtr XMLCALL
677 xmlCopyPropList (xmlNodePtr target,
Owen Taylor3473f882001-02-23 17:55:21 +0000678 xmlAttrPtr cur);
Daniel Veillard652327a2003-09-29 18:02:38 +0000679#ifdef LIBXML_TREE_ENABLED
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000680XMLPUBFUN xmlDtdPtr XMLCALL
681 xmlCopyDtd (xmlDtdPtr dtd);
682XMLPUBFUN xmlDocPtr XMLCALL
683 xmlCopyDoc (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000684 int recursive);
Daniel Veillard652327a2003-09-29 18:02:38 +0000685#endif /* LIBXML_TREE_ENABLED */
Owen Taylor3473f882001-02-23 17:55:21 +0000686
687/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000688 * Creating new nodes.
Owen Taylor3473f882001-02-23 17:55:21 +0000689 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000690XMLPUBFUN xmlNodePtr XMLCALL
691 xmlNewDocNode (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000692 xmlNsPtr ns,
693 const xmlChar *name,
694 const xmlChar *content);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000695XMLPUBFUN xmlNodePtr XMLCALL
696 xmlNewDocNodeEatName (xmlDocPtr doc,
Daniel Veillard46de64e2002-05-29 08:21:33 +0000697 xmlNsPtr ns,
698 xmlChar *name,
699 const xmlChar *content);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000700XMLPUBFUN xmlNodePtr XMLCALL
701 xmlNewDocRawNode (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000702 xmlNsPtr ns,
703 const xmlChar *name,
704 const xmlChar *content);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000705XMLPUBFUN xmlNodePtr XMLCALL
706 xmlNewNode (xmlNsPtr ns,
Owen Taylor3473f882001-02-23 17:55:21 +0000707 const xmlChar *name);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000708XMLPUBFUN xmlNodePtr XMLCALL
709 xmlNewNodeEatName (xmlNsPtr ns,
Daniel Veillard46de64e2002-05-29 08:21:33 +0000710 xmlChar *name);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000711XMLPUBFUN xmlNodePtr XMLCALL
712 xmlNewChild (xmlNodePtr parent,
Owen Taylor3473f882001-02-23 17:55:21 +0000713 xmlNsPtr ns,
714 const xmlChar *name,
715 const xmlChar *content);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000716XMLPUBFUN xmlNodePtr XMLCALL
717 xmlNewTextChild (xmlNodePtr parent,
Owen Taylor3473f882001-02-23 17:55:21 +0000718 xmlNsPtr ns,
719 const xmlChar *name,
720 const xmlChar *content);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000721XMLPUBFUN xmlNodePtr XMLCALL
722 xmlNewDocText (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000723 const xmlChar *content);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000724XMLPUBFUN xmlNodePtr XMLCALL
725 xmlNewText (const xmlChar *content);
726XMLPUBFUN xmlNodePtr XMLCALL
727 xmlNewPI (const xmlChar *name,
Owen Taylor3473f882001-02-23 17:55:21 +0000728 const xmlChar *content);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000729XMLPUBFUN xmlNodePtr XMLCALL
730 xmlNewDocTextLen (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000731 const xmlChar *content,
732 int len);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000733XMLPUBFUN xmlNodePtr XMLCALL
734 xmlNewTextLen (const xmlChar *content,
Owen Taylor3473f882001-02-23 17:55:21 +0000735 int len);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000736XMLPUBFUN xmlNodePtr XMLCALL
737 xmlNewDocComment (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000738 const xmlChar *content);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000739XMLPUBFUN xmlNodePtr XMLCALL
740 xmlNewComment (const xmlChar *content);
741XMLPUBFUN xmlNodePtr XMLCALL
742 xmlNewCDataBlock (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000743 const xmlChar *content,
744 int len);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000745XMLPUBFUN xmlNodePtr XMLCALL
746 xmlNewCharRef (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000747 const xmlChar *name);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000748XMLPUBFUN xmlNodePtr XMLCALL
749 xmlNewReference (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000750 const xmlChar *name);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000751XMLPUBFUN xmlNodePtr XMLCALL
752 xmlCopyNode (const xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000753 int recursive);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000754XMLPUBFUN xmlNodePtr XMLCALL
755 xmlDocCopyNode (const xmlNodePtr node,
Daniel Veillard82daa812001-04-12 08:55:36 +0000756 xmlDocPtr doc,
757 int recursive);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000758XMLPUBFUN xmlNodePtr XMLCALL
759 xmlCopyNodeList (const xmlNodePtr node);
Daniel Veillard652327a2003-09-29 18:02:38 +0000760#ifdef LIBXML_TREE_ENABLED
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000761XMLPUBFUN xmlNodePtr XMLCALL
762 xmlNewDocFragment (xmlDocPtr doc);
Daniel Veillard652327a2003-09-29 18:02:38 +0000763#endif /* LIBXML_TREE_ENABLED */
Owen Taylor3473f882001-02-23 17:55:21 +0000764
765/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000766 * Navigating.
Owen Taylor3473f882001-02-23 17:55:21 +0000767 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000768XMLPUBFUN long XMLCALL
769 xmlGetLineNo (xmlNodePtr node);
Daniel Veillard652327a2003-09-29 18:02:38 +0000770#ifdef LIBXML_TREE_ENABLED
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000771XMLPUBFUN xmlChar * XMLCALL
772 xmlGetNodePath (xmlNodePtr node);
Daniel Veillard652327a2003-09-29 18:02:38 +0000773#endif /* LIBXML_TREE_ENABLED */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000774XMLPUBFUN xmlNodePtr XMLCALL
775 xmlDocGetRootElement (xmlDocPtr doc);
776XMLPUBFUN xmlNodePtr XMLCALL
777 xmlGetLastChild (xmlNodePtr parent);
778XMLPUBFUN int XMLCALL
779 xmlNodeIsText (xmlNodePtr node);
780XMLPUBFUN int XMLCALL
781 xmlIsBlankNode (xmlNodePtr node);
Owen Taylor3473f882001-02-23 17:55:21 +0000782
Daniel Veillard652327a2003-09-29 18:02:38 +0000783#ifdef LIBXML_TREE_ENABLED
Owen Taylor3473f882001-02-23 17:55:21 +0000784/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000785 * Changing the structure.
Owen Taylor3473f882001-02-23 17:55:21 +0000786 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000787XMLPUBFUN xmlNodePtr XMLCALL
788 xmlDocSetRootElement (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000789 xmlNodePtr root);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000790XMLPUBFUN void XMLCALL
791 xmlNodeSetName (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +0000792 const xmlChar *name);
Daniel Veillard652327a2003-09-29 18:02:38 +0000793#endif /* LIBXML_TREE_ENABLED */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000794XMLPUBFUN xmlNodePtr XMLCALL
795 xmlAddChild (xmlNodePtr parent,
Owen Taylor3473f882001-02-23 17:55:21 +0000796 xmlNodePtr cur);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000797XMLPUBFUN xmlNodePtr XMLCALL
798 xmlAddChildList (xmlNodePtr parent,
Owen Taylor3473f882001-02-23 17:55:21 +0000799 xmlNodePtr cur);
Daniel Veillard652327a2003-09-29 18:02:38 +0000800#ifdef LIBXML_TREE_ENABLED
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000801XMLPUBFUN xmlNodePtr XMLCALL
802 xmlReplaceNode (xmlNodePtr old,
Owen Taylor3473f882001-02-23 17:55:21 +0000803 xmlNodePtr cur);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000804XMLPUBFUN xmlNodePtr XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000805 xmlAddPrevSibling (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +0000806 xmlNodePtr elem);
Daniel Veillard652327a2003-09-29 18:02:38 +0000807#endif /* LIBXML_TREE_ENABLED */
808XMLPUBFUN xmlNodePtr XMLCALL
809 xmlAddSibling (xmlNodePtr cur,
810 xmlNodePtr elem);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000811XMLPUBFUN xmlNodePtr XMLCALL
812 xmlAddNextSibling (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +0000813 xmlNodePtr elem);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000814XMLPUBFUN void XMLCALL
815 xmlUnlinkNode (xmlNodePtr cur);
816XMLPUBFUN xmlNodePtr XMLCALL
817 xmlTextMerge (xmlNodePtr first,
Owen Taylor3473f882001-02-23 17:55:21 +0000818 xmlNodePtr second);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000819XMLPUBFUN int XMLCALL
820 xmlTextConcat (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000821 const xmlChar *content,
822 int len);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000823XMLPUBFUN void XMLCALL
824 xmlFreeNodeList (xmlNodePtr cur);
825XMLPUBFUN void XMLCALL
826 xmlFreeNode (xmlNodePtr cur);
827XMLPUBFUN void XMLCALL
828 xmlSetTreeDoc (xmlNodePtr tree,
Owen Taylor3473f882001-02-23 17:55:21 +0000829 xmlDocPtr doc);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000830XMLPUBFUN void XMLCALL
831 xmlSetListDoc (xmlNodePtr list,
Owen Taylor3473f882001-02-23 17:55:21 +0000832 xmlDocPtr doc);
Owen Taylor3473f882001-02-23 17:55:21 +0000833/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000834 * Namespaces.
Owen Taylor3473f882001-02-23 17:55:21 +0000835 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000836XMLPUBFUN xmlNsPtr XMLCALL
837 xmlSearchNs (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000838 xmlNodePtr node,
839 const xmlChar *nameSpace);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000840XMLPUBFUN xmlNsPtr XMLCALL
841 xmlSearchNsByHref (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000842 xmlNodePtr node,
843 const xmlChar *href);
Daniel Veillard652327a2003-09-29 18:02:38 +0000844#ifdef LIBXML_TREE_ENABLED
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000845XMLPUBFUN xmlNsPtr * XMLCALL
846 xmlGetNsList (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000847 xmlNodePtr node);
Daniel Veillard652327a2003-09-29 18:02:38 +0000848#endif /* LIBXML_TREE_ENABLED */
849
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000850XMLPUBFUN void XMLCALL
851 xmlSetNs (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000852 xmlNsPtr ns);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000853XMLPUBFUN xmlNsPtr XMLCALL
854 xmlCopyNamespace (xmlNsPtr cur);
855XMLPUBFUN xmlNsPtr XMLCALL
856 xmlCopyNamespaceList (xmlNsPtr cur);
Owen Taylor3473f882001-02-23 17:55:21 +0000857
858/*
859 * Changing the content.
860 */
Daniel Veillard652327a2003-09-29 18:02:38 +0000861#ifdef LIBXML_TREE_ENABLED
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000862XMLPUBFUN xmlAttrPtr XMLCALL
863 xmlSetProp (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000864 const xmlChar *name,
865 const xmlChar *value);
Daniel Veillard652327a2003-09-29 18:02:38 +0000866#endif /* LIBXML_TREE_ENABLED */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000867XMLPUBFUN xmlChar * XMLCALL
868 xmlGetNoNsProp (xmlNodePtr node,
Daniel Veillard71531f32003-02-05 13:19:53 +0000869 const xmlChar *name);
Daniel Veillard652327a2003-09-29 18:02:38 +0000870XMLPUBFUN xmlChar * XMLCALL
871 xmlGetProp (xmlNodePtr node,
872 const xmlChar *name);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000873XMLPUBFUN xmlAttrPtr XMLCALL
874 xmlHasProp (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000875 const xmlChar *name);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000876XMLPUBFUN xmlAttrPtr XMLCALL
877 xmlHasNsProp (xmlNodePtr node,
Daniel Veillarde95e2392001-06-06 10:46:28 +0000878 const xmlChar *name,
Daniel Veillardca2366a2001-06-11 12:09:01 +0000879 const xmlChar *nameSpace);
Daniel Veillard652327a2003-09-29 18:02:38 +0000880#ifdef LIBXML_TREE_ENABLED
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000881XMLPUBFUN xmlAttrPtr XMLCALL
882 xmlSetNsProp (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000883 xmlNsPtr ns,
884 const xmlChar *name,
885 const xmlChar *value);
Daniel Veillard652327a2003-09-29 18:02:38 +0000886#endif /* LIBXML_TREE_ENABLED */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000887XMLPUBFUN xmlChar * XMLCALL
888 xmlGetNsProp (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000889 const xmlChar *name,
890 const xmlChar *nameSpace);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000891XMLPUBFUN xmlNodePtr XMLCALL
892 xmlStringGetNodeList (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000893 const xmlChar *value);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000894XMLPUBFUN xmlNodePtr XMLCALL
895 xmlStringLenGetNodeList (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000896 const xmlChar *value,
897 int len);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000898XMLPUBFUN xmlChar * XMLCALL
899 xmlNodeListGetString (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000900 xmlNodePtr list,
901 int inLine);
Daniel Veillard652327a2003-09-29 18:02:38 +0000902#ifdef LIBXML_TREE_ENABLED
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000903XMLPUBFUN xmlChar * XMLCALL
904 xmlNodeListGetRawString (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000905 xmlNodePtr list,
906 int inLine);
Daniel Veillard652327a2003-09-29 18:02:38 +0000907#endif /* LIBXML_TREE_ENABLED */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000908XMLPUBFUN void XMLCALL
909 xmlNodeSetContent (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +0000910 const xmlChar *content);
Daniel Veillard652327a2003-09-29 18:02:38 +0000911#ifdef LIBXML_TREE_ENABLED
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000912XMLPUBFUN void XMLCALL
913 xmlNodeSetContentLen (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +0000914 const xmlChar *content,
915 int len);
Daniel Veillard652327a2003-09-29 18:02:38 +0000916#endif /* LIBXML_TREE_ENABLED */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000917XMLPUBFUN void XMLCALL
918 xmlNodeAddContent (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +0000919 const xmlChar *content);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000920XMLPUBFUN void XMLCALL
921 xmlNodeAddContentLen (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +0000922 const xmlChar *content,
923 int len);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000924XMLPUBFUN xmlChar * XMLCALL
925 xmlNodeGetContent (xmlNodePtr cur);
Daniel Veillard78697292003-10-19 20:44:43 +0000926XMLPUBFUN int XMLCALL
927 xmlNodeBufGetContent (xmlBufferPtr buffer,
928 xmlNodePtr cur);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000929XMLPUBFUN xmlChar * XMLCALL
930 xmlNodeGetLang (xmlNodePtr cur);
Daniel Veillard652327a2003-09-29 18:02:38 +0000931XMLPUBFUN int XMLCALL
932 xmlNodeGetSpacePreserve (xmlNodePtr cur);
933#ifdef LIBXML_TREE_ENABLED
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000934XMLPUBFUN void XMLCALL
935 xmlNodeSetLang (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +0000936 const xmlChar *lang);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000937XMLPUBFUN void XMLCALL
938 xmlNodeSetSpacePreserve (xmlNodePtr cur,
Daniel Veillardd1640922001-12-17 15:30:10 +0000939 int val);
Daniel Veillard652327a2003-09-29 18:02:38 +0000940#endif /* LIBXML_TREE_ENABLED */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000941XMLPUBFUN xmlChar * XMLCALL
942 xmlNodeGetBase (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000943 xmlNodePtr cur);
Daniel Veillard652327a2003-09-29 18:02:38 +0000944#ifdef LIBXML_TREE_ENABLED
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000945XMLPUBFUN void XMLCALL
946 xmlNodeSetBase (xmlNodePtr cur,
Daniel Veillardf85ce8e2003-09-22 10:24:45 +0000947 const xmlChar *uri);
Owen Taylor3473f882001-02-23 17:55:21 +0000948
949/*
950 * Removing content.
951 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000952XMLPUBFUN int XMLCALL
953 xmlRemoveProp (xmlAttrPtr cur);
954XMLPUBFUN int XMLCALL
955 xmlUnsetProp (xmlNodePtr node,
Daniel Veillard9403a042001-05-28 11:00:53 +0000956 const xmlChar *name);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000957XMLPUBFUN int XMLCALL
958 xmlUnsetNsProp (xmlNodePtr node,
Daniel Veillard9403a042001-05-28 11:00:53 +0000959 xmlNsPtr ns,
960 const xmlChar *name);
Daniel Veillard652327a2003-09-29 18:02:38 +0000961#endif /* LIBXML_TREE_ENABLED */
Owen Taylor3473f882001-02-23 17:55:21 +0000962
963/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000964 * Internal, don't use.
Owen Taylor3473f882001-02-23 17:55:21 +0000965 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000966XMLPUBFUN void XMLCALL
967 xmlBufferWriteCHAR (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000968 const xmlChar *string);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000969XMLPUBFUN void XMLCALL
970 xmlBufferWriteChar (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000971 const char *string);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000972XMLPUBFUN void XMLCALL
973 xmlBufferWriteQuotedString(xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000974 const xmlChar *string);
975
William M. Bracka9c612c2004-02-01 10:04:05 +0000976XMLPUBFUN void xmlAttrSerializeTxtContent(xmlBufferPtr buf,
977 xmlDocPtr doc,
978 xmlAttrPtr attr,
979 const xmlChar *string);
980
Owen Taylor3473f882001-02-23 17:55:21 +0000981/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000982 * Namespace handling.
Owen Taylor3473f882001-02-23 17:55:21 +0000983 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000984XMLPUBFUN int XMLCALL
985 xmlReconciliateNs (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000986 xmlNodePtr tree);
987
Daniel Veillarda9cce9c2003-09-29 13:20:24 +0000988#ifdef LIBXML_OUTPUT_ENABLED
Owen Taylor3473f882001-02-23 17:55:21 +0000989/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000990 * Saving.
Owen Taylor3473f882001-02-23 17:55:21 +0000991 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000992XMLPUBFUN void XMLCALL
993 xmlDocDumpFormatMemory (xmlDocPtr cur,
Daniel Veillard963d2ae2002-01-20 22:08:18 +0000994 xmlChar **mem,
Owen Taylor3473f882001-02-23 17:55:21 +0000995 int *size,
996 int format);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000997XMLPUBFUN void XMLCALL
998 xmlDocDumpMemory (xmlDocPtr cur,
Daniel Veillard963d2ae2002-01-20 22:08:18 +0000999 xmlChar **mem,
Owen Taylor3473f882001-02-23 17:55:21 +00001000 int *size);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001001XMLPUBFUN void XMLCALL
1002 xmlDocDumpMemoryEnc (xmlDocPtr out_doc,
Owen Taylor3473f882001-02-23 17:55:21 +00001003 xmlChar **doc_txt_ptr,
1004 int * doc_txt_len,
1005 const char *txt_encoding);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001006XMLPUBFUN void XMLCALL
1007 xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc,
Owen Taylor3473f882001-02-23 17:55:21 +00001008 xmlChar **doc_txt_ptr,
1009 int * doc_txt_len,
1010 const char *txt_encoding,
1011 int format);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001012XMLPUBFUN int XMLCALL
1013 xmlDocFormatDump (FILE *f,
Daniel Veillard9e412302002-06-10 15:59:44 +00001014 xmlDocPtr cur,
1015 int format);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001016XMLPUBFUN int XMLCALL
1017 xmlDocDump (FILE *f,
Owen Taylor3473f882001-02-23 17:55:21 +00001018 xmlDocPtr cur);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001019XMLPUBFUN void XMLCALL
1020 xmlElemDump (FILE *f,
Owen Taylor3473f882001-02-23 17:55:21 +00001021 xmlDocPtr doc,
1022 xmlNodePtr cur);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001023XMLPUBFUN int XMLCALL
1024 xmlSaveFile (const char *filename,
Owen Taylor3473f882001-02-23 17:55:21 +00001025 xmlDocPtr cur);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001026XMLPUBFUN int XMLCALL
1027 xmlSaveFormatFile (const char *filename,
Daniel Veillard67fee942001-04-26 18:59:03 +00001028 xmlDocPtr cur,
1029 int format);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001030XMLPUBFUN int XMLCALL
1031 xmlNodeDump (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +00001032 xmlDocPtr doc,
1033 xmlNodePtr cur,
1034 int level,
1035 int format);
1036
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001037XMLPUBFUN int XMLCALL
1038 xmlSaveFileTo (xmlOutputBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +00001039 xmlDocPtr cur,
1040 const char *encoding);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001041XMLPUBFUN int XMLCALL
1042 xmlSaveFormatFileTo (xmlOutputBufferPtr buf,
CET 2001 Daniel Veillard5a37bde2001-11-01 14:31:22 +00001043 xmlDocPtr cur,
1044 const char *encoding,
1045 int format);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001046XMLPUBFUN void XMLCALL
1047 xmlNodeDumpOutput (xmlOutputBufferPtr buf,
CET 2001 Daniel Veillard5a37bde2001-11-01 14:31:22 +00001048 xmlDocPtr doc,
1049 xmlNodePtr cur,
1050 int level,
1051 int format,
1052 const char *encoding);
Owen Taylor3473f882001-02-23 17:55:21 +00001053
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001054XMLPUBFUN int XMLCALL
1055 xmlSaveFormatFileEnc (const char *filename,
Daniel Veillardd1640922001-12-17 15:30:10 +00001056 xmlDocPtr cur,
1057 const char *encoding,
1058 int format);
Daniel Veillardf012a642001-07-23 19:10:52 +00001059
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001060XMLPUBFUN int XMLCALL
1061 xmlSaveFileEnc (const char *filename,
Owen Taylor3473f882001-02-23 17:55:21 +00001062 xmlDocPtr cur,
1063 const char *encoding);
1064
Daniel Veillarda9cce9c2003-09-29 13:20:24 +00001065#endif /* LIBXML_OUTPUT_ENABLED */
Owen Taylor3473f882001-02-23 17:55:21 +00001066/*
Daniel Veillardd5c2f922002-11-21 14:10:52 +00001067 * XHTML
1068 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001069XMLPUBFUN int XMLCALL
1070 xmlIsXHTML (const xmlChar *systemID,
Daniel Veillardd5c2f922002-11-21 14:10:52 +00001071 const xmlChar *publicID);
1072
1073/*
Daniel Veillard61f26172002-03-12 18:46:39 +00001074 * Compression.
Owen Taylor3473f882001-02-23 17:55:21 +00001075 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001076XMLPUBFUN int XMLCALL
1077 xmlGetDocCompressMode (xmlDocPtr doc);
1078XMLPUBFUN void XMLCALL
1079 xmlSetDocCompressMode (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +00001080 int mode);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001081XMLPUBFUN int XMLCALL
1082 xmlGetCompressMode (void);
1083XMLPUBFUN void XMLCALL
1084 xmlSetCompressMode (int mode);
Owen Taylor3473f882001-02-23 17:55:21 +00001085
1086#ifdef __cplusplus
1087}
1088#endif
Daniel Veillard6c4ffaf2002-02-11 08:54:05 +00001089#ifndef __XML_PARSER_H__
1090#include <libxml/xmlmemory.h>
1091#endif
Owen Taylor3473f882001-02-23 17:55:21 +00001092
1093#endif /* __XML_TREE_H__ */
1094