fixing the way testapi.c is generated, fixes bug #161386 fix a comment

* Makefile.am testapi.c doc/Makefile.am: fixing the way testapi.c
  is generated, fixes bug #161386
* dict.c: fix a comment typo
* elfgcchack.h doc/*: regenerated
Daniel
diff --git a/ChangeLog b/ChangeLog
index c66d064..b89316f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Wed Jan 26 00:43:05 CET 2005 Daniel Veillard <daniel@veillard.com>
+
+	* Makefile.am testapi.c doc/Makefile.am: fixing the way testapi.c
+	  is generated, fixes bug #161386
+	* dict.c: fix a comment typo
+	* elfgcchack.h doc/*: regenerated
+
 Tue Jan 25 22:39:33 CET 2005 Daniel Veillard <daniel@veillard.com>
 
 	* parser.c: found and fixed 2 problems in the internal subset scanning
diff --git a/Makefile.am b/Makefile.am
index 3ac2887..4f273e4 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -123,7 +123,14 @@
 testdso_la_SOURCES = testdso.c
 testdso_la_LDFLAGS = -module -rpath $(libdir)
 
-testapi.c: $(srcdir)/gentest.py doc/libxml2-api.xml
+# that one forces the rebuild when "make rebuild" is run on doc/
+rebuild_testapi:
+	-@(if [ "$(PYTHON)" != "" ] ; then \
+	    $(PYTHON) $(srcdir)/gentest.py $(srcdir) ; fi )
+
+# that one is just to make sure it is rebuilt if missing
+# but adding the dependances generate mess
+testapi.c:
 	-@(if [ "$(PYTHON)" != "" ] ; then \
 	    $(PYTHON) $(srcdir)/gentest.py $(srcdir) ; fi )
 
diff --git a/dict.c b/dict.c
index fd3e531..8b1b121 100644
--- a/dict.c
+++ b/dict.c
@@ -100,7 +100,7 @@
 }
 
 /**
- * xmlCatalogCleanup:
+ * xmlDictCleanup:
  *
  * Free the dictionary mutex.
  */
diff --git a/doc/APIchunk0.html b/doc/APIchunk0.html
index c0d3fe3..997b59b 100644
--- a/doc/APIchunk0.html
+++ b/doc/APIchunk0.html
@@ -121,6 +121,7 @@
 <a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br />
 <a href="html/libxml-xmlwriter.html#xmlTextWriterEndDocument">xmlTextWriterEndDocument</a><br />
 </dd><dt>Allocate</dt><dd><a href="html/libxml-nanoftp.html#xmlNanoFTPNewCtxt">xmlNanoFTPNewCtxt</a><br />
+<a href="html/libxml-valid.html#xmlNewDocElementContent">xmlNewDocElementContent</a><br />
 <a href="html/libxml-valid.html#xmlNewElementContent">xmlNewElementContent</a><br />
 <a href="html/libxml-parser.html#xmlNewParserCtxt">xmlNewParserCtxt</a><br />
 <a href="html/libxml-valid.html#xmlNewValidCtxt">xmlNewValidCtxt</a><br />
@@ -247,6 +248,7 @@
 </dd><dt>Bugs:</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br />
 </dd><dt>Buhid</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsBuhid">xmlUCSIsBuhid</a><br />
 </dd><dt>Build</dt><dd><a href="html/libxml-valid.html#xmlCopyAttributeTable">xmlCopyAttributeTable</a><br />
+<a href="html/libxml-valid.html#xmlCopyDocElementContent">xmlCopyDocElementContent</a><br />
 <a href="html/libxml-valid.html#xmlCopyElementContent">xmlCopyElementContent</a><br />
 <a href="html/libxml-valid.html#xmlCopyElementTable">xmlCopyElementTable</a><br />
 <a href="html/libxml-entities.html#xmlCopyEntitiesTable">xmlCopyEntitiesTable</a><br />
diff --git a/doc/APIchunk10.html b/doc/APIchunk10.html
index 4b7b59d..f890431 100644
--- a/doc/APIchunk10.html
+++ b/doc/APIchunk10.html
@@ -41,7 +41,6 @@
 <a href="html/libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a><br />
 <a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br />
 <a href="html/libxml-entities.html#xmlCleanupPredefinedEntities">xmlCleanupPredefinedEntities</a><br />
-<a href="html/libxml-valid.html#xmlFreeElementContent">xmlFreeElementContent</a><br />
 <a href="html/libxml-entities.html#xmlInitializePredefinedEntities">xmlInitializePredefinedEntities</a><br />
 <a href="html/libxml-nanoftp.html#xmlNanoFTPRead">xmlNanoFTPRead</a><br />
 <a href="html/libxml-nanohttp.html#xmlNanoHTTPRead">xmlNanoHTTPRead</a><br />
diff --git a/doc/APIchunk11.html b/doc/APIchunk11.html
index f48ee2a..777baa9 100644
--- a/doc/APIchunk11.html
+++ b/doc/APIchunk11.html
@@ -108,6 +108,7 @@
 </dd><dt>decimal</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br />
 </dd><dt>decl</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaAttribute">_xmlSchemaAttribute</a><br />
 <a href="html/libxml-valid.html#xmlAddAttributeDecl">xmlAddAttributeDecl</a><br />
+<a href="html/libxml-valid.html#xmlNewDocElementContent">xmlNewDocElementContent</a><br />
 <a href="html/libxml-valid.html#xmlNewElementContent">xmlNewElementContent</a><br />
 </dd><dt>declarations</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br />
 <a href="html/libxml-HTMLparser.html#htmlParseCharRef">htmlParseCharRef</a><br />
@@ -223,6 +224,7 @@
 <a href="html/libxml-HTMLparser.html#htmlElementStatusHere">htmlElementStatusHere</a><br />
 <a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br />
 <a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br />
+<a href="html/libxml-entities.html#xmlCreateEntitiesTable">xmlCreateEntitiesTable</a><br />
 <a href="html/libxml-parserInternals.html#xmlDecodeEntities">xmlDecodeEntities</a><br />
 <a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br />
 <a href="html/libxml-parserInternals.html#xmlScanName">xmlScanName</a><br />
@@ -266,6 +268,7 @@
 </dd><dt>description</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br />
 <a href="html/libxml-HTMLparser.html#_htmlEntityDesc">_htmlEntityDesc</a><br />
 <a href="html/libxml-HTMLparser.html#htmlElementAllowedHereDesc">htmlElementAllowedHereDesc</a><br />
+<a href="html/libxml-valid.html#xmlCopyDocElementContent">xmlCopyDocElementContent</a><br />
 <a href="html/libxml-valid.html#xmlCopyElementContent">xmlCopyElementContent</a><br />
 <a href="html/libxml-valid.html#xmlGetDtdAttrDesc">xmlGetDtdAttrDesc</a><br />
 <a href="html/libxml-valid.html#xmlGetDtdElementDesc">xmlGetDtdElementDesc</a><br />
@@ -350,9 +353,11 @@
 <a href="html/libxml-xmlregexp.html#xmlRegexpIsDeterminist">xmlRegexpIsDeterminist</a><br />
 </dd><dt>dict</dt><dd><a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br />
 </dd><dt>dictionary</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
+<a href="html/libxml-dict.html#xmlDictCleanup">xmlDictCleanup</a><br />
 <a href="html/libxml-dict.html#xmlDictCreate">xmlDictCreate</a><br />
 <a href="html/libxml-dict.html#xmlDictCreateSub">xmlDictCreateSub</a><br />
 <a href="html/libxml-dict.html#xmlDictReference">xmlDictReference</a><br />
+<a href="html/libxml-hash.html#xmlHashCreateDict">xmlHashCreateDict</a><br />
 </dd><dt>dictionnary</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
 <a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br />
 <a href="html/libxml-dict.html#xmlDictCreate">xmlDictCreate</a><br />
@@ -497,6 +502,7 @@
 </dd><dt>doesn</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br />
 <a href="html/libxml-HTMLparser.html#htmlElementAllowedHere">htmlElementAllowedHere</a><br />
 <a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br />
+<a href="html/libxml-entities.html#xmlCreateEntitiesTable">xmlCreateEntitiesTable</a><br />
 <a href="html/libxml-tree.html#xmlFreeNode">xmlFreeNode</a><br />
 <a href="html/libxml-encoding.html#xmlInitCharEncodingHandlers">xmlInitCharEncodingHandlers</a><br />
 <a href="html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault</a><br />
diff --git a/doc/APIchunk13.html b/doc/APIchunk13.html
index 81e2cd8..d43cd9a 100644
--- a/doc/APIchunk13.html
+++ b/doc/APIchunk13.html
@@ -127,6 +127,7 @@
 <a href="html/libxml-xmlstring.html#xmlStrEqual">xmlStrEqual</a><br />
 </dd><dt>fatal</dt><dd><a href="html/libxml-parser.html#fatalErrorSAXFunc">fatalErrorSAXFunc</a><br />
 </dd><dt>fatalError</dt><dd><a href="html/libxml-parser.html#fatalErrorSAXFunc">fatalErrorSAXFunc</a><br />
+</dd><dt>favor</dt><dd><a href="html/libxml-valid.html#xmlNewElementContent">xmlNewElementContent</a><br />
 </dd><dt>feature</dt><dd><a href="html/libxml-parser.html#xmlGetFeature">xmlGetFeature</a><br />
 <a href="html/libxml-parser.html#xmlGetFeaturesList">xmlGetFeaturesList</a><br />
 <a href="html/libxml-parser.html#xmlSetFeature">xmlSetFeature</a><br />
diff --git a/doc/APIchunk15.html b/doc/APIchunk15.html
index afdadd1..03cff70 100644
--- a/doc/APIchunk15.html
+++ b/doc/APIchunk15.html
@@ -382,6 +382,8 @@
 <a href="html/libxml-tree.html#xmlAddChild">xmlAddChild</a><br />
 <a href="html/libxml-tree.html#xmlAddNextSibling">xmlAddNextSibling</a><br />
 <a href="html/libxml-tree.html#xmlAddPrevSibling">xmlAddPrevSibling</a><br />
+<a href="html/libxml-valid.html#xmlCopyElementContent">xmlCopyElementContent</a><br />
+<a href="html/libxml-valid.html#xmlFreeElementContent">xmlFreeElementContent</a><br />
 <a href="html/libxml-chvalid.html#xmlIsBaseChar">xmlIsBaseChar</a><br />
 <a href="html/libxml-chvalid.html#xmlIsBlank">xmlIsBlank</a><br />
 <a href="html/libxml-chvalid.html#xmlIsChar">xmlIsChar</a><br />
diff --git a/doc/APIchunk17.html b/doc/APIchunk17.html
index 7f05a0c..74b905a 100644
--- a/doc/APIchunk17.html
+++ b/doc/APIchunk17.html
@@ -48,7 +48,8 @@
 </dd><dt>maintained</dt><dd><a href="html/libxml-valid.html#xmlRemoveID">xmlRemoveID</a><br />
 <a href="html/libxml-valid.html#xmlRemoveRef">xmlRemoveRef</a><br />
 </dd><dt>major</dt><dd><a href="html/libxml-parserInternals.html#xmlDecodeEntities">xmlDecodeEntities</a><br />
-</dd><dt>make</dt><dd><a href="html/libxml-tree.html#xmlNewNode">xmlNewNode</a><br />
+</dd><dt>make</dt><dd><a href="html/libxml-entities.html#xmlCreateEntitiesTable">xmlCreateEntitiesTable</a><br />
+<a href="html/libxml-tree.html#xmlNewNode">xmlNewNode</a><br />
 <a href="html/libxml-xmlsave.html#xmlSaveClose">xmlSaveClose</a><br />
 <a href="html/libxml-xmlsave.html#xmlSaveFlush">xmlSaveFlush</a><br />
 </dd><dt>makes</dt><dd><a href="html/libxml-catalog.html#xmlLoadCatalog">xmlLoadCatalog</a><br />
@@ -285,7 +286,8 @@
 </dd><dt>multiply</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathMultValues">xmlXPathMultValues</a><br />
 </dd><dt>multithreaded</dt><dd><a href="html/libxml-parserInternals.html#htmlInitAutoClose">htmlInitAutoClose</a><br />
 <a href="html/libxml-parser.html#xmlInitParser">xmlInitParser</a><br />
-</dd><dt>mutex</dt><dd><a href="html/libxml-threads.html#xmlFreeMutex">xmlFreeMutex</a><br />
+</dd><dt>mutex</dt><dd><a href="html/libxml-dict.html#xmlDictCleanup">xmlDictCleanup</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#xmlMutexLock">xmlMutexLock</a><br />
 <a href="html/libxml-threads.html#xmlMutexUnlock">xmlMutexUnlock</a><br />
diff --git a/doc/APIchunk19.html b/doc/APIchunk19.html
index 1c0d247..e482e6f 100644
--- a/doc/APIchunk19.html
+++ b/doc/APIchunk19.html
@@ -59,6 +59,7 @@
 <a href="html/libxml-dict.html#xmlDictCreateSub">xmlDictCreateSub</a><br />
 <a href="html/libxml-xmlerror.html#xmlGetLastError">xmlGetLastError</a><br />
 <a href="html/libxml-hash.html#xmlHashCreate">xmlHashCreate</a><br />
+<a href="html/libxml-hash.html#xmlHashCreateDict">xmlHashCreateDict</a><br />
 <a href="html/libxml-list.html#xmlListRemoveFirst">xmlListRemoveFirst</a><br />
 <a href="html/libxml-list.html#xmlListRemoveLast">xmlListRemoveLast</a><br />
 </dd><dt>occurences</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans">xmlAutomataNewCountTrans</a><br />
@@ -331,7 +332,9 @@
 <a href="html/libxml-dict.html#xmlDictOwns">xmlDictOwns</a><br />
 </dd><dt>owner</dt><dd><a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br />
 </dd><dt>ownership</dt><dd><a href="html/libxml-valid.html#xmlAddAttributeDecl">xmlAddAttributeDecl</a><br />
