added the xmlWriter module contributed by Alfred Mickautsch added room for

* configure.in xmlwriter.c Makefile.am include/libxml/xmlwriter.h
  include/libxml/Makefile.am include/libxml/xmlversion.h.in:
  added the xmlWriter module contributed by Alfred Mickautsch
* include/libxml/tree.h: added room for line and extra information
* xmlreader.c python/tests/reader6.py: bugfixing some problem some
  of them introduced in September
* win32/libxml2.def.src doc/libxml2-api.xml: regenerated the API
Daniel
diff --git a/include/libxml/Makefile.am b/include/libxml/Makefile.am
index 9b754e8..b6e9d47 100644
--- a/include/libxml/Makefile.am
+++ b/include/libxml/Makefile.am
@@ -43,6 +43,7 @@
 		dict.h \
 		SAX2.h \
 		xmlexports.h \
+		xmlwriter.h \
 		chvalid.h
 
 install-exec-hook:
diff --git a/include/libxml/tree.h b/include/libxml/tree.h
index 23a8a0b..4c57877 100644
--- a/include/libxml/tree.h
+++ b/include/libxml/tree.h
@@ -459,6 +459,8 @@
     struct _xmlAttr *properties;/* properties list */
     xmlNs           *nsDef;     /* namespace definitions on this node */
     void            *psvi;	/* for type/PSVI informations */
