preparing release 2.4.27 updated and rebuilt the docs try to make sure the

* configure.in: preparing release 2.4.27
* doc/* : updated and rebuilt the docs
* doc/Makefile.am libxml.spec.in: try to make sure the tutorial
  and all the docs are actually packaged and in the final RPMs
* parser.c parserInternals.c include/libxml/parser.h: restore
  xmllint --recover feature.
Daniel
diff --git a/ChangeLog b/ChangeLog
index c4f090d..c583338 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Sun Nov 17 10:25:43 CET 2002 Daniel Veillard <daniel@veillard.com>
+
+	* configure.in: preparing release 2.4.27
+	* doc/* : updated and rebuilt the docs
+	* doc/Makefile.am libxml.spec.in: try to make sure the tutorial
+	  and all the docs are actually packaged and in the final RPMs
+	* parser.c parserInternals.c include/libxml/parser.h: restore
+	  xmllint --recover feature.
+
 Sat Nov 16 16:30:25 CET 2002 Daniel Veillard <daniel@veillard.com>
 
 	* parser.c xpath.c: fixing #96925 wich was also dependant on the
diff --git a/DOCBparser.c b/DOCBparser.c
index 33f5255..6f38151 100644
--- a/DOCBparser.c
+++ b/DOCBparser.c
@@ -312,7 +312,7 @@
                    ctxt->sax->error(ctxt->userData, 
                                     "Char 0x%X out of allowed range\n", val);
                ctxt->wellFormed = 0;
-               ctxt->disableSAX = 1;
+               if (ctxt->recovery == 0) ctxt->disableSAX = 1;
            }    
            return(val);
        } else {
@@ -2520,14 +2520,14 @@
 	    ctxt->sax->error(ctxt->userData,
 		"chunk is not well balanced\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     } else if (RAW != 0) {
 	ctxt->errNo = XML_ERR_EXTRA_CONTENT;
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData,
 		"extra content at the end of well balanced chunk\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
     if (ctxt->node != newDoc->children) {
 	ctxt->errNo = XML_ERR_NOT_WELL_BALANCED;
@@ -2535,7 +2535,7 @@
 	    ctxt->sax->error(ctxt->userData,
 		"chunk is not well balanced\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
 
     if (!ctxt->wellFormed) {
@@ -3161,7 +3161,7 @@
 			ctxt->sax->error(ctxt->userData, 
     "PI declaration doesn't start and stop in the same entity\n");
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		}
 		SKIP(2);
 
@@ -3210,7 +3210,7 @@
 			ctxt->sax->error(ctxt->userData,
 			  "docbParsePI: PI %s space expected\n", target);
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		}
 		SKIP_BLANKS;
 	    }
@@ -3248,7 +3248,7 @@
 		    ctxt->sax->error(ctxt->userData,
 		      "docbParsePI: PI %s never end ...\n", target);
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    } else {
 		if (input != ctxt->input) {
 		    ctxt->errNo = XML_ERR_ENTITY_BOUNDARY;
@@ -3256,7 +3256,7 @@
 			ctxt->sax->error(ctxt->userData, 
     "PI declaration doesn't start and stop in the same entity\n");
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		}
 		SKIP(2);
 
@@ -3276,7 +3276,7 @@
 	        ctxt->sax->error(ctxt->userData,
 		       "docbParsePI : no target name\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	}
 	ctxt->instate = state;
     }
@@ -3616,7 +3616,7 @@
                     "Unsupported encoding %s\n", encoding);
            /* xmlFree(encoding); */
            ctxt->wellFormed = 0;
-           ctxt->disableSAX = 1;
+           if (ctxt->recovery == 0) ctxt->disableSAX = 1;
            ctxt->errNo = XML_ERR_UNSUPPORTED_ENCODING;
        }
     }
@@ -4392,7 +4392,7 @@
                ctxt->sax->error(ctxt->userData,
                                 "Space required after '<!ENTITY'\n");
            ctxt->wellFormed = 0;
-           ctxt->disableSAX = 1;
+           if (ctxt->recovery == 0) ctxt->disableSAX = 1;
        }
        SKIP_BLANKS;
 
@@ -4404,7 +4404,7 @@
                    ctxt->sax->error(ctxt->userData,
                                     "Space required after '%'\n");
                ctxt->wellFormed = 0;
-               ctxt->disableSAX = 1;
+               if (ctxt->recovery == 0) ctxt->disableSAX = 1;
            }
            SKIP_BLANKS;
            isParameter = 1;
@@ -4416,7 +4416,7 @@
            if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
                ctxt->sax->error(ctxt->userData, "sgmlarseEntityDecl: no name\n");
            ctxt->wellFormed = 0;
-           ctxt->disableSAX = 1;
+           if (ctxt->recovery == 0) ctxt->disableSAX = 1;
             return;
        }
        if (!IS_BLANK(CUR)) {
@@ -4425,7 +4425,7 @@
                ctxt->sax->error(ctxt->userData,
                     "Space required after the entity name\n");
            ctxt->wellFormed = 0;
-           ctxt->disableSAX = 1;
+           if (ctxt->recovery == 0) ctxt->disableSAX = 1;
        }
         SKIP_BLANKS;
 
@@ -4450,7 +4450,7 @@
                        ctxt->sax->error(ctxt->userData,
                            "Entity value required\n");
                    ctxt->wellFormed = 0;
-                   ctxt->disableSAX = 1;
+                   if (ctxt->recovery == 0) ctxt->disableSAX = 1;
                }
                if (URI) {
                    xmlURIPtr uri;
@@ -4501,7 +4501,7 @@
                        ctxt->sax->error(ctxt->userData,
                            "Entity value required\n");
                    ctxt->wellFormed = 0;
-                   ctxt->disableSAX = 1;
+                   if (ctxt->recovery == 0) ctxt->disableSAX = 1;
                }
                if (URI) {
                    xmlURIPtr uri;
@@ -4534,7 +4534,7 @@
                        ctxt->sax->error(ctxt->userData,
                            "Space required before content model\n");
                    ctxt->wellFormed = 0;
-                   ctxt->disableSAX = 1;
+                   if (ctxt->recovery == 0) ctxt->disableSAX = 1;
                }
                SKIP_BLANKS;
 
@@ -4552,7 +4552,7 @@
                            ctxt->sax->error(ctxt->userData,
                                "Could not parse entity content model\n");
                        ctxt->wellFormed = 0;
-                       ctxt->disableSAX = 1;
+                       if (ctxt->recovery == 0) ctxt->disableSAX = 1;
                    } else {
                        if (xmlStrEqual(contmod, BAD_CAST"NDATA")) {
                            if (!IS_BLANK(CUR)) {
@@ -4562,7 +4562,7 @@
                                    ctxt->sax->error(ctxt->userData,
                                        "Space required after 'NDATA'\n");
                                ctxt->wellFormed = 0;
-                               ctxt->disableSAX = 1;
+                               if (ctxt->recovery == 0) ctxt->disableSAX = 1;
                            }
                            SKIP_BLANKS;
                            ndata = xmlParseName(ctxt);
@@ -4614,7 +4614,7 @@
                ctxt->sax->error(ctxt->userData, 
                    "docbParseEntityDecl: entity %s not terminated\n", name);
            ctxt->wellFormed = 0;
-           ctxt->disableSAX = 1;
+           if (ctxt->recovery == 0) ctxt->disableSAX = 1;
        } else {
            if (input != ctxt->input) {
                ctxt->errNo = XML_ERR_ENTITY_BOUNDARY;
@@ -4622,7 +4622,7 @@
                    ctxt->sax->error(ctxt->userData, 
 "Entity declaration doesn't start and stop in the same entity\n");
                ctxt->wellFormed = 0;
-               ctxt->disableSAX = 1;
+               if (ctxt->recovery == 0) ctxt->disableSAX = 1;
            }
            NEXT;
        }
@@ -4726,7 +4726,7 @@
                    ctxt->sax->error(ctxt->userData, 
             "docbParseInternalSubset: error detected in Markup declaration\n");
                ctxt->wellFormed = 0;
-               ctxt->disableSAX = 1;
+               if (ctxt->recovery == 0) ctxt->disableSAX = 1;
                break;
            }
        }
@@ -4744,7 +4744,7 @@
        if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
            ctxt->sax->error(ctxt->userData, "DOCTYPE improperly terminated\n");
        ctxt->wellFormed = 0;
-       ctxt->disableSAX = 1;
+       if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
     NEXT;
 }
