Ready for 1.7.0, major changes, nanohttp, cleanup, binary compat with 1.4,
etc... See Changelog, Daniel.
diff --git a/ChangeLog b/ChangeLog
index e939c0c..cb19b69 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+Wed Sep 22 11:40:31 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org>
+
+	* parser.h: modified the parser context struct to regain 1.4.0
+	            binary compatibility
+	* parser.c, xml-error.h: added errno ot teh context and defined
+	            a set of errors values with update of errno
+	* nanohttp.[ch]: minimalist HTTP front-end for fetching remote
+	            DTDs and entities
+	* *.h, *.c: complete cleanup of the use of config.h and include
+	            protection depending on the current setup.
+	* overalll debugging, maintenance and bug-fixing on all modules
+	* updated the documentation
+	* ready for 1.7.0
+
 Wed Sep  8 22:46:14 CEST 1999 Daniel Veillard <Daniel.Veillard@w3.org>
 
 	* HTMLparser.c : cleanup
diff --git a/HTMLparser.c b/HTMLparser.c
index a559d9b..a63bf98 100644
--- a/HTMLparser.c
+++ b/HTMLparser.c
@@ -10,13 +10,20 @@
 #define HAVE_FCNTL_H
 #include <io.h>
 #else
-#include <config.h>
+#include "config.h"
 #endif
+
 #include <stdio.h>
-#include <ctype.h>
 #include <string.h> /* for memset() only */
+#ifdef HAVE_CTYPE_H
+#include <ctype.h>
+#endif
+#ifdef HAVE_STDLIB_H
 #include <stdlib.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
+#endif
 #ifdef HAVE_FCNTL_H
 #include <fcntl.h>
 #endif
diff --git a/HTMLtree.c b/HTMLtree.c
index 87363ec..b00c300 100644
--- a/HTMLtree.c
+++ b/HTMLtree.c
@@ -6,12 +6,20 @@
  * Daniel.Veillard@w3.org
  */
 
+
+#ifndef WIN32
 #include "config.h"
+#endif
 #include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
 #include <string.h> /* for memset() only ! */
 
+#ifdef HAVE_CTYPE_H
+#include <ctype.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
 #include "xmlmemory.h"
 #include "HTMLparser.h"
 #include "HTMLtree.h"
diff --git a/Makefile.am b/Makefile.am
index 3ba96ef..3a0105c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -27,6 +27,7 @@
 		xpath.c \
 		xmlIO.c \
 		xmlmemory.c \
+		nanohttp.c \
 		valid.c
 
 xmlincdir = $(includedir)/gnome-xml
@@ -43,6 +44,7 @@
 		xpath.h \
 		xmlIO.h \
 		xmlmemory.h \
+		nanohttp.h \
 		valid.h
 
 DEPS = $(top_builddir)/libxml.la
diff --git a/SAX.c b/SAX.c
index d0c08fe..7d1da40 100644
--- a/SAX.c
+++ b/SAX.c
@@ -6,6 +6,7 @@
  * Daniel Veillard <Daniel.Veillard@w3.org>
  */
 
+
 #include <stdio.h>
 #include <stdlib.h>
 #include "xmlmemory.h"
@@ -236,15 +237,8 @@
     fprintf(stderr, "SAX.resolveEntity(%s, %s)\n", publicId, systemId);
 #endif
 
-    /*
-     * TODO : resolveEntity, handling of http://.. or ftp://..
-     */
     if (systemId != NULL) {
-        if (!xmlStrncmp(systemId, BAD_CAST "http://", 7)) {
-	} else if (!xmlStrncmp(systemId, BAD_CAST "ftp://", 6)) {
-	} else {
-	    return(xmlNewInputFromFile(ctxt, (char *) systemId));
-	}
+	return(xmlNewInputFromFile(ctxt, (char *) systemId));
     }
     return(NULL);
 }
@@ -604,12 +598,29 @@
     CHAR *prefix;
     const CHAR *att;
     const CHAR *value;
-
     int i;
 
 #ifdef DEBUG_SAX
     fprintf(stderr, "SAX.startElement(%s)\n", fullname);
 #endif
+
+    /*
+     * First check on validity:
+     */
+    if (ctxt->validate && (ctxt->myDoc->extSubset == NULL) && 
+        ((ctxt->myDoc->intSubset == NULL) ||
+	 ((ctxt->myDoc->intSubset->notations == NULL) && 
+	  (ctxt->myDoc->intSubset->elements == NULL) &&
+	  (ctxt->myDoc->intSubset->attributes == NULL) && 
+	  (ctxt->myDoc->intSubset->entities == NULL)))) {
+	if (ctxt->vctxt.error != NULL) {
+            ctxt->vctxt.error(ctxt->vctxt.userData,
+	      "Validation failed: no DTD found !\n");
+	}
+	ctxt->validate = 0;
+    }
+       
+
     /*
      * Split the full name into a namespace prefix and the tag name
      */
diff --git a/config.h.in b/config.h.in
index 97a7bd1..32c79e2 100644
--- a/config.h.in
+++ b/config.h.in
@@ -34,6 +34,9 @@
 /* Define if you have the isnand function.  */
 #undef HAVE_ISNAND
 
+/* Define if you have the localtime function.  */
+#undef HAVE_LOCALTIME
+
 /* Define if you have the snprintf function.  */
 #undef HAVE_SNPRINTF
 
@@ -43,9 +46,15 @@
 /* Define if you have the strerror function.  */
 #undef HAVE_STRERROR
 
+/* Define if you have the strftime function.  */
+#undef HAVE_STRFTIME
+
 /* Define if you have the strndup function.  */
 #undef HAVE_STRNDUP
 
+/* Define if you have the <arpa/inet.h> header file.  */
+#undef HAVE_ARPA_INET_H
+
 /* Define if you have the <ctype.h> header file.  */
 #undef HAVE_CTYPE_H
 
@@ -79,18 +88,36 @@
 /* Define if you have the <ndir.h> header file.  */
 #undef HAVE_NDIR_H
 
+/* Define if you have the <netdb.h> header file.  */
+#undef HAVE_NETDB_H
+
+/* Define if you have the <netinet/in.h> header file.  */
+#undef HAVE_NETINET_IN_H
+
 /* Define if you have the <stdarg.h> header file.  */
 #undef HAVE_STDARG_H
 
+/* Define if you have the <stdlib.h> header file.  */
+#undef HAVE_STDLIB_H
+
 /* Define if you have the <sys/dir.h> header file.  */
 #undef HAVE_SYS_DIR_H
 
 /* Define if you have the <sys/ndir.h> header file.  */
 #undef HAVE_SYS_NDIR_H
 
+/* Define if you have the <sys/select.h> header file.  */
+#undef HAVE_SYS_SELECT_H
+
+/* Define if you have the <sys/socket.h> header file.  */
+#undef HAVE_SYS_SOCKET_H
+
 /* Define if you have the <sys/stat.h> header file.  */
 #undef HAVE_SYS_STAT_H
 
+/* Define if you have the <sys/time.h> header file.  */
+#undef HAVE_SYS_TIME_H
+
 /* Define if you have the <sys/types.h> header file.  */
 #undef HAVE_SYS_TYPES_H
 
@@ -103,6 +130,15 @@
 /* Define if you have the <zlib.h> header file.  */
 #undef HAVE_ZLIB_H
 
+/* Define if you have the inet library (-linet).  */
+#undef HAVE_LIBINET
+
+/* Define if you have the nsl library (-lnsl).  */
+#undef HAVE_LIBNSL
+
+/* Define if you have the socket library (-lsocket).  */
+#undef HAVE_LIBSOCKET
+
 /* Name of package */
 #undef PACKAGE
 
diff --git a/configure.in b/configure.in
index 49d5708..4c7a3f5 100644
--- a/configure.in
+++ b/configure.in
@@ -4,8 +4,8 @@
 AM_CONFIG_HEADER(config.h)
 
 LIBXML_MAJOR_VERSION=1
-LIBXML_MINOR_VERSION=6
-LIBXML_MICRO_VERSION=2
+LIBXML_MINOR_VERSION=7
+LIBXML_MICRO_VERSION=0
 LIBXML_VERSION=$LIBXML_MAJOR_VERSION.$LIBXML_MINOR_VERSION.$LIBXML_MICRO_VERSION
 LIBXML_VERSION_INFO=`expr $LIBXML_MAJOR_VERSION + $LIBXML_MINOR_VERSION`:$LIBXML_MICRO_VERSION:$LIBXML_MINOR_VERSION
 
@@ -46,6 +46,8 @@
 AC_CHECK_HEADERS(fcntl.h unistd.h ctype.h dirent.h errno.h malloc.h)
 AC_CHECK_HEADERS(stdarg.h sys/stat.h sys/types.h time.h zlib.h)
 AC_CHECK_HEADERS(ieeefp.h nan.h math.h fp_class.h float.h)
+AC_CHECK_HEADERS(stdlib.h sys/socket.h netinet/in.h arpa/inet.h)
+AC_CHECK_HEADERS(netdb.h sys/time.h sys/select.h)
 
 dnl Specific dir for HTML output ?
 if test "x$with_html_dir" = "x" ; then
@@ -70,6 +72,12 @@
 AC_FUNC_STRFTIME
 AC_CHECK_FUNCS(strdup strndup strerror snprintf)
 AC_CHECK_FUNCS(finite isinf isnan isnand fp_class class fpclass finite)
+AC_CHECK_FUNCS(strftime localtime)
+
+dnl Checks for inet libraries:
+AC_CHECK_LIB(socket, socket)
+AC_CHECK_LIB(inet, connect)
+AC_CHECK_LIB(nsl, t_accept)
 
 dnl Checks for isnan in libm if not in libc
 M_LIBS= 
@@ -93,7 +101,7 @@
 
 XML_LIBDIR='-L${libdir}'
 XML_INCLUDEDIR='-I${includedir}/gnome-xml'
-XML_LIBS="-lxml $Z_LIBS $M_LIBS"
+XML_LIBS="-lxml $Z_LIBS $M_LIBS $LIBS"
 
 AC_SUBST(XML_LIBDIR)
 AC_SUBST(XML_LIBS)
diff --git a/doc/gnome-xml.sgml b/doc/gnome-xml.sgml
index d1c21de..c39e959 100644
--- a/doc/gnome-xml.sgml
+++ b/doc/gnome-xml.sgml
@@ -10,6 +10,7 @@
 <!entity HTMLtree SYSTEM "sgml/HTMLtree.sgml">
 <!entity parserInternals SYSTEM "sgml/parserInternals.sgml">
 <!entity xmlmemory SYSTEM "sgml/xmlmemory.sgml">
+<!entity nanohttp SYSTEM "sgml/nanohttp.sgml">
 ]>
 
 <book>
@@ -30,6 +31,7 @@
     &xpath;
     &parserInternals;
     &xmlmemory;
+    &nanohttp;
   </chapter>
 </book>
 
diff --git a/doc/html/book1.html b/doc/html/book1.html
index 3ebd0f2..77bdef7 100644
--- a/doc/html/book1.html
+++ b/doc/html/book1.html
@@ -103,6 +103,11 @@
 HREF="gnome-xml-xmlmemory.html"
 >xmlmemory</A
 > &#8212; </DT
+><DT
+><A
+HREF="gnome-xml-nanohttp.html"
+>nanohttp</A
+> &#8212; </DT
 ></DL
 ></DD
 ></DL
diff --git a/doc/html/gnome-xml-entities.html b/doc/html/gnome-xml-entities.html
index 71f2994..b473a3c 100644
--- a/doc/html/gnome-xml-entities.html
+++ b/doc/html/gnome-xml-entities.html
@@ -115,7 +115,7 @@
 ><DIV
 CLASS="REFNAMEDIV"
 ><A
-NAME="AEN4098"
+NAME="AEN4116"
 ></A
 ><H2
 >Name</H2
@@ -123,7 +123,7 @@
 ><DIV
 CLASS="REFSYNOPSISDIV"
 ><A
-NAME="AEN4101"
+NAME="AEN4119"
 ></A
 ><H2
 >Synopsis</H2
@@ -344,7 +344,7 @@
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN4158"
+NAME="AEN4176"
 ></A
 ><H2
 >Description</H2
@@ -354,14 +354,14 @@
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN4161"
+NAME="AEN4179"
 ></A
 ><H2
 >Details</H2
 ><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4163"
+NAME="AEN4181"
 ></A
 ><H3
 ><A
@@ -377,7 +377,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define XML_INTERNAL_GENERAL_ENTITY		1</PRE
+>#define     XML_INTERNAL_GENERAL_ENTITY</PRE
 ></TD
 ></TR
 ></TABLE
@@ -387,7 +387,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4168"
+NAME="AEN4186"
 ></A
 ><H3
 ><A
@@ -403,7 +403,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define XML_EXTERNAL_GENERAL_PARSED_ENTITY	2</PRE
+>#define     XML_EXTERNAL_GENERAL_PARSED_ENTITY</PRE
 ></TD
 ></TR
 ></TABLE
@@ -413,7 +413,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4173"
+NAME="AEN4191"
 ></A
 ><H3
 ><A
@@ -429,7 +429,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define XML_EXTERNAL_GENERAL_UNPARSED_ENTITY	3</PRE
+>#define     XML_EXTERNAL_GENERAL_UNPARSED_ENTITY</PRE
 ></TD
 ></TR
 ></TABLE
@@ -439,7 +439,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4178"
+NAME="AEN4196"
 ></A
 ><H3
 ><A
@@ -455,7 +455,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define XML_INTERNAL_PARAMETER_ENTITY		4</PRE
+>#define     XML_INTERNAL_PARAMETER_ENTITY</PRE
 ></TD
 ></TR
 ></TABLE
@@ -465,7 +465,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4183"
+NAME="AEN4201"
 ></A
 ><H3
 ><A
@@ -481,7 +481,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define XML_EXTERNAL_PARAMETER_ENTITY		5</PRE
+>#define     XML_EXTERNAL_PARAMETER_ENTITY</PRE
 ></TD
 ></TR
 ></TABLE
@@ -491,7 +491,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4188"
+NAME="AEN4206"
 ></A
 ><H3
 ><A
@@ -507,7 +507,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define XML_INTERNAL_PREDEFINED_ENTITY		6</PRE
+>#define     XML_INTERNAL_PREDEFINED_ENTITY</PRE
 ></TD
 ></TR
 ></TABLE
@@ -517,33 +517,20 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4193"
+NAME="AEN4211"
 ></A
 ><H3
 ><A
 NAME="XMLENTITYPTR"
 ></A
 >xmlEntityPtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlEntity *xmlEntityPtr;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4198"
+NAME="AEN4215"
 ></A
 ><H3
 ><A
@@ -559,7 +546,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define XML_MIN_ENTITIES_TABLE	32</PRE
+>#define     XML_MIN_ENTITIES_TABLE</PRE
 ></TD
 ></TR
 ></TABLE
@@ -569,33 +556,20 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4203"
+NAME="AEN4220"
 ></A
 ><H3
 ><A
 NAME="XMLENTITIESTABLEPTR"
 ></A
 >xmlEntitiesTablePtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlEntitiesTable *xmlEntitiesTablePtr;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4208"
+NAME="AEN4224"
 ></A
 ><H3
 ><A
@@ -665,7 +639,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -682,7 +656,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the entity name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -699,7 +673,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the entity type XML_xxx_yyy_ENTITY</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -716,7 +690,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the entity external ID if available</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -733,7 +707,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the entity system ID if available</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -750,7 +724,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the entity content</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -760,7 +734,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4248"
+NAME="AEN4264"
 ></A
 ><H3
 ><A
@@ -830,7 +804,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -847,7 +821,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the entity name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -864,7 +838,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the entity type XML_xxx_yyy_ENTITY</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -881,7 +855,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the entity external ID if available</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -898,7 +872,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the entity system ID if available</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -915,7 +889,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the entity content</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -925,7 +899,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4288"
+NAME="AEN4304"
 ></A
 ><H3
 ><A
@@ -981,7 +955,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the entity name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -996,7 +970,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->NULL if not, othervise the entity</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1006,7 +980,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4309"
+NAME="AEN4325"
 ></A
 ><H3
 ><A
@@ -1068,7 +1042,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document referencing the entity</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1085,7 +1059,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the entity name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1100,7 +1074,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->A pointer to the entity structure or NULL if not found.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1110,7 +1084,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4335"
+NAME="AEN4351"
 ></A
 ><H3
 ><A
@@ -1171,7 +1145,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document referencing the entity</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1188,7 +1162,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the entity name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1203,7 +1177,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->A pointer to the entity structure or NULL if not found.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1213,7 +1187,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4361"
+NAME="AEN4377"
 ></A
 ><H3
 ><A
@@ -1274,7 +1248,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document referencing the entity</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1291,7 +1265,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the entity name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1306,7 +1280,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->A pointer to the entity structure or NULL if not found.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1316,7 +1290,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4387"
+NAME="AEN4403"
 ></A
 ><H3
 ><A
@@ -1383,7 +1357,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document containing the string</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1400,7 +1374,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  A string to convert to XML.</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1415,7 +1389,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->A newly allocated string with the substitution done.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1425,7 +1399,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4415"
+NAME="AEN4431"
 ></A
 ><H3
 ><A
@@ -1491,7 +1465,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document containing the string</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1508,7 +1482,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  A string to convert to XML.</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1523,7 +1497,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->A newly allocated string with the substitution done.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1533,7 +1507,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4442"
+NAME="AEN4458"
 ></A
 ><H3
 ><A
@@ -1584,7 +1558,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the xmlEntitiesTablePtr just created or NULL in case of error.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1594,7 +1568,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4458"
+NAME="AEN4474"
 ></A
 ><H3
 ><A
@@ -1650,7 +1624,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  An entity table</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1665,7 +1639,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the new xmlEntitiesTablePtr or NULL in case of error.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1675,7 +1649,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4479"
+NAME="AEN4495"
 ></A
 ><H3
 ><A
@@ -1728,7 +1702,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  An entity table</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1738,7 +1712,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4495"
+NAME="AEN4511"
 ></A
 ><H3
 ><A
@@ -1795,7 +1769,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  An XML buffer.</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1812,7 +1786,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  An entity table</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
diff --git a/doc/html/gnome-xml-htmlparser.html b/doc/html/gnome-xml-htmlparser.html
index 5123b22..297b93c 100644
--- a/doc/html/gnome-xml-htmlparser.html
+++ b/doc/html/gnome-xml-htmlparser.html
@@ -115,7 +115,7 @@
 ><DIV
 CLASS="REFNAMEDIV"
 ><A
-NAME="AEN5974"
+NAME="AEN6149"
 ></A
 ><H2
 >Name</H2
@@ -123,7 +123,7 @@
 ><DIV
 CLASS="REFSYNOPSISDIV"
 ><A
-NAME="AEN5977"
+NAME="AEN6152"
 ></A
 ><H2
 >Synopsis</H2
@@ -277,7 +277,7 @@
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN6015"
+NAME="AEN6190"
 ></A
 ><H2
 >Description</H2
@@ -287,248 +287,131 @@
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN6018"
+NAME="AEN6193"
 ></A
 ><H2
 >Details</H2
 ><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6020"
+NAME="AEN6195"
 ></A
 ><H3
 ><A
 NAME="HTMLPARSERCTXT"
 ></A
 >htmlParserCtxt</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlParserCtxt htmlParserCtxt;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6025"
+NAME="AEN6199"
 ></A
 ><H3
 ><A
 NAME="HTMLPARSERCTXTPTR"
 ></A
 >htmlParserCtxtPtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlParserCtxtPtr htmlParserCtxtPtr;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6030"
+NAME="AEN6203"
 ></A
 ><H3
 ><A
 NAME="HTMLPARSERNODEINFO"
 ></A
 >htmlParserNodeInfo</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlParserNodeInfo htmlParserNodeInfo;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6035"
+NAME="AEN6207"
 ></A
 ><H3
 ><A
 NAME="HTMLSAXHANDLER"
 ></A
 >htmlSAXHandler</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlSAXHandler htmlSAXHandler;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6040"
+NAME="AEN6211"
 ></A
 ><H3
 ><A
 NAME="HTMLSAXHANDLERPTR"
 ></A
 >htmlSAXHandlerPtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlSAXHandlerPtr htmlSAXHandlerPtr;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6045"
+NAME="AEN6215"
 ></A
 ><H3
 ><A
 NAME="HTMLPARSERINPUT"
 ></A
 >htmlParserInput</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlParserInput htmlParserInput;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6050"
+NAME="AEN6219"
 ></A
 ><H3
 ><A
 NAME="HTMLPARSERINPUTPTR"
 ></A
 >htmlParserInputPtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlParserInputPtr htmlParserInputPtr;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6055"
+NAME="AEN6223"
 ></A
 ><H3
 ><A
 NAME="HTMLDOCPTR"
 ></A
 >htmlDocPtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlDocPtr htmlDocPtr;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6060"
+NAME="AEN6227"
 ></A
 ><H3
 ><A
 NAME="HTMLNODEPTR"
 ></A
 >htmlNodePtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlNodePtr htmlNodePtr;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6065"
+NAME="AEN6231"
 ></A
 ><H3
 ><A
@@ -584,7 +467,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  The tag name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -599,7 +482,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the related htmlElemDescPtr or NULL if not found.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -609,7 +492,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6086"
+NAME="AEN6252"
 ></A
 ><H3
 ><A
@@ -667,7 +550,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> the entity name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -682,7 +565,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the associated htmlEntityDescPtr if found, NULL otherwise.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -692,7 +575,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6108"
+NAME="AEN6274"
 ></A
 ><H3
 ><A
@@ -754,7 +637,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an HTML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -771,7 +654,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  location to store the entity name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -786,8 +669,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the associated htmlEntityDescPtr if found, or NULL otherwise,
-if non-NULL *str will have to be freed by the caller.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -797,7 +679,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6135"
+NAME="AEN6301"
 ></A
 ><H3
 ><A
@@ -856,7 +738,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an HTML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -871,7 +753,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the value parsed (as an int)</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -881,7 +763,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6157"
+NAME="AEN6323"
 ></A
 ><H3
 ><A
@@ -938,7 +820,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an HTML parser context</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -948,7 +830,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6175"
+NAME="AEN6341"
 ></A
 ><H3
 ><A
@@ -1012,7 +894,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a pointer to an array of CHAR</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1029,7 +911,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a free form C string describing the HTML document encoding, or NULL</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1046,7 +928,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the SAX handler block</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1063,7 +945,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> if using SAX, this pointer will be provided on callbacks. </TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1078,7 +960,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the resulting document tree</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1088,7 +970,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6209"
+NAME="AEN6375"
 ></A
 ><H3
 ><A
@@ -1145,7 +1027,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a pointer to an array of CHAR</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1162,7 +1044,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a free form C string describing the HTML document encoding, or NULL</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1177,7 +1059,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the resulting document tree</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1187,7 +1069,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6234"
+NAME="AEN6400"
 ></A
 ><H3
 ><A
@@ -1249,7 +1131,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the filename</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1266,7 +1148,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a free form C string describing the HTML document encoding, or NULL</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1283,7 +1165,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the SAX handler block</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1300,7 +1182,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> if using SAX, this pointer will be provided on callbacks. </TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1315,7 +1197,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the resulting document tree</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1325,7 +1207,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6267"
+NAME="AEN6433"
 ></A
 ><H3
 ><A
@@ -1380,7 +1262,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the filename</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1397,7 +1279,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a free form C string describing the HTML document encoding, or NULL</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1412,7 +1294,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the resulting document tree</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
diff --git a/doc/html/gnome-xml-htmltree.html b/doc/html/gnome-xml-htmltree.html
index c8528cd..efbe62a 100644
--- a/doc/html/gnome-xml-htmltree.html
+++ b/doc/html/gnome-xml-htmltree.html
@@ -115,7 +115,7 @@
 ><DIV
 CLASS="REFNAMEDIV"
 ><A
-NAME="AEN6296"
+NAME="AEN6462"
 ></A
 ><H2
 >Name</H2
@@ -123,7 +123,7 @@
 ><DIV
 CLASS="REFSYNOPSISDIV"
 ><A
-NAME="AEN6299"
+NAME="AEN6465"
 ></A
 ><H2
 >Synopsis</H2
@@ -188,7 +188,7 @@
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN6313"
+NAME="AEN6479"
 ></A
 ><H2
 >Description</H2
@@ -198,14 +198,14 @@
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN6316"
+NAME="AEN6482"
 ></A
 ><H2
 >Details</H2
 ><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6318"
+NAME="AEN6484"
 ></A
 ><H3
 ><A
@@ -221,7 +221,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define HTML_TEXT_NODE		XML_TEXT_NODE</PRE
+>#define     HTML_TEXT_NODE</PRE
 ></TD
 ></TR
 ></TABLE
@@ -231,7 +231,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6323"
+NAME="AEN6489"
 ></A
 ><H3
 ><A
@@ -247,7 +247,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define HTML_ENTITY_REF_NODE	XML_ENTITY_REF_NODE</PRE
+>#define     HTML_ENTITY_REF_NODE</PRE
 ></TD
 ></TR
 ></TABLE
@@ -257,7 +257,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6328"
+NAME="AEN6494"
 ></A
 ><H3
 ><A
@@ -273,7 +273,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define HTML_COMMENT_NODE	XML_COMMENT_NODE</PRE
+>#define     HTML_COMMENT_NODE</PRE
 ></TD
 ></TR
 ></TABLE
@@ -283,7 +283,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6333"
+NAME="AEN6499"
 ></A
 ><H3
 ><A
@@ -342,7 +342,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -359,7 +359,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  OUT: the memory pointer</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -376,7 +376,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  OUT: the memory lenght</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -386,7 +386,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6358"
+NAME="AEN6524"
 ></A
 ><H3
 ><A
@@ -443,7 +443,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the FILE*</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -460,7 +460,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -470,7 +470,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6379"
+NAME="AEN6545"
 ></A
 ><H3
 ><A
@@ -524,7 +524,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the filename</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -541,7 +541,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -556,7 +556,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> the number of byte written or -1 in case of failure.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
diff --git a/doc/html/gnome-xml-parser.html b/doc/html/gnome-xml-parser.html
index b0f4c74..8e85050 100644
--- a/doc/html/gnome-xml-parser.html
+++ b/doc/html/gnome-xml-parser.html
@@ -924,7 +924,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define XML_DEFAULT_VERSION	"1.0"</PRE
+>#define     XML_DEFAULT_VERSION</PRE
 ></TD
 ></TR
 ></TABLE
@@ -1002,26 +1002,13 @@
 NAME="XMLPARSERINPUTPTR"
 ></A
 >xmlParserInputPtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlParserInput *xmlParserInputPtr;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN239"
+NAME="AEN238"
 ></A
 ><H3
 ><A
@@ -1137,85 +1124,46 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN267"
+NAME="AEN266"
 ></A
 ><H3
 ><A
 NAME="XMLPARSERNODEINFO"
 ></A
 >xmlParserNodeInfo</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef _xmlParserNodeInfo xmlParserNodeInfo;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN272"
+NAME="AEN270"
 ></A
 ><H3
 ><A
 NAME="XMLPARSERNODEINFOSEQ"
 ></A
 >xmlParserNodeInfoSeq</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef _xmlParserNodeInfoSeq xmlParserNodeInfoSeq;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN277"
+NAME="AEN274"
 ></A
 ><H3
 ><A
 NAME="XMLPARSERNODEINFOSEQPTR"
 ></A
 >xmlParserNodeInfoSeqPtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlParserNodeInfoSeq *xmlParserNodeInfoSeqPtr;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN282"
+NAME="AEN278"
 ></A
 ><H3
 ><A
@@ -1252,111 +1200,59 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN287"
+NAME="AEN283"
 ></A
 ><H3
 ><A
 NAME="XMLPARSERCTXT"
 ></A
 >xmlParserCtxt</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef _xmlParserCtxt xmlParserCtxt;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN292"
+NAME="AEN287"
 ></A
 ><H3
 ><A
 NAME="XMLPARSERCTXTPTR"
 ></A
 >xmlParserCtxtPtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlParserCtxt *xmlParserCtxtPtr;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN297"
+NAME="AEN291"
 ></A
 ><H3
 ><A
 NAME="XMLSAXLOCATOR"
 ></A
 >xmlSAXLocator</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef _xmlSAXLocator xmlSAXLocator;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN302"
