Synchronize with trunk r58457.
[reactos.git] / include / reactos / libs / libxml / tree.h
1 /*
2 * Summary: interfaces for tree manipulation
3 * Description: this module describes the structures found in an tree resulting
4 * from an XML or HTML parsing, as well as the API provided for
5 * various processing on that tree
6 *
7 * Copy: See Copyright for the status of this software.
8 *
9 * Author: Daniel Veillard
10 */
11
12 #ifndef __XML_TREE_H__
13 #define __XML_TREE_H__
14
15 #include <stdio.h>
16 #include <limits.h>
17 #include <libxml/xmlversion.h>
18 #include <libxml/xmlstring.h>
19
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23
24 /*
25 * Some of the basic types pointer to structures:
26 */
27 /* xmlIO.h */
28 typedef struct _xmlParserInputBuffer xmlParserInputBuffer;
29 typedef xmlParserInputBuffer *xmlParserInputBufferPtr;
30
31 typedef struct _xmlOutputBuffer xmlOutputBuffer;
32 typedef xmlOutputBuffer *xmlOutputBufferPtr;
33
34 /* parser.h */
35 typedef struct _xmlParserInput xmlParserInput;
36 typedef xmlParserInput *xmlParserInputPtr;
37
38 typedef struct _xmlParserCtxt xmlParserCtxt;
39 typedef xmlParserCtxt *xmlParserCtxtPtr;
40
41 typedef struct _xmlSAXLocator xmlSAXLocator;
42 typedef xmlSAXLocator *xmlSAXLocatorPtr;
43
44 typedef struct _xmlSAXHandler xmlSAXHandler;
45 typedef xmlSAXHandler *xmlSAXHandlerPtr;
46
47 /* entities.h */
48 typedef struct _xmlEntity xmlEntity;
49 typedef xmlEntity *xmlEntityPtr;
50
51 /**
52 * BASE_BUFFER_SIZE:
53 *
54 * default buffer size 4000.
55 */
56 #define BASE_BUFFER_SIZE 4096
57
58 /**
59 * 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 /**
68 * 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
74 typedef enum {
75 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 */
78 XML_BUFFER_ALLOC_IO, /* special allocation scheme used for I/O */
79 XML_BUFFER_ALLOC_HYBRID /* exact up to a threshold, and doubleit thereafter */
80 } xmlBufferAllocationScheme;
81
82 /**
83 * xmlBuffer:
84 *
85 * A buffer structure, this old construct is limited to 2GB and
86 * is being deprecated, use API with xmlBuf instead
87 */
88 typedef struct _xmlBuffer xmlBuffer;
89 typedef xmlBuffer *xmlBufferPtr;
90 struct _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 */
95 xmlChar *contentIO; /* in IO mode we may have a different base */
96 };
97
98 /**
99 * xmlBuf:
100 *
101 * A buffer structure, new one, the actual structure internals are not public
102 */
103
104 typedef 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
113 typedef xmlBuf *xmlBufPtr;
114
115 /*
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 */
119 XMLPUBFUN xmlChar* XMLCALL xmlBufContent (const xmlBufPtr buf);
120 XMLPUBFUN xmlChar* XMLCALL xmlBufEnd (const xmlBufPtr buf);
121 XMLPUBFUN size_t XMLCALL xmlBufUse (xmlBufPtr buf);
122 XMLPUBFUN size_t XMLCALL xmlBufShrink (xmlBufPtr buf, size_t len);
123
124 /*
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 */
131 #define LIBXML2_NEW_BUFFER
132
133 /**
134 * XML_XML_NAMESPACE:
135 *
136 * This is the namespace for the special xml: prefix predefined in the
137 * XML Namespace specification.
138 */
139 #define XML_XML_NAMESPACE \
140 (const xmlChar *) "http://www.w3.org/XML/1998/namespace"
141
142 /**
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
149 /*
150 * The different element types carried by an XML tree.
151 *
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 */
158 typedef 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
179 #ifdef LIBXML_DOCB_ENABLED
180 ,XML_DOCB_DOCUMENT_NODE= 21
181 #endif
182 } xmlElementType;
183
184
185 /**
186 * xmlNotation:
187 *
188 * A DTD Notation definition.
189 */
190
191 typedef struct _xmlNotation xmlNotation;
192 typedef xmlNotation *xmlNotationPtr;
193 struct _xmlNotation {
194 const xmlChar *name; /* Notation name */
195 const xmlChar *PublicID; /* Public identifier, if any */
196 const xmlChar *SystemID; /* System identifier, if any */
197 };
198
199 /**
200 * xmlAttributeType:
201 *
202 * A DTD Attribute type definition.
203 */
204
205 typedef 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
218 /**
219 * xmlAttributeDefault:
220 *
221 * A DTD Attribute default definition.
222 */
223
224 typedef enum {
225 XML_ATTRIBUTE_NONE = 1,
226 XML_ATTRIBUTE_REQUIRED,
227 XML_ATTRIBUTE_IMPLIED,
228 XML_ATTRIBUTE_FIXED
229 } xmlAttributeDefault;
230
231 /**
232 * xmlEnumeration:
233 *
234 * List structure used when there is an enumeration in DTDs.
235 */
236
237 typedef struct _xmlEnumeration xmlEnumeration;
238 typedef xmlEnumeration *xmlEnumerationPtr;
239 struct _xmlEnumeration {
240 struct _xmlEnumeration *next; /* next one */
241 const xmlChar *name; /* Enumeration name */
242 };
243
244 /**
245 * xmlAttribute:
246 *
247 * An Attribute declaration in a DTD.
248 */
249
250 typedef struct _xmlAttribute xmlAttribute;
251 typedef xmlAttribute *xmlAttributePtr;
252 struct _xmlAttribute {
253 void *_private; /* application data */
254 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
272 /**
273 * xmlElementContentType:
274 *
275 * Possible definitions of element content types.
276 */
277 typedef 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
284 /**
285 * xmlElementContentOccur:
286 *
287 * Possible definitions of element content occurrences.
288 */
289 typedef 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
296 /**
297 * xmlElementContent:
298 *
299 * An XML Element content as stored after parsing an element definition
300 * in a DTD.
301 */
302
303 typedef struct _xmlElementContent xmlElementContent;
304 typedef xmlElementContent *xmlElementContentPtr;
305 struct _xmlElementContent {
306 xmlElementContentType type; /* PCDATA, ELEMENT, SEQ or OR */
307 xmlElementContentOccur ocur; /* ONCE, OPT, MULT or PLUS */
308 const xmlChar *name; /* Element name */
309 struct _xmlElementContent *c1; /* first child */
310 struct _xmlElementContent *c2; /* second child */
311 struct _xmlElementContent *parent; /* parent */
312 const xmlChar *prefix; /* Namespace prefix */
313 };
314
315 /**
316 * xmlElementTypeVal:
317 *
318 * The different possibilities for an element content type.
319 */
320
321 typedef enum {
322 XML_ELEMENT_TYPE_UNDEFINED = 0,
323 XML_ELEMENT_TYPE_EMPTY = 1,
324 XML_ELEMENT_TYPE_ANY,
325 XML_ELEMENT_TYPE_MIXED,
326 XML_ELEMENT_TYPE_ELEMENT
327 } xmlElementTypeVal;
328
329 #ifdef __cplusplus
330 }
331 #endif
332 #include <libxml/xmlregexp.h>
333 #ifdef __cplusplus
334 extern "C" {
335 #endif
336
337 /**
338 * xmlElement:
339 *
340 * An XML Element declaration from a DTD.
341 */
342
343 typedef struct _xmlElement xmlElement;
344 typedef xmlElement *xmlElementPtr;
345 struct _xmlElement {
346 void *_private; /* application data */
347 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 */
360 #ifdef LIBXML_REGEXP_ENABLED
361 xmlRegexpPtr contModel; /* the validating regexp */
362 #else
363 void *contModel;
364 #endif
365 };
366
367
368 /**
369 * XML_LOCAL_NAMESPACE:
370 *
371 * A namespace declaration node.
372 */
373 #define XML_LOCAL_NAMESPACE XML_NAMESPACE_DECL
374 typedef xmlElementType xmlNsType;
375
376 /**
377 * xmlNs:
378 *
379 * An XML namespace.
380 * Note that prefix == NULL is valid, it defines the default namespace
381 * within the subtree (until overridden).
382 *
383 * xmlNsType is unified with xmlElementType.
384 */
385
386 typedef struct _xmlNs xmlNs;
387 typedef xmlNs *xmlNsPtr;
388 struct _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 */
393 void *_private; /* application data */
394 struct _xmlDoc *context; /* normally an xmlDoc */
395 };
396
397 /**
398 * xmlDtd:
399 *
400 * An XML DTD, as defined by <!DOCTYPE ... There is actually one for
401 * the internal subset and for the external subset.
402 */
403 typedef struct _xmlDtd xmlDtd;
404 typedef xmlDtd *xmlDtdPtr;
405 struct _xmlDtd {
406 void *_private; /* application data */
407 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
426 /**
427 * xmlAttr:
428 *
429 * An attribute on an XML node.
430 */
431 typedef struct _xmlAttr xmlAttr;
432 typedef xmlAttr *xmlAttrPtr;
433 struct _xmlAttr {
434 void *_private; /* application data */
435 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 */
445 void *psvi; /* for type/PSVI informations */
446 };
447
448 /**
449 * xmlID:
450 *
451 * An XML ID instance.
452 */
453
454 typedef struct _xmlID xmlID;
455 typedef xmlID *xmlIDPtr;
456 struct _xmlID {
457 struct _xmlID *next; /* next ID */
458 const xmlChar *value; /* The ID name */
459 xmlAttrPtr attr; /* The attribute holding it */
460 const xmlChar *name; /* The attribute if attr is not available */
461 int lineno; /* The line number if attr is not available */
462 struct _xmlDoc *doc; /* The document holding the ID */
463 };
464
465 /**
466 * xmlRef:
467 *
468 * An XML IDREF instance.
469 */
470
471 typedef struct _xmlRef xmlRef;
472 typedef xmlRef *xmlRefPtr;
473 struct _xmlRef {
474 struct _xmlRef *next; /* next Ref */
475 const xmlChar *value; /* The Ref name */
476 xmlAttrPtr attr; /* The attribute holding it */
477 const xmlChar *name; /* The attribute if attr is not available */
478 int lineno; /* The line number if attr is not available */
479 };
480
481 /**
482 * xmlNode:
483 *
484 * A node in an XML tree.
485 */
486 typedef struct _xmlNode xmlNode;
487 typedef xmlNode *xmlNodePtr;
488 struct _xmlNode {
489 void *_private; /* application data */
490 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 */
498
499 /* End of common part */
500 xmlNs *ns; /* pointer to the associated namespace */
501 xmlChar *content; /* the content */
502 struct _xmlAttr *properties;/* properties list */
503 xmlNs *nsDef; /* namespace definitions on this node */
504 void *psvi; /* for type/PSVI informations */
505 unsigned short line; /* line number */
506 unsigned short extra; /* extra data for XPath/XSLT */
507 };
508
509 /**
510 * XML_GET_CONTENT:
511 *
512 * Macro to extract the content pointer of a node.
513 */
514 #define XML_GET_CONTENT(n) \
515 ((n)->type == XML_ELEMENT_NODE ? NULL : (n)->content)
516
517 /**
518 * XML_GET_LINE:
519 *
520 * Macro to extract the line number of an element node.
521 */
522 #define XML_GET_LINE(n) \
523 (xmlGetLineNo(n))
524
525 /**
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 */
531 typedef 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;
542
543 /**
544 * xmlDoc:
545 *
546 * An XML document.
547 */
548 typedef struct _xmlDoc xmlDoc;
549 typedef xmlDoc *xmlDocPtr;
550 struct _xmlDoc {
551 void *_private; /* application data */
552 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 */
563 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 */
569 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 */
579 struct _xmlDict *dict; /* dict used to allocate names or NULL */
580 void *psvi; /* for type/PSVI informations */
581 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 */
585 };
586
587
588 typedef struct _xmlDOMWrapCtxt xmlDOMWrapCtxt;
589 typedef xmlDOMWrapCtxt *xmlDOMWrapCtxtPtr;
590
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 */
602 typedef 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 */
612 struct _xmlDOMWrapCtxt {
613 void * _private;
614 /*
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;
628 };
629
630 /**
631 * xmlChildrenNode:
632 *
633 * Macro for compatibility naming layer with libxml1. Maps
634 * to "children."
635 */
636 #ifndef xmlChildrenNode
637 #define xmlChildrenNode children
638 #endif
639
640 /**
641 * xmlRootNode:
642 *
643 * Macro for compatibility naming layer with libxml1. Maps
644 * to "children".
645 */
646 #ifndef xmlRootNode
647 #define xmlRootNode children
648 #endif
649
650 /*
651 * Variables.
652 */
653
654 /*
655 * Some helper functions
656 */
657 #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)
658 XMLPUBFUN int XMLCALL
659 xmlValidateNCName (const xmlChar *value,
660 int space);
661 #endif
662
663 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
664 XMLPUBFUN int XMLCALL
665 xmlValidateQName (const xmlChar *value,
666 int space);
667 XMLPUBFUN int XMLCALL
668 xmlValidateName (const xmlChar *value,
669 int space);
670 XMLPUBFUN int XMLCALL
671 xmlValidateNMToken (const xmlChar *value,
672 int space);
673 #endif
674
675 XMLPUBFUN xmlChar * XMLCALL
676 xmlBuildQName (const xmlChar *ncname,
677 const xmlChar *prefix,
678 xmlChar *memory,
679 int len);
680 XMLPUBFUN xmlChar * XMLCALL
681 xmlSplitQName2 (const xmlChar *name,
682 xmlChar **prefix);
683 XMLPUBFUN const xmlChar * XMLCALL
684 xmlSplitQName3 (const xmlChar *name,
685 int *len);
686
687 /*
688 * Handling Buffers, the old ones see @xmlBuf for the new ones.
689 */
690
691 XMLPUBFUN void XMLCALL
692 xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme);
693 XMLPUBFUN xmlBufferAllocationScheme XMLCALL
694 xmlGetBufferAllocationScheme(void);
695
696 XMLPUBFUN xmlBufferPtr XMLCALL
697 xmlBufferCreate (void);
698 XMLPUBFUN xmlBufferPtr XMLCALL
699 xmlBufferCreateSize (size_t size);
700 XMLPUBFUN xmlBufferPtr XMLCALL
701 xmlBufferCreateStatic (void *mem,
702 size_t size);
703 XMLPUBFUN int XMLCALL
704 xmlBufferResize (xmlBufferPtr buf,
705 unsigned int size);
706 XMLPUBFUN void XMLCALL
707 xmlBufferFree (xmlBufferPtr buf);
708 XMLPUBFUN int XMLCALL
709 xmlBufferDump (FILE *file,
710 xmlBufferPtr buf);
711 XMLPUBFUN int XMLCALL
712 xmlBufferAdd (xmlBufferPtr buf,
713 const xmlChar *str,
714 int len);
715 XMLPUBFUN int XMLCALL
716 xmlBufferAddHead (xmlBufferPtr buf,
717 const xmlChar *str,
718 int len);
719 XMLPUBFUN int XMLCALL
720 xmlBufferCat (xmlBufferPtr buf,
721 const xmlChar *str);
722 XMLPUBFUN int XMLCALL
723 xmlBufferCCat (xmlBufferPtr buf,
724 const char *str);
725 XMLPUBFUN int XMLCALL
726 xmlBufferShrink (xmlBufferPtr buf,
727 unsigned int len);
728 XMLPUBFUN int XMLCALL
729 xmlBufferGrow (xmlBufferPtr buf,
730 unsigned int len);
731 XMLPUBFUN void XMLCALL
732 xmlBufferEmpty (xmlBufferPtr buf);
733 XMLPUBFUN const xmlChar* XMLCALL
734 xmlBufferContent (const xmlBufferPtr buf);
735 XMLPUBFUN xmlChar* XMLCALL
736 xmlBufferDetach (xmlBufferPtr buf);
737 XMLPUBFUN void XMLCALL
738 xmlBufferSetAllocationScheme(xmlBufferPtr buf,
739 xmlBufferAllocationScheme scheme);
740 XMLPUBFUN int XMLCALL
741 xmlBufferLength (const xmlBufferPtr buf);
742
743 /*
744 * Creating/freeing new structures.
745 */
746 XMLPUBFUN xmlDtdPtr XMLCALL
747 xmlCreateIntSubset (xmlDocPtr doc,
748 const xmlChar *name,
749 const xmlChar *ExternalID,
750 const xmlChar *SystemID);
751 XMLPUBFUN xmlDtdPtr XMLCALL
752 xmlNewDtd (xmlDocPtr doc,
753 const xmlChar *name,
754 const xmlChar *ExternalID,
755 const xmlChar *SystemID);
756 XMLPUBFUN xmlDtdPtr XMLCALL
757 xmlGetIntSubset (xmlDocPtr doc);
758 XMLPUBFUN void XMLCALL
759 xmlFreeDtd (xmlDtdPtr cur);
760 #ifdef LIBXML_LEGACY_ENABLED
761 XMLPUBFUN xmlNsPtr XMLCALL
762 xmlNewGlobalNs (xmlDocPtr doc,
763 const xmlChar *href,
764 const xmlChar *prefix);
765 #endif /* LIBXML_LEGACY_ENABLED */
766 XMLPUBFUN xmlNsPtr XMLCALL
767 xmlNewNs (xmlNodePtr node,
768 const xmlChar *href,
769 const xmlChar *prefix);
770 XMLPUBFUN void XMLCALL
771 xmlFreeNs (xmlNsPtr cur);
772 XMLPUBFUN void XMLCALL
773 xmlFreeNsList (xmlNsPtr cur);
774 XMLPUBFUN xmlDocPtr XMLCALL
775 xmlNewDoc (const xmlChar *version);
776 XMLPUBFUN void XMLCALL
777 xmlFreeDoc (xmlDocPtr cur);
778 XMLPUBFUN xmlAttrPtr XMLCALL
779 xmlNewDocProp (xmlDocPtr doc,
780 const xmlChar *name,
781 const xmlChar *value);
782 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \
783 defined(LIBXML_SCHEMAS_ENABLED)
784 XMLPUBFUN xmlAttrPtr XMLCALL
785 xmlNewProp (xmlNodePtr node,
786 const xmlChar *name,
787 const xmlChar *value);
788 #endif
789 XMLPUBFUN xmlAttrPtr XMLCALL
790 xmlNewNsProp (xmlNodePtr node,
791 xmlNsPtr ns,
792 const xmlChar *name,
793 const xmlChar *value);
794 XMLPUBFUN xmlAttrPtr XMLCALL
795 xmlNewNsPropEatName (xmlNodePtr node,
796 xmlNsPtr ns,
797 xmlChar *name,
798 const xmlChar *value);
799 XMLPUBFUN void XMLCALL
800 xmlFreePropList (xmlAttrPtr cur);
801 XMLPUBFUN void XMLCALL
802 xmlFreeProp (xmlAttrPtr cur);
803 XMLPUBFUN xmlAttrPtr XMLCALL
804 xmlCopyProp (xmlNodePtr target,
805 xmlAttrPtr cur);
806 XMLPUBFUN xmlAttrPtr XMLCALL
807 xmlCopyPropList (xmlNodePtr target,
808 xmlAttrPtr cur);
809 #ifdef LIBXML_TREE_ENABLED
810 XMLPUBFUN xmlDtdPtr XMLCALL
811 xmlCopyDtd (xmlDtdPtr dtd);
812 #endif /* LIBXML_TREE_ENABLED */
813 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
814 XMLPUBFUN xmlDocPtr XMLCALL
815 xmlCopyDoc (xmlDocPtr doc,
816 int recursive);
817 #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
818 /*
819 * Creating new nodes.
820 */
821 XMLPUBFUN xmlNodePtr XMLCALL
822 xmlNewDocNode (xmlDocPtr doc,
823 xmlNsPtr ns,
824 const xmlChar *name,
825 const xmlChar *content);
826 XMLPUBFUN xmlNodePtr XMLCALL
827 xmlNewDocNodeEatName (xmlDocPtr doc,
828 xmlNsPtr ns,
829 xmlChar *name,
830 const xmlChar *content);
831 XMLPUBFUN xmlNodePtr XMLCALL
832 xmlNewNode (xmlNsPtr ns,
833 const xmlChar *name);
834 XMLPUBFUN xmlNodePtr XMLCALL
835 xmlNewNodeEatName (xmlNsPtr ns,
836 xmlChar *name);
837 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
838 XMLPUBFUN xmlNodePtr XMLCALL
839 xmlNewChild (xmlNodePtr parent,
840 xmlNsPtr ns,
841 const xmlChar *name,
842 const xmlChar *content);
843 #endif
844 XMLPUBFUN xmlNodePtr XMLCALL
845 xmlNewDocText (xmlDocPtr doc,
846 const xmlChar *content);
847 XMLPUBFUN xmlNodePtr XMLCALL
848 xmlNewText (const xmlChar *content);
849 XMLPUBFUN xmlNodePtr XMLCALL
850 xmlNewDocPI (xmlDocPtr doc,
851 const xmlChar *name,
852 const xmlChar *content);
853 XMLPUBFUN xmlNodePtr XMLCALL
854 xmlNewPI (const xmlChar *name,
855 const xmlChar *content);
856 XMLPUBFUN xmlNodePtr XMLCALL
857 xmlNewDocTextLen (xmlDocPtr doc,
858 const xmlChar *content,
859 int len);
860 XMLPUBFUN xmlNodePtr XMLCALL
861 xmlNewTextLen (const xmlChar *content,
862 int len);
863 XMLPUBFUN xmlNodePtr XMLCALL
864 xmlNewDocComment (xmlDocPtr doc,
865 const xmlChar *content);
866 XMLPUBFUN xmlNodePtr XMLCALL
867 xmlNewComment (const xmlChar *content);
868 XMLPUBFUN xmlNodePtr XMLCALL
869 xmlNewCDataBlock (xmlDocPtr doc,
870 const xmlChar *content,
871 int len);
872 XMLPUBFUN xmlNodePtr XMLCALL
873 xmlNewCharRef (xmlDocPtr doc,
874 const xmlChar *name);
875 XMLPUBFUN xmlNodePtr XMLCALL
876 xmlNewReference (xmlDocPtr doc,
877 const xmlChar *name);
878 XMLPUBFUN xmlNodePtr XMLCALL
879 xmlCopyNode (const xmlNodePtr node,
880 int recursive);
881 XMLPUBFUN xmlNodePtr XMLCALL
882 xmlDocCopyNode (const xmlNodePtr node,
883 xmlDocPtr doc,
884 int recursive);
885 XMLPUBFUN xmlNodePtr XMLCALL
886 xmlDocCopyNodeList (xmlDocPtr doc,
887 const xmlNodePtr node);
888 XMLPUBFUN xmlNodePtr XMLCALL
889 xmlCopyNodeList (const xmlNodePtr node);
890 #ifdef LIBXML_TREE_ENABLED
891 XMLPUBFUN xmlNodePtr XMLCALL
892 xmlNewTextChild (xmlNodePtr parent,
893 xmlNsPtr ns,
894 const xmlChar *name,
895 const xmlChar *content);
896 XMLPUBFUN xmlNodePtr XMLCALL
897 xmlNewDocRawNode (xmlDocPtr doc,
898 xmlNsPtr ns,
899 const xmlChar *name,
900 const xmlChar *content);
901 XMLPUBFUN xmlNodePtr XMLCALL
902 xmlNewDocFragment (xmlDocPtr doc);
903 #endif /* LIBXML_TREE_ENABLED */
904
905 /*
906 * Navigating.
907 */
908 XMLPUBFUN long XMLCALL
909 xmlGetLineNo (xmlNodePtr node);
910 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED)
911 XMLPUBFUN xmlChar * XMLCALL
912 xmlGetNodePath (xmlNodePtr node);
913 #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) */
914 XMLPUBFUN xmlNodePtr XMLCALL
915 xmlDocGetRootElement (xmlDocPtr doc);
916 XMLPUBFUN xmlNodePtr XMLCALL
917 xmlGetLastChild (xmlNodePtr parent);
918 XMLPUBFUN int XMLCALL
919 xmlNodeIsText (xmlNodePtr node);
920 XMLPUBFUN int XMLCALL
921 xmlIsBlankNode (xmlNodePtr node);
922
923 /*
924 * Changing the structure.
925 */
926 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)
927 XMLPUBFUN xmlNodePtr XMLCALL
928 xmlDocSetRootElement (xmlDocPtr doc,
929 xmlNodePtr root);
930 #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */
931 #ifdef LIBXML_TREE_ENABLED
932 XMLPUBFUN void XMLCALL
933 xmlNodeSetName (xmlNodePtr cur,
934 const xmlChar *name);
935 #endif /* LIBXML_TREE_ENABLED */
936 XMLPUBFUN xmlNodePtr XMLCALL
937 xmlAddChild (xmlNodePtr parent,
938 xmlNodePtr cur);
939 XMLPUBFUN xmlNodePtr XMLCALL
940 xmlAddChildList (xmlNodePtr parent,
941 xmlNodePtr cur);
942 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)
943 XMLPUBFUN xmlNodePtr XMLCALL
944 xmlReplaceNode (xmlNodePtr old,
945 xmlNodePtr cur);
946 #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */
947 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \
948 defined(LIBXML_SCHEMAS_ENABLED)
949 XMLPUBFUN xmlNodePtr XMLCALL
950 xmlAddPrevSibling (xmlNodePtr cur,
951 xmlNodePtr elem);
952 #endif /* LIBXML_TREE_ENABLED || LIBXML_HTML_ENABLED || LIBXML_SCHEMAS_ENABLED */
953 XMLPUBFUN xmlNodePtr XMLCALL
954 xmlAddSibling (xmlNodePtr cur,
955 xmlNodePtr elem);
956 XMLPUBFUN xmlNodePtr XMLCALL
957 xmlAddNextSibling (xmlNodePtr cur,
958 xmlNodePtr elem);
959 XMLPUBFUN void XMLCALL
960 xmlUnlinkNode (xmlNodePtr cur);
961 XMLPUBFUN xmlNodePtr XMLCALL
962 xmlTextMerge (xmlNodePtr first,
963 xmlNodePtr second);
964 XMLPUBFUN int XMLCALL
965 xmlTextConcat (xmlNodePtr node,
966 const xmlChar *content,
967 int len);
968 XMLPUBFUN void XMLCALL
969 xmlFreeNodeList (xmlNodePtr cur);
970 XMLPUBFUN void XMLCALL
971 xmlFreeNode (xmlNodePtr cur);
972 XMLPUBFUN void XMLCALL
973 xmlSetTreeDoc (xmlNodePtr tree,
974 xmlDocPtr doc);
975 XMLPUBFUN void XMLCALL
976 xmlSetListDoc (xmlNodePtr list,
977 xmlDocPtr doc);
978 /*
979 * Namespaces.
980 */
981 XMLPUBFUN xmlNsPtr XMLCALL
982 xmlSearchNs (xmlDocPtr doc,
983 xmlNodePtr node,
984 const xmlChar *nameSpace);
985 XMLPUBFUN xmlNsPtr XMLCALL
986 xmlSearchNsByHref (xmlDocPtr doc,
987 xmlNodePtr node,
988 const xmlChar *href);
989 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
990 XMLPUBFUN xmlNsPtr * XMLCALL
991 xmlGetNsList (xmlDocPtr doc,
992 xmlNodePtr node);
993 #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) */
994
995 XMLPUBFUN void XMLCALL
996 xmlSetNs (xmlNodePtr node,
997 xmlNsPtr ns);
998 XMLPUBFUN xmlNsPtr XMLCALL
999 xmlCopyNamespace (xmlNsPtr cur);
1000 XMLPUBFUN xmlNsPtr XMLCALL
1001 xmlCopyNamespaceList (xmlNsPtr cur);
1002
1003 /*
1004 * Changing the content.
1005 */
1006 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED)
1007 XMLPUBFUN xmlAttrPtr XMLCALL
1008 xmlSetProp (xmlNodePtr node,
1009 const xmlChar *name,
1010 const xmlChar *value);
1011 XMLPUBFUN 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) */
1017 XMLPUBFUN xmlChar * XMLCALL
1018 xmlGetNoNsProp (xmlNodePtr node,
1019 const xmlChar *name);
1020 XMLPUBFUN xmlChar * XMLCALL
1021 xmlGetProp (xmlNodePtr node,
1022 const xmlChar *name);
1023 XMLPUBFUN xmlAttrPtr XMLCALL
1024 xmlHasProp (xmlNodePtr node,
1025 const xmlChar *name);
1026 XMLPUBFUN xmlAttrPtr XMLCALL
1027 xmlHasNsProp (xmlNodePtr node,
1028 const xmlChar *name,
1029 const xmlChar *nameSpace);
1030 XMLPUBFUN xmlChar * XMLCALL
1031 xmlGetNsProp (xmlNodePtr node,
1032 const xmlChar *name,
1033 const xmlChar *nameSpace);
1034 XMLPUBFUN xmlNodePtr XMLCALL
1035 xmlStringGetNodeList (xmlDocPtr doc,
1036 const xmlChar *value);
1037 XMLPUBFUN xmlNodePtr XMLCALL
1038 xmlStringLenGetNodeList (xmlDocPtr doc,
1039 const xmlChar *value,
1040 int len);
1041 XMLPUBFUN xmlChar * XMLCALL
1042 xmlNodeListGetString (xmlDocPtr doc,
1043 xmlNodePtr list,
1044 int inLine);
1045 #ifdef LIBXML_TREE_ENABLED
1046 XMLPUBFUN xmlChar * XMLCALL
1047 xmlNodeListGetRawString (xmlDocPtr doc,
1048 xmlNodePtr list,
1049 int inLine);
1050 #endif /* LIBXML_TREE_ENABLED */
1051 XMLPUBFUN void XMLCALL
1052 xmlNodeSetContent (xmlNodePtr cur,
1053 const xmlChar *content);
1054 #ifdef LIBXML_TREE_ENABLED
1055 XMLPUBFUN void XMLCALL
1056 xmlNodeSetContentLen (xmlNodePtr cur,
1057 const xmlChar *content,
1058 int len);
1059 #endif /* LIBXML_TREE_ENABLED */
1060 XMLPUBFUN void XMLCALL
1061 xmlNodeAddContent (xmlNodePtr cur,
1062 const xmlChar *content);
1063 XMLPUBFUN void XMLCALL
1064 xmlNodeAddContentLen (xmlNodePtr cur,
1065 const xmlChar *content,
1066 int len);
1067 XMLPUBFUN xmlChar * XMLCALL
1068 xmlNodeGetContent (xmlNodePtr cur);
1069
1070 XMLPUBFUN int XMLCALL
1071 xmlNodeBufGetContent (xmlBufferPtr buffer,
1072 xmlNodePtr cur);
1073 XMLPUBFUN int XMLCALL
1074 xmlBufGetNodeContent (xmlBufPtr buf,
1075 xmlNodePtr cur);
1076
1077 XMLPUBFUN xmlChar * XMLCALL
1078 xmlNodeGetLang (xmlNodePtr cur);
1079 XMLPUBFUN int XMLCALL
1080 xmlNodeGetSpacePreserve (xmlNodePtr cur);
1081 #ifdef LIBXML_TREE_ENABLED
1082 XMLPUBFUN void XMLCALL
1083 xmlNodeSetLang (xmlNodePtr cur,
1084 const xmlChar *lang);
1085 XMLPUBFUN void XMLCALL
1086 xmlNodeSetSpacePreserve (xmlNodePtr cur,
1087 int val);
1088 #endif /* LIBXML_TREE_ENABLED */
1089 XMLPUBFUN xmlChar * XMLCALL
1090 xmlNodeGetBase (xmlDocPtr doc,
1091 xmlNodePtr cur);
1092 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED)
1093 XMLPUBFUN void XMLCALL
1094 xmlNodeSetBase (xmlNodePtr cur,
1095 const xmlChar *uri);
1096 #endif
1097
1098 /*
1099 * Removing content.
1100 */
1101 XMLPUBFUN int XMLCALL
1102 xmlRemoveProp (xmlAttrPtr cur);
1103 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
1104 XMLPUBFUN int XMLCALL
1105 xmlUnsetNsProp (xmlNodePtr node,
1106 xmlNsPtr ns,
1107 const xmlChar *name);
1108 XMLPUBFUN int XMLCALL
1109 xmlUnsetProp (xmlNodePtr node,
1110 const xmlChar *name);
1111 #endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
1112
1113 /*
1114 * Internal, don't use.
1115 */
1116 XMLPUBFUN void XMLCALL
1117 xmlBufferWriteCHAR (xmlBufferPtr buf,
1118 const xmlChar *string);
1119 XMLPUBFUN void XMLCALL
1120 xmlBufferWriteChar (xmlBufferPtr buf,
1121 const char *string);
1122 XMLPUBFUN void XMLCALL
1123 xmlBufferWriteQuotedString(xmlBufferPtr buf,
1124 const xmlChar *string);
1125
1126 #ifdef LIBXML_OUTPUT_ENABLED
1127 XMLPUBFUN void xmlAttrSerializeTxtContent(xmlBufferPtr buf,
1128 xmlDocPtr doc,
1129 xmlAttrPtr attr,
1130 const xmlChar *string);
1131 #endif /* LIBXML_OUTPUT_ENABLED */
1132
1133 #ifdef LIBXML_TREE_ENABLED
1134 /*
1135 * Namespace handling.
1136 */
1137 XMLPUBFUN int XMLCALL
1138 xmlReconciliateNs (xmlDocPtr doc,
1139 xmlNodePtr tree);
1140 #endif
1141
1142 #ifdef LIBXML_OUTPUT_ENABLED
1143 /*
1144 * Saving.
1145 */
1146 XMLPUBFUN void XMLCALL
1147 xmlDocDumpFormatMemory (xmlDocPtr cur,
1148 xmlChar **mem,
1149 int *size,
1150 int format);
1151 XMLPUBFUN void XMLCALL
1152 xmlDocDumpMemory (xmlDocPtr cur,
1153 xmlChar **mem,
1154 int *size);
1155 XMLPUBFUN void XMLCALL
1156 xmlDocDumpMemoryEnc (xmlDocPtr out_doc,
1157 xmlChar **doc_txt_ptr,
1158 int * doc_txt_len,
1159 const char *txt_encoding);
1160 XMLPUBFUN void XMLCALL
1161 xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc,
1162 xmlChar **doc_txt_ptr,
1163 int * doc_txt_len,
1164 const char *txt_encoding,
1165 int format);
1166 XMLPUBFUN int XMLCALL
1167 xmlDocFormatDump (FILE *f,
1168 xmlDocPtr cur,
1169 int format);
1170 XMLPUBFUN int XMLCALL
1171 xmlDocDump (FILE *f,
1172 xmlDocPtr cur);
1173 XMLPUBFUN void XMLCALL
1174 xmlElemDump (FILE *f,
1175 xmlDocPtr doc,
1176 xmlNodePtr cur);
1177 XMLPUBFUN int XMLCALL
1178 xmlSaveFile (const char *filename,
1179 xmlDocPtr cur);
1180 XMLPUBFUN int XMLCALL
1181 xmlSaveFormatFile (const char *filename,
1182 xmlDocPtr cur,
1183 int format);
1184 XMLPUBFUN size_t XMLCALL
1185 xmlBufNodeDump (xmlBufPtr buf,
1186 xmlDocPtr doc,
1187 xmlNodePtr cur,
1188 int level,
1189 int format);
1190 XMLPUBFUN int XMLCALL
1191 xmlNodeDump (xmlBufferPtr buf,
1192 xmlDocPtr doc,
1193 xmlNodePtr cur,
1194 int level,
1195 int format);
1196
1197 XMLPUBFUN int XMLCALL
1198 xmlSaveFileTo (xmlOutputBufferPtr buf,
1199 xmlDocPtr cur,
1200 const char *encoding);
1201 XMLPUBFUN int XMLCALL
1202 xmlSaveFormatFileTo (xmlOutputBufferPtr buf,
1203 xmlDocPtr cur,
1204 const char *encoding,
1205 int format);
1206 XMLPUBFUN void XMLCALL
1207 xmlNodeDumpOutput (xmlOutputBufferPtr buf,
1208 xmlDocPtr doc,
1209 xmlNodePtr cur,
1210 int level,
1211 int format,
1212 const char *encoding);
1213
1214 XMLPUBFUN int XMLCALL
1215 xmlSaveFormatFileEnc (const char *filename,
1216 xmlDocPtr cur,
1217 const char *encoding,
1218 int format);
1219
1220 XMLPUBFUN int XMLCALL
1221 xmlSaveFileEnc (const char *filename,
1222 xmlDocPtr cur,
1223 const char *encoding);
1224
1225 #endif /* LIBXML_OUTPUT_ENABLED */
1226 /*
1227 * XHTML
1228 */
1229 XMLPUBFUN int XMLCALL
1230 xmlIsXHTML (const xmlChar *systemID,
1231 const xmlChar *publicID);
1232
1233 /*
1234 * Compression.
1235 */
1236 XMLPUBFUN int XMLCALL
1237 xmlGetDocCompressMode (xmlDocPtr doc);
1238 XMLPUBFUN void XMLCALL
1239 xmlSetDocCompressMode (xmlDocPtr doc,
1240 int mode);
1241 XMLPUBFUN int XMLCALL
1242 xmlGetCompressMode (void);
1243 XMLPUBFUN void XMLCALL
1244 xmlSetCompressMode (int mode);
1245
1246 /*
1247 * DOM-wrapper helper functions.
1248 */
1249 XMLPUBFUN xmlDOMWrapCtxtPtr XMLCALL
1250 xmlDOMWrapNewCtxt (void);
1251 XMLPUBFUN void XMLCALL
1252 xmlDOMWrapFreeCtxt (xmlDOMWrapCtxtPtr ctxt);
1253 XMLPUBFUN int XMLCALL
1254 xmlDOMWrapReconcileNamespaces(xmlDOMWrapCtxtPtr ctxt,
1255 xmlNodePtr elem,
1256 int options);
1257 XMLPUBFUN int XMLCALL
1258 xmlDOMWrapAdoptNode (xmlDOMWrapCtxtPtr ctxt,
1259 xmlDocPtr sourceDoc,
1260 xmlNodePtr node,
1261 xmlDocPtr destDoc,
1262 xmlNodePtr destParent,
1263 int options);
1264 XMLPUBFUN int XMLCALL
1265 xmlDOMWrapRemoveNode (xmlDOMWrapCtxtPtr ctxt,
1266 xmlDocPtr doc,
1267 xmlNodePtr node,
1268 int options);
1269 XMLPUBFUN 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);
1278
1279 #ifdef LIBXML_TREE_ENABLED
1280 /*
1281 * 5 interfaces from DOM ElementTraversal, but different in entities
1282 * traversal.
1283 */
1284 XMLPUBFUN unsigned long XMLCALL
1285 xmlChildElementCount (xmlNodePtr parent);
1286 XMLPUBFUN xmlNodePtr XMLCALL
1287 xmlNextElementSibling (xmlNodePtr node);
1288 XMLPUBFUN xmlNodePtr XMLCALL
1289 xmlFirstElementChild (xmlNodePtr parent);
1290 XMLPUBFUN xmlNodePtr XMLCALL
1291 xmlLastElementChild (xmlNodePtr parent);
1292 XMLPUBFUN xmlNodePtr XMLCALL
1293 xmlPreviousElementSibling (xmlNodePtr node);
1294 #endif
1295 #ifdef __cplusplus
1296 }
1297 #endif
1298 #ifndef __XML_PARSER_H__
1299 #include <libxml/xmlmemory.h>
1300 #endif
1301
1302 #endif /* __XML_TREE_H__ */
1303