diff --git a/HTMLparser.c b/HTMLparser.c
index 4610987..34f15ab 100644
--- a/HTMLparser.c
+++ b/HTMLparser.c
@@ -259,7 +259,7 @@
 		    ctxt->sax->error(ctxt->userData, 
 				     "Char 0x%X out of allowed range\n", val);
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    }    
 	    return(val);
 	} else {
diff --git a/configure.in b/configure.in
index 1ff3a43..c1ef05d 100644
--- a/configure.in
+++ b/configure.in
@@ -6,7 +6,7 @@
 
 LIBXML_MAJOR_VERSION=2
 LIBXML_MINOR_VERSION=4
-LIBXML_MICRO_VERSION=26
+LIBXML_MICRO_VERSION=27
 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
 
diff --git a/doc/APIchunk0.html b/doc/APIchunk0.html
index 4ee1668..a0247b1 100644
--- a/doc/APIchunk0.html
+++ b/doc/APIchunk0.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
@@ -274,10 +279,12 @@
 <a href="html/libxml-valid.html#XMLVALIDATEATTRIBUTEDECL">xmlValidateAttributeDecl</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEELEMENT">xmlValidateOneElement</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 </dd>
 <dt>Attributes</dt>
 <dd>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 <a href="html/libxml-xpointer.html#XMLXPTRBUILDNODELIST">xmlXPtrBuildNodeList</a>
 </dd>
 <dt>Automatic</dt>
diff --git a/doc/APIchunk1.html b/doc/APIchunk1.html
index c8d1149..976dbf4 100644
--- a/doc/APIchunk1.html
+++ b/doc/APIchunk1.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
@@ -206,6 +211,7 @@
 <a href="html/libxml-parserinternals.html#XMLHANDLEENTITY">xmlHandleEntity</a>
 <a href="html/libxml-valid.html#XMLVALIDATEATTRIBUTEDECL">xmlValidateAttributeDecl</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 </dd>
 <dt>Deletes</dt>
 <dd>
@@ -484,6 +490,7 @@
 <a href="html/libxml-tree.html#XMLNODEGETBASE">xmlNodeGetBase</a>
 <a href="html/libxml-tree.html#XMLNODEGETCONTENT">xmlNodeGetContent</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 </dd>
 <dt>EntityValue</dt>
 <dd>
diff --git a/doc/APIchunk10.html b/doc/APIchunk10.html
index adebf68..3a2d5e3 100644
--- a/doc/APIchunk10.html
+++ b/doc/APIchunk10.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
diff --git a/doc/APIchunk11.html b/doc/APIchunk11.html
index 8b61314..f59f0fe 100644
--- a/doc/APIchunk11.html
+++ b/doc/APIchunk11.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
@@ -248,6 +253,7 @@
 </dd>
 <dt>files</dt>
 <dd>
+<a href="html/libxml-catalog.html#XMLLOADCATALOGS">xmlLoadCatalogs</a>
 <a href="html/libxml-nanoftp.html#XMLNANOFTPLIST">xmlNanoFTPList</a>
 </dd>
 <dt>filled</dt>
diff --git a/doc/APIchunk12.html b/doc/APIchunk12.html
index ad2398e..eb8ff46 100644
--- a/doc/APIchunk12.html
+++ b/doc/APIchunk12.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
@@ -373,7 +378,6 @@
 </dd>
 <dt>heuristic:</dt>
 <dd>
-<a href="html/libxml-valid.html#XMLISID">xmlIsID</a>
 <a href="html/libxml-valid.html#XMLISREF">xmlIsRef</a>
 </dd>
 <dt>hex</dt>
@@ -913,6 +917,7 @@
 <a href="html/libxml-valid.html#XMLVALIDATENOTATIONDECL">xmlValidateNotationDecl</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEELEMENT">xmlValidateOneElement</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 <a href="html/libxml-valid.html#XMLVALIDATEROOT">xmlValidateRoot</a>
 </dd>
 <dt>instances</dt>
diff --git a/doc/APIchunk13.html b/doc/APIchunk13.html
index fc9e903..6536a81 100644
--- a/doc/APIchunk13.html
+++ b/doc/APIchunk13.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
@@ -469,6 +474,7 @@
 <dd>
 <a href="html/libxml-sax.html#RESOLVEENTITY">resolveEntity</a>
 <a href="html/libxml-parser.html#RESOLVEENTITYSAXFUNC">resolveEntitySAXFunc</a>
+<a href="html/libxml-valid.html#XMLISID">xmlIsID</a>
 <a href="html/libxml-debugxml.html#XMLSHELLLOAD">xmlShellLoad</a>
 </dd>
 <dt>loads</dt>
@@ -569,7 +575,6 @@
 <dt>lowercase</dt>
 <dd>
 <a href="html/libxml-htmlparser.html#HTMLTAGLOOKUP">htmlTagLookup</a>
-<a href="html/libxml-valid.html#XMLISID">xmlIsID</a>
 <a href="html/libxml-valid.html#XMLISREF">xmlIsRef</a>
 </dd>
 <dt>luckily</dt>
diff --git a/doc/APIchunk14.html b/doc/APIchunk14.html
index edd5acb..c382908 100644
--- a/doc/APIchunk14.html
+++ b/doc/APIchunk14.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
diff --git a/doc/APIchunk15.html b/doc/APIchunk15.html
index d4edca3..76eac08 100644
--- a/doc/APIchunk15.html
+++ b/doc/APIchunk15.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
diff --git a/doc/APIchunk16.html b/doc/APIchunk16.html
index 15096aa..d6ea7d6 100644
--- a/doc/APIchunk16.html
+++ b/doc/APIchunk16.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
@@ -217,10 +222,10 @@
 </dd>
 <dt>path</dt>
 <dd>
+<a href="html/libxml-xmlio.html#XMLCHECKFILENAME">xmlCheckFilename</a>
 <a href="html/libxml-tree.html#XMLGETNODEPATH">xmlGetNodePath</a>
 <a href="html/libxml-catalog.html#XMLLOADACATALOG">xmlLoadACatalog</a>
 <a href="html/libxml-catalog.html#XMLLOADCATALOG">xmlLoadCatalog</a>
-<a href="html/libxml-catalog.html#XMLLOADCATALOGS">xmlLoadCatalogs</a>
 <a href="html/libxml-catalog.html#XMLLOADSGMLSUPERCATALOG">xmlLoadSGMLSuperCatalog</a>
 <a href="html/libxml-nanoftp.html#XMLNANOFTPGETSOCKET">xmlNanoFTPGetSocket</a>
 <a href="html/libxml-nanoftp.html#XMLNANOFTPUPDATEURL">xmlNanoFTPUpdateURL</a>
@@ -624,6 +629,7 @@
 <a href="html/libxml-parser.html#XMLSTOPPARSER">xmlStopParser</a>
 <a href="html/libxml-uri.html#XMLURI">xmlURI</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 <a href="html/libxml-xinclude.html#XMLXINCLUDEPROCESS">xmlXIncludeProcess</a>
 </dd>
 <dt>processor</dt>
diff --git a/doc/APIchunk17.html b/doc/APIchunk17.html
index 47710e8..f4979d1 100644
--- a/doc/APIchunk17.html
+++ b/doc/APIchunk17.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
@@ -274,6 +279,7 @@
 <a href="html/libxml-valid.html#XMLVALIDATENOTATIONDECL">xmlValidateNotationDecl</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEELEMENT">xmlValidateOneElement</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 <a href="html/libxml-valid.html#XMLVALIDATEROOT">xmlValidateRoot</a>
 </dd>
 <dt>recomputed</dt>
@@ -605,6 +611,7 @@
 <dt>requested</dt>
 <dd>
 <a href="html/libxml-parser.html#XMLEXTERNALENTITYLOADER">xmlExternalEntityLoader</a>
+<a href="html/libxml-valid.html#XMLISID">xmlIsID</a>
 <a href="html/libxml-xmlmemory.html#XMLMALLOCFUNC">xmlMallocFunc</a>
 <a href="html/libxml-xmlmemory.html#XMLREALLOCFUNC">xmlReallocFunc</a>
 </dd>
diff --git a/doc/APIchunk18.html b/doc/APIchunk18.html
index ee4e76c..00de49d 100644
--- a/doc/APIchunk18.html
+++ b/doc/APIchunk18.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
@@ -283,6 +288,7 @@
 <a href="html/libxml-c14n.html#XMLC14NDOCSAVE">xmlC14NDocSave</a>
 <a href="html/libxml-c14n.html#XMLC14NDOCSAVETO">xmlC14NDocSaveTo</a>
 <a href="html/libxml-c14n.html#XMLC14NEXECUTE">xmlC14NExecute</a>
+<a href="html/libxml-xmlio.html#XMLCHECKFILENAME">xmlCheckFilename</a>
 <a href="html/libxml-parserinternals.html#XMLISBASECHAR">xmlIsBaseChar</a>
 <a href="html/libxml-parserinternals.html#XMLISCOMBINING">xmlIsCombining</a>
 <a href="html/libxml-parserinternals.html#XMLISDIGIT">xmlIsDigit</a>
@@ -310,7 +316,6 @@
 </dd>
 <dt>separated</dt>
 <dd>
-<a href="html/libxml-catalog.html#XMLLOADCATALOGS">xmlLoadCatalogs</a>
 <a href="html/libxml-uri.html#XMLURI">xmlURI</a>
 </dd>
 <dt>sequence</dt>
@@ -502,7 +507,6 @@
 <dd>
 <a href="html/libxml-threads.html#XMLFREEMUTEX">xmlFreeMutex</a>
 <a href="html/libxml-hash.html#XMLHASHSCANNER">xmlHashScanner</a>
-<a href="html/libxml-valid.html#XMLISID">xmlIsID</a>
 <a href="html/libxml-valid.html#XMLISREF">xmlIsRef</a>
 <a href="html/libxml-threads.html#XMLMUTEXLOCK">xmlMutexLock</a>
 <a href="html/libxml-threads.html#XMLMUTEXUNLOCK">xmlMutexUnlock</a>
@@ -525,6 +529,7 @@
 <a href="html/libxml-valid.html#XMLVALIDATENOTATIONDECL">xmlValidateNotationDecl</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEELEMENT">xmlValidateOneElement</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 <a href="html/libxml-xpathinternals.html#XMLXPATHNEWNODESET">xmlXPathNewNodeSet</a>
 <a href="html/libxml-xpathinternals.html#XMLXPATHNORMALIZEFUNCTION">xmlXPathNormalizeFunction</a>
 <a href="html/libxml-xpointer.html#XMLXPTRNEWCOLLAPSEDRANGE">xmlXPtrNewCollapsedRange</a>
@@ -555,6 +560,7 @@
 </dd>
 <dt>socket</dt>
 <dd>
+<a href="html/libxml-xmlio.html#XMLCHECKFILENAME">xmlCheckFilename</a>
 <a href="html/libxml-nanoftp.html#XMLNANOFTPGETSOCKET">xmlNanoFTPGetSocket</a>
 </dd>
 <dt>software</dt>
@@ -590,6 +596,7 @@
 <dt>source</dt>
 <dd>
 <a href="html/libxml-htmltree.html#HTMLGETMETAENCODING">htmlGetMetaEncoding</a>
+<a href="html/libxml-xmlio.html#XMLCHECKFILENAME">xmlCheckFilename</a>
 </dd>
 <dt>sourceforge</dt>
 <dd>
@@ -606,6 +613,10 @@
 <a href="html/libxml-parserinternals.html#XMLSKIPBLANKCHARS">xmlSkipBlankChars</a>
 <a href="html/libxml-xpathinternals.html#XMLXPATHNORMALIZEFUNCTION">xmlXPathNormalizeFunction</a>
 </dd>
+<dt>space-separated</dt>
+<dd>
+<a href="html/libxml-catalog.html#XMLLOADCATALOGS">xmlLoadCatalogs</a>
+</dd>
 <dt>spaces</dt>
 <dd>
 <a href="html/libxml-htmltree.html#HTMLDOCCONTENTDUMPFORMATOUTPUT">htmlDocContentDumpFormatOutput</a>
@@ -618,7 +629,6 @@
 <a href="html/libxml-tree.html#XMLDOCDUMPFORMATMEMORYENC">xmlDocDumpFormatMemoryEnc</a>
 <a href="html/libxml-tree.html#XMLDOCFORMATDUMP">xmlDocFormatDump</a>
 <a href="html/libxml-parser.html#XMLKEEPBLANKSDEFAULT">xmlKeepBlanksDefault</a>
-<a href="html/libxml-catalog.html#XMLLOADCATALOGS">xmlLoadCatalogs</a>
 <a href="html/libxml-parserinternals.html#XMLPARSEELEMENTCHILDRENCONTENTDECL">xmlParseElementChildrenContentDecl</a>
 <a href="html/libxml-parserinternals.html#XMLPARSEELEMENTMIXEDCONTENTDECL">xmlParseElementMixedContentDecl</a>
 <a href="html/libxml-tree.html#XMLSAVEFORMATFILE">xmlSaveFormatFile</a>
@@ -785,8 +795,7 @@
 <a href="html/libxml-xmlio.html#XMLOUTPUTBUFFERCREATEFILENAME">xmlOutputBufferCreateFilename</a>
 <a href="html/libxml-tree.html#XMLSAVEFILE">xmlSaveFile</a>
 <a href="html/libxml-tree.html#XMLSAVEFORMATFILE">xmlSaveFormatFile</a>
-<a href="html/libxml-debugxml.html#XMLSHELLPRINTNODE">xmlShellPrintNode</a>
-<a href="html/libxml-debugxml.html#XMLSHELLPRINTXPATHRESULT">xmlShellPrintXPathResult</a>
+<a href="html/libxml-debugxml.html#XMLSHELL">xmlShell</a>
 </dd>
 <dt>steam</dt>
 <dd>
@@ -1196,6 +1205,10 @@
 <dd>
 <a href="html/libxml-threads.html#XMLMUTEXPTR">xmlMutexPtr</a>
 </dd>
+<dt>systematically</dt>
+<dd>
+<a href="html/libxml-valid.html#XMLISID">xmlIsID</a>
+</dd>
 </dl>
 <h2 align="center">
 <a href="APIchunk0.html">A-C</a>
diff --git a/doc/APIchunk19.html b/doc/APIchunk19.html
index 287cc24..6bb39d6 100644
--- a/doc/APIchunk19.html
+++ b/doc/APIchunk19.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
diff --git a/doc/APIchunk2.html b/doc/APIchunk2.html
index f5dd471..3cefab8 100644
--- a/doc/APIchunk2.html
+++ b/doc/APIchunk2.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
@@ -176,6 +181,7 @@
 <dt>Fixed</dt>
 <dd>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 </dd>
 <dt>Float</dt>
 <dd>
@@ -427,6 +433,7 @@
 <dd>
 <a href="html/libxml-tree.html#XMLREF">xmlRef</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 </dd>
 <dt>IDs</dt>
 <dd>
diff --git a/doc/APIchunk20.html b/doc/APIchunk20.html
index dbe2769..dbecbd1 100644
--- a/doc/APIchunk20.html
+++ b/doc/APIchunk20.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
@@ -267,7 +272,6 @@
 </dd>
 <dt>upper</dt>
 <dd>
-<a href="html/libxml-valid.html#XMLISID">xmlIsID</a>
 <a href="html/libxml-valid.html#XMLISREF">xmlIsRef</a>
 </dd>
 <dt>uri</dt>
@@ -365,6 +369,7 @@
 <a href="html/libxml-valid.html#XMLVALIDATENOTATIONDECL">xmlValidateNotationDecl</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEELEMENT">xmlValidateOneElement</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 <a href="html/libxml-valid.html#XMLVALIDATEROOT">xmlValidateRoot</a>
 </dd>
 <dt>validates</dt>
diff --git a/doc/APIchunk21.html b/doc/APIchunk21.html
index 9b09bfd..1e3cf4b 100644
--- a/doc/APIchunk21.html
+++ b/doc/APIchunk21.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
@@ -333,6 +338,7 @@
 <a href="html/libxml-tree.html#XMLNEWGLOBALNS">xmlNewGlobalNs</a>
 <a href="html/libxml-parserinternals.html#XMLSCANNAME">xmlScanName</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 </dd>
 <dt>won</dt>
 <dd>
diff --git a/doc/APIchunk22.html b/doc/APIchunk22.html
index 636d719..2454fe4 100644
--- a/doc/APIchunk22.html
+++ b/doc/APIchunk22.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
diff --git a/doc/APIchunk3.html b/doc/APIchunk3.html
index 6311e4d..4637331 100644
--- a/doc/APIchunk3.html
+++ b/doc/APIchunk3.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
@@ -384,6 +389,7 @@
 <a href="html/libxml-parserinternals.html#XMLSCANNAME">xmlScanName</a>
 <a href="html/libxml-valid.html#XMLVALIDATENAMEVALUE">xmlValidateNameValue</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 </dd>
 <dt>Names</dt>
 <dd>
@@ -472,6 +478,7 @@
 <a href="html/libxml-parserinternals.html#XMLPARSENOTATIONTYPE">xmlParseNotationType</a>
 <a href="html/libxml-valid.html#XMLVALIDATENOTATIONUSE">xmlValidateNotationUse</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 </dd>
 <dt>Note</dt>
 <dd>
diff --git a/doc/APIchunk4.html b/doc/APIchunk4.html
index 149cc7f..9b18e39 100644
--- a/doc/APIchunk4.html
+++ b/doc/APIchunk4.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
diff --git a/doc/APIchunk5.html b/doc/APIchunk5.html
index 672bd49..91f0bd8 100644
--- a/doc/APIchunk5.html
+++ b/doc/APIchunk5.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
@@ -202,6 +207,7 @@
 <dt>Token</dt>
 <dd>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 </dd>
 <dt>Traversal</dt>
 <dd>
@@ -250,6 +256,7 @@
 <a href="html/libxml-valid.html#XMLVALIDATENOTATIONDECL">xmlValidateNotationDecl</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEELEMENT">xmlValidateOneElement</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 <a href="html/libxml-valid.html#XMLVALIDATEROOT">xmlValidateRoot</a>
 </dd>
 <dt>Type</dt>
@@ -257,6 +264,7 @@
 <a href="html/libxml-schemasinternals.html#XMLSCHEMAFREETYPE">xmlSchemaFreeType</a>
 <a href="html/libxml-valid.html#XMLVALIDATEELEMENTDECL">xmlValidateElementDecl</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 <a href="html/libxml-valid.html#XMLVALIDATEROOT">xmlValidateRoot</a>
 </dd>
 <dt>Types</dt>
@@ -389,6 +397,7 @@
 <a href="html/libxml-valid.html#XMLVALIDATENOTATIONUSE">xmlValidateNotationUse</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEELEMENT">xmlValidateOneElement</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 <a href="html/libxml-valid.html#XMLVALIDATEROOT">xmlValidateRoot</a>
 </dd>
 <dt>VMS</dt>
@@ -416,6 +425,7 @@
 <dt>Value</dt>
 <dd>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 <a href="html/libxml-xpathinternals.html#XMLXPATHNEWVALUETREE">xmlXPathNewValueTree</a>
 </dd>
 <dt>Values</dt>
diff --git a/doc/APIchunk6.html b/doc/APIchunk6.html
index e8a18a2..3de294c 100644
--- a/doc/APIchunk6.html
+++ b/doc/APIchunk6.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
@@ -128,6 +133,7 @@
 <a href="html/libxml-valid.html#XMLVALIDATENOTATIONDECL">xmlValidateNotationDecl</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEELEMENT">xmlValidateOneElement</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 <a href="html/libxml-valid.html#XMLVALIDATEROOT">xmlValidateRoot</a>
 </dd>
 <dt>XMLSchema</dt>
diff --git a/doc/APIchunk7.html b/doc/APIchunk7.html
index 4e9f4d8..661ad76 100644
--- a/doc/APIchunk7.html
+++ b/doc/APIchunk7.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
@@ -173,6 +178,7 @@
 <a href="html/libxml-valid.html#XMLVALIDATENOTATIONDECL">xmlValidateNotationDecl</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEELEMENT">xmlValidateOneElement</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 <a href="html/libxml-valid.html#XMLVALIDATEROOT">xmlValidateRoot</a>
 </dd>
 <dt>basis</dt>
diff --git a/doc/APIchunk8.html b/doc/APIchunk8.html
index 0886d28..1b9e2a0 100644
--- a/doc/APIchunk8.html
+++ b/doc/APIchunk8.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
@@ -427,6 +432,7 @@
 <a href="html/libxml-xmlversion.html#LIBXML-TEST-VERSION-CAPS">LIBXML_TEST_VERSION</a>
 <a href="html/libxml-sax.html#CHECKNAMESPACE">checkNamespace</a>
 <a href="html/libxml-htmltree.html#HTMLISBOOLEANATTR">htmlIsBooleanAttr</a>
+<a href="html/libxml-xmlio.html#XMLCHECKFILENAME">xmlCheckFilename</a>
 <a href="html/libxml-encoding.html#XMLCHECKUTF8">xmlCheckUTF8</a>
 <a href="html/libxml-xmlversion.html#XMLCHECKVERSION">xmlCheckVersion</a>
 <a href="html/libxml-xmlio.html#XMLIOFTPMATCH">xmlIOFTPMatch</a>
@@ -455,6 +461,7 @@
 <dd>
 <a href="html/libxml-htmlparser.html#HTMLAUTOCLOSETAG">htmlAutoCloseTag</a>
 <a href="html/libxml-htmlparser.html#HTMLISAUTOCLOSED">htmlIsAutoClosed</a>
+<a href="html/libxml-xmlio.html#XMLCHECKFILENAME">xmlCheckFilename</a>
 <a href="html/libxml-encoding.html#XMLCHECKUTF8">xmlCheckUTF8</a>
 <a href="html/libxml-nanoftp.html#XMLNANOFTPINIT">xmlNanoFTPInit</a>
 <a href="html/libxml-nanohttp.html#XMLNANOHTTPINIT">xmlNanoHTTPInit</a>
@@ -466,6 +473,7 @@
 <a href="html/libxml-valid.html#XMLVALIDATENOTATIONDECL">xmlValidateNotationDecl</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEELEMENT">xmlValidateOneElement</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 <a href="html/libxml-xpathinternals.html#XMLXPATHNODESETCONTAINS">xmlXPathNodeSetContains</a>
 </dd>
 <dt>children</dt>
diff --git a/doc/APIchunk9.html b/doc/APIchunk9.html
index 5f37651..005234b 100644
--- a/doc/APIchunk9.html
+++ b/doc/APIchunk9.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
@@ -238,6 +243,7 @@
 </dd>
 <dt>defaults</dt>
 <dd>
+<a href="html/libxml-debugxml.html#XMLSHELL">xmlShell</a>
 <a href="html/libxml-xpathinternals.html#XMLXPATHLOCALNAMEFUNCTION">xmlXPathLocalNameFunction</a>
 <a href="html/libxml-xpathinternals.html#XMLXPATHNAMESPACEURIFUNCTION">xmlXPathNamespaceURIFunction</a>
 <a href="html/libxml-xpathinternals.html#XMLXPATHNORMALIZEFUNCTION">xmlXPathNormalizeFunction</a>
@@ -367,6 +373,7 @@
 <a href="html/libxml-valid.html#XMLVALIDATENOTATIONDECL">xmlValidateNotationDecl</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEELEMENT">xmlValidateOneElement</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 <a href="html/libxml-valid.html#XMLVALIDATEROOT">xmlValidateRoot</a>
 </dd>
 <dt>describing</dt>
@@ -470,6 +477,7 @@
 <a href="html/libxml-docbparser.html#DOCBCREATEPUSHPARSERCTXT">docbCreatePushParserCtxt</a>
 <a href="html/libxml-htmlparser.html#HTMLCREATEPUSHPARSERCTXT">htmlCreatePushParserCtxt</a>
 <a href="html/libxml-parser.html#XMLCREATEPUSHPARSERCTXT">xmlCreatePushParserCtxt</a>
+<a href="html/libxml-valid.html#XMLISID">xmlIsID</a>
 <a href="html/libxml-parser.html#XMLPARSEBALANCEDCHUNKMEMORY">xmlParseBalancedChunkMemory</a>
 <a href="html/libxml-parser.html#XMLPARSEBALANCEDCHUNKMEMORYRECOVER">xmlParseBalancedChunkMemoryRecover</a>
 <a href="html/libxml-parser.html#XMLPARSEEXTERNALENTITY">xmlParseExternalEntity</a>
@@ -606,6 +614,7 @@
 </dd>
 <dt>documents</dt>
 <dd>
+<a href="html/libxml-valid.html#XMLISID">xmlIsID</a>
 <a href="html/libxml-parser.html#XMLSAXPARSEDOC">xmlSAXParseDoc</a>
 <a href="html/libxml-parser.html#XMLSAXPARSEFILE">xmlSAXParseFile</a>
 <a href="html/libxml-parser.html#XMLSAXPARSEFILEWITHDATA">xmlSAXParseFileWithData</a>
@@ -625,6 +634,7 @@
 <a href="html/libxml-valid.html#XMLVALIDATENOTATIONDECL">xmlValidateNotationDecl</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEELEMENT">xmlValidateOneElement</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 <a href="html/libxml-valid.html#XMLVALIDATEROOT">xmlValidateRoot</a>
 <a href="html/libxml-xpathinternals.html#XMLXPATHSUBSTRINGAFTERFUNCTION">xmlXPathSubstringAfterFunction</a>
 <a href="html/libxml-xpathinternals.html#XMLXPATHSUBSTRINGBEFOREFUNCTION">xmlXPathSubstringBeforeFunction</a>
@@ -661,6 +671,7 @@
 <a href="html/libxml-entities.html#XMLENCODESPECIALCHARS">xmlEncodeSpecialChars</a>
 <a href="html/libxml-entities.html#XMLGETDOCENTITY">xmlGetDocEntity</a>
 <a href="html/libxml-catalog.html#XMLINITIALIZECATALOG">xmlInitializeCatalog</a>
+<a href="html/libxml-valid.html#XMLISID">xmlIsID</a>
 <a href="html/libxml-parser.html#XMLKEEPBLANKSDEFAULT">xmlKeepBlanksDefault</a>
 <a href="html/libxml-catalog.html#XMLLOADCATALOG">xmlLoadCatalog</a>
 <a href="html/libxml-catalog.html#XMLLOADCATALOGS">xmlLoadCatalogs</a>
diff --git a/doc/APIconstructors.html b/doc/APIconstructors.html
index 601c30b..8b77123 100644
--- a/doc/APIconstructors.html
+++ b/doc/APIconstructors.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
diff --git a/doc/APIfiles.html b/doc/APIfiles.html
index 87b6489..7db45e8 100644
--- a/doc/APIfiles.html
+++ b/doc/APIfiles.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
@@ -1077,7 +1082,7 @@
 <a href="html/libxml-valid.html#XMLVALIDATEELEMENT">xmlValidateElement</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEELEMENT">xmlValidateOneElement</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
-<a href="">xmlValidateOneNamespace</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 <a href="html/libxml-valid.html#XMLVALIDATEDOCUMENTFINAL">xmlValidateDocumentFinal</a>
 <a href="html/libxml-valid.html#XMLVALIDATENOTATIONUSE">xmlValidateNotationUse</a>
 <a href="html/libxml-valid.html#XMLISMIXEDELEMENT">xmlIsMixedElement</a>
@@ -1095,6 +1100,46 @@
 <a href="html/libxml-valid.html#XMLVALIDBUILDCONTENTMODEL">xmlValidBuildContentModel</a>
 </p>
 <h2>
+<a name="wsockcompat">Module wsockcompat</a>:</h2>
+<p>
+<a href="html/libxml-wsockcompat.html#SOCKLEN-T-CAPS">SOCKLEN_T</a>
+<a href="html/libxml-wsockcompat.html#EWOULDBLOCK-CAPS">EWOULDBLOCK</a>
+<a href="html/libxml-wsockcompat.html#EINPROGRESS-CAPS">EINPROGRESS</a>
+<a href="html/libxml-wsockcompat.html#EALREADY-CAPS">EALREADY</a>
+<a href="html/libxml-wsockcompat.html#ENOTSOCK-CAPS">ENOTSOCK</a>
+<a href="html/libxml-wsockcompat.html#EDESTADDRREQ-CAPS">EDESTADDRREQ</a>
+<a href="html/libxml-wsockcompat.html#EMSGSIZE-CAPS">EMSGSIZE</a>
+<a href="html/libxml-wsockcompat.html#EPROTOTYPE-CAPS">EPROTOTYPE</a>
+<a href="html/libxml-wsockcompat.html#ENOPROTOOPT-CAPS">ENOPROTOOPT</a>
+<a href="html/libxml-wsockcompat.html#EPROTONOSUPPORT-CAPS">EPROTONOSUPPORT</a>
+<a href="html/libxml-wsockcompat.html#ESOCKTNOSUPPORT-CAPS">ESOCKTNOSUPPORT</a>
+<a href="html/libxml-wsockcompat.html#EOPNOTSUPP-CAPS">EOPNOTSUPP</a>
+<a href="html/libxml-wsockcompat.html#EPFNOSUPPORT-CAPS">EPFNOSUPPORT</a>
+<a href="html/libxml-wsockcompat.html#EAFNOSUPPORT-CAPS">EAFNOSUPPORT</a>
+<a href="html/libxml-wsockcompat.html#EADDRINUSE-CAPS">EADDRINUSE</a>
+<a href="html/libxml-wsockcompat.html#EADDRNOTAVAIL-CAPS">EADDRNOTAVAIL</a>
+<a href="html/libxml-wsockcompat.html#ENETDOWN-CAPS">ENETDOWN</a>
+<a href="html/libxml-wsockcompat.html#ENETUNREACH-CAPS">ENETUNREACH</a>
+<a href="html/libxml-wsockcompat.html#ENETRESET-CAPS">ENETRESET</a>
+<a href="html/libxml-wsockcompat.html#ECONNABORTED-CAPS">ECONNABORTED</a>
+<a href="html/libxml-wsockcompat.html#ECONNRESET-CAPS">ECONNRESET</a>
+<a href="html/libxml-wsockcompat.html#ENOBUFS-CAPS">ENOBUFS</a>
+<a href="html/libxml-wsockcompat.html#EISCONN-CAPS">EISCONN</a>
+<a href="html/libxml-wsockcompat.html#ENOTCONN-CAPS">ENOTCONN</a>
+<a href="html/libxml-wsockcompat.html#ESHUTDOWN-CAPS">ESHUTDOWN</a>
+<a href="html/libxml-wsockcompat.html#ETOOMANYREFS-CAPS">ETOOMANYREFS</a>
+<a href="html/libxml-wsockcompat.html#ETIMEDOUT-CAPS">ETIMEDOUT</a>
+<a href="html/libxml-wsockcompat.html#ECONNREFUSED-CAPS">ECONNREFUSED</a>
+<a href="html/libxml-wsockcompat.html#ELOOP-CAPS">ELOOP</a>
+<a href="html/libxml-wsockcompat.html#EHOSTDOWN-CAPS">EHOSTDOWN</a>
+<a href="html/libxml-wsockcompat.html#EHOSTUNREACH-CAPS">EHOSTUNREACH</a>
+<a href="html/libxml-wsockcompat.html#EPROCLIM-CAPS">EPROCLIM</a>
+<a href="html/libxml-wsockcompat.html#EUSERS-CAPS">EUSERS</a>
+<a href="html/libxml-wsockcompat.html#EDQUOT-CAPS">EDQUOT</a>
+<a href="html/libxml-wsockcompat.html#ESTALE-CAPS">ESTALE</a>
+<a href="html/libxml-wsockcompat.html#EREMOTE-CAPS">EREMOTE</a>
+</p>
+<h2>
 <a name="xinclude">Module xinclude</a>:</h2>
 <p>
 <a href="html/libxml-xinclude.html#XMLXINCLUDEPROCESS">xmlXIncludeProcess</a>
@@ -1143,6 +1188,7 @@
 <a href="html/libxml-xmlio.html#XMLREGISTERHTTPPOSTCALLBACKS">xmlRegisterHTTPPostCallbacks</a>
 <a href="html/libxml-xmlio.html#XMLNONETEXTERNALENTITYLOADER">xmlNoNetExternalEntityLoader</a>
 <a href="html/libxml-xmlio.html#XMLNORMALIZEWINDOWSPATH">xmlNormalizeWindowsPath</a>
+<a href="html/libxml-xmlio.html#XMLCHECKFILENAME">xmlCheckFilename</a>
 <a href="html/libxml-xmlio.html#XMLFILEMATCH">xmlFileMatch</a>
 <a href="html/libxml-xmlio.html#XMLFILEOPEN">xmlFileOpen</a>
 <a href="html/libxml-xmlio.html#XMLFILEREAD">xmlFileRead</a>
diff --git a/doc/APIfunctions.html b/doc/APIfunctions.html
index 1e3c2c4..8bffc99 100644
--- a/doc/APIfunctions.html
+++ b/doc/APIfunctions.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
@@ -443,8 +448,8 @@
 <a href="html/libxml-valid.html#XMLVALIDCTXTNORMALIZEATTRIBUTEVALUE">xmlValidCtxtNormalizeAttributeValue</a>
 <a href="html/libxml-valid.html#XMLVALIDATEATTRIBUTEVALUE">xmlValidateAttributeValue</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
-<a href="">xmlValidateOneNamespace</a>
-<a href="">xmlValidateOneNamespace</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 <a href="html/libxml-valid.html#XMLVALIDATENOTATIONUSE">xmlValidateNotationUse</a>
 <a href="html/libxml-valid.html#XMLISMIXEDELEMENT">xmlIsMixedElement</a>
 <a href="html/libxml-valid.html#XMLGETDTDATTRDESC">xmlGetDtdAttrDesc</a>
@@ -1198,7 +1203,7 @@
 <a href="html/libxml-valid.html#XMLVALIDATEELEMENT">xmlValidateElement</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEELEMENT">xmlValidateOneElement</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
-<a href="">xmlValidateOneNamespace</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 <a href="html/libxml-valid.html#XMLVALIDATEDOCUMENTFINAL">xmlValidateDocumentFinal</a>
 <a href="html/libxml-valid.html#XMLVALIDATENOTATIONUSE">xmlValidateNotationUse</a>
 <a href="html/libxml-valid.html#XMLISMIXEDELEMENT">xmlIsMixedElement</a>
@@ -1569,7 +1574,7 @@
 <a href="html/libxml-valid.html#XMLVALIDATEELEMENT">xmlValidateElement</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEELEMENT">xmlValidateOneElement</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
-<a href="">xmlValidateOneNamespace</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 <a href="html/libxml-xpath.html#XMLXPATHNODESETCREATE">xmlXPathNodeSetCreate</a>
 <a href="html/libxml-xpath.html#XMLXPATHCMPNODES">xmlXPathCmpNodes</a>
 <a href="html/libxml-xpath.html#XMLXPATHCMPNODES">xmlXPathCmpNodes</a>
@@ -1692,7 +1697,7 @@
 <a href="html/libxml-tree.html#XMLCOPYNAMESPACELIST">xmlCopyNamespaceList</a>
 <a href="html/libxml-tree.html#XMLSETNSPROP">xmlSetNsProp</a>
 <a href="html/libxml-tree.html#XMLUNSETNSPROP">xmlUnsetNsProp</a>
-<a href="">xmlValidateOneNamespace</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 <a href="html/libxml-xpathinternals.html#XMLXPATHNODESETADDNS">xmlXPathNodeSetAddNs</a>
 <a href="html/libxml-xpathinternals.html#XMLXPATHNODESETFREENS">xmlXPathNodeSetFreeNs</a>
 </p>
@@ -1969,7 +1974,7 @@
 <a href="html/libxml-valid.html#XMLVALIDATEELEMENT">xmlValidateElement</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEELEMENT">xmlValidateOneElement</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
-<a href="">xmlValidateOneNamespace</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 <a href="html/libxml-valid.html#XMLVALIDATEDOCUMENTFINAL">xmlValidateDocumentFinal</a>
 <a href="html/libxml-valid.html#XMLVALIDATENOTATIONUSE">xmlValidateNotationUse</a>
 <a href="html/libxml-valid.html#XMLVALIDBUILDCONTENTMODEL">xmlValidBuildContentModel</a>
diff --git a/doc/APIsymbols.html b/doc/APIsymbols.html
index 3e7223a..9bef4ac 100644
--- a/doc/APIsymbols.html
+++ b/doc/APIsymbols.html
@@ -63,13 +63,18 @@
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Indexes</b></center></td></tr>
-<tr><td bgcolor="#fffacd"><ul>
+<tr><td bgcolor="#fffacd">
+<form action="search.php" enctype="application/x-www-form-urlencoded" method="GET">
+<input name="query" type="TEXT" size="20" value=""><input name="submit" type="submit" value="Search ...">
+</form>
+<ul>
 <li><a href="APIchunk0.html">Alphabetic</a></li>
 <li><a href="APIconstructors.html">Constructors</a></li>
 <li><a href="APIfunctions.html">Functions/Types</a></li>
 <li><a href="APIfiles.html">Modules</a></li>
 <li><a href="APIsymbols.html">Symbols</a></li>
-</ul></td></tr>
+</ul>
+</td></tr>
 </table>
 <table width="100%" border="0" cellspacing="1" cellpadding="3">
 <tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr>
@@ -113,6 +118,44 @@
 <a href="html/libxml-xmlmemory.html#DEBUG-MEMORY-CAPS">DEBUG_MEMORY</a>
 <a href="html/libxml-xmlversion.html#DEBUG-MEMORY-LOCATION-CAPS">DEBUG_MEMORY_LOCATION</a>
 </p>
+<h2>Letter E:</h2>
+<p>
+<a href="html/libxml-wsockcompat.html#EADDRINUSE-CAPS">EADDRINUSE</a>
+<a href="html/libxml-wsockcompat.html#EADDRNOTAVAIL-CAPS">EADDRNOTAVAIL</a>
+<a href="html/libxml-wsockcompat.html#EAFNOSUPPORT-CAPS">EAFNOSUPPORT</a>
+<a href="html/libxml-wsockcompat.html#EALREADY-CAPS">EALREADY</a>
+<a href="html/libxml-wsockcompat.html#ECONNABORTED-CAPS">ECONNABORTED</a>
+<a href="html/libxml-wsockcompat.html#ECONNREFUSED-CAPS">ECONNREFUSED</a>
+<a href="html/libxml-wsockcompat.html#ECONNRESET-CAPS">ECONNRESET</a>
+<a href="html/libxml-wsockcompat.html#EDESTADDRREQ-CAPS">EDESTADDRREQ</a>
+<a href="html/libxml-wsockcompat.html#EDQUOT-CAPS">EDQUOT</a>
+<a href="html/libxml-wsockcompat.html#EHOSTDOWN-CAPS">EHOSTDOWN</a>
+<a href="html/libxml-wsockcompat.html#EHOSTUNREACH-CAPS">EHOSTUNREACH</a>
+<a href="html/libxml-wsockcompat.html#EINPROGRESS-CAPS">EINPROGRESS</a>
+<a href="html/libxml-wsockcompat.html#EISCONN-CAPS">EISCONN</a>
+<a href="html/libxml-wsockcompat.html#ELOOP-CAPS">ELOOP</a>
+<a href="html/libxml-wsockcompat.html#EMSGSIZE-CAPS">EMSGSIZE</a>
+<a href="html/libxml-wsockcompat.html#ENETDOWN-CAPS">ENETDOWN</a>
+<a href="html/libxml-wsockcompat.html#ENETRESET-CAPS">ENETRESET</a>
+<a href="html/libxml-wsockcompat.html#ENETUNREACH-CAPS">ENETUNREACH</a>
+<a href="html/libxml-wsockcompat.html#ENOBUFS-CAPS">ENOBUFS</a>
+<a href="html/libxml-wsockcompat.html#ENOPROTOOPT-CAPS">ENOPROTOOPT</a>
+<a href="html/libxml-wsockcompat.html#ENOTCONN-CAPS">ENOTCONN</a>
+<a href="html/libxml-wsockcompat.html#ENOTSOCK-CAPS">ENOTSOCK</a>
+<a href="html/libxml-wsockcompat.html#EOPNOTSUPP-CAPS">EOPNOTSUPP</a>
+<a href="html/libxml-wsockcompat.html#EPFNOSUPPORT-CAPS">EPFNOSUPPORT</a>
+<a href="html/libxml-wsockcompat.html#EPROCLIM-CAPS">EPROCLIM</a>
+<a href="html/libxml-wsockcompat.html#EPROTONOSUPPORT-CAPS">EPROTONOSUPPORT</a>
+<a href="html/libxml-wsockcompat.html#EPROTOTYPE-CAPS">EPROTOTYPE</a>
+<a href="html/libxml-wsockcompat.html#EREMOTE-CAPS">EREMOTE</a>
+<a href="html/libxml-wsockcompat.html#ESHUTDOWN-CAPS">ESHUTDOWN</a>
+<a href="html/libxml-wsockcompat.html#ESOCKTNOSUPPORT-CAPS">ESOCKTNOSUPPORT</a>
+<a href="html/libxml-wsockcompat.html#ESTALE-CAPS">ESTALE</a>
+<a href="html/libxml-wsockcompat.html#ETIMEDOUT-CAPS">ETIMEDOUT</a>
+<a href="html/libxml-wsockcompat.html#ETOOMANYREFS-CAPS">ETOOMANYREFS</a>
+<a href="html/libxml-wsockcompat.html#EUSERS-CAPS">EUSERS</a>
+<a href="html/libxml-wsockcompat.html#EWOULDBLOCK-CAPS">EWOULDBLOCK</a>
+</p>
 <h2>Letter H:</h2>
 <p>
 <a href="html/libxml-htmltree.html#HTML-COMMENT-NODE-CAPS">HTML_COMMENT_NODE</a>
@@ -180,6 +223,7 @@
 <h2>Letter S:</h2>
 <p>
 <a href="html/libxml-parserinternals.html#SKIP-EOL-CAPS">SKIP_EOL</a>
+<a href="html/libxml-wsockcompat.html#SOCKLEN-T-CAPS">SOCKLEN_T</a>
 </p>
 <h2>Letter U:</h2>
 <p>
@@ -563,6 +607,7 @@
 <a href="html/libxml-encoding.html#XMLCHARENCODINGOUTPUTFUNC">xmlCharEncodingOutputFunc</a>
 <a href="html/libxml-parser.html#XMLCHARSTRDUP">xmlCharStrdup</a>
 <a href="html/libxml-parser.html#XMLCHARSTRNDUP">xmlCharStrndup</a>
+<a href="html/libxml-xmlio.html#XMLCHECKFILENAME">xmlCheckFilename</a>
 <a href="html/libxml-parserinternals.html#XMLCHECKLANGUAGEID">xmlCheckLanguageID</a>
 <a href="html/libxml-encoding.html#XMLCHECKUTF8">xmlCheckUTF8</a>
 <a href="html/libxml-xmlversion.html#XMLCHECKVERSION">xmlCheckVersion</a>
@@ -1433,6 +1478,7 @@
 <a href="html/libxml-valid.html#XMLVALIDATENOTATIONUSE">xmlValidateNotationUse</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEATTRIBUTE">xmlValidateOneAttribute</a>
 <a href="html/libxml-valid.html#XMLVALIDATEONEELEMENT">xmlValidateOneElement</a>
+<a href="html/libxml-valid.html#XMLVALIDATEONENAMESPACE">xmlValidateOneNamespace</a>
 <a href="html/libxml-valid.html#XMLVALIDATEROOT">xmlValidateRoot</a>
 <a href="html/libxml-valid.html#XMLVALIDITYERRORFUNC">xmlValidityErrorFunc</a>
 <a href="html/libxml-valid.html#XMLVALIDITYWARNINGFUNC">xmlValidityWarningFunc</a>
diff --git a/doc/FAQ.html b/doc/FAQ.html
index 403dde0..da93c88 100644
--- a/doc/FAQ.html
+++ b/doc/FAQ.html
@@ -197,8 +197,8 @@
       <li>iconv: a powerful character encoding conversion library. It is
         included by default in recent glibc libraries, so it doesn't need to
         be installed specifically on Linux. It now seems a <a href="http://www.opennc.org/onlinepubs/7908799/xsh/iconv.html">part
-        of the official UNIX</a> specification. Here is one <a href="http://www.gnu.org/software/libiconv/">implementation
-        of the library</a> which source can be found <a href="ftp://ftp.ilog.fr/pub/Users/haible/gnu/">here</a>.</li>
+        of the official UNIX</a> specification. Here is one <a href="http://www.gnu.org/software/libiconv/">implementation of the
+        library</a> which source can be found <a href="ftp://ftp.ilog.fr/pub/Users/haible/gnu/">here</a>.</li>
     </ul>
 </li>
   <li>
@@ -357,13 +357,12 @@
         else xmlAddPrevSibling(doc-&gt;children, (xmlNodePtr)dtd);
           </pre>
   </li>
-      <li>So what is this funky &quot;xmlChar&quot; used all the time?
-    <p>It is a null terminated sequence of utf-8 characters. And only utf-8! You
-    need to convert strings encoded in different ways to utf-8 before passing
-    them to the API.  This can be accomplished with the iconv library for
-    instance.</p>
+  <li>So what is this funky &quot;xmlChar&quot; used all the time?
+    <p>It is a null terminated sequence of utf-8 characters. And only utf-8!
+    You need to convert strings encoded in different ways to utf-8 before
+    passing them to the API.  This can be accomplished with the iconv library
+    for instance.</p>
   </li>
-
   <li>etc ...</li>
 </ol>
 <p>
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 127ef3a..fa53daf 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -18,7 +18,9 @@
     tree.html xmldtd.html XMLinfo.html XSLT.html
 APIPAGES=APIconstructors.html APIfiles.html APIfunctions.html \
     APIsymbols.html APIchunk0.html
-EXTRA_DIST=xmlcatalog_man.xml
+EXTRA_DIST=xmlcatalog_man.xml tutorial/*.html tutorial/*.c tutorial/*.pdf \
+           tutorial/images/*.png tutorial/images/callouts/*.png \
+	   API*.html
 
 man_MANS = xmllint.1 xmlcatalog.1
 
@@ -48,7 +50,7 @@
 	-@(for s in sgml/*.sgml ; do name=`basename $$s .sgml` ; \
 	   echo '<!DOCTYPE refentry [ <!ENTITY nbsp   "&#x00A0;"> ]>' > \
 	       xml/"$$name".xml ;\
-	   grep -v "^<colspec" $$s >> xml/"$$name".xml ; done)
+	   grep -v "^<colspec" $$s | sed 's+<anchor(.*>+<anchor\1/>+' >> xml/"$$name".xml ; done)
 	   
 libxml2-api.xml libxml2-refs.xml: xml parsedecl.py libxml-decl.txt libxml-decl-list.txt
 	-(./parsedecl.py)
@@ -78,8 +80,9 @@
 	-@INSTALL@ -m 0644 $(srcdir)/html/*.html $(DESTDIR)$(TARGET_DIR)
 	-@INSTALL@ -m 0644 $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR)
 	-(cd $(DESTDIR); gtkdoc-fixxref --module=libxml --html-dir=$(HTML_DIR))
+	-@(tar cf - tutorial | (cd $(DESTDIR)$(TARGET_DIR) && tar xvf -)
 
 dist-hook:
-	(cd $(srcdir) ; tar cvf - *.1 site.xsl *.html *.gif w3c.png html/*.html html/*.sgml libxml2-api.xml parsedecl.py index.py search.php) | (cd $(distdir); tar xf -)
+	(cd $(srcdir) ; tar cvf - *.1 site.xsl *.html *.gif w3c.png html/*.html html/*.sgml libxml2-api.xml parsedecl.py index.py search.php tutorial/*.* tutorial/images/*.* tutorial/images/callouts/*.*) | (cd $(distdir); tar xf -)
 
 .PHONY : html sgml templates scan
diff --git a/doc/docs.html b/doc/docs.html
index fb4fd91..4661a6b 100644
--- a/doc/docs.html
+++ b/doc/docs.html
@@ -106,7 +106,8 @@
     internationalization support</a>.</li>
   <li>This page provides a global overview and <a href="example.html">some
     examples</a> on how to use libxml.</li>
-  <li>John Fleck's libxml tutorial: <a href="tutorial/index.html">html</a> or <a href="tutorial/xmltutorial.pdf">pdf</a>.</li>
+  <li>John Fleck's libxml tutorial: <a href="tutorial/index.html">html</a> or
+    <a href="tutorial/xmltutorial.pdf">pdf</a>.</li>
   <li>
 <a href="mailto:james@daa.com.au">James Henstridge</a> wrote <a href="http://www.daa.com.au/~james/gnome/xml-sax/xml-sax.html">some nice
     documentation</a> explaining how to use the libxml SAX interface.</li>
diff --git a/doc/html/index.sgml b/doc/html/index.sgml
index 9aaeb62..3c558fd 100644
--- a/doc/html/index.sgml
+++ b/doc/html/index.sgml
@@ -41,7 +41,6 @@
 <ANCHOR id ="HASEXTERNALSUBSETSAXFUNC" href="libxml/libxml-parser.html#HASEXTERNALSUBSETSAXFUNC">
 <ANCHOR id ="XMLSAXHANDLER" href="libxml/libxml-parser.html#XMLSAXHANDLER">
 <ANCHOR id ="XMLEXTERNALENTITYLOADER" href="libxml/libxml-parser.html#XMLEXTERNALENTITYLOADER">
-<ANCHOR id ="XMLSUBSTITUTEENTITIESDEFAULTVALUE" href="libxml/libxml-parser.html#XMLSUBSTITUTEENTITIESDEFAULTVALUE">
 <ANCHOR id ="XMLINITPARSER" href="libxml/libxml-parser.html#XMLINITPARSER">
 <ANCHOR id ="XMLCLEANUPPARSER" href="libxml/libxml-parser.html#XMLCLEANUPPARSER">
 <ANCHOR id ="XMLPARSERINPUTREAD" href="libxml/libxml-parser.html#XMLPARSERINPUTREAD">
@@ -79,6 +78,7 @@
 <ANCHOR id ="XMLSAXUSERPARSEFILE" href="libxml/libxml-parser.html#XMLSAXUSERPARSEFILE">
 <ANCHOR id ="XMLSAXUSERPARSEMEMORY" href="libxml/libxml-parser.html#XMLSAXUSERPARSEMEMORY">
 <ANCHOR id ="XMLSAXPARSEMEMORY" href="libxml/libxml-parser.html#XMLSAXPARSEMEMORY">
+<ANCHOR id ="XMLSAXPARSEMEMORYWITHDATA" href="libxml/libxml-parser.html#XMLSAXPARSEMEMORYWITHDATA">
 <ANCHOR id ="XMLSAXPARSEFILE" href="libxml/libxml-parser.html#XMLSAXPARSEFILE">
 <ANCHOR id ="XMLSAXPARSEFILEWITHDATA" href="libxml/libxml-parser.html#XMLSAXPARSEFILEWITHDATA">
 <ANCHOR id ="XMLSAXPARSEENTITY" href="libxml/libxml-parser.html#XMLSAXPARSEENTITY">
@@ -318,7 +318,6 @@
 <ANCHOR id ="XMLREMOVEPROP" href="libxml/libxml-tree.html#XMLREMOVEPROP">
 <ANCHOR id ="XMLUNSETPROP" href="libxml/libxml-tree.html#XMLUNSETPROP">
 <ANCHOR id ="XMLUNSETNSPROP" href="libxml/libxml-tree.html#XMLUNSETNSPROP">
-<ANCHOR id ="XMLBUFFERWRITEXMLCHAR" href="libxml/libxml-tree.html#XMLBUFFERWRITEXMLCHAR">
 <ANCHOR id ="XMLBUFFERWRITECHAR" href="libxml/libxml-tree.html#XMLBUFFERWRITECHAR">
 <ANCHOR id ="XMLBUFFERWRITECHAR" href="libxml/libxml-tree.html#XMLBUFFERWRITECHAR">
 <ANCHOR id ="XMLBUFFERWRITEQUOTEDSTRING" href="libxml/libxml-tree.html#XMLBUFFERWRITEQUOTEDSTRING">
@@ -807,7 +806,6 @@
 <ANCHOR id ="XMLCLEANUPOUTPUTCALLBACKS" href="libxml/libxml-xmlio.html#XMLCLEANUPOUTPUTCALLBACKS">
 <ANCHOR id ="XMLREGISTERDEFAULTINPUTCALLBACKS" href="libxml/libxml-xmlio.html#XMLREGISTERDEFAULTINPUTCALLBACKS">
 <ANCHOR id ="XMLALLOCPARSERINPUTBUFFER" href="libxml/libxml-xmlio.html#XMLALLOCPARSERINPUTBUFFER">
-<ANCHOR id ="XMLPARSERINPUTBUFFERCREATEFNAME" href="libxml/libxml-xmlio.html#XMLPARSERINPUTBUFFERCREATEFNAME">
 <ANCHOR id ="XMLPARSERINPUTBUFFERCREATEFILENAME" href="libxml/libxml-xmlio.html#XMLPARSERINPUTBUFFERCREATEFILENAME">
 <ANCHOR id ="XMLPARSERINPUTBUFFERCREATEFILE" href="libxml/libxml-xmlio.html#XMLPARSERINPUTBUFFERCREATEFILE">
 <ANCHOR id ="XMLPARSERINPUTBUFFERCREATEFD" href="libxml/libxml-xmlio.html#XMLPARSERINPUTBUFFERCREATEFD">
@@ -1030,7 +1028,6 @@
 <ANCHOR id ="XMLPARSEATTRIBUTETYPE" href="libxml/libxml-parserinternals.html#XMLPARSEATTRIBUTETYPE">
 <ANCHOR id ="XMLPARSEATTRIBUTELISTDECL" href="libxml/libxml-parserinternals.html#XMLPARSEATTRIBUTELISTDECL">
 <ANCHOR id ="XMLPARSEELEMENTMIXEDCONTENTDECL" href="libxml/libxml-parserinternals.html#XMLPARSEELEMENTMIXEDCONTENTDECL">
-<ANCHOR id ="XMLPARSEELEMENTCHILDRENCONTENTD" href="libxml/libxml-parserinternals.html#XMLPARSEELEMENTCHILDRENCONTENTD">
 <ANCHOR id ="XMLPARSEELEMENTCHILDRENCONTENTDECL" href="libxml/libxml-parserinternals.html#XMLPARSEELEMENTCHILDRENCONTENTDECL">
 <ANCHOR id ="XMLPARSEELEMENTCONTENTDECL" href="libxml/libxml-parserinternals.html#XMLPARSEELEMENTCONTENTDECL">
 <ANCHOR id ="XMLPARSEELEMENTDECL" href="libxml/libxml-parserinternals.html#XMLPARSEELEMENTDECL">
@@ -1106,6 +1103,7 @@
 <ANCHOR id ="XMLCHARENCCLOSEFUNC" href="libxml/libxml-encoding.html#XMLCHARENCCLOSEFUNC">
 <ANCHOR id ="UTF8TOISOLAT1" href="libxml/libxml-encoding.html#UTF8TOISOLAT1">
 <ANCHOR id ="ISOLAT1TOUTF8" href="libxml/libxml-encoding.html#ISOLAT1TOUTF8">
+<ANCHOR id ="XMLGETUTF8CHAR" href="libxml/libxml-encoding.html#XMLGETUTF8CHAR">
 <ANCHOR id ="XMLCHECKUTF8" href="libxml/libxml-encoding.html#XMLCHECKUTF8">
 <ANCHOR id ="XMLUTF8STRSIZE" href="libxml/libxml-encoding.html#XMLUTF8STRSIZE">
 <ANCHOR id ="XMLUTF8STRNDUP" href="libxml/libxml-encoding.html#XMLUTF8STRNDUP">
@@ -1184,6 +1182,10 @@
 <ANCHOR id ="XMLMEMDISPLAY" href="libxml/libxml-xmlmemory.html#XMLMEMDISPLAY">
 <ANCHOR id ="XMLMEMSHOW" href="libxml/libxml-xmlmemory.html#XMLMEMSHOW">
 <ANCHOR id ="XMLMEMORYDUMP" href="libxml/libxml-xmlmemory.html#XMLMEMORYDUMP">
+<ANCHOR id ="XMLMEMMALLOC" href="libxml/libxml-xmlmemory.html#XMLMEMMALLOC">
+<ANCHOR id ="XMLMEMREALLOC" href="libxml/libxml-xmlmemory.html#XMLMEMREALLOC">
+<ANCHOR id ="XMLMEMFREE" href="libxml/libxml-xmlmemory.html#XMLMEMFREE">
+<ANCHOR id ="XMLMEMORYSTRDUP" href="libxml/libxml-xmlmemory.html#XMLMEMORYSTRDUP">
 <ANCHOR id ="XMLMALLOC" href="libxml/libxml-xmlmemory.html#XMLMALLOC">
 <ANCHOR id ="XMLREALLOC" href="libxml/libxml-xmlmemory.html#XMLREALLOC">
 <ANCHOR id ="XMLMEMSTRDUP" href="libxml/libxml-xmlmemory.html#XMLMEMSTRDUP">
diff --git a/doc/news.html b/doc/news.html
index 94470b6..b13b007 100644
--- a/doc/news.html
+++ b/doc/news.html
@@ -102,6 +102,21 @@
     Schemas</a> and <a href="http://www.w3.org/TR/xinclude">XInclude</a>
 </li>
 </ul>
+<h3>2.4.27: Nov 17 2002</h3>
+<ul>
+<li>fixes for the Python bindings</li>
+  <li>a number of bug fixes: SGML catalogs, xmlParseBalancedChunkMemory(),
+    HTML parser,  Schemas (Charles Bozeman), document fragment support
+    (Christian Glahn), xmlReconciliateNs (Brian Stafford), XPointer,
+    xmlFreeNode(), xmlSAXParseMemory (Peter Jones), xmlGetNodePath (Petr
+    Pajas), entities processing</li>
+  <li>added grep to xmllint --shell</li>
+  <li>VMS update patch from Craig A. Berry</li>
+  <li>cleanup of the Windows build with support for more compilers (Igor),
+    better thread support on Windows</li>
+  <li>cleanup of Unix Makefiles and spec file</li>
+  <li>Improvements to the documentation (John Fleck)</li>
+</ul>
 <h3>2.4.26: Oct 18 2002</h3>
 <ul>
 <li>Patches for Windows CE port, improvements on Windows paths handling</li>
diff --git a/doc/xml.html b/doc/xml.html
index afb75ea..44a022f 100644
--- a/doc/xml.html
+++ b/doc/xml.html
@@ -250,8 +250,8 @@
         be installed specifically on Linux. It now seems a <a
         href="http://www.opennc.org/onlinepubs/7908799/xsh/iconv.html">part
         of the official UNIX</a> specification. Here is one <a
-        href="http://www.gnu.org/software/libiconv/">implementation
-        of the library</a> which source can be found <a
+        href="http://www.gnu.org/software/libiconv/">implementation of the
+        library</a> which source can be found <a
         href="ftp://ftp.ilog.fr/pub/Users/haible/gnu/">here</a>.</li>
     </ul>
   </li>
@@ -407,13 +407,12 @@
         else xmlAddPrevSibling(doc-&gt;children, (xmlNodePtr)dtd);
           </pre>
   </li>
-      <li>So what is this funky "xmlChar" used all the time?
-    <p>It is a null terminated sequence of utf-8 characters. And only utf-8! You
-    need to convert strings encoded in different ways to utf-8 before passing
-    them to the API.  This can be accomplished with the iconv library for
-    instance.</p>
+  <li>So what is this funky "xmlChar" used all the time?
+    <p>It is a null terminated sequence of utf-8 characters. And only utf-8!
+    You need to convert strings encoded in different ways to utf-8 before
+    passing them to the API.  This can be accomplished with the iconv library
+    for instance.</p>
   </li>
-
   <li>etc ...</li>
 </ol>
 
@@ -434,7 +433,8 @@
     internationalization support</a>.</li>
   <li>This page provides a global overview and <a href="example.html">some
     examples</a> on how to use libxml.</li>
-  <li>John Fleck's libxml tutorial: <a href="tutorial/index.html">html</a> or <a href="tutorial/xmltutorial.pdf">pdf</a>.</li>
+  <li>John Fleck's libxml tutorial: <a href="tutorial/index.html">html</a> or
+    <a href="tutorial/xmltutorial.pdf">pdf</a>.</li>
   <li><a href="mailto:james@daa.com.au">James Henstridge</a> wrote <a
     href="http://www.daa.com.au/~james/gnome/xml-sax/xml-sax.html">some nice
     documentation</a> explaining how to use the libxml SAX interface.</li>
@@ -589,6 +589,22 @@
     Schemas</a> and <a href="http://www.w3.org/TR/xinclude">XInclude</a></li>
 </ul>
 
+<h3>2.4.27: Nov 17 2002</h3>
+<ul>
+  <li>fixes for the Python bindings</li>
+  <li>a number of bug fixes: SGML catalogs, xmlParseBalancedChunkMemory(),
+    HTML parser,  Schemas (Charles Bozeman), document fragment support
+    (Christian Glahn), xmlReconciliateNs (Brian Stafford), XPointer,
+    xmlFreeNode(), xmlSAXParseMemory (Peter Jones), xmlGetNodePath (Petr
+    Pajas), entities processing</li>
+  <li>added grep to xmllint --shell</li>
+  <li>VMS update patch from Craig A. Berry</li>
+  <li>cleanup of the Windows build with support for more compilers (Igor),
+    better thread support on Windows</li>
+  <li>cleanup of Unix Makefiles and spec file</li>
+  <li>Improvements to the documentation (John Fleck)</li>
+</ul>
+
 <h3>2.4.26: Oct 18 2002</h3>
 <ul>
   <li>Patches for Windows CE port, improvements on Windows paths handling</li>
@@ -2708,6 +2724,7 @@
 
 
 
+
 } </pre>
   </li>
   <li>And then use it to save the document:
diff --git a/doc/xmlio.html b/doc/xmlio.html
index eca8e82..64faab0 100644
--- a/doc/xmlio.html
+++ b/doc/xmlio.html
@@ -249,6 +249,7 @@
 
 
 
+
 } </pre>
   </li>
   <li>And then use it to save the document:
diff --git a/include/libxml/parser.h b/include/libxml/parser.h
index a474074..e6725a3 100644
--- a/include/libxml/parser.h
+++ b/include/libxml/parser.h
@@ -219,6 +219,7 @@
     int                loadsubset;    /* should the external subset be loaded */
     int                linenumbers;   /* set line number in element content */
     void              *catalogs;       /* document's own catalog */
+    int                recovery;      /* run in recovery mode */
 };
 
 /**
diff --git a/libxml.spec.in b/libxml.spec.in
index 35e0c6c..67f5395 100644
--- a/libxml.spec.in
+++ b/libxml.spec.in
@@ -115,6 +115,7 @@
 %doc %{_mandir}/man1/xml2-config.1*
 %doc AUTHORS ChangeLog NEWS README Copyright TODO
 %doc doc/*.html doc/html doc/*.gif doc/*.png
+%doc doc/tutorial
 
 %{_libdir}/lib*.so
 %{_libdir}/*a
diff --git a/parser.c b/parser.c
index ca56c1d..3b62431 100644
--- a/parser.c
+++ b/parser.c
@@ -486,7 +486,7 @@
 		    ctxt->sax->error(ctxt->userData, 
 		         "xmlParseCharRef: invalid hexadecimal value\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		val = 0;
 		break;
 	    }
@@ -514,7 +514,7 @@
 		    ctxt->sax->error(ctxt->userData, 
 		         "xmlParseCharRef: invalid decimal value\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		val = 0;
 		break;
 	    }
@@ -532,7 +532,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	       "xmlParseCharRef: invalid value\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
 
     /*
@@ -549,7 +549,7 @@
                              "xmlParseCharRef: invalid xmlChar value %d\n",
 	                     val);
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
     return(0);
 }
@@ -597,7 +597,7 @@
 		    ctxt->sax->error(ctxt->userData, 
 		         "xmlParseStringCharRef: invalid hexadecimal value\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		val = 0;
 		break;
 	    }
@@ -618,7 +618,7 @@
 		    ctxt->sax->error(ctxt->userData, 
 		         "xmlParseStringCharRef: invalid decimal value\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		val = 0;
 		break;
 	    }
@@ -633,7 +633,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	       "xmlParseStringCharRef: invalid value\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	return(0);
     }
     *str = ptr;
@@ -651,7 +651,7 @@
 	    ctxt->sax->error(ctxt->userData,
 		             "xmlParseStringCharRef: invalid xmlChar value %d\n", val);
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
     return(0);
 }
@@ -761,7 +761,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, "PEReference at EOF\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    return;
         case XML_PARSER_PROLOG:
 	case XML_PARSER_START:
@@ -770,7 +770,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, "PEReference in prolog!\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    return;
 	case XML_PARSER_ENTITY_DECL:
         case XML_PARSER_CONTENT:
@@ -785,7 +785,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, "PEReference in epilog!\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    return;
 	case XML_PARSER_ENTITY_VALUE:
 	    /*
@@ -823,7 +823,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "xmlParserHandlePEReference: no name\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     } else {
 	if (RAW == ';') {
 	    NEXT;
@@ -846,7 +846,7 @@
 			ctxt->sax->error(ctxt->userData,
 			 "PEReference: %%%s; not found\n", name);
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	        } else {
 		    /*
 		     * [ VC: Entity Declared ]
@@ -911,7 +911,7 @@
 			 "xmlParserHandlePEReference: %s is not a parameter entity\n",
 			                 name);
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		}
 	    }
 	} else {
@@ -920,7 +920,7 @@
 		ctxt->sax->error(ctxt->userData,
 				 "xmlParserHandlePEReference: expecting ';'\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	}
 	xmlFree(name);
     }
@@ -977,7 +977,7 @@
 	    ctxt->sax->error(ctxt->userData,
 		"Detected entity reference loop\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	return(NULL);
     }
 
@@ -2134,7 +2134,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "EntityValue: \" or ' expected\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	return(NULL);
     }
     buf = (xmlChar *) xmlMalloc(size * sizeof(xmlChar));
@@ -2210,7 +2210,7 @@
 	    "EntityValue: '%c' forbidden except for entities references\n",
 	                             tmp);
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    }
 	    if ((tmp == '%') && (ctxt->inSubset == 1) &&
 		(ctxt->inputNr == 1)) {
@@ -2220,7 +2220,7 @@
 	    "EntityValue: PEReferences forbidden in internal subset\n",
 	                             tmp);
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    }
 	    if (name != NULL)
 		xmlFree(name);
@@ -2236,7 +2236,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "EntityValue: \" expected\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	xmlFree(buf);
     } else {
 	NEXT;
@@ -2306,7 +2306,7 @@
       if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
           ctxt->sax->error(ctxt->userData, "AttValue: \" or ' expected\n");
       ctxt->wellFormed = 0;
-      ctxt->disableSAX = 1;
+      if (ctxt->recovery == 0) ctxt->disableSAX = 1;
       return(NULL);
     } 
     ctxt->instate = XML_PARSER_ATTRIBUTE_VALUE;
@@ -2352,7 +2352,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "AttValue: \" or ' expected\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	return(NULL);
     }
     
@@ -2483,13 +2483,13 @@
 	    ctxt->sax->error(ctxt->userData,
 	       "Unescaped '<' not allowed in attributes values\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     } else if (RAW != limit) {
 	ctxt->errNo = XML_ERR_ATTRIBUTE_NOT_FINISHED;
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "AttValue: ' expected\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     } else
 	NEXT;
     return(buf);
@@ -2529,7 +2529,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	                     "SystemLiteral \" or ' expected\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	return(NULL);
     }
     
@@ -2573,7 +2573,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "Unfinished SystemLiteral\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     } else {
 	NEXT;
     }
@@ -2614,7 +2614,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	                     "SystemLiteral \" or ' expected\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	return(NULL);
     }
     buf = (xmlChar *) xmlMalloc(size * sizeof(xmlChar));
@@ -2655,7 +2655,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "Unfinished PubidLiteral\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     } else {
 	NEXT;
     }
@@ -2717,7 +2717,7 @@
 			   "Sequence ']]>' not allowed in content\n");
 		    ctxt->input->cur = in;
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		    return;
 		}
 		in++;
@@ -2798,7 +2798,7 @@
 		       "Sequence ']]>' not allowed in content\n");
 		/* Should this be relaxed ??? I see a "must here */
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    }
 	}
 	COPY_BUF(l,buf,nbchar,cur);