+NAME="AEN295"
 ></A
 ><H3
 ><A
 NAME="XMLSAXLOCATORPTR"
 ></A
 >xmlSAXLocatorPtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlSAXLocator *xmlSAXLocatorPtr;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN307"
+NAME="AEN299"
 ></A
 ><H3
 ><A
@@ -1474,7 +1370,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN336"
+NAME="AEN328"
 ></A
 ><H3
 ><A
@@ -1595,7 +1491,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN365"
+NAME="AEN357"
 ></A
 ><H3
 ><A
@@ -1692,7 +1588,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN389"
+NAME="AEN381"
 ></A
 ><H3
 ><A
@@ -1789,7 +1685,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN413"
+NAME="AEN405"
 ></A
 ><H3
 ><A
@@ -1949,7 +1845,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN451"
+NAME="AEN443"
 ></A
 ><H3
 ><A
@@ -2070,7 +1966,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN480"
+NAME="AEN472"
 ></A
 ><H3
 ><A
@@ -2248,7 +2144,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN522"
+NAME="AEN514"
 ></A
 ><H3
 ><A
@@ -2366,7 +2262,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN550"
+NAME="AEN542"
 ></A
 ><H3
 ><A
@@ -2508,7 +2404,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN584"
+NAME="AEN576"
 ></A
 ><H3
 ><A
@@ -2587,7 +2483,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN603"
+NAME="AEN595"
 ></A
 ><H3
 ><A
@@ -2645,7 +2541,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN617"
+NAME="AEN609"
 ></A
 ><H3
 ><A
@@ -2703,7 +2599,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN631"
+NAME="AEN623"
 ></A
 ><H3
 ><A
@@ -2803,7 +2699,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN655"
+NAME="AEN647"
 ></A
 ><H3
 ><A
@@ -2882,7 +2778,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN674"
+NAME="AEN666"
 ></A
 ><H3
 ><A
@@ -2982,7 +2878,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN698"
+NAME="AEN690"
 ></A
 ><H3
 ><A
@@ -3061,7 +2957,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN717"
+NAME="AEN709"
 ></A
 ><H3
 ><A
@@ -3158,7 +3054,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN740"
+NAME="AEN732"
 ></A
 ><H3
 ><A
@@ -3255,7 +3151,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN763"
+NAME="AEN755"
 ></A
 ><H3
 ><A
@@ -3355,7 +3251,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN787"
+NAME="AEN779"
 ></A
 ><H3
 ><A
@@ -3434,7 +3330,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN806"
+NAME="AEN798"
 ></A
 ><H3
 ><A
@@ -3531,7 +3427,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN829"
+NAME="AEN821"
 ></A
 ><H3
 ><A
@@ -3625,7 +3521,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN851"
+NAME="AEN843"
 ></A
 ><H3
 ><A
@@ -3719,7 +3615,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN873"
+NAME="AEN865"
 ></A
 ><H3
 ><A
@@ -3813,7 +3709,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN895"
+NAME="AEN887"
 ></A
 ><H3
 ><A
@@ -3886,7 +3782,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN913"
+NAME="AEN905"
 ></A
 ><H3
 ><A
@@ -3959,7 +3855,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN931"
+NAME="AEN923"
 ></A
 ><H3
 ><A
@@ -4032,33 +3928,20 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN949"
+NAME="AEN941"
 ></A
 ><H3
 ><A
 NAME="XMLSAXHANDLERPTR"
 ></A
 >xmlSAXHandlerPtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlSAXHandler *xmlSAXHandlerPtr;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN954"
+NAME="AEN945"
 ></A
 ><H3
 ><A
@@ -4084,7 +3967,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN959"
+NAME="AEN950"
 ></A
 ><H3
 ><A
@@ -4110,7 +3993,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN964"
+NAME="AEN955"
 ></A
 ><H3
 ><A
@@ -4136,7 +4019,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN969"
+NAME="AEN960"
 ></A
 ><H3
 ><A
@@ -4162,7 +4045,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN974"
+NAME="AEN965"
 ></A
 ><H3
 ><A
@@ -4188,7 +4071,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN979"
+NAME="AEN970"
 ></A
 ><H3
 ><A
@@ -4243,7 +4126,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser input</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4260,7 +4143,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an indicative size for the lookahead</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4275,8 +4158,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the number of CHARs read, or -1 in case of error, 0 indicate the
-end of this entity</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4286,7 +4168,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1003"
+NAME="AEN994"
 ></A
 ><H3
 ><A
@@ -4341,7 +4223,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser input</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4358,7 +4240,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an indicative size for the lookahead</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4373,8 +4255,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the number of CHARs read, or -1 in case of error, 0 indicate the
-end of this entity</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4384,7 +4265,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1027"
+NAME="AEN1018"
 ></A
 ><H3
 ><A
@@ -4440,7 +4321,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the input CHAR *</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4455,7 +4336,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a new CHAR * or NULL</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4465,7 +4346,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1048"
+NAME="AEN1039"
 ></A
 ><H3
 ><A
@@ -4522,7 +4403,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the input CHAR *</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4539,12 +4420,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the len of <TT
-CLASS="PARAMETER"
-><I
->cur</I
-></TT
-></TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4559,7 +4435,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a new CHAR * or NULL</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4569,7 +4445,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1074"
+NAME="AEN1064"
 ></A
 ><H3
 ><A
@@ -4627,7 +4503,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the CHAR * array (haystack)</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4644,7 +4520,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the index of the first char (zero based)</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4661,7 +4537,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the length of the substring</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4676,7 +4552,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the CHAR * for the first occurence or NULL.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4686,7 +4562,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1103"
+NAME="AEN1093"
 ></A
 ><H3
 ><A
@@ -4746,7 +4622,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the CHAR * array</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4763,7 +4639,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the CHAR to search</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4778,7 +4654,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the CHAR * for the first occurence or NULL.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4788,7 +4664,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1129"
+NAME="AEN1119"
 ></A
 ><H3
 ><A
@@ -4848,7 +4724,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the CHAR * array (haystack)</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4865,7 +4741,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the CHAR to search (needle)</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4880,7 +4756,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the CHAR * for the first occurence or NULL.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4890,7 +4766,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1155"
+NAME="AEN1145"
 ></A
 ><H3
 ><A
@@ -4947,7 +4823,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the first CHAR *</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4964,7 +4840,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the second CHAR *</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4979,7 +4855,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the integer result of the comparison</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4989,7 +4865,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1180"
+NAME="AEN1170"
 ></A
 ><H3
 ><A
@@ -5047,7 +4923,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the first CHAR *</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5064,7 +4940,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the second CHAR *</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5081,7 +4957,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the max comparison length</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5096,7 +4972,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the integer result of the comparison</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5106,7 +4982,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1209"
+NAME="AEN1199"
 ></A
 ><H3
 ><A
@@ -5159,7 +5035,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the CHAR * array</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5174,7 +5050,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the number of CHAR contained in the ARRAY.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5184,7 +5060,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1229"
+NAME="AEN1219"
 ></A
 ><H3
 ><A
@@ -5244,7 +5120,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the original CHAR * array</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5261,7 +5137,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the CHAR * array added</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5276,7 +5152,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a new CHAR * containing the concatenated string.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5286,7 +5162,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1255"
+NAME="AEN1245"
 ></A
 ><H3
 ><A
@@ -5347,7 +5223,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the original CHAR * array</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5364,7 +5240,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the CHAR * array added</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5381,12 +5257,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the length of <TT
-CLASS="PARAMETER"
-><I
->add</I
-></TT
-></TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5401,7 +5272,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a new CHAR * containing the concatenated string.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5411,7 +5282,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1286"
+NAME="AEN1275"
 ></A
 ><H3
 ><A
@@ -5467,7 +5338,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a pointer to an array of CHAR</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5482,7 +5353,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the resulting document tree</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5492,7 +5363,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1307"
+NAME="AEN1296"
 ></A
 ><H3
 ><A
@@ -5546,7 +5417,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an pointer to a char array</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5563,7 +5434,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the size of the array</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5578,7 +5449,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the resulting document tree</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5588,7 +5459,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1331"
+NAME="AEN1320"
 ></A
 ><H3
 ><A
@@ -5642,7 +5513,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the filename</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5657,7 +5528,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the resulting document tree</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5667,7 +5538,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1351"
+NAME="AEN1340"
 ></A
 ><H3
 ><A
@@ -5725,7 +5596,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  int 0 or 1 </TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5740,7 +5611,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the last value for 0 for no substitution, 1 for substitution.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5750,7 +5621,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1371"
+NAME="AEN1360"
 ></A
 ><H3
 ><A
@@ -5807,7 +5678,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a pointer to an array of CHAR</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5822,7 +5693,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the resulting document tree</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5832,7 +5703,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1392"
+NAME="AEN1381"
 ></A
 ><H3
 ><A
@@ -5887,7 +5758,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an pointer to a char array</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5904,7 +5775,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the size of the array</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5919,7 +5790,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the resulting document tree</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5929,7 +5800,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1416"
+NAME="AEN1405"
 ></A
 ><H3
 ><A
@@ -5984,7 +5855,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the filename</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5999,7 +5870,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the resulting document tree</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6009,7 +5880,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1436"
+NAME="AEN1425"
 ></A
 ><H3
 ><A
@@ -6067,7 +5938,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6082,8 +5953,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->0, -1 in case of error. the parser context is augmented
-as a result of the parsing.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6093,7 +5963,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1458"
+NAME="AEN1447"
 ></A
 ><H3
 ><A
@@ -6156,7 +6026,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the SAX handler block</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6173,7 +6043,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a pointer to an array of CHAR</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6190,8 +6060,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  work in recovery mode, i.e. tries to read no Well Formed
-documents</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6206,7 +6075,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the resulting document tree</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6216,7 +6085,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1488"
+NAME="AEN1477"
 ></A
 ><H3
 ><A
@@ -6277,7 +6146,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the SAX handler block</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6294,7 +6163,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an pointer to a char array</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6311,7 +6180,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the siwe of the array</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6328,8 +6197,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  work in recovery mode, i.e. tries to read no Well Formed
-documents</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6344,7 +6212,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the resulting document tree</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6354,7 +6222,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1521"
+NAME="AEN1510"
 ></A
 ><H3
 ><A
@@ -6415,7 +6283,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the SAX handler block</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6432,7 +6300,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the filename</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6449,8 +6317,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  work in recovery mode, i.e. tries to read no Well Formed
-documents</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6465,7 +6332,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the resulting document tree</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6475,7 +6342,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1550"
+NAME="AEN1539"
 ></A
 ><H3
 ><A
@@ -6535,7 +6402,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a NAME* containing the External ID of the DTD</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6552,7 +6419,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a NAME* containing the URL to the DTD</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6567,7 +6434,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the resulting xmlDtdPtr or NULL in case of error.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6577,7 +6444,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1576"
+NAME="AEN1565"
 ></A
 ><H3
 ><A
@@ -6641,7 +6508,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the SAX handler block</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6658,7 +6525,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a NAME* containing the External ID of the DTD</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6675,7 +6542,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a NAME* containing the URL to the DTD</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6690,7 +6557,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the resulting xmlDtdPtr or NULL in case of error.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6700,7 +6567,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1607"
+NAME="AEN1596"
 ></A
 ><H3
 ><A
@@ -6753,7 +6620,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an HTML parser context</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6763,7 +6630,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1623"
+NAME="AEN1612"
 ></A
 ><H3
 ><A
@@ -6816,7 +6683,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6826,7 +6693,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1639"
+NAME="AEN1628"
 ></A
 ><H3
 ><A
@@ -6886,7 +6753,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6903,7 +6770,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a CHAR * buffer</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6920,7 +6787,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a file name</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6930,7 +6797,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1664"
+NAME="AEN1653"
 ></A
 ><H3
 ><A
@@ -6958,7 +6825,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1670"
+NAME="AEN1659"
 ></A
 ><H3
 ><A
@@ -6986,7 +6853,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1676"
+NAME="AEN1665"
 ></A
 ><H3
 ><A
@@ -7047,7 +6914,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7064,7 +6931,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML node within the tree</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7079,7 +6946,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->an xmlParserNodeInfo block pointer or NULL</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -7089,7 +6956,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1702"
+NAME="AEN1691"
 ></A
 ><H3
 ><A
@@ -7142,7 +7009,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a node info sequence pointer</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -7152,7 +7019,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1718"
+NAME="AEN1707"
 ></A
 ><H3
 ><A
@@ -7206,7 +7073,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a node info sequence pointer</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -7216,7 +7083,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1734"
+NAME="AEN1723"
 ></A
 ><H3
 ><A
@@ -7277,7 +7144,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a node info sequence pointer</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7294,7 +7161,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML node pointer</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7309,7 +7176,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a long indicating the position of the record</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -7319,7 +7186,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1760"
+NAME="AEN1749"
 ></A
 ><H3
 ><A
@@ -7376,7 +7243,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7393,7 +7260,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a node info sequence pointer</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -7403,7 +7270,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1781"
+NAME="AEN1770"
 ></A
 ><H3
 ><A
@@ -7464,7 +7331,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1796"
+NAME="AEN1785"
 ></A
 ><H3
 ><A
@@ -7524,7 +7391,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN1811"
+NAME="AEN1800"
 ></A
 ><H3
 ><A
diff --git a/doc/html/gnome-xml-parserinternals.html b/doc/html/gnome-xml-parserinternals.html
index 7250a26..80e2036 100644
--- a/doc/html/gnome-xml-parserinternals.html
+++ b/doc/html/gnome-xml-parserinternals.html
@@ -115,7 +115,7 @@
 ><DIV
 CLASS="REFNAMEDIV"
 ><A
-NAME="AEN6603"
+NAME="AEN6842"
 ></A
 ><H2
 >Name</H2
@@ -123,7 +123,7 @@
 ><DIV
 CLASS="REFSYNOPSISDIV"
 ><A
-NAME="AEN6606"
+NAME="AEN6845"
 ></A
 ><H2
 >Synopsis</H2
@@ -886,7 +886,7 @@
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN6817"
+NAME="AEN7056"
 ></A
 ><H2
 >Description</H2
@@ -896,14 +896,14 @@
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN6820"
+NAME="AEN7059"
 ></A
 ><H2
 >Details</H2
 ><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6822"
+NAME="AEN7061"
 ></A
 ><H3
 ><A
@@ -919,7 +919,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define XML_MAX_NAMELEN 1000</PRE
+>#define     XML_MAX_NAMELEN</PRE
 ></TD
 ></TR
 ></TABLE
@@ -929,7 +929,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6827"
+NAME="AEN7066"
 ></A
 ><H3
 ><A
@@ -942,7 +942,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6831"
+NAME="AEN7070"
 ></A
 ><H3
 ><A
@@ -1000,7 +1000,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6845"
+NAME="AEN7084"
 ></A
 ><H3
 ><A
@@ -1016,7 +1016,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define SKIPCHARVAL(p) (p)++;</PRE
+>#define     SKIPCHARVAL(p)</PRE
 ></TD
 ></TR
 ></TABLE
@@ -1058,7 +1058,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6859"
+NAME="AEN7098"
 ></A
 ><H3
 ><A
@@ -1116,7 +1116,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6873"
+NAME="AEN7112"
 ></A
 ><H3
 ><A
@@ -1174,7 +1174,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6887"
+NAME="AEN7126"
 ></A
 ><H3
 ><A
@@ -1232,7 +1232,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6901"
+NAME="AEN7140"
 ></A
 ><H3
 ><A
@@ -1290,7 +1290,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6915"
+NAME="AEN7154"
 ></A
 ><H3
 ><A
@@ -1348,7 +1348,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6929"
+NAME="AEN7168"
 ></A
 ><H3
 ><A
@@ -1406,7 +1406,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6943"
+NAME="AEN7182"
 ></A
 ><H3
 ><A
@@ -1464,7 +1464,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6957"
+NAME="AEN7196"
 ></A
 ><H3
 ><A
@@ -1522,7 +1522,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6971"
+NAME="AEN7210"
 ></A
 ><H3
 ><A
@@ -1580,7 +1580,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6985"
+NAME="AEN7224"
 ></A
 ><H3
 ><A
@@ -1638,7 +1638,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6999"
+NAME="AEN7238"
 ></A
 ><H3
 ><A
@@ -1696,7 +1696,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7013"
+NAME="AEN7252"
 ></A
 ><H3
 ><A
@@ -1754,7 +1754,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7027"
+NAME="AEN7266"
 ></A
 ><H3
 ><A
@@ -1810,7 +1810,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a pointer to an array of CHAR</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1825,7 +1825,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the new parser context or NULL</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1835,7 +1835,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7048"
+NAME="AEN7287"
 ></A
 ><H3
 ><A
@@ -1890,7 +1890,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the filename</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1905,7 +1905,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the new parser context or NULL</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1915,7 +1915,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7068"
+NAME="AEN7307"
 ></A
 ><H3
 ><A
@@ -1969,7 +1969,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an pointer to a char array</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1986,7 +1986,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the siwe of the array</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2001,7 +2001,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the new parser context or NULL</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2011,7 +2011,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7092"
+NAME="AEN7331"
 ></A
 ><H3
 ><A
@@ -2065,7 +2065,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2075,7 +2075,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7108"
+NAME="AEN7347"
 ></A
 ><H3
 ><A
@@ -2126,7 +2126,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the xmlParserCtxtPtr or NULL</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2136,7 +2136,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7124"
+NAME="AEN7363"
 ></A
 ><H3
 ><A
@@ -2194,7 +2194,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2221,7 +2221,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7145"
+NAME="AEN7384"
 ></A
 ><H3
 ><A
@@ -2281,7 +2281,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2298,7 +2298,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML entity pointer.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2308,7 +2308,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7167"
+NAME="AEN7406"
 ></A
 ><H3
 ><A
@@ -2368,7 +2368,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2385,7 +2385,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an Entity pointer</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2400,7 +2400,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the new input stream or NULL</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2410,7 +2410,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7193"
+NAME="AEN7432"
 ></A
 ><H3
 ><A
@@ -2468,7 +2468,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2485,7 +2485,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser input fragment (entity, XML fragment ...).</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2495,7 +2495,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7214"
+NAME="AEN7453"
 ></A
 ><H3
 ><A
@@ -2552,7 +2552,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2567,7 +2567,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the current CHAR in the parser context</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2577,7 +2577,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7235"
+NAME="AEN7474"
 ></A
 ><H3
 ><A
@@ -2630,7 +2630,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an xmlP arserInputPtr</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2640,7 +2640,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7251"
+NAME="AEN7490"
 ></A
 ><H3
 ><A
@@ -2697,7 +2697,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2714,7 +2714,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the filename to use as entity</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2729,7 +2729,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the new input stream or NULL in case of error</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2739,7 +2739,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7276"
+NAME="AEN7515"
 ></A
 ><H3
 ><A
@@ -2805,7 +2805,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2822,7 +2822,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a CHAR ** </TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2837,8 +2837,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the function returns the local part, and prefix is updated
-to get the Prefix if any.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2848,7 +2847,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7305"
+NAME="AEN7544"
 ></A
 ><H3
 ><A
@@ -2909,7 +2908,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2924,7 +2923,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the namespace name or NULL</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2934,7 +2933,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7328"
+NAME="AEN7567"
 ></A
 ><H3
 ><A
@@ -3000,7 +2999,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3017,7 +3016,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a CHAR ** </TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3032,8 +3031,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the function returns the local part, and prefix is updated
-to get the Prefix if any.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3043,7 +3041,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7357"
+NAME="AEN7596"
 ></A
 ><H3
 ><A
@@ -3103,7 +3101,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3118,7 +3116,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the namespace name</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3128,7 +3126,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7380"
+NAME="AEN7619"
 ></A
 ><H3
 ><A
@@ -3185,7 +3183,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3200,7 +3198,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the string parser or NULL.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3210,7 +3208,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7401"
+NAME="AEN7640"
 ></A
 ><H3
 ><A
@@ -3269,7 +3267,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3279,7 +3277,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7419"
+NAME="AEN7658"
 ></A
 ><H3
 ><A
@@ -3343,7 +3341,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3358,7 +3356,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the Name parsed or NULL</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3368,7 +3366,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7443"
+NAME="AEN7682"
 ></A
 ><H3
 ><A
@@ -3431,7 +3429,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3446,7 +3444,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the Name parsed or NULL</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3456,7 +3454,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7467"
+NAME="AEN7706"
 ></A
 ><H3
 ><A
@@ -3516,7 +3514,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3531,7 +3529,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the Nmtoken parsed or NULL</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3541,7 +3539,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7490"
+NAME="AEN7729"
 ></A
 ><H3
 ><A
@@ -3604,7 +3602,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3621,7 +3619,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  if non-NULL store a copy of the original entity value</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3636,7 +3634,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the EntityValue parsed with reference substitued or NULL</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3646,7 +3644,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7517"
+NAME="AEN7756"
 ></A
 ><H3
 ><A
@@ -3707,7 +3705,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3722,7 +3720,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the AttValue parsed or NULL.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3732,7 +3730,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7539"
+NAME="AEN7778"
 ></A
 ><H3
 ><A
@@ -3790,7 +3788,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3805,7 +3803,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the SystemLiteral parsed or NULL</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3815,7 +3813,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7561"
+NAME="AEN7800"
 ></A
 ><H3
 ><A
@@ -3873,7 +3871,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3888,7 +3886,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the PubidLiteral parsed or NULL.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3898,7 +3896,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7583"
+NAME="AEN7822"
 ></A
 ><H3
 ><A
@@ -3955,7 +3953,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3972,7 +3970,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  int indicating whether we are within a CDATA section</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3982,7 +3980,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7604"
+NAME="AEN7843"
 ></A
 ><H3
 ><A
@@ -4051,7 +4049,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4068,7 +4066,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a CHAR** receiving PubidLiteral</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4085,8 +4083,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> indicate whether we should restrict parsing to only
-production [75], see NOTE below</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4101,9 +4098,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the function returns SystemLiteral and in the second
-case publicID receives PubidLiteral, is strict is off
-it is possible to return NULL and have publicID set.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4113,7 +4108,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7637"
+NAME="AEN7876"
 ></A
 ><H3
 ><A
@@ -4170,7 +4165,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4180,7 +4175,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7654"
+NAME="AEN7893"
 ></A
 ><H3
 ><A
@@ -4238,7 +4233,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4253,7 +4248,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the PITarget name or NULL</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4263,7 +4258,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7676"
+NAME="AEN7915"
 ></A
 ><H3
 ><A
@@ -4320,7 +4315,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4330,7 +4325,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7694"
+NAME="AEN7933"
 ></A
 ><H3
 ><A
@@ -4395,7 +4390,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4405,7 +4400,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7714"
+NAME="AEN7953"
 ></A
 ><H3
 ><A
@@ -4473,7 +4468,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4483,7 +4478,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7737"
+NAME="AEN7976"
 ></A
 ><H3
 ><A
@@ -4579,7 +4574,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4596,7 +4591,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  Receive a possible fixed default value for the attribute</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4611,8 +4606,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> XML_ATTRIBUTE_NONE, XML_ATTRIBUTE_REQUIRED, XML_ATTRIBUTE_IMPLIED
-or XML_ATTRIBUTE_FIXED. </TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4622,7 +4616,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7774"
+NAME="AEN8013"
 ></A
 ><H3
 ><A
@@ -4686,7 +4680,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4701,7 +4695,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> the notation attribute tree built while parsing</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4711,7 +4705,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7798"
+NAME="AEN8037"
 ></A
 ><H3
 ><A
@@ -4773,7 +4767,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4788,7 +4782,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> the enumeration attribute tree built while parsing</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4798,7 +4792,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7821"
+NAME="AEN8060"
 ></A
 ><H3
 ><A
@@ -4859,7 +4853,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4876,7 +4870,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the enumeration tree built while parsing</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4891,7 +4885,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> XML_ATTRIBUTE_ENUMERATION or XML_ATTRIBUTE_NOTATION</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4901,7 +4895,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7848"
+NAME="AEN8087"
 ></A
 ><H3
 ><A
@@ -5003,7 +4997,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5020,7 +5014,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the enumeration tree built while parsing</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5035,7 +5029,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the attribute type</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5045,7 +5039,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7886"
+NAME="AEN8125"
 ></A
 ><H3
 ><A
@@ -5102,7 +5096,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5112,7 +5106,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7904"
+NAME="AEN8143"
 ></A
 ><H3
 ><A
@@ -5185,7 +5179,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5200,7 +5194,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> the list of the xmlElementContentPtr describing the element choices</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5210,7 +5204,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7930"
+NAME="AEN8169"
 ></A
 ><H3
 ><A
@@ -5287,7 +5281,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5302,8 +5296,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> the tree of xmlElementContentPtr describing the element 
-hierarchy.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5313,7 +5306,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7956"
+NAME="AEN8195"
 ></A
 ><H3
 ><A
@@ -5377,7 +5370,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5394,7 +5387,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the name of the element being defined.</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5411,7 +5404,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the Element Content pointer will be stored here if any</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5426,7 +5419,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> the type of element content XML_ELEMENT_TYPE_xxx</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5436,7 +5429,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN7987"
+NAME="AEN8226"
 ></A
 ><H3
 ><A
@@ -5494,7 +5487,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5509,7 +5502,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the type of the element, or -1 in case of error</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5519,7 +5512,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8009"
+NAME="AEN8248"
 ></A
 ><H3
 ><A
@@ -5588,7 +5581,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5598,7 +5591,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8028"
+NAME="AEN8267"
 ></A
 ><H3
 ><A
@@ -5661,7 +5654,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5676,7 +5669,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the value parsed (as an int)</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5686,7 +5679,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8051"
+NAME="AEN8290"
 ></A
 ><H3
 ><A
@@ -5762,7 +5755,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5777,7 +5770,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the xmlEntityPtr if found, or NULL otherwise.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5787,7 +5780,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8075"
+NAME="AEN8314"
 ></A
 ><H3
 ><A
@@ -5851,7 +5844,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5861,7 +5854,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8094"
+NAME="AEN8333"
 ></A
 ><H3
 ><A
@@ -5937,7 +5930,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5947,7 +5940,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8115"
+NAME="AEN8354"
 ></A
 ><H3
 ><A
@@ -6007,7 +6000,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6017,7 +6010,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8133"
+NAME="AEN8372"
 ></A
 ><H3
 ><A
@@ -6100,7 +6093,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6117,7 +6110,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a CHAR ** used to store the value of the attribute</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6132,7 +6125,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the attribute name, and the value in *value.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6142,7 +6135,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8167"
+NAME="AEN8406"
 ></A
 ><H3
 ><A
@@ -6217,7 +6210,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6232,7 +6225,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the element name parsed</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6242,7 +6235,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8195"
+NAME="AEN8434"
 ></A
 ><H3
 ><A
@@ -6305,7 +6298,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6322,7 +6315,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the tag name as parsed in the opening tag.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6332,7 +6325,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8219"
+NAME="AEN8458"
 ></A
 ><H3
 ><A
@@ -6393,7 +6386,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6403,7 +6396,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8239"
+NAME="AEN8478"
 ></A
 ><H3
 ><A
@@ -6458,7 +6451,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6468,7 +6461,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8256"
+NAME="AEN8495"
 ></A
 ><H3
 ><A
@@ -6540,7 +6533,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6550,7 +6543,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8275"
+NAME="AEN8514"
 ></A
 ><H3
 ><A
@@ -6608,7 +6601,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6623,7 +6616,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the string giving the XML version number, or NULL</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6633,7 +6626,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8297"
+NAME="AEN8536"
 ></A
 ><H3
 ><A
@@ -6693,7 +6686,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6708,7 +6701,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the version string, e.g. "1.0"</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6718,7 +6711,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8320"
+NAME="AEN8559"
 ></A
 ><H3
 ><A
@@ -6776,7 +6769,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6791,7 +6784,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the encoding name value or NULL</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6801,7 +6794,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8342"
+NAME="AEN8581"
 ></A
 ><H3
 ><A
@@ -6861,7 +6854,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6876,7 +6869,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the encoding value or NULL</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6886,7 +6879,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8365"
+NAME="AEN8604"
 ></A
 ><H3
 ><A