+    unsigned short   line;	/* line number */
+    unsigned short   extra;	/* extra data for XPath/XSLT */
 };
 
 /**
diff --git a/include/libxml/xmlversion.h.in b/include/libxml/xmlversion.h.in
index e1cd434..ebd43d1 100644
--- a/include/libxml/xmlversion.h.in
+++ b/include/libxml/xmlversion.h.in
@@ -120,6 +120,15 @@
 #endif
 
 /**
+ * LIBXML_WRITER_ENABLED:
+ *
+ * Whether the xmlWriter saving interface is configured in
+ */
+#if @WITH_WRITER@
+#define LIBXML_WRITER_ENABLED
+#endif
+
+/**
  * LIBXML_SAX1_ENABLED:
  *
  * Whether the older SAX1 interface is configured in
diff --git a/include/libxml/xmlwriter.h b/include/libxml/xmlwriter.h
new file mode 100644
index 0000000..224d030
--- /dev/null
+++ b/include/libxml/xmlwriter.h
@@ -0,0 +1,406 @@
+
+/*
+ * xmlwriter.h : Interfaces,
+					 constants and types of the
+ * text writing API.for XML
+ *
+ * For license and disclaimer see the license and disclaimer of
+ * libxml2.
+ *
+ * alfred@mickautsch.de
+ */
+
+#ifndef __XML_XMLWRITER_H__
+#define __XML_XMLWRITER_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <libxml/xmlIO.h>
+#include <libxml/list.h>
+
+typedef struct _xmlTextWriter xmlTextWriter;
+typedef xmlTextWriter *xmlTextWriterPtr;
+
+/*
+ * Constructors & Destructor
+ */
+XMLPUBFUN xmlTextWriterPtr XMLCALL
+	xmlNewTextWriter		(xmlOutputBufferPtr out);
+XMLPUBFUN xmlTextWriterPtr XMLCALL
+	xmlNewTextWriterFilename	(const char *uri,
+					 int compression);
+XMLPUBFUN xmlTextWriterPtr XMLCALL
+	xmlNewTextWriterMemory		(xmlBufferPtr buf,
+					 int compression);
+XMLPUBFUN void XMLCALL
+	xmlFreeTextWriter		(xmlTextWriterPtr writer);
+
+/*
+ * Functions
+ */
+
+
+/*
+ * Document
+ */
+XMLPUBFUN int XMLCALL
+	xmlTextWriterStartDocument	(xmlTextWriterPtr writer,
+					 const char *version,
+					 const char *encoding,
+					 const char *standalone);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterEndDocument	(xmlTextWriterPtr writer);
+
+/*
+ * Comments
+ */
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteFormatComment	(xmlTextWriterPtr writer,
+					 const char *format, ...);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteVFormatComment(xmlTextWriterPtr writer,
+					 const char *format,
+					 va_list argptr);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteComment	(xmlTextWriterPtr writer,
+					 const xmlChar * content);
+
+/*
+ * Elements
+ */
+XMLPUBFUN int XMLCALL
+	xmlTextWriterStartElement	(xmlTextWriterPtr writer,
+					 const xmlChar * name);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterStartElementNS	(xmlTextWriterPtr writer,
+					 const xmlChar * prefix,
+					 const xmlChar * name,
+					 const xmlChar * namespaceURI);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterEndElement		(xmlTextWriterPtr writer);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterFullEndElement	(xmlTextWriterPtr writer);
+
+/*
+ * Elements conveniency functions
+ */
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteFormatElement	(xmlTextWriterPtr writer,
+					 const xmlChar * name,
+					 const char *format, ...);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteVFormatElement(xmlTextWriterPtr writer,
+					 const xmlChar * name,
+					 const char *format,
+					 va_list argptr);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteElement	(xmlTextWriterPtr writer,
+					 const xmlChar * name,
+					 const xmlChar * content);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteFormatElementNS(xmlTextWriterPtr writer,
+					 const xmlChar * prefix,
+					 const xmlChar * name,
+					 const xmlChar * namespaceURI,
+					 const char *format, ...);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteVFormatElementNS(xmlTextWriterPtr writer,
+					 const xmlChar * prefix,
+					 const xmlChar * name,
+					 const xmlChar * namespaceURI,
+					 const char *format,
+					 va_list argptr);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteElementNS	(xmlTextWriterPtr writer,
+					 const xmlChar * prefix,
+					 const xmlChar * name,
+					 const xmlChar * namespaceURI,
+					 const xmlChar * content);
+
+/*
+ * Text
+ */
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteFormatRaw	(xmlTextWriterPtr writer,
+					 const char *format, ...);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteVFormatRaw	(xmlTextWriterPtr writer,
+					 const char *format,
+					 va_list argptr);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteRawLen	(xmlTextWriterPtr writer,
+					 const xmlChar * content,
+					 int len);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteRaw		(xmlTextWriterPtr writer,
+					 const xmlChar * content);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteFormatString	(xmlTextWriterPtr writer,
+					 const char *format, ...);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteVFormatString	(xmlTextWriterPtr writer,
+					 const char *format,
+					 va_list argptr);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteString	(xmlTextWriterPtr writer,
+					 const xmlChar * content);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteBase64	(xmlTextWriterPtr writer,
+					 const char *data,
+					 int start,
+					 int len);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteBinHex	(xmlTextWriterPtr writer,
+					 const char *data,
+					 int start,
+					 int len);
+
+/*
+ * Attributes
+ */
+XMLPUBFUN int XMLCALL
+	xmlTextWriterStartAttribute	(xmlTextWriterPtr writer,
+					 const xmlChar * name);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterStartAttributeNS	(xmlTextWriterPtr writer,
+					 const xmlChar * prefix,
+					 const xmlChar * name,
+					 const xmlChar * namespaceURI);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterEndAttribute	(xmlTextWriterPtr writer);
+
+/*
+ * Attributes conveniency functions
+ */
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteFormatAttribute(xmlTextWriterPtr writer,
+					 const xmlChar * name,
+					 const char *format, ...);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteVFormatAttribute(xmlTextWriterPtr writer,
+					 const xmlChar * name,
+					 const char *format,
+					 va_list argptr);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteAttribute	(xmlTextWriterPtr writer,
+					 const xmlChar * name,
+					 const xmlChar * content);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteFormatAttributeNS(xmlTextWriterPtr writer,
+					 const xmlChar * prefix,
+					 const xmlChar * name,
+					 const xmlChar * namespaceURI,
+					 const char *format, ...);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteVFormatAttributeNS(xmlTextWriterPtr writer,
+					 const xmlChar * prefix,
+					 const xmlChar * name,
+					 const xmlChar * namespaceURI,
+					 const char *format,
+					 va_list argptr);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteAttributeNS	(xmlTextWriterPtr writer,
+					 const xmlChar * prefix,
+					 const xmlChar * name,
+					 const xmlChar * namespaceURI,
+					 const xmlChar * content);
+
+/*
+ * PI's
+ */
+XMLPUBFUN int XMLCALL
+	xmlTextWriterStartPI		(xmlTextWriterPtr writer,
+					 const xmlChar * target);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterEndPI		(xmlTextWriterPtr writer);
+
+/*
+ * PI conveniency functions
+ */
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteFormatPI	(xmlTextWriterPtr writer,
+					 const xmlChar * target,
+					 const char *format, ...);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteVFormatPI	(xmlTextWriterPtr writer,
+					 const xmlChar * target,
+					 const char *format,
+					 va_list argptr);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWritePI		(xmlTextWriterPtr writer,
+					 const xmlChar * target,
+					 const xmlChar * content);
+#define xmlTextWriterWriteProcessingInstruction xmlTextWriterWritePI
+
+/*
+ * CDATA
+ */
+XMLPUBFUN int XMLCALL
+	xmlTextWriterStartCDATA		(xmlTextWriterPtr writer);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterEndCDATA		(xmlTextWriterPtr writer);
+
+/*
+ * CDATA conveniency functions
+ */
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteFormatCDATA	(xmlTextWriterPtr writer,
+					 const char *format, ...);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteVFormatCDATA	(xmlTextWriterPtr writer,
+					 const char *format,
+					 va_list argptr);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteCDATA		(xmlTextWriterPtr writer,
+					 const xmlChar * content);
+
+/*
+ * DTD
+ */
+XMLPUBFUN int XMLCALL
+	xmlTextWriterStartDTD		(xmlTextWriterPtr writer,
+					 const xmlChar * name,
+					 const xmlChar * pubid,
+					 const xmlChar * sysid);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterEndDTD		(xmlTextWriterPtr writer);
+
+/*
+ * DTD conveniency functions
+ */
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteFormatDTD	(xmlTextWriterPtr writer,
+					 const xmlChar * name,
+					 const xmlChar * pubid,
+					 const xmlChar * sysid,
+					 const char *format, ...);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteVFormatDTD	(xmlTextWriterPtr writer,
+					 const xmlChar * name,
+					 const xmlChar * pubid,
+					 const xmlChar * sysid,
+					 const char *format,
+					 va_list argptr);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteDTD		(xmlTextWriterPtr writer,
+					 const xmlChar * name,
+					 const xmlChar * pubid,
+					 const xmlChar * sysid,
+					 const xmlChar * subset);
+#define xmlTextWriterWriteDocType xmlTextWriterWriteDTD
+
+/*
+ * DTD element definition
+ */
+XMLPUBFUN int XMLCALL
+	xmlTextWriterStartDTDElement	(xmlTextWriterPtr writer,
+					 const xmlChar * name);
+#define xmlTextWriterEndDTDElement xmlTextWriterEndDTD
+
+/*
+ * DTD element definition conveniency functions
+ */
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteFormatDTDElement(xmlTextWriterPtr writer,
+					 const xmlChar * name,
+					 const char *format, ...);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteVFormatDTDElement(xmlTextWriterPtr writer,
+					 const xmlChar * name,
+					 const char *format,
+					 va_list argptr);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteDTDElement	(xmlTextWriterPtr writer,
+					 const xmlChar * name,
+					 const xmlChar * content);
+
+/*
+ * DTD attribute list definition
+ */
+XMLPUBFUN int XMLCALL
+	xmlTextWriterStartDTDAttlist	(xmlTextWriterPtr writer,
+					 const xmlChar * name);
+#define xmlTextWriterEndDTDAttlist xmlTextWriterEndDTD
+
+/*
+ * DTD attribute list definition conveniency functions
+ */
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteFormatDTDAttlist(xmlTextWriterPtr writer,
+					 const xmlChar * name,
+					 const char *format, ...);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteVFormatDTDAttlist(xmlTextWriterPtr writer,
+					 const xmlChar * name,
+					 const char *format,
+					 va_list argptr);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteDTDAttlist	(xmlTextWriterPtr writer,
+					 const xmlChar * name,
+					 const xmlChar * content);
+
+/*
+ * DTD entity definition
+ */
+XMLPUBFUN int XMLCALL
+	xmlTextWriterStartDTDEntity	(xmlTextWriterPtr writer,
+					 int pe,
+					 const xmlChar * name);
+#define xmlTextWriterEndDTDEntity xmlTextWriterEndDTD
+
+/*
+ * DTD entity definition conveniency functions
+ */
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteFormatDTDInternalEntity(xmlTextWriterPtr writer,
+					 int pe,
+					 const xmlChar * name,
+					 const char *format, ...);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteVFormatDTDInternalEntity(xmlTextWriterPtr writer,
+					 int pe,
+					 const xmlChar * name,
+					 const char *format,
+					 va_list argptr);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteDTDInternalEntity(xmlTextWriterPtr writer,
+					 int pe,
+					 const xmlChar * name,
+					 const xmlChar * content);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteDTDExternalEntity(xmlTextWriterPtr writer,
+					 int pe,
+					 const xmlChar * name,
+					 const xmlChar * pubid,
+					 const xmlChar * sysid,
+					 const xmlChar * ndataid);
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteDTDEntity	(xmlTextWriterPtr writer,
+					 int pe,
+					 const xmlChar * name,
+					 const xmlChar * pubid,
+					 const xmlChar * sysid,
+					 const xmlChar * ndataid,
+					 const xmlChar * content);
+
+/*
+ * DTD notation definition
+ */
+XMLPUBFUN int XMLCALL
+	xmlTextWriterWriteDTDNotation	(xmlTextWriterPtr writer,
+					 const xmlChar * name,
+					 const xmlChar * pubid,
+					 const xmlChar * sysid);
+
+/*
+ * misc
+ */
+XMLPUBFUN int XMLCALL
+	xmlTextWriterFlush		(xmlTextWriterPtr writer);
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* __XML_XMLWRITER_H__ */