@@ -2881,7 +2881,7 @@
 		ctxt->sax->error(ctxt->userData,
 		    "Space required after 'SYSTEM'\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	}
         SKIP_BLANKS;
 	URI = xmlParseSystemLiteral(ctxt);
@@ -2891,7 +2891,7 @@
 	        ctxt->sax->error(ctxt->userData,
 	          "xmlParseExternalID: SYSTEM, no URI\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
         }
     } else if ((RAW == 'P') && (NXT(1) == 'U') &&
 	       (NXT(2) == 'B') && (NXT(3) == 'L') &&
@@ -2903,7 +2903,7 @@
 		ctxt->sax->error(ctxt->userData,
 		    "Space required after 'PUBLIC'\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	}
         SKIP_BLANKS;
 	*publicID = xmlParsePubidLiteral(ctxt);
@@ -2913,7 +2913,7 @@
 	        ctxt->sax->error(ctxt->userData, 
 	          "xmlParseExternalID: PUBLIC, no Public Identifier\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	}
 	if (strict) {
 	    /*
@@ -2925,7 +2925,7 @@
 		    ctxt->sax->error(ctxt->userData,
 			"Space required after the Public Identifier\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    }
 	} else {
 	    /*
@@ -2950,7 +2950,7 @@
 	        ctxt->sax->error(ctxt->userData, 
 	           "xmlParseExternalID: PUBLIC, no URI\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
         }
     }
     return(URI);
@@ -3010,7 +3010,7 @@
 	        ctxt->sax->error(ctxt->userData,
 	       "Comment must not contain '--' (double-hyphen)`\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	}
 	if (len + 5 >= size) {
 	    size *= 2;
@@ -3048,7 +3048,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	                     "Comment not terminated \n<!--%.50s\n", buf);
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	xmlFree(buf);
     } else {
 	if (input != ctxt->input) {
@@ -3057,7 +3057,7 @@
 		ctxt->sax->error(ctxt->userData, 
 "Comment doesn't start and stop in the same entity\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	}
         NEXT;
 	if ((ctxt->sax != NULL) && (ctxt->sax->comment != NULL) &&
@@ -3096,14 +3096,14 @@
 		ctxt->sax->error(ctxt->userData,
 		 "XML declaration allowed only at the start of the document\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    return(name);
 	} else if (name[3] == 0) {
 	    ctxt->errNo = XML_ERR_RESERVED_XML_NAME;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		ctxt->sax->error(ctxt->userData, "Invalid PI name\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    return(name);
 	}
 	for (i = 0;;i++) {
@@ -3227,7 +3227,7 @@
 			ctxt->sax->error(ctxt->userData, 
     "PI declaration doesn't start and stop in the same entity\n");
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		}
 		SKIP(2);
 
@@ -3256,7 +3256,7 @@
 		    ctxt->sax->error(ctxt->userData,
 		      "xmlParsePI: PI %s space expected\n", target);
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    }
             SKIP_BLANKS;
 	    cur = CUR_CHAR(l);
@@ -3293,7 +3293,7 @@
 		    ctxt->sax->error(ctxt->userData,
 		      "xmlParsePI: PI %s never end ...\n", target);
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    } else {
 		if (input != ctxt->input) {
 		    ctxt->errNo = XML_ERR_ENTITY_BOUNDARY;
@@ -3301,7 +3301,7 @@
 			ctxt->sax->error(ctxt->userData, 
     "PI declaration doesn't start and stop in the same entity\n");
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		}
 		SKIP(2);
 
@@ -3333,7 +3333,7 @@
 	        ctxt->sax->error(ctxt->userData,
 		       "xmlParsePI : no target name\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	}
 	ctxt->instate = state;
     }
@@ -3375,7 +3375,7 @@
 		ctxt->sax->error(ctxt->userData,
 		                 "Space required after '<!NOTATION'\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    return;
 	}
 	SKIP_BLANKS;
@@ -3387,7 +3387,7 @@
 	        ctxt->sax->error(ctxt->userData,
 		                 "NOTATION: Name expected here\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    return;
 	}
 	if (!IS_BLANK(CUR)) {
@@ -3396,7 +3396,7 @@
 		ctxt->sax->error(ctxt->userData, 
 		     "Space required after the NOTATION name'\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    return;
 	}
 	SKIP_BLANKS;
@@ -3414,7 +3414,7 @@
 		    ctxt->sax->error(ctxt->userData, 
 "Notation declaration doesn't start and stop in the same entity\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    }
 	    NEXT;
 	    if ((ctxt->sax != NULL) && (!ctxt->disableSAX) &&
@@ -3426,7 +3426,7 @@
 		ctxt->sax->error(ctxt->userData,
 		       "'>' required to close NOTATION declaration\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	}
 	xmlFree(name);
 	if (Systemid != NULL) xmlFree(Systemid);
@@ -3481,7 +3481,7 @@
 		ctxt->sax->error(ctxt->userData,
 		                 "Space required after '<!ENTITY'\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	}
 
 	if (RAW == '%') {
@@ -3493,7 +3493,7 @@
 		    ctxt->sax->error(ctxt->userData,
 		                     "Space required after '%'\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    }
 	    isParameter = 1;
 	}
@@ -3504,7 +3504,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	        ctxt->sax->error(ctxt->userData, "xmlParseEntityDecl: no name\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
             return;
 	}
         skipped = SKIP_BLANKS;
@@ -3514,7 +3514,7 @@
 		ctxt->sax->error(ctxt->userData,
 		     "Space required after the entity name\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	}
 
 	ctxt->instate = XML_PARSER_ENTITY_DECL;
@@ -3539,7 +3539,7 @@
 			ctxt->sax->error(ctxt->userData,
 			    "Entity value required\n");
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		}
 		if (URI) {
 		    xmlURIPtr uri;
@@ -3613,7 +3613,7 @@
 			ctxt->sax->error(ctxt->userData,
 			    "Entity value required\n");
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		}
 		if (URI) {
 		    xmlURIPtr uri;
@@ -3654,7 +3654,7 @@
 			ctxt->sax->error(ctxt->userData,
 			    "Space required before 'NDATA'\n");
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		}
 		SKIP_BLANKS;
 		if ((RAW == 'N') && (NXT(1) == 'D') &&
@@ -3667,7 +3667,7 @@
 			    ctxt->sax->error(ctxt->userData,
 			        "Space required after 'NDATA'\n");
 			ctxt->wellFormed = 0;
-			ctxt->disableSAX = 1;
+			if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		    }
 		    SKIP_BLANKS;
 		    ndata = xmlParseName(ctxt);
@@ -3709,7 +3709,7 @@
 	        ctxt->sax->error(ctxt->userData, 
 	            "xmlParseEntityDecl: entity %s not terminated\n", name);
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	} else {
 	    if (input != ctxt->input) {
 		ctxt->errNo = XML_ERR_ENTITY_BOUNDARY;
@@ -3717,7 +3717,7 @@
 		    ctxt->sax->error(ctxt->userData, 
 "Entity declaration doesn't start and stop in the same entity\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    }
 	    NEXT;
 	}
@@ -3817,7 +3817,7 @@
 	        ctxt->sax->error(ctxt->userData,
 		                 "Space required after '#FIXED'\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	}
 	SKIP_BLANKS;
     }
@@ -3828,7 +3828,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	       "Attribute default value declaration error\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     } else
         *value = ret;
     return(val);
@@ -3862,7 +3862,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	                     "'(' required to start 'NOTATION'\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	return(NULL);
     }
     SHRINK;
@@ -3876,7 +3876,7 @@
 		ctxt->sax->error(ctxt->userData, 
 		                 "Name expected in NOTATION declaration\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    return(ret);
 	}
 	cur = xmlCreateEnumeration(name);
@@ -3895,7 +3895,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	                     "')' required to finish NOTATION declaration\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	if ((last != NULL) && (last != ret))
 	    xmlFreeEnumeration(last);
 	return(ret);
@@ -3930,7 +3930,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	                     "'(' required to start ATTLIST enumeration\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	return(NULL);
     }
     SHRINK;
@@ -3944,7 +3944,7 @@
 		ctxt->sax->error(ctxt->userData, 
 		                 "NmToken expected in ATTLIST enumeration\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    return(ret);
 	}
 	cur = xmlCreateEnumeration(name);
@@ -3963,7 +3963,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	                     "')' required to finish ATTLIST enumeration\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	return(ret);
     }
     NEXT;
@@ -3998,7 +3998,7 @@
 	        ctxt->sax->error(ctxt->userData,
 		                 "Space required after 'NOTATION'\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    return(0);
 	}
         SKIP_BLANKS;
@@ -4135,7 +4135,7 @@
 	        ctxt->sax->error(ctxt->userData,
 		                 "Space required after '<!ATTLIST'\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	}
         SKIP_BLANKS;
         elemName = xmlParseName(ctxt);
@@ -4145,7 +4145,7 @@
 	        ctxt->sax->error(ctxt->userData,
 		                 "ATTLIST: no name for Element\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    return;
 	}
 	SKIP_BLANKS;
@@ -4165,7 +4165,7 @@
 		    ctxt->sax->error(ctxt->userData,
 		                     "ATTLIST: no name for Attribute\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		break;
 	    }
 	    GROW;
@@ -4175,7 +4175,7 @@
 		    ctxt->sax->error(ctxt->userData, 
 		        "Space required after the attribute name\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
                 if (attrName != NULL)
 		    xmlFree(attrName);
                 if (defaultValue != NULL)
@@ -4200,7 +4200,7 @@
 		    ctxt->sax->error(ctxt->userData, 
 		        "Space required after the attribute type\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
                 if (attrName != NULL)
 		    xmlFree(attrName);
                 if (defaultValue != NULL)
@@ -4230,7 +4230,7 @@
 			ctxt->sax->error(ctxt->userData, 
 			"Space required after the attribute default value\n");
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		    if (attrName != NULL)
 			xmlFree(attrName);
 		    if (defaultValue != NULL)
@@ -4271,7 +4271,7 @@
 		    ctxt->sax->error(ctxt->userData, 
 "Attribute list declaration doesn't start and stop in the same entity\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    }
 	    NEXT;
 	}
@@ -4360,7 +4360,7 @@
 		    ctxt->sax->error(ctxt->userData, 
 			"xmlParseElementMixedContentDecl : Name expected\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		xmlFreeElementContent(cur);
 		return(NULL);
 	    }
@@ -4392,7 +4392,7 @@
 		ctxt->sax->error(ctxt->userData, 
 		    "xmlParseElementMixedContentDecl : '|' or ')*' expected\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    return(NULL);
 	}
 
@@ -4402,7 +4402,7 @@
 	    ctxt->sax->error(ctxt->userData, 
 		"xmlParseElementMixedContentDecl : '#PCDATA' expected\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
     return(ret);
 }
@@ -4463,7 +4463,7 @@
 		ctxt->sax->error(ctxt->userData, 
 		"xmlParseElementChildrenContentDecl : Name or '(' expected\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    return(NULL);
 	}
         cur = ret = xmlNewElementContent(elem, XML_ELEMENT_CONTENT_ELEMENT);
@@ -4502,7 +4502,7 @@
 		    "xmlParseElementChildrenContentDecl : '%c' expected\n",
 		    type);
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		if ((last != NULL) && (last != ret))
 		    xmlFreeElementContent(last);
 		if (ret != NULL)
@@ -4546,7 +4546,7 @@
 		    "xmlParseElementChildrenContentDecl : '%c' expected\n",
 		    type);
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		if ((last != NULL) && (last != ret))
 		    xmlFreeElementContent(last);
 		if (ret != NULL)
@@ -4584,7 +4584,7 @@
 		ctxt->sax->error(ctxt->userData, 
 	    "xmlParseElementChildrenContentDecl : ',' '|' or ')' expected\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    if (ret != NULL)
 		xmlFreeElementContent(ret);
 	    return(NULL);
@@ -4607,7 +4607,7 @@
 		    ctxt->sax->error(ctxt->userData, 
 		"xmlParseElementChildrenContentDecl : Name or '(' expected\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		if (ret != NULL)
 		    xmlFreeElementContent(ret);
 		return(NULL);
@@ -4731,7 +4731,7 @@
 	    ctxt->sax->error(ctxt->userData, 
 		"xmlParseElementContentDecl : %s '(' expected\n", name);
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	return(-1);
     }
     NEXT;
@@ -4786,7 +4786,7 @@
 		ctxt->sax->error(ctxt->userData, 
 		    "Space required after 'ELEMENT'\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	}
         SKIP_BLANKS;
         name = xmlParseName(ctxt);
@@ -4796,7 +4796,7 @@
 	        ctxt->sax->error(ctxt->userData,
 		   "xmlParseElementDecl: no name for Element\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    return(-1);
 	}
 	while ((RAW == 0) && (ctxt->inputNr > 1))
@@ -4807,7 +4807,7 @@
 		ctxt->sax->error(ctxt->userData, 
 		    "Space required after the element name\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	}
         SKIP_BLANKS;
 	if ((RAW == 'E') && (NXT(1) == 'M') &&
@@ -4844,7 +4844,7 @@
 		      "xmlParseElementDecl: 'EMPTY', 'ANY' or '(' expected\n");
             }
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    if (name != NULL) xmlFree(name);
 	    return(-1);
 	}
@@ -4863,7 +4863,7 @@
 	        ctxt->sax->error(ctxt->userData, 
 	          "xmlParseElementDecl: expected '>' at the end\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	} else {
 	    if (input != ctxt->input) {
 		ctxt->errNo = XML_ERR_ENTITY_BOUNDARY;
@@ -4871,7 +4871,7 @@
 		    ctxt->sax->error(ctxt->userData, 
 "Element declaration doesn't start and stop in the same entity\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    }
 		
 	    NEXT;
@@ -4916,7 +4916,7 @@
 		ctxt->sax->error(ctxt->userData,
 	    "XML conditional section '[' expected\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	} else {
 	    NEXT;
 	}
@@ -4955,7 +4955,7 @@
 		    ctxt->sax->error(ctxt->userData,
 			"Content error in the external subset\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		break;
 	    }
 	}
@@ -4982,7 +4982,7 @@
 		ctxt->sax->error(ctxt->userData,
 	    "XML conditional section '[' expected\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	} else {
 	    NEXT;
 	}
@@ -5001,7 +5001,7 @@
 	 */
 	state = ctxt->disableSAX;
 	instate = ctxt->instate;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	ctxt->instate = XML_PARSER_IGNORE;
 
 	while ((depth >= 0) && (RAW != 0)) {
@@ -5036,7 +5036,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	"XML conditional section INCLUDE or IGNORE keyword expected\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
 
     if (RAW == 0)
@@ -5048,7 +5048,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	        "XML conditional section not closed\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     } else {
         SKIP(3);
     }
@@ -5133,7 +5133,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	                     "Text declaration '<?xml' required\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 
 	return;
     }
@@ -5144,7 +5144,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	                     "Space needed after '<?xml'\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
     SKIP_BLANKS;
 
@@ -5160,7 +5160,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		ctxt->sax->error(ctxt->userData, "Space needed here\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	}
     }
     ctxt->input->version = version;
@@ -5186,7 +5186,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	                     "XML declaration must end-up with '?>'\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	NEXT;
     } else {
 	ctxt->errNo = XML_ERR_XMLDECL_NOT_FINISHED;
@@ -5194,7 +5194,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	                     "parsing XML declaration: '?>' expected\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	MOVETO_ENDTAG(CUR_PTR);
 	NEXT;
     }
@@ -5264,7 +5264,7 @@
 		ctxt->sax->error(ctxt->userData,
 		    "Content error in the external subset\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    break;
 	}
     }
@@ -5275,7 +5275,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	        "Extra content at the end of the document\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
 
 }