@@ -6956,7 +6949,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6971,7 +6964,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->1 if standalone, 0 otherwise</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6981,7 +6974,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8387"
+NAME="AEN8626"
 ></A
 ><H3
 ><A
@@ -7036,7 +7029,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -7046,7 +7039,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8404"
+NAME="AEN8643"
 ></A
 ><H3
 ><A
@@ -7101,7 +7094,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -7111,7 +7104,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8421"
+NAME="AEN8660"
 ></A
 ><H3
 ><A
@@ -7176,7 +7169,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7220,7 +7213,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8449"
+NAME="AEN8688"
 ></A
 ><H3
 ><A
@@ -7236,7 +7229,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define XML_SUBSTITUTE_NONE	0</PRE
+>#define     XML_SUBSTITUTE_NONE</PRE
 ></TD
 ></TR
 ></TABLE
@@ -7246,7 +7239,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8454"
+NAME="AEN8693"
 ></A
 ><H3
 ><A
@@ -7262,7 +7255,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define XML_SUBSTITUTE_REF	1</PRE
+>#define     XML_SUBSTITUTE_REF</PRE
 ></TD
 ></TR
 ></TABLE
@@ -7272,7 +7265,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8459"
+NAME="AEN8698"
 ></A
 ><H3
 ><A
@@ -7288,7 +7281,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define XML_SUBSTITUTE_PEREF	2</PRE
+>#define     XML_SUBSTITUTE_PEREF</PRE
 ></TD
 ></TR
 ></TABLE
@@ -7298,7 +7291,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8464"
+NAME="AEN8703"
 ></A
 ><H3
 ><A
@@ -7314,7 +7307,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define XML_SUBSTITUTE_BOTH 	3</PRE
+>#define     XML_SUBSTITUTE_BOTH</PRE
 ></TD
 ></TR
 ></TABLE
@@ -7324,7 +7317,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8469"
+NAME="AEN8708"
 ></A
 ><H3
 ><A
@@ -7396,7 +7389,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7413,7 +7406,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the len to decode (in bytes !), -1 for no size limit</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7430,7 +7423,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  combination of XML_SUBSTITUTE_REF and XML_SUBSTITUTE_PEREF</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7447,7 +7440,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an end marker CHAR, 0 if none</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7464,7 +7457,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an end marker CHAR, 0 if none</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7481,7 +7474,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an end marker CHAR, 0 if none</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7496,8 +7489,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->A newly allocated string with the substitution done. The caller
-must deallocate it !</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -7507,7 +7499,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8514"
+NAME="AEN8753"
 ></A
 ><H3
 ><A
@@ -7604,7 +7596,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8538"
+NAME="AEN8777"
 ></A
 ><H3
 ><A
@@ -7683,7 +7675,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8558"
+NAME="AEN8797"
 ></A
 ><H3
 ><A
@@ -7780,7 +7772,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN8582"
+NAME="AEN8821"
 ></A
 ><H3
 ><A
diff --git a/doc/html/gnome-xml-tree.html b/doc/html/gnome-xml-tree.html
index e95648c..3f57e80 100644
--- a/doc/html/gnome-xml-tree.html
+++ b/doc/html/gnome-xml-tree.html
@@ -115,7 +115,7 @@
 ><DIV
 CLASS="REFNAMEDIV"
 ><A
-NAME="AEN1844"
+NAME="AEN1833"
 ></A
 ><H2
 >Name</H2
@@ -123,7 +123,7 @@
 ><DIV
 CLASS="REFSYNOPSISDIV"
 ><A
-NAME="AEN1847"
+NAME="AEN1836"
 ></A
 ><H2
 >Synopsis</H2
@@ -211,6 +211,10 @@
 >xmlIDPtr</A
 >;
 typedef     <A
+HREF="gnome-xml-tree.html#XMLREFPTR"
+>xmlRefPtr</A
+>;
+typedef     <A
 HREF="gnome-xml-tree.html#XMLNODE"
 >xmlNode</A
 >;
@@ -1071,6 +1075,20 @@
 HREF="gnome-xml-tree.html#CHAR"
 >CHAR</A
 > *lang);
+int         <A
+HREF="gnome-xml-tree.html#XMLREMOVEPROP"
+>xmlRemoveProp</A
+>                   (<A
+HREF="gnome-xml-tree.html#XMLATTRPTR"
+>xmlAttrPtr</A
+> attr);
+int         <A
+HREF="gnome-xml-tree.html#XMLREMOVENODE"
+>xmlRemoveNode</A
+>                   (<A
+HREF="gnome-xml-tree.html#XMLNODEPTR"
+>xmlNodePtr</A
+> node);
 void        <A
 HREF="gnome-xml-tree.html#XMLBUFFERWRITECHAR"
 >xmlBufferWriteCHAR</A
@@ -1162,7 +1180,7 @@
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN2129"
+NAME="AEN2123"
 ></A
 ><H2
 >Description</H2
@@ -1172,14 +1190,14 @@
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN2132"
+NAME="AEN2126"
 ></A
 ><H2
 >Details</H2
 ><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2134"
+NAME="AEN2128"
 ></A
 ><H3
 ><A
@@ -1218,7 +1236,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2139"
+NAME="AEN2133"
 ></A
 ><H3
 ><A
@@ -1231,7 +1249,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2143"
+NAME="AEN2137"
 ></A
 ><H3
 ><A
@@ -1247,7 +1265,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define BAD_CAST (CHAR *)</PRE
+>#define     BAD_CAST</PRE
 ></TD
 ></TR
 ></TABLE
@@ -1257,33 +1275,20 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2148"
+NAME="AEN2142"
 ></A
 ><H3
 ><A
 NAME="XMLNOTATIONPTR"
 ></A
 >xmlNotationPtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlNotation *xmlNotationPtr;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2153"
+NAME="AEN2146"
 ></A
 ><H3
 ><A
@@ -1320,7 +1325,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2158"
+NAME="AEN2151"
 ></A
 ><H3
 ><A
@@ -1351,59 +1356,33 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2163"
+NAME="AEN2156"
 ></A
 ><H3
 ><A
 NAME="XMLENUMERATIONPTR"
 ></A
 >xmlEnumerationPtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlEnumeration *xmlEnumerationPtr;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2168"
+NAME="AEN2160"
 ></A
 ><H3
 ><A
 NAME="XMLATTRIBUTEPTR"
 ></A
 >xmlAttributePtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlAttribute *xmlAttributePtr;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2173"
+NAME="AEN2164"
 ></A
 ><H3
 ><A
@@ -1434,7 +1413,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2178"
+NAME="AEN2169"
 ></A
 ><H3
 ><A
@@ -1465,33 +1444,20 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2183"
+NAME="AEN2174"
 ></A
 ><H3
 ><A
 NAME="XMLELEMENTCONTENTPTR"
 ></A
 >xmlElementContentPtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlElementContent *xmlElementContentPtr;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2188"
+NAME="AEN2178"
 ></A
 ><H3
 ><A
@@ -1522,33 +1488,20 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2193"
+NAME="AEN2183"
 ></A
 ><H3
 ><A
 NAME="XMLELEMENTPTR"
 ></A
 >xmlElementPtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlElement *xmlElementPtr;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2198"
+NAME="AEN2187"
 ></A
 ><H3
 ><A
@@ -1577,26 +1530,52 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2203"
+NAME="AEN2192"
 ></A
 ><H3
 ><A
 NAME="XMLNSPTR"
 ></A
 >xmlNsPtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlNs *xmlNsPtr;</PRE
-></TD
-></TR
-></TABLE
+><P
+></P
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN2196"
+></A
+><H3
+><A
+NAME="XMLDTDPTR"
+></A
+>xmlDtdPtr</H3
+><P
+></P
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN2200"
+></A
+><H3
+><A
+NAME="XMLATTRPTR"
+></A
+>xmlAttrPtr</H3
+><P
+></P
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN2204"
+></A
+><H3
+><A
+NAME="XMLIDPTR"
+></A
+>xmlIDPtr</H3
 ><P
 ></P
 ></DIV
@@ -1607,100 +1586,61 @@
 ></A
 ><H3
 ><A
-NAME="XMLDTDPTR"
+NAME="XMLREFPTR"
 ></A
->xmlDtdPtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlDtd *xmlDtdPtr;</PRE
-></TD
-></TR
-></TABLE
+>xmlRefPtr</H3
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2213"
-></A
-><H3
-><A
-NAME="XMLATTRPTR"
-></A
->xmlAttrPtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlAttr *xmlAttrPtr;</PRE
-></TD
-></TR
-></TABLE
-><P
-></P
-></DIV
-><HR><DIV
-CLASS="REFSECT2"
-><A
-NAME="AEN2218"
-></A
-><H3
-><A
-NAME="XMLIDPTR"
-></A
->xmlIDPtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlID *xmlIDPtr;</PRE
-></TD
-></TR
-></TABLE
-><P
-></P
-></DIV
-><HR><DIV
-CLASS="REFSECT2"
-><A
-NAME="AEN2223"
+NAME="AEN2212"
 ></A
 ><H3
 ><A
 NAME="XMLNODE"
 ></A
 >xmlNode</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef _xmlNode xmlNode;</PRE
-></TD
-></TR
-></TABLE
+><P
+></P
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN2216"
+></A
+><H3
+><A
+NAME="XMLNODEPTR"
+></A
+>xmlNodePtr</H3
+><P
+></P
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN2220"
+></A
+><H3
+><A
+NAME="XMLDOC"
+></A
+>xmlDoc</H3
+><P
+></P
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN2224"
+></A
+><H3
+><A
+NAME="XMLDOCPTR"
+></A
+>xmlDocPtr</H3
 ><P
 ></P
 ></DIV
@@ -1711,133 +1651,29 @@
 ></A
 ><H3
 ><A
-NAME="XMLNODEPTR"
-></A
->xmlNodePtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef _xmlNode *xmlNodePtr;</PRE
-></TD
-></TR
-></TABLE
-><P
-></P
-></DIV
-><HR><DIV
-CLASS="REFSECT2"
-><A
-NAME="AEN2233"
-></A
-><H3
-><A
-NAME="XMLDOC"
-></A
->xmlDoc</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef _xmlDoc xmlDoc;</PRE
-></TD
-></TR
-></TABLE
-><P
-></P
-></DIV
-><HR><DIV
-CLASS="REFSECT2"
-><A
-NAME="AEN2238"
-></A
-><H3
-><A
-NAME="XMLDOCPTR"
-></A
->xmlDocPtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlDoc *xmlDocPtr;</PRE
-></TD
-></TR
-></TABLE
-><P
-></P
-></DIV
-><HR><DIV
-CLASS="REFSECT2"
-><A
-NAME="AEN2243"
-></A
-><H3
-><A
 NAME="XMLBUFFER"
 ></A
 >xmlBuffer</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef _xmlBuffer xmlBuffer;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2248"
+NAME="AEN2232"
 ></A
 ><H3
 ><A
 NAME="XMLBUFFERPTR"
 ></A
 >xmlBufferPtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlBuffer *xmlBufferPtr;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2253"
+NAME="AEN2236"
 ></A
 ><H3
 ><A
@@ -1863,7 +1699,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2258"
+NAME="AEN2241"
 ></A
 ><H3
 ><A
@@ -1889,7 +1725,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2263"
+NAME="AEN2246"
 ></A
 ><H3
 ><A
@@ -1915,7 +1751,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2268"
+NAME="AEN2251"
 ></A
 ><H3
 ><A
@@ -1966,7 +1802,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the new structure.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1976,7 +1812,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2284"
+NAME="AEN2267"
 ></A
 ><H3
 ><A
@@ -2029,7 +1865,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the buffer to free</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2039,7 +1875,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2300"
+NAME="AEN2283"
 ></A
 ><H3
 ><A
@@ -2096,7 +1932,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the file output</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2113,7 +1949,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the buffer to dump</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2128,7 +1964,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the number of CHAR written</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2138,7 +1974,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2325"
+NAME="AEN2308"
 ></A
 ><H3
 ><A
@@ -2196,7 +2032,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the buffer to dump</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2213,7 +2049,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the CHAR string</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2230,7 +2066,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the number of CHAR to add</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2240,7 +2076,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2350"
+NAME="AEN2333"
 ></A
 ><H3
 ><A
@@ -2297,7 +2133,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the buffer to dump</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2314,7 +2150,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the CHAR string</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2324,7 +2160,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2371"
+NAME="AEN2354"
 ></A
 ><H3
 ><A
@@ -2378,7 +2214,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the buffer to dump</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2395,7 +2231,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the C char string</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2405,7 +2241,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2391"
+NAME="AEN2374"
 ></A
 ><H3
 ><A
@@ -2459,7 +2295,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the buffer to dump</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2476,7 +2312,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the number of CHAR to remove</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2491,7 +2327,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the number of CHAR removed, or -1 in case of failure.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2501,7 +2337,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2415"
+NAME="AEN2398"
 ></A
 ><H3
 ><A
@@ -2554,7 +2390,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the buffer</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2564,7 +2400,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2431"
+NAME="AEN2414"
 ></A
 ><H3
 ><A
@@ -2632,7 +2468,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document pointer</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2649,7 +2485,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the DTD name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2666,7 +2502,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the external ID</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2683,7 +2519,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the system ID</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2698,7 +2534,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a pointer to the new DTD structure</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2708,7 +2544,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2467"
+NAME="AEN2450"
 ></A
 ><H3
 ><A
@@ -2776,7 +2612,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document pointer</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2793,7 +2629,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the DTD name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2810,7 +2646,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the external ID</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2827,7 +2663,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the system ID</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2842,7 +2678,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a pointer to the new DTD structure</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2852,7 +2688,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2503"
+NAME="AEN2486"
 ></A
 ><H3
 ><A
@@ -2905,7 +2741,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the DTD structure to free up</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2915,7 +2751,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2519"
+NAME="AEN2502"
 ></A
 ><H3
 ><A
@@ -2979,7 +2815,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document carrying the namespace</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2996,7 +2832,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the URI associated</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3013,7 +2849,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the prefix for the namespace</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3028,7 +2864,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->returns a new namespace pointer</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3038,7 +2874,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2550"
+NAME="AEN2533"
 ></A
 ><H3
 ><A
@@ -3102,7 +2938,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the element carrying the namespace</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3119,7 +2955,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the URI associated</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3136,7 +2972,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the prefix for the namespace</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3151,7 +2987,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->returns a new namespace pointer</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3161,7 +2997,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2581"
+NAME="AEN2564"
 ></A
 ><H3
 ><A
@@ -3214,7 +3050,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the namespace pointer</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3224,7 +3060,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2597"
+NAME="AEN2580"
 ></A
 ><H3
 ><A
@@ -3280,7 +3116,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  CHAR string giving the version of XML "1.0"</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3295,7 +3131,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a new document</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3305,7 +3141,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2618"
+NAME="AEN2601"
 ></A
 ><H3
 ><A
@@ -3358,8 +3194,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  pointer to the document
-@:  </TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3369,7 +3204,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2634"
+NAME="AEN2617"
 ></A
 ><H3
 ><A
@@ -3433,7 +3268,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3450,7 +3285,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the name of the attribute</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3467,7 +3302,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the value of the attribute</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3482,7 +3317,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a pointer to the attribute</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3492,7 +3327,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2665"
+NAME="AEN2648"
 ></A
 ><H3
 ><A
@@ -3556,7 +3391,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the holding node</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3573,7 +3408,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the name of the attribute</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3590,7 +3425,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the value of the attribute</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3605,7 +3440,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a pointer to the attribute</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3615,7 +3450,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2696"
+NAME="AEN2679"
 ></A
 ><H3
 ><A
@@ -3683,7 +3518,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the holding node</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3700,7 +3535,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the namespace</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3717,7 +3552,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the name of the attribute</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3734,7 +3569,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the value of the attribute</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3749,7 +3584,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a pointer to the attribute</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3759,7 +3594,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2732"
+NAME="AEN2715"
 ></A
 ><H3
 ><A
@@ -3812,7 +3647,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the first property in the list</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3822,7 +3657,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2748"
+NAME="AEN2731"
 ></A
 ><H3
 ><A
@@ -3875,7 +3710,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the first property in the list</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3885,7 +3720,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2764"
+NAME="AEN2747"
 ></A
 ><H3
 ><A
@@ -3945,7 +3780,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the element where the attribute will be grafted</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3962,7 +3797,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the attribute</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3977,7 +3812,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> a new xmlAttrPtr, or NULL in case of error.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3987,7 +3822,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2790"
+NAME="AEN2773"
 ></A
 ><H3
 ><A
@@ -4047,7 +3882,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the element where the attributes will be grafted</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4064,7 +3899,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the first attribute</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4079,7 +3914,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> a new xmlAttrPtr, or NULL in case of error.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4089,7 +3924,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2816"
+NAME="AEN2799"
 ></A
 ><H3
 ><A
@@ -4145,7 +3980,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the dtd</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4160,7 +3995,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> a new xmlDtdPtr, or NULL in case of error.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4170,7 +4005,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2837"
+NAME="AEN2820"
 ></A
 ><H3
 ><A
@@ -4228,7 +4063,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4245,7 +4080,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  if 1 do a recursive copy.</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4260,7 +4095,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> a new xmlDocPtr, or NULL in case of error.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4270,7 +4105,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2862"
+NAME="AEN2845"
 ></A
 ><H3
 ><A
@@ -4349,7 +4184,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4366,7 +4201,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  namespace if any</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4383,7 +4218,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the node name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4400,7 +4235,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the text content if any</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4415,7 +4250,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a pointer to the new node object.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4425,7 +4260,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2900"
+NAME="AEN2883"
 ></A
 ><H3
 ><A
@@ -4497,7 +4332,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  namespace if any</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4514,7 +4349,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the node name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4529,7 +4364,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a pointer to the new node object.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4539,7 +4374,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2928"
+NAME="AEN2911"
 ></A
 ><H3
 ><A
@@ -4624,7 +4459,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the parent node</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4641,7 +4476,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a namespace if any</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4658,7 +4493,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the name of the child</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4675,7 +4510,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the content of the child if any.</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4690,7 +4525,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a pointer to the new node object.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4700,7 +4535,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2967"
+NAME="AEN2950"
 ></A
 ><H3
 ><A
@@ -4760,7 +4595,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4777,7 +4612,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the text content</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4792,7 +4627,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a pointer to the new node object.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4802,7 +4637,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN2993"
+NAME="AEN2976"
 ></A
 ><H3
 ><A
@@ -4858,7 +4693,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the text content</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4873,7 +4708,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a pointer to the new node object.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4883,7 +4718,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3014"
+NAME="AEN2997"
 ></A
 ><H3
 ><A
@@ -4943,7 +4778,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the processing instruction name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4960,7 +4795,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the PI content</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4975,7 +4810,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a pointer to the new node object.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4985,7 +4820,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3040"
+NAME="AEN3023"
 ></A
 ><H3
 ><A
@@ -5047,7 +4882,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5064,7 +4899,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the text content</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5081,7 +4916,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the text len.</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5096,7 +4931,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a pointer to the new node object.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5106,7 +4941,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3070"
+NAME="AEN3053"
 ></A
 ><H3
 ><A
@@ -5163,7 +4998,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the text content</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5180,7 +5015,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the text len.</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5195,7 +5030,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a pointer to the new node object.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5205,7 +5040,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3095"
+NAME="AEN3078"
 ></A
 ><H3
 ><A
@@ -5265,7 +5100,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5282,7 +5117,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the comment content</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5297,7 +5132,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a pointer to the new node object.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5307,7 +5142,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3121"
+NAME="AEN3104"
 ></A
 ><H3
 ><A
@@ -5363,7 +5198,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the comment content</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5378,7 +5213,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a pointer to the new node object.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5388,7 +5223,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3142"
+NAME="AEN3125"
 ></A
 ><H3
 ><A
@@ -5449,7 +5284,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5466,7 +5301,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the CData block content content</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5483,7 +5318,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the length of the block</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5498,7 +5333,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a pointer to the new node object.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5508,7 +5343,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3172"
+NAME="AEN3155"
 ></A
 ><H3
 ><A
@@ -5568,7 +5403,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5585,7 +5420,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the reference name, or the reference string with &amp; and ;</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5600,7 +5435,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a pointer to the new node object.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5610,7 +5445,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3198"
+NAME="AEN3181"
 ></A
 ><H3
 ><A
@@ -5667,7 +5502,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the node</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5684,7 +5519,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  if 1 do a recursive copy.</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5699,7 +5534,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> a new xmlNodePtr, or NULL in case of error.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5709,7 +5544,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3223"
+NAME="AEN3206"
 ></A
 ><H3
 ><A
@@ -5765,7 +5600,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the first node in the list.</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5780,7 +5615,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> a new xmlNodePtr, or NULL in case of error.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5790,7 +5625,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3244"
+NAME="AEN3227"
 ></A
 ><H3
 ><A
@@ -5846,7 +5681,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the parent node</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5861,7 +5696,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the last child or NULL if none.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5871,7 +5706,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3265"
+NAME="AEN3248"
 ></A
 ><H3
 ><A
@@ -5924,7 +5759,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the node</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5939,7 +5774,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->1 yes, 0 no</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5949,7 +5784,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3285"
+NAME="AEN3268"
 ></A
 ><H3
 ><A
@@ -6014,7 +5849,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the parent node</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6031,7 +5866,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the child node</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6046,7 +5881,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the child or NULL in case of error.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6056,7 +5891,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3312"
+NAME="AEN3295"
 ></A
 ><H3
 ><A
@@ -6121,7 +5956,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the child node</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6138,7 +5973,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the new node</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6153,7 +5988,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the element or NULL in case of error.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6163,7 +5998,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3339"
+NAME="AEN3322"
 ></A
 ><H3
 ><A
@@ -6216,7 +6051,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the node</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6226,7 +6061,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3355"
+NAME="AEN3338"
 ></A
 ><H3
 ><A
@@ -6286,7 +6121,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the first text node</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6303,7 +6138,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the second text node being merged</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6318,7 +6153,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the first text node augmented</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6328,7 +6163,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3381"
+NAME="AEN3364"
 ></A
 ><H3
 ><A
@@ -6386,7 +6221,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the node</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6403,7 +6238,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the content</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6420,12 +6255,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  <TT
-CLASS="PARAMETER"
-><I
->content</I
-></TT
-> lenght</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6435,7 +6265,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3407"
+NAME="AEN3389"
 ></A
 ><H3
 ><A
@@ -6489,7 +6319,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the first node in the list</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6499,7 +6329,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3423"
+NAME="AEN3405"
 ></A
 ><H3
 ><A
@@ -6552,7 +6382,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the node</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6562,7 +6392,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3439"
+NAME="AEN3421"
 ></A
 ><H3
 ><A
@@ -6634,7 +6464,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6651,7 +6481,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the current node</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6668,7 +6498,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the namespace string</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6683,7 +6513,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the namespace pointer or NULL.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6693,7 +6523,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3471"
+NAME="AEN3453"
 ></A
 ><H3
 ><A
@@ -6758,7 +6588,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6775,7 +6605,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the current node</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6792,7 +6622,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the namespace value</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6807,7 +6637,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the namespace pointer or NULL.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6817,7 +6647,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3502"
+NAME="AEN3484"
 ></A
 ><H3
 ><A
@@ -6877,7 +6707,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6894,7 +6724,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the current node</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6909,9 +6739,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->an NULL terminated array of all the xmlNsPtr found
-that need to be freed by the caller or NULL if no
-namespace if defined</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -6921,7 +6749,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3528"
+NAME="AEN3510"
 ></A
 ><H3
 ><A
@@ -6978,7 +6806,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a node in the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -6995,7 +6823,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a namespace pointer</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -7005,7 +6833,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3549"
+NAME="AEN3531"
 ></A
 ><H3
 ><A
@@ -7061,7 +6889,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the namespace</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7076,7 +6904,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> a new xmlNsPtr, or NULL in case of error.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -7086,7 +6914,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3570"
+NAME="AEN3552"
 ></A
 ><H3
 ><A
@@ -7142,7 +6970,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the first namespace</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7157,7 +6985,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> a new xmlNsPtr, or NULL in case of error.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -7167,7 +6995,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3591"
+NAME="AEN3573"
 ></A
 ><H3
 ><A
@@ -7231,7 +7059,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the node</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7248,7 +7076,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the attribute name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7265,7 +7093,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the attribute value</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7280,7 +7108,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the attribute pointer.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -7290,7 +7118,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3622"
+NAME="AEN3604"
 ></A
 ><H3
 ><A
@@ -7351,7 +7179,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the node</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7368,7 +7196,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the attribute name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7383,7 +7211,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the attribute value or NULL if not found.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -7393,7 +7221,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3648"
+NAME="AEN3630"
 ></A
 ><H3
 ><A
@@ -7454,7 +7282,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7471,7 +7299,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the value of the attribute</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7486,7 +7314,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a pointer to the first child</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -7496,7 +7324,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3674"
+NAME="AEN3656"
 ></A
 ><H3
 ><A
@@ -7558,7 +7386,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7575,7 +7403,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the value of the text</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7592,7 +7420,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the length of the string value</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7607,7 +7435,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a pointer to the first child</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -7617,7 +7445,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3704"
+NAME="AEN3686"
 ></A
 ><H3
 ><A
@@ -7679,7 +7507,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7696,7 +7524,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a Node list</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7713,7 +7541,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  should we replace entity contents or show their external form</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7728,7 +7556,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a pointer to the string copy, the calller must free it.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -7738,7 +7566,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3734"
+NAME="AEN3716"
 ></A
 ><H3
 ><A
@@ -7795,7 +7623,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the node being modified</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7812,7 +7640,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the new value of the content</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -7822,7 +7650,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3755"
+NAME="AEN3737"
 ></A
 ><H3
 ><A
@@ -7880,7 +7708,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the node being modified</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7897,7 +7725,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the new value of the content</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -7914,12 +7742,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the size of <TT
-CLASS="PARAMETER"
-><I
->content</I
-></TT
-></TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -7929,7 +7752,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3781"
+NAME="AEN3762"
 ></A
 ><H3
 ><A
@@ -7986,7 +7809,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the node being modified</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -8003,7 +7826,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  extra content</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -8013,7 +7836,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3802"
+NAME="AEN3783"
 ></A
 ><H3
 ><A
@@ -8071,7 +7894,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the node being modified</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -8088,7 +7911,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  extra content</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -8105,12 +7928,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the size of <TT
-CLASS="PARAMETER"
-><I
->content</I
-></TT
-></TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -8120,7 +7938,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3828"
+NAME="AEN3808"
 ></A
 ><H3
 ><A
@@ -8179,7 +7997,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the node being read</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -8194,8 +8012,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a new CHAR * or NULL if no content is available.
-It's up to the caller to free the memory.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -8205,7 +8022,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3849"
+NAME="AEN3829"
 ></A
 ><H3
 ><A
@@ -8262,7 +8079,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the node being checked</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -8277,7 +8094,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->a pointer to the lang value, or NULL if not found</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -8287,7 +8104,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3870"
+NAME="AEN3850"
 ></A
 ><H3
 ><A
@@ -8345,7 +8162,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the node being changed</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -8362,7 +8179,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the langage description</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -8372,7 +8189,159 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3891"
+NAME="AEN3871"
+></A
+><H3
+><A
+NAME="XMLREMOVEPROP"
+></A
+>xmlRemoveProp ()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#D6E8FF"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>int         xmlRemoveProp                   (<A
+HREF="gnome-xml-tree.html#XMLATTRPTR"
+>xmlAttrPtr</A
+> attr);</PRE
+></TD
+></TR
+></TABLE
+><P
+></P
+><DIV
+CLASS="INFORMALTABLE"
+><P
+></P
+><TABLE
+BORDER="0"
+WIDTH="100%"
+BGCOLOR="#FFD0D0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>attr</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><I
+CLASS="EMPHASIS"
+>Returns</I
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN3890"
+></A
+><H3
+><A
+NAME="XMLREMOVENODE"
+></A
+>xmlRemoveNode ()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#D6E8FF"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>int         xmlRemoveNode                   (<A
+HREF="gnome-xml-tree.html#XMLNODEPTR"
+>xmlNodePtr</A
+> node);</PRE
+></TD
+></TR
+></TABLE
+><P
+></P
+><DIV
+CLASS="INFORMALTABLE"
+><P
+></P
+><TABLE
+BORDER="0"
+WIDTH="100%"
+BGCOLOR="#FFD0D0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>node</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><I
+CLASS="EMPHASIS"
+>Returns</I
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN3909"
 ></A
 ><H3
 ><A
