release of libxml2 2.6.28 patch from Dagfinn I. Mannsåker for idness of

* doc/* configure.in NEWS: release of libxml2 2.6.28
* valid.c: patch from Dagfinn I. Mannsåker for idness of name
  in HTML, c.f. bug #305885.
Daniel

svn path=/trunk/; revision=3638
diff --git a/ChangeLog b/ChangeLog
index 8bfc2cf..5f5d9a7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Tue Jun 12 18:17:28 CEST 2007 Daniel Veillard <daniel@veillard.com>
+
+	* doc/* configure.in NEWS: release of libxml2 2.6.28
+	* valid.c: patch from Dagfinn I. Mannsåker for idness of name
+	  in HTML, c.f. bug #305885.
+
 Tue Jun 12 17:14:08 CEST 2007 Daniel Veillard <daniel@veillard.com>
 
 	* SAX2.c: fixing bug #319964, parsing of HTML attribute really
diff --git a/NEWS b/NEWS
index fa7ae09..0bad177 100644
--- a/NEWS
+++ b/NEWS
@@ -15,6 +15,32 @@
 to the SVN at 
 http://svn.gnome.org/viewcvs/libxml2/trunk/
  code base.Here is the list of public releases:
+2.6.29: Jun 12 2007:
+   - Portability: patches from Andreas Stricke for WinCEi,
+      fix compilation warnings (William Brack), avoid warnings on Apple OS/X
+      (Wendy Doyle and Mark Rowe), Windows compilation and threading
+      improvements (Rob Richards), compilation against old Python versions,
+      new GNU tar changes (Ryan Hill)
+   - Documentation: xmlURIUnescapeString comment, 
+   - Bugfixes: xmlBufferAdd problem (Richard Jones), 'make valgrind'
+      flag fix (Richard Jones), regexp interpretation of \,
+      htmlCreateDocParserCtxt (Jean-Daniel Dupas), configure.in
+      typo (Bjorn Reese), entity content failure, xmlListAppend() fix
+      (Georges-André Silber), XPath number serialization (William Brack),
+      nanohttp gzipped stream fix (William Brack and Alex Cornejo),
+      xmlCharEncFirstLine typo (Mark Rowe), uri bug (François Delyon),
+      XPath string value of PI nodes (William Brack), XPath node set
+      sorting bugs (William Brack), avoid outputting namespace decl
+      dups in the writer (Rob Richards), xmlCtxtReset bug, UTF-8 encoding
+      error handling, recustion on next in catalogs, fix a Relax-NG crash,
+      workaround wrong file: URIs, htmlNodeDumpFormatOutput on attributes,
+      invalid character in attribute detection bug, big comments before 
+      internal subset streaming bug, HTML parsing of attributes with : in
+      the name 
+   - Improvement: keep URI query parts in raw form (Richard Jones),
+      embed tag support in HTML (Michael Day) 
+
+
 2.6.28: Apr 17 2007:
    - Documentation: comment fixes (Markus Keim), xpath comments fixes too
       (James Dennett)
diff --git a/configure.in b/configure.in
index 42476a4..866df62 100644
--- a/configure.in
+++ b/configure.in
@@ -5,7 +5,7 @@
 
 LIBXML_MAJOR_VERSION=2
 LIBXML_MINOR_VERSION=6
-LIBXML_MICRO_VERSION=28
+LIBXML_MICRO_VERSION=29
 LIBXML_MICRO_VERSION_SUFFIX=
 LIBXML_VERSION=$LIBXML_MAJOR_VERSION.$LIBXML_MINOR_VERSION.$LIBXML_MICRO_VERSION$LIBXML_MICRO_VERSION_SUFFIX
 LIBXML_VERSION_INFO=`expr $LIBXML_MAJOR_VERSION + $LIBXML_MINOR_VERSION`:$LIBXML_MICRO_VERSION:$LIBXML_MINOR_VERSION
diff --git a/doc/APIchunk10.html b/doc/APIchunk10.html
index c55e04a..38a6660 100644
--- a/doc/APIchunk10.html
+++ b/doc/APIchunk10.html
@@ -453,7 +453,8 @@
 <a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br />
 </dd><dt>appearing</dt><dd><a href="html/libxml-valid.html#xmlValidatePopElement">xmlValidatePopElement</a><br />
 <a href="html/libxml-valid.html#xmlValidatePushElement">xmlValidatePushElement</a><br />
-</dd><dt>appears</dt><dd><a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br />
+</dd><dt>appears</dt><dd><a href="html/libxml-uri.html#_xmlURI">_xmlURI</a><br />
+<a href="html/libxml-xmlregexp.html#xmlExpGetStart">xmlExpGetStart</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseCharData">xmlParseCharData</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseEntityRef">xmlParseEntityRef</a><br />
diff --git a/doc/APIchunk12.html b/doc/APIchunk12.html
index fb3ad79..daaf7ce 100644
--- a/doc/APIchunk12.html
+++ b/doc/APIchunk12.html
@@ -124,6 +124,7 @@
 <a href="html/libxml-catalog.html#xmlLoadCatalogs">xmlLoadCatalogs</a><br />
 </dd><dt>category</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsCat">xmlUCSIsCat</a><br />
 </dd><dt>cause</dt><dd><a href="html/libxml-debugXML.html#xmlShellPrintXPathError">xmlShellPrintXPathError</a><br />
+</dd><dt>caution</dt><dd><a href="html/libxml-uri.html#_xmlURI">_xmlURI</a><br />
 </dd><dt>cdata-section-</dt><dd><a href="html/libxml-pattern.html#xmlStreamPushNode">xmlStreamPushNode</a><br />
 <a href="html/libxml-pattern.html#xmlStreamWantsAnyNode">xmlStreamWantsAnyNode</a><br />
 </dd><dt>ceiling</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathCeilingFunction">xmlXPathCeilingFunction</a><br />
@@ -222,7 +223,6 @@
 <a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br />
 <a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br />
 <a href="html/libxml-uri.html#xmlURIEscape">xmlURIEscape</a><br />
-<a href="html/libxml-uri.html#xmlURIUnescapeString">xmlURIUnescapeString</a><br />
 <a href="html/libxml-valid.html#xmlValidateAttributeDecl">xmlValidateAttributeDecl</a><br />
 <a href="html/libxml-valid.html#xmlValidateDocument">xmlValidateDocument</a><br />
 <a href="html/libxml-valid.html#xmlValidateDocumentFinal">xmlValidateDocumentFinal</a><br />
diff --git a/doc/APIchunk13.html b/doc/APIchunk13.html
index 834cde1..c0be627 100644
--- a/doc/APIchunk13.html
+++ b/doc/APIchunk13.html
@@ -232,6 +232,7 @@
 <a href="html/libxml-xpathInternals.html#xmlXPathNotEqualValues">xmlXPathNotEqualValues</a><br />
 </dd><dt>deprecated</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_LEGACY_ENABLED">LIBXML_LEGACY_ENABLED</a><br />
 <a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br />
+<a href="html/libxml-uri.html#_xmlURI">_xmlURI</a><br />
 <a href="html/libxml-HTMLparser.html#htmlAttrAllowed">htmlAttrAllowed</a><br />
 <a href="html/libxml-HTMLparser.html#htmlElementAllowedHere">htmlElementAllowedHere</a><br />
 <a href="html/libxml-HTMLparser.html#htmlElementStatusHere">htmlElementStatusHere</a><br />
diff --git a/doc/APIchunk24.html b/doc/APIchunk24.html
index a965455..d853a75 100644
--- a/doc/APIchunk24.html
+++ b/doc/APIchunk24.html
@@ -56,6 +56,7 @@
 <a href="html/libxml-tree.html#xmlReplaceNode">xmlReplaceNode</a><br />
 <a href="html/libxml-xmlstring.html#xmlStrEqual">xmlStrEqual</a><br />
 <a href="html/libxml-xmlstring.html#xmlStrncatNew">xmlStrncatNew</a><br />
+<a href="html/libxml-uri.html#xmlURIUnescapeString">xmlURIUnescapeString</a><br />
 <a href="html/libxml-xpath.html#xmlXPathCmpNodes">xmlXPathCmpNodes</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathIdFunction">xmlXPathIdFunction</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathLangFunction">xmlXPathLangFunction</a><br />
@@ -393,6 +394,7 @@
 <a href="html/libxml-parserInternals.html#xmlSkipBlankChars">xmlSkipBlankChars</a><br />
 </dd><dt>slot</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
 </dd><dt>slots</dt><dd><a href="html/libxml-xpath.html#xmlXPathContextSetCache">xmlXPathContextSetCache</a><br />
+</dd><dt>smaller</dt><dd><a href="html/libxml-uri.html#xmlURIUnescapeString">xmlURIUnescapeString</a><br />
 </dd><dt>smallest</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathCeilingFunction">xmlXPathCeilingFunction</a><br />
 </dd><dt>socket</dt><dd><a href="html/libxml-xmlIO.html#xmlCheckFilename">xmlCheckFilename</a><br />
 <a href="html/libxml-nanoftp.html#xmlNanoFTPGetSocket">xmlNanoFTPGetSocket</a><br />
diff --git a/doc/APIchunk26.html b/doc/APIchunk26.html
index 5606555..e5b01d0 100644
--- a/doc/APIchunk26.html
+++ b/doc/APIchunk26.html
@@ -240,7 +240,6 @@
 <a href="html/libxml-xmlerror.html#xmlParserValidityWarning">xmlParserValidityWarning</a><br />
 <a href="html/libxml-xmlreader.html#xmlTextReaderIsValid">xmlTextReaderIsValid</a><br />
 <a href="html/libxml-uri.html#xmlURIEscape">xmlURIEscape</a><br />
-<a href="html/libxml-uri.html#xmlURIUnescapeString">xmlURIUnescapeString</a><br />
 <a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br />
 <a href="html/libxml-valid.html#xmlValidateDocumentFinal">xmlValidateDocumentFinal</a><br />
 <a href="html/libxml-valid.html#xmlValidateNotationDecl">xmlValidateNotationDecl</a><br />
diff --git a/doc/APIchunk5.html b/doc/APIchunk5.html
index 9a6b23f..8bd78ca 100644
--- a/doc/APIchunk5.html
+++ b/doc/APIchunk5.html
@@ -77,7 +77,6 @@
 <a href="html/libxml-xmlIO.html#xmlOutputMatchCallback">xmlOutputMatchCallback</a><br />
 <a href="html/libxml-xmlIO.html#xmlOutputOpenCallback">xmlOutputOpenCallback</a><br />
 <a href="html/libxml-xmlIO.html#xmlOutputWriteCallback">xmlOutputWriteCallback</a><br />
-<a href="html/libxml-uri.html#xmlURIUnescapeString">xmlURIUnescapeString</a><br />
 </dd><dt>OutputBufferCreateFilenameFunc</dt><dd><a href="html/libxml-globals.html#xmlOutputBufferCreateFilenameDefault">xmlOutputBufferCreateFilenameDefault</a><br />
 </dd><dt>Override</dt><dd><a href="html/libxml-xmlmemory.html#xmlGcMemSetup">xmlGcMemSetup</a><br />
 <a href="html/libxml-xmlmemory.html#xmlMemSetup">xmlMemSetup</a><br />
diff --git a/doc/APIfiles.html b/doc/APIfiles.html
index 8a3f6d7..208205f 100644
--- a/doc/APIfiles.html
+++ b/doc/APIfiles.html
@@ -1242,6 +1242,7 @@
 <a href="html/libxml-schematron.html#xmlSchematronValidityErrorFunc">xmlSchematronValidityErrorFunc</a><br />
 <a href="html/libxml-schematron.html#xmlSchematronValidityWarningFunc">xmlSchematronValidityWarningFunc</a><br />
 </p><h2><a name="threads" id="threads">Module threads</a>:</h2><p><a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br />
+<a href="html/libxml-threads.html#xmlDllMain">xmlDllMain</a><br />
 <a href="html/libxml-threads.html#xmlFreeMutex">xmlFreeMutex</a><br />
 <a href="html/libxml-threads.html#xmlFreeRMutex">xmlFreeRMutex</a><br />
 <a href="html/libxml-threads.html#xmlGetGlobalState">xmlGetGlobalState</a><br />
diff --git a/doc/APIfunctions.html b/doc/APIfunctions.html
index bbfd181..8d12650 100644
--- a/doc/APIfunctions.html
+++ b/doc/APIfunctions.html
@@ -607,6 +607,7 @@
 <a href="html/libxml-chvalid.html#xmlIsIdeographic">xmlIsIdeographic</a><br />
 <a href="html/libxml-chvalid.html#xmlIsPubidChar">xmlIsPubidChar</a><br />
 </p><h2>Type unsigned long:</h2><p><a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br />
+<a href="html/libxml-threads.html#xmlDllMain">xmlDllMain</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a><br />
 </p><h2>Type unsigned long *:</h2><p><a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
@@ -722,6 +723,7 @@
 <a href="html/libxml-xmlerror.html#xmlCtxtGetLastError">xmlCtxtGetLastError</a><br />
 <a href="html/libxml-parser.html#xmlCtxtReadIO">xmlCtxtReadIO</a><br />
 <a href="html/libxml-xmlerror.html#xmlCtxtResetLastError">xmlCtxtResetLastError</a><br />
+<a href="html/libxml-threads.html#xmlDllMain">xmlDllMain</a><br />
 <a href="html/libxml-xmlIO.html#xmlFileClose">xmlFileClose</a><br />
 <a href="html/libxml-xmlIO.html#xmlFileRead">xmlFileRead</a><br />
 <a href="html/libxml-xmlmemory.html#xmlFreeFunc">xmlFreeFunc</a><br />
diff --git a/doc/APIsymbols.html b/doc/APIsymbols.html
index 4cfeef8..2a64797 100644
--- a/doc/APIsymbols.html
+++ b/doc/APIsymbols.html
@@ -1891,6 +1891,7 @@
 <a href="html/libxml-dict.html#xmlDictQLookup">xmlDictQLookup</a><br />
 <a href="html/libxml-dict.html#xmlDictReference">xmlDictReference</a><br />
 <a href="html/libxml-dict.html#xmlDictSize">xmlDictSize</a><br />
+<a href="html/libxml-threads.html#xmlDllMain">xmlDllMain</a><br />
 <a href="html/libxml-globals.html#xmlDoValidityCheckingDefaultValue">xmlDoValidityCheckingDefaultValue</a><br />
 <a href="html/libxml-tree.html#xmlDoc">xmlDoc</a><br />
 <a href="html/libxml-tree.html#xmlDocCopyNode">xmlDocCopyNode</a><br />
diff --git a/doc/devhelp/libxml2-threads.html b/doc/devhelp/libxml2-threads.html
index 66e5ba4..3ce5f93 100644
--- a/doc/devhelp/libxml2-threads.html
+++ b/doc/devhelp/libxml2-threads.html
@@ -58,10 +58,11 @@
 void	<a href="#xmlRMutexUnlock">xmlRMutexUnlock</a>			(<a href="libxml2-threads.html#xmlRMutexPtr">xmlRMutexPtr</a> tok);
 <a href="libxml2-globals.html#xmlGlobalStatePtr">xmlGlobalStatePtr</a>	<a href="#xmlGetGlobalState">xmlGetGlobalState</a>	(void);
 <a href="libxml2-threads.html#xmlMutexPtr">xmlMutexPtr</a>	<a href="#xmlNewMutex">xmlNewMutex</a>		(void);
-void	<a href="#xmlRMutexLock">xmlRMutexLock</a>			(<a href="libxml2-threads.html#xmlRMutexPtr">xmlRMutexPtr</a> tok);
-void	<a href="#xmlInitThreads">xmlInitThreads</a>			(void);
-void	<a href="#xmlUnlockLibrary">xmlUnlockLibrary</a>		(void);
+int	<a href="#xmlDllMain">xmlDllMain</a>			(void * hinstDLL, <br/>					 unsigned long fdwReason, <br/>					 void * lpvReserved);
 void	<a href="#xmlFreeMutex">xmlFreeMutex</a>			(<a href="libxml2-threads.html#xmlMutexPtr">xmlMutexPtr</a> tok);
+void	<a href="#xmlUnlockLibrary">xmlUnlockLibrary</a>		(void);
+void	<a href="#xmlInitThreads">xmlInitThreads</a>			(void);
+void	<a href="#xmlRMutexLock">xmlRMutexLock</a>			(<a href="libxml2-threads.html#xmlRMutexPtr">xmlRMutexPtr</a> tok);
 </pre>
     </div>
     <div class="refsect1" lang="en">
@@ -94,6 +95,10 @@
 </pre><p>xmlCleanupThreads() is used to to cleanup all the thread related data of the libxml2 library once processing has ended.</p>
 </div>
         <hr/>
+        <div class="refsect2" lang="en"><h3><a name="xmlDllMain"/>xmlDllMain ()</h3><pre class="programlisting">int	xmlDllMain			(void * hinstDLL, <br/>					 unsigned long fdwReason, <br/>					 void * lpvReserved)<br/>
+</pre><p/>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>hinstDLL</tt></i>:</span></td><td/></tr><tr><td><span class="term"><i><tt>fdwReason</tt></i>:</span></td><td/></tr><tr><td><span class="term"><i><tt>lpvReserved</tt></i>:</span></td><td/></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td/></tr></tbody></table></div></div>
+        <hr/>
         <div class="refsect2" lang="en"><h3><a name="xmlFreeMutex"/>xmlFreeMutex ()</h3><pre class="programlisting">void	xmlFreeMutex			(<a href="libxml2-threads.html#xmlMutexPtr">xmlMutexPtr</a> tok)<br/>
 </pre><p>xmlFreeMutex() is used to reclaim resources associated with a libxml2 token struct.</p>
 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>tok</tt></i>:</span></td><td>the simple mutex</td></tr></tbody></table></div></div>
diff --git a/doc/devhelp/libxml2-uri.html b/doc/devhelp/libxml2-uri.html
index 33f32fa..c67dacf 100644
--- a/doc/devhelp/libxml2-uri.html
+++ b/doc/devhelp/libxml2-uri.html
@@ -76,9 +76,10 @@
     char *	user	: the user part
     int	port	: the port number
     char *	path	: the path string
-    char *	query	: the query string
+    char *	query	: the query string (deprecated - use with caution)
     char *	fragment	: the fragment identifier
     int	cleanup	: parsing potentially unclean URI
+    char *	query_raw	: the query string (as it appears in the URI)
 } xmlURI;
 </pre><p/>
 </div>
@@ -144,8 +145,8 @@
 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>string to escape</td></tr><tr><td><span class="term"><i><tt>list</tt></i>:</span></td><td>exception list string of chars not to escape</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new escaped string or NULL in case of error.</td></tr></tbody></table></div></div>
         <hr/>
         <div class="refsect2" lang="en"><h3><a name="xmlURIUnescapeString"/>xmlURIUnescapeString ()</h3><pre class="programlisting">char *	xmlURIUnescapeString		(const char * str, <br/>					 int len, <br/>					 char * target)<br/>
-</pre><p>Unescaping routine, does not do validity checks ! Output is direct unsigned char translation of %XX values (no encoding)</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the string to unescape</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the length in bytes to unescape (or &lt;= 0 to indicate full string)</td></tr><tr><td><span class="term"><i><tt>target</tt></i>:</span></td><td>optional destination buffer</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>an copy of the string, but unescaped</td></tr></tbody></table></div></div>
+</pre><p>Unescaping routine, but does not check that the string is an URI. The output is a direct unsigned char translation of %XX values (no encoding) Note that the length of the result can only be smaller or same size as the input string.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the string to unescape</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the length in bytes to unescape (or &lt;= 0 to indicate full string)</td></tr><tr><td><span class="term"><i><tt>target</tt></i>:</span></td><td>optional destination buffer</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a copy of the string, but unescaped, will return NULL only in case of error</td></tr></tbody></table></div></div>
         <hr/>
       </div>
     </div>
diff --git a/doc/devhelp/libxml2.devhelp b/doc/devhelp/libxml2.devhelp
index 6a3841c..a932cdf 100644
--- a/doc/devhelp/libxml2.devhelp
+++ b/doc/devhelp/libxml2.devhelp
@@ -2193,6 +2193,7 @@
     <function name="xmlDictQLookup ()" link="libxml2-dict.html#xmlDictQLookup"/>
     <function name="xmlDictReference ()" link="libxml2-dict.html#xmlDictReference"/>
     <function name="xmlDictSize ()" link="libxml2-dict.html#xmlDictSize"/>
+    <function name="xmlDllMain ()" link="libxml2-threads.html#xmlDllMain"/>
     <function name="xmlDocCopyNode ()" link="libxml2-tree.html#xmlDocCopyNode"/>
     <function name="xmlDocCopyNodeList ()" link="libxml2-tree.html#xmlDocCopyNodeList"/>
     <function name="xmlDocDump ()" link="libxml2-tree.html#xmlDocDump"/>
diff --git a/doc/html/libxml-threads.html b/doc/html/libxml-threads.html
index eebcf3c..8bb2cbf 100644
--- a/doc/html/libxml-threads.html
+++ b/doc/html/libxml-threads.html
@@ -17,6 +17,7 @@
 The content of this structure is not made public by the API.
 </pre><pre class="programlisting">Typedef <a href="libxml-threads.html#xmlRMutex">xmlRMutex</a> * <a name="xmlRMutexPtr" id="xmlRMutexPtr">xmlRMutexPtr</a>
 </pre><pre class="programlisting">void	<a href="#xmlCleanupThreads">xmlCleanupThreads</a>		(void)</pre>
+<pre class="programlisting">int	<a href="#xmlDllMain">xmlDllMain</a>			(void * hinstDLL, <br />					 unsigned long fdwReason, <br />					 void * lpvReserved)</pre>
 <pre class="programlisting">void	<a href="#xmlFreeMutex">xmlFreeMutex</a>			(<a href="libxml-threads.html#xmlMutexPtr">xmlMutexPtr</a> tok)</pre>
 <pre class="programlisting">void	<a href="#xmlFreeRMutex">xmlFreeRMutex</a>			(<a href="libxml-threads.html#xmlRMutexPtr">xmlRMutexPtr</a> tok)</pre>
 <pre class="programlisting"><a href="libxml-globals.html#xmlGlobalStatePtr">xmlGlobalStatePtr</a>	<a href="#xmlGetGlobalState">xmlGetGlobalState</a>	(void)</pre>
@@ -38,7 +39,9 @@
 The content of this structure is not made public by the API.
 }</pre><h3><a name="xmlCleanupThreads" id="xmlCleanupThreads"></a>Function: xmlCleanupThreads</h3><pre class="programlisting">void	xmlCleanupThreads		(void)<br />
 </pre><p>xmlCleanupThreads() is used to to cleanup all the thread related data of the libxml2 library once processing has ended.</p>
-<h3><a name="xmlFreeMutex" id="xmlFreeMutex"></a>Function: xmlFreeMutex</h3><pre class="programlisting">void	xmlFreeMutex			(<a href="libxml-threads.html#xmlMutexPtr">xmlMutexPtr</a> tok)<br />
+<h3><a name="xmlDllMain" id="xmlDllMain"></a>Function: xmlDllMain</h3><pre class="programlisting">int	xmlDllMain			(void * hinstDLL, <br />					 unsigned long fdwReason, <br />					 void * lpvReserved)<br />
+</pre><p></p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>hinstDLL</tt></i>:</span></td><td></td></tr><tr><td><span class="term"><i><tt>fdwReason</tt></i>:</span></td><td></td></tr><tr><td><span class="term"><i><tt>lpvReserved</tt></i>:</span></td><td></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td></td></tr></tbody></table></div><h3><a name="xmlFreeMutex" id="xmlFreeMutex"></a>Function: xmlFreeMutex</h3><pre class="programlisting">void	xmlFreeMutex			(<a href="libxml-threads.html#xmlMutexPtr">xmlMutexPtr</a> tok)<br />
 </pre><p>xmlFreeMutex() is used to reclaim resources associated with a libxml2 token struct.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>tok</tt></i>:</span></td><td>the simple mutex</td></tr></tbody></table></div><h3><a name="xmlFreeRMutex" id="xmlFreeRMutex"></a>Function: xmlFreeRMutex</h3><pre class="programlisting">void	xmlFreeRMutex			(<a href="libxml-threads.html#xmlRMutexPtr">xmlRMutexPtr</a> tok)<br />
 </pre><p>xmlRFreeMutex() is used to reclaim resources associated with a reentrant mutex.</p>
diff --git a/doc/html/libxml-uri.html b/doc/html/libxml-uri.html
index fa7ee19..1c668e8 100644
--- a/doc/html/libxml-uri.html
+++ b/doc/html/libxml-uri.html
@@ -36,9 +36,10 @@
     char *	user	: the user part
     int	port	: the port number
     char *	path	: the path string
-    char *	query	: the query string
+    char *	query	: the query string (deprecated - use with
     char *	fragment	: the fragment identifier
     int	cleanup	: parsing potentially unclean URI
+    char *	query_raw	: the query string (as it appears in the
 }</pre><h3><a name="xmlBuildRelativeURI" id="xmlBuildRelativeURI"></a>Function: xmlBuildRelativeURI</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> *	xmlBuildRelativeURI	(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * URI, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * base)<br />
 </pre><p>Expresses the URI of the <a href="libxml-SAX.html#reference">reference</a> in terms relative to the base. Some examples of this operation include: base = "http://site1.com/docs/book1.html" URI input URI returned docs/pic1.gif pic1.gif docs/img/pic1.gif img/pic1.gif img/pic1.gif ../img/pic1.gif http://site1.com/docs/pic1.gif pic1.gif http://site2.com/docs/pic1.gif http://site2.com/docs/pic1.gif base = "docs/book1.html" URI input URI returned docs/pic1.gif pic1.gif docs/img/pic1.gif img/pic1.gif img/pic1.gif ../img/pic1.gif http://site1.com/docs/pic1.gif http://site1.com/docs/pic1.gif Note: if the URI <a href="libxml-SAX.html#reference">reference</a> is really wierd or complicated, it may be worthwhile to first convert it into a "nice" one by calling <a href="libxml-uri.html#xmlBuildURI">xmlBuildURI</a> (using 'base') before calling this routine, since this routine (for reasonable efficiency) assumes URI has already been through some validation.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>URI</tt></i>:</span></td><td>the URI <a href="libxml-SAX.html#reference">reference</a> under consideration</td></tr><tr><td><span class="term"><i><tt>base</tt></i>:</span></td><td>the base value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new URI string (to be freed by the caller) or NULL in case error.</td></tr></tbody></table></div><h3><a name="xmlBuildURI" id="xmlBuildURI"></a>Function: xmlBuildURI</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> *	xmlBuildURI		(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * URI, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * base)<br />
@@ -68,5 +69,5 @@
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the string of the URI to escape</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>an copy of the string, but escaped 25 May 2001 Uses <a href="libxml-uri.html#xmlParseURI">xmlParseURI</a> and <a href="libxml-uri.html#xmlURIEscapeStr">xmlURIEscapeStr</a> to try to escape correctly according to RFC2396. - Carl Douglas</td></tr></tbody></table></div><h3><a name="xmlURIEscapeStr" id="xmlURIEscapeStr"></a>Function: xmlURIEscapeStr</h3><pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> *	xmlURIEscapeStr		(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * str, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * list)<br />
 </pre><p>This routine escapes a string to hex, ignoring reserved <a href="libxml-SAX.html#characters">characters</a> (a-z) and the <a href="libxml-SAX.html#characters">characters</a> in the exception list.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>string to escape</td></tr><tr><td><span class="term"><i><tt>list</tt></i>:</span></td><td>exception list string of chars not to escape</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new escaped string or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlURIUnescapeString" id="xmlURIUnescapeString"></a>Function: xmlURIUnescapeString</h3><pre class="programlisting">char *	xmlURIUnescapeString		(const char * str, <br />					 int len, <br />					 char * target)<br />
-</pre><p>Unescaping routine, does not do validity checks ! Output is direct unsigned char translation of %XX values (no encoding)</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the string to unescape</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the length in bytes to unescape (or &lt;= 0 to indicate full string)</td></tr><tr><td><span class="term"><i><tt>target</tt></i>:</span></td><td>optional destination buffer</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>an copy of the string, but unescaped</td></tr></tbody></table></div><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
+</pre><p>Unescaping routine, but does not check that the string is an URI. The output is a direct unsigned char translation of %XX values (no encoding) Note that the length of the result can only be smaller or same size as the input string.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>str</tt></i>:</span></td><td>the string to unescape</td></tr><tr><td><span class="term"><i><tt>len</tt></i>:</span></td><td>the length in bytes to unescape (or &lt;= 0 to indicate full string)</td></tr><tr><td><span class="term"><i><tt>target</tt></i>:</span></td><td>optional destination buffer</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a copy of the string, but unescaped, will return NULL only in case of error</td></tr></tbody></table></div><p><a href="../bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
diff --git a/doc/libxml2-api.xml b/doc/libxml2-api.xml
index a7a8d56..4e031bc 100644
--- a/doc/libxml2-api.xml
+++ b/doc/libxml2-api.xml
@@ -1371,10 +1371,11 @@
      <exports symbol='xmlRMutexUnlock' type='function'/>
      <exports symbol='xmlGetGlobalState' type='function'/>
      <exports symbol='xmlNewMutex' type='function'/>
-     <exports symbol='xmlRMutexLock' type='function'/>
-     <exports symbol='xmlInitThreads' type='function'/>
-     <exports symbol='xmlUnlockLibrary' type='function'/>
+     <exports symbol='xmlDllMain' type='function'/>
      <exports symbol='xmlFreeMutex' type='function'/>
+     <exports symbol='xmlUnlockLibrary' type='function'/>
+     <exports symbol='xmlInitThreads' type='function'/>
+     <exports symbol='xmlRMutexLock' type='function'/>
     </file>
     <file name='tree'>
      <summary>interfaces for tree manipulation</summary>
@@ -6643,9 +6644,10 @@
       <field name='user' type='char *' info=' the user part'/>
       <field name='port' type='int' info=' the port number'/>
       <field name='path' type='char *' info=' the path string'/>
-      <field name='query' type='char *' info=' the query string'/>
+      <field name='query' type='char *' info=' the query string (deprecated - use with caution)'/>
       <field name='fragment' type='char *' info=' the fragment identifier'/>
       <field name='cleanup' type='int' info=' parsing potentially unclean URI'/>
+      <field name='query_raw' type='char *' info=' the query string (as it appears in the URI)'/>
     </struct>
     <typedef name='xmlURIPtr' file='uri' type='xmlURI *'/>
     <struct name='xmlValidCtxt' file='valid' type='struct _xmlValidCtxt'>
@@ -9299,6 +9301,13 @@
       <return type='int' info='the number of elements in the dictionnary or -1 in case of error'/>
       <arg name='dict' type='xmlDictPtr' info='the dictionnary'/>
     </function>
+    <function name='xmlDllMain' file='threads' module='threads'>
+      <info></info>
+      <return type='int' info=''/>
+      <arg name='hinstDLL' type='void *' info=''/>
+      <arg name='fdwReason' type='unsigned long' info=''/>
+      <arg name='lpvReserved' type='void *' info=''/>
+    </function>
     <function name='xmlDocCopyNode' file='tree' module='tree'>
       <info>Do a copy of the node to a given document.</info>
       <return type='xmlNodePtr' info='a new #xmlNodePtr, or NULL in case of error.'/>
@@ -16511,8 +16520,8 @@
       <arg name='list' type='const xmlChar *' info='exception list string of chars not to escape'/>
     </function>
     <function name='xmlURIUnescapeString' file='uri' module='uri'>
-      <info>Unescaping routine, does not do validity checks ! Output is direct unsigned char translation of %XX values (no encoding)</info>
-      <return type='char *' info='an copy of the string, but unescaped'/>
+      <info>Unescaping routine, but does not check that the string is an URI. The output is a direct unsigned char translation of %XX values (no encoding) Note that the length of the result can only be smaller or same size as the input string.</info>
+      <return type='char *' info='a copy of the string, but unescaped, will return NULL only in case of error'/>
       <arg name='str' type='const char *' info='the string to unescape'/>
       <arg name='len' type='int' info='the length in bytes to unescape (or &lt;= 0 to indicate full string)'/>
       <arg name='target' type='char *' info='optional destination buffer'/>
diff --git a/doc/libxml2-refs.xml b/doc/libxml2-refs.xml
index 91dc3b4..c20fc4e 100644
--- a/doc/libxml2-refs.xml
+++ b/doc/libxml2-refs.xml
@@ -1885,6 +1885,7 @@
     <reference name='xmlDictQLookup' href='html/libxml-dict.html#xmlDictQLookup'/>
     <reference name='xmlDictReference' href='html/libxml-dict.html#xmlDictReference'/>
     <reference name='xmlDictSize' href='html/libxml-dict.html#xmlDictSize'/>
+    <reference name='xmlDllMain' href='html/libxml-threads.html#xmlDllMain'/>
     <reference name='xmlDoValidityCheckingDefaultValue' href='html/libxml-globals.html#xmlDoValidityCheckingDefaultValue'/>
     <reference name='xmlDoc' href='html/libxml-tree.html#xmlDoc'/>
     <reference name='xmlDocCopyNode' href='html/libxml-tree.html#xmlDocCopyNode'/>
@@ -5431,6 +5432,7 @@
       <ref name='xmlDictQLookup'/>
       <ref name='xmlDictReference'/>
       <ref name='xmlDictSize'/>
+      <ref name='xmlDllMain'/>
       <ref name='xmlDoValidityCheckingDefaultValue'/>
       <ref name='xmlDoc'/>
       <ref name='xmlDocCopyNode'/>
@@ -8473,6 +8475,7 @@
     </type>
     <type name='unsigned long'>
       <ref name='ftpListCallback'/>
+      <ref name='xmlDllMain'/>
       <ref name='xmlSchemaValidateListSimpleTypeFacet'/>
     </type>
     <type name='unsigned long *'>
@@ -8594,6 +8597,7 @@
       <ref name='xmlCtxtGetLastError'/>
       <ref name='xmlCtxtReadIO'/>
       <ref name='xmlCtxtResetLastError'/>
+      <ref name='xmlDllMain'/>
       <ref name='xmlFileClose'/>
       <ref name='xmlFileRead'/>
       <ref name='xmlFreeFunc'/>
@@ -11763,6 +11767,7 @@
     </file>
     <file name='threads'>
       <ref name='xmlCleanupThreads'/>
+      <ref name='xmlDllMain'/>
       <ref name='xmlFreeMutex'/>
       <ref name='xmlFreeRMutex'/>
       <ref name='xmlGetGlobalState'/>
@@ -16594,7 +16599,6 @@
           <ref name='xmlOutputMatchCallback'/>
           <ref name='xmlOutputOpenCallback'/>
           <ref name='xmlOutputWriteCallback'/>
-          <ref name='xmlURIUnescapeString'/>
         </word>
         <word name='OutputBufferCreateFilenameFunc'>
           <ref name='xmlOutputBufferCreateFilenameDefault'/>
@@ -18943,6 +18947,7 @@
           <ref name='xmlValidatePushElement'/>
         </word>
         <word name='appears'>
+          <ref name='_xmlURI'/>
           <ref name='xmlExpGetStart'/>
           <ref name='xmlParseCharData'/>
           <ref name='xmlParseElementChildrenContentDecl'/>
@@ -19665,6 +19670,9 @@
         <word name='cause'>
           <ref name='xmlShellPrintXPathError'/>
         </word>
+        <word name='caution'>
+          <ref name='_xmlURI'/>
+        </word>
         <word name='cdata-section-'>
           <ref name='xmlStreamPushNode'/>
           <ref name='xmlStreamWantsAnyNode'/>
@@ -19796,7 +19804,6 @@
           <ref name='xmlParseElementMixedContentDecl'/>
           <ref name='xmlReconciliateNs'/>
           <ref name='xmlURIEscape'/>
-          <ref name='xmlURIUnescapeString'/>
           <ref name='xmlValidateAttributeDecl'/>
           <ref name='xmlValidateDocument'/>
           <ref name='xmlValidateDocumentFinal'/>
@@ -21002,6 +21009,7 @@
         <word name='deprecated'>
           <ref name='LIBXML_LEGACY_ENABLED'/>
           <ref name='_htmlElemDesc'/>
+          <ref name='_xmlURI'/>
           <ref name='htmlAttrAllowed'/>
           <ref name='htmlElementAllowedHere'/>
           <ref name='htmlElementStatusHere'/>
@@ -27405,6 +27413,7 @@
           <ref name='xmlReplaceNode'/>
           <ref name='xmlStrEqual'/>
           <ref name='xmlStrncatNew'/>
+          <ref name='xmlURIUnescapeString'/>
           <ref name='xmlXPathCmpNodes'/>
           <ref name='xmlXPathIdFunction'/>
           <ref name='xmlXPathLangFunction'/>
@@ -27897,6 +27906,9 @@
         <word name='slots'>
           <ref name='xmlXPathContextSetCache'/>
         </word>
+        <word name='smaller'>
+          <ref name='xmlURIUnescapeString'/>
+        </word>
         <word name='smallest'>
           <ref name='xmlXPathCeilingFunction'/>
         </word>
@@ -29525,7 +29537,6 @@
           <ref name='xmlParserValidityWarning'/>
           <ref name='xmlTextReaderIsValid'/>
           <ref name='xmlURIEscape'/>
-          <ref name='xmlURIUnescapeString'/>
           <ref name='xmlValidGetValidElements'/>
           <ref name='xmlValidateDocumentFinal'/>
           <ref name='xmlValidateNotationDecl'/>
diff --git a/doc/libxml2.xsa b/doc/libxml2.xsa
index 45afec6..81db327 100644
--- a/doc/libxml2.xsa
+++ b/doc/libxml2.xsa
@@ -8,59 +8,32 @@
   </vendor>
   <product id="libxml2">
     <name>libxml2</name>
-    <version>2.6.27</version>
-    <last-release> Oct 25 2006</last-release>
+    <version>2.6.28</version>
+    <last-release> Apr 17 2007</last-release>
     <info-url>http://xmlsoft.org/</info-url>
-    <changes>   - Portability fixes: file names on windows (Roland Schwingel, 
-      Emelyanov Alexey), windows compile fixup (Rob Richards), 
-      AIX iconv() is apparently case sensitive
-   - improvements: Python XPath types mapping (Nic Ferrier), XPath optimization
-      (Kasimier), add xmlXPathCompiledEvalToBoolean (Kasimier), Python node
-      equality and comparison (Andreas Pakulat), xmlXPathCollectAndTest
-      improvememt (Kasimier), expose if library was compiled with zlib 
-      support (Andrew Nosenko), cache for xmlSchemaIDCMatcher structs
-      (Kasimier), xmlTextConcat should work with comments and PIs (Rob
-      Richards), export htmlNewParserCtxt needed by Michael Day, refactoring
-      of catalog entity loaders (Michael Day), add XPointer support to 
-      python bindings (Ross Reedstrom, Brian West and Stefan Anca), 
-      try to sort out most file path to URI conversions and xmlPathToUri,
-      add --html --memory case to xmllint
-   - building fix: fix --with-minimum (Felipe Contreras), VMS fix, 
-      const'ification of HTML parser structures (Matthias Clasen),
-      portability fix (Emelyanov Alexey), wget autodetection (Peter
-      Breitenlohner),  remove the build path recorded in the python
-      shared module, separate library flags for shared and static builds
-      (Mikhail Zabaluev), fix --with-minimum --with-sax1 builds, fix
-      --with-minimum --with-schemas builds
-   - bug fix: xmlGetNodePath fix (Kasimier), xmlDOMWrapAdoptNode and
-      attribute (Kasimier), crash when using the recover mode, 
-      xmlXPathEvalExpr problem (Kasimier), xmlXPathCompExprAdd bug (Kasimier),
-      missing destry in xmlFreeRMutex (Andrew Nosenko), XML Schemas fixes
-      (Kasimier), warning on entities processing, XHTML script and style
-      serialization (Kasimier), python generator for long types, bug in
-      xmlSchemaClearValidCtxt (Bertrand Fritsch), xmlSchemaXPathEvaluate
-      allocation bug (Marton Illes), error message end of line (Rob Richards),
-      fix attribute serialization in writer (Rob Richards), PHP4 DTD validation
-      crasher, parser safety patch (Ben Darnell), _private context propagation
-      when parsing entities (with Michael Day), fix entities behaviour when 
-      using SAX, URI to file path fix (Mikhail Zabaluev), disapearing validity
-      context, arg error in SAX callback (Mike Hommey), fix mixed-content
-      autodetect when using --noblanks, fix xmlIOParseDTD error handling,
-      fix bug in xmlSplitQName on special Names, fix Relax-NG element content
-      validation bug, fix xmlReconciliateNs bug, fix potential attribute 
-      XML parsing bug, fix line/column accounting in XML parser, chunking bug
-      in the HTML parser on script, try to detect obviously buggy HTML
-      meta encoding indications, bugs with encoding BOM and xmlSaveDoc, 
-      HTML entities in attributes parsing, HTML minimized attribute values,
-      htmlReadDoc and htmlReadIO were broken, error handling bug in
-      xmlXPathEvalExpression (Olaf Walkowiak), fix a problem in
-      htmlCtxtUseOptions, xmlNewInputFromFile could leak (Marius Konitzer),
-      bug on misformed SSD regexps (Christopher Boumenot)
-      
-   - documentation: warning about XML_PARSE_COMPACT (Kasimier Buchcik),
-      fix xmlXPathCastToString documentation, improve man pages for
-      xmllitn and xmlcatalog (Daniel Leidert), fixed comments of a few
-      functions
+    <changes>   - Documentation: comment fixes (Markus Keim), xpath comments fixes too
+      (James Dennett)
+   - Bug fixes: XPath bug (William Brack), HTML parser autoclose stack usage
+      (Usamah Malik), various regexp bug fixes (DV and William), path conversion
+      on Windows (Igor Zlatkovic), htmlCtxtReset fix (Michael Day), XPath
+      principal node of axis bug, HTML serialization of some codepoint
+      (Steven Rainwater), user data propagation in XInclude (Michael Day),
+      standalone and XML decl detection (Michael Day), Python id ouptut
+      for some id, fix the big python string memory leak, URI parsing fixes
+      (Stéphane Bidoul and William), long comments parsing bug (William),
+      concurrent threads initialization (Ted Phelps), invalid char
+      in text XInclude (William), XPath memory leak (William), tab in
+      python problems (Andreas Hanke), XPath node comparison error
+      (Oleg Paraschenko), cleanup patch for reader (Julien Reichel),
+      XML Schemas attribute group (William), HTML parsing problem (William),
+      fix char 0x2d in regexps (William), regexp quantifier range with
+      min occurs of 0 (William), HTML script/style parsing (Mike Day)
+   - Improvement: make xmlTextReaderSetup() public
+   - Compilation and postability: fix a missing include problem (William),
+      __ss_familly on AIX again (Björn Wiberg), compilation without zlib
+      (Michael Day), catalog patch for Win32 (Christian Ehrlicher),
+      Windows CE fixes (Andreas Stricke)
+   - Various CVS to SVN infrastructure changes
 
 </changes>
   </product>
diff --git a/doc/news.html b/doc/news.html
index e05ab39..3c4235f 100644
--- a/doc/news.html
+++ b/doc/news.html
@@ -12,7 +12,30 @@
   <li>Finishing up <a href="http://www.w3.org/TR/xmlschema-1/">XML
   Schemas</a></li>
 </ul><p>The <a href="ChangeLog.html">change log</a> describes the recents commits
-to the <a href="http://svn.gnome.org/viewcvs/libxml2/trunk/">SVN</a> code base.</p><p>Here is the list of public releases:</p><h3>2.6.28: Apr 17 2007</h3><ul><li>Documentation: comment fixes (Markus Keim), xpath comments fixes too
+to the <a href="http://svn.gnome.org/viewcvs/libxml2/trunk/">SVN</a> code base.</p><p>Here is the list of public releases:</p><h3>2.6.29: Jun 12 2007</h3><ul><li>Portability: patches from Andreas Stricke for WinCEi,
+      fix compilation warnings (William Brack), avoid warnings on Apple OS/X
+      (Wendy Doyle and Mark Rowe), Windows compilation and threading
+      improvements (Rob Richards), compilation against old Python versions,
+      new GNU tar changes (Ryan Hill)</li>
+  <li>Documentation: xmlURIUnescapeString comment, </li>
+  <li>Bugfixes: xmlBufferAdd problem (Richard Jones), 'make valgrind'
+      flag fix (Richard Jones), regexp interpretation of \,
+      htmlCreateDocParserCtxt (Jean-Daniel Dupas), configure.in
+      typo (Bjorn Reese), entity content failure, xmlListAppend() fix
+      (Georges-André Silber), XPath number serialization (William Brack),
+      nanohttp gzipped stream fix (William Brack and Alex Cornejo),
+      xmlCharEncFirstLine typo (Mark Rowe), uri bug (François Delyon),
+      XPath string value of PI nodes (William Brack), XPath node set
+      sorting bugs (William Brack), avoid outputting namespace decl
+      dups in the writer (Rob Richards), xmlCtxtReset bug, UTF-8 encoding
+      error handling, recustion on next in catalogs, fix a Relax-NG crash,
+      workaround wrong file: URIs, htmlNodeDumpFormatOutput on attributes,
+      invalid character in attribute detection bug, big comments before 
+      internal subset streaming bug, HTML parsing of attributes with : in
+      the name </li>
+  <li>Improvement: keep URI query parts in raw form (Richard Jones),
+      embed tag support in HTML (Michael Day) </li>
+</ul><h3>2.6.28: Apr 17 2007</h3><ul><li>Documentation: comment fixes (Markus Keim), xpath comments fixes too
       (James Dennett)</li>
   <li>Bug fixes: XPath bug (William Brack), HTML parser autoclose stack usage
       (Usamah Malik), various regexp bug fixes (DV and William), path conversion
diff --git a/doc/xml.html b/doc/xml.html
index 4b01691..6db27c7 100644
--- a/doc/xml.html
+++ b/doc/xml.html
@@ -739,6 +739,33 @@
 
 <p>Here is the list of public releases:</p>
 
+<h3>2.6.29: Jun 12 2007</h3>
+<ul>
+  <li>Portability: patches from Andreas Stricke for WinCEi,
+      fix compilation warnings (William Brack), avoid warnings on Apple OS/X
+      (Wendy Doyle and Mark Rowe), Windows compilation and threading
+      improvements (Rob Richards), compilation against old Python versions,
+      new GNU tar changes (Ryan Hill)</li>
+  <li>Documentation: xmlURIUnescapeString comment, </li>
+  <li>Bugfixes: xmlBufferAdd problem (Richard Jones), 'make valgrind'
+      flag fix (Richard Jones), regexp interpretation of \,
+      htmlCreateDocParserCtxt (Jean-Daniel Dupas), configure.in
+      typo (Bjorn Reese), entity content failure, xmlListAppend() fix
+      (Georges-André Silber), XPath number serialization (William Brack),
+      nanohttp gzipped stream fix (William Brack and Alex Cornejo),
+      xmlCharEncFirstLine typo (Mark Rowe), uri bug (François Delyon),
+      XPath string value of PI nodes (William Brack), XPath node set
+      sorting bugs (William Brack), avoid outputting namespace decl
+      dups in the writer (Rob Richards), xmlCtxtReset bug, UTF-8 encoding
+      error handling, recustion on next in catalogs, fix a Relax-NG crash,
+      workaround wrong file: URIs, htmlNodeDumpFormatOutput on attributes,
+      invalid character in attribute detection bug, big comments before 
+      internal subset streaming bug, HTML parsing of attributes with : in
+      the name, IDness of name in HTML (Dagfinn I. Mannsåker) </li>
+  <li>Improvement: keep URI query parts in raw form (Richard Jones),
+      embed tag support in HTML (Michael Day) </li>
+</ul>
+
 <h3>2.6.28: Apr 17 2007</h3>
 <ul>
   <li>Documentation: comment fixes (Markus Keim), xpath comments fixes too
diff --git a/valid.c b/valid.c
index b035f62..2510b8d 100644
--- a/valid.c
+++ b/valid.c
@@ -2724,7 +2724,7 @@
     } else if (doc->type == XML_HTML_DOCUMENT_NODE) {
         if ((xmlStrEqual(BAD_CAST "id", attr->name)) ||
 	    ((xmlStrEqual(BAD_CAST "name", attr->name)) &&
-	    ((elem == NULL) || (!xmlStrEqual(elem->name, BAD_CAST "input")))))
+	    ((elem == NULL) || (xmlStrEqual(elem->name, BAD_CAST "a")))))
 	    return(1);
 	return(0);    
     } else if (elem == NULL) {