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
7
* Copy: See Copyright for the status of this software.
9
* Author: Daniel Veillard
12
#ifndef __XML_TREE_H__
13
#define __XML_TREE_H__
16
#include <libxml/xmlversion.h>
17
#include <libxml/xmlstring.h>
24
* Some of the basic types pointer to structures:
27
typedef struct _xmlParserInputBuffer xmlParserInputBuffer;
28
typedef xmlParserInputBuffer *xmlParserInputBufferPtr;
30
typedef struct _xmlOutputBuffer xmlOutputBuffer;
31
typedef xmlOutputBuffer *xmlOutputBufferPtr;
34
typedef struct _xmlParserInput xmlParserInput;
35
typedef xmlParserInput *xmlParserInputPtr;
37
typedef struct _xmlParserCtxt xmlParserCtxt;
38
typedef xmlParserCtxt *xmlParserCtxtPtr;
40
typedef struct _xmlSAXLocator xmlSAXLocator;
41
typedef xmlSAXLocator *xmlSAXLocatorPtr;
43
typedef struct _xmlSAXHandler xmlSAXHandler;
44
typedef xmlSAXHandler *xmlSAXHandlerPtr;
47
typedef struct _xmlEntity xmlEntity;
48
typedef xmlEntity *xmlEntityPtr;
53
* default buffer size 4000.
55
#define BASE_BUFFER_SIZE 4096
60
* This is the namespace for the special xml: prefix predefined in the
61
* XML Namespace specification.
63
#define XML_XML_NAMESPACE \
64
(const xmlChar *) "http://www.w3.org/XML/1998/namespace"
69
* This is the name for the special xml:id attribute
71
#define XML_XML_ID (const xmlChar *) "xml:id"
74
* The different element types carried by an XML tree.
76
* NOTE: This is synchronized with DOM Level1 values
77
* See http://www.w3.org/TR/REC-DOM-Level-1/
79
* Actually this had diverged a bit, and now XML_DOCUMENT_TYPE_NODE should
80
* be deprecated to use an XML_DTD_NODE.
84
XML_ATTRIBUTE_NODE= 2,
86
XML_CDATA_SECTION_NODE= 4,
87
XML_ENTITY_REF_NODE= 5,
92
XML_DOCUMENT_TYPE_NODE= 10,
93
XML_DOCUMENT_FRAG_NODE= 11,
94
XML_NOTATION_NODE= 12,
95
XML_HTML_DOCUMENT_NODE= 13,
98
XML_ATTRIBUTE_DECL= 16,
100
XML_NAMESPACE_DECL= 18,
101
XML_XINCLUDE_START= 19,
103
#ifdef LIBXML_DOCB_ENABLED
104
,XML_DOCB_DOCUMENT_NODE= 21
112
* A DTD Notation definition.
115
typedef struct _xmlNotation xmlNotation;
116
typedef xmlNotation *xmlNotationPtr;
117
struct _xmlNotation {
118
const xmlChar *name; /* Notation name */
119
const xmlChar *PublicID; /* Public identifier, if any */
120
const xmlChar *SystemID; /* System identifier, if any */
126
* A DTD Attribute type definition.
130
XML_ATTRIBUTE_CDATA = 1,
132
XML_ATTRIBUTE_IDREF ,
133
XML_ATTRIBUTE_IDREFS,
134
XML_ATTRIBUTE_ENTITY,
135
XML_ATTRIBUTE_ENTITIES,
136
XML_ATTRIBUTE_NMTOKEN,
137
XML_ATTRIBUTE_NMTOKENS,
138
XML_ATTRIBUTE_ENUMERATION,
139
XML_ATTRIBUTE_NOTATION
143
* xmlAttributeDefault:
145
* A DTD Attribute default definition.
149
XML_ATTRIBUTE_NONE = 1,
150
XML_ATTRIBUTE_REQUIRED,
151
XML_ATTRIBUTE_IMPLIED,
153
} xmlAttributeDefault;
158
* List structure used when there is an enumeration in DTDs.
161
typedef struct _xmlEnumeration xmlEnumeration;
162
typedef xmlEnumeration *xmlEnumerationPtr;
163
struct _xmlEnumeration {
164
struct _xmlEnumeration *next; /* next one */
165
const xmlChar *name; /* Enumeration name */
171
* An Attribute declaration in a DTD.
174
typedef struct _xmlAttribute xmlAttribute;
175
typedef xmlAttribute *xmlAttributePtr;
176
struct _xmlAttribute {
177
void *_private; /* application data */
178
xmlElementType type; /* XML_ATTRIBUTE_DECL, must be second ! */
179
const xmlChar *name; /* Attribute name */
180
struct _xmlNode *children; /* NULL */
181
struct _xmlNode *last; /* NULL */
182
struct _xmlDtd *parent; /* -> DTD */
183
struct _xmlNode *next; /* next sibling link */
184
struct _xmlNode *prev; /* previous sibling link */
185
struct _xmlDoc *doc; /* the containing document */
187
struct _xmlAttribute *nexth; /* next in hash table */
188
xmlAttributeType atype; /* The attribute type */
189
xmlAttributeDefault def; /* the default */
190
const xmlChar *defaultValue; /* or the default value */
191
xmlEnumerationPtr tree; /* or the enumeration tree if any */
192
const xmlChar *prefix; /* the namespace prefix if any */
193
const xmlChar *elem; /* Element holding the attribute */
197
* xmlElementContentType:
199
* Possible definitions of element content types.
202
XML_ELEMENT_CONTENT_PCDATA = 1,
203
XML_ELEMENT_CONTENT_ELEMENT,
204
XML_ELEMENT_CONTENT_SEQ,
205
XML_ELEMENT_CONTENT_OR
206
} xmlElementContentType;
209
* xmlElementContentOccur:
211
* Possible definitions of element content occurrences.
214
XML_ELEMENT_CONTENT_ONCE = 1,
215
XML_ELEMENT_CONTENT_OPT,
216
XML_ELEMENT_CONTENT_MULT,
217
XML_ELEMENT_CONTENT_PLUS
218
} xmlElementContentOccur;
223
* An XML Element content as stored after parsing an element definition
227
typedef struct _xmlElementContent xmlElementContent;
228
typedef xmlElementContent *xmlElementContentPtr;
229
struct _xmlElementContent {
230
xmlElementContentType type; /* PCDATA, ELEMENT, SEQ or OR */
231
xmlElementContentOccur ocur; /* ONCE, OPT, MULT or PLUS */
232
const xmlChar *name; /* Element name */
233
struct _xmlElementContent *c1; /* first child */
234
struct _xmlElementContent *c2; /* second child */
235
struct _xmlElementContent *parent; /* parent */
236
const xmlChar *prefix; /* Namespace prefix */
242
* The different possibilities for an element content type.
246
XML_ELEMENT_TYPE_UNDEFINED = 0,
247
XML_ELEMENT_TYPE_EMPTY = 1,
248
XML_ELEMENT_TYPE_ANY,
249
XML_ELEMENT_TYPE_MIXED,
250
XML_ELEMENT_TYPE_ELEMENT
256
#include <libxml/xmlregexp.h>
264
* An XML Element declaration from a DTD.
267
typedef struct _xmlElement xmlElement;
268
typedef xmlElement *xmlElementPtr;
270
void *_private; /* application data */
271
xmlElementType type; /* XML_ELEMENT_DECL, must be second ! */
272
const xmlChar *name; /* Element name */
273
struct _xmlNode *children; /* NULL */
274
struct _xmlNode *last; /* NULL */
275
struct _xmlDtd *parent; /* -> DTD */
276
struct _xmlNode *next; /* next sibling link */
277
struct _xmlNode *prev; /* previous sibling link */
278
struct _xmlDoc *doc; /* the containing document */
280
xmlElementTypeVal etype; /* The type */
281
xmlElementContentPtr content; /* the allowed element content */
282
xmlAttributePtr attributes; /* List of the declared attributes */
283
const xmlChar *prefix; /* the namespace prefix if any */
284
#ifdef LIBXML_REGEXP_ENABLED
285
xmlRegexpPtr contModel; /* the validating regexp */
293
* XML_LOCAL_NAMESPACE:
295
* A namespace declaration node.
297
#define XML_LOCAL_NAMESPACE XML_NAMESPACE_DECL
298
typedef xmlElementType xmlNsType;
304
* Note that prefix == NULL is valid, it defines the default namespace
305
* within the subtree (until overridden).
307
* xmlNsType is unified with xmlElementType.
310
typedef struct _xmlNs xmlNs;
311
typedef xmlNs *xmlNsPtr;
313
struct _xmlNs *next; /* next Ns link for this node */
314
xmlNsType type; /* global or local */
315
const xmlChar *href; /* URL for the namespace */
316
const xmlChar *prefix; /* prefix for the namespace */
317
void *_private; /* application data */
323
* An XML DTD, as defined by <!DOCTYPE ... There is actually one for
324
* the internal subset and for the external subset.
326
typedef struct _xmlDtd xmlDtd;
327
typedef xmlDtd *xmlDtdPtr;
329
void *_private; /* application data */
330
xmlElementType type; /* XML_DTD_NODE, must be second ! */
331
const xmlChar *name; /* Name of the DTD */
332
struct _xmlNode *children; /* the value of the property link */
333
struct _xmlNode *last; /* last child link */
334
struct _xmlDoc *parent; /* child->parent link */
335
struct _xmlNode *next; /* next sibling link */
336
struct _xmlNode *prev; /* previous sibling link */
337
struct _xmlDoc *doc; /* the containing document */
339
/* End of common part */
340
void *notations; /* Hash table for notations if any */
341
void *elements; /* Hash table for elements if any */
342
void *attributes; /* Hash table for attributes if any */
343
void *entities; /* Hash table for entities if any */
344
const xmlChar *ExternalID; /* External identifier for PUBLIC DTD */
345
const xmlChar *SystemID; /* URI for a SYSTEM or PUBLIC DTD */
346
void *pentities; /* Hash table for param entities if any */
352
* An attribute on an XML node.
354
typedef struct _xmlAttr xmlAttr;
355
typedef xmlAttr *xmlAttrPtr;
357
void *_private; /* application data */
358
xmlElementType type; /* XML_ATTRIBUTE_NODE, must be second ! */
359
const xmlChar *name; /* the name of the property */
360
struct _xmlNode *children; /* the value of the property */
361
struct _xmlNode *last; /* NULL */
362
struct _xmlNode *parent; /* child->parent link */
363
struct _xmlAttr *next; /* next sibling link */
364
struct _xmlAttr *prev; /* previous sibling link */
365
struct _xmlDoc *doc; /* the containing document */
366
xmlNs *ns; /* pointer to the associated namespace */
367
xmlAttributeType atype; /* the attribute type if validating */
368
void *psvi; /* for type/PSVI informations */
374
* An XML ID instance.
377
typedef struct _xmlID xmlID;
378
typedef xmlID *xmlIDPtr;
380
struct _xmlID *next; /* next ID */
381
const xmlChar *value; /* The ID name */
382
xmlAttrPtr attr; /* The attribute holding it */
383
const xmlChar *name; /* The attribute if attr is not available */
384
int lineno; /* The line number if attr is not available */
385
struct _xmlDoc *doc; /* The document holding the ID */
391
* An XML IDREF instance.
394
typedef struct _xmlRef xmlRef;
395
typedef xmlRef *xmlRefPtr;
397
struct _xmlRef *next; /* next Ref */
398
const xmlChar *value; /* The Ref name */
399
xmlAttrPtr attr; /* The attribute holding it */
400
const xmlChar *name; /* The attribute if attr is not available */
401
int lineno; /* The line number if attr is not available */
405
* xmlBufferAllocationScheme:
407
* A buffer allocation scheme can be defined to either match exactly the
408
* need or double it's allocated size each time it is found too small.
412
XML_BUFFER_ALLOC_DOUBLEIT,
413
XML_BUFFER_ALLOC_EXACT,
414
XML_BUFFER_ALLOC_IMMUTABLE
415
} xmlBufferAllocationScheme;
420
* A buffer structure.
422
typedef struct _xmlBuffer xmlBuffer;
423
typedef xmlBuffer *xmlBufferPtr;
425
xmlChar *content; /* The buffer content UTF8 */
426
unsigned int use; /* The buffer size used */
427
unsigned int size; /* The buffer size */
428
xmlBufferAllocationScheme alloc; /* The realloc method */
434
* A node in an XML tree.
436
typedef struct _xmlNode xmlNode;
437
typedef xmlNode *xmlNodePtr;
439
void *_private; /* application data */
440
xmlElementType type; /* type number, must be second ! */
441
const xmlChar *name; /* the name of the node, or the entity */
442
struct _xmlNode *children; /* parent->childs link */
443
struct _xmlNode *last; /* last child link */
444
struct _xmlNode *parent; /* child->parent link */
445
struct _xmlNode *next; /* next sibling link */
446
struct _xmlNode *prev; /* previous sibling link */
447
struct _xmlDoc *doc; /* the containing document */
449
/* End of common part */
450
xmlNs *ns; /* pointer to the associated namespace */
451
xmlChar *content; /* the content */
452
struct _xmlAttr *properties;/* properties list */
453
xmlNs *nsDef; /* namespace definitions on this node */
454
void *psvi; /* for type/PSVI informations */
455
unsigned short line; /* line number */
456
unsigned short extra; /* extra data for XPath/XSLT */
462
* Macro to extract the content pointer of a node.
464
#define XML_GET_CONTENT(n) \
465
((n)->type == XML_ELEMENT_NODE ? NULL : (n)->content)
470
* Macro to extract the line number of an element node.
472
#define XML_GET_LINE(n) \
481
typedef struct _xmlDoc xmlDoc;
482
typedef xmlDoc *xmlDocPtr;
484
void *_private; /* application data */
485
xmlElementType type; /* XML_DOCUMENT_NODE, must be second ! */
486
char *name; /* name/filename/URI of the document */
487
struct _xmlNode *children; /* the document tree */
488
struct _xmlNode *last; /* last child link */
489
struct _xmlNode *parent; /* child->parent link */
490
struct _xmlNode *next; /* next sibling link */
491
struct _xmlNode *prev; /* previous sibling link */
492
struct _xmlDoc *doc; /* autoreference to itself */
494
/* End of common part */
495
int compression;/* level of zlib compression */
496
int standalone; /* standalone document (no external refs) */
497
struct _xmlDtd *intSubset; /* the document internal subset */
498
struct _xmlDtd *extSubset; /* the document external subset */
499
struct _xmlNs *oldNs; /* Global namespace, the old way */
500
const xmlChar *version; /* the XML version string */
501
const xmlChar *encoding; /* external initial encoding, if any */
502
void *ids; /* Hash table for ID attributes if any */
503
void *refs; /* Hash table for IDREFs attributes if any */
504
const xmlChar *URL; /* The URI for that document */
505
int charset; /* encoding of the in-memory content
506
actually an xmlCharEncoding */
507
struct _xmlDict *dict; /* dict used to allocate names or NULL */
508
void *psvi; /* for type/PSVI informations */
511
typedef struct _xmlDOMWrapCtxt xmlDOMWrapCtxt;
512
typedef xmlDOMWrapCtxt *xmlDOMWrapCtxtPtr;
513
struct _xmlDOMWrapCtxt {
520
* Macro for compatibility naming layer with libxml1. Maps
523
#ifndef xmlChildrenNode
524
#define xmlChildrenNode children
530
* Macro for compatibility naming layer with libxml1. Maps
534
#define xmlRootNode children
542
* Some helper functions
544
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED)
545
XMLPUBFUN int XMLCALL
546
xmlValidateNCName (const xmlChar *value,
550
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
551
XMLPUBFUN int XMLCALL
552
xmlValidateQName (const xmlChar *value,
554
XMLPUBFUN int XMLCALL
555
xmlValidateName (const xmlChar *value,
557
XMLPUBFUN int XMLCALL
558
xmlValidateNMToken (const xmlChar *value,
562
XMLPUBFUN xmlChar * XMLCALL
563
xmlBuildQName (const xmlChar *ncname,
564
const xmlChar *prefix,
567
XMLPUBFUN xmlChar * XMLCALL
568
xmlSplitQName2 (const xmlChar *name,
570
XMLPUBFUN const xmlChar * XMLCALL
571
xmlSplitQName3 (const xmlChar *name,
578
XMLPUBFUN void XMLCALL
579
xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme);
580
XMLPUBFUN xmlBufferAllocationScheme XMLCALL
581
xmlGetBufferAllocationScheme(void);
583
XMLPUBFUN xmlBufferPtr XMLCALL
584
xmlBufferCreate (void);
585
XMLPUBFUN xmlBufferPtr XMLCALL
586
xmlBufferCreateSize (size_t size);
587
XMLPUBFUN xmlBufferPtr XMLCALL
588
xmlBufferCreateStatic (void *mem,
590
XMLPUBFUN int XMLCALL
591
xmlBufferResize (xmlBufferPtr buf,
593
XMLPUBFUN void XMLCALL
594
xmlBufferFree (xmlBufferPtr buf);
595
XMLPUBFUN int XMLCALL
596
xmlBufferDump (FILE *file,
598
XMLPUBFUN int XMLCALL
599
xmlBufferAdd (xmlBufferPtr buf,
602
XMLPUBFUN int XMLCALL
603
xmlBufferAddHead (xmlBufferPtr buf,
606
XMLPUBFUN int XMLCALL
607
xmlBufferCat (xmlBufferPtr buf,
609
XMLPUBFUN int XMLCALL
610
xmlBufferCCat (xmlBufferPtr buf,
612
XMLPUBFUN int XMLCALL
613
xmlBufferShrink (xmlBufferPtr buf,
615
XMLPUBFUN int XMLCALL
616
xmlBufferGrow (xmlBufferPtr buf,
618
XMLPUBFUN void XMLCALL
619
xmlBufferEmpty (xmlBufferPtr buf);
620
XMLPUBFUN const xmlChar* XMLCALL
621
xmlBufferContent (const xmlBufferPtr buf);
622
XMLPUBFUN void XMLCALL
623
xmlBufferSetAllocationScheme(xmlBufferPtr buf,
624
xmlBufferAllocationScheme scheme);
625
XMLPUBFUN int XMLCALL
626
xmlBufferLength (const xmlBufferPtr buf);
629
* Creating/freeing new structures.
631
XMLPUBFUN xmlDtdPtr XMLCALL
632
xmlCreateIntSubset (xmlDocPtr doc,
634
const xmlChar *ExternalID,
635
const xmlChar *SystemID);
636
XMLPUBFUN xmlDtdPtr XMLCALL
637
xmlNewDtd (xmlDocPtr doc,
639
const xmlChar *ExternalID,
640
const xmlChar *SystemID);
641
XMLPUBFUN xmlDtdPtr XMLCALL
642
xmlGetIntSubset (xmlDocPtr doc);
643
XMLPUBFUN void XMLCALL
644
xmlFreeDtd (xmlDtdPtr cur);
645
#ifdef LIBXML_LEGACY_ENABLED
646
XMLPUBFUN xmlNsPtr XMLCALL
647
xmlNewGlobalNs (xmlDocPtr doc,
649
const xmlChar *prefix);
650
#endif /* LIBXML_LEGACY_ENABLED */
651
XMLPUBFUN xmlNsPtr XMLCALL
652
xmlNewNs (xmlNodePtr node,
654
const xmlChar *prefix);
655
XMLPUBFUN void XMLCALL
656
xmlFreeNs (xmlNsPtr cur);
657
XMLPUBFUN void XMLCALL
658
xmlFreeNsList (xmlNsPtr cur);
659
XMLPUBFUN xmlDocPtr XMLCALL
660
xmlNewDoc (const xmlChar *version);
661
XMLPUBFUN void XMLCALL
662
xmlFreeDoc (xmlDocPtr cur);
663
XMLPUBFUN xmlAttrPtr XMLCALL
664
xmlNewDocProp (xmlDocPtr doc,
666
const xmlChar *value);
667
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \
668
defined(LIBXML_SCHEMAS_ENABLED)
669
XMLPUBFUN xmlAttrPtr XMLCALL
670
xmlNewProp (xmlNodePtr node,
672
const xmlChar *value);
674
XMLPUBFUN xmlAttrPtr XMLCALL
675
xmlNewNsProp (xmlNodePtr node,
678
const xmlChar *value);
679
XMLPUBFUN xmlAttrPtr XMLCALL
680
xmlNewNsPropEatName (xmlNodePtr node,
683
const xmlChar *value);
684
XMLPUBFUN void XMLCALL
685
xmlFreePropList (xmlAttrPtr cur);
686
XMLPUBFUN void XMLCALL
687
xmlFreeProp (xmlAttrPtr cur);
688
XMLPUBFUN xmlAttrPtr XMLCALL
689
xmlCopyProp (xmlNodePtr target,
691
XMLPUBFUN xmlAttrPtr XMLCALL
692
xmlCopyPropList (xmlNodePtr target,
694
#ifdef LIBXML_TREE_ENABLED
695
XMLPUBFUN xmlDtdPtr XMLCALL
696
xmlCopyDtd (xmlDtdPtr dtd);
697
#endif /* LIBXML_TREE_ENABLED */
698
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
699
XMLPUBFUN xmlDocPtr XMLCALL
700
xmlCopyDoc (xmlDocPtr doc,
702
#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
704
* Creating new nodes.
706
XMLPUBFUN xmlNodePtr XMLCALL
707
xmlNewDocNode (xmlDocPtr doc,
710
const xmlChar *content);
711
XMLPUBFUN xmlNodePtr XMLCALL
712
xmlNewDocNodeEatName (xmlDocPtr doc,
715
const xmlChar *content);
716
XMLPUBFUN xmlNodePtr XMLCALL
717
xmlNewNode (xmlNsPtr ns,
718
const xmlChar *name);
719
XMLPUBFUN xmlNodePtr XMLCALL
720
xmlNewNodeEatName (xmlNsPtr ns,
722
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
723
XMLPUBFUN xmlNodePtr XMLCALL
724
xmlNewChild (xmlNodePtr parent,
727
const xmlChar *content);
729
XMLPUBFUN xmlNodePtr XMLCALL
730
xmlNewDocText (xmlDocPtr doc,
731
const xmlChar *content);
732
XMLPUBFUN xmlNodePtr XMLCALL
733
xmlNewText (const xmlChar *content);
734
XMLPUBFUN xmlNodePtr XMLCALL
735
xmlNewDocPI (xmlDocPtr doc,
737
const xmlChar *content);
738
XMLPUBFUN xmlNodePtr XMLCALL
739
xmlNewPI (const xmlChar *name,
740
const xmlChar *content);
741
XMLPUBFUN xmlNodePtr XMLCALL
742
xmlNewDocTextLen (xmlDocPtr doc,
743
const xmlChar *content,
745
XMLPUBFUN xmlNodePtr XMLCALL
746
xmlNewTextLen (const xmlChar *content,
748
XMLPUBFUN xmlNodePtr XMLCALL
749
xmlNewDocComment (xmlDocPtr doc,
750
const xmlChar *content);
751
XMLPUBFUN xmlNodePtr XMLCALL
752
xmlNewComment (const xmlChar *content);
753
XMLPUBFUN xmlNodePtr XMLCALL
754
xmlNewCDataBlock (xmlDocPtr doc,
755
const xmlChar *content,
757
XMLPUBFUN xmlNodePtr XMLCALL
758
xmlNewCharRef (xmlDocPtr doc,
759
const xmlChar *name);
760
XMLPUBFUN xmlNodePtr XMLCALL
761
xmlNewReference (xmlDocPtr doc,
762
const xmlChar *name);
763
XMLPUBFUN xmlNodePtr XMLCALL
764
xmlCopyNode (const xmlNodePtr node,
766
XMLPUBFUN xmlNodePtr XMLCALL
767
xmlDocCopyNode (const xmlNodePtr node,
770
XMLPUBFUN xmlNodePtr XMLCALL
771
xmlDocCopyNodeList (xmlDocPtr doc,
772
const xmlNodePtr node);
773
XMLPUBFUN xmlNodePtr XMLCALL
774
xmlCopyNodeList (const xmlNodePtr node);
775
#ifdef LIBXML_TREE_ENABLED
776
XMLPUBFUN xmlNodePtr XMLCALL
777
xmlNewTextChild (xmlNodePtr parent,
780
const xmlChar *content);
781
XMLPUBFUN xmlNodePtr XMLCALL
782
xmlNewDocRawNode (xmlDocPtr doc,
785
const xmlChar *content);
786
XMLPUBFUN xmlNodePtr XMLCALL
787
xmlNewDocFragment (xmlDocPtr doc);
788
#endif /* LIBXML_TREE_ENABLED */
793
XMLPUBFUN long XMLCALL
794
xmlGetLineNo (xmlNodePtr node);
795
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED)
796
XMLPUBFUN xmlChar * XMLCALL
797
xmlGetNodePath (xmlNodePtr node);
798
#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) */
799
XMLPUBFUN xmlNodePtr XMLCALL
800
xmlDocGetRootElement (xmlDocPtr doc);
801
XMLPUBFUN xmlNodePtr XMLCALL
802
xmlGetLastChild (xmlNodePtr parent);
803
XMLPUBFUN int XMLCALL
804
xmlNodeIsText (xmlNodePtr node);
805
XMLPUBFUN int XMLCALL
806
xmlIsBlankNode (xmlNodePtr node);
809
* Changing the structure.
811
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)
812
XMLPUBFUN xmlNodePtr XMLCALL
813
xmlDocSetRootElement (xmlDocPtr doc,
815
#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */
816
#ifdef LIBXML_TREE_ENABLED
817
XMLPUBFUN void XMLCALL
818
xmlNodeSetName (xmlNodePtr cur,
819
const xmlChar *name);
820
#endif /* LIBXML_TREE_ENABLED */
821
XMLPUBFUN xmlNodePtr XMLCALL
822
xmlAddChild (xmlNodePtr parent,
824
XMLPUBFUN xmlNodePtr XMLCALL
825
xmlAddChildList (xmlNodePtr parent,
827
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)
828
XMLPUBFUN xmlNodePtr XMLCALL
829
xmlReplaceNode (xmlNodePtr old,
831
#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */
832
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \
833
defined(LIBXML_SCHEMAS_ENABLED)
834
XMLPUBFUN xmlNodePtr XMLCALL
835
xmlAddPrevSibling (xmlNodePtr cur,
837
#endif /* LIBXML_TREE_ENABLED || LIBXML_HTML_ENABLED || LIBXML_SCHEMAS_ENABLED */
838
XMLPUBFUN xmlNodePtr XMLCALL
839
xmlAddSibling (xmlNodePtr cur,
841
XMLPUBFUN xmlNodePtr XMLCALL
842
xmlAddNextSibling (xmlNodePtr cur,
844
XMLPUBFUN void XMLCALL
845
xmlUnlinkNode (xmlNodePtr cur);
846
XMLPUBFUN xmlNodePtr XMLCALL
847
xmlTextMerge (xmlNodePtr first,
849
XMLPUBFUN int XMLCALL
850
xmlTextConcat (xmlNodePtr node,
851
const xmlChar *content,
853
XMLPUBFUN void XMLCALL
854
xmlFreeNodeList (xmlNodePtr cur);
855
XMLPUBFUN void XMLCALL
856
xmlFreeNode (xmlNodePtr cur);
857
XMLPUBFUN void XMLCALL
858
xmlSetTreeDoc (xmlNodePtr tree,
860
XMLPUBFUN void XMLCALL
861
xmlSetListDoc (xmlNodePtr list,
866
XMLPUBFUN xmlNsPtr XMLCALL
867
xmlSearchNs (xmlDocPtr doc,
869
const xmlChar *nameSpace);
870
XMLPUBFUN xmlNsPtr XMLCALL
871
xmlSearchNsByHref (xmlDocPtr doc,
873
const xmlChar *href);
874
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED)
875
XMLPUBFUN xmlNsPtr * XMLCALL
876
xmlGetNsList (xmlDocPtr doc,
878
#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) */
880
XMLPUBFUN void XMLCALL
881
xmlSetNs (xmlNodePtr node,
883
XMLPUBFUN xmlNsPtr XMLCALL
884
xmlCopyNamespace (xmlNsPtr cur);
885
XMLPUBFUN xmlNsPtr XMLCALL
886
xmlCopyNamespaceList (xmlNsPtr cur);
889
* Changing the content.
891
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED)
892
XMLPUBFUN xmlAttrPtr XMLCALL
893
xmlSetProp (xmlNodePtr node,
895
const xmlChar *value);
896
XMLPUBFUN xmlAttrPtr XMLCALL
897
xmlSetNsProp (xmlNodePtr node,
900
const xmlChar *value);
901
#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) */
902
XMLPUBFUN xmlChar * XMLCALL
903
xmlGetNoNsProp (xmlNodePtr node,
904
const xmlChar *name);
905
XMLPUBFUN xmlChar * XMLCALL
906
xmlGetProp (xmlNodePtr node,
907
const xmlChar *name);
908
XMLPUBFUN xmlAttrPtr XMLCALL
909
xmlHasProp (xmlNodePtr node,
910
const xmlChar *name);
911
XMLPUBFUN xmlAttrPtr XMLCALL
912
xmlHasNsProp (xmlNodePtr node,
914
const xmlChar *nameSpace);
915
XMLPUBFUN xmlChar * XMLCALL
916
xmlGetNsProp (xmlNodePtr node,
918
const xmlChar *nameSpace);
919
XMLPUBFUN xmlNodePtr XMLCALL
920
xmlStringGetNodeList (xmlDocPtr doc,
921
const xmlChar *value);
922
XMLPUBFUN xmlNodePtr XMLCALL
923
xmlStringLenGetNodeList (xmlDocPtr doc,
924
const xmlChar *value,
926
XMLPUBFUN xmlChar * XMLCALL
927
xmlNodeListGetString (xmlDocPtr doc,
930
#ifdef LIBXML_TREE_ENABLED
931
XMLPUBFUN xmlChar * XMLCALL
932
xmlNodeListGetRawString (xmlDocPtr doc,
935
#endif /* LIBXML_TREE_ENABLED */
936
XMLPUBFUN void XMLCALL
937
xmlNodeSetContent (xmlNodePtr cur,
938
const xmlChar *content);
939
#ifdef LIBXML_TREE_ENABLED
940
XMLPUBFUN void XMLCALL
941
xmlNodeSetContentLen (xmlNodePtr cur,
942
const xmlChar *content,
944
#endif /* LIBXML_TREE_ENABLED */
945
XMLPUBFUN void XMLCALL
946
xmlNodeAddContent (xmlNodePtr cur,
947
const xmlChar *content);
948
XMLPUBFUN void XMLCALL
949
xmlNodeAddContentLen (xmlNodePtr cur,
950
const xmlChar *content,
952
XMLPUBFUN xmlChar * XMLCALL
953
xmlNodeGetContent (xmlNodePtr cur);
954
XMLPUBFUN int XMLCALL
955
xmlNodeBufGetContent (xmlBufferPtr buffer,
957
XMLPUBFUN xmlChar * XMLCALL
958
xmlNodeGetLang (xmlNodePtr cur);
959
XMLPUBFUN int XMLCALL
960
xmlNodeGetSpacePreserve (xmlNodePtr cur);
961
#ifdef LIBXML_TREE_ENABLED
962
XMLPUBFUN void XMLCALL
963
xmlNodeSetLang (xmlNodePtr cur,
964
const xmlChar *lang);
965
XMLPUBFUN void XMLCALL
966
xmlNodeSetSpacePreserve (xmlNodePtr cur,
968
#endif /* LIBXML_TREE_ENABLED */
969
XMLPUBFUN xmlChar * XMLCALL
970
xmlNodeGetBase (xmlDocPtr doc,
972
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED)
973
XMLPUBFUN void XMLCALL
974
xmlNodeSetBase (xmlNodePtr cur,
981
#ifdef LIBXML_TREE_ENABLED
982
XMLPUBFUN int XMLCALL
983
xmlRemoveProp (xmlAttrPtr cur);
984
#endif /* LIBXML_TREE_ENABLED */
985
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
986
XMLPUBFUN int XMLCALL
987
xmlUnsetNsProp (xmlNodePtr node,
989
const xmlChar *name);
990
XMLPUBFUN int XMLCALL
991
xmlUnsetProp (xmlNodePtr node,
992
const xmlChar *name);
993
#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
996
* Internal, don't use.
998
XMLPUBFUN void XMLCALL
999
xmlBufferWriteCHAR (xmlBufferPtr buf,
1000
const xmlChar *string);
1001
XMLPUBFUN void XMLCALL
1002
xmlBufferWriteChar (xmlBufferPtr buf,
1003
const char *string);
1004
XMLPUBFUN void XMLCALL
1005
xmlBufferWriteQuotedString(xmlBufferPtr buf,
1006
const xmlChar *string);
1008
#ifdef LIBXML_OUTPUT_ENABLED
1009
XMLPUBFUN void xmlAttrSerializeTxtContent(xmlBufferPtr buf,
1012
const xmlChar *string);
1013
#endif /* LIBXML_OUTPUT_ENABLED */
1015
#ifdef LIBXML_TREE_ENABLED
1017
* Namespace handling.
1019
XMLPUBFUN int XMLCALL
1020
xmlReconciliateNs (xmlDocPtr doc,
1024
#ifdef LIBXML_OUTPUT_ENABLED
1028
XMLPUBFUN void XMLCALL
1029
xmlDocDumpFormatMemory (xmlDocPtr cur,
1033
XMLPUBFUN void XMLCALL
1034
xmlDocDumpMemory (xmlDocPtr cur,
1037
XMLPUBFUN void XMLCALL
1038
xmlDocDumpMemoryEnc (xmlDocPtr out_doc,
1039
xmlChar **doc_txt_ptr,
1041
const char *txt_encoding);
1042
XMLPUBFUN void XMLCALL
1043
xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc,
1044
xmlChar **doc_txt_ptr,
1046
const char *txt_encoding,
1048
XMLPUBFUN int XMLCALL
1049
xmlDocFormatDump (FILE *f,
1052
XMLPUBFUN int XMLCALL
1053
xmlDocDump (FILE *f,
1055
XMLPUBFUN void XMLCALL
1056
xmlElemDump (FILE *f,
1059
XMLPUBFUN int XMLCALL
1060
xmlSaveFile (const char *filename,
1062
XMLPUBFUN int XMLCALL
1063
xmlSaveFormatFile (const char *filename,
1066
XMLPUBFUN int XMLCALL
1067
xmlNodeDump (xmlBufferPtr buf,
1073
XMLPUBFUN int XMLCALL
1074
xmlSaveFileTo (xmlOutputBufferPtr buf,
1076
const char *encoding);
1077
XMLPUBFUN int XMLCALL
1078
xmlSaveFormatFileTo (xmlOutputBufferPtr buf,
1080
const char *encoding,
1082
XMLPUBFUN void XMLCALL
1083
xmlNodeDumpOutput (xmlOutputBufferPtr buf,
1088
const char *encoding);
1090
XMLPUBFUN int XMLCALL
1091
xmlSaveFormatFileEnc (const char *filename,
1093
const char *encoding,
1096
XMLPUBFUN int XMLCALL
1097
xmlSaveFileEnc (const char *filename,
1099
const char *encoding);
1101
#endif /* LIBXML_OUTPUT_ENABLED */
1105
XMLPUBFUN int XMLCALL
1106
xmlIsXHTML (const xmlChar *systemID,
1107
const xmlChar *publicID);
1112
XMLPUBFUN int XMLCALL
1113
xmlGetDocCompressMode (xmlDocPtr doc);
1114
XMLPUBFUN void XMLCALL
1115
xmlSetDocCompressMode (xmlDocPtr doc,
1117
XMLPUBFUN int XMLCALL
1118
xmlGetCompressMode (void);
1119
XMLPUBFUN void XMLCALL
1120
xmlSetCompressMode (int mode);
1123
* DOM-wrapper helper functions.
1125
XMLPUBFUN xmlDOMWrapCtxtPtr XMLCALL
1126
xmlDOMWrapNewCtxt (void);
1127
XMLPUBFUN void XMLCALL
1128
xmlDOMWrapFreeCtxt (xmlDOMWrapCtxtPtr ctxt);
1129
XMLPUBFUN int XMLCALL
1130
xmlDOMWrapReconcileNamespaces(xmlDOMWrapCtxtPtr ctxt,
1133
XMLPUBFUN int XMLCALL
1134
xmlDOMWrapAdoptNode (xmlDOMWrapCtxtPtr ctxt,
1135
xmlDocPtr sourceDoc,
1138
xmlNodePtr destParent,
1140
XMLPUBFUN int XMLCALL
1141
xmlDOMWrapRemoveNode (xmlDOMWrapCtxtPtr ctxt,
1149
#ifndef __XML_PARSER_H__
1150
#include <libxml/xmlmemory.h>
1153
#endif /* __XML_TREE_H__ */