@@ -8430,7 +8399,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the XML buffer</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -8447,7 +8416,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the string to add</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -8457,7 +8426,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3912"
+NAME="AEN3930"
 ></A
 ><H3
 ><A
@@ -8512,7 +8481,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the XML buffer output</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -8529,7 +8498,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the string to add</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -8539,7 +8508,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3932"
+NAME="AEN3950"
 ></A
 ><H3
 ><A
@@ -8598,7 +8567,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the XML buffer output</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -8615,7 +8584,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the string to add</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -8625,7 +8594,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3953"
+NAME="AEN3971"
 ></A
 ><H3
 ><A
@@ -8684,7 +8653,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -8701,7 +8670,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  OUT: the memory pointer</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -8718,7 +8687,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  OUT: the memory lenght</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -8728,7 +8697,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3978"
+NAME="AEN3996"
 ></A
 ><H3
 ><A
@@ -8785,7 +8754,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the FILE*</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -8802,7 +8771,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -8812,7 +8781,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN3999"
+NAME="AEN4017"
 ></A
 ><H3
 ><A
@@ -8867,7 +8836,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the filename</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -8884,7 +8853,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -8899,7 +8868,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
-> the number of file written or -1 in case of failure.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -8909,7 +8878,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4023"
+NAME="AEN4041"
 ></A
 ><H3
 ><A
@@ -8962,7 +8931,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -8977,7 +8946,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->0 (uncompressed) to 9 (max compression)</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -8987,7 +8956,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4043"
+NAME="AEN4061"
 ></A
 ><H3
 ><A
@@ -9042,7 +9011,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -9059,7 +9028,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the compression ratio</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -9069,7 +9038,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4063"
+NAME="AEN4081"
 ></A
 ><H3
 ><A
@@ -9117,7 +9086,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->0 (uncompressed) to 9 (max compression)</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -9127,7 +9096,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4078"
+NAME="AEN4096"
 ></A
 ><H3
 ><A
@@ -9178,7 +9147,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the compression ratio</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
diff --git a/doc/html/gnome-xml-valid.html b/doc/html/gnome-xml-valid.html
index 43ae73f..0c65822 100644
--- a/doc/html/gnome-xml-valid.html
+++ b/doc/html/gnome-xml-valid.html
@@ -115,7 +115,7 @@
 ><DIV
 CLASS="REFNAMEDIV"
 ><A
-NAME="AEN4521"
+NAME="AEN4537"
 ></A
 ><H2
 >Name</H2
@@ -123,7 +123,7 @@
 ><DIV
 CLASS="REFSYNOPSISDIV"
 ><A
-NAME="AEN4524"
+NAME="AEN4540"
 ></A
 ><H2
 >Synopsis</H2
@@ -194,6 +194,14 @@
 HREF="gnome-xml-valid.html#XMLIDTABLEPTR"
 >xmlIDTablePtr</A
 >;
+#define     <A
+HREF="gnome-xml-valid.html#XML-MIN-REF-TABLE"
+>XML_MIN_REF_TABLE</A
+>
+typedef     <A
+HREF="gnome-xml-valid.html#XMLREFTABLEPTR"
+>xmlRefTablePtr</A
+>;
 <A
 HREF="gnome-xml-tree.html#XMLNOTATIONPTR"
 >xmlNotationPtr</A
@@ -494,6 +502,60 @@
 HREF="gnome-xml-tree.html#XMLATTRPTR"
 >xmlAttrPtr</A
 > attr);
+<A
+HREF="gnome-xml-tree.html#XMLREFPTR"
+>xmlRefPtr</A
+>   <A
+HREF="gnome-xml-valid.html#XMLADDREF"
+>xmlAddRef</A
+>                       (<GTKDOCLINK
+HREF="XMLVALIDCTXTPTR"
+>xmlValidCtxtPtr</GTKDOCLINK
+> ctxt,
+                                             <A
+HREF="gnome-xml-tree.html#XMLDOCPTR"
+>xmlDocPtr</A
+> doc,
+                                             const <A
+HREF="gnome-xml-tree.html#CHAR"
+>CHAR</A
+> *value,
+                                             <A
+HREF="gnome-xml-tree.html#XMLATTRPTR"
+>xmlAttrPtr</A
+> attr);
+<A
+HREF="gnome-xml-valid.html#XMLREFTABLEPTR"
+>xmlRefTablePtr</A
+> <A
+HREF="gnome-xml-valid.html#XMLCOPYREFTABLE"
+>xmlCopyRefTable</A
+>              (<A
+HREF="gnome-xml-valid.html#XMLREFTABLEPTR"
+>xmlRefTablePtr</A
+> table);
+void        <A
+HREF="gnome-xml-valid.html#XMLFREEREFTABLE"
+>xmlFreeRefTable</A
+>                 (<A
+HREF="gnome-xml-valid.html#XMLREFTABLEPTR"
+>xmlRefTablePtr</A
+> table);
+int         <A
+HREF="gnome-xml-valid.html#XMLISREF"
+>xmlIsRef</A
+>                        (<A
+HREF="gnome-xml-tree.html#XMLDOCPTR"
+>xmlDocPtr</A
+> doc,
+                                             <A
+HREF="gnome-xml-tree.html#XMLNODEPTR"
+>xmlNodePtr</A
+> elem,
+                                             <A
+HREF="gnome-xml-tree.html#XMLATTRPTR"
+>xmlAttrPtr</A
+> attr);
 int         <A
 HREF="gnome-xml-valid.html#XMLVALIDATEROOT"
 >xmlValidateRoot</A
@@ -641,6 +703,17 @@
 >CHAR</A
 > *value);
 int         <A
+HREF="gnome-xml-valid.html#XMLVALIDATEDOCUMENTFINAL"
+>xmlValidateDocumentFinal</A
+>        (<GTKDOCLINK
+HREF="XMLVALIDCTXTPTR"
+>xmlValidCtxtPtr</GTKDOCLINK
+> ctxt,
+                                             <A
+HREF="gnome-xml-tree.html#XMLDOCPTR"
+>xmlDocPtr</A
+> doc);
+int         <A
 HREF="gnome-xml-valid.html#XMLVALIDATENOTATIONUSE"
 >xmlValidateNotationUse</A
 >          (<GTKDOCLINK
@@ -719,7 +792,7 @@
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN4682"
+NAME="AEN4718"
 ></A
 ><H2
 >Description</H2
@@ -729,14 +802,14 @@
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN4685"
+NAME="AEN4721"
 ></A
 ><H2
 >Details</H2
 ><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4687"
+NAME="AEN4723"
 ></A
 ><H3
 ><A
@@ -830,7 +903,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4709"
+NAME="AEN4745"
 ></A
 ><H3
 ><A
@@ -924,7 +997,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4731"
+NAME="AEN4767"
 ></A
 ><H3
 ><A
@@ -977,7 +1050,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -994,7 +1067,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the message to display/transmit</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1011,7 +1084,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  extra parameters for the message display</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1021,7 +1094,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4754"
+NAME="AEN4790"
 ></A
 ><H3
 ><A
@@ -1074,7 +1147,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1091,7 +1164,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the message to display/transmit</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1108,7 +1181,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  extra parameters for the message display</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1118,7 +1191,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4777"
+NAME="AEN4813"
 ></A
 ><H3
 ><A
@@ -1134,7 +1207,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define XML_MIN_NOTATION_TABLE	32</PRE
+>#define     XML_MIN_NOTATION_TABLE</PRE
 ></TD
 ></TR
 ></TABLE
@@ -1144,33 +1217,20 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4782"
+NAME="AEN4818"
 ></A
 ><H3
 ><A
 NAME="XMLNOTATIONTABLEPTR"
 ></A
 >xmlNotationTablePtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlNotationTable *xmlNotationTablePtr;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4787"
+NAME="AEN4822"
 ></A
 ><H3
 ><A
@@ -1186,7 +1246,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define XML_MIN_ELEMENT_TABLE	32</PRE
+>#define     XML_MIN_ELEMENT_TABLE</PRE
 ></TD
 ></TR
 ></TABLE
@@ -1196,33 +1256,20 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4792"
+NAME="AEN4827"
 ></A
 ><H3
 ><A
 NAME="XMLELEMENTTABLEPTR"
 ></A
 >xmlElementTablePtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlElementTable *xmlElementTablePtr;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4797"
+NAME="AEN4831"
 ></A
 ><H3
 ><A
@@ -1238,7 +1285,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define XML_MIN_ATTRIBUTE_TABLE	32</PRE
+>#define     XML_MIN_ATTRIBUTE_TABLE</PRE
 ></TD
 ></TR
 ></TABLE
@@ -1248,33 +1295,20 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4802"
+NAME="AEN4836"
 ></A
 ><H3
 ><A
 NAME="XMLATTRIBUTETABLEPTR"
 ></A
 >xmlAttributeTablePtr</H3
-><TABLE
-BORDER="0"
-BGCOLOR="#D6E8FF"
-WIDTH="100%"
-CELLPADDING="6"
-><TR
-><TD
-><PRE
-CLASS="PROGRAMLISTING"
->typedef xmlAttributeTable *xmlAttributeTablePtr;</PRE
-></TD
-></TR
-></TABLE
 ><P
 ></P
 ></DIV
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4807"
+NAME="AEN4840"
 ></A
 ><H3
 ><A
@@ -1290,7 +1324,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define XML_MIN_ID_TABLE	32</PRE
+>#define     XML_MIN_ID_TABLE</PRE
 ></TD
 ></TR
 ></TABLE
@@ -1300,13 +1334,26 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4812"
+NAME="AEN4845"
 ></A
 ><H3
 ><A
 NAME="XMLIDTABLEPTR"
 ></A
 >xmlIDTablePtr</H3
+><P
+></P
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN4849"
+></A
+><H3
+><A
+NAME="XML-MIN-REF-TABLE"
+></A
+>XML_MIN_REF_TABLE</H3
 ><TABLE
 BORDER="0"
 BGCOLOR="#D6E8FF"
@@ -1316,7 +1363,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->typedef xmlIDTable *xmlIDTablePtr;</PRE
+>#define     XML_MIN_REF_TABLE</PRE
 ></TD
 ></TR
 ></TABLE
@@ -1326,7 +1373,20 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4817"
+NAME="AEN4854"
+></A
+><H3
+><A
+NAME="XMLREFTABLEPTR"
+></A
+>xmlRefTablePtr</H3
+><P
+></P
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN4858"
 ></A
 ><H3
 ><A
@@ -1398,7 +1458,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the validation context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1415,7 +1475,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  pointer to the DTD</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1432,7 +1492,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the entity name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1449,7 +1509,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the public identifier or NULL</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1466,7 +1526,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the system identifier or NULL</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1481,7 +1541,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->NULL if not, othervise the entity</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1491,7 +1551,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4858"
+NAME="AEN4899"
 ></A
 ><H3
 ><A
@@ -1547,7 +1607,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  A notation table</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1562,7 +1622,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the new xmlNotationTablePtr or NULL in case of error.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1572,7 +1632,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4879"
+NAME="AEN4920"
 ></A
 ><H3
 ><A
@@ -1625,7 +1685,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  An notation table</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1635,7 +1695,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4895"
+NAME="AEN4936"
 ></A
 ><H3
 ><A
@@ -1692,7 +1752,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the XML buffer output</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1709,7 +1769,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  A notation table</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1719,7 +1779,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4916"
+NAME="AEN4957"
 ></A
 ><H3
 ><A
@@ -1779,7 +1839,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the subelement name or NULL</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1796,7 +1856,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the type of element content decl</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1811,7 +1871,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->NULL if not, othervise the new element content structure</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1821,7 +1881,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4942"
+NAME="AEN4983"
 ></A
 ><H3
 ><A
@@ -1877,7 +1937,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  An element content pointer.</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -1892,7 +1952,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the new xmlElementContentPtr or NULL in case of error.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1902,7 +1962,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4963"
+NAME="AEN5004"
 ></A
 ><H3
 ><A
@@ -1955,7 +2015,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the element content tree to free</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -1965,7 +2025,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN4979"
+NAME="AEN5020"
 ></A
 ><H3
 ><A
@@ -2054,7 +2114,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  pointer to the DTD</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2071,7 +2131,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the entity name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2088,7 +2148,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the element type</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2105,7 +2165,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the element content tree or NULL</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2120,7 +2180,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->NULL if not, othervise the entity</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2130,7 +2190,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5020"
+NAME="AEN5061"
 ></A
 ><H3
 ><A
@@ -2186,7 +2246,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  An element table</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2201,7 +2261,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the new xmlElementTablePtr or NULL in case of error.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2211,7 +2271,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5041"
+NAME="AEN5082"
 ></A
 ><H3
 ><A
@@ -2264,7 +2324,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  An element table</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2274,7 +2334,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5057"
+NAME="AEN5098"
 ></A
 ><H3
 ><A
@@ -2331,7 +2391,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the XML buffer output</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2348,7 +2408,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  An element table</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2358,7 +2418,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5078"
+NAME="AEN5119"
 ></A
 ><H3
 ><A
@@ -2414,7 +2474,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the enumeration name or NULL</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2429,8 +2489,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the xmlEnumerationPtr just created or NULL in case
-of error.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2440,7 +2499,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5099"
+NAME="AEN5140"
 ></A
 ><H3
 ><A
@@ -2493,7 +2552,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the tree to free.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2503,7 +2562,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5115"
+NAME="AEN5156"
 ></A
 ><H3
 ><A
@@ -2559,7 +2618,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the tree to copy.</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2574,8 +2633,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the xmlEnumerationPtr just created or NULL in case
-of error.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2585,7 +2643,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5136"
+NAME="AEN5177"
 ></A
 ><H3
 ><A
@@ -2669,7 +2727,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the validation context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2686,7 +2744,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  pointer to the DTD</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2703,7 +2761,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the element name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2720,7 +2778,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the attribute name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2737,7 +2795,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the attribute type</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2754,7 +2812,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the attribute default type</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2771,7 +2829,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the attribute default value</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2788,7 +2846,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  if it's an enumeration, the associated list</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2803,7 +2861,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->NULL if not, othervise the entity</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2813,7 +2871,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5192"
+NAME="AEN5233"
 ></A
 ><H3
 ><A
@@ -2869,7 +2927,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  An attribute table</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -2884,7 +2942,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the new xmlAttributeTablePtr or NULL in case of error.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2894,7 +2952,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5213"
+NAME="AEN5254"
 ></A
 ><H3
 ><A
@@ -2947,7 +3005,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  An attribute table</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -2957,7 +3015,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5229"
+NAME="AEN5270"
 ></A
 ><H3
 ><A
@@ -3014,7 +3072,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the XML buffer output</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3031,7 +3089,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  An attribute table</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3041,7 +3099,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5250"
+NAME="AEN5291"
 ></A
 ><H3
 ><A
@@ -3109,7 +3167,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the validation context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3126,7 +3184,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  pointer to the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3143,7 +3201,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the value name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3160,7 +3218,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the attribute holding the ID</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3175,7 +3233,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->NULL if not, othervise the new xmlIDPtr</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3185,7 +3243,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5286"
+NAME="AEN5327"
 ></A
 ><H3
 ><A
@@ -3264,7 +3322,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5306"
+NAME="AEN5347"
 ></A
 ><H3
 ><A
@@ -3317,7 +3375,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  An id table</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3327,7 +3385,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5322"
+NAME="AEN5363"
 ></A
 ><H3
 ><A
@@ -3387,7 +3445,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  pointer to the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3404,7 +3462,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the ID value</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3419,7 +3477,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->NULL if not found, otherwise the xmlAttrPtr defining the ID</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3429,7 +3487,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5348"
+NAME="AEN5389"
 ></A
 ><H3
 ><A
@@ -3492,7 +3550,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3509,7 +3567,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the element carrying the attribute</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3526,7 +3584,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the attribute</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3541,7 +3599,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->0 or 1 depending on the lookup result</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3551,7 +3609,415 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5378"
+NAME="AEN5419"
+></A
+><H3
+><A
+NAME="XMLADDREF"
+></A
+>xmlAddRef ()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#D6E8FF"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+><A
+HREF="gnome-xml-tree.html#XMLREFPTR"
+>xmlRefPtr</A
+>   xmlAddRef                       (<GTKDOCLINK
+HREF="XMLVALIDCTXTPTR"
+>xmlValidCtxtPtr</GTKDOCLINK
+> ctxt,
+                                             <A
+HREF="gnome-xml-tree.html#XMLDOCPTR"
+>xmlDocPtr</A
+> doc,
+                                             const <A
+HREF="gnome-xml-tree.html#CHAR"
+>CHAR</A
+> *value,
+                                             <A
+HREF="gnome-xml-tree.html#XMLATTRPTR"
+>xmlAttrPtr</A
+> attr);</PRE
+></TD
+></TR
+></TABLE
+><P
+>Register a new ref declaration</P
+><P
+></P
+><DIV
+CLASS="INFORMALTABLE"
+><P
+></P
+><TABLE
+BORDER="0"
+WIDTH="100%"
+BGCOLOR="#FFD0D0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>ctxt</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>doc</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>value</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>attr</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><I
+CLASS="EMPHASIS"
+>Returns</I
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN5455"
+></A
+><H3
+><A
+NAME="XMLCOPYREFTABLE"
+></A
+>xmlCopyRefTable ()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#D6E8FF"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+><A
+HREF="gnome-xml-valid.html#XMLREFTABLEPTR"
+>xmlRefTablePtr</A
+> xmlCopyRefTable              (<A
+HREF="gnome-xml-valid.html#XMLREFTABLEPTR"
+>xmlRefTablePtr</A
+> table);</PRE
+></TD
+></TR
+></TABLE
+><P
+></P
+><DIV
+CLASS="INFORMALTABLE"
+><P
+></P
+><TABLE
+BORDER="0"
+WIDTH="100%"
+BGCOLOR="#FFD0D0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>table</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><I
+CLASS="EMPHASIS"
+>Returns</I
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN5475"
+></A
+><H3
+><A
+NAME="XMLFREEREFTABLE"
+></A
+>xmlFreeRefTable ()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#D6E8FF"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>void        xmlFreeRefTable                 (<A
+HREF="gnome-xml-valid.html#XMLREFTABLEPTR"
+>xmlRefTablePtr</A
+> table);</PRE
+></TD
+></TR
+></TABLE
+><P
+>Deallocate the memory used by an Ref hash table.</P
+><P
+></P
+><DIV
+CLASS="INFORMALTABLE"
+><P
+></P
+><TABLE
+BORDER="0"
+WIDTH="100%"
+BGCOLOR="#FFD0D0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>table</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN5491"
+></A
+><H3
+><A
+NAME="XMLISREF"
+></A
+>xmlIsRef ()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#D6E8FF"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>int         xmlIsRef                        (<A
+HREF="gnome-xml-tree.html#XMLDOCPTR"
+>xmlDocPtr</A
+> doc,
+                                             <A
+HREF="gnome-xml-tree.html#XMLNODEPTR"
+>xmlNodePtr</A
+> elem,
+                                             <A
+HREF="gnome-xml-tree.html#XMLATTRPTR"
+>xmlAttrPtr</A
+> attr);</PRE
+></TD
+></TR
+></TABLE
+><P
+>Determine whether an attribute is of type Ref. In case we have Dtd(s)
+then this is simple, otherwise we use an heuristic: name Ref (upper
+or lowercase).</P
+><P
+></P
+><DIV
+CLASS="INFORMALTABLE"
+><P
+></P
+><TABLE
+BORDER="0"
+WIDTH="100%"
+BGCOLOR="#FFD0D0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>doc</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>elem</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>attr</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><I
+CLASS="EMPHASIS"
+>Returns</I
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN5521"
 ></A
 ><H3
 ><A
@@ -3612,7 +4078,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the validation context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3629,7 +4095,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a document instance</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3644,7 +4110,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->1 if valid or 0 otherwise</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3654,7 +4120,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5403"
+NAME="AEN5546"
 ></A
 ><H3
 ><A
@@ -3720,7 +4186,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the validation context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3737,7 +4203,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a document instance</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3754,7 +4220,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an element definition</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3769,7 +4235,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->1 if valid or 0 otherwise</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3779,7 +4245,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5433"
+NAME="AEN5576"
 ></A
 ><H3
 ><A
@@ -3847,7 +4313,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the validation context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3864,7 +4330,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a document instance</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3881,7 +4347,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an attribute definition</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3896,7 +4362,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->1 if valid or 0 otherwise</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -3906,7 +4372,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5464"
+NAME="AEN5607"
 ></A
 ><H3
 ><A
@@ -3978,7 +4444,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an attribute type</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -3995,7 +4461,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an attribute value</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4010,7 +4476,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->1 if valid or 0 otherwise</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4020,7 +4486,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5493"
+NAME="AEN5636"
 ></A
 ><H3
 ><A
@@ -4085,7 +4551,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the validation context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4102,7 +4568,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a document instance</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4119,7 +4585,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a notation definition</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4134,7 +4600,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->1 if valid or 0 otherwise</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4144,7 +4610,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5523"
+NAME="AEN5666"
 ></A
 ><H3
 ><A
@@ -4207,7 +4673,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the validation context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4224,7 +4690,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a document instance</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4241,7 +4707,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a dtd instance</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4256,7 +4722,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->1 if valid or 0 otherwise</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4266,7 +4732,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5554"
+NAME="AEN5697"
 ></A
 ><H3
 ><A
@@ -4296,7 +4762,7 @@
 ><P
 >Try to validate the document instance</P
 ><P
->basically it does the all the checks described by the
+>basically it does the all the checks described by the XML Rec
 i.e. validates the internal and external subset (if present)
 and validate the document tree.</P
 ><P
@@ -4327,7 +4793,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the validation context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4344,7 +4810,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a document instance</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4359,7 +4825,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->1 if valid or 0 otherwise</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4369,7 +4835,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5580"
+NAME="AEN5723"
 ></A
 ><H3
 ><A
@@ -4430,7 +4896,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the validation context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4447,7 +4913,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a document instance</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4464,7 +4930,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an element instance</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4479,7 +4945,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->1 if valid or 0 otherwise</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4489,7 +4955,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5610"
+NAME="AEN5753"
 ></A
 ><H3
 ><A
@@ -4560,7 +5026,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the validation context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4577,7 +5043,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a document instance</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4594,7 +5060,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an element instance</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4609,7 +5075,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->1 if valid or 0 otherwise</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4619,7 +5085,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5642"
+NAME="AEN5785"
 ></A
 ><H3
 ><A
@@ -4700,7 +5166,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the validation context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4717,7 +5183,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a document instance</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4734,7 +5200,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an element instance</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4751,7 +5217,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an attribute instance</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4783,7 +5249,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->1 if valid or 0 otherwise</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4793,7 +5259,109 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5683"
+NAME="AEN5826"
+></A
+><H3
+><A
+NAME="XMLVALIDATEDOCUMENTFINAL"
+></A
+>xmlValidateDocumentFinal ()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#D6E8FF"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>int         xmlValidateDocumentFinal        (<GTKDOCLINK
+HREF="XMLVALIDCTXTPTR"
+>xmlValidCtxtPtr</GTKDOCLINK
+> ctxt,
+                                             <A
+HREF="gnome-xml-tree.html#XMLDOCPTR"
+>xmlDocPtr</A
+> doc);</PRE
+></TD
+></TR
+></TABLE
+><P
+>Does the final step for the document validation once all the
+incremental validation steps have been completed</P
+><P
+>basically it does the following checks described by the XML Rec</P
+><P
+></P
+><DIV
+CLASS="INFORMALTABLE"
+><P
+></P
+><TABLE
+BORDER="0"
+WIDTH="100%"
+BGCOLOR="#FFD0D0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>ctxt</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>doc</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><I
+CLASS="EMPHASIS"
+>Returns</I
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN5852"
 ></A
 ><H3
 ><A
@@ -4855,7 +5423,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the validation context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4872,7 +5440,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4889,7 +5457,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the notation name to check</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4904,7 +5472,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->1 if valid or 0 otherwise</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -4914,7 +5482,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5713"
+NAME="AEN5882"
 ></A
 ><H3
 ><A
@@ -4972,7 +5540,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the document</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -4989,7 +5557,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the element name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5004,7 +5572,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->0 if no, 1 if yes, and -1 if no element description is available</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5014,7 +5582,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5738"
+NAME="AEN5907"
 ></A
 ><H3
 ><A
@@ -5079,7 +5647,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a pointer to the DtD to search</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5096,7 +5664,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the element name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5113,7 +5681,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the attribute name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5128,7 +5696,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the xmlAttributePtr if found or NULL</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5138,7 +5706,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5769"
+NAME="AEN5938"
 ></A
 ><H3
 ><A
@@ -5198,7 +5766,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a pointer to the DtD to search</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5215,7 +5783,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the notation name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5230,7 +5798,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the xmlNotationPtr if found or NULL</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -5240,7 +5808,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5795"
+NAME="AEN5964"
 ></A
 ><H3
 ><A
@@ -5300,7 +5868,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  a pointer to the DtD to search</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5317,7 +5885,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the element name</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -5332,7 +5900,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the xmlElementPtr if found or NULL</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
diff --git a/doc/html/gnome-xml-xml-error.html b/doc/html/gnome-xml-xml-error.html
index ebcd732..3672f9b 100644
--- a/doc/html/gnome-xml-xml-error.html
+++ b/doc/html/gnome-xml-xml-error.html
@@ -115,7 +115,7 @@
 ><DIV
 CLASS="REFNAMEDIV"
 ><A
-NAME="AEN5826"
+NAME="AEN5995"
 ></A
 ><H2
 >Name</H2
@@ -123,7 +123,7 @@
 ><DIV
 CLASS="REFSYNOPSISDIV"
 ><A
-NAME="AEN5829"
+NAME="AEN5998"
 ></A
 ><H2
 >Synopsis</H2
@@ -138,6 +138,10 @@
 CLASS="SYNOPSIS"
 >&#13;
 
+enum        <A
+HREF="gnome-xml-xml-error.html#XMLPARSERERRORS"
+>xmlParserErrors</A
+>;
 void        <A
 HREF="gnome-xml-xml-error.html#XMLPARSERERROR"
 >xmlParserError</A
@@ -183,7 +187,7 @@
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN5840"
+NAME="AEN6010"
 ></A
 ><H2
 >Description</H2
@@ -193,14 +197,151 @@
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN5843"
+NAME="AEN6013"
 ></A
 ><H2
 >Details</H2
 ><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5845"