@@ -5437,7 +5437,7 @@
 			    ctxt->sax->error(ctxt->userData,
 				"Detected entity reference loop\n");
 			ctxt->wellFormed = 0;
-			ctxt->disableSAX = 1;
+			if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 			return;
 		    } else if ((ret == 0) && (list != NULL)) {
 			if (((ent->etype == XML_INTERNAL_GENERAL_ENTITY) ||
@@ -5483,7 +5483,7 @@
 			    ctxt->sax->error(ctxt->userData,
 				"Entity value required\n");
 			ctxt->wellFormed = 0;
-			ctxt->disableSAX = 1;
+			if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		    } else if (list != NULL) {
 			xmlFreeNodeList(list);
 			list = NULL;
@@ -5566,7 +5566,7 @@
 				ctxt->sax->error(ctxt->userData,
 				"external parsed entities cannot be standalone\n");
 			    ctxt->wellFormed = 0;
-			    ctxt->disableSAX = 1;
+			    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 			}
 		    }
 		    return;
@@ -5629,7 +5629,7 @@
 	        ctxt->sax->error(ctxt->userData,
 		                 "xmlParseEntityRef: no name\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	} else {
 	    if (RAW == ';') {
 	        NEXT;
@@ -5677,7 +5677,7 @@
 				 "Entity '%s' not defined\n", name);
 			ctxt->wellFormed = 0;
 			ctxt->valid = 0;
-			ctxt->disableSAX = 1;
+			if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		    } else {
 			ctxt->errNo = XML_WAR_UNDECLARED_ENTITY;
 			if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
@@ -5698,7 +5698,7 @@
 			ctxt->sax->error(ctxt->userData, 
 			     "Entity reference to unparsed entity %s\n", name);
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		}
 
 		/*
@@ -5713,7 +5713,7 @@
 			ctxt->sax->error(ctxt->userData, 
 		     "Attribute references external entity '%s'\n", name);
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		}
 		/*
 		 * [ WFC: No < in Attribute Values ]
@@ -5731,7 +5731,7 @@
 			ctxt->sax->error(ctxt->userData, 
 	 "'<' in entity '%s' is not allowed in attributes values\n", name);
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		}
 
 		/*
@@ -5746,7 +5746,7 @@
 			    ctxt->sax->error(ctxt->userData, 
 		     "Attempt to reference the parameter entity '%s'\n", name);
 			ctxt->wellFormed = 0;
-			ctxt->disableSAX = 1;
+			if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 			break;
 			default:
 			break;
@@ -5766,7 +5766,7 @@
 		    ctxt->sax->error(ctxt->userData,
 		                     "xmlParseEntityRef: expecting ';'\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    }
 	    xmlFree(name);
 	}
@@ -5826,7 +5826,7 @@
 	        ctxt->sax->error(ctxt->userData,
 		                 "xmlParseStringEntityRef: no name\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	} else {
 	    if (*ptr == ';') {
 	        ptr++;
@@ -5873,7 +5873,7 @@
 			    ctxt->sax->error(ctxt->userData, 
 				 "Entity '%s' not defined\n", name);
 			ctxt->wellFormed = 0;
-			ctxt->disableSAX = 1;
+			if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		    } else {
 			ctxt->errNo = XML_WAR_UNDECLARED_ENTITY;
 			if ((ctxt->sax != NULL) && (ctxt->sax->warning != NULL))
@@ -5893,7 +5893,7 @@
 			ctxt->sax->error(ctxt->userData, 
 			     "Entity reference to unparsed entity %s\n", name);
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		}
 
 		/*
@@ -5908,7 +5908,7 @@
 			ctxt->sax->error(ctxt->userData, 
 		     "Attribute references external entity '%s'\n", name);
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		}
 		/*
 		 * [ WFC: No < in Attribute Values ]
@@ -5926,7 +5926,7 @@
 			ctxt->sax->error(ctxt->userData, 
 	 "'<' in entity '%s' is not allowed in attributes values\n", name);
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		}
 
 		/*
@@ -5941,7 +5941,7 @@
 			    ctxt->sax->error(ctxt->userData, 
 		     "Attempt to reference the parameter entity '%s'\n", name);
 			ctxt->wellFormed = 0;
-			ctxt->disableSAX = 1;
+			if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 			break;
 			default:
 			break;
@@ -5961,7 +5961,7 @@
 		    ctxt->sax->error(ctxt->userData,
 				 "xmlParseStringEntityRef: expecting ';'\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    }
 	    xmlFree(name);
 	}
@@ -6014,7 +6014,7 @@
 	        ctxt->sax->error(ctxt->userData,
 		                 "xmlParsePEReference: no name\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	} else {
 	    if (RAW == ';') {
 	        NEXT;
@@ -6040,7 +6040,7 @@
 			    ctxt->sax->error(ctxt->userData,
 			     "PEReference: %%%s; not found\n", name);
 			ctxt->wellFormed = 0;
-			ctxt->disableSAX = 1;
+			if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		    } else {
 			/*
 			 * [ VC: Entity Declared ]
@@ -6099,7 +6099,7 @@
 		    ctxt->sax->error(ctxt->userData,
 		                     "xmlParsePEReference: expecting ';'\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    }
 	    xmlFree(name);
 	}
@@ -6157,7 +6157,7 @@
 	        ctxt->sax->error(ctxt->userData,
 		                 "xmlParseStringPEReference: no name\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	} else {
 	    cur = *ptr;
 	    if (cur == ';') {
@@ -6184,7 +6184,7 @@
 			    ctxt->sax->error(ctxt->userData,
 			     "PEReference: %%%s; not found\n", name);
 			ctxt->wellFormed = 0;
-			ctxt->disableSAX = 1;
+			if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		    } else {
 			/*
 			 * [ VC: Entity Declared ]
@@ -6216,7 +6216,7 @@
 		    ctxt->sax->error(ctxt->userData,
 		                     "xmlParseStringPEReference: expecting ';'\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    }
 	    xmlFree(name);
 	}
@@ -6262,7 +6262,7 @@
 	    ctxt->sax->error(ctxt->userData, 
 	        "xmlParseDocTypeDecl : no DOCTYPE name !\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
     ctxt->intSubName = name;
 
@@ -6303,7 +6303,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "DOCTYPE improperly terminated\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
     NEXT;
 }
@@ -6350,7 +6350,7 @@
 		    ctxt->sax->error(ctxt->userData, 
 	     "xmlParseInternalSubset: error detected in Markup declaration\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		break;
 	    }
 	}
@@ -6368,7 +6368,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "DOCTYPE improperly terminated\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
     NEXT;
 }
@@ -6418,7 +6418,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "error parsing attribute name\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
         return(NULL);
     }
 
@@ -6437,7 +6437,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	       "Specification mandate value for attribute %s\n", name);
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	xmlFree(name);
 	return(NULL);
     }
@@ -6470,7 +6470,7 @@
 "Invalid value for xml:space : \"%s\", \"default\" or \"preserve\" expected\n",
                                  val);
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	}
     }
 
@@ -6526,7 +6526,7 @@
 	    ctxt->sax->error(ctxt->userData, 
 	     "xmlParseStartTag: invalid element name\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
         return(NULL);
     }
 
@@ -6559,7 +6559,7 @@
 			        "Attribute %s redefined\n",
 			                 attname);
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		    xmlFree(attname);
 		    xmlFree(attvalue);
 		    goto failed;
@@ -6610,7 +6610,7 @@
 		ctxt->sax->error(ctxt->userData,
 		    "attributes construct error\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	}
 	SKIP_BLANKS;
         if ((cons == ctxt->input->consumed) && (q == CUR_PTR)) {
@@ -6619,7 +6619,7 @@
 	        ctxt->sax->error(ctxt->userData, 
 	         "xmlParseStartTag: problem parsing attributes\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    break;
 	}
         GROW;
@@ -6663,7 +6663,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "xmlParseEndTag: '</' not found\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	return;
     }
     SKIP(2);
@@ -6680,7 +6680,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "End tag : expected '>'\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     } else
 	NEXT1;
 
@@ -6697,7 +6697,6 @@
 		ctxt->sax->error(ctxt->userData,
 		     "Opening and ending tag mismatch: %s and %s\n",
 		                 ctxt->name, name);
-		xmlFree(name);		 
             } else {
 		ctxt->sax->error(ctxt->userData,
 		     "Ending tag error for: %s\n", ctxt->name);
@@ -6705,7 +6704,21 @@
 
 	}     
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
+#if 0
+	else {
+	    /*
+	     * Recover in case of one missing close
+	     */
+	    if ((ctxt->nameNr > 2) && 
+		(xmlStrEqual(ctxt->nameTab[ctxt->nameNr -2], name))) {
+		namePop(ctxt);
+		spacePop(ctxt);
+	    }
+	}
+#endif
+	if (name != NULL)
+	    xmlFree(name);		 
     }
 
     /*
@@ -6767,7 +6780,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	                     "CData section not finished\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	ctxt->instate = XML_PARSER_CONTENT;
         return;
     }
@@ -6779,7 +6792,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	                     "CData section not finished\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	ctxt->instate = XML_PARSER_CONTENT;
         return;
     }
@@ -6823,7 +6836,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	                     "CData section not finished\n%.50s\n", buf);
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	xmlFree(buf);
         return;
     }
@@ -6923,7 +6936,7 @@
 	        ctxt->sax->error(ctxt->userData,
 		     "detected an error in element content\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    ctxt->instate = XML_PARSER_EOF;
             break;
 	}
@@ -7026,7 +7039,7 @@
 	                     "Couldn't find end of Start Tag %s\n",
 	                     name);
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 
 	/*
 	 * end of parsing of this node.
@@ -7064,7 +7077,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	         "Premature end of data in tag %s\n", name);
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 
 	/*
 	 * end of parsing of this node.
@@ -7174,7 +7187,7 @@
 	        ctxt->sax->error(ctxt->userData,
 		                 "xmlParseVersionInfo : expected '='\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    return(NULL);
         }
 	NEXT;
@@ -7189,7 +7202,7 @@
 		    ctxt->sax->error(ctxt->userData, 
 		                     "String not closed\n%.50s\n", q);
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    } else
 	        NEXT;
 	} else if (RAW == '\''){
@@ -7202,7 +7215,7 @@
 		    ctxt->sax->error(ctxt->userData,
 		                     "String not closed\n%.50s\n", q);
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    } else
 	        NEXT;
 	} else {
@@ -7211,7 +7224,7 @@
 	        ctxt->sax->error(ctxt->userData,
 		      "xmlParseVersionInfo : expected ' or \"\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	}
     }
     return(version);
@@ -7276,7 +7289,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "Invalid XML encoding name\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
     return(buf);
 }
@@ -7312,7 +7325,7 @@
 	        ctxt->sax->error(ctxt->userData,
 		                 "xmlParseEncodingDecl : expected '='\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    return(NULL);
         }
 	NEXT;
@@ -7327,7 +7340,7 @@
 		    ctxt->sax->error(ctxt->userData, 
 		                     "String not closed\n%.50s\n", q);
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    } else
 	        NEXT;
 	} else if (RAW == '\''){
@@ -7340,7 +7353,7 @@
 		    ctxt->sax->error(ctxt->userData,
 		                     "String not closed\n%.50s\n", q);
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    } else
 	        NEXT;
 	} else {
@@ -7349,7 +7362,7 @@
 	        ctxt->sax->error(ctxt->userData,
 		     "xmlParseEncodingDecl : expected ' or \"\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	}
 	if (encoding != NULL) {
 	    xmlCharEncoding enc;
@@ -7434,7 +7447,7 @@
 	        ctxt->sax->error(ctxt->userData,
 		    "XML standalone declaration : expected '='\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    return(standalone);
         }
 	NEXT;
@@ -7454,14 +7467,14 @@
 		    ctxt->sax->error(ctxt->userData,
 		                     "standalone accepts only 'yes' or 'no'\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    }
 	    if (RAW != '\'') {
 		ctxt->errNo = XML_ERR_STRING_NOT_CLOSED;
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData, "String not closed\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    } else
 	        NEXT;
 	} else if (RAW == '"'){
@@ -7479,14 +7492,14 @@
 		    ctxt->sax->error(ctxt->userData,
 		        "standalone accepts only 'yes' or 'no'\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    }
 	    if (RAW != '"') {
 		ctxt->errNo = XML_ERR_STRING_NOT_CLOSED;
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData, "String not closed\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    } else
 	        NEXT;
 	} else {
@@ -7495,7 +7508,7 @@
 	        ctxt->sax->error(ctxt->userData,
 		                 "Standalone value not found\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
         }
     }
     return(standalone);
@@ -7524,7 +7537,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "Blank needed after '<?xml'\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
     SKIP_BLANKS;
 
@@ -7537,7 +7550,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	    "Malformed declaration expecting version\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     } else {
 	if (!xmlStrEqual(version, (const xmlChar *) XML_DEFAULT_VERSION)) {
 	    /*
@@ -7564,7 +7577,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "Blank needed here\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
     xmlParseEncodingDecl(ctxt);
     if (ctxt->errNo == XML_ERR_UNSUPPORTED_ENCODING) {
@@ -7586,7 +7599,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "Blank needed here\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
     SKIP_BLANKS;
     ctxt->input->standalone = xmlParseSDDecl(ctxt);
@@ -7601,7 +7614,7 @@
 	    ctxt->sax->error(ctxt->userData, 
 	                     "XML declaration must end-up with '?>'\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	NEXT;
     } else {
 	ctxt->errNo = XML_ERR_XMLDECL_NOT_FINISHED;
@@ -7609,7 +7622,7 @@
 	    ctxt->sax->error(ctxt->userData,
 	                     "parsing XML declaration: '?>' expected\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	MOVETO_ENDTAG(CUR_PTR);
 	NEXT;
     }
@@ -7691,7 +7704,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "Document is empty\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
 
     /*
@@ -7769,7 +7782,7 @@
 	    ctxt->sax->error(ctxt->userData,
 		    "Start tag expected, '<' not found\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	ctxt->instate = XML_PARSER_EOF;
     } else {
 	ctxt->instate = XML_PARSER_CONTENT;
@@ -7788,7 +7801,7 @@
 		ctxt->sax->error(ctxt->userData,
 		    "Extra content at the end of the document\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	}
 	ctxt->instate = XML_PARSER_EOF;
     }
@@ -7864,7 +7877,7 @@
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData, "Document is empty\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
 
     /*
@@ -7908,14 +7921,14 @@
 	    ctxt->sax->error(ctxt->userData,
 		"chunk is not well balanced\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     } else if (RAW != 0) {
 	ctxt->errNo = XML_ERR_EXTRA_CONTENT;
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData,
 		"extra content at the end of well balanced chunk\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
 
     /*
@@ -8161,7 +8174,7 @@
 		    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 			ctxt->sax->error(ctxt->userData, "Document is empty\n");
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		    ctxt->instate = XML_PARSER_EOF;
 #ifdef DEBUG_PUSH
 		    xmlGenericError(xmlGenericErrorContext,
@@ -8404,7 +8417,7 @@
 			ctxt->sax->error(ctxt->userData,
 			    "Extra content at the end of the document\n");
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		    ctxt->instate = XML_PARSER_EOF;
 #ifdef DEBUG_PUSH
 		    xmlGenericError(xmlGenericErrorContext,
@@ -8427,7 +8440,7 @@
 			ctxt->sax->error(ctxt->userData,
 				"Start tag expect, '<' not found\n");
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		    ctxt->instate = XML_PARSER_EOF;
 #ifdef DEBUG_PUSH
 		    xmlGenericError(xmlGenericErrorContext,
@@ -8508,7 +8521,7 @@
 					 "Couldn't find end of Start Tag %s\n",
 					 name);
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 
 		    /*
 		     * end of parsing of this node.
@@ -8636,7 +8649,7 @@
 			ctxt->sax->error(ctxt->userData,
 			     "detected an error in element content\n");
 		    ctxt->wellFormed = 0;
-		    ctxt->disableSAX = 1;
+		    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		    ctxt->instate = XML_PARSER_EOF;
 		    break;
 		}
@@ -8918,7 +8931,7 @@
 		ctxt->sax->error(ctxt->userData,
 		    "Extra content at the end of the document\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	} 
 	if ((ctxt->instate == XML_PARSER_EPILOG) && (avail > 0)) {
 	    ctxt->errNo = XML_ERR_DOCUMENT_END;
@@ -8926,7 +8939,7 @@
 		ctxt->sax->error(ctxt->userData,
 		    "Extra content at the end of the document\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 
 	}
 	if (ctxt->instate != XML_PARSER_EOF) {
@@ -9456,14 +9469,14 @@
 	    ctxt->sax->error(ctxt->userData,
 		"chunk is not well balanced\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     } else if (RAW != 0) {
 	ctxt->errNo = XML_ERR_EXTRA_CONTENT;
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData,
 		"extra content at the end of well balanced chunk\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
     if (ctxt->node != newDoc->children) {
 	ctxt->errNo = XML_ERR_NOT_WELL_BALANCED;
@@ -9471,7 +9484,7 @@
 	    ctxt->sax->error(ctxt->userData,
 		"chunk is not well balanced\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
 
     if (!ctxt->wellFormed) {
@@ -9638,14 +9651,14 @@
 	    ctxt->sax->error(ctxt->userData,
 		"chunk is not well balanced\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     } else if (RAW != 0) {
 	ctxt->errNo = XML_ERR_EXTRA_CONTENT;
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData,
 		"extra content at the end of well balanced chunk\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
     if (ctxt->node != newDoc->children) {
 	ctxt->errNo = XML_ERR_NOT_WELL_BALANCED;
@@ -9653,7 +9666,7 @@
 	    ctxt->sax->error(ctxt->userData,
 		"chunk is not well balanced\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
 
     if (!ctxt->wellFormed) {
@@ -9833,14 +9846,14 @@
 	    ctxt->sax->error(ctxt->userData,
 		"chunk is not well balanced\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     } else if (RAW != 0) {
 	ctxt->errNo = XML_ERR_EXTRA_CONTENT;
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData,
 		"extra content at the end of well balanced chunk\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
     if (ctxt->node != ctxt->myDoc->children) {
 	ctxt->errNo = XML_ERR_NOT_WELL_BALANCED;
@@ -9848,7 +9861,7 @@
 	    ctxt->sax->error(ctxt->userData,
 		"chunk is not well balanced\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
 
     if (!ctxt->wellFormed) {
@@ -9994,14 +10007,14 @@
 	    ctxt->sax->error(ctxt->userData,
 		"chunk is not well balanced\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     } else if (RAW != 0) {
 	ctxt->errNo = XML_ERR_EXTRA_CONTENT;
 	if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 	    ctxt->sax->error(ctxt->userData,
 		"extra content at the end of well balanced chunk\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
     if (ctxt->node != newDoc->children) {
 	ctxt->errNo = XML_ERR_NOT_WELL_BALANCED;
@@ -10009,7 +10022,7 @@
 	    ctxt->sax->error(ctxt->userData,
 		"chunk is not well balanced\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
     }
 
     if (!ctxt->wellFormed) {
@@ -10278,6 +10291,8 @@
     if ((ctxt->directory == NULL) && (directory != NULL))
         ctxt->directory = (char *) xmlStrdup((xmlChar *) directory);
 
+    ctxt->recovery = recovery;
+
     xmlParseDocument(ctxt);
 
     if ((ctxt->wellFormed) || recovery) ret = ctxt->myDoc;
diff --git a/parserInternals.c b/parserInternals.c
index c09fc95..656af84 100644
--- a/parserInternals.c
+++ b/parserInternals.c
@@ -1175,7 +1175,7 @@
 				 "Char 0x%X out of allowed range\n", val);
 			    ctxt->errNo = XML_ERR_INVALID_ENCODING;
 			    ctxt->wellFormed = 0;
-			    ctxt->disableSAX = 1;
+			    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 			}    
 		    } else
 		      /* 2-byte code */
