applied patch from Alfred Mickautsch, bugfixes and comments added his test

* xmlwriter.c include/libxml/xmlwriter.h: applied patch from
  Alfred Mickautsch, bugfixes and comments
* doc/examples/*: added his test as the xmlWriter example
* doc/html/ doc/*.html: this resulted in some improvements
* include/libxml/hash.h: fixed an inclusion problem when
  <libxml/hash.h> wasn't preceeded by <xml/parser.h>
Daniel
diff --git a/include/libxml/xmlwriter.h b/include/libxml/xmlwriter.h
index 23635de..ad9d99f 100644
--- a/include/libxml/xmlwriter.h
+++ b/include/libxml/xmlwriter.h
@@ -14,6 +14,7 @@
 extern "C" {
 #endif
 
+#include <stdarg.h>
 #include <libxml/xmlIO.h>
 #include <libxml/list.h>
 
@@ -26,13 +27,17 @@
 XMLPUBFUN xmlTextWriterPtr XMLCALL
 	xmlNewTextWriter		(xmlOutputBufferPtr out);
 XMLPUBFUN xmlTextWriterPtr XMLCALL
-	xmlNewTextWriterFilename	(const char *uri,
-					 int compression);
+        xmlNewTextWriterFilename(const char *uri, int compression);
 XMLPUBFUN xmlTextWriterPtr XMLCALL
-	xmlNewTextWriterMemory		(xmlBufferPtr buf,
-					 int compression);
-XMLPUBFUN void XMLCALL
-	xmlFreeTextWriter		(xmlTextWriterPtr writer);
+        xmlNewTextWriterMemory(xmlBufferPtr buf, int compression);
+    XMLPUBFUN xmlTextWriterPtr XMLCALL
+        xmlNewTextWriterPushParser(xmlParserCtxtPtr ctxt, int compression);
+    XMLPUBFUN xmlTextWriterPtr XMLCALL
+        xmlNewTextWriterDoc(xmlDocPtr * doc, int compression);
+    XMLPUBFUN xmlTextWriterPtr XMLCALL
+        xmlNewTextWriterTree(xmlDocPtr doc,
+                             xmlNodePtr node, int compression);
+    XMLPUBFUN void XMLCALL xmlFreeTextWriter(xmlTextWriterPtr writer);
 
 /*
  * Functions
@@ -75,8 +80,7 @@
 					 const xmlChar * prefix,
 					 const xmlChar * name,
 					 const xmlChar * namespaceURI);
-XMLPUBFUN int XMLCALL
-	xmlTextWriterEndElement		(xmlTextWriterPtr writer);
+    XMLPUBFUN int XMLCALL xmlTextWriterEndElement(xmlTextWriterPtr writer);
 XMLPUBFUN int XMLCALL
 	xmlTextWriterFullEndElement	(xmlTextWriterPtr writer);
 
@@ -124,12 +128,10 @@
 					 const char *format, ...);
 XMLPUBFUN int XMLCALL
 	xmlTextWriterWriteVFormatRaw	(xmlTextWriterPtr writer,
-					 const char *format,
-					 va_list argptr);
+                                     const char *format, va_list argptr);
 XMLPUBFUN int XMLCALL
 	xmlTextWriterWriteRawLen	(xmlTextWriterPtr writer,
-					 const xmlChar * content,
-					 int len);
+                                 const xmlChar * content, int len);
 XMLPUBFUN int XMLCALL
 	xmlTextWriterWriteRaw		(xmlTextWriterPtr writer,
 					 const xmlChar * content);
@@ -145,14 +147,10 @@
 					 const xmlChar * content);
 XMLPUBFUN int XMLCALL
 	xmlTextWriterWriteBase64	(xmlTextWriterPtr writer,
-					 const char *data,
-					 int start,
-					 int len);
+                                 const char *data, int start, int len);
 XMLPUBFUN int XMLCALL
 	xmlTextWriterWriteBinHex	(xmlTextWriterPtr writer,
-					 const char *data,
-					 int start,
-					 int len);
+                                 const char *data, int start, int len);
 
 /*
  * Attributes
@@ -210,8 +208,7 @@
 XMLPUBFUN int XMLCALL
 	xmlTextWriterStartPI		(xmlTextWriterPtr writer,
 					 const xmlChar * target);
-XMLPUBFUN int XMLCALL
-	xmlTextWriterEndPI		(xmlTextWriterPtr writer);
+    XMLPUBFUN int XMLCALL xmlTextWriterEndPI(xmlTextWriterPtr writer);
 
 /*
  * PI conveniency functions
@@ -223,8 +220,7 @@
 XMLPUBFUN int XMLCALL
 	xmlTextWriterWriteVFormatPI	(xmlTextWriterPtr writer,
 					 const xmlChar * target,
-					 const char *format,
-					 va_list argptr);
+                                    const char *format, va_list argptr);
 XMLPUBFUN int XMLCALL
 	xmlTextWriterWritePI		(xmlTextWriterPtr writer,
 					 const xmlChar * target,
@@ -234,10 +230,8 @@
 /*
  * CDATA
  */
-XMLPUBFUN int XMLCALL
-	xmlTextWriterStartCDATA		(xmlTextWriterPtr writer);
-XMLPUBFUN int XMLCALL
-	xmlTextWriterEndCDATA		(xmlTextWriterPtr writer);
+    XMLPUBFUN int XMLCALL xmlTextWriterStartCDATA(xmlTextWriterPtr writer);
+    XMLPUBFUN int XMLCALL xmlTextWriterEndCDATA(xmlTextWriterPtr writer);
 
 /*
  * CDATA conveniency functions
@@ -247,8 +241,7 @@
 					 const char *format, ...);
 XMLPUBFUN int XMLCALL
 	xmlTextWriterWriteVFormatCDATA	(xmlTextWriterPtr writer,
-					 const char *format,
-					 va_list argptr);
+                                       const char *format, va_list argptr);
 XMLPUBFUN int XMLCALL
 	xmlTextWriterWriteCDATA		(xmlTextWriterPtr writer,
 					 const xmlChar * content);
@@ -261,8 +254,7 @@
 					 const xmlChar * name,
 					 const xmlChar * pubid,
 					 const xmlChar * sysid);
-XMLPUBFUN int XMLCALL
-	xmlTextWriterEndDTD		(xmlTextWriterPtr writer);
+    XMLPUBFUN int XMLCALL xmlTextWriterEndDTD(xmlTextWriterPtr writer);
 
 /*
  * DTD conveniency functions
@@ -278,8 +270,7 @@
 					 const xmlChar * name,
 					 const xmlChar * pubid,
 					 const xmlChar * sysid,
-					 const char *format,
-					 va_list argptr);
+                                     const char *format, va_list argptr);
 XMLPUBFUN int XMLCALL
 	xmlTextWriterWriteDTD		(xmlTextWriterPtr writer,
 					 const xmlChar * name,
@@ -343,8 +334,7 @@
  */
 XMLPUBFUN int XMLCALL
 	xmlTextWriterStartDTDEntity	(xmlTextWriterPtr writer,
-					 int pe,
-					 const xmlChar * name);
+                                    int pe, const xmlChar * name);
 #define xmlTextWriterEndDTDEntity xmlTextWriterEndDTD
 
 /*
@@ -394,8 +384,7 @@
 /*
  * misc
  */
-XMLPUBFUN int XMLCALL
-	xmlTextWriterFlush		(xmlTextWriterPtr writer);
+    XMLPUBFUN int XMLCALL xmlTextWriterFlush(xmlTextWriterPtr writer);
 
 #ifdef __cplusplus
 }