+NAME="AEN6015"
+></A
+><H3
+><A
+NAME="XMLPARSERERRORS"
+></A
+>enum xmlParserErrors</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#D6E8FF"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>typedef enum {
+    XML_ERR_OK = 0,
+    XML_ERR_INTERNAL_ERROR,
+    XML_ERR_NO_MEMORY,
+    
+    XML_ERR_DOCUMENT_START,
+    XML_ERR_DOCUMENT_EMPTY,
+    XML_ERR_DOCUMENT_END,
+
+    XML_ERR_INVALID_HEX_CHARREF,
+    XML_ERR_INVALID_DEC_CHARREF,
+    XML_ERR_INVALID_CHARREF,
+    XML_ERR_INVALID_CHAR,
+
+    XML_ERR_CHARREF_AT_EOF,
+    XML_ERR_CHARREF_IN_PROLOG,
+    XML_ERR_CHARREF_IN_EPILOG,
+    XML_ERR_CHARREF_IN_DTD,
+    XML_ERR_ENTITYREF_AT_EOF,
+    XML_ERR_ENTITYREF_IN_PROLOG,
+    XML_ERR_ENTITYREF_IN_EPILOG,
+    XML_ERR_ENTITYREF_IN_DTD,
+    XML_ERR_PEREF_AT_EOF,
+    XML_ERR_PEREF_IN_PROLOG,
+    XML_ERR_PEREF_IN_EPILOG,
+    XML_ERR_PEREF_IN_INT_SUBSET,
+
+    XML_ERR_ENTITYREF_NO_NAME,
+    XML_ERR_ENTITYREF_SEMICOL_MISSING,
+
+    XML_ERR_PEREF_NO_NAME,
+    XML_ERR_PEREF_SEMICOL_MISSING,
+
+    XML_ERR_UNDECLARED_ENTITY,
+    XML_WAR_UNDECLARED_ENTITY,
+    XML_ERR_UNPARSED_ENTITY,
+    XML_ERR_ENTITY_IS_EXTERNAL,
+    XML_ERR_ENTITY_IS_PARAMETER,
+
+    XML_ERR_UNKNOWN_ENCODING,
+    XML_ERR_UNSUPPORTED_ENCODING,
+
+    XML_ERR_STRING_NOT_STARTED,
+    XML_ERR_STRING_NOT_CLOSED,
+    XML_ERR_NS_DECL_ERROR,
+
+    XML_ERR_ENTITY_NOT_STARTED,
+    XML_ERR_ENTITY_NOT_FINISHED,
+    
+    XML_ERR_LT_IN_ATTRIBUTE,
+    XML_ERR_ATTRIBUTE_NOT_STARTED,
+    XML_ERR_ATTRIBUTE_NOT_FINISHED,
+    XML_ERR_ATTRIBUTE_WITHOUT_VALUE,
+    XML_ERR_ATTRIBUTE_REDEFINED,
+
+    XML_ERR_LITERAL_NOT_STARTED,
+    XML_ERR_LITERAL_NOT_FINISHED,
+    
+    XML_ERR_COMMENT_NOT_FINISHED,
+
+    XML_ERR_PI_NOT_STARTED,
+    XML_ERR_PI_NOT_FINISHED,
+
+    XML_ERR_NOTATION_NOT_STARTED,
+    XML_ERR_NOTATION_NOT_FINISHED,
+
+    XML_ERR_ATTLIST_NOT_STARTED,
+    XML_ERR_ATTLIST_NOT_FINISHED,
+
+    XML_ERR_MIXED_NOT_STARTED,
+    XML_ERR_MIXED_NOT_FINISHED,
+
+    XML_ERR_ELEMCONTENT_NOT_STARTED,
+    XML_ERR_ELEMCONTENT_NOT_FINISHED,
+
+    XML_ERR_XMLDECL_NOT_STARTED,
+    XML_ERR_XMLDECL_NOT_FINISHED,
+
+    XML_ERR_CONDSEC_NOT_STARTED,
+    XML_ERR_CONDSEC_NOT_FINISHED,
+
+    XML_ERR_EXT_SUBSET_NOT_FINISHED,
+
+    XML_ERR_DOCTYPE_NOT_FINISHED,
+
+    XML_ERR_MISPLACED_CDATA_END,
+    XML_ERR_CDATA_NOT_FINISHED,
+
+    XML_ERR_RESERVED_XML_NAME,
+
+    XML_ERR_SPACE_REQUIRED,
+    XML_ERR_SEPARATOR_REQUIRED,
+    XML_ERR_NMTOKEN_REQUIRED,
+    XML_ERR_NAME_REQUIRED,
+    XML_ERR_PCDATA_REQUIRED,
+    XML_ERR_URI_REQUIRED,
+    XML_ERR_PUBID_REQUIRED,
+    XML_ERR_LT_REQUIRED,
+    XML_ERR_GT_REQUIRED,
+    XML_ERR_LTSLASH_REQUIRED,
+    XML_ERR_EQUAL_REQUIRED,
+
+    XML_ERR_TAG_NAME_MISMATCH,
+    XML_ERR_TAG_NOT_FINISED,
+
+    XML_ERR_STANDALONE_VALUE,
+
+    XML_ERR_ENCODING_NAME,
+
+    XML_ERR_HYPHEN_IN_COMMENT
+
+}xmlParserErrors;</PRE
+></TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN6020"
 ></A
 ><H3
 ><A
@@ -253,7 +394,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -270,7 +411,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the message to display/transmit</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -287,7 +428,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  extra parameters for the message display</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -297,7 +438,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5868"
+NAME="AEN6043"
 ></A
 ><H3
 ><A
@@ -350,7 +491,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an XML parser context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -367,7 +508,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the message to display/transmit</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -384,7 +525,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  extra parameters for the message display</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -394,7 +535,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5891"
+NAME="AEN6066"
 ></A
 ><H3
 ><A
@@ -491,7 +632,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5914"
+NAME="AEN6089"
 ></A
 ><H3
 ><A
@@ -588,7 +729,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5937"
+NAME="AEN6112"
 ></A
 ><H3
 ><A
@@ -641,7 +782,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an xmlParserInputPtr input</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -651,7 +792,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN5953"
+NAME="AEN6128"
 ></A
 ><H3
 ><A
@@ -704,7 +845,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  an xmlParserInputPtr input</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
diff --git a/doc/html/gnome-xml-xpath.html b/doc/html/gnome-xml-xpath.html
index 023b0fa..1809ece 100644
--- a/doc/html/gnome-xml-xpath.html
+++ b/doc/html/gnome-xml-xpath.html
@@ -115,7 +115,7 @@
 ><DIV
 CLASS="REFNAMEDIV"
 ><A
-NAME="AEN6408"
+NAME="AEN6574"
 ></A
 ><H2
 >Name</H2
@@ -123,7 +123,7 @@
 ><DIV
 CLASS="REFSYNOPSISDIV"
 ><A
-NAME="AEN6411"
+NAME="AEN6577"
 ></A
 ><H2
 >Synopsis</H2
@@ -158,6 +158,40 @@
 HREF="gnome-xml-xpath.html#XPATH-STRING"
 >XPATH_STRING</A
 >
+#define     <A
+HREF="gnome-xml-xpath.html#XPATH-USERS"
+>XPATH_USERS</A
+>
+int         (<A
+HREF="gnome-xml-xpath.html#XMLXPATHCONVERTFUNC"
+>*xmlXPathConvertFunc</A
+>)          (<GTKDOCLINK
+HREF="XMLXPATHOBJECTPTR"
+>xmlXPathObjectPtr</GTKDOCLINK
+> obj,
+                                             int type);
+void        (<A
+HREF="gnome-xml-xpath.html#XMLXPATHEVALFUNC"
+>*xmlXPathEvalFunc</A
+>)             (<GTKDOCLINK
+HREF="XMLXPATHPARSERCONTEXTPTR"
+>xmlXPathParserContextPtr</GTKDOCLINK
+> ctxt,
+                                             int nargs);
+<GTKDOCLINK
+HREF="XMLXPATHOBJECTPTR"
+>xmlXPathObjectPtr</GTKDOCLINK
+> (<A
+HREF="gnome-xml-xpath.html#XMLXPATHAXISFUNC"
+>*xmlXPathAxisFunc</A
+>)       (<GTKDOCLINK
+HREF="XMLXPATHPARSERCONTEXTPTR"
+>xmlXPathParserContextPtr</GTKDOCLINK
+> ctxt,
+                                             <GTKDOCLINK
+HREF="XMLXPATHOBJECTPTR"
+>xmlXPathObjectPtr</GTKDOCLINK
+> cur);
 void        (<A
 HREF="gnome-xml-xpath.html#XMLXPATHFUNCTION"
 >*xmlXPathFunction</A
@@ -175,9 +209,7 @@
 >       (<A
 HREF="gnome-xml-tree.html#XMLDOCPTR"
 >xmlDocPtr</A
-> doc,
-                                             void *variables,
-                                             void *functions);
+> doc);
 void        <A
 HREF="gnome-xml-xpath.html#XMLXPATHFREECONTEXT"
 >xmlXPathFreeContext</A
@@ -227,7 +259,7 @@
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN6436"
+NAME="AEN6611"
 ></A
 ><H2
 >Description</H2
@@ -237,14 +269,14 @@
 ><DIV
 CLASS="REFSECT1"
 ><A
-NAME="AEN6439"
+NAME="AEN6614"
 ></A
 ><H2
 >Details</H2
 ><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6441"
+NAME="AEN6616"
 ></A
 ><H3
 ><A
@@ -260,7 +292,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define XPATH_UNDEFINED	0</PRE
+>#define     XPATH_UNDEFINED</PRE
 ></TD
 ></TR
 ></TABLE
@@ -270,7 +302,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6446"
+NAME="AEN6621"
 ></A
 ><H3
 ><A
@@ -286,7 +318,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define XPATH_NODESET	1</PRE
+>#define     XPATH_NODESET</PRE
 ></TD
 ></TR
 ></TABLE
@@ -296,7 +328,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6451"
+NAME="AEN6626"
 ></A
 ><H3
 ><A
@@ -312,7 +344,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define XPATH_BOOLEAN	2</PRE
+>#define     XPATH_BOOLEAN</PRE
 ></TD
 ></TR
 ></TABLE
@@ -322,7 +354,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6456"
+NAME="AEN6631"
 ></A
 ><H3
 ><A
@@ -338,7 +370,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define XPATH_NUMBER	3</PRE
+>#define     XPATH_NUMBER</PRE
 ></TD
 ></TR
 ></TABLE
@@ -348,7 +380,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6461"
+NAME="AEN6636"
 ></A
 ><H3
 ><A
@@ -364,7 +396,7 @@
 ><TD
 ><PRE
 CLASS="PROGRAMLISTING"
->#define XPATH_STRING	4</PRE
+>#define     XPATH_STRING</PRE
 ></TD
 ></TR
 ></TABLE
@@ -374,7 +406,306 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6466"
+NAME="AEN6641"
+></A
+><H3
+><A
+NAME="XPATH-USERS"
+></A
+>XPATH_USERS</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#D6E8FF"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>#define     XPATH_USERS</PRE
+></TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN6646"
+></A
+><H3
+><A
+NAME="XMLXPATHCONVERTFUNC"
+></A
+>xmlXPathConvertFunc ()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#D6E8FF"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>int         (*xmlXPathConvertFunc)          (<GTKDOCLINK
+HREF="XMLXPATHOBJECTPTR"
+>xmlXPathObjectPtr</GTKDOCLINK
+> obj,
+                                             int type);</PRE
+></TD
+></TR
+></TABLE
+><P
+></P
+><DIV
+CLASS="INFORMALTABLE"
+><P
+></P
+><TABLE
+BORDER="0"
+WIDTH="100%"
+BGCOLOR="#FFD0D0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>obj</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>type</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><I
+CLASS="EMPHASIS"
+>Returns</I
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN6669"
+></A
+><H3
+><A
+NAME="XMLXPATHEVALFUNC"
+></A
+>xmlXPathEvalFunc ()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#D6E8FF"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+>void        (*xmlXPathEvalFunc)             (<GTKDOCLINK
+HREF="XMLXPATHPARSERCONTEXTPTR"
+>xmlXPathParserContextPtr</GTKDOCLINK
+> ctxt,
+                                             int nargs);</PRE
+></TD
+></TR
+></TABLE
+><P
+></P
+><DIV
+CLASS="INFORMALTABLE"
+><P
+></P
+><TABLE
+BORDER="0"
+WIDTH="100%"
+BGCOLOR="#FFD0D0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>ctxt</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>nargs</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN6688"
+></A
+><H3
+><A
+NAME="XMLXPATHAXISFUNC"
+></A
+>xmlXPathAxisFunc ()</H3
+><TABLE
+BORDER="0"
+BGCOLOR="#D6E8FF"
+WIDTH="100%"
+CELLPADDING="6"
+><TR
+><TD
+><PRE
+CLASS="PROGRAMLISTING"
+><GTKDOCLINK
+HREF="XMLXPATHOBJECTPTR"
+>xmlXPathObjectPtr</GTKDOCLINK
+> (*xmlXPathAxisFunc)       (<GTKDOCLINK
+HREF="XMLXPATHPARSERCONTEXTPTR"
+>xmlXPathParserContextPtr</GTKDOCLINK
+> ctxt,
+                                             <GTKDOCLINK
+HREF="XMLXPATHOBJECTPTR"
+>xmlXPathObjectPtr</GTKDOCLINK
+> cur);</PRE
+></TD
+></TR
+></TABLE
+><P
+></P
+><DIV
+CLASS="INFORMALTABLE"
+><P
+></P
+><TABLE
+BORDER="0"
+WIDTH="100%"
+BGCOLOR="#FFD0D0"
+CELLSPACING="0"
+CELLPADDING="4"
+CLASS="CALSTABLE"
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>ctxt</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><TT
+CLASS="PARAMETER"
+><I
+>cur</I
+></TT
+>&nbsp;:</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+><TR
+><TD
+WIDTH="20%"
+ALIGN="RIGHT"
+VALIGN="TOP"
+><I
+CLASS="EMPHASIS"
+>Returns</I
+> :</TD
+><TD
+WIDTH="80%"
+ALIGN="LEFT"
+VALIGN="TOP"
+>&nbsp;</TD
+></TR
+></TABLE
+><P
+></P
+></DIV
+></DIV
+><HR><DIV
+CLASS="REFSECT2"
+><A
+NAME="AEN6713"
 ></A
 ><H3
 ><A
@@ -453,7 +784,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6485"
+NAME="AEN6732"
 ></A
 ><H3
 ><A
@@ -475,9 +806,7 @@
 > xmlXPathNewContext       (<A
 HREF="gnome-xml-tree.html#XMLDOCPTR"
 >xmlDocPtr</A
-> doc,
-                                             void *variables,
-                                             void *functions);</PRE
+> doc);</PRE
 ></TD
 ></TR
 ></TABLE
@@ -511,41 +840,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the XML document</TD
-></TR
-><TR
-><TD
-WIDTH="20%"
-ALIGN="RIGHT"
-VALIGN="TOP"
-><TT
-CLASS="PARAMETER"
-><I
->variables</I
-></TT
->&nbsp;:</TD
-><TD
-WIDTH="80%"
-ALIGN="LEFT"
-VALIGN="TOP"
->  the variable list</TD
-></TR
-><TR
-><TD
-WIDTH="20%"
-ALIGN="RIGHT"
-VALIGN="TOP"
-><TT
-CLASS="PARAMETER"
-><I
->functions</I
-></TT
->&nbsp;:</TD
-><TD
-WIDTH="80%"
-ALIGN="LEFT"
-VALIGN="TOP"
->  the function list</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -560,7 +855,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the xmlXPathContext just allocated.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -570,7 +865,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6514"
+NAME="AEN6753"
 ></A
 ><H3
 ><A
@@ -623,7 +918,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the context to free</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -633,7 +928,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6530"
+NAME="AEN6769"
 ></A
 ><H3
 ><A
@@ -693,7 +988,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the XPath expression</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -710,7 +1005,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the XPath context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -725,8 +1020,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the xmlXPathObjectPtr resulting from the eveluation or NULL.
-the caller has to free the object.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -736,7 +1030,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6556"
+NAME="AEN6795"
 ></A
 ><H3
 ><A
@@ -789,7 +1083,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the object to free</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
@@ -799,7 +1093,7 @@
 ><HR><DIV
 CLASS="REFSECT2"
 ><A
-NAME="AEN6572"
+NAME="AEN6811"
 ></A
 ><H3
 ><A
@@ -859,7 +1153,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the XPath expression</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -876,7 +1170,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->  the XPath context</TD
+>&nbsp;</TD
 ></TR
 ><TR
 ><TD
@@ -891,8 +1185,7 @@
 WIDTH="80%"
 ALIGN="LEFT"
 VALIGN="TOP"
->the xmlXPathObjectPtr resulting from the evaluation or NULL.
-the caller has to free the object.</TD
+>&nbsp;</TD
 ></TR
 ></TABLE
 ><P
diff --git a/doc/html/index.sgml b/doc/html/index.sgml
index 1ded25b..faa8c93 100644
--- a/doc/html/index.sgml
+++ b/doc/html/index.sgml
@@ -101,6 +101,7 @@
 <ANCHOR id ="XMLDTDPTR" href="gnome-xml/gnome-xml-tree.html#XMLDTDPTR">
 <ANCHOR id ="XMLATTRPTR" href="gnome-xml/gnome-xml-tree.html#XMLATTRPTR">
 <ANCHOR id ="XMLIDPTR" href="gnome-xml/gnome-xml-tree.html#XMLIDPTR">
+<ANCHOR id ="XMLREFPTR" href="gnome-xml/gnome-xml-tree.html#XMLREFPTR">
 <ANCHOR id ="XMLNODE" href="gnome-xml/gnome-xml-tree.html#XMLNODE">
 <ANCHOR id ="XMLNODEPTR" href="gnome-xml/gnome-xml-tree.html#XMLNODEPTR">
 <ANCHOR id ="XMLDOC" href="gnome-xml/gnome-xml-tree.html#XMLDOC">
@@ -176,6 +177,8 @@
 <ANCHOR id ="XMLNODEGETCONTENT" href="gnome-xml/gnome-xml-tree.html#XMLNODEGETCONTENT">
 <ANCHOR id ="XMLNODEGETLANG" href="gnome-xml/gnome-xml-tree.html#XMLNODEGETLANG">
 <ANCHOR id ="XMLNODESETLANG" href="gnome-xml/gnome-xml-tree.html#XMLNODESETLANG">
+<ANCHOR id ="XMLREMOVEPROP" href="gnome-xml/gnome-xml-tree.html#XMLREMOVEPROP">
+<ANCHOR id ="XMLREMOVENODE" href="gnome-xml/gnome-xml-tree.html#XMLREMOVENODE">
 <ANCHOR id ="XMLBUFFERWRITECHAR" href="gnome-xml/gnome-xml-tree.html#XMLBUFFERWRITECHAR">
 <ANCHOR id ="XMLBUFFERWRITECHAR" href="gnome-xml/gnome-xml-tree.html#XMLBUFFERWRITECHAR">
 <ANCHOR id ="XMLBUFFERWRITEQUOTEDSTRING" href="gnome-xml/gnome-xml-tree.html#XMLBUFFERWRITEQUOTEDSTRING">
@@ -221,6 +224,8 @@
 <ANCHOR id ="XMLATTRIBUTETABLEPTR" href="gnome-xml/gnome-xml-valid.html#XMLATTRIBUTETABLEPTR">
 <ANCHOR id ="XML-MIN-ID-TABLE" href="gnome-xml/gnome-xml-valid.html#XML-MIN-ID-TABLE">
 <ANCHOR id ="XMLIDTABLEPTR" href="gnome-xml/gnome-xml-valid.html#XMLIDTABLEPTR">
+<ANCHOR id ="XML-MIN-REF-TABLE" href="gnome-xml/gnome-xml-valid.html#XML-MIN-REF-TABLE">
+<ANCHOR id ="XMLREFTABLEPTR" href="gnome-xml/gnome-xml-valid.html#XMLREFTABLEPTR">
 <ANCHOR id ="XMLADDNOTATIONDECL" href="gnome-xml/gnome-xml-valid.html#XMLADDNOTATIONDECL">
 <ANCHOR id ="XMLCOPYNOTATIONTABLE" href="gnome-xml/gnome-xml-valid.html#XMLCOPYNOTATIONTABLE">
 <ANCHOR id ="XMLFREENOTATIONTABLE" href="gnome-xml/gnome-xml-valid.html#XMLFREENOTATIONTABLE">
@@ -244,6 +249,10 @@
 <ANCHOR id ="XMLFREEIDTABLE" href="gnome-xml/gnome-xml-valid.html#XMLFREEIDTABLE">
 <ANCHOR id ="XMLGETID" href="gnome-xml/gnome-xml-valid.html#XMLGETID">
 <ANCHOR id ="XMLISID" href="gnome-xml/gnome-xml-valid.html#XMLISID">
+<ANCHOR id ="XMLADDREF" href="gnome-xml/gnome-xml-valid.html#XMLADDREF">
+<ANCHOR id ="XMLCOPYREFTABLE" href="gnome-xml/gnome-xml-valid.html#XMLCOPYREFTABLE">
+<ANCHOR id ="XMLFREEREFTABLE" href="gnome-xml/gnome-xml-valid.html#XMLFREEREFTABLE">
+<ANCHOR id ="XMLISREF" href="gnome-xml/gnome-xml-valid.html#XMLISREF">
 <ANCHOR id ="XMLVALIDATEROOT" href="gnome-xml/gnome-xml-valid.html#XMLVALIDATEROOT">
 <ANCHOR id ="XMLVALIDATEELEMENTDECL" href="gnome-xml/gnome-xml-valid.html#XMLVALIDATEELEMENTDECL">
 <ANCHOR id ="XMLVALIDATEATTRIBUTEDECL" href="gnome-xml/gnome-xml-valid.html#XMLVALIDATEATTRIBUTEDECL">
@@ -254,12 +263,14 @@
 <ANCHOR id ="XMLVALIDATEELEMENT" href="gnome-xml/gnome-xml-valid.html#XMLVALIDATEELEMENT">
 <ANCHOR id ="XMLVALIDATEONEELEMENT" href="gnome-xml/gnome-xml-valid.html#XMLVALIDATEONEELEMENT">
 <ANCHOR id ="XMLVALIDATEONEATTRIBUTE" href="gnome-xml/gnome-xml-valid.html#XMLVALIDATEONEATTRIBUTE">
+<ANCHOR id ="XMLVALIDATEDOCUMENTFINAL" href="gnome-xml/gnome-xml-valid.html#XMLVALIDATEDOCUMENTFINAL">
 <ANCHOR id ="XMLVALIDATENOTATIONUSE" href="gnome-xml/gnome-xml-valid.html#XMLVALIDATENOTATIONUSE">
 <ANCHOR id ="XMLISMIXEDELEMENT" href="gnome-xml/gnome-xml-valid.html#XMLISMIXEDELEMENT">
 <ANCHOR id ="XMLGETDTDATTRDESC" href="gnome-xml/gnome-xml-valid.html#XMLGETDTDATTRDESC">
 <ANCHOR id ="XMLGETDTDNOTATIONDESC" href="gnome-xml/gnome-xml-valid.html#XMLGETDTDNOTATIONDESC">
 <ANCHOR id ="XMLGETDTDELEMENTDESC" href="gnome-xml/gnome-xml-valid.html#XMLGETDTDELEMENTDESC">
 <ANCHOR id ="GNOME-XML-XML-ERROR" href="gnome-xml/gnome-xml-xml-error.html">
+<ANCHOR id ="XMLPARSERERRORS" href="gnome-xml/gnome-xml-xml-error.html#XMLPARSERERRORS">
 <ANCHOR id ="XMLPARSERERROR" href="gnome-xml/gnome-xml-xml-error.html#XMLPARSERERROR">
 <ANCHOR id ="XMLPARSERWARNING" href="gnome-xml/gnome-xml-xml-error.html#XMLPARSERWARNING">
 <ANCHOR id ="XMLPARSERVALIDITYERROR" href="gnome-xml/gnome-xml-xml-error.html#XMLPARSERVALIDITYERROR">
@@ -298,6 +309,10 @@
 <ANCHOR id ="XPATH-BOOLEAN" href="gnome-xml/gnome-xml-xpath.html#XPATH-BOOLEAN">
 <ANCHOR id ="XPATH-NUMBER" href="gnome-xml/gnome-xml-xpath.html#XPATH-NUMBER">
 <ANCHOR id ="XPATH-STRING" href="gnome-xml/gnome-xml-xpath.html#XPATH-STRING">
+<ANCHOR id ="XPATH-USERS" href="gnome-xml/gnome-xml-xpath.html#XPATH-USERS">
+<ANCHOR id ="XMLXPATHCONVERTFUNC" href="gnome-xml/gnome-xml-xpath.html#XMLXPATHCONVERTFUNC">
+<ANCHOR id ="XMLXPATHEVALFUNC" href="gnome-xml/gnome-xml-xpath.html#XMLXPATHEVALFUNC">
+<ANCHOR id ="XMLXPATHAXISFUNC" href="gnome-xml/gnome-xml-xpath.html#XMLXPATHAXISFUNC">
 <ANCHOR id ="XMLXPATHFUNCTION" href="gnome-xml/gnome-xml-xpath.html#XMLXPATHFUNCTION">
 <ANCHOR id ="XMLXPATHNEWCONTEXT" href="gnome-xml/gnome-xml-xpath.html#XMLXPATHNEWCONTEXT">
 <ANCHOR id ="XMLXPATHFREECONTEXT" href="gnome-xml/gnome-xml-xpath.html#XMLXPATHFREECONTEXT">
@@ -393,7 +408,6 @@
 <ANCHOR id ="INPUTPUSH" href="gnome-xml/gnome-xml-parserinternals.html#INPUTPUSH">
 <ANCHOR id ="INPUTPOP" href="gnome-xml/gnome-xml-parserinternals.html#INPUTPOP">
 <ANCHOR id ="GNOME-XML-XMLMEMORY" href="gnome-xml/gnome-xml-xmlmemory.html">
-<ANCHOR id ="NO-DEBUG-MEMORY" href="gnome-xml/gnome-xml-xmlmemory.html#NO-DEBUG-MEMORY">
 <ANCHOR id ="XMLFREE" href="gnome-xml/gnome-xml-xmlmemory.html#XMLFREE">
 <ANCHOR id ="XMLMALLOC" href="gnome-xml/gnome-xml-xmlmemory.html#XMLMALLOC">
 <ANCHOR id ="XMLREALLOC" href="gnome-xml/gnome-xml-xmlmemory.html#XMLREALLOC">
@@ -408,3 +422,11 @@
 <ANCHOR id ="XMLMALLOCLOC" href="gnome-xml/gnome-xml-xmlmemory.html#XMLMALLOCLOC">
 <ANCHOR id ="XMLREALLOCLOC" href="gnome-xml/gnome-xml-xmlmemory.html#XMLREALLOCLOC">
 <ANCHOR id ="XMLMEMSTRDUPLOC" href="gnome-xml/gnome-xml-xmlmemory.html#XMLMEMSTRDUPLOC">
+<ANCHOR id ="GNOME-XML-NANOHTTP" href="gnome-xml/gnome-xml-nanohttp.html">
+<ANCHOR id ="XMLNANOHTTPFETCH" href="gnome-xml/gnome-xml-nanohttp.html#XMLNANOHTTPFETCH">
+<ANCHOR id ="XMLNANOHTTPMETHOD" href="gnome-xml/gnome-xml-nanohttp.html#XMLNANOHTTPMETHOD">
+<ANCHOR id ="XMLNANOHTTPOPEN" href="gnome-xml/gnome-xml-nanohttp.html#XMLNANOHTTPOPEN">
+<ANCHOR id ="XMLNANOHTTPRETURNCODE" href="gnome-xml/gnome-xml-nanohttp.html#XMLNANOHTTPRETURNCODE">
+<ANCHOR id ="XMLNANOHTTPREAD" href="gnome-xml/gnome-xml-nanohttp.html#XMLNANOHTTPREAD">
+<ANCHOR id ="XMLNANOHTTPSAVE" href="gnome-xml/gnome-xml-nanohttp.html#XMLNANOHTTPSAVE">
+<ANCHOR id ="XMLNANOHTTPCLOSE" href="gnome-xml/gnome-xml-nanohttp.html#XMLNANOHTTPCLOSE">
diff --git a/encoding.c b/encoding.c
index e72577e..5169cde 100644
--- a/encoding.c
+++ b/encoding.c
@@ -19,10 +19,16 @@
  * Daniel.Veillard@w3.org
  */
 
+#ifndef WIN32
 #include "config.h"
-#include <ctype.h>
-#include <string.h>
+#endif
+
 #include <stdio.h>
+#include <string.h>
+
+#ifdef HAVE_CTYPE_H
+#include <ctype.h>
+#endif
 #include "encoding.h"
 #ifdef HAVE_UNICODE_H
 #include <unicode.h>
diff --git a/entities.c b/entities.c
index 24c770c..fe706ea 100644
--- a/entities.c
+++ b/entities.c
@@ -6,9 +6,15 @@
  * Daniel.Veillard@w3.org
  */
 
+#ifndef WIN32
+#include "config.h"
+#endif
+
 #include <stdio.h>
-#include <stdlib.h>
 #include <string.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
 #include "xmlmemory.h"
 #include "entities.h"
 
diff --git a/include/libxml/parser.h b/include/libxml/parser.h
index aab3553..06db141 100644
--- a/include/libxml/parser.h
+++ b/include/libxml/parser.h
@@ -105,25 +105,13 @@
     struct xmlSAXHandler *sax;        /* The SAX handler */
     void            *userData;        /* the document being built */
     xmlDocPtr           myDoc;        /* the document being built */