@@ -1317,7 +1317,7 @@
 				     "Char 0x%X out of allowed range\n", val);
 		ctxt->errNo = XML_ERR_INVALID_ENCODING;
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    }    
 	    return(val);
 	} else {
@@ -1438,7 +1438,7 @@
                                      val);
                 ctxt->errNo = XML_ERR_INVALID_ENCODING;
                 ctxt->wellFormed = 0;
-                ctxt->disableSAX = 1;
+                if (ctxt->recovery == 0) ctxt->disableSAX = 1;
             }
             return (val);
         } else {
@@ -1568,7 +1568,7 @@
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		ctxt->sax->error(ctxt->userData, "encoding unknown\n");
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	    break;
 	case XML_CHAR_ENCODING_NONE:
 	    /* let's assume it's UTF-8 without the XML decl */
@@ -1604,7 +1604,7 @@
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData, "encoding unknown\n");
 		ctxt->wellFormed = 0;
-		ctxt->disableSAX = 1;
+		if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 		ctxt->charset = XML_CHAR_ENCODING_UTF8;
 		break;
 	    case XML_CHAR_ENCODING_NONE:
@@ -2750,7 +2750,7 @@
 	    ctxt->sax->error(ctxt->userData,
 		"Detected entity reference loop\n");
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
 	ctxt->errNo = XML_ERR_ENTITY_LOOP;
 	return(NULL);
     }
@@ -3051,7 +3051,7 @@
 	        ctxt->sax->error(ctxt->userData, 
 			         "String not closed \"%.50s\"\n", buf);
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
         } else {
 	    NEXT;
 	}
@@ -3078,7 +3078,7 @@
 	        ctxt->sax->error(ctxt->userData,
 			         "String not closed \"%.50s\"\n", buf);
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
         } else {
 	    NEXT;
 	}
@@ -3189,7 +3189,7 @@
 	    }
 	    ctxt->errNo = XML_ERR_NS_DECL_ERROR;
 	    ctxt->wellFormed = 0;
-	    ctxt->disableSAX = 1;
+	    if (ctxt->recovery == 0) ctxt->disableSAX = 1;
             NEXT;
         }
     }
@@ -3344,7 +3344,7 @@
 	    ctxt->sax->error(ctxt->userData, "xmlHandleEntity %s: content == NULL\n",
 	               entity->name);
 	ctxt->wellFormed = 0;
-	ctxt->disableSAX = 1;
+	if (ctxt->recovery == 0) ctxt->disableSAX = 1;
         return;
     }
     len = xmlStrlen(entity->content);