tree.h revision c5d64345cf19bfd72418eb0a837869b0462e9130
13473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
23473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * tree.h : describes the structures found in an tree resulting
33473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor *          from an XML parsing.
43473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor *
53473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * See Copyright for the status of this software.
63473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor *
7c5d64345cf19bfd72418eb0a837869b0462e9130Daniel Veillard * daniel@veillard.com
83473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor *
93473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * 14 Nov 2000 ht - added redefinition of xmlBufferWriteChar for VMS
103473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor *
113473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
123473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
133473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#ifndef __XML_TREE_H__
143473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#define __XML_TREE_H__
153473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
163473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#include <stdio.h>
17c5d64345cf19bfd72418eb0a837869b0462e9130Daniel Veillard#if defined(WIN32) && defined(_MSC_VER)
18c5d64345cf19bfd72418eb0a837869b0462e9130Daniel Veillard#include <libxml/xmlwin32version.h>
19c5d64345cf19bfd72418eb0a837869b0462e9130Daniel Veillard#else
203473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#include <libxml/xmlversion.h>
21c5d64345cf19bfd72418eb0a837869b0462e9130Daniel Veillard#endif
2267a21303b8407cd70ccf9ff1dd29a7f17e4cfc4eDaniel Veillard#include <libxml/xmlmemory.h>
233473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
243473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#ifdef __cplusplus
253473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorextern "C" {
263473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#endif
273473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
283473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#define XML_XML_NAMESPACE \
293473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    (const xmlChar *) "http://www.w3.org/XML/1998/namespace"
303473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
313473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
323473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * The different element types carried by an XML tree
333473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor *
343473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * NOTE: This is synchronized with DOM Level1 values
353473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor *       See http://www.w3.org/TR/REC-DOM-Level-1/
363473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor *
373473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Actually this had diverged a bit, and now XML_DOCUMENT_TYPE_NODE should
383473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * be deprecated to use an XML_DTD_NODE.
393473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
403473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef enum {
413473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ELEMENT_NODE=		1,
423473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ATTRIBUTE_NODE=		2,
433473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_TEXT_NODE=		3,
443473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_CDATA_SECTION_NODE=	4,
453473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ENTITY_REF_NODE=	5,
463473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ENTITY_NODE=		6,
473473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_PI_NODE=		7,
483473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_COMMENT_NODE=		8,
493473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_DOCUMENT_NODE=		9,
503473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_DOCUMENT_TYPE_NODE=	10,
513473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_DOCUMENT_FRAG_NODE=	11,
523473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_NOTATION_NODE=		12,
533473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_HTML_DOCUMENT_NODE=	13,
543473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_DTD_NODE=		14,
553473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ELEMENT_DECL=		15,
563473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ATTRIBUTE_DECL=		16,
573473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ENTITY_DECL=		17,
583473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_NAMESPACE_DECL=		18,
593473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_XINCLUDE_START=		19,
603473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_XINCLUDE_END=		20
61eae522a0d8aa9f830d2e447f29b504030dbb6bbdDaniel Veillard#ifdef LIBXML_DOCB_ENABLED
62eae522a0d8aa9f830d2e447f29b504030dbb6bbdDaniel Veillard   ,XML_DOCB_DOCUMENT_NODE=	21
633473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#endif
643473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor} xmlElementType;
653473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
66bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard/**
67bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * xmlChar:
683473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor *
69bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * This is a basic byte in an UTF-8 encoded string.
70bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * It's unsigned allowing to pinpoint case where char * are assigned
71bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * to xmlChar * (possibly making serialization back impossible).
723473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
733473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
743473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef unsigned char xmlChar;
753473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
76bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard/**
77bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * BAD_CAST:
78bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard *
79bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * Macro to cast a string to an xmlChar * when one know its safe.
80bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard */
813473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#define BAD_CAST (xmlChar *)
823473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
83bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard/**
84bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * xmlNotation:
85bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard *
863473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * a DTD Notation definition
873473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
883473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
893473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef struct _xmlNotation xmlNotation;
903473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef xmlNotation *xmlNotationPtr;
913473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorstruct _xmlNotation {
929e7160d45a18bfa26d708e22ba991f7670d0128bDaniel Veillard    const xmlChar               *name;	        /* Notation name */
933473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    const xmlChar               *PublicID;	/* Public identifier, if any */
943473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    const xmlChar               *SystemID;	/* System identifier, if any */
953473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor};
963473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
97bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard/**
98bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * xmlAttributeType:
99bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard *
100bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * a DTD Attribute type definition
1013473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
1023473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
1033473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef enum {
1043473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ATTRIBUTE_CDATA = 1,
1053473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ATTRIBUTE_ID,
1063473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ATTRIBUTE_IDREF	,
1073473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ATTRIBUTE_IDREFS,
1083473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ATTRIBUTE_ENTITY,
1093473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ATTRIBUTE_ENTITIES,
1103473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ATTRIBUTE_NMTOKEN,
1113473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ATTRIBUTE_NMTOKENS,
1123473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ATTRIBUTE_ENUMERATION,
1133473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ATTRIBUTE_NOTATION
1143473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor} xmlAttributeType;
1153473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
116bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard/**
117bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * xmlAttributeDefault:
118bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard *
119bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * a DTD Attribute default definition
120bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard */
121bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard
1223473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef enum {
1233473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ATTRIBUTE_NONE = 1,
1243473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ATTRIBUTE_REQUIRED,
1253473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ATTRIBUTE_IMPLIED,
1263473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ATTRIBUTE_FIXED
1273473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor} xmlAttributeDefault;
1283473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
129bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard/**
130bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * xmlEnumeration:
131bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard *
132bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * list structure used when there is an enumeration in DTDs
133bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard */
134bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard
1353473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef struct _xmlEnumeration xmlEnumeration;
1363473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef xmlEnumeration *xmlEnumerationPtr;
1373473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorstruct _xmlEnumeration {
1383473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlEnumeration    *next;	/* next one */
1393473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    const xmlChar            *name;	/* Enumeration name */
1403473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor};
1413473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
142bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard/**
143bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * xmlAttribute:
144bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard *
145bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * an Attribute declaration in a DTD
146bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard */
147bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard
1483473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef struct _xmlAttribute xmlAttribute;
1493473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef xmlAttribute *xmlAttributePtr;
1503473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorstruct _xmlAttribute {
1513473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    void           *_private;	        /* for Corba, must be first ! */
1523473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlElementType          type;       /* XML_ATTRIBUTE_DECL, must be second ! */
1533473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    const xmlChar          *name;	/* Attribute name */
1543473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode    *children;	/* NULL */
1553473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode        *last;	/* NULL */
1563473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlDtd       *parent;	/* -> DTD */
1573473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode        *next;	/* next sibling link  */
1583473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode        *prev;	/* previous sibling link  */
1593473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlDoc          *doc;       /* the containing document */
1603473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
1613473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlAttribute  *nexth;	/* next in hash table */
1623473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlAttributeType       atype;	/* The attribute type */
1633473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlAttributeDefault      def;	/* the default */
1643473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    const xmlChar  *defaultValue;	/* or the default value */
1653473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlEnumerationPtr       tree;       /* or the enumeration tree if any */
1663473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    const xmlChar        *prefix;	/* the namespace prefix if any */
1673473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    const xmlChar          *elem;	/* Element holding the attribute */
1683473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor};
1693473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
170bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard/**
171bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * xmlElementContentType:
172bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard *
173bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * Possible definitions of element content types
1743473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
1753473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef enum {
1763473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ELEMENT_CONTENT_PCDATA = 1,
1773473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ELEMENT_CONTENT_ELEMENT,
1783473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ELEMENT_CONTENT_SEQ,
1793473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ELEMENT_CONTENT_OR
1803473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor} xmlElementContentType;
1813473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
182bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard/**
183bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * xmlElementContentOccur:
184bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard *
185bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * Possible definitions of element content occurences
186bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard */
1873473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef enum {
1883473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ELEMENT_CONTENT_ONCE = 1,
1893473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ELEMENT_CONTENT_OPT,
1903473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ELEMENT_CONTENT_MULT,
1913473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ELEMENT_CONTENT_PLUS
1923473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor} xmlElementContentOccur;
1933473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
194bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard/**
195bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * xmlElementContent:
196bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard *
197bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * an XML Element content as stored after parsing an element definition
198bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * in a DTD.
199bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard */
200bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard
2013473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef struct _xmlElementContent xmlElementContent;
2023473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef xmlElementContent *xmlElementContentPtr;
2033473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorstruct _xmlElementContent {
2043473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlElementContentType     type;	/* PCDATA, ELEMENT, SEQ or OR */
2053473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlElementContentOccur    ocur;	/* ONCE, OPT, MULT or PLUS */
2063473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    const xmlChar            *name;	/* Element name */
2073473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlElementContent *c1;	/* first child */
2083473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlElementContent *c2;	/* second child */
209dab4cb37d8fceb7457c40effc1ae43559221610bDaniel Veillard    struct _xmlElementContent *parent;	/* parent */
2103473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor};
2113473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
212bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard/**
213bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * xmlElementTypeVal:
214bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard *
215bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * the differnt possibility for an element content type
216bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard */
217bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard
2183473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef enum {
219a10efa8aa6e8a89ad1f5fa05bd591fed02c88dbaDaniel Veillard    XML_ELEMENT_TYPE_UNDEFINED = 0,
2203473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ELEMENT_TYPE_EMPTY = 1,
2213473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ELEMENT_TYPE_ANY,
2223473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ELEMENT_TYPE_MIXED,
2233473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_ELEMENT_TYPE_ELEMENT
2243473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor} xmlElementTypeVal;
2253473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
226bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard/**
227bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * xmlElement:
228bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard *
229bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * an XML Element declaration from a DTD
230bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard */
231bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard
2323473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef struct _xmlElement xmlElement;
2333473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef xmlElement *xmlElementPtr;
2343473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorstruct _xmlElement {
2353473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    void           *_private;	        /* for Corba, must be first ! */
2363473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlElementType          type;       /* XML_ELEMENT_DECL, must be second ! */
2373473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    const xmlChar          *name;	/* Element name */
2383473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode    *children;	/* NULL */
2393473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode        *last;	/* NULL */
2403473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlDtd       *parent;	/* -> DTD */
2413473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode        *next;	/* next sibling link  */
2423473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode        *prev;	/* previous sibling link  */
2433473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlDoc          *doc;       /* the containing document */
2443473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
2453473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlElementTypeVal      etype;	/* The type */
2463473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlElementContentPtr content;	/* the allowed element content */
2473473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlAttributePtr   attributes;	/* List of the declared attributes */
2483473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    const xmlChar        *prefix;	/* the namespace prefix if any */
2493473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor};
2503473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
251bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard
252bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard#define XML_LOCAL_NAMESPACE XML_NAMESPACE_DECL
253bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillardtypedef xmlElementType xmlNsType;
254bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard
255bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard/**
256bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * xmlNs:
257bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard *
2583473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * An XML namespace.
2593473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Note that prefix == NULL is valid, it defines the default namespace
2603473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * within the subtree (until overriden).
2613473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor *
2623473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * XML_GLOBAL_NAMESPACE is now deprecated for good
2633473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * xmlNsType is unified with xmlElementType
2643473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
2653473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
2663473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef struct _xmlNs xmlNs;
2673473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef xmlNs *xmlNsPtr;
2683473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorstruct _xmlNs {
2693473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNs  *next;	/* next Ns link for this node  */
2703473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlNsType      type;	/* global or local */
2713473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    const xmlChar *href;	/* URL for the namespace */
2723473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    const xmlChar *prefix;	/* prefix for the namespace */
2733473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor};
2743473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
275bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard/**
276bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * xmlDtd:
277bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard *
278bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * An XML DtD, as defined by <!DOCTYPE ... There is actually one for
279bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * the internal subset and for the external subset
2803473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
2813473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef struct _xmlDtd xmlDtd;
2823473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef xmlDtd *xmlDtdPtr;
2833473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorstruct _xmlDtd {
2843473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    void           *_private;	/* for Corba, must be first ! */
2853473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlElementType  type;       /* XML_DTD_NODE, must be second ! */
2863473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    const xmlChar *name;	/* Name of the DTD */
2873473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode *children;	/* the value of the property link */
2883473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode *last;	/* last child link */
2893473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlDoc  *parent;	/* child->parent link */
2903473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode *next;	/* next sibling link  */
2913473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode *prev;	/* previous sibling link  */
2923473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlDoc  *doc;	/* the containing document */
2933473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
2943473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    /* End of common part */
2953473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    void          *notations;   /* Hash table for notations if any */
2963473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    void          *elements;    /* Hash table for elements if any */
2973473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    void          *attributes;  /* Hash table for attributes if any */
2983473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    void          *entities;    /* Hash table for entities if any */
2993473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    const xmlChar *ExternalID;	/* External identifier for PUBLIC DTD */
3003473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    const xmlChar *SystemID;	/* URI for a SYSTEM or PUBLIC DTD */
3013473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    void          *pentities;   /* Hash table for param entities if any */
3023473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor};
3033473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
304bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard/**
305bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * xmlAttr:
306bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard *
307bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * A attribute on an XML node.
3083473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
3093473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef struct _xmlAttr xmlAttr;
3103473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef xmlAttr *xmlAttrPtr;
3113473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorstruct _xmlAttr {
3123473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    void           *_private;	/* for Corba, must be first ! */
3133473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlElementType   type;      /* XML_ATTRIBUTE_NODE, must be second ! */
3143473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    const xmlChar   *name;      /* the name of the property */
3153473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode *children;	/* the value of the property */
3163473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode *last;	/* NULL */
3173473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode *parent;	/* child->parent link */
3183473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlAttr *next;	/* next sibling link  */
3193473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlAttr *prev;	/* previous sibling link  */
3203473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlDoc  *doc;	/* the containing document */
3213473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlNs           *ns;        /* pointer to the associated namespace */
3223473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlAttributeType atype;     /* the attribute type if validating */
3233473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor};
3243473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
325bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard/**
326bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * xmlID:
327bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard *
3283473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * An XML ID instance.
3293473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
3303473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
3313473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef struct _xmlID xmlID;
3323473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef xmlID *xmlIDPtr;
3333473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorstruct _xmlID {
3343473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlID    *next;	/* next ID */
3353473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    const xmlChar    *value;	/* The ID name */
3363473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlAttrPtr        attr;	/* The attribut holding it */
3373473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor};
3383473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
339bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard/**
340bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * xmlRef:
341bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard *
3423473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * An XML IDREF instance.
3433473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
3443473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
3453473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef struct _xmlRef xmlRef;
3463473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef xmlRef *xmlRefPtr;
3473473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorstruct _xmlRef {
3483473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlRef    *next;	/* next Ref */
3493473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    const xmlChar     *value;	/* The Ref name */
3503473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlAttrPtr        attr;	/* The attribut holding it */
3513473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor};
3523473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
353bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard/**
354bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * xmlBufferAllocationScheme:
355bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard *
356bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * A buffer allocation scheme can be defined to either match exactly the
357bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * need or double it's allocated size each time it is found too small
3583473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
3593473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
3603473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef enum {
3613473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_BUFFER_ALLOC_DOUBLEIT,
3623473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    XML_BUFFER_ALLOC_EXACT
3633473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor} xmlBufferAllocationScheme;
3643473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
365bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard/**
366bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * xmlBuffer:
367bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard *
368bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * A buffer structure
369bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard */
3703473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef struct _xmlBuffer xmlBuffer;
3713473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef xmlBuffer *xmlBufferPtr;
3723473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorstruct _xmlBuffer {
3733473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlChar *content;		/* The buffer content UTF8 */
3743473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    unsigned int use;		/* The buffer size used */
3753473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    unsigned int size;		/* The buffer size */
3763473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlBufferAllocationScheme alloc; /* The realloc method */
3773473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor};
3783473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
379f69bb4b5bf3df1982f63a331b02cd7187456492fDaniel Veillard/**
380f69bb4b5bf3df1982f63a331b02cd7187456492fDaniel Veillard * xmlNode:
381f69bb4b5bf3df1982f63a331b02cd7187456492fDaniel Veillard *
3823473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * A node in an XML tree.
3833473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
3843473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef struct _xmlNode xmlNode;
3853473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef xmlNode *xmlNodePtr;
3863473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorstruct _xmlNode {
3873473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    void           *_private;	/* for Corba, must be first ! */
3883473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlElementType   type;	/* type number, must be second ! */
3893473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    const xmlChar   *name;      /* the name of the node, or the entity */
3903473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode *children;	/* parent->childs link */
3913473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode *last;	/* last child link */
3923473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode *parent;	/* child->parent link */
3933473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode *next;	/* next sibling link  */
3943473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode *prev;	/* previous sibling link  */
3953473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlDoc  *doc;	/* the containing document */
3963473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlNs           *ns;        /* pointer to the associated namespace */
3973473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#ifndef XML_USE_BUFFER_CONTENT
3983473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlChar         *content;   /* the content */
3993473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#else
4003473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlBufferPtr     content;   /* the content in a buffer */
4013473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#endif
4023473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
4033473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    /* End of common part */
4043473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlAttr *properties;/* properties list */
4053473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlNs           *nsDef;     /* namespace definitions on this node */
4063473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor};
4073473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
408bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard/**
409bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * xmlDoc:
410bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard *
4113473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * An XML document.
4123473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
4133473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef struct _xmlDoc xmlDoc;
4143473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylortypedef xmlDoc *xmlDocPtr;
4153473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorstruct _xmlDoc {
4163473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    void           *_private;	/* for Corba, must be first ! */
4173473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    xmlElementType  type;       /* XML_DOCUMENT_NODE, must be second ! */
4183473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    char           *name;	/* name/filename/URI of the document */
4193473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode *children;	/* the document tree */
4203473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode *last;	/* last child link */
4213473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode *parent;	/* child->parent link */
4223473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode *next;	/* next sibling link  */
4233473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNode *prev;	/* previous sibling link  */
4243473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlDoc  *doc;	/* autoreference to itself */
4253473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
4263473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    /* End of common part */
4273473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    int             compression;/* level of zlib compression */
4283473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    int             standalone; /* standalone document (no external refs) */
4293473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlDtd  *intSubset;	/* the document internal subset */
4303473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlDtd  *extSubset;	/* the document external subset */
4313473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    struct _xmlNs   *oldNs;	/* Global namespace, the old way */
4323473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    const xmlChar  *version;	/* the XML version string */
4333473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    const xmlChar  *encoding;   /* external initial encoding, if any */
4343473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    void           *ids;        /* Hash table for ID attributes if any */
4353473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    void           *refs;       /* Hash table for IDREFs attributes if any */
4363473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    const xmlChar  *URL;	/* The URI for that document */
4373473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor    int             charset;    /* encoding of the in-memory content
4383473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor				   actually an xmlCharEncoding */
4393473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor};
4403473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
441bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard/**
442bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * xmlChildrenNode:
443bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard *
444bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * Macro for compatibility naming layer with libxml1
4453473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
4463473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#ifndef xmlChildrenNode
4473473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#define xmlChildrenNode children
448bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard#endif
449bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard
450bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard/**
451bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * xmlRootNode:
452bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard *
453bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard * Macro for compatibility naming layer with libxml1
454bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard */
455bed7b052a318695f5e0856f12fc0c86f66472cb3Daniel Veillard#ifndef xmlRootNode
4563473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#define xmlRootNode children
4573473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#endif
4583473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
4593473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
4603473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Variables.
4613473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
4623473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorLIBXML_DLL_IMPORT extern xmlNsPtr baseDTD;
4633473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorLIBXML_DLL_IMPORT extern int oldXMLWDcompatibility;/* maintain compatibility with old WD */
4643473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorLIBXML_DLL_IMPORT extern int xmlIndentTreeOutput;  /* try to indent the tree dumps */
4653473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorLIBXML_DLL_IMPORT extern xmlBufferAllocationScheme xmlBufferAllocScheme; /* alloc scheme to use */
466e356c280069914f0052891861a55fdfaff6dcf65Daniel VeillardLIBXML_DLL_IMPORT extern int xmlSaveNoEmptyTags; /* save empty tags as <empty></empty> */
467e356c280069914f0052891861a55fdfaff6dcf65Daniel VeillardLIBXML_DLL_IMPORT extern int xmlDefaultBufferSize; /* default buffer size */
4683473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
4693473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
4703473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Handling Buffers.
4713473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
4723473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
47356a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillardvoid		xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme);
47456a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel VeillardxmlBufferAllocationScheme	 xmlGetBufferAllocationScheme(void);
47556a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillard
4763473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlBufferPtr	xmlBufferCreate		(void);
4773473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlBufferPtr	xmlBufferCreateSize	(size_t size);
47856a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillardint		xmlBufferResize		(xmlBufferPtr buf,
47956a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillard					 unsigned int size);
4803473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlBufferFree		(xmlBufferPtr buf);
4813473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorint		xmlBufferDump		(FILE *file,
4823473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlBufferPtr buf);
4833473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlBufferAdd		(xmlBufferPtr buf,
4843473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *str,
4853473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int len);
4863473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlBufferAddHead	(xmlBufferPtr buf,
4873473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *str,
4883473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int len);
4893473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlBufferCat		(xmlBufferPtr buf,
4903473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *str);
4913473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlBufferCCat		(xmlBufferPtr buf,
4923473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const char *str);
4933473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorint		xmlBufferShrink		(xmlBufferPtr buf,
4943473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 unsigned int len);
4953473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorint		xmlBufferGrow		(xmlBufferPtr buf,
4963473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 unsigned int len);
4973473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlBufferEmpty		(xmlBufferPtr buf);
4983473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorconst xmlChar*	xmlBufferContent	(const xmlBufferPtr buf);
4993473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorint		xmlBufferUse		(const xmlBufferPtr buf);
5003473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlBufferSetAllocationScheme(xmlBufferPtr buf,
5013473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlBufferAllocationScheme scheme);
5023473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorint		xmlBufferLength		(const xmlBufferPtr buf);
5033473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
5043473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
5053473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Creating/freeing new structures
5063473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
5073473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlDtdPtr	xmlCreateIntSubset	(xmlDocPtr doc,
5083473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *name,
5093473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *ExternalID,
5103473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *SystemID);
5113473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlDtdPtr	xmlNewDtd		(xmlDocPtr doc,
5123473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *name,
5133473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *ExternalID,
5143473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *SystemID);
5153473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlDtdPtr	xmlGetIntSubset		(xmlDocPtr doc);
5163473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlFreeDtd		(xmlDtdPtr cur);
5173473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNsPtr	xmlNewGlobalNs		(xmlDocPtr doc,
5183473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *href,
5193473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *prefix);
5203473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNsPtr	xmlNewNs		(xmlNodePtr node,
5213473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *href,
5223473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *prefix);
5233473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlFreeNs		(xmlNsPtr cur);
52456a4cb8c4d3eab4ab3295a61c87e8e92483922c6Daniel Veillardvoid		xmlFreeNsList		(xmlNsPtr cur);
5253473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlDocPtr 	xmlNewDoc		(const xmlChar *version);
5263473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlFreeDoc		(xmlDocPtr cur);
5273473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlAttrPtr	xmlNewDocProp		(xmlDocPtr doc,
5283473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *name,
5293473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *value);
5303473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlAttrPtr	xmlNewProp		(xmlNodePtr node,
5313473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *name,
5323473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *value);
5333473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlAttrPtr	xmlNewNsProp		(xmlNodePtr node,
5343473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNsPtr ns,
5353473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *name,
5363473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *value);
5373473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlFreePropList		(xmlAttrPtr cur);
5383473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlFreeProp		(xmlAttrPtr cur);
5393473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlAttrPtr	xmlCopyProp		(xmlNodePtr target,
5403473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlAttrPtr cur);
5413473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlAttrPtr	xmlCopyPropList		(xmlNodePtr target,
5423473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlAttrPtr cur);
5433473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlDtdPtr	xmlCopyDtd		(xmlDtdPtr dtd);
5443473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlDocPtr	xmlCopyDoc		(xmlDocPtr doc,
5453473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int recursive);
5463473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
5473473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
5483473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Creating new nodes
5493473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
5503473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlNewDocNode		(xmlDocPtr doc,
5513473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNsPtr ns,
5523473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *name,
5533473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *content);
5543473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlNewDocRawNode	(xmlDocPtr doc,
5553473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNsPtr ns,
5563473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *name,
5573473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *content);
5583473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlNewNode		(xmlNsPtr ns,
5593473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *name);
5603473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlNewChild		(xmlNodePtr parent,
5613473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNsPtr ns,
5623473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *name,
5633473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *content);
5643473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlNewTextChild		(xmlNodePtr parent,
5653473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNsPtr ns,
5663473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *name,
5673473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *content);
5683473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlNewDocText		(xmlDocPtr doc,
5693473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *content);
5703473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlNewText		(const xmlChar *content);
5713473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlNewPI		(const xmlChar *name,
5723473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *content);
5733473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlNewDocTextLen	(xmlDocPtr doc,
5743473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *content,
5753473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int len);
5763473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlNewTextLen		(const xmlChar *content,
5773473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int len);
5783473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlNewDocComment	(xmlDocPtr doc,
5793473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *content);
5803473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlNewComment		(const xmlChar *content);
5813473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlNewCDataBlock	(xmlDocPtr doc,
5823473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *content,
5833473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int len);
5843473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlNewCharRef		(xmlDocPtr doc,
5853473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *name);
5863473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlNewReference		(xmlDocPtr doc,
5873473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *name);
5883473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlCopyNode		(xmlNodePtr node,
5893473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int recursive);
59082daa81a8bf6877bafc69716ce5e9ae6897108c7Daniel VeillardxmlNodePtr	xmlDocCopyNode		(xmlNodePtr node,
59182daa81a8bf6877bafc69716ce5e9ae6897108c7Daniel Veillard					 xmlDocPtr doc,
59282daa81a8bf6877bafc69716ce5e9ae6897108c7Daniel Veillard					 int recursive);
5933473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlCopyNodeList		(xmlNodePtr node);
5943473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlNewDocFragment	(xmlDocPtr doc);
5953473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
5963473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
5973473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Navigating
5983473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
5993473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlDocGetRootElement	(xmlDocPtr doc);
6003473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlGetLastChild		(xmlNodePtr parent);
6013473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorint		xmlNodeIsText		(xmlNodePtr node);
6023473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorint		xmlIsBlankNode		(xmlNodePtr node);
6033473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
6043473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
6053473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Changing the structure
6063473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
6073473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlDocSetRootElement	(xmlDocPtr doc,
6083473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNodePtr root);
6093473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlNodeSetName		(xmlNodePtr cur,
6103473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *name);
6113473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlAddChild		(xmlNodePtr parent,
6123473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNodePtr cur);
6133473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlAddChildList		(xmlNodePtr parent,
6143473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNodePtr cur);
6153473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlReplaceNode		(xmlNodePtr old,
6163473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNodePtr cur);
6173473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlAddSibling		(xmlNodePtr cur,
6183473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNodePtr elem);
6193473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlAddPrevSibling	(xmlNodePtr cur,
6203473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNodePtr elem);
6213473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlAddNextSibling	(xmlNodePtr cur,
6223473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNodePtr elem);
6233473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlUnlinkNode		(xmlNodePtr cur);
6243473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlTextMerge		(xmlNodePtr first,
6253473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNodePtr second);
6263473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlTextConcat		(xmlNodePtr node,
6273473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *content,
6283473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int len);
6293473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlFreeNodeList		(xmlNodePtr cur);
6303473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlFreeNode		(xmlNodePtr cur);
6313473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlSetTreeDoc		(xmlNodePtr tree,
6323473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlDocPtr doc);
6333473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlSetListDoc		(xmlNodePtr list,
6343473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlDocPtr doc);
6353473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
6363473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
6373473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Namespaces
6383473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
6393473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNsPtr	xmlSearchNs		(xmlDocPtr doc,
6403473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNodePtr node,
6413473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *nameSpace);
6423473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNsPtr	xmlSearchNsByHref	(xmlDocPtr doc,
6433473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNodePtr node,
6443473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *href);
6453473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNsPtr *	xmlGetNsList		(xmlDocPtr doc,
6463473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNodePtr node);
6473473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlSetNs		(xmlNodePtr node,
6483473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNsPtr ns);
6493473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNsPtr	xmlCopyNamespace	(xmlNsPtr cur);
6503473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNsPtr	xmlCopyNamespaceList	(xmlNsPtr cur);
6513473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
6523473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
6533473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Changing the content.
6543473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
6553473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlAttrPtr	xmlSetProp		(xmlNodePtr node,
6563473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *name,
6573473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *value);
6583473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlChar *	xmlGetProp		(xmlNodePtr node,
6593473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *name);
6603473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlAttrPtr	xmlHasProp		(xmlNodePtr node,
6613473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *name);
662e95e2396f34e7e7c5f472ad018d7207974074225Daniel VeillardxmlAttrPtr	xmlHasNsProp		(xmlNodePtr node,
663e95e2396f34e7e7c5f472ad018d7207974074225Daniel Veillard					 const xmlChar *name,
664ca2366aafd4c9ff3bf7c166bde18ce9af50e6995Daniel Veillard					 const xmlChar *nameSpace);
6653473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlAttrPtr	xmlSetNsProp		(xmlNodePtr node,
6663473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNsPtr ns,
6673473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *name,
6683473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *value);
6693473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlChar *	xmlGetNsProp		(xmlNodePtr node,
6703473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *name,
6713473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *nameSpace);
6723473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlStringGetNodeList	(xmlDocPtr doc,
6733473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *value);
6743473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlNodePtr	xmlStringLenGetNodeList	(xmlDocPtr doc,
6753473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *value,
6763473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int len);
6773473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlChar *	xmlNodeListGetString	(xmlDocPtr doc,
6783473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNodePtr list,
6793473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int inLine);
6803473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlChar *	xmlNodeListGetRawString	(xmlDocPtr doc,
6813473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNodePtr list,
6823473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int inLine);
6833473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlNodeSetContent	(xmlNodePtr cur,
6843473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *content);
6853473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlNodeSetContentLen	(xmlNodePtr cur,
6863473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *content,
6873473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int len);
6883473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlNodeAddContent	(xmlNodePtr cur,
6893473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *content);
6903473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlNodeAddContentLen	(xmlNodePtr cur,
6913473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *content,
6923473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int len);
6933473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlChar *	xmlNodeGetContent	(xmlNodePtr cur);
6943473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlChar *	xmlNodeGetLang		(xmlNodePtr cur);
6953473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlNodeSetLang		(xmlNodePtr cur,
6963473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *lang);
6973473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorint		xmlNodeGetSpacePreserve	(xmlNodePtr cur);
6983473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlNodeSetSpacePreserve (xmlNodePtr cur, int
6993473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 val);
7003473f88a7abdf4e585e267288fb77e898c580d2bOwen TaylorxmlChar *	xmlNodeGetBase		(xmlDocPtr doc,
7013473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNodePtr cur);
7023473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlNodeSetBase		(xmlNodePtr cur,
7033473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlChar *uri);
7043473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
7053473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
7063473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Removing content.
7073473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
7083473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorint		xmlRemoveProp		(xmlAttrPtr attr);
7093473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorint		xmlRemoveNode		(xmlNodePtr node); /* TODO */
7109403a0495dcbdfa430b669b4e3d689d8e208c687Daniel Veillardint		xmlUnsetProp		(xmlNodePtr node,
7119403a0495dcbdfa430b669b4e3d689d8e208c687Daniel Veillard					 const xmlChar *name);
7129403a0495dcbdfa430b669b4e3d689d8e208c687Daniel Veillardint		xmlUnsetNsProp		(xmlNodePtr node,
7139403a0495dcbdfa430b669b4e3d689d8e208c687Daniel Veillard					 xmlNsPtr ns,
7149403a0495dcbdfa430b669b4e3d689d8e208c687Daniel Veillard					 const xmlChar *name);
7153473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
7163473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
7173473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Internal, don't use
7183473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
7193473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#ifdef VMS
7203473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlBufferWriteXmlCHAR	(xmlBufferPtr buf,
7213473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *string);
7223473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#define 	xmlBufferWriteCHAR 	xmlBufferWriteXmlCHAR
7233473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#else
7243473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlBufferWriteCHAR	(xmlBufferPtr buf,
7253473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *string);
7263473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#endif
7273473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlBufferWriteChar	(xmlBufferPtr buf,
7283473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const char *string);
7293473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlBufferWriteQuotedString(xmlBufferPtr buf,
7303473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const xmlChar *string);
7313473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
7323473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
7333473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Namespace handling
7343473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
7353473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorint		xmlReconciliateNs	(xmlDocPtr doc,
7363473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNodePtr tree);
7373473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
7383473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
7393473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Saving
7403473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
7413473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlDocDumpFormatMemory	(xmlDocPtr cur,
7423473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlChar**mem,
7433473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int *size,
7443473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int format);
7453473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlDocDumpMemory	(xmlDocPtr cur,
7463473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlChar**mem,
7473473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int *size);
7483473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlDocDumpMemoryEnc	(xmlDocPtr out_doc,
7493473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlChar **doc_txt_ptr,
7503473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int * doc_txt_len,
7513473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const char *txt_encoding);
7523473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc,
7533473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlChar **doc_txt_ptr,
7543473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int * doc_txt_len,
7553473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const char *txt_encoding,
7563473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int format);
7573473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorint		xmlDocDump		(FILE *f,
7583473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlDocPtr cur);
7593473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlElemDump		(FILE *f,
7603473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlDocPtr doc,
7613473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNodePtr cur);
7623473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorint		xmlSaveFile		(const char *filename,
7633473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlDocPtr cur);
76467fee94e53838c397f53c1ea4d098a5b9d728896Daniel Veillardint		xmlSaveFormatFile	(const char *filename,
76567fee94e53838c397f53c1ea4d098a5b9d728896Daniel Veillard					 xmlDocPtr cur,
76667fee94e53838c397f53c1ea4d098a5b9d728896Daniel Veillard					 int format);
7673473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlNodeDump		(xmlBufferPtr buf,
7683473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlDocPtr doc,
7693473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlNodePtr cur,
7703473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int level,
7713473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int format);
7723473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
773eefd44943c31a5fabb5394d559d225426ce41fbeDaniel Veillard/* These are exported from xmlIO.h
7743473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
7753473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorint		xmlSaveFileTo		(xmlOutputBuffer *buf,
7763473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlDocPtr cur,
7773473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const char *encoding);
778eefd44943c31a5fabb5394d559d225426ce41fbeDaniel Veillardint             xmlSaveFormatFileTo     (xmlOutputBuffer *buf,
779eefd44943c31a5fabb5394d559d225426ce41fbeDaniel Veillard                                         xmlDocPtr cur,
780eefd44943c31a5fabb5394d559d225426ce41fbeDaniel Veillard                                         const char *encoding,
781eefd44943c31a5fabb5394d559d225426ce41fbeDaniel Veillard                                         int format);
7823473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
7833473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
7843473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorint		xmlSaveFileEnc		(const char *filename,
7853473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 xmlDocPtr cur,
7863473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 const char *encoding);
7873473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
7883473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor/*
7893473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor * Compression
7903473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor */
7913473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorint		xmlGetDocCompressMode	(xmlDocPtr doc);
7923473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlSetDocCompressMode	(xmlDocPtr doc,
7933473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor					 int mode);
7943473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorint		xmlGetCompressMode	(void);
7953473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylorvoid		xmlSetCompressMode	(int mode);
7963473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
7973473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#ifdef __cplusplus
7983473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor}
7993473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#endif
8003473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
8013473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor#endif /* __XML_TREE_H__ */
8023473f88a7abdf4e585e267288fb77e898c580d2bOwen Taylor
803