-</dd><dt>owning</dt><dd><a href="html/libxml-tree.html#xmlNewDocFragment">xmlNewDocFragment</a><br />
+</dd><dt>owning</dt><dd><a href="html/libxml-valid.html#xmlCopyDocElementContent">xmlCopyDocElementContent</a><br />
+<a href="html/libxml-valid.html#xmlFreeDocElementContent">xmlFreeDocElementContent</a><br />
+<a href="html/libxml-tree.html#xmlNewDocFragment">xmlNewDocFragment</a><br />
 </dd><dt>owns</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD">XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD</a><br />
 </dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a>
 <a href="APIchunk1.html">C-C</a>
diff --git a/doc/APIchunk2.html b/doc/APIchunk2.html
index 7c69017..a37dcda 100644
--- a/doc/APIchunk2.html
+++ b/doc/APIchunk2.html
@@ -126,7 +126,10 @@
 </dd><dt>Deletes</dt><dd><a href="html/libxml-list.html#xmlListDelete">xmlListDelete</a><br />
 </dd><dt>Deprecated</dt><dd><a href="html/libxml-HTMLparser.html#htmlAttrAllowed">htmlAttrAllowed</a><br />
 <a href="html/libxml-entities.html#xmlCleanupPredefinedEntities">xmlCleanupPredefinedEntities</a><br />
+<a href="html/libxml-valid.html#xmlCopyElementContent">xmlCopyElementContent</a><br />
+<a href="html/libxml-valid.html#xmlFreeElementContent">xmlFreeElementContent</a><br />
 <a href="html/libxml-entities.html#xmlInitializePredefinedEntities">xmlInitializePredefinedEntities</a><br />
+<a href="html/libxml-valid.html#xmlNewElementContent">xmlNewElementContent</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseQuotedString">xmlParseQuotedString</a><br />
 <a href="html/libxml-valid.html#xmlSprintfElementContent">xmlSprintfElementContent</a><br />
 </dd><dt>Depth</dt><dd><a href="html/libxml-parser.html#_xmlParserCtxt">_xmlParserCtxt</a><br />
diff --git a/doc/APIchunk21.html b/doc/APIchunk21.html
index 7b403a0..0d8413b 100644
--- a/doc/APIchunk21.html
+++ b/doc/APIchunk21.html
@@ -133,6 +133,7 @@
 <a href="html/libxml-HTMLparser.html#htmlEntityLookup">htmlEntityLookup</a><br />
 <a href="html/libxml-HTMLparser.html#htmlEntityValueLookup">htmlEntityValueLookup</a><br />
 <a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br />
+<a href="html/libxml-entities.html#xmlCreateEntitiesTable">xmlCreateEntitiesTable</a><br />
 </dd><dt>reasonable</dt><dd><a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br />
 </dd><dt>received</dt><dd><a href="html/libxml-nanoftp.html#ftpDataCallback">ftpDataCallback</a><br />
 <a href="html/libxml-nanohttp.html#xmlNanoHTTPReturnCode">xmlNanoHTTPReturnCode</a><br />
@@ -193,7 +194,6 @@
 <a href="html/libxml-tree.html#xmlDocCopyNode">xmlDocCopyNode</a><br />
 <a href="html/libxml-tree.html#xmlDocCopyNodeList">xmlDocCopyNodeList</a><br />
 <a href="html/libxml-tree.html#xmlElemDump">xmlElemDump</a><br />
-<a href="html/libxml-valid.html#xmlFreeElementContent">xmlFreeElementContent</a><br />
 <a href="html/libxml-valid.html#xmlFreeEnumeration">xmlFreeEnumeration</a><br />
 <a href="html/libxml-tree.html#xmlFreeNode">xmlFreeNode</a><br />
 <a href="html/libxml-tree.html#xmlFreeNodeList">xmlFreeNodeList</a><br />
@@ -354,6 +354,8 @@
 <a href="html/libxml-tree.html#xmlBufferShrink">xmlBufferShrink</a><br />
 <a href="html/libxml-catalog.html#xmlCatalogRemove">xmlCatalogRemove</a><br />
 <a href="html/libxml-parserInternals.html#xmlCheckLanguageID">xmlCheckLanguageID</a><br />
+<a href="html/libxml-valid.html#xmlFreeDocElementContent">xmlFreeDocElementContent</a><br />
+<a href="html/libxml-valid.html#xmlFreeElementContent">xmlFreeElementContent</a><br />
 <a href="html/libxml-parserInternals.html#xmlHandleEntity">xmlHandleEntity</a><br />
 <a href="html/libxml-hash.html#xmlHashRemoveEntry">xmlHashRemoveEntry</a><br />
 <a href="html/libxml-hash.html#xmlHashRemoveEntry2">xmlHashRemoveEntry2</a><br />
diff --git a/doc/APIchunk22.html b/doc/APIchunk22.html
index 267fd23..15ce36e 100644
--- a/doc/APIchunk22.html
+++ b/doc/APIchunk22.html
@@ -167,6 +167,7 @@
 </dd><dt>selects</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathIdFunction">xmlXPathIdFunction</a><br />
 </dd><dt>self</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNextSelf">xmlXPathNextSelf</a><br />
 </dd><dt>semantic</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNodeSetFreeNs">xmlXPathNodeSetFreeNs</a><br />
+</dd><dt>sense</dt><dd><a href="html/libxml-entities.html#xmlCreateEntitiesTable">xmlCreateEntitiesTable</a><br />
 </dd><dt>separated</dt><dd><a href="html/libxml-catalog.html#xmlLoadCatalogs">xmlLoadCatalogs</a><br />
 </dd><dt>separately</dt><dd><a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br />
 <a href="html/libxml-xmlerror.html#xmlSetStructuredErrorFunc">xmlSetStructuredErrorFunc</a><br />
@@ -676,6 +677,7 @@
 </dd><dt>sub-elements</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br />
 </dd><dt>subelement</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br />
 <a href="html/libxml-HTMLparser.html#htmlDefaultSubelement">htmlDefaultSubelement</a><br />
+<a href="html/libxml-valid.html#xmlNewDocElementContent">xmlNewDocElementContent</a><br />
 <a href="html/libxml-valid.html#xmlNewElementContent">xmlNewElementContent</a><br />
 </dd><dt>subelements</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br />
 </dd><dt>subject</dt><dd><a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br />
@@ -721,6 +723,8 @@
 </dd><dt>subtraction</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathSubValues">xmlXPathSubValues</a><br />
 </dd><dt>subtree</dt><dd><a href="html/libxml-SAX.html#attribute">attribute</a><br />
 <a href="html/libxml-parser.html#attributeSAXFunc">attributeSAXFunc</a><br />
+<a href="html/libxml-valid.html#xmlFreeDocElementContent">xmlFreeDocElementContent</a><br />
+<a href="html/libxml-valid.html#xmlFreeElementContent">xmlFreeElementContent</a><br />
 <a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br />
 <a href="html/libxml-relaxng.html#xmlRelaxNGValidateFullElement">xmlRelaxNGValidateFullElement</a><br />
 <a href="html/libxml-xmlsave.html#xmlSaveTree">xmlSaveTree</a><br />
diff --git a/doc/APIchunk25.html b/doc/APIchunk25.html
index a9fbc93..97e1381 100644
--- a/doc/APIchunk25.html
+++ b/doc/APIchunk25.html
@@ -156,6 +156,8 @@
 </dd><dt>whitespaces</dt><dd><a href="html/libxml-SAX.html#ignorableWhitespace">ignorableWhitespace</a><br />
 <a href="html/libxml-parser.html#ignorableWhitespaceSAXFunc">ignorableWhitespaceSAXFunc</a><br />
 <a href="html/libxml-SAX2.html#xmlSAX2IgnorableWhitespace">xmlSAX2IgnorableWhitespace</a><br />
+</dd><dt>whole</dt><dd><a href="html/libxml-valid.html#xmlFreeDocElementContent">xmlFreeDocElementContent</a><br />
+<a href="html/libxml-valid.html#xmlFreeElementContent">xmlFreeElementContent</a><br />
 </dd><dt>whose</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans">xmlAutomataNewCountTrans</a><br />
 <a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans2">xmlAutomataNewCountTrans2</a><br />
 <a href="html/libxml-xmlautomata.html#xmlAutomataNewOnceTrans">xmlAutomataNewOnceTrans</a><br />
diff --git a/doc/APIchunk26.html b/doc/APIchunk26.html
index f3d9bc1..76a6b8c 100644
--- a/doc/APIchunk26.html
+++ b/doc/APIchunk26.html
@@ -127,6 +127,7 @@
 <a href="html/libxml-parser.html#xmlParserInputRead">xmlParserInputRead</a><br />
 </dd><dt>xmlCleanupParser</dt><dd><a href="html/libxml-parser.html#xmlCleanupParser">xmlCleanupParser</a><br />
 </dd><dt>xmlCleanupThreads</dt><dd><a href="html/libxml-threads.html#xmlCleanupThreads">xmlCleanupThreads</a><br />
+</dd><dt>xmlCopyDocElementContent</dt><dd><a href="html/libxml-valid.html#xmlCopyElementContent">xmlCopyElementContent</a><br />
 </dd><dt>xmlCreateIntSubset</dt><dd><a href="html/libxml-tree.html#xmlNewDtd">xmlNewDtd</a><br />
 </dd><dt>xmlDefaultSAXLocator</dt><dd><a href="html/libxml-SAX.html#setDocumentLocator">setDocumentLocator</a><br />
 <a href="html/libxml-parser.html#setDocumentLocatorSAXFunc">setDocumentLocatorSAXFunc</a><br />
@@ -142,7 +143,8 @@
 <a href="html/libxml-parser.html#xmlIOParseDTD">xmlIOParseDTD</a><br />
 <a href="html/libxml-parser.html#xmlParseDTD">xmlParseDTD</a><br />
 <a href="html/libxml-parser.html#xmlSAXParseDTD">xmlSAXParseDTD</a><br />
-</dd><dt>xmlElementContentPtr</dt><dd><a href="html/libxml-valid.html#xmlCopyElementContent">xmlCopyElementContent</a><br />
+</dd><dt>xmlElementContentPtr</dt><dd><a href="html/libxml-valid.html#xmlCopyDocElementContent">xmlCopyDocElementContent</a><br />
+<a href="html/libxml-valid.html#xmlCopyElementContent">xmlCopyElementContent</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br />
 </dd><dt>xmlElementPtr</dt><dd><a href="html/libxml-valid.html#xmlGetDtdElementDesc">xmlGetDtdElementDesc</a><br />
@@ -183,6 +185,7 @@
 <a href="html/libxml-tree.html#xmlNodeListGetString">xmlNodeListGetString</a><br />
 <a href="html/libxml-xmlreader.html#xmlTextReaderValue">xmlTextReaderValue</a><br />
 </dd><dt>xmlFreeDoc</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderCurrentDoc">xmlTextReaderCurrentDoc</a><br />
+</dd><dt>xmlFreeDocElementContent</dt><dd><a href="html/libxml-valid.html#xmlFreeElementContent">xmlFreeElementContent</a><br />
 </dd><dt>xmlFreeMutex</dt><dd><a href="html/libxml-threads.html#xmlFreeMutex">xmlFreeMutex</a><br />
 </dd><dt>xmlGetGlobalState</dt><dd><a href="html/libxml-threads.html#xmlGetGlobalState">xmlGetGlobalState</a><br />
 </dd><dt>xmlGetNoNsProp</dt><dd><a href="html/libxml-tree.html#xmlGetProp">xmlGetProp</a><br />
@@ -190,6 +193,7 @@
 </dd><dt>xmlGetProp</dt><dd><a href="html/libxml-tree.html#xmlGetNoNsProp">xmlGetNoNsProp</a><br />
 </dd><dt>xmlGetThreadId</dt><dd><a href="html/libxml-threads.html#xmlGetThreadId">xmlGetThreadId</a><br />
 </dd><dt>xmlHashTablePtr</dt><dd><a href="html/libxml-hash.html#xmlHashCreate">xmlHashCreate</a><br />
+<a href="html/libxml-hash.html#xmlHashCreateDict">xmlHashCreateDict</a><br />
 </dd><dt>xmlIDPtr</dt><dd><a href="html/libxml-valid.html#xmlAddID">xmlAddID</a><br />
 </dd><dt>xmlIndentTreeOutput</dt><dd><a href="html/libxml-tree.html#xmlDocDumpFormatMemory">xmlDocDumpFormatMemory</a><br />
 <a href="html/libxml-tree.html#xmlDocDumpFormatMemoryEnc">xmlDocDumpFormatMemoryEnc</a><br />
@@ -243,6 +247,7 @@
 </dd><dt>xmlNanoFTPGet</dt><dd><a href="html/libxml-nanoftp.html#ftpDataCallback">ftpDataCallback</a><br />
 </dd><dt>xmlNanoFTPList</dt><dd><a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br />
 </dd><dt>xmlNewChild</dt><dd><a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br />
+</dd><dt>xmlNewDocElementContent</dt><dd><a href="html/libxml-valid.html#xmlNewElementContent">xmlNewElementContent</a><br />
 </dd><dt>xmlNewDocRawNode</dt><dd><a href="html/libxml-tree.html#xmlNewDocNode">xmlNewDocNode</a><br />
 <a href="html/libxml-tree.html#xmlNewDocNodeEatName">xmlNewDocNodeEatName</a><br />
 </dd><dt>xmlNewMutex</dt><dd><a href="html/libxml-threads.html#xmlNewMutex">xmlNewMutex</a><br />
diff --git a/doc/APIconstructors.html b/doc/APIconstructors.html
index a1856c8..45e705b 100644
--- a/doc/APIconstructors.html
+++ b/doc/APIconstructors.html
@@ -290,7 +290,9 @@
 <a href="html/libxml-tree.html#xmlNewDtd">xmlNewDtd</a><br />
 <a href="html/libxml-parser.html#xmlParseDTD">xmlParseDTD</a><br />
 <a href="html/libxml-parser.html#xmlSAXParseDTD">xmlSAXParseDTD</a><br />