+    int            wellFormed;        /* is the document well formed */
     int       replaceEntities;        /* shall we replace entities ? */
     const CHAR       *version;        /* the XML version string */
     const CHAR      *encoding;        /* encoding, if any */
     int            standalone;        /* standalone document */
-    int     hasExternalSubset;        /* reference and external subset */
-    int             hasPErefs;        /* the internal subset has PE refs */
     int                  html;        /* are we parsing an HTML document */
-    int              external;        /* are we parsing an external entity */
 
-    int            wellFormed;        /* is the document well formed */
-    int                 valid;        /* is the document valid */
-    int              validate;        /* shall we try to validate ? */
-    xmlValidCtxt        vctxt;        /* The validity context */
-
-    xmlParserInputState instate;      /* current type of input */
-    int                 token;        /* next char look-ahead */    
-
-    char           *directory;        /* the data directory */
-    
     /* Input stream stack */
     xmlParserInputPtr  input;         /* Current input stream */
     int                inputNr;       /* Number of current input streams */
@@ -138,6 +126,21 @@
 
     int record_info;                  /* Whether node info should be kept */
     xmlParserNodeInfoSeq node_seq;    /* info about each node parsed */
+
+    int errno;                        /* error code */
+
+    int     hasExternalSubset;        /* reference and external subset */
+    int             hasPErefs;        /* the internal subset has PE refs */
+    int              external;        /* are we parsing an external entity */
+
+    int                 valid;        /* is the document valid */
+    int              validate;        /* shall we try to validate ? */
+    xmlValidCtxt        vctxt;        /* The validity context */
+
+    xmlParserInputState instate;      /* current type of input */
+    int                 token;        /* next char look-ahead */    
+
+    char           *directory;        /* the data directory */
 } _xmlParserCtxt;
 typedef _xmlParserCtxt xmlParserCtxt;
 typedef xmlParserCtxt *xmlParserCtxtPtr;
diff --git a/include/libxml/xmlIO.h b/include/libxml/xmlIO.h
index 01bf14c..a99ab23 100644
--- a/include/libxml/xmlIO.h
+++ b/include/libxml/xmlIO.h
@@ -23,6 +23,7 @@
     FILE          *file;    /* Input on file handler */
     void*        gzfile;    /* Input on a compressed stream */
     int              fd;    /* Input on a file descriptor */
+    void         *netIO;    /* Input from a network stream */
     
     xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
     
diff --git a/include/libxml/xmlmemory.h b/include/libxml/xmlmemory.h
index d28b526..78ff392 100644
--- a/include/libxml/xmlmemory.h
+++ b/include/libxml/xmlmemory.h
@@ -8,7 +8,7 @@
 #ifndef _DEBUG_MEMORY_ALLOC_
 #define _DEBUG_MEMORY_ALLOC_
 
-#define NO_DEBUG_MEMORY
+/* #define NO_DEBUG_MEMORY */
 
 #ifdef NO_DEBUG_MEMORY
 #ifdef HAVE_MALLOC_H
diff --git a/parser.c b/parser.c
index 1b353fb..e01f162 100644
--- a/parser.c
+++ b/parser.c
@@ -10,13 +10,20 @@
 #define HAVE_FCNTL_H
 #include <io.h>
 #else
-#include <config.h>
+#include "config.h"
 #endif
+
 #include <stdio.h>
-#include <ctype.h>
 #include <string.h> /* for memset() only */
+#ifdef HAVE_CTYPE_H
+#include <ctype.h>
+#endif
+#ifdef HAVE_STDLIB_H
 #include <stdlib.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
+#endif
 #ifdef HAVE_FCNTL_H
 #include <fcntl.h>
 #endif
@@ -35,6 +42,7 @@
 #include "valid.h"
 #include "parserInternals.h"
 #include "xmlIO.h"
+#include "xml-error.h"
 
 const char *xmlParserVersion = LIBXML_VERSION;
 
@@ -402,8 +410,11 @@
 
     input = (xmlParserInputPtr) xmlMalloc(sizeof(xmlParserInput));
     if (input == NULL) {
+        ctxt->errno = XML_ERR_NO_MEMORY;
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	    ctxt->sax->error(ctxt->userData, "malloc: couldn't allocate a new input stream\n");
+	    ctxt->sax->error(ctxt->userData, 
+	                     "malloc: couldn't allocate a new input stream\n");
+	ctxt->errno = XML_ERR_NO_MEMORY;
 	return(NULL);
     }
     input->filename = NULL;
@@ -433,14 +444,17 @@
     xmlParserInputPtr input;
 
     if (entity == NULL) {
+        ctxt->errno = XML_ERR_INTERNAL_ERROR;
         if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData,
 	      "internal: xmlNewEntityInputStream entity = NULL\n");
+	ctxt->errno = XML_ERR_INTERNAL_ERROR;
 	return(NULL);
     }
     if (entity->content == NULL) {
 	switch (entity->type) {
             case XML_EXTERNAL_GENERAL_UNPARSED_ENTITY:
+	        ctxt->errno = XML_ERR_UNPARSED_ENTITY;
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData,
 		      "xmlNewEntityInputStream unparsed entity !\n");
@@ -455,11 +469,13 @@
 	  "Internal entity %s without content !\n", entity->name);
                 break;
             case XML_INTERNAL_PARAMETER_ENTITY:
+		ctxt->errno = XML_ERR_INTERNAL_ERROR;
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData,
 	  "Internal parameter entity %s without content !\n", entity->name);
                 break;
             case XML_INTERNAL_PREDEFINED_ENTITY:
+		ctxt->errno = XML_ERR_INTERNAL_ERROR;
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData,
 	      "Predefined entity %s without content !\n", entity->name);
@@ -490,6 +506,7 @@
     xmlParserInputPtr input;
 
     if (buffer == NULL) {
+	ctxt->errno = XML_ERR_INTERNAL_ERROR;
         if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData,
 	      "internal: xmlNewStringInputStream string = NULL\n");
@@ -742,6 +759,7 @@
 	    else if ((CUR >= 'A') && (CUR <= 'F'))
 	        val = val * 16 + (CUR - 'A') + 10;
 	    else {
+		ctxt->errno = XML_ERR_INVALID_HEX_CHARREF;
 	        if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData, 
 		         "xmlParseCharRef: invalid hexadecimal value\n");
@@ -759,6 +777,7 @@
 	    if ((CUR >= '0') && (CUR <= '9')) 
 	        val = val * 10 + (CUR - '0');
 	    else {
+		ctxt->errno = XML_ERR_INVALID_DEC_CHARREF;
 	        if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData, 
 		         "xmlParseCharRef: invalid decimal value\n");
@@ -771,6 +790,7 @@
 	if (CUR == ';')
 	    NEXT;
     } else {
+	ctxt->errno = XML_ERR_INVALID_CHARREF;
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData,
 	       "xmlParseCharRef: invalid value\n");
@@ -785,6 +805,7 @@
     if (IS_CHAR(val)) {
         return(val);
     } else {
+	ctxt->errno = XML_ERR_INVALID_CHAR;
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "CharRef: invalid CHAR value %d\n",
 	                     val);
@@ -832,21 +853,25 @@
 	    case XML_PARSER_COMMENT:
 		return;
 	    case XML_PARSER_EOF:
+		ctxt->errno = XML_ERR_CHARREF_AT_EOF;
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData, "CharRef at EOF\n");
 		ctxt->wellFormed = 0;
 		return;
 	    case XML_PARSER_PROLOG:
+		ctxt->errno = XML_ERR_CHARREF_IN_PROLOG;
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData, "CharRef in prolog!\n");
 		ctxt->wellFormed = 0;
 		return;
 	    case XML_PARSER_EPILOG:
+		ctxt->errno = XML_ERR_CHARREF_IN_EPILOG;
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData, "CharRef in epilog!\n");
 		ctxt->wellFormed = 0;
 		return;
 	    case XML_PARSER_DTD:
+		ctxt->errno = XML_ERR_CHARREF_IN_DTD;
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData, 
 		           "CharRef are forbiden in DTDs!\n");
@@ -879,16 +904,19 @@
         case XML_PARSER_COMMENT:
 	    return;
         case XML_PARSER_EOF:
+	    ctxt->errno = XML_ERR_ENTITYREF_AT_EOF;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, "Reference at EOF\n");
 	    ctxt->wellFormed = 0;
 	    return;
         case XML_PARSER_PROLOG:
+	    ctxt->errno = XML_ERR_ENTITYREF_IN_PROLOG;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, "Reference in prolog!\n");
 	    ctxt->wellFormed = 0;
 	    return;
         case XML_PARSER_EPILOG:
+	    ctxt->errno = XML_ERR_ENTITYREF_IN_EPILOG;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, "Reference in epilog!\n");
 	    ctxt->wellFormed = 0;
@@ -919,6 +947,7 @@
 	     */
 	    return;
         case XML_PARSER_DTD:
+	    ctxt->errno = XML_ERR_ENTITYREF_IN_DTD;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		ctxt->sax->error(ctxt->userData, 
 		       "Entity references are forbiden in DTDs!\n");
@@ -931,6 +960,7 @@
     NEXT;
     name = xmlScanName(ctxt);
     if (name == NULL) {
+	ctxt->errno = XML_ERR_ENTITYREF_NO_NAME;
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "Entity reference: no name\n");
 	ctxt->wellFormed = 0;
@@ -938,6 +968,7 @@
 	return;
     }
     if (NXT(xmlStrlen(name)) != ';') {
+	ctxt->errno = XML_ERR_ENTITYREF_SEMICOL_MISSING;
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, 
 	                     "Entity reference: ';' expected\n");
@@ -961,6 +992,7 @@
     if (ent == NULL)
 	ent = xmlGetPredefinedEntity(name);
     if (ent == NULL) {
+        ctxt->errno = XML_ERR_UNDECLARED_ENTITY;
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, 
 			     "Entity reference: entity %s not declared\n",
@@ -975,6 +1007,7 @@
      * An entity reference must not contain the name of an unparsed entity
      */
     if (ent->type == XML_EXTERNAL_GENERAL_UNPARSED_ENTITY) {
+        ctxt->errno = XML_ERR_UNPARSED_ENTITY;
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, 
 			 "Entity reference to unparsed entity %s\n", name);
@@ -1038,11 +1071,13 @@
         case XML_PARSER_COMMENT:
 	    return;
         case XML_PARSER_EOF:
+	    ctxt->errno = XML_ERR_PEREF_AT_EOF;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, "PEReference at EOF\n");
 	    ctxt->wellFormed = 0;
 	    return;
         case XML_PARSER_PROLOG:
+	    ctxt->errno = XML_ERR_PEREF_IN_PROLOG;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, "PEReference in prolog!\n");
 	    ctxt->wellFormed = 0;
@@ -1053,6 +1088,7 @@
 	    /* we just ignore it there */
 	    return;
         case XML_PARSER_EPILOG:
+	    ctxt->errno = XML_ERR_PEREF_IN_EPILOG;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, "PEReference in epilog!\n");
 	    ctxt->wellFormed = 0;
@@ -1081,6 +1117,7 @@
     NEXT;
     name = xmlParseName(ctxt);
     if (name == NULL) {
+        ctxt->errno = XML_ERR_PEREF_NO_NAME;
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "xmlHandlePEReference: no name\n");
 	ctxt->wellFormed = 0;
@@ -1139,6 +1176,7 @@
 		}
 	    }
 	} else {
+	    ctxt->errno = XML_ERR_PEREF_SEMICOL_MISSING;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		ctxt->sax->error(ctxt->userData,
 				 "xmlHandlePEReference: expecting ';'\n");
@@ -1299,6 +1337,7 @@
 {
     switch (enc) {
         case XML_CHAR_ENCODING_ERROR:
+	    ctxt->errno = XML_ERR_UNKNOWN_ENCODING;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, "encoding unknown\n");
 	    ctxt->wellFormed = 0;
@@ -1310,101 +1349,121 @@
 	    /* default encoding, no conversion should be needed */
             return;
         case XML_CHAR_ENCODING_UTF16LE:
+	    ctxt->errno = XML_ERR_UNSUPPORTED_ENCODING;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
                 ctxt->sax->error(ctxt->userData,
 		  "char encoding UTF16 little endian not supported\n");
             break;
         case XML_CHAR_ENCODING_UTF16BE:
+	    ctxt->errno = XML_ERR_UNSUPPORTED_ENCODING;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
                 ctxt->sax->error(ctxt->userData,
 		  "char encoding UTF16 big endian not supported\n");
             break;
         case XML_CHAR_ENCODING_UCS4LE:
+	    ctxt->errno = XML_ERR_UNSUPPORTED_ENCODING;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
                 ctxt->sax->error(ctxt->userData,
 		  "char encoding USC4 little endian not supported\n");
             break;
         case XML_CHAR_ENCODING_UCS4BE:
+	    ctxt->errno = XML_ERR_UNSUPPORTED_ENCODING;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
                 ctxt->sax->error(ctxt->userData,
 		  "char encoding USC4 big endian not supported\n");
             break;
         case XML_CHAR_ENCODING_EBCDIC:
+	    ctxt->errno = XML_ERR_UNSUPPORTED_ENCODING;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
                 ctxt->sax->error(ctxt->userData,
 		  "char encoding EBCDIC not supported\n");
             break;
         case XML_CHAR_ENCODING_UCS4_2143:
+	    ctxt->errno = XML_ERR_UNSUPPORTED_ENCODING;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
                 ctxt->sax->error(ctxt->userData,
 		  "char encoding UCS4 2143 not supported\n");
             break;
         case XML_CHAR_ENCODING_UCS4_3412:
+	    ctxt->errno = XML_ERR_UNSUPPORTED_ENCODING;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
                 ctxt->sax->error(ctxt->userData,
 		  "char encoding UCS4 3412 not supported\n");
             break;
         case XML_CHAR_ENCODING_UCS2:
+	    ctxt->errno = XML_ERR_UNSUPPORTED_ENCODING;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
                 ctxt->sax->error(ctxt->userData,
 		  "char encoding UCS2 not supported\n");
             break;
         case XML_CHAR_ENCODING_8859_1:
+	    ctxt->errno = XML_ERR_UNSUPPORTED_ENCODING;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
                 ctxt->sax->error(ctxt->userData,
 		  "char encoding ISO_8859_1 ISO Latin 1 not supported\n");
             break;
         case XML_CHAR_ENCODING_8859_2:
+	    ctxt->errno = XML_ERR_UNSUPPORTED_ENCODING;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
                 ctxt->sax->error(ctxt->userData,
 		  "char encoding ISO_8859_2 ISO Latin 2 not supported\n");
             break;
         case XML_CHAR_ENCODING_8859_3:
+	    ctxt->errno = XML_ERR_UNSUPPORTED_ENCODING;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
                 ctxt->sax->error(ctxt->userData,
 		  "char encoding ISO_8859_3 not supported\n");
             break;
         case XML_CHAR_ENCODING_8859_4:
+	    ctxt->errno = XML_ERR_UNSUPPORTED_ENCODING;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
                 ctxt->sax->error(ctxt->userData,
 		  "char encoding ISO_8859_4 not supported\n");
             break;
         case XML_CHAR_ENCODING_8859_5:
+	    ctxt->errno = XML_ERR_UNSUPPORTED_ENCODING;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
                 ctxt->sax->error(ctxt->userData,
 		  "char encoding ISO_8859_5 not supported\n");
             break;
         case XML_CHAR_ENCODING_8859_6:
+	    ctxt->errno = XML_ERR_UNSUPPORTED_ENCODING;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
                 ctxt->sax->error(ctxt->userData,
 		  "char encoding ISO_8859_6 not supported\n");
             break;
         case XML_CHAR_ENCODING_8859_7:
+	    ctxt->errno = XML_ERR_UNSUPPORTED_ENCODING;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
                 ctxt->sax->error(ctxt->userData,
 		  "char encoding ISO_8859_7 not supported\n");
             break;
         case XML_CHAR_ENCODING_8859_8:
+	    ctxt->errno = XML_ERR_UNSUPPORTED_ENCODING;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
                 ctxt->sax->error(ctxt->userData,
 		  "char encoding ISO_8859_8 not supported\n");
             break;
         case XML_CHAR_ENCODING_8859_9:
+	    ctxt->errno = XML_ERR_UNSUPPORTED_ENCODING;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
                 ctxt->sax->error(ctxt->userData,
 		  "char encoding ISO_8859_9 not supported\n");
             break;
         case XML_CHAR_ENCODING_2022_JP:
+	    ctxt->errno = XML_ERR_UNSUPPORTED_ENCODING;
             if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
                 ctxt->sax->error(ctxt->userData,
                   "char encoding ISO-2022-JPnot supported\n");
             break;
         case XML_CHAR_ENCODING_SHIFT_JIS:
+	    ctxt->errno = XML_ERR_UNSUPPORTED_ENCODING;
             if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
                 ctxt->sax->error(ctxt->userData,
                   "char encoding Shift_JISnot supported\n");
             break;
         case XML_CHAR_ENCODING_EUC_JP:
+	    ctxt->errno = XML_ERR_UNSUPPORTED_ENCODING;
             if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
                 ctxt->sax->error(ctxt->userData,
                   "char encoding EUC-JPnot supported\n");
@@ -1761,6 +1820,7 @@
     xmlParserInputPtr input;
 
     if (entity->content == NULL) {
+	ctxt->errno = XML_ERR_INTERNAL_ERROR;
         if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "xmlHandleEntity %s: content == NULL\n",
 	               entity->name);
@@ -1983,6 +2043,7 @@
 	q = CUR_PTR;
 	while (IS_CHAR(CUR) && (CUR != '"')) NEXT;
 	if (CUR != '"') {
+	    ctxt->errno = XML_ERR_STRING_NOT_CLOSED;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, "String not closed \"%.50s\"\n", q);
 	    ctxt->wellFormed = 0;
@@ -1995,6 +2056,7 @@
 	q = CUR_PTR;
 	while (IS_CHAR(CUR) && (CUR != '\'')) NEXT;
 	if (CUR != '\'') {
+	    ctxt->errno = XML_ERR_STRING_NOT_CLOSED;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, "String not closed \"%.50s\"\n", q);
 	    ctxt->wellFormed = 0;
@@ -2089,9 +2151,12 @@
             /*
 	     * Found garbage when parsing the namespace
 	     */
-	    if (!garbage)
+	    if (!garbage) {
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-		    ctxt->sax->error(ctxt->userData, "xmlParseNamespace found garbage\n");
+		    ctxt->sax->error(ctxt->userData,
+		                     "xmlParseNamespace found garbage\n");
+	    }
+	    ctxt->errno = XML_ERR_NS_DECL_ERROR;
 	    ctxt->wellFormed = 0;
             NEXT;
         }
@@ -2334,6 +2399,7 @@
 	    GROW;
 	}
         if (CUR != '"') {
+	    ctxt->errno = XML_ERR_ENTITY_NOT_FINISHED;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		ctxt->sax->error(ctxt->userData, "EntityValue: \" expected\n");
 	    ctxt->wellFormed = 0;
@@ -2393,6 +2459,7 @@
 	    GROW;
 	}
         if (CUR != '\'') {
+	    ctxt->errno = XML_ERR_ENTITY_NOT_FINISHED;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		ctxt->sax->error(ctxt->userData, "EntityValue: ' expected\n");
 	    ctxt->wellFormed = 0;
@@ -2404,6 +2471,7 @@
 	    NEXT;
 	}
     } else {
+	ctxt->errno = XML_ERR_ENTITY_NOT_STARTED;
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "EntityValue: \" or ' expected\n");
 	ctxt->wellFormed = 0;
@@ -2439,11 +2507,13 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		ctxt->sax->error(ctxt->userData,
 		   "Unescaped '<' not allowed in attributes values\n");
+	    ctxt->errno = XML_ERR_LT_IN_ATTRIBUTE;
 	    ctxt->wellFormed = 0;
 	}
         if (CUR != '"') {
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		ctxt->sax->error(ctxt->userData, "AttValue: ' expected\n");
+	    ctxt->errno = XML_ERR_ATTRIBUTE_NOT_FINISHED;
 	    ctxt->wellFormed = 0;
 	} else
 	    NEXT;
@@ -2455,15 +2525,18 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		ctxt->sax->error(ctxt->userData,
 		   "Unescaped '<' not allowed in attributes values\n");
+	    ctxt->errno = XML_ERR_LT_IN_ATTRIBUTE;
 	    ctxt->wellFormed = 0;
 	}
         if (CUR != '\'') {
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		ctxt->sax->error(ctxt->userData, "AttValue: ' expected\n");
+	    ctxt->errno = XML_ERR_ATTRIBUTE_NOT_FINISHED;
 	    ctxt->wellFormed = 0;
 	} else
 	    NEXT;
     } else {
+	ctxt->errno = XML_ERR_ATTRIBUTE_NOT_STARTED;
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "AttValue: \" or ' expected\n");
 	ctxt->wellFormed = 0;
@@ -2497,6 +2570,7 @@
 	if (!IS_CHAR(CUR)) {
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, "Unfinished SystemLiteral\n");
+	    ctxt->errno = XML_ERR_LITERAL_NOT_FINISHED;
 	    ctxt->wellFormed = 0;
 	} else {
 	    ret = xmlStrndup(q, CUR_PTR - q);
@@ -2510,6 +2584,7 @@
 	if (!IS_CHAR(CUR)) {
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, "Unfinished SystemLiteral\n");
+	    ctxt->errno = XML_ERR_LITERAL_NOT_FINISHED;
 	    ctxt->wellFormed = 0;
 	} else {
 	    ret = xmlStrndup(q, CUR_PTR - q);
@@ -2517,7 +2592,9 @@
         }
     } else {
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	    ctxt->sax->error(ctxt->userData, "SystemLiteral \" or ' expected\n");
+	    ctxt->sax->error(ctxt->userData,
+	                     "SystemLiteral \" or ' expected\n");
+	ctxt->errno = XML_ERR_LITERAL_NOT_STARTED;
 	ctxt->wellFormed = 0;
     }
     
@@ -2550,6 +2627,7 @@
 	if (CUR != '"') {
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, "Unfinished PubidLiteral\n");
+	    ctxt->errno = XML_ERR_LITERAL_NOT_FINISHED;
 	    ctxt->wellFormed = 0;
 	} else {
 	    ret = xmlStrndup(q, CUR_PTR - q);
@@ -2563,6 +2641,7 @@
 	if (!IS_LETTER(CUR)) {
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, "Unfinished PubidLiteral\n");
+	    ctxt->errno = XML_ERR_LITERAL_NOT_FINISHED;
 	    ctxt->wellFormed = 0;
 	} else {
 	    ret = xmlStrndup(q, CUR_PTR - q);
@@ -2570,7 +2649,9 @@
 	}
     } else {
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	    ctxt->sax->error(ctxt->userData, "SystemLiteral \" or ' expected\n");
+	    ctxt->sax->error(ctxt->userData,
+	                     "SystemLiteral \" or ' expected\n");
+	ctxt->errno = XML_ERR_LITERAL_NOT_STARTED;
 	ctxt->wellFormed = 0;
     }
     
@@ -2610,6 +2691,7 @@
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData,
 		       "Sequence ']]>' not allowed in content\n");
+		ctxt->errno = XML_ERR_MISPLACED_CDATA_END;
 		ctxt->wellFormed = 0;
 	    }
 	}
@@ -2684,6 +2766,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		ctxt->sax->error(ctxt->userData,
 		    "Space required after 'SYSTEM'\n");
+	    ctxt->errno = XML_ERR_SPACE_REQUIRED;
 	    ctxt->wellFormed = 0;
 	}
         SKIP_BLANKS;
@@ -2692,6 +2775,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData,
 	          "xmlParseExternalID: SYSTEM, no URI\n");
+	    ctxt->errno = XML_ERR_URI_REQUIRED;
 	    ctxt->wellFormed = 0;
         }
     } else if ((CUR == 'P') && (NXT(1) == 'U') &&
@@ -2702,6 +2786,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		ctxt->sax->error(ctxt->userData,
 		    "Space required after 'PUBLIC'\n");
+	    ctxt->errno = XML_ERR_SPACE_REQUIRED;
 	    ctxt->wellFormed = 0;
 	}
         SKIP_BLANKS;
@@ -2710,6 +2795,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, 
 	          "xmlParseExternalID: PUBLIC, no Public Identifier\n");
+	    ctxt->errno = XML_ERR_PUBID_REQUIRED;
 	    ctxt->wellFormed = 0;
 	}
 	if (strict) {
@@ -2720,6 +2806,7 @@
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData,
 			"Space required after the Public Identifier\n");
+		ctxt->errno = XML_ERR_SPACE_REQUIRED;
 		ctxt->wellFormed = 0;
 	    }
 	} else {
@@ -2740,6 +2827,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, 
 	           "xmlParseExternalID: PUBLIC, no URI\n");
+	    ctxt->errno = XML_ERR_URI_REQUIRED;
 	    ctxt->wellFormed = 0;
         }
     }
@@ -2782,13 +2870,16 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData,
 	       "Comment must not contain '--' (double-hyphen)`\n");
+	    ctxt->errno = XML_ERR_HYPHEN_IN_COMMENT;
 	    ctxt->wellFormed = 0;
 	}
         NEXT;r++;q++;
     }
     if (!IS_CHAR(CUR)) {
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	    ctxt->sax->error(ctxt->userData, "Comment not terminated \n<!--%.50s\n", start);
+	    ctxt->sax->error(ctxt->userData,
+	                     "Comment not terminated \n<!--%.50s\n", start);
+	ctxt->errno = XML_ERR_COMMENT_NOT_FINISHED;
 	ctxt->wellFormed = 0;
     } else {
         NEXT;
@@ -2819,8 +2910,12 @@
         ((name[0] == 'x') || (name[0] == 'X')) &&
         ((name[1] == 'm') || (name[1] == 'M')) &&
         ((name[2] == 'l') || (name[2] == 'L'))) {
-	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	    ctxt->sax->error(ctxt->userData, "xmlParsePItarget: invalid name prefix 'xml'\n");
+	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) {
+	    ctxt->sax->error(ctxt->userData,
+	         "xmlParsePItarget: invalid name prefix 'xml'\n");
+	    ctxt->errno = XML_ERR_RESERVED_XML_NAME;
+	    /* ctxt->wellFormed = 0; !!! ? */
+	}
 	return(NULL);
     }
     return(name);
@@ -2860,6 +2955,7 @@
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData,
 		      "xmlParsePI: PI %s space expected\n", target);
+		ctxt->errno = XML_ERR_SPACE_REQUIRED;
 		ctxt->wellFormed = 0;
 	    }
             SKIP_BLANKS;
@@ -2871,6 +2967,7 @@
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData,
 		      "xmlParsePI: PI %s never end ...\n", target);
+		ctxt->errno = XML_ERR_PI_NOT_FINISHED;
 		ctxt->wellFormed = 0;
 	    } else {
 		CHAR *data;
@@ -2892,6 +2989,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData,
 		       "xmlParsePI : no target name\n");
+	    ctxt->errno = XML_ERR_PI_NOT_STARTED;
 	    ctxt->wellFormed = 0;
 	}
     }
@@ -2928,7 +3026,9 @@
 	SKIP(10);
 	if (!IS_BLANK(CUR)) {
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-		ctxt->sax->error(ctxt->userData, "Space required after '<!NOTATION'\n");
+		ctxt->sax->error(ctxt->userData,
+		                 "Space required after '<!NOTATION'\n");
+	    ctxt->errno = XML_ERR_SPACE_REQUIRED;
 	    ctxt->wellFormed = 0;
 	    return;
 	}
@@ -2937,7 +3037,9 @@
         name = xmlParseName(ctxt);
 	if (name == NULL) {
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	        ctxt->sax->error(ctxt->userData, "NOTATION: Name expected here\n");
+	        ctxt->sax->error(ctxt->userData,
+		                 "NOTATION: Name expected here\n");
+	    ctxt->errno = XML_ERR_NOTATION_NOT_STARTED;
 	    ctxt->wellFormed = 0;
 	    return;
 	}
@@ -2945,6 +3047,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		ctxt->sax->error(ctxt->userData, 
 		     "Space required after the NOTATION name'\n");
