blob: 68f92f92859cb87bbd176fe333b2920529674ceb [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>
Daniel Veillardbca22f42012-07-11 16:48:47 +080016#include <limits.h>
Owen Taylor3473f882001-02-23 17:55:21 +000017#include <libxml/xmlversion.h>
William M. Bracka2e844a2004-01-06 11:52:13 +000018#include <libxml/xmlstring.h>
Igor Zlatkovic7ae91bc2002-11-08 17:18:52 +000019
Owen Taylor3473f882001-02-23 17:55:21 +000020#ifdef __cplusplus
21extern "C" {
22#endif
23
Daniel Veillard8bdb91d2001-10-31 17:52:43 +000024/*
25 * Some of the basic types pointer to structures:
26 */
27/* xmlIO.h */
28typedef struct _xmlParserInputBuffer xmlParserInputBuffer;
29typedef xmlParserInputBuffer *xmlParserInputBufferPtr;
30
CET 2001 Daniel Veillard5a37bde2001-11-01 14:31:22 +000031typedef struct _xmlOutputBuffer xmlOutputBuffer;
32typedef xmlOutputBuffer *xmlOutputBufferPtr;
33
Daniel Veillard8bdb91d2001-10-31 17:52:43 +000034/* parser.h */
35typedef struct _xmlParserInput xmlParserInput;
36typedef xmlParserInput *xmlParserInputPtr;
37
38typedef struct _xmlParserCtxt xmlParserCtxt;
39typedef xmlParserCtxt *xmlParserCtxtPtr;
40
Daniel Veillard6c4ffaf2002-02-11 08:54:05 +000041typedef struct _xmlSAXLocator xmlSAXLocator;
42typedef xmlSAXLocator *xmlSAXLocatorPtr;
43
44typedef struct _xmlSAXHandler xmlSAXHandler;
45typedef xmlSAXHandler *xmlSAXHandlerPtr;
46
47/* entities.h */
48typedef struct _xmlEntity xmlEntity;
49typedef xmlEntity *xmlEntityPtr;
50
Daniel Veillard9d06d302002-01-22 18:15:52 +000051/**
52 * BASE_BUFFER_SIZE:
53 *
Daniel Veillard61f26172002-03-12 18:46:39 +000054 * default buffer size 4000.
Daniel Veillard9d06d302002-01-22 18:15:52 +000055 */
Daniel Veillard6155d8a2003-08-19 15:01:28 +000056#define BASE_BUFFER_SIZE 4096
Daniel Veillardd0463562001-10-13 09:15:48 +000057
Daniel Veillard5e2dace2001-07-18 19:30:27 +000058/**
Kasimier T. Buchcik978039b2006-06-16 19:46:26 +000059 * LIBXML_NAMESPACE_DICT:
60 *
61 * Defines experimental behaviour:
62 * 1) xmlNs gets an additional field @context (a xmlDoc)
63 * 2) when creating a tree, xmlNs->href is stored in the dict of xmlDoc.
64 */
65/* #define LIBXML_NAMESPACE_DICT */
66
67/**
Daniel Veillard465a0002005-08-22 12:07:04 +000068 * xmlBufferAllocationScheme:
69 *
70 * A buffer allocation scheme can be defined to either match exactly the
71 * need or double it's allocated size each time it is found too small.
72 */
73
74typedef enum {
Daniel Veillarde83e93e2008-08-30 12:52:26 +000075 XML_BUFFER_ALLOC_DOUBLEIT, /* double each time one need to grow */
76 XML_BUFFER_ALLOC_EXACT, /* grow only to the minimal size */
77 XML_BUFFER_ALLOC_IMMUTABLE, /* immutable buffer */
Conrad Irwin7d0d2a52012-05-14 14:18:58 +080078 XML_BUFFER_ALLOC_IO, /* special allocation scheme used for I/O */
79 XML_BUFFER_ALLOC_HYBRID /* exact up to a threshold, and doubleit thereafter */
Daniel Veillard465a0002005-08-22 12:07:04 +000080} xmlBufferAllocationScheme;
81
82/**
83 * xmlBuffer:
84 *
Daniel Veillardbca22f42012-07-11 16:48:47 +080085 * A buffer structure, this old construct is limited to 2GB and
86 * is being deprecated, use API with xmlBuf instead
Daniel Veillard465a0002005-08-22 12:07:04 +000087 */
88typedef struct _xmlBuffer xmlBuffer;
89typedef xmlBuffer *xmlBufferPtr;
90struct _xmlBuffer {
91 xmlChar *content; /* The buffer content UTF8 */
92 unsigned int use; /* The buffer size used */
93 unsigned int size; /* The buffer size */
94 xmlBufferAllocationScheme alloc; /* The realloc method */
Daniel Veillarde83e93e2008-08-30 12:52:26 +000095 xmlChar *contentIO; /* in IO mode we may have a different base */
Daniel Veillard465a0002005-08-22 12:07:04 +000096};
97
98/**
Daniel Veillardbca22f42012-07-11 16:48:47 +080099 * xmlBuf:
100 *
101 * A buffer structure, new one, the actual structure internals are not public
102 */
103
104typedef struct _xmlBuf xmlBuf;
105
106/**
107 * xmlBufPtr:
108 *
109 * A pointer to a buffer structure, the actual structure internals are not
110 * public
111 */
112
113typedef xmlBuf *xmlBufPtr;
114
Daniel Veillard18e1f1f2012-08-06 10:16:41 +0800115/*
116 * A few public routines for xmlBuf. As those are expected to be used
117 * mostly internally the bulk of the routines are internal in buf.h
118 */
119XMLPUBFUN xmlChar* XMLCALL xmlBufContent (const xmlBufPtr buf);
120XMLPUBFUN xmlChar* XMLCALL xmlBufEnd (const xmlBufPtr buf);
121XMLPUBFUN size_t XMLCALL xmlBufUse (xmlBufPtr buf);
Daniel Veillard82cdfc42012-08-22 11:05:09 +0800122XMLPUBFUN size_t XMLCALL xmlBufShrink (xmlBufPtr buf, size_t len);
Daniel Veillard18e1f1f2012-08-06 10:16:41 +0800123
Daniel Veillard28cc42d2012-08-10 10:00:18 +0800124/*
125 * LIBXML2_NEW_BUFFER:
126 *
127 * Macro used to express that the API use the new buffers for
128 * xmlParserInputBuffer and xmlOutputBuffer. The change was
129 * introduced in 2.9.0.
130 */
Daniel Veillard18e1f1f2012-08-06 10:16:41 +0800131#define LIBXML2_NEW_BUFFER
132
Daniel Veillardbca22f42012-07-11 16:48:47 +0800133/**
Daniel Veillard5e2dace2001-07-18 19:30:27 +0000134 * XML_XML_NAMESPACE:
135 *
136 * This is the namespace for the special xml: prefix predefined in the
Daniel Veillard61f26172002-03-12 18:46:39 +0000137 * XML Namespace specification.
Daniel Veillard5e2dace2001-07-18 19:30:27 +0000138 */
Owen Taylor3473f882001-02-23 17:55:21 +0000139#define XML_XML_NAMESPACE \
140 (const xmlChar *) "http://www.w3.org/XML/1998/namespace"
141
Daniel Veillard67f8b1c2004-04-09 21:51:49 +0000142/**
143 * XML_XML_ID:
144 *
145 * This is the name for the special xml:id attribute
146 */
147#define XML_XML_ID (const xmlChar *) "xml:id"
148
Owen Taylor3473f882001-02-23 17:55:21 +0000149/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000150 * The different element types carried by an XML tree.
Owen Taylor3473f882001-02-23 17:55:21 +0000151 *
152 * NOTE: This is synchronized with DOM Level1 values
153 * See http://www.w3.org/TR/REC-DOM-Level-1/
154 *
155 * Actually this had diverged a bit, and now XML_DOCUMENT_TYPE_NODE should
156 * be deprecated to use an XML_DTD_NODE.
157 */
158typedef enum {
159 XML_ELEMENT_NODE= 1,
160 XML_ATTRIBUTE_NODE= 2,
161 XML_TEXT_NODE= 3,
162 XML_CDATA_SECTION_NODE= 4,
163 XML_ENTITY_REF_NODE= 5,
164 XML_ENTITY_NODE= 6,
165 XML_PI_NODE= 7,
166 XML_COMMENT_NODE= 8,
167 XML_DOCUMENT_NODE= 9,
168 XML_DOCUMENT_TYPE_NODE= 10,
169 XML_DOCUMENT_FRAG_NODE= 11,
170 XML_NOTATION_NODE= 12,
171 XML_HTML_DOCUMENT_NODE= 13,
172 XML_DTD_NODE= 14,
173 XML_ELEMENT_DECL= 15,
174 XML_ATTRIBUTE_DECL= 16,
175 XML_ENTITY_DECL= 17,
176 XML_NAMESPACE_DECL= 18,
177 XML_XINCLUDE_START= 19,
178 XML_XINCLUDE_END= 20
Daniel Veillardeae522a2001-04-23 13:41:34 +0000179#ifdef LIBXML_DOCB_ENABLED
180 ,XML_DOCB_DOCUMENT_NODE= 21
Owen Taylor3473f882001-02-23 17:55:21 +0000181#endif
182} xmlElementType;
183
Owen Taylor3473f882001-02-23 17:55:21 +0000184
Daniel Veillardbed7b052001-05-19 14:59:49 +0000185/**
186 * xmlNotation:
187 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000188 * A DTD Notation definition.
Owen Taylor3473f882001-02-23 17:55:21 +0000189 */
190
191typedef struct _xmlNotation xmlNotation;
192typedef xmlNotation *xmlNotationPtr;
193struct _xmlNotation {
Daniel Veillard9e7160d2001-03-18 23:17:47 +0000194 const xmlChar *name; /* Notation name */
Owen Taylor3473f882001-02-23 17:55:21 +0000195 const xmlChar *PublicID; /* Public identifier, if any */
196 const xmlChar *SystemID; /* System identifier, if any */
197};
198
Daniel Veillardbed7b052001-05-19 14:59:49 +0000199/**
200 * xmlAttributeType:
201 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000202 * A DTD Attribute type definition.
Owen Taylor3473f882001-02-23 17:55:21 +0000203 */
204
205typedef enum {
206 XML_ATTRIBUTE_CDATA = 1,
207 XML_ATTRIBUTE_ID,
208 XML_ATTRIBUTE_IDREF ,
209 XML_ATTRIBUTE_IDREFS,
210 XML_ATTRIBUTE_ENTITY,
211 XML_ATTRIBUTE_ENTITIES,
212 XML_ATTRIBUTE_NMTOKEN,
213 XML_ATTRIBUTE_NMTOKENS,
214 XML_ATTRIBUTE_ENUMERATION,
215 XML_ATTRIBUTE_NOTATION
216} xmlAttributeType;
217
Daniel Veillardbed7b052001-05-19 14:59:49 +0000218/**
219 * xmlAttributeDefault:
220 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000221 * A DTD Attribute default definition.
Daniel Veillardbed7b052001-05-19 14:59:49 +0000222 */
223
Owen Taylor3473f882001-02-23 17:55:21 +0000224typedef enum {
225 XML_ATTRIBUTE_NONE = 1,
226 XML_ATTRIBUTE_REQUIRED,
227 XML_ATTRIBUTE_IMPLIED,
228 XML_ATTRIBUTE_FIXED
229} xmlAttributeDefault;
230
Daniel Veillardbed7b052001-05-19 14:59:49 +0000231/**
232 * xmlEnumeration:
233 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000234 * List structure used when there is an enumeration in DTDs.
Daniel Veillardbed7b052001-05-19 14:59:49 +0000235 */
236
Owen Taylor3473f882001-02-23 17:55:21 +0000237typedef struct _xmlEnumeration xmlEnumeration;
238typedef xmlEnumeration *xmlEnumerationPtr;
239struct _xmlEnumeration {
240 struct _xmlEnumeration *next; /* next one */
241 const xmlChar *name; /* Enumeration name */
242};
243
Daniel Veillardbed7b052001-05-19 14:59:49 +0000244/**
245 * xmlAttribute:
246 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000247 * An Attribute declaration in a DTD.
Daniel Veillardbed7b052001-05-19 14:59:49 +0000248 */
249
Owen Taylor3473f882001-02-23 17:55:21 +0000250typedef struct _xmlAttribute xmlAttribute;
251typedef xmlAttribute *xmlAttributePtr;
252struct _xmlAttribute {
Daniel Veillard0ec98632001-11-14 15:04:32 +0000253 void *_private; /* application data */
Owen Taylor3473f882001-02-23 17:55:21 +0000254 xmlElementType type; /* XML_ATTRIBUTE_DECL, must be second ! */
255 const xmlChar *name; /* Attribute name */
256 struct _xmlNode *children; /* NULL */
257 struct _xmlNode *last; /* NULL */
258 struct _xmlDtd *parent; /* -> DTD */
259 struct _xmlNode *next; /* next sibling link */
260 struct _xmlNode *prev; /* previous sibling link */
261 struct _xmlDoc *doc; /* the containing document */
262
263 struct _xmlAttribute *nexth; /* next in hash table */
264 xmlAttributeType atype; /* The attribute type */
265 xmlAttributeDefault def; /* the default */
266 const xmlChar *defaultValue; /* or the default value */
267 xmlEnumerationPtr tree; /* or the enumeration tree if any */
268 const xmlChar *prefix; /* the namespace prefix if any */
269 const xmlChar *elem; /* Element holding the attribute */
270};
271
Daniel Veillardbed7b052001-05-19 14:59:49 +0000272/**
273 * xmlElementContentType:
274 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000275 * Possible definitions of element content types.
Owen Taylor3473f882001-02-23 17:55:21 +0000276 */
277typedef enum {
278 XML_ELEMENT_CONTENT_PCDATA = 1,
279 XML_ELEMENT_CONTENT_ELEMENT,
280 XML_ELEMENT_CONTENT_SEQ,
281 XML_ELEMENT_CONTENT_OR
282} xmlElementContentType;
283
Daniel Veillardbed7b052001-05-19 14:59:49 +0000284/**
285 * xmlElementContentOccur:
286 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000287 * Possible definitions of element content occurrences.
Daniel Veillardbed7b052001-05-19 14:59:49 +0000288 */
Owen Taylor3473f882001-02-23 17:55:21 +0000289typedef enum {
290 XML_ELEMENT_CONTENT_ONCE = 1,
291 XML_ELEMENT_CONTENT_OPT,
292 XML_ELEMENT_CONTENT_MULT,
293 XML_ELEMENT_CONTENT_PLUS
294} xmlElementContentOccur;
295
Daniel Veillardbed7b052001-05-19 14:59:49 +0000296/**
297 * xmlElementContent:
298 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000299 * An XML Element content as stored after parsing an element definition
Daniel Veillardbed7b052001-05-19 14:59:49 +0000300 * in a DTD.
301 */
302
Owen Taylor3473f882001-02-23 17:55:21 +0000303typedef struct _xmlElementContent xmlElementContent;
304typedef xmlElementContent *xmlElementContentPtr;
305struct _xmlElementContent {
306 xmlElementContentType type; /* PCDATA, ELEMENT, SEQ or OR */
307 xmlElementContentOccur ocur; /* ONCE, OPT, MULT or PLUS */
Daniel Veillardbe480fb2001-11-08 23:36:42 +0000308 const xmlChar *name; /* Element name */
Owen Taylor3473f882001-02-23 17:55:21 +0000309 struct _xmlElementContent *c1; /* first child */
310 struct _xmlElementContent *c2; /* second child */
Daniel Veillarddab4cb32001-04-20 13:03:48 +0000311 struct _xmlElementContent *parent; /* parent */
Daniel Veillarda9b66d02002-12-11 14:23:49 +0000312 const xmlChar *prefix; /* Namespace prefix */
Owen Taylor3473f882001-02-23 17:55:21 +0000313};
314
Daniel Veillardbed7b052001-05-19 14:59:49 +0000315/**
316 * xmlElementTypeVal:
317 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000318 * The different possibilities for an element content type.
Daniel Veillardbed7b052001-05-19 14:59:49 +0000319 */
320
Owen Taylor3473f882001-02-23 17:55:21 +0000321typedef enum {
Daniel Veillarda10efa82001-04-18 13:09:01 +0000322 XML_ELEMENT_TYPE_UNDEFINED = 0,
Owen Taylor3473f882001-02-23 17:55:21 +0000323 XML_ELEMENT_TYPE_EMPTY = 1,
324 XML_ELEMENT_TYPE_ANY,
325 XML_ELEMENT_TYPE_MIXED,
326 XML_ELEMENT_TYPE_ELEMENT
327} xmlElementTypeVal;
328
Daniel Veillardaeb258a2002-09-13 14:48:12 +0000329#ifdef __cplusplus
330}
331#endif
332#include <libxml/xmlregexp.h>
333#ifdef __cplusplus
334extern "C" {
335#endif
336
Daniel Veillardbed7b052001-05-19 14:59:49 +0000337/**
338 * xmlElement:
339 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000340 * An XML Element declaration from a DTD.
Daniel Veillardbed7b052001-05-19 14:59:49 +0000341 */
342
Owen Taylor3473f882001-02-23 17:55:21 +0000343typedef struct _xmlElement xmlElement;
344typedef xmlElement *xmlElementPtr;
345struct _xmlElement {
Daniel Veillard0ec98632001-11-14 15:04:32 +0000346 void *_private; /* application data */
Owen Taylor3473f882001-02-23 17:55:21 +0000347 xmlElementType type; /* XML_ELEMENT_DECL, must be second ! */
348 const xmlChar *name; /* Element name */
349 struct _xmlNode *children; /* NULL */
350 struct _xmlNode *last; /* NULL */
351 struct _xmlDtd *parent; /* -> DTD */
352 struct _xmlNode *next; /* next sibling link */
353 struct _xmlNode *prev; /* previous sibling link */
354 struct _xmlDoc *doc; /* the containing document */
355
356 xmlElementTypeVal etype; /* The type */
357 xmlElementContentPtr content; /* the allowed element content */
358 xmlAttributePtr attributes; /* List of the declared attributes */
359 const xmlChar *prefix; /* the namespace prefix if any */
Daniel Veillardaeb258a2002-09-13 14:48:12 +0000360#ifdef LIBXML_REGEXP_ENABLED
361 xmlRegexpPtr contModel; /* the validating regexp */
362#else
363 void *contModel;
364#endif
Owen Taylor3473f882001-02-23 17:55:21 +0000365};
366
Daniel Veillardbed7b052001-05-19 14:59:49 +0000367
Daniel Veillard5e2dace2001-07-18 19:30:27 +0000368/**
369 * XML_LOCAL_NAMESPACE:
370 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000371 * A namespace declaration node.
Daniel Veillard5e2dace2001-07-18 19:30:27 +0000372 */
Daniel Veillardbed7b052001-05-19 14:59:49 +0000373#define XML_LOCAL_NAMESPACE XML_NAMESPACE_DECL
374typedef xmlElementType xmlNsType;
375
376/**
377 * xmlNs:
378 *
Owen Taylor3473f882001-02-23 17:55:21 +0000379 * An XML namespace.
380 * Note that prefix == NULL is valid, it defines the default namespace
Daniel Veillardd1640922001-12-17 15:30:10 +0000381 * within the subtree (until overridden).
Owen Taylor3473f882001-02-23 17:55:21 +0000382 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000383 * xmlNsType is unified with xmlElementType.
Owen Taylor3473f882001-02-23 17:55:21 +0000384 */
385
Owen Taylor3473f882001-02-23 17:55:21 +0000386typedef struct _xmlNs xmlNs;
387typedef xmlNs *xmlNsPtr;
388struct _xmlNs {
389 struct _xmlNs *next; /* next Ns link for this node */
390 xmlNsType type; /* global or local */
391 const xmlChar *href; /* URL for the namespace */
392 const xmlChar *prefix; /* prefix for the namespace */
PDT 2002 Aleksey Sanin8e8a7032002-07-22 18:03:11 +0000393 void *_private; /* application data */
Kasimier T. Buchcik978039b2006-06-16 19:46:26 +0000394 struct _xmlDoc *context; /* normally an xmlDoc */
Owen Taylor3473f882001-02-23 17:55:21 +0000395};
396
Daniel Veillardbed7b052001-05-19 14:59:49 +0000397/**
398 * xmlDtd:
399 *
Daniel Veillardd1640922001-12-17 15:30:10 +0000400 * An XML DTD, as defined by <!DOCTYPE ... There is actually one for
Daniel Veillard61f26172002-03-12 18:46:39 +0000401 * the internal subset and for the external subset.
Owen Taylor3473f882001-02-23 17:55:21 +0000402 */
403typedef struct _xmlDtd xmlDtd;
404typedef xmlDtd *xmlDtdPtr;
405struct _xmlDtd {
Daniel Veillard0ec98632001-11-14 15:04:32 +0000406 void *_private; /* application data */
Owen Taylor3473f882001-02-23 17:55:21 +0000407 xmlElementType type; /* XML_DTD_NODE, must be second ! */
408 const xmlChar *name; /* Name of the DTD */
409 struct _xmlNode *children; /* the value of the property link */
410 struct _xmlNode *last; /* last child link */
411 struct _xmlDoc *parent; /* child->parent link */
412 struct _xmlNode *next; /* next sibling link */
413 struct _xmlNode *prev; /* previous sibling link */
414 struct _xmlDoc *doc; /* the containing document */
415
416 /* End of common part */
417 void *notations; /* Hash table for notations if any */
418 void *elements; /* Hash table for elements if any */
419 void *attributes; /* Hash table for attributes if any */
420 void *entities; /* Hash table for entities if any */
421 const xmlChar *ExternalID; /* External identifier for PUBLIC DTD */
422 const xmlChar *SystemID; /* URI for a SYSTEM or PUBLIC DTD */
423 void *pentities; /* Hash table for param entities if any */
424};
425
Daniel Veillardbed7b052001-05-19 14:59:49 +0000426/**
427 * xmlAttr:
428 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000429 * An attribute on an XML node.
Owen Taylor3473f882001-02-23 17:55:21 +0000430 */
431typedef struct _xmlAttr xmlAttr;
432typedef xmlAttr *xmlAttrPtr;
433struct _xmlAttr {
Daniel Veillard0ec98632001-11-14 15:04:32 +0000434 void *_private; /* application data */
Owen Taylor3473f882001-02-23 17:55:21 +0000435 xmlElementType type; /* XML_ATTRIBUTE_NODE, must be second ! */
436 const xmlChar *name; /* the name of the property */
437 struct _xmlNode *children; /* the value of the property */
438 struct _xmlNode *last; /* NULL */
439 struct _xmlNode *parent; /* child->parent link */
440 struct _xmlAttr *next; /* next sibling link */
441 struct _xmlAttr *prev; /* previous sibling link */
442 struct _xmlDoc *doc; /* the containing document */
443 xmlNs *ns; /* pointer to the associated namespace */
444 xmlAttributeType atype; /* the attribute type if validating */
Daniel Veillardd8850402003-10-10 14:24:12 +0000445 void *psvi; /* for type/PSVI informations */
Owen Taylor3473f882001-02-23 17:55:21 +0000446};
447
Daniel Veillardbed7b052001-05-19 14:59:49 +0000448/**
449 * xmlID:
450 *
Owen Taylor3473f882001-02-23 17:55:21 +0000451 * An XML ID instance.
452 */
453
454typedef struct _xmlID xmlID;
455typedef xmlID *xmlIDPtr;
456struct _xmlID {
457 struct _xmlID *next; /* next ID */
458 const xmlChar *value; /* The ID name */
Daniel Veillardd1640922001-12-17 15:30:10 +0000459 xmlAttrPtr attr; /* The attribute holding it */
Daniel Veillardea7751d2002-12-20 00:16:24 +0000460 const xmlChar *name; /* The attribute if attr is not available */
461 int lineno; /* The line number if attr is not available */
Daniel Veillard8d7b5c72003-11-15 18:24:36 +0000462 struct _xmlDoc *doc; /* The document holding the ID */
Owen Taylor3473f882001-02-23 17:55:21 +0000463};
464
Daniel Veillardbed7b052001-05-19 14:59:49 +0000465/**
466 * xmlRef:
467 *
Owen Taylor3473f882001-02-23 17:55:21 +0000468 * An XML IDREF instance.
469 */
470
471typedef struct _xmlRef xmlRef;
472typedef xmlRef *xmlRefPtr;
473struct _xmlRef {
474 struct _xmlRef *next; /* next Ref */
475 const xmlChar *value; /* The Ref name */
Daniel Veillardd1640922001-12-17 15:30:10 +0000476 xmlAttrPtr attr; /* The attribute holding it */
Daniel Veillardea7751d2002-12-20 00:16:24 +0000477 const xmlChar *name; /* The attribute if attr is not available */
478 int lineno; /* The line number if attr is not available */
Owen Taylor3473f882001-02-23 17:55:21 +0000479};
480
Daniel Veillardbed7b052001-05-19 14:59:49 +0000481/**
Daniel Veillardf69bb4b2001-05-19 13:24:56 +0000482 * xmlNode:
483 *
Owen Taylor3473f882001-02-23 17:55:21 +0000484 * A node in an XML tree.
485 */
486typedef struct _xmlNode xmlNode;
487typedef xmlNode *xmlNodePtr;
488struct _xmlNode {
Daniel Veillard0ec98632001-11-14 15:04:32 +0000489 void *_private; /* application data */
Owen Taylor3473f882001-02-23 17:55:21 +0000490 xmlElementType type; /* type number, must be second ! */
491 const xmlChar *name; /* the name of the node, or the entity */
492 struct _xmlNode *children; /* parent->childs link */
493 struct _xmlNode *last; /* last child link */
494 struct _xmlNode *parent; /* child->parent link */
495 struct _xmlNode *next; /* next sibling link */
496 struct _xmlNode *prev; /* previous sibling link */
497 struct _xmlDoc *doc; /* the containing document */
Daniel Veillardcbaf3992001-12-31 16:16:02 +0000498
499 /* End of common part */
Owen Taylor3473f882001-02-23 17:55:21 +0000500 xmlNs *ns; /* pointer to the associated namespace */
Owen Taylor3473f882001-02-23 17:55:21 +0000501 xmlChar *content; /* the content */
Owen Taylor3473f882001-02-23 17:55:21 +0000502 struct _xmlAttr *properties;/* properties list */
503 xmlNs *nsDef; /* namespace definitions on this node */
Daniel Veillardd8850402003-10-10 14:24:12 +0000504 void *psvi; /* for type/PSVI informations */
Daniel Veillard1d211e22003-10-20 22:32:39 +0000505 unsigned short line; /* line number */
506 unsigned short extra; /* extra data for XPath/XSLT */
Owen Taylor3473f882001-02-23 17:55:21 +0000507};
508
Daniel Veillard5e2dace2001-07-18 19:30:27 +0000509/**
510 * XML_GET_CONTENT:
511 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000512 * Macro to extract the content pointer of a node.
Daniel Veillard5e2dace2001-07-18 19:30:27 +0000513 */
514#define XML_GET_CONTENT(n) \
Daniel Veillard566d4df2001-11-22 13:00:53 +0000515 ((n)->type == XML_ELEMENT_NODE ? NULL : (n)->content)
Daniel Veillard5e2dace2001-07-18 19:30:27 +0000516
517/**
518 * XML_GET_LINE:
519 *
Daniel Veillard61f26172002-03-12 18:46:39 +0000520 * Macro to extract the line number of an element node.
Daniel Veillard5e2dace2001-07-18 19:30:27 +0000521 */
522#define XML_GET_LINE(n) \
Daniel Veillardc76440f2003-11-26 20:39:47 +0000523 (xmlGetLineNo(n))
Daniel Veillard7db37732001-07-12 01:20:08 +0000524
Daniel Veillardae0765b2008-07-31 19:54:59 +0000525/**
526 * xmlDocProperty
527 *
528 * Set of properties of the document as found by the parser
529 * Some of them are linked to similary named xmlParserOption
530 */
531typedef enum {
532 XML_DOC_WELLFORMED = 1<<0, /* document is XML well formed */
533 XML_DOC_NSVALID = 1<<1, /* document is Namespace valid */
534 XML_DOC_OLD10 = 1<<2, /* parsed with old XML-1.0 parser */
535 XML_DOC_DTDVALID = 1<<3, /* DTD validation was successful */
536 XML_DOC_XINCLUDE = 1<<4, /* XInclude substitution was done */
537 XML_DOC_USERBUILT = 1<<5, /* Document was built using the API
538 and not by parsing an instance */
539 XML_DOC_INTERNAL = 1<<6, /* built for internal processing */
540 XML_DOC_HTML = 1<<7 /* parsed or built HTML document */
541} xmlDocProperties;
Daniel Veillard40412cd2003-09-03 13:28:32 +0000542
Daniel Veillardbed7b052001-05-19 14:59:49 +0000543/**
544 * xmlDoc:
545 *
Owen Taylor3473f882001-02-23 17:55:21 +0000546 * An XML document.
547 */
548typedef struct _xmlDoc xmlDoc;
549typedef xmlDoc *xmlDocPtr;
550struct _xmlDoc {
Daniel Veillard0ec98632001-11-14 15:04:32 +0000551 void *_private; /* application data */
Owen Taylor3473f882001-02-23 17:55:21 +0000552 xmlElementType type; /* XML_DOCUMENT_NODE, must be second ! */
553 char *name; /* name/filename/URI of the document */
554 struct _xmlNode *children; /* the document tree */
555 struct _xmlNode *last; /* last child link */
556 struct _xmlNode *parent; /* child->parent link */
557 struct _xmlNode *next; /* next sibling link */
558 struct _xmlNode *prev; /* previous sibling link */
559 struct _xmlDoc *doc; /* autoreference to itself */
560
561 /* End of common part */
562 int compression;/* level of zlib compression */
Daniel Veillard602f2bd2006-12-04 09:26:04 +0000563 int standalone; /* standalone document (no external refs)
564 1 if standalone="yes"
565 0 if standalone="no"
566 -1 if there is no XML declaration
567 -2 if there is an XML declaration, but no
568 standalone attribute was specified */
Owen Taylor3473f882001-02-23 17:55:21 +0000569 struct _xmlDtd *intSubset; /* the document internal subset */
570 struct _xmlDtd *extSubset; /* the document external subset */
571 struct _xmlNs *oldNs; /* Global namespace, the old way */
572 const xmlChar *version; /* the XML version string */
573 const xmlChar *encoding; /* external initial encoding, if any */
574 void *ids; /* Hash table for ID attributes if any */
575 void *refs; /* Hash table for IDREFs attributes if any */
576 const xmlChar *URL; /* The URI for that document */
577 int charset; /* encoding of the in-memory content
578 actually an xmlCharEncoding */
Daniel Veillard40412cd2003-09-03 13:28:32 +0000579 struct _xmlDict *dict; /* dict used to allocate names or NULL */
Daniel Veillardd8850402003-10-10 14:24:12 +0000580 void *psvi; /* for type/PSVI informations */
Daniel Veillardae0765b2008-07-31 19:54:59 +0000581 int parseFlags; /* set of xmlParserOption used to parse the
582 document */
583 int properties; /* set of xmlDocProperties for this document
584 set at the end of parsing */
Owen Taylor3473f882001-02-23 17:55:21 +0000585};
586
Kasimier T. Buchcik978039b2006-06-16 19:46:26 +0000587
Kasimier T. Buchcikbc0e3c62005-06-27 10:28:23 +0000588typedef struct _xmlDOMWrapCtxt xmlDOMWrapCtxt;
589typedef xmlDOMWrapCtxt *xmlDOMWrapCtxtPtr;
Kasimier T. Buchcik978039b2006-06-16 19:46:26 +0000590
591/**
592 * xmlDOMWrapAcquireNsFunction:
593 * @ctxt: a DOM wrapper context
594 * @node: the context node (element or attribute)
595 * @nsName: the requested namespace name
596 * @nsPrefix: the requested namespace prefix
597 *
598 * A function called to acquire namespaces (xmlNs) from the wrapper.
599 *
600 * Returns an xmlNsPtr or NULL in case of an error.
601 */
602typedef xmlNsPtr (*xmlDOMWrapAcquireNsFunction) (xmlDOMWrapCtxtPtr ctxt,
603 xmlNodePtr node,
604 const xmlChar *nsName,
605 const xmlChar *nsPrefix);
606
607/**
608 * xmlDOMWrapCtxt:
609 *
610 * Context for DOM wrapper-operations.
611 */
Kasimier T. Buchcikbc0e3c62005-06-27 10:28:23 +0000612struct _xmlDOMWrapCtxt {
613 void * _private;
Kasimier T. Buchcik978039b2006-06-16 19:46:26 +0000614 /*
615 * The type of this context, just in case we need specialized
616 * contexts in the future.
617 */
618 int type;
619 /*
620 * Internal namespace map used for various operations.
621 */
622 void * namespaceMap;
623 /*
624 * Use this one to acquire an xmlNsPtr intended for node->ns.
625 * (Note that this is not intended for elem->nsDef).
626 */
627 xmlDOMWrapAcquireNsFunction getNsForNodeFunc;
Kasimier T. Buchcikbc0e3c62005-06-27 10:28:23 +0000628};
629
Daniel Veillardbed7b052001-05-19 14:59:49 +0000630/**
631 * xmlChildrenNode:
632 *
MST 2003 John Flecka0e7e932003-12-19 03:13:47 +0000633 * Macro for compatibility naming layer with libxml1. Maps
634 * to "children."
Owen Taylor3473f882001-02-23 17:55:21 +0000635 */
636#ifndef xmlChildrenNode
637#define xmlChildrenNode children
Daniel Veillardbed7b052001-05-19 14:59:49 +0000638#endif
639
640/**
641 * xmlRootNode:
642 *
MST 2003 John Flecka0e7e932003-12-19 03:13:47 +0000643 * Macro for compatibility naming layer with libxml1. Maps
644 * to "children".
Daniel Veillardbed7b052001-05-19 14:59:49 +0000645 */
646#ifndef xmlRootNode
Owen Taylor3473f882001-02-23 17:55:21 +0000647#define xmlRootNode children
648#endif
649
650/*
651 * Variables.
652 */
Owen Taylor3473f882001-02-23 17:55:21 +0000653
Daniel Veillardc00cda82003-04-07 10:22:39 +0000654/*
655 * Some helper functions
656 */
Daniel Veillardf1a27c62006-10-13 22:33:03 +0000657#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED)
Igor Zlatkovic76874e42003-08-25 09:05:12 +0000658XMLPUBFUN int XMLCALL
659 xmlValidateNCName (const xmlChar *value,
Daniel Veillardc00cda82003-04-07 10:22:39 +0000660 int space);
William M. Brack21e4ef22005-01-02 09:53:13 +0000661#endif
662
663#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000664XMLPUBFUN int XMLCALL
665 xmlValidateQName (const xmlChar *value,
Daniel Veillardc00cda82003-04-07 10:22:39 +0000666 int space);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000667XMLPUBFUN int XMLCALL
668 xmlValidateName (const xmlChar *value,
Daniel Veillardc00cda82003-04-07 10:22:39 +0000669 int space);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000670XMLPUBFUN int XMLCALL
671 xmlValidateNMToken (const xmlChar *value,
Daniel Veillardc00cda82003-04-07 10:22:39 +0000672 int space);
William M. Brack21e4ef22005-01-02 09:53:13 +0000673#endif
Daniel Veillardd4310742003-02-18 21:12:46 +0000674
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000675XMLPUBFUN xmlChar * XMLCALL
676 xmlBuildQName (const xmlChar *ncname,
Daniel Veillardc00cda82003-04-07 10:22:39 +0000677 const xmlChar *prefix,
678 xmlChar *memory,
679 int len);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000680XMLPUBFUN xmlChar * XMLCALL
681 xmlSplitQName2 (const xmlChar *name,
Daniel Veillardc00cda82003-04-07 10:22:39 +0000682 xmlChar **prefix);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000683XMLPUBFUN const xmlChar * XMLCALL
684 xmlSplitQName3 (const xmlChar *name,
Daniel Veillard8d73bcb2003-08-04 01:06:15 +0000685 int *len);
686
Owen Taylor3473f882001-02-23 17:55:21 +0000687/*
Daniel Veillard18e1f1f2012-08-06 10:16:41 +0800688 * Handling Buffers, the old ones see @xmlBuf for the new ones.
Owen Taylor3473f882001-02-23 17:55:21 +0000689 */
690
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000691XMLPUBFUN void XMLCALL
692 xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme);
693XMLPUBFUN xmlBufferAllocationScheme XMLCALL
694 xmlGetBufferAllocationScheme(void);
Daniel Veillard56a4cb82001-03-24 17:00:36 +0000695
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000696XMLPUBFUN xmlBufferPtr XMLCALL
697 xmlBufferCreate (void);
698XMLPUBFUN xmlBufferPtr XMLCALL
699 xmlBufferCreateSize (size_t size);
Daniel Veillard53350552003-09-18 13:35:51 +0000700XMLPUBFUN xmlBufferPtr XMLCALL
701 xmlBufferCreateStatic (void *mem,
702 size_t size);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000703XMLPUBFUN int XMLCALL
704 xmlBufferResize (xmlBufferPtr buf,
Daniel Veillard56a4cb82001-03-24 17:00:36 +0000705 unsigned int size);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000706XMLPUBFUN void XMLCALL
707 xmlBufferFree (xmlBufferPtr buf);
708XMLPUBFUN int XMLCALL
709 xmlBufferDump (FILE *file,
Owen Taylor3473f882001-02-23 17:55:21 +0000710 xmlBufferPtr buf);
William M. Bracka3215c72004-07-31 16:24:01 +0000711XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000712 xmlBufferAdd (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000713 const xmlChar *str,
714 int len);
William M. Bracka3215c72004-07-31 16:24:01 +0000715XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000716 xmlBufferAddHead (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000717 const xmlChar *str,
718 int len);
William M. Bracka3215c72004-07-31 16:24:01 +0000719XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000720 xmlBufferCat (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000721 const xmlChar *str);
William M. Bracka3215c72004-07-31 16:24:01 +0000722XMLPUBFUN int XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000723 xmlBufferCCat (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000724 const char *str);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000725XMLPUBFUN int XMLCALL
726 xmlBufferShrink (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000727 unsigned int len);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000728XMLPUBFUN int XMLCALL
729 xmlBufferGrow (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000730 unsigned int len);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000731XMLPUBFUN void XMLCALL
732 xmlBufferEmpty (xmlBufferPtr buf);
733XMLPUBFUN const xmlChar* XMLCALL
734 xmlBufferContent (const xmlBufferPtr buf);
Conrad Irwin7d553f82012-05-10 20:17:25 -0700735XMLPUBFUN xmlChar* XMLCALL
Daniel Veillard3b666222012-08-13 17:49:15 +0800736 xmlBufferDetach (xmlBufferPtr buf);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000737XMLPUBFUN void XMLCALL
738 xmlBufferSetAllocationScheme(xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +0000739 xmlBufferAllocationScheme scheme);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000740XMLPUBFUN int XMLCALL
741 xmlBufferLength (const xmlBufferPtr buf);
Owen Taylor3473f882001-02-23 17:55:21 +0000742
743/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000744 * Creating/freeing new structures.
Owen Taylor3473f882001-02-23 17:55:21 +0000745 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000746XMLPUBFUN xmlDtdPtr XMLCALL
747 xmlCreateIntSubset (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000748 const xmlChar *name,
749 const xmlChar *ExternalID,
750 const xmlChar *SystemID);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000751XMLPUBFUN xmlDtdPtr XMLCALL
752 xmlNewDtd (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000753 const xmlChar *name,
754 const xmlChar *ExternalID,
755 const xmlChar *SystemID);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000756XMLPUBFUN xmlDtdPtr XMLCALL
757 xmlGetIntSubset (xmlDocPtr doc);
758XMLPUBFUN void XMLCALL
759 xmlFreeDtd (xmlDtdPtr cur);
William M. Brack21e4ef22005-01-02 09:53:13 +0000760#ifdef LIBXML_LEGACY_ENABLED
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000761XMLPUBFUN xmlNsPtr XMLCALL
762 xmlNewGlobalNs (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000763 const xmlChar *href,
764 const xmlChar *prefix);
William M. Brack21e4ef22005-01-02 09:53:13 +0000765#endif /* LIBXML_LEGACY_ENABLED */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000766XMLPUBFUN xmlNsPtr XMLCALL
767 xmlNewNs (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000768 const xmlChar *href,
769 const xmlChar *prefix);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000770XMLPUBFUN void XMLCALL
771 xmlFreeNs (xmlNsPtr cur);
772XMLPUBFUN void XMLCALL
773 xmlFreeNsList (xmlNsPtr cur);
774XMLPUBFUN xmlDocPtr XMLCALL
775 xmlNewDoc (const xmlChar *version);
776XMLPUBFUN void XMLCALL
777 xmlFreeDoc (xmlDocPtr cur);
778XMLPUBFUN xmlAttrPtr XMLCALL
779 xmlNewDocProp (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000780 const xmlChar *name,
781 const xmlChar *value);
William M. Brack21e4ef22005-01-02 09:53:13 +0000782#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \
783 defined(LIBXML_SCHEMAS_ENABLED)
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000784XMLPUBFUN xmlAttrPtr XMLCALL
785 xmlNewProp (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000786 const xmlChar *name,
787 const xmlChar *value);
William M. Brack21e4ef22005-01-02 09:53:13 +0000788#endif
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000789XMLPUBFUN xmlAttrPtr XMLCALL
790 xmlNewNsProp (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000791 xmlNsPtr ns,
792 const xmlChar *name,
793 const xmlChar *value);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000794XMLPUBFUN xmlAttrPtr XMLCALL
795 xmlNewNsPropEatName (xmlNodePtr node,
Daniel Veillard46de64e2002-05-29 08:21:33 +0000796 xmlNsPtr ns,
797 xmlChar *name,
798 const xmlChar *value);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000799XMLPUBFUN void XMLCALL
800 xmlFreePropList (xmlAttrPtr cur);
801XMLPUBFUN void XMLCALL
802 xmlFreeProp (xmlAttrPtr cur);
803XMLPUBFUN xmlAttrPtr XMLCALL
804 xmlCopyProp (xmlNodePtr target,
Owen Taylor3473f882001-02-23 17:55:21 +0000805 xmlAttrPtr cur);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000806XMLPUBFUN xmlAttrPtr XMLCALL
807 xmlCopyPropList (xmlNodePtr target,
Owen Taylor3473f882001-02-23 17:55:21 +0000808 xmlAttrPtr cur);
Daniel Veillard652327a2003-09-29 18:02:38 +0000809#ifdef LIBXML_TREE_ENABLED
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000810XMLPUBFUN xmlDtdPtr XMLCALL
811 xmlCopyDtd (xmlDtdPtr dtd);
William M. Brack21e4ef22005-01-02 09:53:13 +0000812#endif /* LIBXML_TREE_ENABLED */
813#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000814XMLPUBFUN xmlDocPtr XMLCALL
815 xmlCopyDoc (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000816 int recursive);
William M. Brack21e4ef22005-01-02 09:53:13 +0000817#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
Owen Taylor3473f882001-02-23 17:55:21 +0000818/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000819 * Creating new nodes.
Owen Taylor3473f882001-02-23 17:55:21 +0000820 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000821XMLPUBFUN xmlNodePtr XMLCALL
822 xmlNewDocNode (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000823 xmlNsPtr ns,
824 const xmlChar *name,
825 const xmlChar *content);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000826XMLPUBFUN xmlNodePtr XMLCALL
827 xmlNewDocNodeEatName (xmlDocPtr doc,
Daniel Veillard46de64e2002-05-29 08:21:33 +0000828 xmlNsPtr ns,
829 xmlChar *name,
830 const xmlChar *content);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000831XMLPUBFUN xmlNodePtr XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000832 xmlNewNode (xmlNsPtr ns,
Owen Taylor3473f882001-02-23 17:55:21 +0000833 const xmlChar *name);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000834XMLPUBFUN xmlNodePtr XMLCALL
835 xmlNewNodeEatName (xmlNsPtr ns,
Daniel Veillard46de64e2002-05-29 08:21:33 +0000836 xmlChar *name);
William M. Brack21e4ef22005-01-02 09:53:13 +0000837#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000838XMLPUBFUN xmlNodePtr XMLCALL
839 xmlNewChild (xmlNodePtr parent,
Owen Taylor3473f882001-02-23 17:55:21 +0000840 xmlNsPtr ns,
841 const xmlChar *name,
842 const xmlChar *content);
William M. Brack21e4ef22005-01-02 09:53:13 +0000843#endif
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000844XMLPUBFUN xmlNodePtr XMLCALL
845 xmlNewDocText (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000846 const xmlChar *content);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000847XMLPUBFUN xmlNodePtr XMLCALL
848 xmlNewText (const xmlChar *content);
849XMLPUBFUN xmlNodePtr XMLCALL
Daniel Veillard03a53c32004-10-26 16:06:51 +0000850 xmlNewDocPI (xmlDocPtr doc,
851 const xmlChar *name,
852 const xmlChar *content);
853XMLPUBFUN xmlNodePtr XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000854 xmlNewPI (const xmlChar *name,
Owen Taylor3473f882001-02-23 17:55:21 +0000855 const xmlChar *content);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000856XMLPUBFUN xmlNodePtr XMLCALL
857 xmlNewDocTextLen (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000858 const xmlChar *content,
859 int len);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000860XMLPUBFUN xmlNodePtr XMLCALL
861 xmlNewTextLen (const xmlChar *content,
Owen Taylor3473f882001-02-23 17:55:21 +0000862 int len);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000863XMLPUBFUN xmlNodePtr XMLCALL
864 xmlNewDocComment (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000865 const xmlChar *content);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000866XMLPUBFUN xmlNodePtr XMLCALL
867 xmlNewComment (const xmlChar *content);
868XMLPUBFUN xmlNodePtr XMLCALL
869 xmlNewCDataBlock (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000870 const xmlChar *content,
871 int len);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000872XMLPUBFUN xmlNodePtr XMLCALL
873 xmlNewCharRef (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000874 const xmlChar *name);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000875XMLPUBFUN xmlNodePtr XMLCALL
876 xmlNewReference (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000877 const xmlChar *name);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000878XMLPUBFUN xmlNodePtr XMLCALL
879 xmlCopyNode (const xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000880 int recursive);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000881XMLPUBFUN xmlNodePtr XMLCALL
882 xmlDocCopyNode (const xmlNodePtr node,
Daniel Veillard82daa812001-04-12 08:55:36 +0000883 xmlDocPtr doc,
884 int recursive);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000885XMLPUBFUN xmlNodePtr XMLCALL
Daniel Veillard03a53c32004-10-26 16:06:51 +0000886 xmlDocCopyNodeList (xmlDocPtr doc,
887 const xmlNodePtr node);
888XMLPUBFUN xmlNodePtr XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000889 xmlCopyNodeList (const xmlNodePtr node);
Daniel Veillard652327a2003-09-29 18:02:38 +0000890#ifdef LIBXML_TREE_ENABLED
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000891XMLPUBFUN xmlNodePtr XMLCALL
William M. Brack21e4ef22005-01-02 09:53:13 +0000892 xmlNewTextChild (xmlNodePtr parent,
893 xmlNsPtr ns,
894 const xmlChar *name,
895 const xmlChar *content);
896XMLPUBFUN xmlNodePtr XMLCALL
897 xmlNewDocRawNode (xmlDocPtr doc,
898 xmlNsPtr ns,
899 const xmlChar *name,
900 const xmlChar *content);
901XMLPUBFUN xmlNodePtr XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000902 xmlNewDocFragment (xmlDocPtr doc);
Daniel Veillard652327a2003-09-29 18:02:38 +0000903#endif /* LIBXML_TREE_ENABLED */
Owen Taylor3473f882001-02-23 17:55:21 +0000904
905/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000906 * Navigating.
Owen Taylor3473f882001-02-23 17:55:21 +0000907 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000908XMLPUBFUN long XMLCALL
909 xmlGetLineNo (xmlNodePtr node);
William M. Brack21e4ef22005-01-02 09:53:13 +0000910#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED)
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000911XMLPUBFUN xmlChar * XMLCALL
912 xmlGetNodePath (xmlNodePtr node);
William M. Brack21e4ef22005-01-02 09:53:13 +0000913#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000914XMLPUBFUN xmlNodePtr XMLCALL
915 xmlDocGetRootElement (xmlDocPtr doc);
916XMLPUBFUN xmlNodePtr XMLCALL
917 xmlGetLastChild (xmlNodePtr parent);
918XMLPUBFUN int XMLCALL
919 xmlNodeIsText (xmlNodePtr node);
920XMLPUBFUN int XMLCALL
921 xmlIsBlankNode (xmlNodePtr node);
Owen Taylor3473f882001-02-23 17:55:21 +0000922
923/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000924 * Changing the structure.
Owen Taylor3473f882001-02-23 17:55:21 +0000925 */
William M. Brack21e4ef22005-01-02 09:53:13 +0000926#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000927XMLPUBFUN xmlNodePtr XMLCALL
928 xmlDocSetRootElement (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000929 xmlNodePtr root);
William M. Brack21e4ef22005-01-02 09:53:13 +0000930#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */
931#ifdef LIBXML_TREE_ENABLED
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000932XMLPUBFUN void XMLCALL
933 xmlNodeSetName (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +0000934 const xmlChar *name);
Daniel Veillard652327a2003-09-29 18:02:38 +0000935#endif /* LIBXML_TREE_ENABLED */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000936XMLPUBFUN xmlNodePtr XMLCALL
937 xmlAddChild (xmlNodePtr parent,
Owen Taylor3473f882001-02-23 17:55:21 +0000938 xmlNodePtr cur);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000939XMLPUBFUN xmlNodePtr XMLCALL
940 xmlAddChildList (xmlNodePtr parent,
Owen Taylor3473f882001-02-23 17:55:21 +0000941 xmlNodePtr cur);
William M. Brack21e4ef22005-01-02 09:53:13 +0000942#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000943XMLPUBFUN xmlNodePtr XMLCALL
944 xmlReplaceNode (xmlNodePtr old,
Owen Taylor3473f882001-02-23 17:55:21 +0000945 xmlNodePtr cur);
William M. Brack21e4ef22005-01-02 09:53:13 +0000946#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */
947#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \
948 defined(LIBXML_SCHEMAS_ENABLED)
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000949XMLPUBFUN xmlNodePtr XMLCALL
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000950 xmlAddPrevSibling (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +0000951 xmlNodePtr elem);
William M. Brack21e4ef22005-01-02 09:53:13 +0000952#endif /* LIBXML_TREE_ENABLED || LIBXML_HTML_ENABLED || LIBXML_SCHEMAS_ENABLED */
Daniel Veillard652327a2003-09-29 18:02:38 +0000953XMLPUBFUN xmlNodePtr XMLCALL
954 xmlAddSibling (xmlNodePtr cur,
955 xmlNodePtr elem);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000956XMLPUBFUN xmlNodePtr XMLCALL
957 xmlAddNextSibling (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +0000958 xmlNodePtr elem);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000959XMLPUBFUN void XMLCALL
960 xmlUnlinkNode (xmlNodePtr cur);
961XMLPUBFUN xmlNodePtr XMLCALL
962 xmlTextMerge (xmlNodePtr first,
Owen Taylor3473f882001-02-23 17:55:21 +0000963 xmlNodePtr second);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000964XMLPUBFUN int XMLCALL
965 xmlTextConcat (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000966 const xmlChar *content,
967 int len);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000968XMLPUBFUN void XMLCALL
969 xmlFreeNodeList (xmlNodePtr cur);
970XMLPUBFUN void XMLCALL
971 xmlFreeNode (xmlNodePtr cur);
972XMLPUBFUN void XMLCALL
973 xmlSetTreeDoc (xmlNodePtr tree,
Owen Taylor3473f882001-02-23 17:55:21 +0000974 xmlDocPtr doc);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000975XMLPUBFUN void XMLCALL
976 xmlSetListDoc (xmlNodePtr list,
Owen Taylor3473f882001-02-23 17:55:21 +0000977 xmlDocPtr doc);
Owen Taylor3473f882001-02-23 17:55:21 +0000978/*
Daniel Veillard61f26172002-03-12 18:46:39 +0000979 * Namespaces.
Owen Taylor3473f882001-02-23 17:55:21 +0000980 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000981XMLPUBFUN xmlNsPtr XMLCALL
982 xmlSearchNs (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000983 xmlNodePtr node,
984 const xmlChar *nameSpace);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000985XMLPUBFUN xmlNsPtr XMLCALL
986 xmlSearchNsByHref (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000987 xmlNodePtr node,
988 const xmlChar *href);
Daniel Veillardc8338f12006-10-25 16:06:29 +0000989#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000990XMLPUBFUN xmlNsPtr * XMLCALL
991 xmlGetNsList (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +0000992 xmlNodePtr node);
William M. Brack21e4ef22005-01-02 09:53:13 +0000993#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) */
Daniel Veillard652327a2003-09-29 18:02:38 +0000994
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000995XMLPUBFUN void XMLCALL
996 xmlSetNs (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +0000997 xmlNsPtr ns);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000998XMLPUBFUN xmlNsPtr XMLCALL
999 xmlCopyNamespace (xmlNsPtr cur);
1000XMLPUBFUN xmlNsPtr XMLCALL
1001 xmlCopyNamespaceList (xmlNsPtr cur);
Owen Taylor3473f882001-02-23 17:55:21 +00001002
1003/*
1004 * Changing the content.
1005 */
William M. Brack21e4ef22005-01-02 09:53:13 +00001006#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED)
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001007XMLPUBFUN xmlAttrPtr XMLCALL
1008 xmlSetProp (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +00001009 const xmlChar *name,
1010 const xmlChar *value);
William M. Brack21e4ef22005-01-02 09:53:13 +00001011XMLPUBFUN xmlAttrPtr XMLCALL
1012 xmlSetNsProp (xmlNodePtr node,
1013 xmlNsPtr ns,
1014 const xmlChar *name,
1015 const xmlChar *value);
1016#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001017XMLPUBFUN xmlChar * XMLCALL
1018 xmlGetNoNsProp (xmlNodePtr node,
Daniel Veillard71531f32003-02-05 13:19:53 +00001019 const xmlChar *name);
Daniel Veillard652327a2003-09-29 18:02:38 +00001020XMLPUBFUN xmlChar * XMLCALL
1021 xmlGetProp (xmlNodePtr node,
1022 const xmlChar *name);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001023XMLPUBFUN xmlAttrPtr XMLCALL
1024 xmlHasProp (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +00001025 const xmlChar *name);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001026XMLPUBFUN xmlAttrPtr XMLCALL
1027 xmlHasNsProp (xmlNodePtr node,
Daniel Veillarde95e2392001-06-06 10:46:28 +00001028 const xmlChar *name,
Daniel Veillardca2366a2001-06-11 12:09:01 +00001029 const xmlChar *nameSpace);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001030XMLPUBFUN xmlChar * XMLCALL
1031 xmlGetNsProp (xmlNodePtr node,
Owen Taylor3473f882001-02-23 17:55:21 +00001032 const xmlChar *name,
1033 const xmlChar *nameSpace);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001034XMLPUBFUN xmlNodePtr XMLCALL
1035 xmlStringGetNodeList (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +00001036 const xmlChar *value);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001037XMLPUBFUN xmlNodePtr XMLCALL
1038 xmlStringLenGetNodeList (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +00001039 const xmlChar *value,
1040 int len);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001041XMLPUBFUN xmlChar * XMLCALL
1042 xmlNodeListGetString (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +00001043 xmlNodePtr list,
1044 int inLine);
Daniel Veillard652327a2003-09-29 18:02:38 +00001045#ifdef LIBXML_TREE_ENABLED
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001046XMLPUBFUN xmlChar * XMLCALL
1047 xmlNodeListGetRawString (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +00001048 xmlNodePtr list,
1049 int inLine);
Daniel Veillard652327a2003-09-29 18:02:38 +00001050#endif /* LIBXML_TREE_ENABLED */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001051XMLPUBFUN void XMLCALL
1052 xmlNodeSetContent (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +00001053 const xmlChar *content);
Daniel Veillard652327a2003-09-29 18:02:38 +00001054#ifdef LIBXML_TREE_ENABLED
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001055XMLPUBFUN void XMLCALL
1056 xmlNodeSetContentLen (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +00001057 const xmlChar *content,
1058 int len);
Daniel Veillard652327a2003-09-29 18:02:38 +00001059#endif /* LIBXML_TREE_ENABLED */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001060XMLPUBFUN void XMLCALL
1061 xmlNodeAddContent (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +00001062 const xmlChar *content);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001063XMLPUBFUN void XMLCALL
1064 xmlNodeAddContentLen (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +00001065 const xmlChar *content,
1066 int len);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001067XMLPUBFUN xmlChar * XMLCALL
1068 xmlNodeGetContent (xmlNodePtr cur);
Daniel Veillarddddeede2012-07-16 14:44:26 +08001069
Daniel Veillard78697292003-10-19 20:44:43 +00001070XMLPUBFUN int XMLCALL
1071 xmlNodeBufGetContent (xmlBufferPtr buffer,
1072 xmlNodePtr cur);
Daniel Veillarddddeede2012-07-16 14:44:26 +08001073XMLPUBFUN int XMLCALL
1074 xmlBufGetNodeContent (xmlBufPtr buf,
1075 xmlNodePtr cur);
1076
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001077XMLPUBFUN xmlChar * XMLCALL
1078 xmlNodeGetLang (xmlNodePtr cur);
Daniel Veillard652327a2003-09-29 18:02:38 +00001079XMLPUBFUN int XMLCALL
1080 xmlNodeGetSpacePreserve (xmlNodePtr cur);
1081#ifdef LIBXML_TREE_ENABLED
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001082XMLPUBFUN void XMLCALL
1083 xmlNodeSetLang (xmlNodePtr cur,
Owen Taylor3473f882001-02-23 17:55:21 +00001084 const xmlChar *lang);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001085XMLPUBFUN void XMLCALL
1086 xmlNodeSetSpacePreserve (xmlNodePtr cur,
Daniel Veillardd1640922001-12-17 15:30:10 +00001087 int val);
Daniel Veillard652327a2003-09-29 18:02:38 +00001088#endif /* LIBXML_TREE_ENABLED */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001089XMLPUBFUN xmlChar * XMLCALL
1090 xmlNodeGetBase (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +00001091 xmlNodePtr cur);
William M. Brack21e4ef22005-01-02 09:53:13 +00001092#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED)
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001093XMLPUBFUN void XMLCALL
1094 xmlNodeSetBase (xmlNodePtr cur,
Daniel Veillardf85ce8e2003-09-22 10:24:45 +00001095 const xmlChar *uri);
William M. Brack21e4ef22005-01-02 09:53:13 +00001096#endif
Owen Taylor3473f882001-02-23 17:55:21 +00001097
1098/*
1099 * Removing content.
1100 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001101XMLPUBFUN int XMLCALL
1102 xmlRemoveProp (xmlAttrPtr cur);
William M. Brack21e4ef22005-01-02 09:53:13 +00001103#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001104XMLPUBFUN int XMLCALL
1105 xmlUnsetNsProp (xmlNodePtr node,
Daniel Veillard9403a042001-05-28 11:00:53 +00001106 xmlNsPtr ns,
1107 const xmlChar *name);
William M. Brack21e4ef22005-01-02 09:53:13 +00001108XMLPUBFUN int XMLCALL
1109 xmlUnsetProp (xmlNodePtr node,
1110 const xmlChar *name);
1111#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
Owen Taylor3473f882001-02-23 17:55:21 +00001112
1113/*
Daniel Veillard61f26172002-03-12 18:46:39 +00001114 * Internal, don't use.
Owen Taylor3473f882001-02-23 17:55:21 +00001115 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001116XMLPUBFUN void XMLCALL
1117 xmlBufferWriteCHAR (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +00001118 const xmlChar *string);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001119XMLPUBFUN void XMLCALL
1120 xmlBufferWriteChar (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +00001121 const char *string);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001122XMLPUBFUN void XMLCALL
1123 xmlBufferWriteQuotedString(xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +00001124 const xmlChar *string);
1125
William M. Brack21e4ef22005-01-02 09:53:13 +00001126#ifdef LIBXML_OUTPUT_ENABLED
William M. Bracka9c612c2004-02-01 10:04:05 +00001127XMLPUBFUN void xmlAttrSerializeTxtContent(xmlBufferPtr buf,
1128 xmlDocPtr doc,
1129 xmlAttrPtr attr,
1130 const xmlChar *string);
William M. Brack21e4ef22005-01-02 09:53:13 +00001131#endif /* LIBXML_OUTPUT_ENABLED */
William M. Bracka9c612c2004-02-01 10:04:05 +00001132
William M. Brack21e4ef22005-01-02 09:53:13 +00001133#ifdef LIBXML_TREE_ENABLED
Owen Taylor3473f882001-02-23 17:55:21 +00001134/*
Daniel Veillard61f26172002-03-12 18:46:39 +00001135 * Namespace handling.
Owen Taylor3473f882001-02-23 17:55:21 +00001136 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001137XMLPUBFUN int XMLCALL
1138 xmlReconciliateNs (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +00001139 xmlNodePtr tree);
William M. Brack21e4ef22005-01-02 09:53:13 +00001140#endif
Owen Taylor3473f882001-02-23 17:55:21 +00001141
Daniel Veillarda9cce9c2003-09-29 13:20:24 +00001142#ifdef LIBXML_OUTPUT_ENABLED
Owen Taylor3473f882001-02-23 17:55:21 +00001143/*
Daniel Veillard61f26172002-03-12 18:46:39 +00001144 * Saving.
Owen Taylor3473f882001-02-23 17:55:21 +00001145 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001146XMLPUBFUN void XMLCALL
1147 xmlDocDumpFormatMemory (xmlDocPtr cur,
Daniel Veillard963d2ae2002-01-20 22:08:18 +00001148 xmlChar **mem,
Owen Taylor3473f882001-02-23 17:55:21 +00001149 int *size,
1150 int format);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001151XMLPUBFUN void XMLCALL
1152 xmlDocDumpMemory (xmlDocPtr cur,
Daniel Veillard963d2ae2002-01-20 22:08:18 +00001153 xmlChar **mem,
Owen Taylor3473f882001-02-23 17:55:21 +00001154 int *size);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001155XMLPUBFUN void XMLCALL
1156 xmlDocDumpMemoryEnc (xmlDocPtr out_doc,
Owen Taylor3473f882001-02-23 17:55:21 +00001157 xmlChar **doc_txt_ptr,
1158 int * doc_txt_len,
1159 const char *txt_encoding);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001160XMLPUBFUN void XMLCALL
1161 xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc,
Owen Taylor3473f882001-02-23 17:55:21 +00001162 xmlChar **doc_txt_ptr,
1163 int * doc_txt_len,
1164 const char *txt_encoding,
1165 int format);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001166XMLPUBFUN int XMLCALL
1167 xmlDocFormatDump (FILE *f,
Daniel Veillard9e412302002-06-10 15:59:44 +00001168 xmlDocPtr cur,
1169 int format);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001170XMLPUBFUN int XMLCALL
1171 xmlDocDump (FILE *f,
Owen Taylor3473f882001-02-23 17:55:21 +00001172 xmlDocPtr cur);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001173XMLPUBFUN void XMLCALL
1174 xmlElemDump (FILE *f,
Owen Taylor3473f882001-02-23 17:55:21 +00001175 xmlDocPtr doc,
1176 xmlNodePtr cur);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001177XMLPUBFUN int XMLCALL
1178 xmlSaveFile (const char *filename,
Owen Taylor3473f882001-02-23 17:55:21 +00001179 xmlDocPtr cur);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001180XMLPUBFUN int XMLCALL
1181 xmlSaveFormatFile (const char *filename,
Daniel Veillard67fee942001-04-26 18:59:03 +00001182 xmlDocPtr cur,
1183 int format);
Daniel Veillarddddeede2012-07-16 14:44:26 +08001184XMLPUBFUN size_t XMLCALL
1185 xmlBufNodeDump (xmlBufPtr buf,
1186 xmlDocPtr doc,
1187 xmlNodePtr cur,
1188 int level,
1189 int format);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001190XMLPUBFUN int XMLCALL
1191 xmlNodeDump (xmlBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +00001192 xmlDocPtr doc,
1193 xmlNodePtr cur,
1194 int level,
1195 int format);
1196
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001197XMLPUBFUN int XMLCALL
1198 xmlSaveFileTo (xmlOutputBufferPtr buf,
Owen Taylor3473f882001-02-23 17:55:21 +00001199 xmlDocPtr cur,
1200 const char *encoding);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001201XMLPUBFUN int XMLCALL
1202 xmlSaveFormatFileTo (xmlOutputBufferPtr buf,
CET 2001 Daniel Veillard5a37bde2001-11-01 14:31:22 +00001203 xmlDocPtr cur,
1204 const char *encoding,
1205 int format);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001206XMLPUBFUN void XMLCALL
1207 xmlNodeDumpOutput (xmlOutputBufferPtr buf,
CET 2001 Daniel Veillard5a37bde2001-11-01 14:31:22 +00001208 xmlDocPtr doc,
1209 xmlNodePtr cur,
1210 int level,
1211 int format,
1212 const char *encoding);
Owen Taylor3473f882001-02-23 17:55:21 +00001213
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001214XMLPUBFUN int XMLCALL
1215 xmlSaveFormatFileEnc (const char *filename,
Daniel Veillardd1640922001-12-17 15:30:10 +00001216 xmlDocPtr cur,
1217 const char *encoding,
1218 int format);
Daniel Veillardf012a642001-07-23 19:10:52 +00001219
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001220XMLPUBFUN int XMLCALL
1221 xmlSaveFileEnc (const char *filename,
Owen Taylor3473f882001-02-23 17:55:21 +00001222 xmlDocPtr cur,
1223 const char *encoding);
1224
Daniel Veillarda9cce9c2003-09-29 13:20:24 +00001225#endif /* LIBXML_OUTPUT_ENABLED */
Owen Taylor3473f882001-02-23 17:55:21 +00001226/*
Daniel Veillardd5c2f922002-11-21 14:10:52 +00001227 * XHTML
1228 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001229XMLPUBFUN int XMLCALL
1230 xmlIsXHTML (const xmlChar *systemID,
Daniel Veillardd5c2f922002-11-21 14:10:52 +00001231 const xmlChar *publicID);
1232
1233/*
Daniel Veillard61f26172002-03-12 18:46:39 +00001234 * Compression.
Owen Taylor3473f882001-02-23 17:55:21 +00001235 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001236XMLPUBFUN int XMLCALL
1237 xmlGetDocCompressMode (xmlDocPtr doc);
1238XMLPUBFUN void XMLCALL
1239 xmlSetDocCompressMode (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +00001240 int mode);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +00001241XMLPUBFUN int XMLCALL
1242 xmlGetCompressMode (void);
1243XMLPUBFUN void XMLCALL
1244 xmlSetCompressMode (int mode);
Owen Taylor3473f882001-02-23 17:55:21 +00001245
Kasimier T. Buchcikbc0e3c62005-06-27 10:28:23 +00001246/*
1247* DOM-wrapper helper functions.
1248*/
Kasimier T. Buchcik4d9c9482005-06-27 15:04:46 +00001249XMLPUBFUN xmlDOMWrapCtxtPtr XMLCALL
1250 xmlDOMWrapNewCtxt (void);
1251XMLPUBFUN void XMLCALL
1252 xmlDOMWrapFreeCtxt (xmlDOMWrapCtxtPtr ctxt);
Kasimier T. Buchcikbc0e3c62005-06-27 10:28:23 +00001253XMLPUBFUN int XMLCALL
1254 xmlDOMWrapReconcileNamespaces(xmlDOMWrapCtxtPtr ctxt,
1255 xmlNodePtr elem,
1256 int options);
1257XMLPUBFUN int XMLCALL
1258 xmlDOMWrapAdoptNode (xmlDOMWrapCtxtPtr ctxt,
1259 xmlDocPtr sourceDoc,
1260 xmlNodePtr node,
1261 xmlDocPtr destDoc,
1262 xmlNodePtr destParent,
1263 int options);
1264XMLPUBFUN int XMLCALL
1265 xmlDOMWrapRemoveNode (xmlDOMWrapCtxtPtr ctxt,
1266 xmlDocPtr doc,
1267 xmlNodePtr node,
1268 int options);
Kasimier T. Buchcika81d9192006-02-03 16:37:44 +00001269XMLPUBFUN int XMLCALL
1270 xmlDOMWrapCloneNode (xmlDOMWrapCtxtPtr ctxt,
1271 xmlDocPtr sourceDoc,
1272 xmlNodePtr node,
1273 xmlNodePtr *clonedNode,
1274 xmlDocPtr destDoc,
1275 xmlNodePtr destParent,
1276 int deep,
1277 int options);
Kasimier T. Buchcikbc0e3c62005-06-27 10:28:23 +00001278
Daniel Veillardbe2bd6a2008-11-27 15:26:28 +00001279#ifdef LIBXML_TREE_ENABLED
1280/*
1281 * 5 interfaces from DOM ElementTraversal, but different in entities
1282 * traversal.
1283 */
1284XMLPUBFUN unsigned long XMLCALL
1285 xmlChildElementCount (xmlNodePtr parent);
1286XMLPUBFUN xmlNodePtr XMLCALL
1287 xmlNextElementSibling (xmlNodePtr node);
1288XMLPUBFUN xmlNodePtr XMLCALL
1289 xmlFirstElementChild (xmlNodePtr parent);
1290XMLPUBFUN xmlNodePtr XMLCALL
1291 xmlLastElementChild (xmlNodePtr parent);
1292XMLPUBFUN xmlNodePtr XMLCALL
1293 xmlPreviousElementSibling (xmlNodePtr node);
1294#endif
Owen Taylor3473f882001-02-23 17:55:21 +00001295#ifdef __cplusplus
1296}
1297#endif
Daniel Veillard6c4ffaf2002-02-11 08:54:05 +00001298#ifndef __XML_PARSER_H__
1299#include <libxml/xmlmemory.h>
1300#endif
Owen Taylor3473f882001-02-23 17:55:21 +00001301
1302#endif /* __XML_TREE_H__ */
1303