modified xmlNodeSetBase to allow changing the base of a document. Daniel

* tree.c: modified xmlNodeSetBase to allow changing the
  base of a document.
Daniel
diff --git a/ChangeLog b/ChangeLog
index ba6d2a5..484d999 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sun May  5 08:57:08 CEST 2002 Daniel Veillard <daniel@veillard.com>
+
+	* tree.c: modified xmlNodeSetBase to allow changing the
+	  base of a document.
+
 Fri May  3 09:20:41 CEST 2002 Daniel Veillard <daniel@veillard.com>
 
 	* xmlschemastypes.c: patch Charles Bozeman for validation of
diff --git a/tree.c b/tree.c
index e5a4958..2974256 100644
--- a/tree.c
+++ b/tree.c
@@ -3670,11 +3670,9 @@
         case XML_TEXT_NODE:
         case XML_CDATA_SECTION_NODE:
         case XML_COMMENT_NODE:
-        case XML_DOCUMENT_NODE:
         case XML_DOCUMENT_TYPE_NODE:
         case XML_DOCUMENT_FRAG_NODE:
         case XML_NOTATION_NODE:
-        case XML_HTML_DOCUMENT_NODE:
         case XML_DTD_NODE:
         case XML_ELEMENT_DECL:
         case XML_ATTRIBUTE_DECL:
@@ -3685,13 +3683,25 @@
 	case XML_NAMESPACE_DECL:
 	case XML_XINCLUDE_START:
 	case XML_XINCLUDE_END:
-#ifdef LIBXML_DOCB_ENABLED
-	case XML_DOCB_DOCUMENT_NODE:
-#endif
 	    return;
         case XML_ELEMENT_NODE:
         case XML_ATTRIBUTE_NODE:
 	    break;
+        case XML_DOCUMENT_NODE:
+#ifdef LIBXML_DOCB_ENABLED
+	case XML_DOCB_DOCUMENT_NODE:
+#endif
+        case XML_HTML_DOCUMENT_NODE: {
+	    xmlDocPtr doc = (xmlDocPtr) cur;
+
+	    if (doc->URL != NULL)
+		xmlFree((xmlChar *) doc->URL);
+	    if (uri == NULL)
+		doc->URL = NULL;
+	    else
+		doc->URL = xmlStrdup(uri);
+	    return;
+	}
     }
     
     ns = xmlSearchNsByHref(cur->doc, cur, XML_XML_NAMESPACE);