+	    ctxt->errno = XML_ERR_SPACE_REQUIRED;
 	    ctxt->wellFormed = 0;
 	    return;
 	}
@@ -2964,6 +3067,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		ctxt->sax->error(ctxt->userData,
 		       "'>' required to close NOTATION declaration\n");
+	    ctxt->errno = XML_ERR_NOTATION_NOT_FINISHED;
 	    ctxt->wellFormed = 0;
 	}
 	xmlFree(name);
@@ -3013,7 +3117,9 @@
 	SKIP(8);
 	if (!IS_BLANK(CUR)) {
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-		ctxt->sax->error(ctxt->userData, "Space required after '<!ENTITY'\n");
+		ctxt->sax->error(ctxt->userData,
+		                 "Space required after '<!ENTITY'\n");
+	    ctxt->errno = XML_ERR_SPACE_REQUIRED;
 	    ctxt->wellFormed = 0;
 	}
 	SKIP_BLANKS;
@@ -3022,7 +3128,9 @@
 	    NEXT;
 	    if (!IS_BLANK(CUR)) {
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-		    ctxt->sax->error(ctxt->userData, "Space required after '%'\n");
+		    ctxt->sax->error(ctxt->userData,
+		                     "Space required after '%'\n");
+		ctxt->errno = XML_ERR_SPACE_REQUIRED;
 		ctxt->wellFormed = 0;
 	    }
 	    SKIP_BLANKS;
@@ -3033,6 +3141,7 @@
 	if (name == NULL) {
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, "xmlParseEntityDecl: no name\n");
+	    ctxt->errno = XML_ERR_NAME_REQUIRED;
 	    ctxt->wellFormed = 0;
             return;
 	}
@@ -3040,6 +3149,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		ctxt->sax->error(ctxt->userData,
 		     "Space required after the entity name\n");
+	    ctxt->errno = XML_ERR_SPACE_REQUIRED;
 	    ctxt->wellFormed = 0;
 	}
         SKIP_BLANKS;
@@ -3078,6 +3188,7 @@
 		    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 			ctxt->sax->error(ctxt->userData,
 			    "Space required before 'NDATA'\n");
+		    ctxt->errno = XML_ERR_SPACE_REQUIRED;
 		    ctxt->wellFormed = 0;
 		}
 		SKIP_BLANKS;
@@ -3089,6 +3200,7 @@
 			if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 			    ctxt->sax->error(ctxt->userData,
 			        "Space required after 'NDATA'\n");
+			ctxt->errno = XML_ERR_SPACE_REQUIRED;
 			ctxt->wellFormed = 0;
 		    }
 		    SKIP_BLANKS;
@@ -3110,6 +3222,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, 
 	            "xmlParseEntityDecl: entity %s not terminated\n", name);
+	    ctxt->errno = XML_ERR_ENTITY_NOT_FINISHED;
 	    ctxt->wellFormed = 0;
 	} else
 	    NEXT;
@@ -3202,7 +3315,9 @@
 	val = XML_ATTRIBUTE_FIXED;
 	if (!IS_BLANK(CUR)) {
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	        ctxt->sax->error(ctxt->userData, "Space required after '#FIXED'\n");
+	        ctxt->sax->error(ctxt->userData,
+		                 "Space required after '#FIXED'\n");
+	    ctxt->errno = XML_ERR_SPACE_REQUIRED;
 	    ctxt->wellFormed = 0;
 	}
 	SKIP_BLANKS;
@@ -3243,7 +3358,9 @@
 
     if (CUR != '(') {
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	    ctxt->sax->error(ctxt->userData, "'(' required to start 'NOTATION'\n");
+	    ctxt->sax->error(ctxt->userData,
+	                     "'(' required to start 'NOTATION'\n");
+	ctxt->errno = XML_ERR_NOTATION_NOT_STARTED;
 	ctxt->wellFormed = 0;
 	return(NULL);
     }
@@ -3256,6 +3373,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		ctxt->sax->error(ctxt->userData, 
 		                 "Name expected in NOTATION declaration\n");
+	    ctxt->errno = XML_ERR_NAME_REQUIRED;
 	    ctxt->wellFormed = 0;
 	    return(ret);
 	}
@@ -3273,6 +3391,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData,
 	                     "')' required to finish NOTATION declaration\n");
+	ctxt->errno = XML_ERR_NOTATION_NOT_FINISHED;
 	ctxt->wellFormed = 0;
 	return(ret);
     }
@@ -3304,6 +3423,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData,
 	                     "'(' required to start ATTLIST enumeration\n");
+	ctxt->errno = XML_ERR_ATTLIST_NOT_STARTED;
 	ctxt->wellFormed = 0;
 	return(NULL);
     }
@@ -3316,6 +3436,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		ctxt->sax->error(ctxt->userData, 
 		                 "NmToken expected in ATTLIST enumeration\n");
+	    ctxt->errno = XML_ERR_NMTOKEN_REQUIRED;
 	    ctxt->wellFormed = 0;
 	    return(ret);
 	}
@@ -3333,6 +3454,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData,
 	                     "')' required to finish ATTLIST enumeration\n");
+	ctxt->errno = XML_ERR_ATTLIST_NOT_FINISHED;
 	ctxt->wellFormed = 0;
 	return(ret);
     }
@@ -3364,7 +3486,9 @@
 	SKIP(8);
 	if (!IS_BLANK(CUR)) {
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	        ctxt->sax->error(ctxt->userData, "Space required after 'NOTATION'\n");
+	        ctxt->sax->error(ctxt->userData,
+		                 "Space required after 'NOTATION'\n");
+	    ctxt->errno = XML_ERR_SPACE_REQUIRED;
 	    ctxt->wellFormed = 0;
 	    return(0);
 	}
@@ -3496,14 +3620,18 @@
 	SKIP(9);
 	if (!IS_BLANK(CUR)) {
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	        ctxt->sax->error(ctxt->userData, "Space required after '<!ATTLIST'\n");
+	        ctxt->sax->error(ctxt->userData,
+		                 "Space required after '<!ATTLIST'\n");
+	    ctxt->errno = XML_ERR_SPACE_REQUIRED;
 	    ctxt->wellFormed = 0;
 	}
         SKIP_BLANKS;
         elemName = xmlParseName(ctxt);
 	if (elemName == NULL) {
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	        ctxt->sax->error(ctxt->userData, "ATTLIST: no name for Element\n");
+	        ctxt->sax->error(ctxt->userData,
+		                 "ATTLIST: no name for Element\n");
+	    ctxt->errno = XML_ERR_NAME_REQUIRED;
 	    ctxt->wellFormed = 0;
 	    return;
 	}
@@ -3518,7 +3646,9 @@
 	    attrName = xmlParseName(ctxt);
 	    if (attrName == NULL) {
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-		    ctxt->sax->error(ctxt->userData, "ATTLIST: no name for Attribute\n");
+		    ctxt->sax->error(ctxt->userData,
+		                     "ATTLIST: no name for Attribute\n");
+		ctxt->errno = XML_ERR_NAME_REQUIRED;
 		ctxt->wellFormed = 0;
 		break;
 	    }
@@ -3527,6 +3657,7 @@
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData, 
 		        "Space required after the attribute name\n");
+		ctxt->errno = XML_ERR_SPACE_REQUIRED;
 		ctxt->wellFormed = 0;
 		break;
 	    }
@@ -3540,6 +3671,7 @@
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData, 
 		        "Space required after the attribute type\n");
+		ctxt->errno = XML_ERR_SPACE_REQUIRED;
 		ctxt->wellFormed = 0;
 		break;
 	    }
@@ -3554,6 +3686,7 @@
 		    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 			ctxt->sax->error(ctxt->userData, 
 			"Space required after the attribute default value\n");
+		    ctxt->errno = XML_ERR_SPACE_REQUIRED;
 		    ctxt->wellFormed = 0;
 		    break;
 		}
@@ -3563,6 +3696,7 @@
 	        if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData, 
 		    "xmlParseAttributeListDecl: detected internal error\n");
+		ctxt->errno = XML_ERR_INTERNAL_ERROR;
 		break;
 	    }
 	    if ((ctxt->sax != NULL) && (ctxt->sax->attributeDecl != NULL))
@@ -3642,6 +3776,7 @@
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData, 
 			"xmlParseElementMixedContentDecl : Name expected\n");
+		ctxt->errno = XML_ERR_NAME_REQUIRED;
 		ctxt->wellFormed = 0;
 		xmlFreeElementContent(cur);
 		return(NULL);
@@ -3662,6 +3797,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		ctxt->sax->error(ctxt->userData, 
 		    "xmlParseElementMixedContentDecl : '|' or ')*' expected\n");
+	    ctxt->errno = XML_ERR_MIXED_NOT_STARTED;
 	    ctxt->wellFormed = 0;
 	    xmlFreeElementContent(ret);
 	    return(NULL);
@@ -3671,6 +3807,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, 
 		"xmlParseElementMixedContentDecl : '#PCDATA' expected\n");
+	ctxt->errno = XML_ERR_PCDATA_REQUIRED;
 	ctxt->wellFormed = 0;
     }
     return(ret);
@@ -3727,6 +3864,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		ctxt->sax->error(ctxt->userData, 
 		"xmlParseElementChildrenContentDecl : Name or '(' expected\n");
+	    ctxt->errno = XML_ERR_ELEMCONTENT_NOT_STARTED;
 	    ctxt->wellFormed = 0;
 	    return(NULL);
 	}
@@ -3764,6 +3902,7 @@
 		    ctxt->sax->error(ctxt->userData, 
 		    "xmlParseElementChildrenContentDecl : '%c' expected\n",
 		    type);
+		ctxt->errno = XML_ERR_SEPARATOR_REQUIRED;
 		ctxt->wellFormed = 0;
 		xmlFreeElementContent(ret);
 		return(NULL);
@@ -3795,6 +3934,7 @@
 		    ctxt->sax->error(ctxt->userData, 
 		    "xmlParseElementChildrenContentDecl : '%c' expected\n",
 		    type);
+		ctxt->errno = XML_ERR_SEPARATOR_REQUIRED;
 		ctxt->wellFormed = 0;
 		xmlFreeElementContent(ret);
 		return(NULL);
@@ -3820,6 +3960,7 @@
 		ctxt->sax->error(ctxt->userData, 
 	    "xmlParseElementChildrenContentDecl : ',' '|' or ')' expected\n");
 	    ctxt->wellFormed = 0;
+	    ctxt->errno = XML_ERR_ELEMCONTENT_NOT_FINISHED;
 	    xmlFreeElementContent(ret);
 	    return(NULL);
 	}
@@ -3837,7 +3978,8 @@
 	    if (elem == NULL) {
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData, 
-		    "xmlParseElementChildrenContentDecl : Name or '(' expected\n");
+		"xmlParseElementChildrenContentDecl : Name or '(' expected\n");
+		ctxt->errno = XML_ERR_ELEMCONTENT_NOT_STARTED;
 		ctxt->wellFormed = 0;
 		return(NULL);
 	    }
@@ -3903,6 +4045,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, 
 		"xmlParseElementContentDecl : '(' expected\n");
+	ctxt->errno = XML_ERR_ELEMCONTENT_NOT_STARTED;
 	ctxt->wellFormed = 0;
 	return(-1);
     }
@@ -3963,6 +4106,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		ctxt->sax->error(ctxt->userData, 
 		    "Space required after 'ELEMENT'\n");
+	    ctxt->errno = XML_ERR_SPACE_REQUIRED;
 	    ctxt->wellFormed = 0;
 	}
         SKIP_BLANKS;
@@ -3971,6 +4115,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData,
 		   "xmlParseElementDecl: no name for Element\n");
+	    ctxt->errno = XML_ERR_NAME_REQUIRED;
 	    ctxt->wellFormed = 0;
 	    return(-1);
 	}
@@ -3978,6 +4123,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		ctxt->sax->error(ctxt->userData, 
 		    "Space required after the element name\n");
+	    ctxt->errno = XML_ERR_SPACE_REQUIRED;
 	    ctxt->wellFormed = 0;
 	}
         SKIP_BLANKS;
@@ -4007,10 +4153,12 @@
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData, 
 	  "PEReference: forbidden within markup decl in internal subset\n");
+		ctxt->errno = XML_ERR_PEREF_IN_INT_SUBSET;
 	    } else {
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData, 
 		      "xmlParseElementDecl: 'EMPTY', 'ANY' or '(' expected\n");
+		ctxt->errno = XML_ERR_ELEMCONTENT_NOT_STARTED;
             }
 	    ctxt->wellFormed = 0;
 	    if (name != NULL) xmlFree(name);
@@ -4021,6 +4169,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, 
 	          "xmlParseElementDecl: expected '>' at the end\n");
+	    ctxt->errno = XML_ERR_GT_REQUIRED;
 	    ctxt->wellFormed = 0;
 	} else {
 	    NEXT;
@@ -4101,7 +4250,9 @@
 
     if (!IS_BLANK(CUR)) {
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	    ctxt->sax->error(ctxt->userData, "Blank needed after '<?xml'\n");
+	    ctxt->sax->error(ctxt->userData,
+	                     "Space needed after '<?xml'\n");
+	ctxt->errno = XML_ERR_SPACE_REQUIRED;
 	ctxt->wellFormed = 0;
     }
     SKIP_BLANKS;
@@ -4120,7 +4271,8 @@
      */
     if (!IS_BLANK(CUR)) {
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	    ctxt->sax->error(ctxt->userData, "Blank needed here\n");
+	    ctxt->sax->error(ctxt->userData, "Space needed here\n");
+	ctxt->errno = XML_ERR_SPACE_REQUIRED;
 	ctxt->wellFormed = 0;
     }
     encoding = xmlParseEncodingDecl(ctxt);
@@ -4131,12 +4283,16 @@
     } else if (CUR == '>') {
         /* Deprecated old WD ... */
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	    ctxt->sax->error(ctxt->userData, "XML declaration must end-up with '?>'\n");
+	    ctxt->sax->error(ctxt->userData,
+	                     "XML declaration must end-up with '?>'\n");
+	ctxt->errno = XML_ERR_XMLDECL_NOT_FINISHED;
 	ctxt->wellFormed = 0;
 	NEXT;
     } else {
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	    ctxt->sax->error(ctxt->userData, "parsing XML declaration: '?>' expected\n");
+	    ctxt->sax->error(ctxt->userData,
+	                     "parsing XML declaration: '?>' expected\n");
+	ctxt->errno = XML_ERR_XMLDECL_NOT_FINISHED;
 	ctxt->wellFormed = 0;
 	MOVETO_ENDTAG(CUR_PTR);
 	NEXT;
@@ -4171,6 +4327,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData,
 	        "XML conditional section not closed\n");
+	ctxt->errno = XML_ERR_CONDSEC_NOT_FINISHED;
 	ctxt->wellFormed = 0;
     }
 }
@@ -4227,6 +4384,7 @@
 		ctxt->sax->error(ctxt->userData,
 		    "Content error in the external subset\n");
 	    ctxt->wellFormed = 0;
+	    ctxt->errno = XML_ERR_EXT_SUBSET_NOT_FINISHED;
 	    break;
 	}
     }
@@ -4235,6 +4393,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData,
 	        "Extra content at the end of the document\n");
+	ctxt->errno = XML_ERR_EXT_SUBSET_NOT_FINISHED;
 	ctxt->wellFormed = 0;
     }
 
@@ -4349,6 +4508,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData,
 		                 "xmlParseEntityRef: no name\n");
+	    ctxt->errno = XML_ERR_NAME_REQUIRED;
 	    ctxt->wellFormed = 0;
 	} else {
 	    if (CUR == ';') {
@@ -4391,11 +4551,13 @@
 			if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 			    ctxt->sax->error(ctxt->userData, 
 				 "Entity '%s' not defined\n", name);
+			ctxt->errno = XML_ERR_UNDECLARED_ENTITY;
 			ctxt->wellFormed = 0;
 		    } else {
 			if ((ctxt->sax != NULL) && (ctxt->sax->warning != NULL))
 			    ctxt->sax->warning(ctxt->userData, 
 				 "Entity '%s' not defined\n", name);
+			ctxt->errno = XML_WAR_UNDECLARED_ENTITY;
 		    }
 		}
 
@@ -4408,6 +4570,7 @@
 		    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 			ctxt->sax->error(ctxt->userData, 
 			     "Entity reference to unparsed entity %s\n", name);
+		    ctxt->errno = XML_ERR_UNPARSED_ENTITY;
 		    ctxt->wellFormed = 0;
 		}
 
@@ -4421,6 +4584,7 @@
 		    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 			ctxt->sax->error(ctxt->userData, 
 		     "Attribute references external entity '%s'\n", name);
+		    ctxt->errno = XML_ERR_ENTITY_IS_EXTERNAL;
 		    ctxt->wellFormed = 0;
 		}
 		/*
@@ -4437,6 +4601,7 @@
 		    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 			ctxt->sax->error(ctxt->userData, 
 	 "'<' in entity '%s' is not allowed in attributes values\n", name);
+		    ctxt->errno = XML_ERR_LT_IN_ATTRIBUTE;
 		    ctxt->wellFormed = 0;
 		}
 
@@ -4450,6 +4615,7 @@
 			if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 			    ctxt->sax->error(ctxt->userData, 
 		     "Attempt to reference the parameter entity '%s'\n", name);
+			ctxt->errno = XML_ERR_ENTITY_IS_PARAMETER;
 			ctxt->wellFormed = 0;
 			break;
 		    }
@@ -4465,6 +4631,7 @@
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData,
 		                     "xmlParseEntityRef: expecting ';'\n");
+		ctxt->errno = XML_ERR_ENTITYREF_SEMICOL_MISSING;
 		ctxt->wellFormed = 0;
 	    }
 	    xmlFree(name);
@@ -4513,7 +4680,9 @@
         name = xmlParseName(ctxt);
 	if (name == NULL) {
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	        ctxt->sax->error(ctxt->userData, "xmlParsePEReference: no name\n");
+	        ctxt->sax->error(ctxt->userData,
+		                 "xmlParsePEReference: no name\n");
+	    ctxt->errno = XML_ERR_NAME_REQUIRED;
 	    ctxt->wellFormed = 0;
 	} else {
 	    if (CUR == ';') {
@@ -4537,6 +4706,7 @@
 			if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 			    ctxt->sax->error(ctxt->userData,
 			     "PEReference: %%%s; not found\n", name);
+			ctxt->errno = XML_ERR_UNDECLARED_ENTITY;
 			ctxt->wellFormed = 0;
 		    } else {
 			/*
@@ -4570,6 +4740,7 @@
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData,
 		                     "xmlParsePEReference: expecting ';'\n");
+		ctxt->errno = XML_ERR_ENTITYREF_SEMICOL_MISSING;
 		ctxt->wellFormed = 0;
 	    }
 	    xmlFree(name);
@@ -4610,8 +4781,10 @@
     name = xmlParseName(ctxt);
     if (name == NULL) {
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	    ctxt->sax->error(ctxt->userData, "xmlParseDocTypeDecl : no DOCTYPE name !\n");
+	    ctxt->sax->error(ctxt->userData, 
+	        "xmlParseDocTypeDecl : no DOCTYPE name !\n");
 	ctxt->wellFormed = 0;
+	ctxt->errno = XML_ERR_NAME_REQUIRED;
     }
 
     SKIP_BLANKS;
@@ -4664,6 +4837,7 @@
 		    ctxt->sax->error(ctxt->userData, 
 		 "xmlParseDocTypeDecl: error detected in Markup declaration\n");
 		ctxt->wellFormed = 0;
+		ctxt->errno = XML_ERR_INTERNAL_ERROR;
 		break;
 	    }
 	}
@@ -4677,7 +4851,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "DOCTYPE unproperly terminated\n");
 	ctxt->wellFormed = 0;
-        /* We shouldn't try to resynchronize ... */
+	ctxt->errno = XML_ERR_DOCTYPE_NOT_FINISHED;
     }
     NEXT;
 
@@ -4732,6 +4906,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "error parsing attribute name\n");
 	ctxt->wellFormed = 0;
+	ctxt->errno = XML_ERR_NAME_REQUIRED;
         return(NULL);
     }
 
@@ -4748,6 +4923,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData,
 	       "Specification mandate value for attribute %s\n", name);
+	ctxt->errno = XML_ERR_ATTRIBUTE_WITHOUT_VALUE;
 	ctxt->wellFormed = 0;
 	return(NULL);
     }
@@ -4802,6 +4978,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, 
 	     "xmlParseStartTag: invalid element name\n");
+	ctxt->errno = XML_ERR_NAME_REQUIRED;
 	ctxt->wellFormed = 0;
         return(NULL);
     }
@@ -4833,6 +5010,7 @@
 			        "Attribute %s redefined\n",
 			                 attname);
 		    ctxt->wellFormed = 0;
+		    ctxt->errno = XML_ERR_ATTRIBUTE_REDEFINED;
 		    xmlFree(attname);
 		    xmlFree(attvalue);
 		    goto failed;
@@ -4852,7 +5030,8 @@
 		}
 	    } else if (nbatts + 2 < maxatts) {
 	        maxatts *= 2;
-	        atts = (const CHAR **) xmlRealloc(atts, maxatts * sizeof(CHAR *));
+	        atts = (const CHAR **) xmlRealloc(atts,
+		                                  maxatts * sizeof(CHAR *));
 		if (atts == NULL) {
 		    fprintf(stderr, "realloc of %ld byte failed\n",
 			    maxatts * (long)sizeof(CHAR *));
@@ -4871,6 +5050,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, 
 	         "xmlParseStartTag: problem parsing attributes\n");
+	    ctxt->errno = XML_ERR_INTERNAL_ERROR;
 	    ctxt->wellFormed = 0;
 	    break;
 	}
@@ -4913,6 +5093,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "xmlParseEndTag: '</' not found\n");
 	ctxt->wellFormed = 0;
+	ctxt->errno = XML_ERR_LTSLASH_REQUIRED;
 	return;
     }
     SKIP(2);
@@ -4927,6 +5108,7 @@
     if ((!IS_CHAR(CUR)) || (CUR != '>')) {
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "End tag : expected '>'\n");
+	ctxt->errno = XML_ERR_GT_REQUIRED;
 	ctxt->wellFormed = 0;
     } else
 	NEXT;
@@ -4941,6 +5123,8 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData,
 	     "Opening and ending tag mismatch: %s and %s\n", tagname, name);
+
+	ctxt->errno = XML_ERR_TAG_NAME_MISMATCH;
 	ctxt->wellFormed = 0;
     }
 
@@ -4989,8 +5173,10 @@
     base = CUR_PTR;
     if (!IS_CHAR(CUR)) {
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	    ctxt->sax->error(ctxt->userData, "CData section not finished\n%.50s\n", base);
+	    ctxt->sax->error(ctxt->userData,
+	                     "CData section not finished\n%.50s\n", base);
 	ctxt->wellFormed = 0;
+	ctxt->errno = XML_ERR_CDATA_NOT_FINISHED;
 	ctxt->instate = XML_PARSER_CONTENT;
         return;
     }
@@ -4998,7 +5184,9 @@
     NEXT;
     if (!IS_CHAR(CUR)) {
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	    ctxt->sax->error(ctxt->userData, "CData section not finished\n%.50s\n", base);
+	    ctxt->sax->error(ctxt->userData,
+	                     "CData section not finished\n%.50s\n", base);
+	ctxt->errno = XML_ERR_CDATA_NOT_FINISHED;
 	ctxt->wellFormed = 0;
 	ctxt->instate = XML_PARSER_CONTENT;
         return;
@@ -5016,7 +5204,9 @@
     ctxt->instate = XML_PARSER_CONTENT;
     if (!IS_CHAR(CUR)) {
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	    ctxt->sax->error(ctxt->userData, "CData section not finished\n%.50s\n", base);
+	    ctxt->sax->error(ctxt->userData,
+	                     "CData section not finished\n%.50s\n", base);
+	ctxt->errno = XML_ERR_CDATA_NOT_FINISHED;
 	ctxt->wellFormed = 0;
         return;
     }
@@ -5110,6 +5300,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData,
 		     "detected an error in element content\n");
+	    ctxt->errno = XML_ERR_INTERNAL_ERROR;
 	    ctxt->wellFormed = 0;
             break;
 	}