-</p><h2>Type xmlElementContentPtr:</h2><p><a href="html/libxml-valid.html#xmlCopyElementContent">xmlCopyElementContent</a><br />
+</p><h2>Type xmlElementContentPtr:</h2><p><a href="html/libxml-valid.html#xmlCopyDocElementContent">xmlCopyDocElementContent</a><br />
+<a href="html/libxml-valid.html#xmlCopyElementContent">xmlCopyElementContent</a><br />
+<a href="html/libxml-valid.html#xmlNewDocElementContent">xmlNewDocElementContent</a><br />
 <a href="html/libxml-valid.html#xmlNewElementContent">xmlNewElementContent</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseElementChildrenContentDecl">xmlParseElementChildrenContentDecl</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseElementMixedContentDecl">xmlParseElementMixedContentDecl</a><br />
@@ -323,6 +325,7 @@
 </p><h2>Type xmlGlobalStatePtr:</h2><p><a href="html/libxml-threads.html#xmlGetGlobalState">xmlGetGlobalState</a><br />
 </p><h2>Type xmlHashTablePtr:</h2><p><a href="html/libxml-hash.html#xmlHashCopy">xmlHashCopy</a><br />
 <a href="html/libxml-hash.html#xmlHashCreate">xmlHashCreate</a><br />
+<a href="html/libxml-hash.html#xmlHashCreateDict">xmlHashCreateDict</a><br />
 </p><h2>Type xmlIDPtr:</h2><p><a href="html/libxml-valid.html#xmlAddID">xmlAddID</a><br />
 </p><h2>Type xmlLinkPtr:</h2><p><a href="html/libxml-list.html#xmlListEnd">xmlListEnd</a><br />
 <a href="html/libxml-list.html#xmlListFront">xmlListFront</a><br />
diff --git a/doc/APIfiles.html b/doc/APIfiles.html
index 017b653..b50ca67 100644
--- a/doc/APIfiles.html
+++ b/doc/APIfiles.html
@@ -315,6 +315,7 @@
 <a href="html/libxml-debugXML.html#xmlShellValidate">xmlShellValidate</a><br />
 <a href="html/libxml-debugXML.html#xmlShellWrite">xmlShellWrite</a><br />
 </p><h2><a name="dict" id="dict">Module dict</a>:</h2><p><a href="html/libxml-dict.html#xmlDict">xmlDict</a><br />
+<a href="html/libxml-dict.html#xmlDictCleanup">xmlDictCleanup</a><br />
 <a href="html/libxml-dict.html#xmlDictCreate">xmlDictCreate</a><br />
 <a href="html/libxml-dict.html#xmlDictCreateSub">xmlDictCreateSub</a><br />
 <a href="html/libxml-dict.html#xmlDictExists">xmlDictExists</a><br />
@@ -472,6 +473,7 @@
 <a href="html/libxml-hash.html#xmlHashCopier">xmlHashCopier</a><br />
 <a href="html/libxml-hash.html#xmlHashCopy">xmlHashCopy</a><br />
 <a href="html/libxml-hash.html#xmlHashCreate">xmlHashCreate</a><br />
+<a href="html/libxml-hash.html#xmlHashCreateDict">xmlHashCreateDict</a><br />
 <a href="html/libxml-hash.html#xmlHashDeallocator">xmlHashDeallocator</a><br />
 <a href="html/libxml-hash.html#xmlHashFree">xmlHashFree</a><br />
 <a href="html/libxml-hash.html#xmlHashLookup">xmlHashLookup</a><br />
@@ -1447,6 +1449,7 @@
 <a href="html/libxml-valid.html#xmlAttributeTable">xmlAttributeTable</a><br />
 <a href="html/libxml-valid.html#xmlAttributeTablePtr">xmlAttributeTablePtr</a><br />
 <a href="html/libxml-valid.html#xmlCopyAttributeTable">xmlCopyAttributeTable</a><br />
+<a href="html/libxml-valid.html#xmlCopyDocElementContent">xmlCopyDocElementContent</a><br />
 <a href="html/libxml-valid.html#xmlCopyElementContent">xmlCopyElementContent</a><br />
 <a href="html/libxml-valid.html#xmlCopyElementTable">xmlCopyElementTable</a><br />
 <a href="html/libxml-valid.html#xmlCopyEnumeration">xmlCopyEnumeration</a><br />
@@ -1461,6 +1464,7 @@
 <a href="html/libxml-valid.html#xmlElementTable">xmlElementTable</a><br />
 <a href="html/libxml-valid.html#xmlElementTablePtr">xmlElementTablePtr</a><br />
 <a href="html/libxml-valid.html#xmlFreeAttributeTable">xmlFreeAttributeTable</a><br />
+<a href="html/libxml-valid.html#xmlFreeDocElementContent">xmlFreeDocElementContent</a><br />
 <a href="html/libxml-valid.html#xmlFreeElementContent">xmlFreeElementContent</a><br />
 <a href="html/libxml-valid.html#xmlFreeElementTable">xmlFreeElementTable</a><br />
 <a href="html/libxml-valid.html#xmlFreeEnumeration">xmlFreeEnumeration</a><br />
@@ -1480,6 +1484,7 @@
 <a href="html/libxml-valid.html#xmlIsID">xmlIsID</a><br />
 <a href="html/libxml-valid.html#xmlIsMixedElement">xmlIsMixedElement</a><br />
 <a href="html/libxml-valid.html#xmlIsRef">xmlIsRef</a><br />
+<a href="html/libxml-valid.html#xmlNewDocElementContent">xmlNewDocElementContent</a><br />
 <a href="html/libxml-valid.html#xmlNewElementContent">xmlNewElementContent</a><br />
 <a href="html/libxml-valid.html#xmlNewValidCtxt">xmlNewValidCtxt</a><br />
 <a href="html/libxml-valid.html#xmlNotationTable">xmlNotationTable</a><br />
diff --git a/doc/APIfunctions.html b/doc/APIfunctions.html
index c8012a9..61897c7 100644
--- a/doc/APIfunctions.html
+++ b/doc/APIfunctions.html
@@ -260,6 +260,7 @@
 <a href="html/libxml-tree.html#xmlNewComment">xmlNewComment</a><br />
 <a href="html/libxml-tree.html#xmlNewDoc">xmlNewDoc</a><br />
 <a href="html/libxml-tree.html#xmlNewDocComment">xmlNewDocComment</a><br />
+<a href="html/libxml-valid.html#xmlNewDocElementContent">xmlNewDocElementContent</a><br />
 <a href="html/libxml-tree.html#xmlNewDocNode">xmlNewDocNode</a><br />
 <a href="html/libxml-tree.html#xmlNewDocNodeEatName">xmlNewDocNodeEatName</a><br />
 <a href="html/libxml-tree.html#xmlNewDocPI">xmlNewDocPI</a><br />
@@ -1039,6 +1040,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-hash.html#xmlHashCreateDict">xmlHashCreateDict</a><br />
 </p><h2>Type xmlDocPtr:</h2><p><a href="html/libxml-HTMLtree.html#htmlDocContentDumpFormatOutput">htmlDocContentDumpFormatOutput</a><br />
 <a href="html/libxml-HTMLtree.html#htmlDocContentDumpOutput">htmlDocContentDumpOutput</a><br />
 <a href="html/libxml-HTMLtree.html#htmlDocDump">htmlDocDump</a><br />
@@ -1062,6 +1064,7 @@
 <a href="html/libxml-c14n.html#xmlC14NDocSaveTo">xmlC14NDocSaveTo</a><br />
 <a href="html/libxml-c14n.html#xmlC14NExecute">xmlC14NExecute</a><br />
 <a href="html/libxml-tree.html#xmlCopyDoc">xmlCopyDoc</a><br />
+<a href="html/libxml-valid.html#xmlCopyDocElementContent">xmlCopyDocElementContent</a><br />
 <a href="html/libxml-tree.html#xmlCreateIntSubset">xmlCreateIntSubset</a><br />
 <a href="html/libxml-debugXML.html#xmlDebugCheckDocument">xmlDebugCheckDocument</a><br />
 <a href="html/libxml-debugXML.html#xmlDebugDumpDocument">xmlDebugDumpDocument</a><br />
@@ -1082,6 +1085,7 @@
 <a href="html/libxml-entities.html#xmlEncodeEntitiesReentrant">xmlEncodeEntitiesReentrant</a><br />
 <a href="html/libxml-entities.html#xmlEncodeSpecialChars">xmlEncodeSpecialChars</a><br />
 <a href="html/libxml-tree.html#xmlFreeDoc">xmlFreeDoc</a><br />
+<a href="html/libxml-valid.html#xmlFreeDocElementContent">xmlFreeDocElementContent</a><br />
 <a href="html/libxml-tree.html#xmlGetDocCompressMode">xmlGetDocCompressMode</a><br />
 <a href="html/libxml-entities.html#xmlGetDocEntity">xmlGetDocEntity</a><br />
 <a href="html/libxml-entities.html#xmlGetDtdEntity">xmlGetDtdEntity</a><br />
@@ -1096,6 +1100,7 @@
 <a href="html/libxml-tree.html#xmlNewCDataBlock">xmlNewCDataBlock</a><br />
 <a href="html/libxml-tree.html#xmlNewCharRef">xmlNewCharRef</a><br />
 <a href="html/libxml-tree.html#xmlNewDocComment">xmlNewDocComment</a><br />
+<a href="html/libxml-valid.html#xmlNewDocElementContent">xmlNewDocElementContent</a><br />
 <a href="html/libxml-tree.html#xmlNewDocFragment">xmlNewDocFragment</a><br />
 <a href="html/libxml-tree.html#xmlNewDocNode">xmlNewDocNode</a><br />
 <a href="html/libxml-tree.html#xmlNewDocNodeEatName">xmlNewDocNodeEatName</a><br />
@@ -1183,13 +1188,16 @@
 </p><h2>Type xmlElementContentPtr:</h2><p><a href="html/libxml-SAX.html#elementDecl">elementDecl</a><br />
 <a href="html/libxml-parser.html#elementDeclSAXFunc">elementDeclSAXFunc</a><br />
 <a href="html/libxml-valid.html#xmlAddElementDecl">xmlAddElementDecl</a><br />
+<a href="html/libxml-valid.html#xmlCopyDocElementContent">xmlCopyDocElementContent</a><br />
 <a href="html/libxml-valid.html#xmlCopyElementContent">xmlCopyElementContent</a><br />
+<a href="html/libxml-valid.html#xmlFreeDocElementContent">xmlFreeDocElementContent</a><br />
 <a href="html/libxml-valid.html#xmlFreeElementContent">xmlFreeElementContent</a><br />
 <a href="html/libxml-SAX2.html#xmlSAX2ElementDecl">xmlSAX2ElementDecl</a><br />
 <a href="html/libxml-valid.html#xmlSnprintfElementContent">xmlSnprintfElementContent</a><br />
 <a href="html/libxml-valid.html#xmlSprintfElementContent">xmlSprintfElementContent</a><br />
 </p><h2>Type xmlElementContentPtr *:</h2><p><a href="html/libxml-parserInternals.html#xmlParseElementContentDecl">xmlParseElementContentDecl</a><br />
-</p><h2>Type xmlElementContentType:</h2><p><a href="html/libxml-valid.html#xmlNewElementContent">xmlNewElementContent</a><br />
+</p><h2>Type xmlElementContentType:</h2><p><a href="html/libxml-valid.html#xmlNewDocElementContent">xmlNewDocElementContent</a><br />
+<a href="html/libxml-valid.html#xmlNewElementContent">xmlNewElementContent</a><br />
 </p><h2>Type xmlElementPtr:</h2><p><a href="html/libxml-valid.html#xmlDumpElementDecl">xmlDumpElementDecl</a><br />
 <a href="html/libxml-valid.html#xmlValidBuildContentModel">xmlValidBuildContentModel</a><br />
 <a href="html/libxml-valid.html#xmlValidateElementDecl">xmlValidateElementDecl</a><br />
diff --git a/doc/APIsymbols.html b/doc/APIsymbols.html
index f62c93f..5cb4140 100644
--- a/doc/APIsymbols.html
+++ b/doc/APIsymbols.html
@@ -1691,6 +1691,7 @@
 <a href="html/libxml-parserInternals.html#xmlCopyChar">xmlCopyChar</a><br />
 <a href="html/libxml-parserInternals.html#xmlCopyCharMultiByte">xmlCopyCharMultiByte</a><br />
 <a href="html/libxml-tree.html#xmlCopyDoc">xmlCopyDoc</a><br />
+<a href="html/libxml-valid.html#xmlCopyDocElementContent">xmlCopyDocElementContent</a><br />
 <a href="html/libxml-tree.html#xmlCopyDtd">xmlCopyDtd</a><br />
 <a href="html/libxml-valid.html#xmlCopyElementContent">xmlCopyElementContent</a><br />
 <a href="html/libxml-valid.html#xmlCopyElementTable">xmlCopyElementTable</a><br />
@@ -1748,6 +1749,7 @@
 <a href="html/libxml-globals.html#xmlDeregisterNodeFunc">xmlDeregisterNodeFunc</a><br />
 <a href="html/libxml-encoding.html#xmlDetectCharEncoding">xmlDetectCharEncoding</a><br />
 <a href="html/libxml-dict.html#xmlDict">xmlDict</a><br />
+<a href="html/libxml-dict.html#xmlDictCleanup">xmlDictCleanup</a><br />
 <a href="html/libxml-dict.html#xmlDictCreate">xmlDictCreate</a><br />
 <a href="html/libxml-dict.html#xmlDictCreateSub">xmlDictCreateSub</a><br />
 <a href="html/libxml-dict.html#xmlDictExists">xmlDictExists</a><br />
@@ -1819,6 +1821,7 @@
 <a href="html/libxml-xmlautomata.html#xmlFreeAutomata">xmlFreeAutomata</a><br />
 <a href="html/libxml-catalog.html#xmlFreeCatalog">xmlFreeCatalog</a><br />
 <a href="html/libxml-tree.html#xmlFreeDoc">xmlFreeDoc</a><br />
+<a href="html/libxml-valid.html#xmlFreeDocElementContent">xmlFreeDocElementContent</a><br />
 <a href="html/libxml-tree.html#xmlFreeDtd">xmlFreeDtd</a><br />
 <a href="html/libxml-valid.html#xmlFreeElementContent">xmlFreeElementContent</a><br />
 <a href="html/libxml-valid.html#xmlFreeElementTable">xmlFreeElementTable</a><br />
