/* * tree.h : describes the structures found in an tree resulting * from an XML parsing. */ #ifndef __XML_TREE_H__ #define __XML_TREE_H__ /* * Constants. */ #define XML_TYPE_TEXT 1 /* * An XML DTD defining a given name space. */ typedef struct xmlDtd { struct xmlDtd *next; /* next Dtd link for this document */ const char *href; /* URL for the DTD */ const char *AS; /* URL for the DTD */ void *entities; /* Hash table for entities if any */ } xmlDtd, *xmlDtdPtr; /* * A property of an XML node. */ typedef struct xmlProp { struct xmlNode *node; /* prop->node link */ struct xmlProp *next; /* parent->childs link */ const char *name; /* the name of the property */ const char *value; /* the value of the property */ } xmlProp, *xmlPropPtr; /* * A node in an XML tree. */ typedef struct xmlNode { struct xmlNode *parent; /* child->parent link */ struct xmlNode *next; /* next sibling link */ struct xmlNode *childs; /* parent->childs link */ struct xmlProp *properties; /* properties list */ int type; /* type number in the DTD */ const char *name; /* the name of the node */ xmlDtd *dtd; /* pointer to the DTD */ char *content; /* the content */ } xmlNode, *xmlNodePtr; /* * An XML document. */ typedef struct xmlDoc { const char *version; /* the XML version string */ struct xmlDtd *dtds; /* referenced DTDs */ struct xmlNode *root; /* parent->childs link */ void *entities; /* Hash table for entities if any */ } xmlDoc, *xmlDocPtr; /* * Variables. */ extern xmlDtdPtr baseDTD; /* * Functions. */ extern xmlDtdPtr xmlNewDtd(xmlDocPtr doc, const char *href, const char *AS); extern void xmlFreeDtd(xmlDtdPtr cur); extern xmlDocPtr xmlNewDoc(const char *version); extern void xmlFreeDoc(xmlDocPtr cur); extern xmlPropPtr xmlNewProp(xmlNodePtr node, const char *name, const char *value); extern void xmlFreePropList(xmlPropPtr cur); extern void xmlFreeProp(xmlPropPtr cur); extern xmlNodePtr xmlNewNode(xmlDtdPtr dtd, const char *name, char *content); extern xmlNodePtr xmlNewText(char *content); extern xmlNodePtr xmlAddChild(xmlNodePtr parent, xmlNodePtr cur); extern void xmlFreeNodeList(xmlNodePtr cur); extern void xmlFreeNode(xmlNodePtr cur); extern void xmlNodeSetContent(xmlNodePtr cur, char *content); extern xmlDtdPtr xmlSearchDtd(xmlDocPtr doc, char *nameSpace); extern xmlNodePtr xmlNewChild(xmlNodePtr parent, xmlDtdPtr dtd, const char *name, char *content); extern void xmlDtdDump(FILE *f, xmlDtdPtr cur); extern void xmlNodeDump(FILE *f, xmlNodePtr cur, int level); extern void xmlPropDump(FILE *f, xmlPropPtr cur); extern void xmlPropListDump(FILE *f, xmlPropPtr cur); extern void xmlNodeListDump(FILE *f, xmlNodePtr cur, int level); extern void xmlDtdListDump(FILE *f, xmlDtdPtr cur); extern void xmlDocDump(FILE *f, xmlDocPtr cur); #endif /* __XML_TREE_H__ */