@@ -5185,9 +5376,11 @@
         NEXT;
     } else {
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	    ctxt->sax->error(ctxt->userData, "Couldn't find end of Start Tag\n%.30s\n",
+	    ctxt->sax->error(ctxt->userData,
+	                     "Couldn't find end of Start Tag\n%.30s\n",
 	                     openTag);
 	ctxt->wellFormed = 0;
+	ctxt->errno = XML_ERR_GT_REQUIRED;
 
 	/*
 	 * end of parsing of this node.
@@ -5217,6 +5410,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	         "Premature end of data in tag %.30s\n", openTag);
 	ctxt->wellFormed = 0;
+	ctxt->errno = XML_ERR_TAG_NOT_FINISED;
 
 	/*
 	 * end of parsing of this node.
@@ -5295,8 +5489,10 @@
 	SKIP_BLANKS;
 	if (CUR != '=') {
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	        ctxt->sax->error(ctxt->userData, "xmlParseVersionInfo : expected '='\n");
+	        ctxt->sax->error(ctxt->userData,
+		                 "xmlParseVersionInfo : expected '='\n");
 	    ctxt->wellFormed = 0;
+	    ctxt->errno = XML_ERR_EQUAL_REQUIRED;
 	    return(NULL);
         }
 	NEXT;
@@ -5307,8 +5503,10 @@
 	    version = xmlParseVersionNum(ctxt);
 	    if (CUR != '"') {
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-		    ctxt->sax->error(ctxt->userData, "String not closed\n%.50s\n", q);
+		    ctxt->sax->error(ctxt->userData, 
+		                     "String not closed\n%.50s\n", q);
 		ctxt->wellFormed = 0;
+		ctxt->errno = XML_ERR_STRING_NOT_CLOSED;
 	    } else
 	        NEXT;
 	} else if (CUR == '\''){
@@ -5317,7 +5515,9 @@
 	    version = xmlParseVersionNum(ctxt);
 	    if (CUR != '\'') {
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-		    ctxt->sax->error(ctxt->userData, "String not closed\n%.50s\n", q);
+		    ctxt->sax->error(ctxt->userData,
+		                     "String not closed\n%.50s\n", q);
+		ctxt->errno = XML_ERR_STRING_NOT_CLOSED;
 		ctxt->wellFormed = 0;
 	    } else
 	        NEXT;
@@ -5325,7 +5525,8 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData,
 		      "xmlParseVersionInfo : expected ' or \"\n");
-		ctxt->wellFormed = 0;
+	    ctxt->wellFormed = 0;
+	    ctxt->errno = XML_ERR_STRING_NOT_STARTED;
 	}
     }
     return(version);
@@ -5359,6 +5560,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "Invalid XML encoding name\n");
 	ctxt->wellFormed = 0;
+	ctxt->errno = XML_ERR_ENCODING_NAME;
     }
     return(ret);
 }
@@ -5390,8 +5592,10 @@
 	SKIP_BLANKS;
 	if (CUR != '=') {
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	        ctxt->sax->error(ctxt->userData, "xmlParseEncodingDecl : expected '='\n");
+	        ctxt->sax->error(ctxt->userData,
+		                 "xmlParseEncodingDecl : expected '='\n");
 	    ctxt->wellFormed = 0;
+	    ctxt->errno = XML_ERR_EQUAL_REQUIRED;
 	    return(NULL);
         }
 	NEXT;
@@ -5402,8 +5606,10 @@
 	    encoding = xmlParseEncName(ctxt);
 	    if (CUR != '"') {
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-		    ctxt->sax->error(ctxt->userData, "String not closed\n%.50s\n", q);
+		    ctxt->sax->error(ctxt->userData, 
+		                     "String not closed\n%.50s\n", q);
 		ctxt->wellFormed = 0;
+		ctxt->errno = XML_ERR_STRING_NOT_CLOSED;
 	    } else
 	        NEXT;
 	} else if (CUR == '\''){
@@ -5412,8 +5618,10 @@
 	    encoding = xmlParseEncName(ctxt);
 	    if (CUR != '\'') {
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-		    ctxt->sax->error(ctxt->userData, "String not closed\n%.50s\n", q);
+		    ctxt->sax->error(ctxt->userData,
+		                     "String not closed\n%.50s\n", q);
 		ctxt->wellFormed = 0;
+		ctxt->errno = XML_ERR_STRING_NOT_CLOSED;
 	    } else
 	        NEXT;
 	} else if (CUR == '"'){
@@ -5421,6 +5629,7 @@
 	        ctxt->sax->error(ctxt->userData,
 		     "xmlParseEncodingDecl : expected ' or \"\n");
 	    ctxt->wellFormed = 0;
+	    ctxt->errno = XML_ERR_STRING_NOT_STARTED;
 	}
     }
     return(encoding);
@@ -5468,6 +5677,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData,
 		    "XML standalone declaration : expected '='\n");
+	    ctxt->errno = XML_ERR_EQUAL_REQUIRED;
 	    ctxt->wellFormed = 0;
 	    return(standalone);
         }
@@ -5484,12 +5694,15 @@
 		SKIP(3);
             } else {
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-		    ctxt->sax->error(ctxt->userData, "standalone accepts only 'yes' or 'no'\n");
+		    ctxt->sax->error(ctxt->userData,
+		                     "standalone accepts only 'yes' or 'no'\n");
+		ctxt->errno = XML_ERR_STANDALONE_VALUE;
 		ctxt->wellFormed = 0;
 	    }
 	    if (CUR != '\'') {
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData, "String not closed\n");
+		ctxt->errno = XML_ERR_STRING_NOT_CLOSED;
 		ctxt->wellFormed = 0;
 	    } else
 	        NEXT;
@@ -5506,18 +5719,22 @@
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData,
 		        "standalone accepts only 'yes' or 'no'\n");
+		ctxt->errno = XML_ERR_STANDALONE_VALUE;
 		ctxt->wellFormed = 0;
 	    }
 	    if (CUR != '"') {
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData, "String not closed\n");
 		ctxt->wellFormed = 0;
+		ctxt->errno = XML_ERR_STRING_NOT_CLOSED;
 	    } else
 	        NEXT;
 	} else {
             if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	        ctxt->sax->error(ctxt->userData, "Standalone value not found\n");
+	        ctxt->sax->error(ctxt->userData,
+		                 "Standalone value not found\n");
 	    ctxt->wellFormed = 0;
+	    ctxt->errno = XML_ERR_STRING_NOT_STARTED;
         }
     }
     return(standalone);
@@ -5544,6 +5761,7 @@
     if (!IS_BLANK(CUR)) {
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "Blank needed after '<?xml'\n");
+	ctxt->errno = XML_ERR_SPACE_REQUIRED;
 	ctxt->wellFormed = 0;
     }
     SKIP_BLANKS;
@@ -5567,6 +5785,7 @@
 	}
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "Blank needed here\n");
+	ctxt->errno = XML_ERR_SPACE_REQUIRED;
 	ctxt->wellFormed = 0;
     }
     ctxt->encoding = xmlParseEncodingDecl(ctxt);
@@ -5582,6 +5801,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "Blank needed here\n");
 	ctxt->wellFormed = 0;
+	ctxt->errno = XML_ERR_SPACE_REQUIRED;
     }
     SKIP_BLANKS;
     ctxt->standalone = xmlParseSDDecl(ctxt);
@@ -5592,13 +5812,17 @@
     } else if (CUR == '>') {
         /* Deprecated old WD ... */
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	    ctxt->sax->error(ctxt->userData, "XML declaration must end-up with '?>'\n");
+	    ctxt->sax->error(ctxt->userData, 
+	                     "XML declaration must end-up with '?>'\n");
 	ctxt->wellFormed = 0;
+	ctxt->errno = XML_ERR_XMLDECL_NOT_FINISHED;
 	NEXT;
     } else {
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
-	    ctxt->sax->error(ctxt->userData, "parsing XML declaration: '?>' expected\n");
+	    ctxt->sax->error(ctxt->userData,
+	                     "parsing XML declaration: '?>' expected\n");
 	ctxt->wellFormed = 0;
+	ctxt->errno = XML_ERR_XMLDECL_NOT_FINISHED;
 	MOVETO_ENDTAG(CUR_PTR);
 	NEXT;
     }
@@ -5667,6 +5891,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData,
 	    "Extra spaces at the beginning of the document are not allowed\n");
+	ctxt->errno = XML_ERR_DOCUMENT_START;
 	ctxt->wellFormed = 0;
 	SKIP_BLANKS;
     }
@@ -5674,6 +5899,7 @@
     if (CUR == 0) {
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "Document is empty\n");
+	ctxt->errno = XML_ERR_DOCUMENT_EMPTY;
 	ctxt->wellFormed = 0;
     }
 
@@ -5742,6 +5968,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	        "Extra content at the end of the document\n");
 	ctxt->wellFormed = 0;
+	ctxt->errno = XML_ERR_DOCUMENT_END;
     }
     ctxt->instate = XML_PARSER_EOF;
 
@@ -6384,6 +6611,7 @@
       if ( tmp_buffer == NULL ) {
         if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "Out of memory\n");
+	ctxt->errno = XML_ERR_NO_MEMORY;
         return;
       }
       ctxt->node_seq.buffer = tmp_buffer;
diff --git a/parser.h b/parser.h
index aab3553..06db141 100644
--- a/parser.h
+++ b/parser.h
@@ -105,25 +105,13 @@
     struct xmlSAXHandler *sax;        /* The SAX handler */
     void            *userData;        /* the document being built */
     xmlDocPtr           myDoc;        /* the document being built */
+    int            wellFormed;        /* is the document well formed */
     int       replaceEntities;        /* shall we replace entities ? */
     const CHAR       *version;        /* the XML version string */
     const CHAR      *encoding;        /* encoding, if any */
     int            standalone;        /* standalone document */
-    int     hasExternalSubset;        /* reference and external subset */
-    int             hasPErefs;        /* the internal subset has PE refs */
     int                  html;        /* are we parsing an HTML document */
-    int              external;        /* are we parsing an external entity */
 
-    int            wellFormed;        /* is the document well formed */
-    int                 valid;        /* is the document valid */
-    int              validate;        /* shall we try to validate ? */
-    xmlValidCtxt        vctxt;        /* The validity context */
-
-    xmlParserInputState instate;      /* current type of input */
-    int                 token;        /* next char look-ahead */    
-
-    char           *directory;        /* the data directory */
-    
     /* Input stream stack */
     xmlParserInputPtr  input;         /* Current input stream */
     int                inputNr;       /* Number of current input streams */
@@ -138,6 +126,21 @@
 
     int record_info;                  /* Whether node info should be kept */
     xmlParserNodeInfoSeq node_seq;    /* info about each node parsed */
+
+    int errno;                        /* error code */
+
+    int     hasExternalSubset;        /* reference and external subset */
+    int             hasPErefs;        /* the internal subset has PE refs */
+    int              external;        /* are we parsing an external entity */
+
+    int                 valid;        /* is the document valid */
+    int              validate;        /* shall we try to validate ? */
+    xmlValidCtxt        vctxt;        /* The validity context */
+
+    xmlParserInputState instate;      /* current type of input */
+    int                 token;        /* next char look-ahead */    
+
+    char           *directory;        /* the data directory */
 } _xmlParserCtxt;
 typedef _xmlParserCtxt xmlParserCtxt;
 typedef xmlParserCtxt *xmlParserCtxtPtr;
diff --git a/testHTML.c b/testHTML.c
index 2c6becc..cfb1517 100644
--- a/testHTML.c
+++ b/testHTML.c
@@ -10,9 +10,15 @@
 #define HAVE_FCNTL_H
 #include <io.h>
 #else
-#include <config.h>
+#include "config.h"
 #endif
+
+#include <stdio.h>
+#include <string.h>
+
+#ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
+#endif
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
 #endif
@@ -22,9 +28,9 @@
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
-#include <stdio.h>
-#include <string.h>
+#ifdef HAVE_STDLIB_H
 #include <stdlib.h>
+#endif
 
 #include "HTMLparser.h"
 #include "HTMLtree.h"
diff --git a/testSAX.c b/testSAX.c
index 7dcdcf4..76b3d5d 100644
--- a/testSAX.c
+++ b/testSAX.c
@@ -10,9 +10,16 @@
 #define HAVE_FCNTL_H
 #include <io.h>
 #else
-#include <config.h>
+#include "config.h"
 #endif
+
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+
+#ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
+#endif
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
 #endif
@@ -22,10 +29,10 @@
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
-#include <stdio.h>
-#include <string.h>
+#ifdef HAVE_STDLIB_H
 #include <stdlib.h>
-#include <stdarg.h>
+#endif
+
 
 #include "parser.h"
 #include "parserInternals.h" /* only for xmlNewInputFromFile() */
diff --git a/testXPath.c b/testXPath.c
index 5045396..21df3e7 100644
--- a/testXPath.c
+++ b/testXPath.c
@@ -10,9 +10,15 @@
 #define HAVE_FCNTL_H
 #include <io.h>
 #else
-#include <config.h>
+#include "config.h"
 #endif
+
+#include <stdio.h>
+#include <string.h>
+
+#ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
+#endif
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
 #endif
@@ -22,9 +28,10 @@
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
-#include <stdio.h>
-#include <string.h>
+#ifdef HAVE_STDLIB_H
 #include <stdlib.h>
+#endif
+
 
 #include "xpath.h"
 #include "tree.h"
diff --git a/tester.c b/tester.c
index a1e7c03..c795c81 100644
--- a/tester.c
+++ b/tester.c
@@ -10,9 +10,15 @@
 #define HAVE_FCNTL_H
 #include <io.h>
 #else
-#include <config.h>
+#include "config.h"
 #endif
+
+#include <stdio.h>
+#include <string.h>
+
+#ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
+#endif
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
 #endif
@@ -22,9 +28,9 @@
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
-#include <stdio.h>
-#include <string.h>
+#ifdef HAVE_STDLIB_H
 #include <stdlib.h>
+#endif
 
 #include "xmlmemory.h"
 #include "parser.h"
diff --git a/tree.c b/tree.c
index 006defe..c873898 100644
--- a/tree.c
+++ b/tree.c
@@ -6,12 +6,22 @@
  * Daniel.Veillard@w3.org
  */
 
+#ifdef WIN32
+#define HAVE_FCNTL_H
+#include <io.h>
+#else
 #include "config.h"
+#endif
+
 #include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
 #include <string.h> /* for memset() only ! */
 
+#ifdef HAVE_CTYPE_H
+#include <ctype.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
 #ifdef HAVE_ZLIB_H
 #include <zlib.h>
 #endif
diff --git a/valid.c b/valid.c
index a6466ff..2f4722a 100644
--- a/valid.c
+++ b/valid.c
@@ -7,9 +7,20 @@
  * Daniel.Veillard@w3.org
  */
 
+#ifdef WIN32
+#define HAVE_FCNTL_H
+#include <io.h>
+#else
+#include "config.h"
+#endif
+
 #include <stdio.h>
-#include <stdlib.h>
 #include <string.h>
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
 #include "xmlmemory.h"
 #include "valid.h"
 #include "parser.h"
diff --git a/xml-error.h b/xml-error.h
index 8697d52..4a46d80 100644
--- a/xml-error.h
+++ b/xml-error.h
@@ -1,8 +1,121 @@
-#ifndef error_h_
-#define error_h_
+#ifndef __XML_ERROR_H__
+#define __XML_ERROR_H__
 
 #include "parser.h"
 
+typedef enum {
+    XML_ERR_OK = 0,
+    XML_ERR_INTERNAL_ERROR,
+    XML_ERR_NO_MEMORY,
+    
+    XML_ERR_DOCUMENT_START,
+    XML_ERR_DOCUMENT_EMPTY,
+    XML_ERR_DOCUMENT_END,
+
+    XML_ERR_INVALID_HEX_CHARREF,
+    XML_ERR_INVALID_DEC_CHARREF,
+    XML_ERR_INVALID_CHARREF,
+    XML_ERR_INVALID_CHAR,
+
+    XML_ERR_CHARREF_AT_EOF,
+    XML_ERR_CHARREF_IN_PROLOG,
+    XML_ERR_CHARREF_IN_EPILOG,
+    XML_ERR_CHARREF_IN_DTD,
+    XML_ERR_ENTITYREF_AT_EOF,
+    XML_ERR_ENTITYREF_IN_PROLOG,
+    XML_ERR_ENTITYREF_IN_EPILOG,
+    XML_ERR_ENTITYREF_IN_DTD,
+    XML_ERR_PEREF_AT_EOF,
+    XML_ERR_PEREF_IN_PROLOG,
+    XML_ERR_PEREF_IN_EPILOG,
+    XML_ERR_PEREF_IN_INT_SUBSET,
+
+    XML_ERR_ENTITYREF_NO_NAME,
+    XML_ERR_ENTITYREF_SEMICOL_MISSING,
+
+    XML_ERR_PEREF_NO_NAME,
+    XML_ERR_PEREF_SEMICOL_MISSING,
+
+    XML_ERR_UNDECLARED_ENTITY,
+    XML_WAR_UNDECLARED_ENTITY,
+    XML_ERR_UNPARSED_ENTITY,
+    XML_ERR_ENTITY_IS_EXTERNAL,
+    XML_ERR_ENTITY_IS_PARAMETER,
+
+    XML_ERR_UNKNOWN_ENCODING,
+    XML_ERR_UNSUPPORTED_ENCODING,
+
+    XML_ERR_STRING_NOT_STARTED,
+    XML_ERR_STRING_NOT_CLOSED,
+    XML_ERR_NS_DECL_ERROR,
+
+    XML_ERR_ENTITY_NOT_STARTED,
+    XML_ERR_ENTITY_NOT_FINISHED,
+    
+    XML_ERR_LT_IN_ATTRIBUTE,
+    XML_ERR_ATTRIBUTE_NOT_STARTED,
+    XML_ERR_ATTRIBUTE_NOT_FINISHED,
+    XML_ERR_ATTRIBUTE_WITHOUT_VALUE,
+    XML_ERR_ATTRIBUTE_REDEFINED,
+
+    XML_ERR_LITERAL_NOT_STARTED,
+    XML_ERR_LITERAL_NOT_FINISHED,
+    
+    XML_ERR_COMMENT_NOT_FINISHED,
+
+    XML_ERR_PI_NOT_STARTED,
+    XML_ERR_PI_NOT_FINISHED,
+
+    XML_ERR_NOTATION_NOT_STARTED,
+    XML_ERR_NOTATION_NOT_FINISHED,
+
+    XML_ERR_ATTLIST_NOT_STARTED,
+    XML_ERR_ATTLIST_NOT_FINISHED,
+
+    XML_ERR_MIXED_NOT_STARTED,
+    XML_ERR_MIXED_NOT_FINISHED,
+
+    XML_ERR_ELEMCONTENT_NOT_STARTED,
+    XML_ERR_ELEMCONTENT_NOT_FINISHED,
+
+    XML_ERR_XMLDECL_NOT_STARTED,
+    XML_ERR_XMLDECL_NOT_FINISHED,
+
+    XML_ERR_CONDSEC_NOT_STARTED,
+    XML_ERR_CONDSEC_NOT_FINISHED,
+
+    XML_ERR_EXT_SUBSET_NOT_FINISHED,
+
+    XML_ERR_DOCTYPE_NOT_FINISHED,
+
+    XML_ERR_MISPLACED_CDATA_END,
+    XML_ERR_CDATA_NOT_FINISHED,
+
+    XML_ERR_RESERVED_XML_NAME,
+
+    XML_ERR_SPACE_REQUIRED,
+    XML_ERR_SEPARATOR_REQUIRED,
+    XML_ERR_NMTOKEN_REQUIRED,
+    XML_ERR_NAME_REQUIRED,
+    XML_ERR_PCDATA_REQUIRED,
+    XML_ERR_URI_REQUIRED,
+    XML_ERR_PUBID_REQUIRED,
+    XML_ERR_LT_REQUIRED,
+    XML_ERR_GT_REQUIRED,
+    XML_ERR_LTSLASH_REQUIRED,
+    XML_ERR_EQUAL_REQUIRED,
+
+    XML_ERR_TAG_NAME_MISMATCH,
+    XML_ERR_TAG_NOT_FINISED,
+
+    XML_ERR_STANDALONE_VALUE,
+
+    XML_ERR_ENCODING_NAME,
+
+    XML_ERR_HYPHEN_IN_COMMENT
+
+}xmlParserErrors;
+
 void	xmlParserError		(void *ctx,
 				 const char *msg,
 				 ...);
@@ -17,4 +130,5 @@
 				 ...);
 void	xmlParserPrintFileInfo	(xmlParserInputPtr input);
 void	xmlParserPrintFileContext(xmlParserInputPtr input);
-#endif
+
+#endif /* __XML_ERROR_H__ */
diff --git a/xmlIO.c b/xmlIO.c
index 8e06538..8d3d8be 100644
--- a/xmlIO.c
+++ b/xmlIO.c
@@ -6,22 +6,39 @@
  * Daniel.Veillard@w3.org
  */
 
+#ifdef WIN32
+#define HAVE_FCNTL_H
+#include <io.h>
+#else
 #include "config.h"
+#endif
 
+#include <stdio.h>
+#include <string.h>
+
+#ifdef HAVE_SYS_TYPES_H
 #include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
+#endif
+#ifdef HAVE_FCNTL_H
 #include <fcntl.h>
+#endif
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
 #ifdef HAVE_ZLIB_H
 #include <zlib.h>
 #endif
-#include <string.h>
 
 #include "xmlmemory.h"
 #include "parser.h"
 #include "xmlIO.h"
+#include "nanohttp.h"
 
 /* #define DEBUG_INPUT */
 /* #define VERBOSE_FAILURE */
@@ -54,6 +71,7 @@
     ret->buffer = xmlBufferCreate();
     ret->encoder = xmlGetCharEncodingHandler(enc);
     ret->fd = -1;
+    ret->netIO = NULL;
 
     return(ret);
 }
@@ -74,6 +92,8 @@
     if (in->gzfile != NULL)
         gzclose(in->gzfile);
 #endif
+    if (in->netIO != NULL)
+        xmlNanoHTTPClose(in->netIO);
     if (in->fd >= 0)
         close(in->fd);
     memset(in, 0xbe, (size_t) sizeof(xmlParserInputBuffer));
@@ -96,14 +116,24 @@
 xmlParserInputBufferCreateFilename(const char *filename, xmlCharEncoding enc) {
     xmlParserInputBufferPtr ret;
 #ifdef HAVE_ZLIB_H
-    gzFile input;
+    gzFile input = 0;
 #else
     int input = -1;
 #endif
+    void *netIO = NULL;
 
     if (filename == NULL) return(NULL);
 
-    if (!strcmp(filename, "-")) {
+    if (!strncmp(filename, "http://", 7)) {
+        netIO = xmlNanoHTTPOpen(filename, NULL);
+        if (netIO == NULL) {
+#ifdef VERBOSE_FAILURE
+            fprintf (stderr, "Cannot read URL %s\n", filename);
+            perror ("xmlNanoHTTPOpen failed");
+#endif
+            return(NULL);
+	}
+    } else if (!strcmp(filename, "-")) {
 #ifdef HAVE_ZLIB_H
         input = gzdopen (fileno(stdin), "r");
         if (input == NULL) {
@@ -166,6 +196,7 @@
 #else
         ret->fd = input;
 #endif
+        ret->netIO = netIO;
     }
     xmlParserInputBufferRead(ret, 4);
 
@@ -255,7 +286,9 @@
         fprintf(stderr, "xmlParserInputBufferGrow : out of memory !\n");
 	return(-1);
     }
-    if (in->file != NULL) {
+    if (in->netIO != NULL) {
+        res = xmlNanoHTTPRead(in->netIO, &buffer[0], len);
+    } else if (in->file != NULL) {
 	res = fread(&buffer[0], 1, len, in->file);
 #ifdef HAVE_ZLIB_H
     } else if (in->gzfile != NULL) {
diff --git a/xmlIO.h b/xmlIO.h
index 01bf14c..a99ab23 100644
--- a/xmlIO.h
+++ b/xmlIO.h
@@ -23,6 +23,7 @@
     FILE          *file;    /* Input on file handler */
     void*        gzfile;    /* Input on a compressed stream */
     int              fd;    /* Input on a file descriptor */
+    void         *netIO;    /* Input from a network stream */
     
     xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
     
diff --git a/xmlmemory.c b/xmlmemory.c
index e3341da..5e304f4 100644
--- a/xmlmemory.c
+++ b/xmlmemory.c
@@ -4,10 +4,26 @@
  * Daniel.Veillard@w3.org
  */
 
-#include <sys/types.h>
-#include <string.h>
+#ifdef WIN32
+#define HAVE_FCNTL_H
+#include <io.h>
+#else
+#include "config.h"
+#endif
+
 #include <stdio.h>
+#include <string.h>
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_TIME_H
+#include <time.h>
+#endif
+#ifdef HAVE_MALLOC_H
 #include <malloc.h>
+#endif
+
 #include "xmlmemory.h"
 
 #ifndef NO_DEBUG_MEMORY
@@ -103,8 +119,8 @@
     p = (MEMHDR *) malloc(RESERVE_SIZE+size);
 
     if (!p) {
-       fprintf(stderr, "xmlMalloc : Out of free space\n");
-       xmlMemoryDump();
+     fprintf(stderr, "xmlMalloc : Out of free space\n");
+     xmlMemoryDump();
     }   
     p->mh_tag = MEMTAG;
     p->mh_number = ++block;
@@ -165,7 +181,7 @@
     p = CLIENT_2_HDR(ptr);
     number = p->mh_number;
     if (p->mh_tag != MEMTAG) {
-         Mem_Tag_Err(p);
+       Mem_Tag_Err(p);
 	 goto error;
     }
     p->mh_tag = ~MEMTAG;
@@ -231,8 +247,8 @@
 
     p = CLIENT_2_HDR(ptr);
     if (p->mh_tag != MEMTAG) {
-         Mem_Tag_Err(p);
-         goto error;
+       Mem_Tag_Err(p);
+       goto error;
     }
     p->mh_tag = ~MEMTAG;
     debugMemSize -= p->mh_size;
@@ -273,7 +289,7 @@
 
     p = (MEMHDR *) malloc(RESERVE_SIZE+size);
     if (!p) {
-        goto error;
+      goto error;
     }
     p->mh_tag = MEMTAG;
     p->mh_number = ++block;
@@ -288,9 +304,9 @@
     s = HDR_2_CLIENT(p);
     
     if (s != NULL)
-        strcpy(s,str);
+      strcpy(s,str);
     else
-        goto error;
+      goto error;
     
     TEST_POINT
 
@@ -339,29 +355,40 @@
 xmlMemDisplay(FILE *fp)
 {
 #ifdef MEM_LIST
-      MEMHDR *p;
-      int     idx;
+    MEMHDR *p;
+    int     idx;
+#if defined(HAVE_LOCALTIME) && defined(HAVE_STRFTIME)
+    time_t currentTime;
+    char buf[500];
+    struct tm * tstruct;
+
+    currentTime = time(NULL);
+    tstruct = localtime(&currentTime);
+    strftime(buf, sizeof(buf) - 1, "%c", tstruct);
+    fprintf(fp,"      %s\n\n", buf);
+#endif
+
     
-      fprintf(fp,"      MEMORY ALLOCATED : %lu\n",debugMemSize);
-      fprintf(fp,"BLOCK  NUMBER   SIZE  TYPE\n");
-      idx = 0;
-      p = memlist;
-      while (p) {
+    fprintf(fp,"      MEMORY ALLOCATED : %lu\n",debugMemSize);
+    fprintf(fp,"BLOCK  NUMBER   SIZE  TYPE\n");
+    idx = 0;
+    p = memlist;
+    while (p) {
 	  fprintf(fp,"%-5u  %6lu %6u ",idx++,p->mh_number,p->mh_size);
-          switch (p->mh_type) {
-             case STRDUP_TYPE:fprintf(fp,"strdup()  in ");break;
-             case MALLOC_TYPE:fprintf(fp,"malloc()  in ");break;
-            case REALLOC_TYPE:fprintf(fp,"realloc() in ");break;
-                      default:fprintf(fp,"   ???    in ");break;
-          }
+        switch (p->mh_type) {
+           case STRDUP_TYPE:fprintf(fp,"strdup()  in ");break;
+           case MALLOC_TYPE:fprintf(fp,"malloc()  in ");break;
+          case REALLOC_TYPE:fprintf(fp,"realloc() in ");break;
+                    default:fprintf(fp,"   ???    in ");break;
+        }
 	  if (p->mh_file != NULL) fprintf(fp,"%s(%d)", p->mh_file, p->mh_line);
-          if (p->mh_tag != MEMTAG)
+        if (p->mh_tag != MEMTAG)
 	      fprintf(fp,"  INVALID");
-          fprintf(fp,"\n");
-          p = p->mh_next;
-      }
+        fprintf(fp,"\n");
+        p = p->mh_next;
+    }
 #else
-      fprintf(fp,"Memory list not compiled (MEM_LIST not defined !)\n");
+    fprintf(fp,"Memory list not compiled (MEM_LIST not defined !)\n");
 #endif
 }
 
@@ -369,26 +396,26 @@
 
 void debugmem_list_add(MEMHDR *p)
 {
-       p->mh_next = memlist;
-       p->mh_prev = NULL;
-       if (memlist) memlist->mh_prev = p;
-       memlist = p;
+     p->mh_next = memlist;
+     p->mh_prev = NULL;
+     if (memlist) memlist->mh_prev = p;
+     memlist = p;
 #ifdef MEM_LIST_DEBUG
-       if (stderr)
-       Mem_Display(stderr);
+     if (stderr)
+     Mem_Display(stderr);
 #endif
 }
 
 void debugmem_list_delete(MEMHDR *p)
 {
-       if (p->mh_next)
-       p->mh_next->mh_prev = p->mh_prev;
-       if (p->mh_prev)
-       p->mh_prev->mh_next = p->mh_next;
-       else memlist = p->mh_next;
+     if (p->mh_next)
+     p->mh_next->mh_prev = p->mh_prev;
+     if (p->mh_prev)
+     p->mh_prev->mh_next = p->mh_next;
+     else memlist = p->mh_next;
 #ifdef MEM_LIST_DEBUG
-       if (stderr)
-       Mem_Display(stderr);
+     if (stderr)
+     Mem_Display(stderr);
 #endif
 }
 
@@ -400,10 +427,10 @@
  
 void debugmem_tag_error(void *p)
 {
-       fprintf(stderr, "Memory tag error occurs :%p \n\t bye\n", p);
+     fprintf(stderr, "Memory tag error occurs :%p \n\t bye\n", p);
 #ifdef MEM_LIST
-       if (stderr)
-       xmlMemDisplay(stderr);
+     if (stderr)
+     xmlMemDisplay(stderr);
 #endif
 }
 
diff --git a/xmlmemory.h b/xmlmemory.h
index d28b526..78ff392 100644
--- a/xmlmemory.h
+++ b/xmlmemory.h
@@ -8,7 +8,7 @@
 #ifndef _DEBUG_MEMORY_ALLOC_
 #define _DEBUG_MEMORY_ALLOC_
 
-#define NO_DEBUG_MEMORY
+/* #define NO_DEBUG_MEMORY */
 
 #ifdef NO_DEBUG_MEMORY
 #ifdef HAVE_MALLOC_H
diff --git a/xpath.c b/xpath.c
index a0f6a2a..94c7f5a 100644
--- a/xpath.c
+++ b/xpath.c
@@ -13,7 +13,19 @@
  * Author: Daniel.Veillard@w3.org
  */
 
-#include <config.h>
+#ifdef WIN32
+#define HAVE_FCNTL_H
+#include <io.h>
+#else
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <string.h>
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
 #ifdef HAVE_MATH_H
 #include <math.h>
 #endif
@@ -26,8 +38,10 @@
 #ifdef HAVE_NAN_H
 #include <nan.h>
 #endif
-#include <stdio.h>
+#ifdef HAVE_CTYPE_H
 #include <ctype.h>
+#endif
+
 #include "xmlmemory.h"
 #include "tree.h"
 #include "valid.h"