@@ -1894,6 +1897,7 @@
 <a href="html/libxml-hash.html#xmlHashCopier">xmlHashCopier</a><br />
 <a href="html/libxml-hash.html#xmlHashCopy">xmlHashCopy</a><br />
 <a href="html/libxml-hash.html#xmlHashCreate">xmlHashCreate</a><br />
+<a href="html/libxml-hash.html#xmlHashCreateDict">xmlHashCreateDict</a><br />
 <a href="html/libxml-hash.html#xmlHashDeallocator">xmlHashDeallocator</a><br />
 <a href="html/libxml-hash.html#xmlHashFree">xmlHashFree</a><br />
 <a href="html/libxml-hash.html#xmlHashLookup">xmlHashLookup</a><br />
@@ -2111,6 +2115,7 @@
 <a href="html/libxml-tree.html#xmlNewComment">xmlNewComment</a><br />
 <a href="html/libxml-tree.html#xmlNewDoc">xmlNewDoc</a><br />
 <a href="html/libxml-tree.html#xmlNewDocComment">xmlNewDocComment</a><br />
+<a href="html/libxml-valid.html#xmlNewDocElementContent">xmlNewDocElementContent</a><br />
 <a href="html/libxml-tree.html#xmlNewDocFragment">xmlNewDocFragment</a><br />
 <a href="html/libxml-tree.html#xmlNewDocNode">xmlNewDocNode</a><br />
 <a href="html/libxml-tree.html#xmlNewDocNodeEatName">xmlNewDocNodeEatName</a><br />
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 1bdcb79..926135e 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -82,6 +82,8 @@
 
 libxml2-api.xml libxml2-refs.xml: apibuild.py ../include/libxml/*.h ../*.c
 	-(./apibuild.py)
+	-@(cd .. ; $(MAKE) rebuild_testapi)
+
 
 xmllint.1: xmllint.xml
 	-@($(XSLTPROC) --nonet xmllint.xml)
diff --git a/doc/html/libxml-dict.html b/doc/html/libxml-dict.html
index f480d76..a944ed1 100644
--- a/doc/html/libxml-dict.html
+++ b/doc/html/libxml-dict.html
@@ -13,7 +13,8 @@
     </style><title>Module dict from libxml2</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="../epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="../gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="../w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="../redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="../Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1></h1><h2>Module dict from libxml2</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>API Menu</b></center></td></tr><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 style="font-weight:bold" href="../index.html">Main Menu</a></li><li><a style="font-weight:bold" href="../docs.html">Developer Menu</a></li><li><a style="font-weight:bold" href="../examples/index.html">Code Examples</a></li><li><a style="font-weight:bold" href="index.html">API Menu</a></li><li><a href="libxml-parser.html">Parser API</a></li><li><a href="libxml-tree.html">Tree API</a></li><li><a href="libxml-xmlreader.html">Reader API</a></li><li><a href="../guidelines.html">XML Guidelines</a></li><li><a href="../ChangeLog.html">ChangeLog</a></li></ul></td></tr></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><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></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><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://www.blastwave.org/packages.php/libxml2">Solaris binaries</a></li><li><a href="http://www.zveno.com/open_source/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle"><td><a accesskey="p" href="libxml-debugXML.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-debugXML.html">debugXML</a></th><td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up" /></a></td><th align="left"><a href="index.html">API documentation</a></th><td><a accesskey="h" href="../index.html"><img src="home.png" width="24" height="24" border="0" alt="Home" /></a></td><th align="center"><a href="../index.html">The XML C parser and toolkit of Gnome</a></th><th align="right"><a href="libxml-encoding.html">encoding</a></th><td><a accesskey="n" href="libxml-encoding.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>dictionary of reusable strings, just used to avoid allocation and freeing operations. </p><h2>Table of Contents</h2><pre class="programlisting">Structure <a href="#xmlDict">xmlDict</a><br />struct _xmlDict
 The content of this structure is not made public by the API.
 </pre><pre class="programlisting">Typedef <a href="libxml-dict.html#xmlDict">xmlDict</a> * <a name="xmlDictPtr" id="xmlDictPtr">xmlDictPtr</a>
-</pre><pre class="programlisting"><a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a>	<a href="#xmlDictCreate">xmlDictCreate</a>		(void)</pre>
+</pre><pre class="programlisting">void	<a href="#xmlDictCleanup">xmlDictCleanup</a>			(void)</pre>
+<pre class="programlisting"><a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a>	<a href="#xmlDictCreate">xmlDictCreate</a>		(void)</pre>
 <pre class="programlisting"><a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a>	<a href="#xmlDictCreateSub">xmlDictCreateSub</a>	(<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> sub)</pre>
 <pre class="programlisting">const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlDictExists">xmlDictExists</a>		(<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br />					 int len)</pre>
 <pre class="programlisting">void	<a href="#xmlDictFree">xmlDictFree</a>			(<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)</pre>
@@ -25,7 +26,9 @@
 <h2>Description</h2>
 <h3><a name="xmlDict" id="xmlDict">Structure xmlDict</a></h3><pre class="programlisting">Structure xmlDict<br />struct _xmlDict {
 The content of this structure is not made public by the API.
-}</pre><h3><a name="xmlDictCreate" id="xmlDictCreate"></a>Function: xmlDictCreate</h3><pre class="programlisting"><a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a>	xmlDictCreate		(void)<br />
+}</pre><h3><a name="xmlDictCleanup" id="xmlDictCleanup"></a>Function: xmlDictCleanup</h3><pre class="programlisting">void	xmlDictCleanup			(void)<br />
+</pre><p>Free the dictionary mutex.</p>
+<h3><a name="xmlDictCreate" id="xmlDictCreate"></a>Function: xmlDictCreate</h3><pre class="programlisting"><a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a>	xmlDictCreate		(void)<br />
 </pre><p>Create a new dictionary</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the newly created dictionnary, or NULL if an error occured.</td></tr></tbody></table></div><h3><a name="xmlDictCreateSub" id="xmlDictCreateSub"></a>Function: xmlDictCreateSub</h3><pre class="programlisting"><a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a>	xmlDictCreateSub	(<a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> sub)<br />
 </pre><p>Create a new dictionary, inheriting strings from the read-only dictionnary @sub. On lookup, strings are first searched in the new dictionnary, then in @sub, and if not found are created in the new dictionnary.</p>
diff --git a/doc/html/libxml-entities.html b/doc/html/libxml-entities.html
index 31ed35e..ff56a7e 100644
--- a/doc/html/libxml-entities.html
+++ b/doc/html/libxml-entities.html
@@ -50,7 +50,7 @@
 <h3><a name="xmlCopyEntitiesTable" id="xmlCopyEntitiesTable"></a>Function: xmlCopyEntitiesTable</h3><pre class="programlisting"><a href="libxml-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a>	xmlCopyEntitiesTable	(<a href="libxml-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a> table)<br />
 </pre><p>Build a copy of an entity table.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>table</tt></i>:</span></td><td>An entity table</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new <a href="libxml-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a> or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlCreateEntitiesTable" id="xmlCreateEntitiesTable"></a>Function: xmlCreateEntitiesTable</h3><pre class="programlisting"><a href="libxml-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a>	xmlCreateEntitiesTable	(void)<br />
-</pre><p>create and initialize an empty entities hash table.</p>
+</pre><p>create and initialize an empty entities hash table. This really doesn't make sense and should be deprecated</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a> just created or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlDumpEntitiesTable" id="xmlDumpEntitiesTable"></a>Function: xmlDumpEntitiesTable</h3><pre class="programlisting">void	xmlDumpEntitiesTable		(<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br />					 <a href="libxml-entities.html#xmlEntitiesTablePtr">xmlEntitiesTablePtr</a> table)<br />
 </pre><p>This will dump the content of the entity table as an XML DTD definition</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>An XML buffer.</td></tr><tr><td><span class="term"><i><tt>table</tt></i>:</span></td><td>An entity table</td></tr></tbody></table></div><h3><a name="xmlDumpEntityDecl" id="xmlDumpEntityDecl"></a>Function: xmlDumpEntityDecl</h3><pre class="programlisting">void	xmlDumpEntityDecl		(<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br />					 <a href="libxml-tree.html#xmlEntityPtr">xmlEntityPtr</a> ent)<br />
diff --git a/doc/html/libxml-hash.html b/doc/html/libxml-hash.html
index 278bdd4..a2b4879 100644
--- a/doc/html/libxml-hash.html
+++ b/doc/html/libxml-hash.html
@@ -21,6 +21,7 @@
 </pre>
 <pre class="programlisting"><a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	<a href="#xmlHashCopy">xmlHashCopy</a>		(<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br />					 <a href="libxml-hash.html#xmlHashCopier">xmlHashCopier</a> f)</pre>
 <pre class="programlisting"><a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	<a href="#xmlHashCreate">xmlHashCreate</a>		(int size)</pre>
+<pre class="programlisting"><a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	<a href="#xmlHashCreateDict">xmlHashCreateDict</a>	(int size, <br />					 <a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)</pre>
 <pre class="programlisting">Function type: <a href="#xmlHashDeallocator">xmlHashDeallocator</a>
 void	<a href="#xmlHashDeallocator">xmlHashDeallocator</a>		(void * payload, <br />					 <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)
 </pre>
@@ -65,7 +66,9 @@
 </pre><p>Scan the hash @table and applied @f to each value.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>table</tt></i>:</span></td><td>the hash table</td></tr><tr><td><span class="term"><i><tt>f</tt></i>:</span></td><td>the copier function for items in the hash</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new table or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlHashCreate" id="xmlHashCreate"></a>Function: xmlHashCreate</h3><pre class="programlisting"><a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	xmlHashCreate		(int size)<br />
 </pre><p>Create a new xmlHashTablePtr.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>size</tt></i>:</span></td><td>the size of the hash table</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the newly created object, or NULL if an error occured.</td></tr></tbody></table></div><h3><a name="xmlHashDeallocator" id="xmlHashDeallocator"></a>Function type: xmlHashDeallocator</h3><pre class="programlisting">Function type: xmlHashDeallocator
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>size</tt></i>:</span></td><td>the size of the hash table</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the newly created object, or NULL if an error occured.</td></tr></tbody></table></div><h3><a name="xmlHashCreateDict" id="xmlHashCreateDict"></a>Function: xmlHashCreateDict</h3><pre class="programlisting"><a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	xmlHashCreateDict	(int size, <br />					 <a href="libxml-dict.html#xmlDictPtr">xmlDictPtr</a> dict)<br />
+</pre><p>Create a new <a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> which will use @dict as the internal dictionary</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>size</tt></i>:</span></td><td>the size of the hash table</td></tr><tr><td><span class="term"><i><tt>dict</tt></i>:</span></td><td>a dictionary to use for the hash</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the newly created object, or NULL if an error occured.</td></tr></tbody></table></div><h3><a name="xmlHashDeallocator" id="xmlHashDeallocator"></a>Function type: xmlHashDeallocator</h3><pre class="programlisting">Function type: xmlHashDeallocator
 void	xmlHashDeallocator		(void * payload, <br />					 <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)
 </pre><p>Callback to free data from a hash.</p><div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>payload</tt></i>:</span></td><td>the data in the hash</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the name associated</td></tr></tbody></table></div><br />
 <h3><a name="xmlHashFree" id="xmlHashFree"></a>Function: xmlHashFree</h3><pre class="programlisting">void	xmlHashFree			(<a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a> table, <br />					 <a href="libxml-hash.html#xmlHashDeallocator">xmlHashDeallocator</a> f)<br />
diff --git a/doc/html/libxml-valid.html b/doc/html/libxml-valid.html
index 9cbceb2..d02b327 100644
--- a/doc/html/libxml-valid.html
+++ b/doc/html/libxml-valid.html
@@ -36,6 +36,7 @@
 <pre class="programlisting"><a href="libxml-tree.html#xmlNotationPtr">xmlNotationPtr</a>	<a href="#xmlAddNotationDecl">xmlAddNotationDecl</a>	(<a href="libxml-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br />					 <a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> dtd, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * PublicID, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * SystemID)</pre>
 <pre class="programlisting"><a href="libxml-tree.html#xmlRefPtr">xmlRefPtr</a>	<a href="#xmlAddRef">xmlAddRef</a>		(<a href="libxml-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a> ctxt, <br />					 <a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br />					 <a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr)</pre>
 <pre class="programlisting"><a href="libxml-valid.html#xmlAttributeTablePtr">xmlAttributeTablePtr</a>	<a href="#xmlCopyAttributeTable">xmlCopyAttributeTable</a>	(<a href="libxml-valid.html#xmlAttributeTablePtr">xmlAttributeTablePtr</a> table)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	<a href="#xmlCopyDocElementContent">xmlCopyDocElementContent</a>	(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />							 <a href="libxml-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> cur)</pre>
 <pre class="programlisting"><a href="libxml-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	<a href="#xmlCopyElementContent">xmlCopyElementContent</a>	(<a href="libxml-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> cur)</pre>
 <pre class="programlisting"><a href="libxml-valid.html#xmlElementTablePtr">xmlElementTablePtr</a>	<a href="#xmlCopyElementTable">xmlCopyElementTable</a>	(<a href="libxml-valid.html#xmlElementTablePtr">xmlElementTablePtr</a> table)</pre>
 <pre class="programlisting"><a href="libxml-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a>	<a href="#xmlCopyEnumeration">xmlCopyEnumeration</a>	(<a href="libxml-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a> cur)</pre>
@@ -48,6 +49,7 @@
 <pre class="programlisting">void	<a href="#xmlDumpNotationDecl">xmlDumpNotationDecl</a>		(<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br />					 <a href="libxml-tree.html#xmlNotationPtr">xmlNotationPtr</a> nota)</pre>
 <pre class="programlisting">void	<a href="#xmlDumpNotationTable">xmlDumpNotationTable</a>		(<a href="libxml-tree.html#xmlBufferPtr">xmlBufferPtr</a> buf, <br />					 <a href="libxml-valid.html#xmlNotationTablePtr">xmlNotationTablePtr</a> table)</pre>
 <pre class="programlisting">void	<a href="#xmlFreeAttributeTable">xmlFreeAttributeTable</a>		(<a href="libxml-valid.html#xmlAttributeTablePtr">xmlAttributeTablePtr</a> table)</pre>
+<pre class="programlisting">void	<a href="#xmlFreeDocElementContent">xmlFreeDocElementContent</a>	(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 <a href="libxml-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> cur)</pre>
 <pre class="programlisting">void	<a href="#xmlFreeElementContent">xmlFreeElementContent</a>		(<a href="libxml-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> cur)</pre>
 <pre class="programlisting">void	<a href="#xmlFreeElementTable">xmlFreeElementTable</a>		(<a href="libxml-valid.html#xmlElementTablePtr">xmlElementTablePtr</a> table)</pre>
 <pre class="programlisting">void	<a href="#xmlFreeEnumeration">xmlFreeEnumeration</a>		(<a href="libxml-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a> cur)</pre>
@@ -65,6 +67,7 @@
 <pre class="programlisting">int	<a href="#xmlIsID">xmlIsID</a>			(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br />					 <a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr)</pre>
 <pre class="programlisting">int	<a href="#xmlIsMixedElement">xmlIsMixedElement</a>		(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name)</pre>
 <pre class="programlisting">int	<a href="#xmlIsRef">xmlIsRef</a>			(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br />					 <a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	<a href="#xmlNewDocElementContent">xmlNewDocElementContent</a>	(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />						 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br />						 <a href="libxml-tree.html#xmlElementContentType">xmlElementContentType</a> type)</pre>
 <pre class="programlisting"><a href="libxml-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	<a href="#xmlNewElementContent">xmlNewElementContent</a>	(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br />						 <a href="libxml-tree.html#xmlElementContentType">xmlElementContentType</a> type)</pre>
 <pre class="programlisting"><a href="libxml-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a>	<a href="#xmlNewValidCtxt">xmlNewValidCtxt</a>		(void)</pre>
 <pre class="programlisting">int	<a href="#xmlRemoveID">xmlRemoveID</a>			(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 <a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr)</pre>
@@ -149,8 +152,10 @@
 </pre><p>Register a new ref declaration</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>the validation context</td></tr><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>pointer to the document</td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>the value name</td></tr><tr><td><span class="term"><i><tt>attr</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a> holding the Ref</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>NULL if not, otherwise the new <a href="libxml-tree.html#xmlRefPtr">xmlRefPtr</a></td></tr></tbody></table></div><h3><a name="xmlCopyAttributeTable" id="xmlCopyAttributeTable"></a>Function: xmlCopyAttributeTable</h3><pre class="programlisting"><a href="libxml-valid.html#xmlAttributeTablePtr">xmlAttributeTablePtr</a>	xmlCopyAttributeTable	(<a href="libxml-valid.html#xmlAttributeTablePtr">xmlAttributeTablePtr</a> table)<br />
 </pre><p>Build a copy of an <a href="libxml-SAX.html#attribute">attribute</a> table.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>table</tt></i>:</span></td><td>An <a href="libxml-SAX.html#attribute">attribute</a> table</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new <a href="libxml-valid.html#xmlAttributeTablePtr">xmlAttributeTablePtr</a> or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlCopyElementContent" id="xmlCopyElementContent"></a>Function: xmlCopyElementContent</h3><pre class="programlisting"><a href="libxml-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	xmlCopyElementContent	(<a href="libxml-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> cur)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>table</tt></i>:</span></td><td>An <a href="libxml-SAX.html#attribute">attribute</a> table</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new <a href="libxml-valid.html#xmlAttributeTablePtr">xmlAttributeTablePtr</a> or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlCopyDocElementContent" id="xmlCopyDocElementContent"></a>Function: xmlCopyDocElementContent</h3><pre class="programlisting"><a href="libxml-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	xmlCopyDocElementContent	(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />							 <a href="libxml-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> cur)<br />
 </pre><p>Build a copy of an element content description.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document owning the element declaration</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>An element content pointer.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new <a href="libxml-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlCopyElementContent" id="xmlCopyElementContent"></a>Function: xmlCopyElementContent</h3><pre class="programlisting"><a href="libxml-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	xmlCopyElementContent	(<a href="libxml-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> cur)<br />
+</pre><p>Build a copy of an element content description. Deprecated, use <a href="libxml-valid.html#xmlCopyDocElementContent">xmlCopyDocElementContent</a> instead</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>An element content pointer.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new <a href="libxml-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlCopyElementTable" id="xmlCopyElementTable"></a>Function: xmlCopyElementTable</h3><pre class="programlisting"><a href="libxml-valid.html#xmlElementTablePtr">xmlElementTablePtr</a>	xmlCopyElementTable	(<a href="libxml-valid.html#xmlElementTablePtr">xmlElementTablePtr</a> table)<br />
 </pre><p>Build a copy of an element table.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>table</tt></i>:</span></td><td>An element table</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the new <a href="libxml-valid.html#xmlElementTablePtr">xmlElementTablePtr</a> or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlCopyEnumeration" id="xmlCopyEnumeration"></a>Function: xmlCopyEnumeration</h3><pre class="programlisting"><a href="libxml-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a>	xmlCopyEnumeration	(<a href="libxml-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a> cur)<br />
@@ -173,8 +178,10 @@
 </pre><p>This will dump the content of the notation table as an XML DTD definition</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buf</tt></i>:</span></td><td>the XML buffer output</td></tr><tr><td><span class="term"><i><tt>table</tt></i>:</span></td><td>A notation table</td></tr></tbody></table></div><h3><a name="xmlFreeAttributeTable" id="xmlFreeAttributeTable"></a>Function: xmlFreeAttributeTable</h3><pre class="programlisting">void	xmlFreeAttributeTable		(<a href="libxml-valid.html#xmlAttributeTablePtr">xmlAttributeTablePtr</a> table)<br />
 </pre><p>Deallocate the memory used by an entities hash table.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>table</tt></i>:</span></td><td>An <a href="libxml-SAX.html#attribute">attribute</a> table</td></tr></tbody></table></div><h3><a name="xmlFreeElementContent" id="xmlFreeElementContent"></a>Function: xmlFreeElementContent</h3><pre class="programlisting">void	xmlFreeElementContent		(<a href="libxml-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> cur)<br />
-</pre><p>Free an element content structure. This is a recursive call !</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>table</tt></i>:</span></td><td>An <a href="libxml-SAX.html#attribute">attribute</a> table</td></tr></tbody></table></div><h3><a name="xmlFreeDocElementContent" id="xmlFreeDocElementContent"></a>Function: xmlFreeDocElementContent</h3><pre class="programlisting">void	xmlFreeDocElementContent	(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 <a href="libxml-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> cur)<br />
+</pre><p>Free an element content structure. The whole subtree is removed.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document owning the element declaration</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the element content tree to free</td></tr></tbody></table></div><h3><a name="xmlFreeElementContent" id="xmlFreeElementContent"></a>Function: xmlFreeElementContent</h3><pre class="programlisting">void	xmlFreeElementContent		(<a href="libxml-tree.html#xmlElementContentPtr">xmlElementContentPtr</a> cur)<br />
+</pre><p>Free an element content structure. The whole subtree is removed. Deprecated, use <a href="libxml-valid.html#xmlFreeDocElementContent">xmlFreeDocElementContent</a> instead</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>the element content tree to free</td></tr></tbody></table></div><h3><a name="xmlFreeElementTable" id="xmlFreeElementTable"></a>Function: xmlFreeElementTable</h3><pre class="programlisting">void	xmlFreeElementTable		(<a href="libxml-valid.html#xmlElementTablePtr">xmlElementTablePtr</a> table)<br />
 </pre><p>Deallocate the memory used by an element hash table.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>table</tt></i>:</span></td><td>An element table</td></tr></tbody></table></div><h3><a name="xmlFreeEnumeration" id="xmlFreeEnumeration"></a>Function: xmlFreeEnumeration</h3><pre class="programlisting">void	xmlFreeEnumeration		(<a href="libxml-tree.html#xmlEnumerationPtr">xmlEnumerationPtr</a> cur)<br />
@@ -207,8 +214,10 @@
 </pre><p>Search in the DtDs whether an element accept Mixed content (or ANY) basically if it is supposed to accept text childs</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the element name</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if no, 1 if yes, and -1 if no element description is available</td></tr></tbody></table></div><h3><a name="xmlIsRef" id="xmlIsRef"></a>Function: xmlIsRef</h3><pre class="programlisting">int	xmlIsRef			(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> elem, <br />					 <a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr)<br />
 </pre><p>Determine whether an <a href="libxml-SAX.html#attribute">attribute</a> is of type Ref. In case we have DTD(s) then this is simple, otherwise we use an heuristic: name Ref (upper or lowercase).</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>elem</tt></i>:</span></td><td>the element carrying the <a href="libxml-SAX.html#attribute">attribute</a></td></tr><tr><td><span class="term"><i><tt>attr</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 or 1 depending on the lookup result</td></tr></tbody></table></div><h3><a name="xmlNewElementContent" id="xmlNewElementContent"></a>Function: xmlNewElementContent</h3><pre class="programlisting"><a href="libxml-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	xmlNewElementContent	(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br />						 <a href="libxml-tree.html#xmlElementContentType">xmlElementContentType</a> type)<br />
-</pre><p>Allocate an element content structure.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>elem</tt></i>:</span></td><td>the element carrying the <a href="libxml-SAX.html#attribute">attribute</a></td></tr><tr><td><span class="term"><i><tt>attr</tt></i>:</span></td><td>the <a href="libxml-SAX.html#attribute">attribute</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 or 1 depending on the lookup result</td></tr></tbody></table></div><h3><a name="xmlNewDocElementContent" id="xmlNewDocElementContent"></a>Function: xmlNewDocElementContent</h3><pre class="programlisting"><a href="libxml-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	xmlNewDocElementContent	(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />						 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br />						 <a href="libxml-tree.html#xmlElementContentType">xmlElementContentType</a> type)<br />
+</pre><p>Allocate an element content structure for the document.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>the document</td></tr><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the subelement name or NULL</td></tr><tr><td><span class="term"><i><tt>type</tt></i>:</span></td><td>the type of element content decl</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>NULL if not, otherwise the new element content structure</td></tr></tbody></table></div><h3><a name="xmlNewElementContent" id="xmlNewElementContent"></a>Function: xmlNewElementContent</h3><pre class="programlisting"><a href="libxml-tree.html#xmlElementContentPtr">xmlElementContentPtr</a>	xmlNewElementContent	(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br />						 <a href="libxml-tree.html#xmlElementContentType">xmlElementContentType</a> type)<br />
+</pre><p>Allocate an element content structure. Deprecated in favor of <a href="libxml-valid.html#xmlNewDocElementContent">xmlNewDocElementContent</a></p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the subelement name or NULL</td></tr><tr><td><span class="term"><i><tt>type</tt></i>:</span></td><td>the type of element content decl</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>NULL if not, otherwise the new element content structure</td></tr></tbody></table></div><h3><a name="xmlNewValidCtxt" id="xmlNewValidCtxt"></a>Function: xmlNewValidCtxt</h3><pre class="programlisting"><a href="libxml-valid.html#xmlValidCtxtPtr">xmlValidCtxtPtr</a>	xmlNewValidCtxt		(void)<br />
 </pre><p>Allocate a validation context structure.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>NULL if not, otherwise the new validation context structure</td></tr></tbody></table></div><h3><a name="xmlRemoveID" id="xmlRemoveID"></a>Function: xmlRemoveID</h3><pre class="programlisting">int	xmlRemoveID			(<a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a> doc, <br />					 <a href="libxml-tree.html#xmlAttrPtr">xmlAttrPtr</a> attr)<br />
diff --git a/doc/libxml2-api.xml b/doc/libxml2-api.xml
index a33b6d5..e9fc2df 100644
--- a/doc/libxml2-api.xml
+++ b/doc/libxml2-api.xml
@@ -362,14 +362,15 @@
      <exports symbol='xmlDict' type='typedef'/>
      <exports symbol='xmlDictPtr' type='typedef'/>
      <exports symbol='xmlDictReference' type='function'/>
+     <exports symbol='xmlDictCleanup' type='function'/>
      <exports symbol='xmlDictSize' type='function'/>
      <exports symbol='xmlDictExists' type='function'/>
      <exports symbol='xmlDictOwns' type='function'/>
      <exports symbol='xmlDictQLookup' type='function'/>
      <exports symbol='xmlDictCreateSub' type='function'/>
-     <exports symbol='xmlDictCreate' type='function'/>
-     <exports symbol='xmlDictLookup' type='function'/>
      <exports symbol='xmlDictFree' type='function'/>
+     <exports symbol='xmlDictLookup' type='function'/>
+     <exports symbol='xmlDictCreate' type='function'/>
     </file>
     <file name='encoding'>
      <summary>interface for the encoding conversion functions</summary>
@@ -536,6 +537,7 @@
      <exports symbol='xmlHashScanFull' type='function'/>
      <exports symbol='xmlHashScan' type='function'/>
      <exports symbol='xmlHashScannerFull' type='function'/>
+     <exports symbol='xmlHashCreateDict' type='function'/>
      <exports symbol='xmlHashAddEntry' type='function'/>
      <exports symbol='xmlHashUpdateEntry' type='function'/>
      <exports symbol='xmlHashQLookup3' type='function'/>
@@ -1593,6 +1595,7 @@
      <exports symbol='xmlDumpNotationDecl' type='function'/>
      <exports symbol='xmlIsID' type='function'/>
      <exports symbol='xmlGetDtdQAttrDesc' type='function'/>
+     <exports symbol='xmlNewDocElementContent' type='function'/>
      <exports symbol='xmlFreeAttributeTable' type='function'/>
      <exports symbol='xmlValidityErrorFunc' type='function'/>
      <exports symbol='xmlValidateAttributeDecl' type='function'/>
@@ -1610,13 +1613,13 @@
      <exports symbol='xmlValidateOneElement' type='function'/>
      <exports symbol='xmlValidateNmtokenValue' type='function'/>
      <exports symbol='xmlDumpElementTable' type='function'/>
-     <exports symbol='xmlValidateNmtokensValue' type='function'/>
+     <exports symbol='xmlValidCtxtNormalizeAttributeValue' type='function'/>
      <exports symbol='xmlDumpElementDecl' type='function'/>
      <exports symbol='xmlFreeElementContent' type='function'/>
      <exports symbol='xmlValidateOneNamespace' type='function'/>
      <exports symbol='xmlValidatePushElement' type='function'/>
      <exports symbol='xmlIsRef' type='function'/>
-     <exports symbol='xmlRemoveRef' type='function'/>
+     <exports symbol='xmlCopyDocElementContent' type='function'/>
      <exports symbol='xmlAddID' type='function'/>
      <exports symbol='xmlFreeRefTable' type='function'/>
      <exports symbol='xmlRemoveID' type='function'/>
@@ -1626,7 +1629,7 @@
      <exports symbol='xmlCopyAttributeTable' type='function'/>
      <exports symbol='xmlCopyElementContent' type='function'/>
      <exports symbol='xmlValidateAttributeValue' type='function'/>
-     <exports symbol='xmlValidCtxtNormalizeAttributeValue' type='function'/>
+     <exports symbol='xmlRemoveRef' type='function'/>
      <exports symbol='xmlValidityWarningFunc' type='function'/>
      <exports symbol='xmlValidatePopElement' type='function'/>
      <exports symbol='xmlFreeEnumeration' type='function'/>
@@ -1647,6 +1650,8 @@
      <exports symbol='xmlGetDtdElementDesc' type='function'/>
      <exports symbol='xmlGetDtdNotationDesc' type='function'/>
      <exports symbol='xmlValidatePushCData' type='function'/>
+     <exports symbol='xmlValidateNmtokensValue' type='function'/>
+     <exports symbol='xmlFreeDocElementContent' type='function'/>
     </file>
     <file name='xinclude'>
      <summary>implementation of XInclude</summary>
@@ -8357,6 +8362,12 @@
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='recursive' type='int' info='if not zero do a recursive copy.'/>
     </function>
+    <function name='xmlCopyDocElementContent' file='valid'>
+      <info>Build a copy of an element content description.</info>
+      <return type='xmlElementContentPtr' info='the new xmlElementContentPtr or NULL in case of error.'/>
+      <arg name='doc' type='xmlDocPtr' info='the document owning the element declaration'/>
+      <arg name='cur' type='xmlElementContentPtr' info='An element content pointer.'/>
+    </function>
     <function name='xmlCopyDtd' file='tree'>
       <cond>defined(LIBXML_TREE_ENABLED)</cond>
       <info>Do a copy of the dtd.</info>
@@ -8364,7 +8375,7 @@
       <arg name='dtd' type='xmlDtdPtr' info='the dtd'/>
     </function>
     <function name='xmlCopyElementContent' file='valid'>
-      <info>Build a copy of an element content description.</info>
+      <info>Build a copy of an element content description. Deprecated, use xmlCopyDocElementContent instead</info>
       <return type='xmlElementContentPtr' info='the new xmlElementContentPtr or NULL in case of error.'/>
       <arg name='cur' type='xmlElementContentPtr' info='An element content pointer.'/>
     </function>
@@ -8437,7 +8448,7 @@
       <arg name='cur' type='const xmlChar *' info='a pointer to an array of xmlChar'/>
     </function>
     <function name='xmlCreateEntitiesTable' file='entities'>
-      <info>create and initialize an empty entities hash table.</info>
+      <info>create and initialize an empty entities hash table. This really doesn&apos;t make sense and should be deprecated</info>
       <return type='xmlEntitiesTablePtr' info='the xmlEntitiesTablePtr just created or NULL in case of error.'/>
     </function>
     <function name='xmlCreateEntityParserCtxt' file='parserInternals'>
@@ -8702,6 +8713,10 @@
       <arg name='in' type='const unsigned char *' info='a pointer to the first bytes of the XML entity, must be at least 2 bytes long (at least 4 if encoding is UTF4 variant).'/>
       <arg name='len' type='int' info='pointer to the length of the buffer'/>
     </function>
+    <function name='xmlDictCleanup' file='dict'>
+      <info>Free the dictionary mutex.</info>
+      <return type='void'/>
+    </function>
     <function name='xmlDictCreate' file='dict'>
       <info>Create a new dictionary</info>
       <return type='xmlDictPtr' info='the newly created dictionnary, or NULL if an error occured.'/>
@@ -8982,13 +8997,19 @@
       <return type='void'/>
       <arg name='cur' type='xmlDocPtr' info='pointer to the document'/>
     </function>
+    <function name='xmlFreeDocElementContent' file='valid'>
+      <info>Free an element content structure. The whole subtree is removed.</info>
+      <return type='void'/>
+      <arg name='doc' type='xmlDocPtr' info='the document owning the element declaration'/>
+      <arg name='cur' type='xmlElementContentPtr' info='the element content tree to free'/>
+    </function>
     <function name='xmlFreeDtd' file='tree'>
       <info>Free a DTD structure.</info>
       <return type='void'/>
       <arg name='cur' type='xmlDtdPtr' info='the DTD structure to free up'/>
     </function>
     <function name='xmlFreeElementContent' file='valid'>
-      <info>Free an element content structure. This is a recursive call !</info>
+      <info>Free an element content structure. The whole subtree is removed. Deprecated, use xmlFreeDocElementContent instead</info>
       <return type='void'/>
       <arg name='cur' type='xmlElementContentPtr' info='the element content tree to free'/>
     </function>
@@ -9384,6 +9405,12 @@
       <return type='xmlHashTablePtr' info='the newly created object, or NULL if an error occured.'/>
       <arg name='size' type='int' info='the size of the hash table'/>
     </function>
+    <function name='xmlHashCreateDict' file='hash'>
+      <info>Create a new xmlHashTablePtr which will use @dict as the internal dictionary</info>
+      <return type='xmlHashTablePtr' info='the newly created object, or NULL if an error occured.'/>
+      <arg name='size' type='int' info='the size of the hash table'/>
+      <arg name='dict' type='xmlDictPtr' info='a dictionary to use for the hash'/>
+    </function>
     <functype name='xmlHashDeallocator' file='hash'>
       <info>Callback to free data from a hash.</info>
       <return type='void'/>
@@ -10449,6 +10476,13 @@
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='content' type='const xmlChar *' info='the comment content'/>
     </function>
+    <function name='xmlNewDocElementContent' file='valid'>
+      <info>Allocate an element content structure for the document.</info>
+      <return type='xmlElementContentPtr' info='NULL if not, otherwise the new element content structure'/>
+      <arg name='doc' type='xmlDocPtr' info='the document'/>
+      <arg name='name' type='const xmlChar *' info='the subelement name or NULL'/>
+      <arg name='type' type='xmlElementContentType' info='the type of element content decl'/>
+    </function>
     <function name='xmlNewDocFragment' file='tree'>
       <cond>defined(LIBXML_TREE_ENABLED)</cond>
       <info>Creation of a new Fragment node.</info>
@@ -10516,7 +10550,7 @@
       <arg name='SystemID' type='const xmlChar *' info='the system ID'/>
     </function>
     <function name='xmlNewElementContent' file='valid'>
-      <info>Allocate an element content structure.</info>
+      <info>Allocate an element content structure. Deprecated in favor of xmlNewDocElementContent</info>
       <return type='xmlElementContentPtr' info='NULL if not, otherwise the new element content structure'/>
       <arg name='name' type='const xmlChar *' info='the subelement name or NULL'/>
       <arg name='type' type='xmlElementContentType' info='the type of element content decl'/>
diff --git a/doc/libxml2-refs.xml b/doc/libxml2-refs.xml
index ecfcb73..6e38779 100644
--- a/doc/libxml2-refs.xml
+++ b/doc/libxml2-refs.xml
@@ -1685,6 +1685,7 @@
     <reference name='xmlCopyChar' href='html/libxml-parserInternals.html#xmlCopyChar'/>
     <reference name='xmlCopyCharMultiByte' href='html/libxml-parserInternals.html#xmlCopyCharMultiByte'/>
     <reference name='xmlCopyDoc' href='html/libxml-tree.html#xmlCopyDoc'/>
+    <reference name='xmlCopyDocElementContent' href='html/libxml-valid.html#xmlCopyDocElementContent'/>
     <reference name='xmlCopyDtd' href='html/libxml-tree.html#xmlCopyDtd'/>
     <reference name='xmlCopyElementContent' href='html/libxml-valid.html#xmlCopyElementContent'/>
     <reference name='xmlCopyElementTable' href='html/libxml-valid.html#xmlCopyElementTable'/>
@@ -1742,6 +1743,7 @@
     <reference name='xmlDeregisterNodeFunc' href='html/libxml-globals.html#xmlDeregisterNodeFunc'/>
     <reference name='xmlDetectCharEncoding' href='html/libxml-encoding.html#xmlDetectCharEncoding'/>
     <reference name='xmlDict' href='html/libxml-dict.html#xmlDict'/>
+    <reference name='xmlDictCleanup' href='html/libxml-dict.html#xmlDictCleanup'/>
     <reference name='xmlDictCreate' href='html/libxml-dict.html#xmlDictCreate'/>
     <reference name='xmlDictCreateSub' href='html/libxml-dict.html#xmlDictCreateSub'/>
     <reference name='xmlDictExists' href='html/libxml-dict.html#xmlDictExists'/>
@@ -1813,6 +1815,7 @@
     <reference name='xmlFreeAutomata' href='html/libxml-xmlautomata.html#xmlFreeAutomata'/>
     <reference name='xmlFreeCatalog' href='html/libxml-catalog.html#xmlFreeCatalog'/>
     <reference name='xmlFreeDoc' href='html/libxml-tree.html#xmlFreeDoc'/>
+    <reference name='xmlFreeDocElementContent' href='html/libxml-valid.html#xmlFreeDocElementContent'/>
     <reference name='xmlFreeDtd' href='html/libxml-tree.html#xmlFreeDtd'/>
     <reference name='xmlFreeElementContent' href='html/libxml-valid.html#xmlFreeElementContent'/>
     <reference name='xmlFreeElementTable' href='html/libxml-valid.html#xmlFreeElementTable'/>
@@ -1888,6 +1891,7 @@
     <reference name='xmlHashCopier' href='html/libxml-hash.html#xmlHashCopier'/>
     <reference name='xmlHashCopy' href='html/libxml-hash.html#xmlHashCopy'/>
     <reference name='xmlHashCreate' href='html/libxml-hash.html#xmlHashCreate'/>
+    <reference name='xmlHashCreateDict' href='html/libxml-hash.html#xmlHashCreateDict'/>
     <reference name='xmlHashDeallocator' href='html/libxml-hash.html#xmlHashDeallocator'/>
     <reference name='xmlHashFree' href='html/libxml-hash.html#xmlHashFree'/>
     <reference name='xmlHashLookup' href='html/libxml-hash.html#xmlHashLookup'/>
@@ -2105,6 +2109,7 @@
     <reference name='xmlNewComment' href='html/libxml-tree.html#xmlNewComment'/>
     <reference name='xmlNewDoc' href='html/libxml-tree.html#xmlNewDoc'/>
     <reference name='xmlNewDocComment' href='html/libxml-tree.html#xmlNewDocComment'/>
+    <reference name='xmlNewDocElementContent' href='html/libxml-valid.html#xmlNewDocElementContent'/>
     <reference name='xmlNewDocFragment' href='html/libxml-tree.html#xmlNewDocFragment'/>
     <reference name='xmlNewDocNode' href='html/libxml-tree.html#xmlNewDocNode'/>
     <reference name='xmlNewDocNodeEatName' href='html/libxml-tree.html#xmlNewDocNodeEatName'/>
@@ -5000,6 +5005,7 @@
       <ref name='xmlCopyChar'/>
       <ref name='xmlCopyCharMultiByte'/>
       <ref name='xmlCopyDoc'/>
+      <ref name='xmlCopyDocElementContent'/>
       <ref name='xmlCopyDtd'/>
       <ref name='xmlCopyElementContent'/>
       <ref name='xmlCopyElementTable'/>
@@ -5057,6 +5063,7 @@
       <ref name='xmlDeregisterNodeFunc'/>
       <ref name='xmlDetectCharEncoding'/>
       <ref name='xmlDict'/>
+      <ref name='xmlDictCleanup'/>
       <ref name='xmlDictCreate'/>
       <ref name='xmlDictCreateSub'/>
       <ref name='xmlDictExists'/>
@@ -5128,6 +5135,7 @@
       <ref name='xmlFreeAutomata'/>
       <ref name='xmlFreeCatalog'/>
       <ref name='xmlFreeDoc'/>
+      <ref name='xmlFreeDocElementContent'/>
       <ref name='xmlFreeDtd'/>
       <ref name='xmlFreeElementContent'/>
       <ref name='xmlFreeElementTable'/>
@@ -5203,6 +5211,7 @@
       <ref name='xmlHashCopier'/>
       <ref name='xmlHashCopy'/>
       <ref name='xmlHashCreate'/>
+      <ref name='xmlHashCreateDict'/>
       <ref name='xmlHashDeallocator'/>
       <ref name='xmlHashFree'/>
       <ref name='xmlHashLookup'/>
@@ -5420,6 +5429,7 @@
       <ref name='xmlNewComment'/>
       <ref name='xmlNewDoc'/>
       <ref name='xmlNewDocComment'/>
+      <ref name='xmlNewDocElementContent'/>
       <ref name='xmlNewDocFragment'/>
       <ref name='xmlNewDocNode'/>
       <ref name='xmlNewDocNodeEatName'/>
@@ -6925,7 +6935,9 @@
       <ref name='xmlSAXParseDTD'/>
     </type>
     <type name='xmlElementContentPtr'>
+      <ref name='xmlCopyDocElementContent'/>
       <ref name='xmlCopyElementContent'/>
+      <ref name='xmlNewDocElementContent'/>
       <ref name='xmlNewElementContent'/>
       <ref name='xmlParseElementChildrenContentDecl'/>
       <ref name='xmlParseElementMixedContentDecl'/>
@@ -6976,6 +6988,7 @@
     <type name='xmlHashTablePtr'>
       <ref name='xmlHashCopy'/>
       <ref name='xmlHashCreate'/>
+      <ref name='xmlHashCreateDict'/>
     </type>
     <type name='xmlIDPtr'>
       <ref name='xmlAddID'/>
@@ -7570,6 +7583,7 @@
       <ref name='xmlNewComment'/>
       <ref name='xmlNewDoc'/>
       <ref name='xmlNewDocComment'/>
+      <ref name='xmlNewDocElementContent'/>
       <ref name='xmlNewDocNode'/>
       <ref name='xmlNewDocNodeEatName'/>
       <ref name='xmlNewDocPI'/>
@@ -8453,6 +8467,7 @@
       <ref name='xmlDictQLookup'/>
       <ref name='xmlDictReference'/>
       <ref name='xmlDictSize'/>
+      <ref name='xmlHashCreateDict'/>
     </type>
     <type name='xmlDocPtr'>
       <ref name='htmlDocContentDumpFormatOutput'/>
@@ -8478,6 +8493,7 @@
       <ref name='xmlC14NDocSaveTo'/>
       <ref name='xmlC14NExecute'/>
       <ref name='xmlCopyDoc'/>
+      <ref name='xmlCopyDocElementContent'/>
       <ref name='xmlCreateIntSubset'/>
       <ref name='xmlDebugCheckDocument'/>
       <ref name='xmlDebugDumpDocument'/>
@@ -8498,6 +8514,7 @@
       <ref name='xmlEncodeEntitiesReentrant'/>
       <ref name='xmlEncodeSpecialChars'/>
       <ref name='xmlFreeDoc'/>
+      <ref name='xmlFreeDocElementContent'/>
       <ref name='xmlGetDocCompressMode'/>
       <ref name='xmlGetDocEntity'/>
       <ref name='xmlGetDtdEntity'/>
@@ -8512,6 +8529,7 @@
       <ref name='xmlNewCDataBlock'/>
       <ref name='xmlNewCharRef'/>
       <ref name='xmlNewDocComment'/>
+      <ref name='xmlNewDocElementContent'/>
       <ref name='xmlNewDocFragment'/>
       <ref name='xmlNewDocNode'/>
       <ref name='xmlNewDocNodeEatName'/>
@@ -8607,7 +8625,9 @@
       <ref name='elementDecl'/>
       <ref name='elementDeclSAXFunc'/>
       <ref name='xmlAddElementDecl'/>
+      <ref name='xmlCopyDocElementContent'/>
       <ref name='xmlCopyElementContent'/>
+      <ref name='xmlFreeDocElementContent'/>
       <ref name='xmlFreeElementContent'/>
       <ref name='xmlSAX2ElementDecl'/>
       <ref name='xmlSnprintfElementContent'/>
@@ -8617,6 +8637,7 @@
       <ref name='xmlParseElementContentDecl'/>
     </type>
     <type name='xmlElementContentType'>
+      <ref name='xmlNewDocElementContent'/>
       <ref name='xmlNewElementContent'/>
     </type>
     <type name='xmlElementPtr'>
@@ -10116,6 +10137,7 @@
     </file>
     <file name='dict'>
       <ref name='xmlDict'/>
+      <ref name='xmlDictCleanup'/>
       <ref name='xmlDictCreate'/>
       <ref name='xmlDictCreateSub'/>
       <ref name='xmlDictExists'/>
@@ -10281,6 +10303,7 @@
       <ref name='xmlHashCopier'/>
       <ref name='xmlHashCopy'/>
       <ref name='xmlHashCreate'/>
+      <ref name='xmlHashCreateDict'/>
       <ref name='xmlHashDeallocator'/>
       <ref name='xmlHashFree'/>
       <ref name='xmlHashLookup'/>
@@ -11280,6 +11303,7 @@
       <ref name='xmlAttributeTable'/>
       <ref name='xmlAttributeTablePtr'/>
       <ref name='xmlCopyAttributeTable'/>
+      <ref name='xmlCopyDocElementContent'/>
       <ref name='xmlCopyElementContent'/>
       <ref name='xmlCopyElementTable'/>
       <ref name='xmlCopyEnumeration'/>
@@ -11294,6 +11318,7 @@
       <ref name='xmlElementTable'/>
       <ref name='xmlElementTablePtr'/>
       <ref name='xmlFreeAttributeTable'/>
+      <ref name='xmlFreeDocElementContent'/>
       <ref name='xmlFreeElementContent'/>
       <ref name='xmlFreeElementTable'/>
       <ref name='xmlFreeEnumeration'/>
@@ -11313,6 +11338,7 @@
       <ref name='xmlIsID'/>
       <ref name='xmlIsMixedElement'/>
       <ref name='xmlIsRef'/>
+      <ref name='xmlNewDocElementContent'/>
       <ref name='xmlNewElementContent'/>
       <ref name='xmlNewValidCtxt'/>
       <ref name='xmlNotationTable'/>
@@ -13268,6 +13294,7 @@
         </word>
         <word name='Allocate'>
           <ref name='xmlNanoFTPNewCtxt'/>
+          <ref name='xmlNewDocElementContent'/>
           <ref name='xmlNewElementContent'/>
           <ref name='xmlNewParserCtxt'/>
           <ref name='xmlNewValidCtxt'/>
@@ -13500,6 +13527,7 @@
         </word>
         <word name='Build'>
           <ref name='xmlCopyAttributeTable'/>
+          <ref name='xmlCopyDocElementContent'/>
           <ref name='xmlCopyElementContent'/>
           <ref name='xmlCopyElementTable'/>
           <ref name='xmlCopyEntitiesTable'/>
@@ -14116,7 +14144,10 @@
         <word name='Deprecated'>
           <ref name='htmlAttrAllowed'/>
           <ref name='xmlCleanupPredefinedEntities'/>
+          <ref name='xmlCopyElementContent'/>
+          <ref name='xmlFreeElementContent'/>
           <ref name='xmlInitializePredefinedEntities'/>
+          <ref name='xmlNewElementContent'/>
           <ref name='xmlParseQuotedString'/>
           <ref name='xmlSprintfElementContent'/>
         </word>
@@ -18346,7 +18377,6 @@
           <ref name='xmlCharEncodingOutputFunc'/>
           <ref name='xmlCleanupParser'/>
           <ref name='xmlCleanupPredefinedEntities'/>
-          <ref name='xmlFreeElementContent'/>
           <ref name='xmlInitializePredefinedEntities'/>
           <ref name='xmlNanoFTPRead'/>
           <ref name='xmlNanoHTTPRead'/>
@@ -19583,6 +19613,7 @@
         <word name='decl'>
           <ref name='_xmlSchemaAttribute'/>
           <ref name='xmlAddAttributeDecl'/>
+          <ref name='xmlNewDocElementContent'/>
           <ref name='xmlNewElementContent'/>
         </word>
         <word name='declarations'>
@@ -19736,6 +19767,7 @@
           <ref name='htmlElementStatusHere'/>
           <ref name='htmlNodeStatus'/>
           <ref name='xmlCheckLanguageID'/>
+          <ref name='xmlCreateEntitiesTable'/>
           <ref name='xmlDecodeEntities'/>
           <ref name='xmlParserHandleReference'/>
           <ref name='xmlScanName'/>
@@ -19801,6 +19833,7 @@
           <ref name='_htmlElemDesc'/>
           <ref name='_htmlEntityDesc'/>
           <ref name='htmlElementAllowedHereDesc'/>
+          <ref name='xmlCopyDocElementContent'/>
           <ref name='xmlCopyElementContent'/>
           <ref name='xmlGetDtdAttrDesc'/>
           <ref name='xmlGetDtdElementDesc'/>
@@ -19917,9 +19950,11 @@
         </word>
         <word name='dictionary'>
           <ref name='_xmlParserCtxt'/>
+          <ref name='xmlDictCleanup'/>
           <ref name='xmlDictCreate'/>
           <ref name='xmlDictCreateSub'/>
           <ref name='xmlDictReference'/>
+          <ref name='xmlHashCreateDict'/>
         </word>
         <word name='dictionnary'>
           <ref name='_xmlParserCtxt'/>
@@ -20132,6 +20167,7 @@
           <ref name='_htmlElemDesc'/>
           <ref name='htmlElementAllowedHere'/>
           <ref name='xmlCleanupParser'/>
+          <ref name='xmlCreateEntitiesTable'/>
           <ref name='xmlFreeNode'/>
           <ref name='xmlInitCharEncodingHandlers'/>
           <ref name='xmlKeepBlanksDefault'/>
@@ -20932,6 +20968,9 @@
         <word name='fatalError'>
           <ref name='fatalErrorSAXFunc'/>
         </word>
+        <word name='favor'>
+          <ref name='xmlNewElementContent'/>
+        </word>
         <word name='feature'>
           <ref name='xmlGetFeature'/>
           <ref name='xmlGetFeaturesList'/>
@@ -22257,6 +22296,8 @@
           <ref name='xmlAddChild'/>
           <ref name='xmlAddNextSibling'/>
           <ref name='xmlAddPrevSibling'/>
+          <ref name='xmlCopyElementContent'/>
+          <ref name='xmlFreeElementContent'/>
           <ref name='xmlIsBaseChar'/>
           <ref name='xmlIsBlank'/>
           <ref name='xmlIsChar'/>
@@ -22956,6 +22997,7 @@
           <ref name='xmlDecodeEntities'/>
         </word>
         <word name='make'>
+          <ref name='xmlCreateEntitiesTable'/>
           <ref name='xmlNewNode'/>
           <ref name='xmlSaveClose'/>
           <ref name='xmlSaveFlush'/>
@@ -23329,6 +23371,7 @@
           <ref name='xmlInitParser'/>
         </word>
         <word name='mutex'>
+          <ref name='xmlDictCleanup'/>
           <ref name='xmlFreeMutex'/>
           <ref name='xmlFreeRMutex'/>
           <ref name='xmlMutexLock'/>
@@ -23774,6 +23817,7 @@
           <ref name='xmlDictCreateSub'/>
           <ref name='xmlGetLastError'/>
           <ref name='xmlHashCreate'/>
+          <ref name='xmlHashCreateDict'/>
           <ref name='xmlListRemoveFirst'/>
           <ref name='xmlListRemoveLast'/>
         </word>
@@ -24144,6 +24188,8 @@
           <ref name='xmlAddAttributeDecl'/>
         </word>
         <word name='owning'>
+          <ref name='xmlCopyDocElementContent'/>
+          <ref name='xmlFreeDocElementContent'/>
           <ref name='xmlNewDocFragment'/>
         </word>
         <word name='owns'>
@@ -25043,6 +25089,7 @@
           <ref name='htmlEntityLookup'/>
           <ref name='htmlEntityValueLookup'/>
           <ref name='xmlBuildRelativeURI'/>
+          <ref name='xmlCreateEntitiesTable'/>
         </word>
         <word name='reasonable'>
           <ref name='xmlBuildRelativeURI'/>
@@ -25133,7 +25180,6 @@
           <ref name='xmlDocCopyNode'/>
           <ref name='xmlDocCopyNodeList'/>
           <ref name='xmlElemDump'/>
-          <ref name='xmlFreeElementContent'/>
           <ref name='xmlFreeEnumeration'/>
           <ref name='xmlFreeNode'/>
           <ref name='xmlFreeNodeList'/>
@@ -25370,6 +25416,8 @@
           <ref name='xmlBufferShrink'/>
           <ref name='xmlCatalogRemove'/>
           <ref name='xmlCheckLanguageID'/>
+          <ref name='xmlFreeDocElementContent'/>
+          <ref name='xmlFreeElementContent'/>
           <ref name='xmlHandleEntity'/>
           <ref name='xmlHashRemoveEntry'/>
           <ref name='xmlHashRemoveEntry2'/>
@@ -25916,6 +25964,9 @@
         <word name='semantic'>
           <ref name='xmlXPathNodeSetFreeNs'/>
         </word>
+        <word name='sense'>
+          <ref name='xmlCreateEntitiesTable'/>
+        </word>
         <word name='separated'>
           <ref name='xmlLoadCatalogs'/>
         </word>
@@ -26674,6 +26725,7 @@
         <word name='subelement'>
           <ref name='_htmlElemDesc'/>
           <ref name='htmlDefaultSubelement'/>
+          <ref name='xmlNewDocElementContent'/>
           <ref name='xmlNewElementContent'/>
         </word>
         <word name='subelements'>
@@ -26755,6 +26807,8 @@
         <word name='subtree'>
           <ref name='attribute'/>
           <ref name='attributeSAXFunc'/>
+          <ref name='xmlFreeDocElementContent'/>
+          <ref name='xmlFreeElementContent'/>
           <ref name='xmlReconciliateNs'/>
           <ref name='xmlRelaxNGValidateFullElement'/>
           <ref name='xmlSaveTree'/>
@@ -27945,6 +27999,10 @@
           <ref name='ignorableWhitespaceSAXFunc'/>
           <ref name='xmlSAX2IgnorableWhitespace'/>
         </word>
+        <word name='whole'>
+          <ref name='xmlFreeDocElementContent'/>
+          <ref name='xmlFreeElementContent'/>
+        </word>
         <word name='whose'>
           <ref name='xmlAutomataNewCountTrans'/>
           <ref name='xmlAutomataNewCountTrans2'/>
@@ -28304,6 +28362,9 @@
         <word name='xmlCleanupThreads'>
           <ref name='xmlCleanupThreads'/>
         </word>
+        <word name='xmlCopyDocElementContent'>
+          <ref name='xmlCopyElementContent'/>
+        </word>
         <word name='xmlCreateIntSubset'>
           <ref name='xmlNewDtd'/>
         </word>
@@ -28334,6 +28395,7 @@
           <ref name='xmlSAXParseDTD'/>
         </word>
         <word name='xmlElementContentPtr'>
+          <ref name='xmlCopyDocElementContent'/>
           <ref name='xmlCopyElementContent'/>
           <ref name='xmlParseElementChildrenContentDecl'/>
           <ref name='xmlParseElementMixedContentDecl'/>
@@ -28398,6 +28460,9 @@
         <word name='xmlFreeDoc'>
           <ref name='xmlTextReaderCurrentDoc'/>
         </word>
+        <word name='xmlFreeDocElementContent'>
+          <ref name='xmlFreeElementContent'/>
+        </word>
         <word name='xmlFreeMutex'>
           <ref name='xmlFreeMutex'/>
         </word>
@@ -28418,6 +28483,7 @@
         </word>
         <word name='xmlHashTablePtr'>
           <ref name='xmlHashCreate'/>
+          <ref name='xmlHashCreateDict'/>
         </word>
         <word name='xmlIDPtr'>
           <ref name='xmlAddID'/>
@@ -28548,6 +28614,9 @@
         <word name='xmlNewChild'>
           <ref name='xmlNewTextChild'/>
         </word>
+        <word name='xmlNewDocElementContent'>
+          <ref name='xmlNewElementContent'/>
+        </word>
         <word name='xmlNewDocRawNode'>
           <ref name='xmlNewDocNode'/>
           <ref name='xmlNewDocNodeEatName'/>
diff --git a/elfgcchack.h b/elfgcchack.h
index e247b22..2d6964d 100644
--- a/elfgcchack.h
+++ b/elfgcchack.h
@@ -1021,6 +1021,10 @@
 #define xmlCopyDoc xmlCopyDoc__internal_alias
 #endif
 
+extern __typeof (xmlCopyDocElementContent) xmlCopyDocElementContent__internal_alias __attribute((visibility("hidden")));
+extern __typeof (xmlCopyDocElementContent) xmlCopyDocElementContent __attribute((alias("xmlCopyDocElementContent__internal_alias")));
+#define xmlCopyDocElementContent xmlCopyDocElementContent__internal_alias
+
 #if defined(LIBXML_TREE_ENABLED)
 extern __typeof (xmlCopyDtd) xmlCopyDtd__internal_alias __attribute((visibility("hidden")));
 extern __typeof (xmlCopyDtd) xmlCopyDtd __attribute((alias("xmlCopyDtd__internal_alias")));
@@ -1261,6 +1265,10 @@
 extern __typeof (xmlDetectCharEncoding) xmlDetectCharEncoding __attribute((alias("xmlDetectCharEncoding__internal_alias")));
 #define xmlDetectCharEncoding xmlDetectCharEncoding__internal_alias
 
+extern __typeof (xmlDictCleanup) xmlDictCleanup__internal_alias __attribute((visibility("hidden")));
+extern __typeof (xmlDictCleanup) xmlDictCleanup __attribute((alias("xmlDictCleanup__internal_alias")));
+#define xmlDictCleanup xmlDictCleanup__internal_alias
+
 extern __typeof (xmlDictCreate) xmlDictCreate__internal_alias __attribute((visibility("hidden")));
 extern __typeof (xmlDictCreate) xmlDictCreate __attribute((alias("xmlDictCreate__internal_alias")));
 #define xmlDictCreate xmlDictCreate__internal_alias
@@ -1463,6 +1471,10 @@
 extern __typeof (xmlFreeDoc) xmlFreeDoc __attribute((alias("xmlFreeDoc__internal_alias")));
 #define xmlFreeDoc xmlFreeDoc__internal_alias
 
+extern __typeof (xmlFreeDocElementContent) xmlFreeDocElementContent__internal_alias __attribute((visibility("hidden")));
+extern __typeof (xmlFreeDocElementContent) xmlFreeDocElementContent __attribute((alias("xmlFreeDocElementContent__internal_alias")));
+#define xmlFreeDocElementContent xmlFreeDocElementContent__internal_alias
+
 extern __typeof (xmlFreeDtd) xmlFreeDtd__internal_alias __attribute((visibility("hidden")));
 extern __typeof (xmlFreeDtd) xmlFreeDtd __attribute((alias("xmlFreeDtd__internal_alias")));
 #define xmlFreeDtd xmlFreeDtd__internal_alias
@@ -1751,6 +1763,10 @@
 extern __typeof (xmlHashCreate) xmlHashCreate __attribute((alias("xmlHashCreate__internal_alias")));
 #define xmlHashCreate xmlHashCreate__internal_alias
 
+extern __typeof (xmlHashCreateDict) xmlHashCreateDict__internal_alias __attribute((visibility("hidden")));
+extern __typeof (xmlHashCreateDict) xmlHashCreateDict __attribute((alias("xmlHashCreateDict__internal_alias")));
+#define xmlHashCreateDict xmlHashCreateDict__internal_alias
+
 extern __typeof (xmlHashFree) xmlHashFree__internal_alias __attribute((visibility("hidden")));
 extern __typeof (xmlHashFree) xmlHashFree __attribute((alias("xmlHashFree__internal_alias")));
 #define xmlHashFree xmlHashFree__internal_alias
@@ -2525,6 +2541,10 @@
 extern __typeof (xmlNewDocComment) xmlNewDocComment __attribute((alias("xmlNewDocComment__internal_alias")));
 #define xmlNewDocComment xmlNewDocComment__internal_alias
 
+extern __typeof (xmlNewDocElementContent) xmlNewDocElementContent__internal_alias __attribute((visibility("hidden")));
+extern __typeof (xmlNewDocElementContent) xmlNewDocElementContent __attribute((alias("xmlNewDocElementContent__internal_alias")));
+#define xmlNewDocElementContent xmlNewDocElementContent__internal_alias
+
 #if defined(LIBXML_TREE_ENABLED)
 extern __typeof (xmlNewDocFragment) xmlNewDocFragment__internal_alias __attribute((visibility("hidden")));
 extern __typeof (xmlNewDocFragment) xmlNewDocFragment __attribute((alias("xmlNewDocFragment__internal_alias")));
diff --git a/python/libxml2class.txt b/python/libxml2class.txt
index c303166..c8e12ba 100644
--- a/python/libxml2class.txt
+++ b/python/libxml2class.txt
@@ -63,6 +63,9 @@
 debugDumpString()
 shellPrintXPathError()
 
+# functions from module dict
+dictCleanup()
+
 # functions from module encoding
 addEncodingAlias()
 cleanupCharEncodingHandlers()
diff --git a/testapi.c b/testapi.c
index 84b04f2..2dd0098 100644
--- a/testapi.c
+++ b/testapi.c
@@ -7938,6 +7938,29 @@
 }
 
 static int
+test_xmlDictCleanup(void) {
+    int test_ret = 0;
+
+    int mem_base;
+
+        mem_base = xmlMemBlocks();
+
+        xmlDictCleanup();
+        call_tests++;
+        xmlResetLastError();
+        if (mem_base != xmlMemBlocks()) {
+            printf("Leak of %d blocks found in xmlDictCleanup",
+	           xmlMemBlocks() - mem_base);
+	    test_ret++;
+            printf("\n");
+        }
+    function_tests++;
+
+    return(test_ret);
+}
+
+
+static int
 test_xmlDictCreate(void) {
     int test_ret = 0;
 
@@ -8239,7 +8262,8 @@
 test_dict(void) {
     int test_ret = 0;
 
-    if (quiet == 0) printf("Testing dict : 8 of 9 functions ...\n");
+    if (quiet == 0) printf("Testing dict : 9 of 10 functions ...\n");
+    test_ret += test_xmlDictCleanup();
     test_ret += test_xmlDictCreate();
     test_ret += test_xmlDictCreateSub();
     test_ret += test_xmlDictExists();
@@ -9617,6 +9641,16 @@
 
 
 static int
+test_xmlHashCreateDict(void) {
+    int test_ret = 0;
+
+
+    /* missing type support */
+    return(test_ret);
+}
+
+
+static int
 test_xmlHashLookup(void) {
     int test_ret = 0;
 
@@ -10348,12 +10382,13 @@
 test_hash(void) {
     int test_ret = 0;
 
-    if (quiet == 0) printf("Testing hash : 16 of 23 functions ...\n");
+    if (quiet == 0) printf("Testing hash : 16 of 24 functions ...\n");
     test_ret += test_xmlHashAddEntry();
     test_ret += test_xmlHashAddEntry2();
     test_ret += test_xmlHashAddEntry3();
     test_ret += test_xmlHashCopy();
     test_ret += test_xmlHashCreate();
+    test_ret += test_xmlHashCreateDict();
     test_ret += test_xmlHashLookup();
     test_ret += test_xmlHashLookup2();
     test_ret += test_xmlHashLookup3();
@@ -23591,6 +23626,45 @@
 
 
 static int
+test_xmlCopyDocElementContent(void) {
+    int test_ret = 0;
+
+    int mem_base;
+    xmlElementContentPtr ret_val;
+    xmlDocPtr doc; /* the document owning the element declaration */
+    int n_doc;
+    xmlElementContentPtr cur; /* An element content pointer. */
+    int n_cur;
+
+    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
+    for (n_cur = 0;n_cur < gen_nb_xmlElementContentPtr;n_cur++) {
+        mem_base = xmlMemBlocks();
+        doc = gen_xmlDocPtr(n_doc, 0);
+        cur = gen_xmlElementContentPtr(n_cur, 1);
+
+        ret_val = xmlCopyDocElementContent(doc, cur);
+        desret_xmlElementContentPtr(ret_val);
+        call_tests++;
+        des_xmlDocPtr(n_doc, doc, 0);
+        des_xmlElementContentPtr(n_cur, cur, 1);
+        xmlResetLastError();
+        if (mem_base != xmlMemBlocks()) {
+            printf("Leak of %d blocks found in xmlCopyDocElementContent",
+	           xmlMemBlocks() - mem_base);
+	    test_ret++;
+            printf(" %d", n_doc);
+            printf(" %d", n_cur);
+            printf("\n");
+        }
+    }
+    }
+    function_tests++;
+
+    return(test_ret);
+}
+
+
+static int
 test_xmlCopyElementContent(void) {
     int test_ret = 0;
 
@@ -24306,6 +24380,52 @@
 
 
 static int
+test_xmlNewDocElementContent(void) {
+    int test_ret = 0;
+
+    int mem_base;
+    xmlElementContentPtr ret_val;
+    xmlDocPtr doc; /* the document */
+    int n_doc;
+    xmlChar * name; /* the subelement name or NULL */
+    int n_name;
+    xmlElementContentType type; /* the type of element content decl */
+    int n_type;
+
+    for (n_doc = 0;n_doc < gen_nb_xmlDocPtr;n_doc++) {
+    for (n_name = 0;n_name < gen_nb_const_xmlChar_ptr;n_name++) {
+    for (n_type = 0;n_type < gen_nb_xmlElementContentType;n_type++) {
+        mem_base = xmlMemBlocks();
+        doc = gen_xmlDocPtr(n_doc, 0);
+        name = gen_const_xmlChar_ptr(n_name, 1);
+        type = gen_xmlElementContentType(n_type, 2);
+
+        ret_val = xmlNewDocElementContent(doc, (const xmlChar *)name, type);
+        desret_xmlElementContentPtr(ret_val);
+        call_tests++;
+        des_xmlDocPtr(n_doc, doc, 0);
+        des_const_xmlChar_ptr(n_name, (const xmlChar *)name, 1);
+        des_xmlElementContentType(n_type, type, 2);
+        xmlResetLastError();
+        if (mem_base != xmlMemBlocks()) {
+            printf("Leak of %d blocks found in xmlNewDocElementContent",
+	           xmlMemBlocks() - mem_base);
+	    test_ret++;
+            printf(" %d", n_doc);
+            printf(" %d", n_name);
+            printf(" %d", n_type);
+            printf("\n");
+        }
+    }
+    }
+    }
+    function_tests++;
+
+    return(test_ret);
+}
+
+
+static int
 test_xmlNewElementContent(void) {
     int test_ret = 0;
 
@@ -25779,13 +25899,14 @@
 test_valid(void) {
     int test_ret = 0;
 
-    if (quiet == 0) printf("Testing valid : 48 of 67 functions ...\n");
+    if (quiet == 0) printf("Testing valid : 50 of 70 functions ...\n");
     test_ret += test_xmlAddAttributeDecl();
     test_ret += test_xmlAddElementDecl();
     test_ret += test_xmlAddID();
     test_ret += test_xmlAddNotationDecl();
     test_ret += test_xmlAddRef();
     test_ret += test_xmlCopyAttributeTable();
+    test_ret += test_xmlCopyDocElementContent();
     test_ret += test_xmlCopyElementContent();
     test_ret += test_xmlCopyElementTable();
     test_ret += test_xmlCopyEnumeration();
@@ -25807,6 +25928,7 @@
     test_ret += test_xmlIsID();
     test_ret += test_xmlIsMixedElement();
     test_ret += test_xmlIsRef();
+    test_ret += test_xmlNewDocElementContent();
     test_ret += test_xmlNewElementContent();
     test_ret += test_xmlNewValidCtxt();
     test_ret += test_xmlRemoveID();
diff --git a/win32/libxml2.def.src b/win32/libxml2.def.src
index 07ce959..cb7bede 100644
--- a/win32/libxml2.def.src
+++ b/win32/libxml2.def.src
@@ -663,6 +663,7 @@
 xmlCopyChar
 xmlCopyCharMultiByte
 xmlCopyDoc
+xmlCopyDocElementContent
 xmlCopyDtd
 xmlCopyElementContent
 xmlCopyElementTable
@@ -736,6 +737,7 @@
 xmlDelEncodingAlias
 xmlDeregisterNodeDefault
 xmlDetectCharEncoding
+xmlDictCleanup
 xmlDictCreate
 xmlDictCreateSub
 xmlDictExists
@@ -781,6 +783,7 @@
 xmlFreeCatalog
 #endif
 xmlFreeDoc
+xmlFreeDocElementContent
 xmlFreeDtd
 xmlFreeElementContent
 xmlFreeElementTable
@@ -848,6 +851,7 @@
 xmlHashAddEntry3
 xmlHashCopy
 xmlHashCreate
+xmlHashCreateDict
 xmlHashFree
 xmlHashLookup
 xmlHashLookup2
@@ -1130,6 +1134,7 @@
 xmlNewComment
 xmlNewDoc
 xmlNewDocComment
+xmlNewDocElementContent
 xmlNewDocFragment
 xmlNewDocNode
 xmlNewDocNodeEatName