Release 1.6, lot of fixes, more validation, code cleanup, added namespace
on attributes, Daniel.
diff --git a/tree.h b/tree.h
index fa70ba3..6d22ac1 100644
--- a/tree.h
+++ b/tree.h
@@ -53,6 +53,8 @@
typedef unsigned char CHAR;
#endif
+#define BAD_CAST (CHAR *)
+
/*
* a DTD Notation definition
*/
@@ -193,6 +195,7 @@
struct xmlAttr *next; /* attribute list link */
const CHAR *name; /* the name of the property */
struct xmlNode *val; /* the value of the property */
+ xmlNs *ns; /* pointer to the associated namespace */
} xmlAttr;
typedef xmlAttr *xmlAttrPtr;
@@ -277,124 +280,195 @@
* Handling Buffers.
*/
-xmlBufferPtr xmlBufferCreate(void);
-void xmlBufferFree(xmlBufferPtr buf);
-int xmlBufferDump(FILE *file, xmlBufferPtr buf);
-void xmlBufferAdd(xmlBufferPtr buf, const CHAR *str, int len);
-void xmlBufferCat(xmlBufferPtr buf, const CHAR *str);
-void xmlBufferCCat(xmlBufferPtr buf, const char *str);
-int xmlBufferShrink(xmlBufferPtr buf, int len);
-void xmlBufferEmpty(xmlBufferPtr buf);
+xmlBufferPtr xmlBufferCreate (void);
+void xmlBufferFree (xmlBufferPtr buf);
+int xmlBufferDump (FILE *file,
+ xmlBufferPtr buf);
+void xmlBufferAdd (xmlBufferPtr buf,
+ const CHAR *str,
+ int len);
+void xmlBufferCat (xmlBufferPtr buf,
+ const CHAR *str);
+void xmlBufferCCat (xmlBufferPtr buf,
+ const char *str);
+int xmlBufferShrink (xmlBufferPtr buf,
+ int len);
+void xmlBufferEmpty (xmlBufferPtr buf);
/*
* Creating/freeing new structures
*/
-xmlDtdPtr xmlCreateIntSubset(xmlDocPtr doc, const CHAR *name,
- const CHAR *ExternalID, const CHAR *SystemID);
-xmlDtdPtr xmlNewDtd(xmlDocPtr doc, const CHAR *name,
- const CHAR *ExternalID, const CHAR *SystemID);
-void xmlFreeDtd(xmlDtdPtr cur);
-xmlNsPtr xmlNewGlobalNs(xmlDocPtr doc, const CHAR *href, const CHAR *prefix);
-xmlNsPtr xmlNewNs(xmlNodePtr node, const CHAR *href, const CHAR *prefix);
-void xmlFreeNs(xmlNsPtr cur);
-xmlDocPtr xmlNewDoc(const CHAR *version);
-void xmlFreeDoc(xmlDocPtr cur);
-xmlAttrPtr xmlNewDocProp(xmlDocPtr doc, const CHAR *name,
- const CHAR *value);
-xmlAttrPtr xmlNewProp(xmlNodePtr node, const CHAR *name,
- const CHAR *value);
-void xmlFreePropList(xmlAttrPtr cur);
-void xmlFreeProp(xmlAttrPtr cur);
-xmlAttrPtr xmlCopyProp(xmlAttrPtr cur);
-xmlAttrPtr xmlCopyPropList(xmlAttrPtr cur);
-xmlDtdPtr xmlCopyDtd(xmlDtdPtr dtd);
-xmlDocPtr xmlCopyDoc(xmlDocPtr doc, int recursive);
+xmlDtdPtr xmlCreateIntSubset (xmlDocPtr doc,
+ const CHAR *name,
+ const CHAR *ExternalID,
+ const CHAR *SystemID);
+xmlDtdPtr xmlNewDtd (xmlDocPtr doc,
+ const CHAR *name,
+ const CHAR *ExternalID,
+ const CHAR *SystemID);
+void xmlFreeDtd (xmlDtdPtr cur);
+xmlNsPtr xmlNewGlobalNs (xmlDocPtr doc,
+ const CHAR *href,
+ const CHAR *prefix);
+xmlNsPtr xmlNewNs (xmlNodePtr node,
+ const CHAR *href,
+ const CHAR *prefix);
+void xmlFreeNs (xmlNsPtr cur);
+xmlDocPtr xmlNewDoc (const CHAR *version);
+void xmlFreeDoc (xmlDocPtr cur);
+xmlAttrPtr xmlNewDocProp (xmlDocPtr doc,
+ const CHAR *name,
+ const CHAR *value);
+xmlAttrPtr xmlNewProp (xmlNodePtr node,
+ const CHAR *name,
+ const CHAR *value);
+xmlAttrPtr xmlNewNsProp (xmlNodePtr node,
+ xmlNsPtr ns,
+ const CHAR *name,
+ const CHAR *value);
+void xmlFreePropList (xmlAttrPtr cur);
+void xmlFreeProp (xmlAttrPtr cur);
+xmlAttrPtr xmlCopyProp (xmlNodePtr target,
+ xmlAttrPtr cur);
+xmlAttrPtr xmlCopyPropList (xmlNodePtr target,
+ xmlAttrPtr cur);
+xmlDtdPtr xmlCopyDtd (xmlDtdPtr dtd);
+xmlDocPtr xmlCopyDoc (xmlDocPtr doc,
+ int recursive);
/*
* Creating new nodes
*/
-xmlNodePtr xmlNewDocNode(xmlDocPtr doc, xmlNsPtr ns,
- const CHAR *name, const CHAR *content);
-xmlNodePtr xmlNewNode(xmlNsPtr ns, const CHAR *name);
-xmlNodePtr xmlNewChild(xmlNodePtr parent, xmlNsPtr ns,
- const CHAR *name, const CHAR *content);
-xmlNodePtr xmlNewDocText(xmlDocPtr doc, const CHAR *content);
-xmlNodePtr xmlNewText(const CHAR *content);
-xmlNodePtr xmlNewDocTextLen(xmlDocPtr doc, const CHAR *content, int len);
-xmlNodePtr xmlNewTextLen(const CHAR *content, int len);
-xmlNodePtr xmlNewDocComment(xmlDocPtr doc, const CHAR *content);
-xmlNodePtr xmlNewComment(const CHAR *content);
-xmlNodePtr xmlNewCDataBlock(xmlDocPtr doc, const CHAR *content, int len);
-xmlNodePtr xmlNewReference(xmlDocPtr doc, const CHAR *name);
-xmlNodePtr xmlCopyNode(xmlNodePtr node, int recursive);
-xmlNodePtr xmlCopyNodeList(xmlNodePtr node);
+xmlNodePtr xmlNewDocNode (xmlDocPtr doc,
+ xmlNsPtr ns,
+ const CHAR *name,
+ const CHAR *content);
+xmlNodePtr xmlNewNode (xmlNsPtr ns,
+ const CHAR *name);
+xmlNodePtr xmlNewChild (xmlNodePtr parent,
+ xmlNsPtr ns,
+ const CHAR *name,
+ const CHAR *content);
+xmlNodePtr xmlNewDocText (xmlDocPtr doc,
+ const CHAR *content);
+xmlNodePtr xmlNewText (const CHAR *content);
+xmlNodePtr xmlNewPI (const CHAR *name,
+ const CHAR *content);
+xmlNodePtr xmlNewDocTextLen (xmlDocPtr doc,
+ const CHAR *content,
+ int len);
+xmlNodePtr xmlNewTextLen (const CHAR *content,
+ int len);
+xmlNodePtr xmlNewDocComment (xmlDocPtr doc,
+ const CHAR *content);
+xmlNodePtr xmlNewComment (const CHAR *content);
+xmlNodePtr xmlNewCDataBlock (xmlDocPtr doc,
+ const CHAR *content,
+ int len);
+xmlNodePtr xmlNewReference (xmlDocPtr doc,
+ const CHAR *name);
+xmlNodePtr xmlCopyNode (xmlNodePtr node,
+ int recursive);
+xmlNodePtr xmlCopyNodeList (xmlNodePtr node);
/*
* Navigating
*/
-xmlNodePtr xmlGetLastChild(xmlNodePtr parent);
-int xmlNodeIsText(xmlNodePtr node);
+xmlNodePtr xmlGetLastChild (xmlNodePtr parent);
+int xmlNodeIsText (xmlNodePtr node);
/*
* Changing the structure
*/
-xmlNodePtr xmlAddChild(xmlNodePtr parent, xmlNodePtr cur);
-void xmlUnlinkNode(xmlNodePtr cur);
-
-xmlNodePtr xmlTextMerge(xmlNodePtr first, xmlNodePtr second);
-void xmlTextConcat(xmlNodePtr node, const CHAR *content, int len);
-
-void xmlFreeNodeList(xmlNodePtr cur);
-void xmlFreeNode(xmlNodePtr cur);
+xmlNodePtr xmlAddChild (xmlNodePtr parent,
+ xmlNodePtr cur);
+xmlNodePtr xmlAddSibling (xmlNodePtr cur,
+ xmlNodePtr elem);
+void xmlUnlinkNode (xmlNodePtr cur);
+xmlNodePtr xmlTextMerge (xmlNodePtr first,
+ xmlNodePtr second);
+void xmlTextConcat (xmlNodePtr node,
+ const CHAR *content,
+ int len);
+void xmlFreeNodeList (xmlNodePtr cur);
+void xmlFreeNode (xmlNodePtr cur);
/*
* Namespaces
*/
-xmlNsPtr xmlSearchNs(xmlDocPtr doc, xmlNodePtr node,
- const CHAR *nameSpace);
-xmlNsPtr xmlSearchNsByHref(xmlDocPtr doc, xmlNodePtr node,
- const CHAR *href);
-void xmlSetNs(xmlNodePtr node, xmlNsPtr ns);
-xmlNsPtr xmlCopyNamespace(xmlNsPtr cur);
-xmlNsPtr xmlCopyNamespaceList(xmlNsPtr cur);
+xmlNsPtr xmlSearchNs (xmlDocPtr doc,
+ xmlNodePtr node,
+ const CHAR *nameSpace);
+xmlNsPtr xmlSearchNsByHref (xmlDocPtr doc,
+ xmlNodePtr node,
+ const CHAR *href);
+xmlNsPtr * xmlGetNsList (xmlDocPtr doc,
+ xmlNodePtr node);
+void xmlSetNs (xmlNodePtr node,
+ xmlNsPtr ns);
+xmlNsPtr xmlCopyNamespace (xmlNsPtr cur);
+xmlNsPtr xmlCopyNamespaceList (xmlNsPtr cur);
/*
* Changing the content.
*/
-xmlAttrPtr xmlSetProp(xmlNodePtr node, const CHAR *name,
- const CHAR *value);
-CHAR *xmlGetProp(xmlNodePtr node, const CHAR *name);
-xmlNodePtr xmlStringGetNodeList(xmlDocPtr doc, const CHAR *value);
-xmlNodePtr xmlStringLenGetNodeList(xmlDocPtr doc, const CHAR *value,
- int len);
-CHAR *xmlNodeListGetString(xmlDocPtr doc, xmlNodePtr list, int inLine);
-void xmlNodeSetContent(xmlNodePtr cur, const CHAR *content);
-void xmlNodeSetContentLen(xmlNodePtr cur, const CHAR *content, int len);
-void xmlNodeAddContent(xmlNodePtr cur, const CHAR *content);
-void xmlNodeAddContentLen(xmlNodePtr cur, const CHAR *content, int len);
-CHAR *xmlNodeGetContent(xmlNodePtr cur);
+xmlAttrPtr xmlSetProp (xmlNodePtr node,
+ const CHAR *name,
+ const CHAR *value);
+CHAR * xmlGetProp (xmlNodePtr node,
+ const CHAR *name);
+xmlNodePtr xmlStringGetNodeList (xmlDocPtr doc,
+ const CHAR *value);
+xmlNodePtr xmlStringLenGetNodeList (xmlDocPtr doc,
+ const CHAR *value,
+ int len);
+CHAR * xmlNodeListGetString (xmlDocPtr doc,
+ xmlNodePtr list,
+ int inLine);
+void xmlNodeSetContent (xmlNodePtr cur,
+ const CHAR *content);
+void xmlNodeSetContentLen (xmlNodePtr cur,
+ const CHAR *content,
+ int len);
+void xmlNodeAddContent (xmlNodePtr cur,
+ const CHAR *content);
+void xmlNodeAddContentLen (xmlNodePtr cur,
+ const CHAR *content,
+ int len);
+CHAR * xmlNodeGetContent (xmlNodePtr cur);
+const CHAR * xmlNodeGetLang (xmlNodePtr cur);
+void xmlNodeSetLang (xmlNodePtr cur,
+ const CHAR *lang);
/*
* Internal, don't use
*/
-void xmlBufferWriteCHAR(xmlBufferPtr buf, const CHAR *string);
-void xmlBufferWriteChar(xmlBufferPtr buf, const char *string);
-void xmlBufferWriteQuotedString(xmlBufferPtr buf, const CHAR *string);
+void xmlBufferWriteCHAR (xmlBufferPtr buf,
+ const CHAR *string);
+void xmlBufferWriteChar (xmlBufferPtr buf,
+ const char *string);
+void xmlBufferWriteQuotedString(xmlBufferPtr buf,
+ const CHAR *string);
/*
* Saving
*/
-void xmlDocDumpMemory(xmlDocPtr cur, CHAR**mem, int *size);
-void xmlDocDump(FILE *f, xmlDocPtr cur);
-int xmlSaveFile(const char *filename, xmlDocPtr cur);
+void xmlDocDumpMemory (xmlDocPtr cur,
+ CHAR**mem,
+ int *size);
+void xmlDocDump (FILE *f,
+ xmlDocPtr cur);
+int xmlSaveFile (const char *filename,
+ xmlDocPtr cur);
/*
* Compression
*/
-int xmlGetDocCompressMode (xmlDocPtr doc);
-void xmlSetDocCompressMode (xmlDocPtr doc, int mode);
-int xmlGetCompressMode(void);
-void xmlSetCompressMode(int mode);
+int xmlGetDocCompressMode (xmlDocPtr doc);
+void xmlSetDocCompressMode (xmlDocPtr doc,
+ int mode);
+int xmlGetCompressMode (void);
+void xmlSetCompressMode (int mode);
#ifdef __cplusplus
}