[xml/sgml-commit] r398 - in packages/libxml2/branches/upstream/current: . doc doc/examples doc/html include/libxml macos/src python python/tests result/relaxng result/schemas test/relaxng test/schemas win32 xstc

Mike Hommey glandium at costa.debian.org
Wed Sep 14 02:20:20 UTC 2005


Author: glandium
Date: 2005-04-04 18:23:13 +0000 (Mon, 04 Apr 2005)
New Revision: 398

Added:
   packages/libxml2/branches/upstream/current/python/tests/validDTD.py
   packages/libxml2/branches/upstream/current/python/tests/validRNG.py
   packages/libxml2/branches/upstream/current/python/tests/validSchemas.py
   packages/libxml2/branches/upstream/current/result/relaxng/list_0
   packages/libxml2/branches/upstream/current/result/relaxng/list_0.err
   packages/libxml2/branches/upstream/current/result/relaxng/list_1
   packages/libxml2/branches/upstream/current/result/relaxng/list_1.err
   packages/libxml2/branches/upstream/current/result/relaxng/list_err
   packages/libxml2/branches/upstream/current/result/relaxng/list_valid
   packages/libxml2/branches/upstream/current/test/relaxng/list.rng
   packages/libxml2/branches/upstream/current/test/relaxng/list_0.xml
   packages/libxml2/branches/upstream/current/test/relaxng/list_1.xml
Modified:
   packages/libxml2/branches/upstream/current/ChangeLog
   packages/libxml2/branches/upstream/current/DOCBparser.c
   packages/libxml2/branches/upstream/current/HTMLparser.c
   packages/libxml2/branches/upstream/current/HTMLtree.c
   packages/libxml2/branches/upstream/current/Makefile.am
   packages/libxml2/branches/upstream/current/Makefile.in
   packages/libxml2/branches/upstream/current/SAX.c
   packages/libxml2/branches/upstream/current/SAX2.c
   packages/libxml2/branches/upstream/current/c14n.c
   packages/libxml2/branches/upstream/current/catalog.c
   packages/libxml2/branches/upstream/current/chvalid.c
   packages/libxml2/branches/upstream/current/config.h.in
   packages/libxml2/branches/upstream/current/configure
   packages/libxml2/branches/upstream/current/configure.in
   packages/libxml2/branches/upstream/current/debugXML.c
   packages/libxml2/branches/upstream/current/dict.c
   packages/libxml2/branches/upstream/current/doc/APIchunk0.html
   packages/libxml2/branches/upstream/current/doc/APIchunk1.html
   packages/libxml2/branches/upstream/current/doc/APIchunk10.html
   packages/libxml2/branches/upstream/current/doc/APIchunk13.html
   packages/libxml2/branches/upstream/current/doc/APIchunk14.html
   packages/libxml2/branches/upstream/current/doc/APIchunk15.html
   packages/libxml2/branches/upstream/current/doc/APIchunk16.html
   packages/libxml2/branches/upstream/current/doc/APIchunk17.html
   packages/libxml2/branches/upstream/current/doc/APIchunk18.html
   packages/libxml2/branches/upstream/current/doc/APIchunk20.html
   packages/libxml2/branches/upstream/current/doc/APIchunk21.html
   packages/libxml2/branches/upstream/current/doc/APIchunk22.html
   packages/libxml2/branches/upstream/current/doc/APIchunk23.html
   packages/libxml2/branches/upstream/current/doc/APIchunk24.html
   packages/libxml2/branches/upstream/current/doc/APIchunk25.html
   packages/libxml2/branches/upstream/current/doc/APIchunk26.html
   packages/libxml2/branches/upstream/current/doc/APIchunk4.html
   packages/libxml2/branches/upstream/current/doc/APIchunk6.html
   packages/libxml2/branches/upstream/current/doc/APIchunk8.html
   packages/libxml2/branches/upstream/current/doc/APIchunk9.html
   packages/libxml2/branches/upstream/current/doc/APIconstructors.html
   packages/libxml2/branches/upstream/current/doc/APIfiles.html
   packages/libxml2/branches/upstream/current/doc/APIfunctions.html
   packages/libxml2/branches/upstream/current/doc/APIsymbols.html
   packages/libxml2/branches/upstream/current/doc/apibuild.py
   packages/libxml2/branches/upstream/current/doc/elfgcchack.xsl
   packages/libxml2/branches/upstream/current/doc/examples/Makefile.am
   packages/libxml2/branches/upstream/current/doc/examples/Makefile.in
   packages/libxml2/branches/upstream/current/doc/examples/examples.xml
   packages/libxml2/branches/upstream/current/doc/html/libxml-parser.html
   packages/libxml2/branches/upstream/current/doc/html/libxml-schemasInternals.html
   packages/libxml2/branches/upstream/current/doc/html/libxml-xmlerror.html
   packages/libxml2/branches/upstream/current/doc/html/libxml-xmlschemas.html
   packages/libxml2/branches/upstream/current/doc/html/libxml-xmlschemastypes.html
   packages/libxml2/branches/upstream/current/doc/libxml2-api.xml
   packages/libxml2/branches/upstream/current/doc/libxml2.xsa
   packages/libxml2/branches/upstream/current/doc/news.html
   packages/libxml2/branches/upstream/current/doc/xml.html
   packages/libxml2/branches/upstream/current/elfgcchack.h
   packages/libxml2/branches/upstream/current/encoding.c
   packages/libxml2/branches/upstream/current/entities.c
   packages/libxml2/branches/upstream/current/error.c
   packages/libxml2/branches/upstream/current/gentest.py
   packages/libxml2/branches/upstream/current/globals.c
   packages/libxml2/branches/upstream/current/hash.c
   packages/libxml2/branches/upstream/current/include/libxml/parser.h
   packages/libxml2/branches/upstream/current/include/libxml/schemasInternals.h
   packages/libxml2/branches/upstream/current/include/libxml/xmlerror.h
   packages/libxml2/branches/upstream/current/include/libxml/xmlschemastypes.h
   packages/libxml2/branches/upstream/current/include/libxml/xmlversion.h
   packages/libxml2/branches/upstream/current/legacy.c
   packages/libxml2/branches/upstream/current/libxml.spec.in
   packages/libxml2/branches/upstream/current/libxml2.spec
   packages/libxml2/branches/upstream/current/list.c
   packages/libxml2/branches/upstream/current/macos/src/config-mac.h
   packages/libxml2/branches/upstream/current/nanoftp.c
   packages/libxml2/branches/upstream/current/nanohttp.c
   packages/libxml2/branches/upstream/current/parser.c
   packages/libxml2/branches/upstream/current/parserInternals.c
   packages/libxml2/branches/upstream/current/pattern.c
   packages/libxml2/branches/upstream/current/python/generator.py
   packages/libxml2/branches/upstream/current/python/libxml.c
   packages/libxml2/branches/upstream/current/python/libxml.py
   packages/libxml2/branches/upstream/current/python/libxml2-py.c
   packages/libxml2/branches/upstream/current/python/setup.py
   packages/libxml2/branches/upstream/current/python/tests/Makefile.am
   packages/libxml2/branches/upstream/current/python/tests/Makefile.in
   packages/libxml2/branches/upstream/current/relaxng.c
   packages/libxml2/branches/upstream/current/result/schemas/element-err_0_0.err
   packages/libxml2/branches/upstream/current/result/schemas/element-minmax-err_0_0.err
   packages/libxml2/branches/upstream/current/result/schemas/src-element2-1_0_0.err
   packages/libxml2/branches/upstream/current/result/schemas/src-element2-2_0_0.err
   packages/libxml2/branches/upstream/current/test/relaxng/.memdump
   packages/libxml2/branches/upstream/current/test/schemas/bug152470_1.xsd
   packages/libxml2/branches/upstream/current/testapi.c
   packages/libxml2/branches/upstream/current/threads.c
   packages/libxml2/branches/upstream/current/tree.c
   packages/libxml2/branches/upstream/current/uri.c
   packages/libxml2/branches/upstream/current/valid.c
   packages/libxml2/branches/upstream/current/win32/libxml2.def.src
   packages/libxml2/branches/upstream/current/xinclude.c
   packages/libxml2/branches/upstream/current/xlink.c
   packages/libxml2/branches/upstream/current/xmlIO.c
   packages/libxml2/branches/upstream/current/xmllint.c
   packages/libxml2/branches/upstream/current/xmlmemory.c
   packages/libxml2/branches/upstream/current/xmlmodule.c
   packages/libxml2/branches/upstream/current/xmlreader.c
   packages/libxml2/branches/upstream/current/xmlregexp.c
   packages/libxml2/branches/upstream/current/xmlsave.c
   packages/libxml2/branches/upstream/current/xmlschemas.c
   packages/libxml2/branches/upstream/current/xmlschemastypes.c
   packages/libxml2/branches/upstream/current/xmlstring.c
   packages/libxml2/branches/upstream/current/xmlunicode.c
   packages/libxml2/branches/upstream/current/xmlwriter.c
   packages/libxml2/branches/upstream/current/xpath.c
   packages/libxml2/branches/upstream/current/xpointer.c
   packages/libxml2/branches/upstream/current/xstc/Makefile.am
   packages/libxml2/branches/upstream/current/xstc/Makefile.in
Log:
Load /tmp/tmp.98zkCi/libxml2-2.6.19 into
packages/libxml2/branches/upstream/current.


Modified: packages/libxml2/branches/upstream/current/ChangeLog
===================================================================
--- packages/libxml2/branches/upstream/current/ChangeLog	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/ChangeLog	2005-04-04 18:23:13 UTC (rev 398)
@@ -1,3 +1,207 @@
+Sat Apr  2 12:48:41 CEST 2005 Daniel Veillard <daniel at veillard.com>
+
+	* doc/* configure.in NEWS: preparing release 2.6.19, updated docs and
+	  rebuilding.
+
+Sat Apr  2 13:27:32 CEST 2005 Daniel Veillard <daniel at veillard.com>
+
+	* xstc/Makefile.am: integrated fixup-tests.py
+
+Fri Apr  1 19:14:18 CEST 2005 Daniel Veillard <daniel at veillard.com>
+
+	* xmlschemastypes.c: fixed a lack of comment and missing test for
+	  a pointer in the API.
+
+Fri Apr  1 17:54:22 CEST 2005 Kasimier Buchcik <libxml2-cvs at cazic.net>
+
+	* xstc/fixup-tests.py: A tiny script to fixup some of the schema
+	  files used for the tests.
+
+Fri Apr  1 17:33:50 CEST 2005 Kasimier Buchcik <libxml2-cvs at cazic.net>
+
+	* xmlschemas.c include/libxml/schemasInternals.h
+	  result/schemas/src-element2-*.err result/schemas/element-*.err:
+	  Committing again, since the CVS server aborted.
+
+Fri Apr  1 15:29:27 CEST 2005 Kasimier Buchcik <libxml2-cvs at cazic.net>
+
+	* xmlschemastypes.c: Corrected 'length' facet validation for
+	  QNames and notations. Corrected xmlSchemaGetCanonValue: some
+	  data types did not return a value if already in normalized
+	  form.
+	* xmlschemas.c include/libxml/schemasInternals.h:
+	  Eliminated creation of structs for <restriction>, <extension>,
+	  <simpleContent>, <complexContent>, <list> and <union>: the
+	  information is now set directly on the corresponding simple/
+	  complex type. Added some more complex type constraints.
+	  Added facet derivation constraints. Introduced "particle"
+	  components, which seem to be really needed if applying
+	  constraints. Corrected/change some of the parsing functions.
+	  This is all a bit scary, since a significant change to the code.
+	* result/schemas/src-element2-*.err result/schemas/element-*.err:
+	  Adapted regression test results.
+
+Fri Apr  1 16:07:59 CEST 2005 Daniel Veillard <daniel at veillard.com>
+
+	* doc/apibuild.py doc/elfgcchack.xsl: revamped the elfgcchack.h 
+	  format to cope with gcc4 change of aliasing allowed scopes, had
+	  to add extra informations to doc/libxml2-api.xml to separate
+	  the header from the c module source.
+	* *.c: updated all c library files to add a #define bottom_xxx
+	  and reimport elfgcchack.h thereafter, and a bit of cleanups.
+	* doc//* testapi.c: regenerated when rebuilding the API
+
+Thu Mar 31 17:20:32 CEST 2005 Daniel Veillard <daniel at veillard.com>
+
+	* xmlsave.c: fixed bug reported by Petr Pajas, in the absence of
+	  encoding UTF-8 should really be assumed. This may break if 
+	  the HTTP headers indicates for example ISO-8859-1 since this
+	  then becomes a well formedness error.
+
+Thu Mar 31 16:57:18 CEST 2005 Daniel Veillard <daniel at veillard.com>
+
+	* SAX.c: fixed #172260 redundant assignment.
+	* parser.c include/libxml/parser.h: fixed xmlSAXParseDoc() and 
+	  xmlParseDoc() signatures #172257.
+
+Thu Mar 31 16:11:10 CEST 2005 Daniel Veillard <daniel at veillard.com>
+
+	* parser.c: fix potential crash if ctxt->sax->ignorableWhitespace
+	  is NULL as reported by bug #172255
+
+Thu Mar 31 15:36:52 CEST 2005 Daniel Veillard <daniel at veillard.com>
+
+	* relaxng.c: fixed a problem in Relax-NG validation #159968
+	* test/relaxng/list.* result/relaxng/list_*: added the test
+	  to the regression suite
+
+Thu Mar 31 13:06:02 CEST 2005 Daniel Veillard <daniel at veillard.com>
+
+	* python/libxml.c: fixed bug #168504
+
+Thu Mar 31 12:22:54 CEST 2005 Daniel Veillard <daniel at veillard.com>
+
+	* config.h.in configure.in nanoftp.c nanohttp.c xmllint.c
+	  macos/src/config-mac.h: use XML_SOCKLEN_T instead of SOCKLEN_T
+	  since apparently IBM can't avoid breaking common defines #166922
+
+Thu Mar 31 10:41:45 CEST 2005 Daniel Veillard <daniel at veillard.com>
+
+	* encoding.c: fix unitinialized variable in not frequently used
+	  code bug #172182
+
+Thu Mar 31 00:45:18 CEST 2005 Daniel Veillard <daniel at veillard.com>
+
+	* python/generator.py python/libxml.py: another patch from Brent
+	  Hendricks to add new handlers with the various validity contexts
+	* python/tests/Makefile.am python/tests/validDTD.py
+	  python/tests/validRNG.py python/tests/validSchemas.py: also 
+	  added the regression tests he provided
+
+Wed Mar 30 09:39:27 CEST 2005 Daniel Veillard <daniel at veillard.com>
+
+	* python/generator.py python/libxml.c: applied patch from Brent
+	  Hendricks to avoid leak in python bindings when using schemas
+	  error handlers.
+
+Tue Mar 29 22:29:28 CEST 2005 Daniel Veillard <daniel at veillard.com>
+
+	* HTMLtree.c: fixing bug 168196, <a name=""> must be URI escaped too
+
+Sun Mar 27 13:24:24 CEST 2005 Daniel Veillard <daniel at veillard.com>
+
+	* tree.c: cleanup of the Prop related functions and xmlNewNodeEatName
+	  by Rob Richards
+
+Thu Mar 24 19:01:22 PST 2005 William Brack <wbrack at mmm.com.hk>
+
+	* gentest.py, testapi.c: fixed problem with 'minimal library'
+	  compilation (LIBXML_PATTERN_ENABLED not properly checked) reported
+	  by Greg Morgan
+
+Thu Mar 24 12:01:30 CET 2005 Kasimier Buchcik <libxml2-cvs at cazic.net>
+
+	* xmlschemas.c: Fixed call to a facet error report: the type of
+	  the error was wrong, resulting in a segfault (bug #171220, reported
+	  by GUY Fabrice).
+
+Mon Mar 21 22:58:37 CET 2005 Kasimier Buchcik <libxml2-cvs at cazic.net>
+
+	* xmlschemas.c: Removed a stupid bug in xmlSchemaValidateAttributes,
+	  failing to build a linked list correctly (bug #169898, reported
+	  by bing song, hmm...).
+
+Mon Mar 21 21:09:07 CET 2005 Kasimier Buchcik <libxml2-cvs at cazic.net>
+
+	* xmlschemas.c: Fixed a segfault, which occured during bubbling
+	  of IDC nodes (bug #170779 and #170778, reported by GUY Fabrice):
+	  a variable was missed to be reset in a loop. Deactivated bubbling,
+	  if not referenced by a keyref.
+
+Sun Mar 20 11:13:02 PST 2005 Aleksey Sanin <aleksey at aleksey.com>
+	
+	* c14n.c include/libxml/xmlerror.h: special case "DAV:" namespace
+	in c14n relative namespaces check and add structured error messages
+	to c14n code
+
+Thu Mar 17 12:55:23 CET 2005 Kasimier Buchcik <libxml2-cvs at cazic.net>
+
+	* xmlschemas.c: Removed inheritance of "mixed" content type for
+	  short-hand restrictions of "anyType" (reported by Guy Fabrice
+	  to the mailing list). Added the namespace conversion (chameleon
+	  includes) for the base type reference of <restriction> and
+	  <extension>.
+	* test/schemas/bug152470_1.xsd: Adapted due to the above change
+	  of "mixed" inheritance.
+
+Thu Mar 17 11:03:59 CET 2005 Daniel Veillard <daniel at veillard.com>
+
+	* xmlschemas.c: fixed a = -> == error pointed by GUY Fabrice
+
+Wed Mar 16 22:53:53 CET 2005 Daniel Veillard <daniel at veillard.com>
+
+	* xmlschemas.c: more debug messages from Matthew Burgess
+	* xmlschemastypes.c: xmlSchemaValidateLengthFacet API missing check.
+
+Wed Mar 16 17:37:04 CET 2005 Kasimier Buchcik <libxml2-cvs at cazic.net>
+
+	* xmlschemastypes.c: Aaaannnd putting back the previous changes done
+	  by Daniel, which I overwrote with the previous commit.
+
+Wed Mar 16 17:20:25 CET 2005 Kasimier Buchcik <libxml2-cvs at cazic.net>
+
+	* xmlschemas.c xmlschemastypes.c include/libxml/xmlschemastypes.h:
+	  Hopefully finished validation against facets to use the normalized
+	  value of both, the facets and instance values. Added 
+	  xmlSchemaValidateLengthFacetWhtsp(), xmlSchemaValidateFacetWhtsp()
+	  and xmlSchemaGetValType() to the schema API.
+
+Wed Mar 16 13:55:31 CET 2005 Daniel Veillard <daniel at veillard.com>
+
+	* libxml.spec.in: do not package .la files
+	* xmllint.c: applied patch from Gerry Murphy for xmllint return code
+	* xmlschemastypes.c: fixed a couple of missing tests of parameters
+	  at public API entry points.
+
+Tue Mar 15 23:31:14 HKT 2005 William Brack <wbrack at mmm.com.hk>
+
+	* xmlschemastypes.c: a couple of more changes to various
+	  decimal-handling routines.  Fixes python some problems
+	  turned up by the python tests.
+	* Makefile.am: change SchemasPythonTests message to warn
+	  that there are 10 'expected' errors (rather than 6) since
+	  we now reject a '+' sign on an unsigned.
+
+Tue Mar 15 15:43:27 CET 2005 Kasimier Buchcik <libxml2-cvs at cazic.net>
+
+	* xmlschemastypes.c xmlschemastypes.h: In preparation to use
+	  normalized values of facets during validation: changed the
+	  arguments of some string comparison functions; added a static
+	  xmlSchemaValidateFacetInternal() with more arguments to be
+	  more flexible. Prepared XML_SCHEMA_FACET_ENUMERATION validation
+	  to use the comparison functions. Fixed some assignments in
+	  xmlSchemaValAtomicType(): total digit count, lo, mi, hi.
+
 Sun Mar 13 19:32:03 CET 2005 Daniel Veillard <daniel at veillard.com>
 
 	* NEWS configure.in testapi.c doc/*: preparing release of 2.6.18

Modified: packages/libxml2/branches/upstream/current/DOCBparser.c
===================================================================
--- packages/libxml2/branches/upstream/current/DOCBparser.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/DOCBparser.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -300,4 +300,6 @@
 
     return (xmlParseFile(filename));
 }
+#define bottom_DOCBparser
+#include "elfgcchack.h"
 #endif /* LIBXML_DOCB_ENABLED */

Modified: packages/libxml2/branches/upstream/current/HTMLparser.c
===================================================================
--- packages/libxml2/branches/upstream/current/HTMLparser.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/HTMLparser.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -6173,4 +6173,6 @@
     return (htmlDoRead(ctxt, URL, encoding, options, 1));
 }
 
+#define bottom_HTMLparser
+#include "elfgcchack.h"
 #endif /* LIBXML_HTML_ENABLED */

Modified: packages/libxml2/branches/upstream/current/HTMLtree.c
===================================================================
--- packages/libxml2/branches/upstream/current/HTMLtree.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/HTMLtree.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -663,7 +663,9 @@
 		(cur->parent->ns == NULL) &&
 		((!xmlStrcasecmp(cur->name, BAD_CAST "href")) ||
 	         (!xmlStrcasecmp(cur->name, BAD_CAST "action")) ||
-		 (!xmlStrcasecmp(cur->name, BAD_CAST "src")))) {
+		 (!xmlStrcasecmp(cur->name, BAD_CAST "src")) ||
+		 ((!xmlStrcasecmp(cur->name, BAD_CAST "name")) &&
+		  (!xmlStrcasecmp(cur->parent->name, BAD_CAST "a"))))) {
 		xmlChar *escaped;
 		xmlChar *tmp = value;
 
@@ -1186,4 +1188,6 @@
 
 #endif /* LIBXML_OUTPUT_ENABLED */
 
+#define bottom_HTMLtree
+#include "elfgcchack.h"
 #endif /* LIBXML_HTML_ENABLED */

Modified: packages/libxml2/branches/upstream/current/Makefile.am
===================================================================
--- packages/libxml2/branches/upstream/current/Makefile.am	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/Makefile.am	2005-04-04 18:23:13 UTC (rev 398)
@@ -1000,7 +1000,7 @@
 	    LD_LIBRARY_PATH="$(top_builddir)/.libs:$$LD_LIBRARY_PATH" ; \
 	    export LD_LIBRARY_PATH; \
 	    echo "## XML Schemas datatypes Python based test suite" ; \
-	    echo "## It is normal to see 6 errors reported" ; \
+	    echo "## It is normal to see 10 errors reported" ; \
 	    $(CHECKER) $(PYTHON) $(srcdir)/check-xsddata-test-suite.py ; \
 	  fi)
 	@(if [ -x $(PYTHON) -a -d xstc ] ; then cd xstc ; $(MAKE) CHECKER="$(CHECKER)" MAKEFLAGS+=--silent pytests ; fi)

Modified: packages/libxml2/branches/upstream/current/Makefile.in
===================================================================
--- packages/libxml2/branches/upstream/current/Makefile.in	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/Makefile.in	2005-04-04 18:23:13 UTC (rev 398)
@@ -2241,7 +2241,7 @@
 	    LD_LIBRARY_PATH="$(top_builddir)/.libs:$$LD_LIBRARY_PATH" ; \
 	    export LD_LIBRARY_PATH; \
 	    echo "## XML Schemas datatypes Python based test suite" ; \
-	    echo "## It is normal to see 6 errors reported" ; \
+	    echo "## It is normal to see 10 errors reported" ; \
 	    $(CHECKER) $(PYTHON) $(srcdir)/check-xsddata-test-suite.py ; \
 	  fi)
 	@(if [ -x $(PYTHON) -a -d xstc ] ; then cd xstc ; $(MAKE) CHECKER="$(CHECKER)" MAKEFLAGS+=--silent pytests ; fi)

Modified: packages/libxml2/branches/upstream/current/SAX.c
===================================================================
--- packages/libxml2/branches/upstream/current/SAX.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/SAX.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -116,7 +116,6 @@
     hdlr->cdataBlock = xmlSAX2CDataBlock;
     hdlr->ignorableWhitespace = xmlSAX2IgnorableWhitespace;
     hdlr->processingInstruction = xmlSAX2ProcessingInstruction;
-    hdlr->processingInstruction = NULL;
     hdlr->comment = xmlSAX2Comment;
     hdlr->warning = xmlParserWarning;
     hdlr->error = xmlParserError;
@@ -176,4 +175,6 @@
 
 #endif /* LIBXML_SAX1_ENABLED */
 
+#define bottom_SAX
+#include "elfgcchack.h"
 #endif /* LIBXML_LEGACY_ENABLED */

Modified: packages/libxml2/branches/upstream/current/SAX2.c
===================================================================
--- packages/libxml2/branches/upstream/current/SAX2.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/SAX2.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -2755,3 +2755,5 @@
 }
 
 #endif /* LIBXML_DOCB_ENABLED */
+#define bottom_SAX2
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/c14n.c
===================================================================
--- packages/libxml2/branches/upstream/current/c14n.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/c14n.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -40,12 +40,12 @@
 } xmlC14NPosition;
 
 typedef struct _xmlC14NVisibleNsStack {
-    int nsCurEnd;	 /* number of nodes in the set */
-    int nsPrevStart; 	 /* the begginning of the stack for previous visible node */
-    int nsPrevEnd;	 /* the end of the stack for previous visible node */
-    int nsMax;		 /* size of the array as allocated */
-    xmlNsPtr 	*nsTab;	 /* array of ns in no particular order */	      
-    xmlNodePtr	*nodeTab;/* array of nodes in no particular order */
+    int nsCurEnd;           /* number of nodes in the set */
+    int nsPrevStart;        /* the begginning of the stack for previous visible node */
+    int nsPrevEnd;          /* the end of the stack for previous visible node */
+    int nsMax;              /* size of the array as allocated */
+    xmlNsPtr 	*nsTab;	    /* array of ns in no particular order */	      
+    xmlNodePtr	*nodeTab;   /* array of nodes in no particular order */
 } xmlC14NVisibleNsStack, *xmlC14NVisibleNsStackPtr;
 
 typedef struct _xmlC14NCtx {
@@ -70,10 +70,10 @@
 } xmlC14NCtx, *xmlC14NCtxPtr;
 
 static xmlC14NVisibleNsStackPtr	xmlC14NVisibleNsStackCreate	(void);
-static void			xmlC14NVisibleNsStackDestroy	(xmlC14NVisibleNsStackPtr cur);
-static void 			xmlC14NVisibleNsStackAdd	(xmlC14NVisibleNsStackPtr cur, 
-								 xmlNsPtr ns,
-								 xmlNodePtr node);
+static void     xmlC14NVisibleNsStackDestroy	(xmlC14NVisibleNsStackPtr cur);
+static void     xmlC14NVisibleNsStackAdd	    (xmlC14NVisibleNsStackPtr cur, 
+                                                 xmlNsPtr ns,
+                                                 xmlNodePtr node);
 static void 			xmlC14NVisibleNsStackSave	(xmlC14NVisibleNsStackPtr cur,
 								 xmlC14NVisibleNsStackPtr state);
 static void 			xmlC14NVisibleNsStackRestore	(xmlC14NVisibleNsStackPtr cur,
@@ -127,7 +127,7 @@
  * xmlC14NErrMemory:
  * @extra:  extra informations
  *
- * Handle a redefinition of attribute error
+ * Handle a redefinition of memory error
  */
 static void
 xmlC14NErrMemory(const char *extra)
@@ -139,6 +139,83 @@
 }
 
 /**
+ * xmlC14NErrParam:
+ * @extra:  extra informations
+ *
+ * Handle a redefinition of param error
+ */
+static void
+xmlC14NErrParam(const char *extra)
+{
+    __xmlRaiseError(NULL, NULL, NULL, NULL, NULL, XML_FROM_C14N,
+		    XML_ERR_INTERNAL_ERROR, XML_ERR_ERROR, NULL, 0, extra,
+		    NULL, NULL, 0, 0,
+		    "Invalid parameter : %s\n", extra);
+}
+
+/**
+ * xmlC14NErrInternal:
+ * @extra:  extra informations
+ *
+ * Handle a redefinition of internal error
+ */
+static void
+xmlC14NErrInternal(const char *extra)
+{
+    __xmlRaiseError(NULL, NULL, NULL, NULL, NULL, XML_FROM_C14N,
+		    XML_ERR_INTERNAL_ERROR, XML_ERR_ERROR, NULL, 0, extra,
+		    NULL, NULL, 0, 0,
+		    "Internal error : %s\n", extra);
+}
+
+/**
+ * xmlC14NErrInvalidNode:
+ * @extra:  extra informations
+ *
+ * Handle a redefinition of invalid node error
+ */
+static void
+xmlC14NErrInvalidNode(const char *node_type, const char *extra)
+{
+    __xmlRaiseError(NULL, NULL, NULL, NULL, NULL, XML_FROM_C14N,
+		    XML_C14N_INVALID_NODE, XML_ERR_ERROR, NULL, 0, extra,
+		    NULL, NULL, 0, 0,
+		    "Node %s is invalid here : %s\n", node_type, extra);
+}
+
+/**
+ * xmlC14NErrUnknownNode:
+ * @extra:  extra informations
+ *
+ * Handle a redefinition of unknown node error
+ */
+static void
+xmlC14NErrUnknownNode(int node_type, const char *extra)
+{
+    __xmlRaiseError(NULL, NULL, NULL, NULL, NULL, XML_FROM_C14N,
+		    XML_C14N_UNKNOW_NODE, XML_ERR_ERROR, NULL, 0, extra,
+		    NULL, NULL, 0, 0,
+		    "Unknown node type %d found : %s\n", node_type, extra);
+}
+
+/**
+ * xmlC14NErrRelativeNamespace:
+ * @extra:  extra informations
+ *
+ * Handle a redefinition of relative namespace error
+ */
+static void
+xmlC14NErrRelativeNamespace(const char *ns_uri)
+{
+    __xmlRaiseError(NULL, NULL, NULL, NULL, NULL, XML_FROM_C14N,
+		    XML_C14N_RELATIVE_NAMESPACE, XML_ERR_ERROR, NULL, 0, NULL,
+		    NULL, NULL, 0, 0,
+		    "Relative namespace UR is invalid here : %s\n", ns_uri);
+}
+
+
+
+/**
  * xmlC14NErr:
  * @ctxt:  a C14N evaluation context
  * @node:  the context node
@@ -200,7 +277,7 @@
 
     ret = (xmlC14NVisibleNsStackPtr) xmlMalloc(sizeof(xmlC14NVisibleNsStack));
     if (ret == NULL) {
-        xmlC14NErrMemory("creating stack");
+        xmlC14NErrMemory("creating namespaces stack");
 	return(NULL);
     }
     memset(ret, 0 , (size_t) sizeof(xmlC14NVisibleNsStack));
@@ -210,11 +287,8 @@
 static void
 xmlC14NVisibleNsStackDestroy(xmlC14NVisibleNsStackPtr cur) {
     if(cur == NULL) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-            "xmlC14NVisibleNsStackDestroy: cur is null.\n");
-#endif
-	return;
+        xmlC14NErrParam("destroying namespaces stack");
+        return;
     }
     if(cur->nsTab != NULL) {
 	memset(cur->nsTab, 0, cur->nsMax * sizeof(xmlNsPtr));
@@ -234,10 +308,7 @@
     if((cur == NULL) || 
        ((cur->nsTab == NULL) && (cur->nodeTab != NULL)) ||
        ((cur->nsTab != NULL) && (cur->nodeTab == NULL))) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-            "xmlC14NVisibleNsStackAdd: cur is null.\n");
-#endif
+        xmlC14NErrParam("adding namespace to stack");
 	return;
     }
 
@@ -281,10 +352,7 @@
 static void
 xmlC14NVisibleNsStackSave(xmlC14NVisibleNsStackPtr cur, xmlC14NVisibleNsStackPtr state) {
     if((cur == NULL) || (state == NULL)) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-            "xmlC14NVisibleNsStackSave: cur or state is null.\n");
-#endif
+        xmlC14NErrParam("saving namespaces stack");
 	return;
     }
     
@@ -296,10 +364,7 @@
 static void
 xmlC14NVisibleNsStackRestore(xmlC14NVisibleNsStackPtr cur, xmlC14NVisibleNsStackPtr state) {
     if((cur == NULL) || (state == NULL)) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-            "xmlC14NVisibleNsStackRestore: cur or state is null.\n");
-#endif
+        xmlC14NErrParam("restoring namespaces stack");
 	return;
     }
     cur->nsCurEnd = state->nsCurEnd;
@@ -310,10 +375,7 @@
 static void 
 xmlC14NVisibleNsStackShift(xmlC14NVisibleNsStackPtr cur) {
     if(cur == NULL) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-            "xmlC14NVisibleNsStackRestore: cur is null.\n");
-#endif
+        xmlC14NErrParam("shifting namespaces stack");
 	return;
     }
     cur->nsPrevStart = cur->nsPrevEnd;
@@ -349,10 +411,7 @@
     int has_empty_ns;
         
     if(cur == NULL) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-            "xmlC14NVisibleNsStackFind: cur is null.\n");
-#endif
+        xmlC14NErrParam("searching namespaces stack (c14n)");
         return (0);
     }
 
@@ -385,10 +444,7 @@
     int has_empty_ns;
         
     if(cur == NULL) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-            "xmlExcC14NVisibleNsStackFind: cur is null.\n");
-#endif
+        xmlC14NErrParam("searching namespaces stack (exc c14n)");
         return (0);
     }
 
@@ -479,10 +535,7 @@
 {
 
     if ((ns == NULL) || (ctx == NULL)) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlC14NPrintNamespace: namespace or context pointer is null\n");
-#endif
+        xmlC14NErrParam("writing namespaces");
         return 0;
     }
 
@@ -549,10 +602,7 @@
     int has_empty_ns = 0;
     
     if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlC14NProcessNamespacesAxis: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
-#endif
+        xmlC14NErrParam("processing namespaces axis (c14n)");
         return (-1);
     }
 
@@ -561,10 +611,7 @@
      */
     list = xmlListCreate(NULL, (xmlListDataCompare) xmlC14NNsCompare);
     if (list == NULL) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlC14NProcessNamespacesAxis: list creation failed\n");
-#endif
+        xmlC14NErrInternal("creating namespaces list (c14n)");
         return (-1);
     }
 
@@ -662,18 +709,12 @@
     int has_empty_ns_in_inclusive_list = 0;
         
     if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlExcC14NProcessNamespacesAxis: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
-#endif
+        xmlC14NErrParam("processing namespaces axis (exc c14n)");
         return (-1);
     }
 
     if(!ctx->exclusive) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlExcC14NProcessNamespacesAxis: called for non-exclusive canonization or rendered stack is NULL.\n");
-#endif
+        xmlC14NErrParam("processing namespaces axis (exc c14n)");
         return (-1);
 
     }
@@ -683,10 +724,7 @@
      */
     list = xmlListCreate(NULL, (xmlListDataCompare) xmlC14NNsCompare);
     if (list == NULL) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlExcC14NProcessNamespacesAxis: list creation failed\n");
-#endif
+        xmlC14NErrInternal("creating namespaces list (exc c14n)");
         return (-1);
     }
 
@@ -874,10 +912,7 @@
     xmlChar *buffer;
 
     if ((attr == NULL) || (ctx == NULL)) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlC14NPrintAttrs: attr == NULL or ctx == NULL\n");
-#endif
+        xmlC14NErrParam("writing attributes");
         return (0);
     }
 
@@ -899,10 +934,7 @@
             xmlOutputBufferWriteString(ctx->buf, (const char *) buffer);
             xmlFree(buffer);
         } else {
-#ifdef DEBUG_C14N
-            xmlGenericError(xmlGenericErrorContext,
-                            "xmlC14NPrintAttrs: xmlC11NNormalizeAttr failed\n");
-#endif
+            xmlC14NErrInternal("normalizing attributes axis");
             return (0);
         }
     }
@@ -948,10 +980,7 @@
     xmlListPtr list;
 
     if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlC14NProcessAttrsAxis: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
-#endif
+        xmlC14NErrParam("processing attributes axis");
         return (-1);
     }
 
@@ -960,10 +989,7 @@
      */
     list = xmlListCreate(NULL, (xmlListDataCompare) xmlC14NAttrsCompare);
     if (list == NULL) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlC14NProcessAttrsAxis: list creation failed\n");
-#endif
+        xmlC14NErrInternal("creating attributes list");
         return (-1);
     }
 
@@ -1032,10 +1058,7 @@
     xmlNsPtr ns;
 
     if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlC14NCheckForRelativeNamespaces: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
-#endif
+        xmlC14NErrParam("checking for relative namespaces");
         return (-1);
     }
 
@@ -1046,20 +1069,18 @@
 
             uri = xmlParseURI((const char *) ns->href);
             if (uri == NULL) {
-#ifdef DEBUG_C14N
-                xmlGenericError(xmlGenericErrorContext,
-                                "xmlC14NCheckForRelativeNamespaces: unable to parse uri=\"%s\".\n",
-                                ns->href);
-#endif
+                xmlC14NErrInternal("parsing namespace uri");
                 return (-1);
             }
             if (xmlStrlen((const xmlChar *) uri->scheme) == 0) {
+                xmlC14NErrRelativeNamespace(uri->scheme);
                 xmlFreeURI(uri);
                 return (-1);
             }
-            if ((!xmlStrEqual
-                 ((const xmlChar *) uri->scheme, BAD_CAST "urn"))
+            if ((xmlStrcasecmp((const xmlChar *) uri->scheme, BAD_CAST "urn") != 0)
+                && (xmlStrcasecmp((const xmlChar *) uri->scheme, BAD_CAST "dav") !=0)
                 && (xmlStrlen((const xmlChar *) uri->server) == 0)) {
+                xmlC14NErrRelativeNamespace(uri->scheme);
                 xmlFreeURI(uri);
                 return (-1);
             }
@@ -1099,10 +1120,7 @@
     int parent_is_doc = 0;
 
     if ((ctx == NULL) || (cur == NULL) || (cur->type != XML_ELEMENT_NODE)) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlC14NProcessElementNode: Null context or node pointer or type != XML_ELEMENT_NODE.\n");
-#endif
+        xmlC14NErrParam("processing element node");
         return (-1);
     }
 
@@ -1112,10 +1130,7 @@
      * failure on documents containing relative namespace URIs.
      */
     if (xmlC14NCheckForRelativeNamespaces(ctx, cur) < 0) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlC14NProcessElementNode: xmlC14NCheckForRelativeNamespaces failed.\n");
-#endif
+        xmlC14NErrInternal("checking for relative namespaces");
         return (-1);
     }
 
@@ -1148,10 +1163,7 @@
         ret = xmlExcC14NProcessNamespacesAxis(ctx, cur, visible);
     }
     if (ret < 0) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-            "xmlC14NProcessElementNode: xmlC14NProcessNamespacesAxis failed.\n");
-#endif
+        xmlC14NErrInternal("processing namespaces axis");
         return (-1);
     }
     /* todo: shouldn't this go to "visible only"? */
@@ -1162,10 +1174,7 @@
     if(visible) {
 	ret = xmlC14NProcessAttrsAxis(ctx, cur);
 	if (ret < 0) {
-#ifdef DEBUG_C14N
-    	    xmlGenericError(xmlGenericErrorContext,
-                "xmlC14NProcessElementNode: xmlC14NProcessAttrsAxis failed.\n");
-#endif
+        xmlC14NErrInternal("processing attributes axis");
     	    return (-1);
 	}
     }
@@ -1176,10 +1185,7 @@
     if (cur->children != NULL) {
         ret = xmlC14NProcessNodeList(ctx, cur->children);
         if (ret < 0) {
-#ifdef DEBUG_C14N
-            xmlGenericError(xmlGenericErrorContext,
-                            "xmlC14NProcessElementNode: xmlC14NProcessNodeList failed.\n");
-#endif
+            xmlC14NErrInternal("processing childrens list");
             return (-1);
         }
     }
@@ -1222,10 +1228,7 @@
     int visible;
 
     if ((ctx == NULL) || (cur == NULL)) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlC14NProcessNode: Null context or node pointer.\n");
-#endif
+        xmlC14NErrParam("processing node");
         return (-1);
     }
 
@@ -1254,10 +1257,7 @@
                                                (const char *) buffer);
                     xmlFree(buffer);
                 } else {
-#ifdef DEBUG_C14N
-                    xmlGenericError(xmlGenericErrorContext,
-                                    "xmlC14NProcessNode: xmlC11NNormalizeText() failed\n");
-#endif
+                    xmlC14NErrInternal("normalizing text node");
                     return (-1);
                 }
             }
@@ -1296,10 +1296,7 @@
                                                    (const char *) buffer);
                         xmlFree(buffer);
                     } else {
-#ifdef DEBUG_C14N
-                        xmlGenericError(xmlGenericErrorContext,
-                                        "xmlC14NProcessNode: xmlC11NNormalizePI() failed\n");
-#endif
+                        xmlC14NErrInternal("normalizing pi node");
                         return (-1);
                     }
                 }
@@ -1344,10 +1341,7 @@
                                                    (const char *) buffer);
                         xmlFree(buffer);
                     } else {
-#ifdef DEBUG_C14N
-                        xmlGenericError(xmlGenericErrorContext,
-                                        "xmlC14NProcessNode: xmlC11NNormalizeComment() failed\n");
-#endif
+                        xmlC14NErrInternal("normalizing comment node");
                         return (-1);
                     }
                 }
@@ -1375,20 +1369,16 @@
             break;
 
         case XML_ATTRIBUTE_NODE:
-	    xmlC14NErr(ctx, cur, XML_C14N_INVALID_NODE,
-		"xmlC14NProcessNode: XML_ATTRIBUTE_NODE is illegal here\n");
+            xmlC14NErrInvalidNode("XML_ATTRIBUTE_NODE", "processing node");
             return (-1);
         case XML_NAMESPACE_DECL:
-	    xmlC14NErr(ctx, cur, XML_C14N_INVALID_NODE,
-		"xmlC14NProcessNode: XML_NAMESPACE_DECL is illegal here\n");
+            xmlC14NErrInvalidNode("XML_NAMESPACE_DECL", "processing node");
             return (-1);
         case XML_ENTITY_REF_NODE:
-	    xmlC14NErr(ctx, cur, XML_C14N_INVALID_NODE,
-		"xmlC14NProcessNode: XML_ENTITY_REF_NODE is illegal here\n");
+            xmlC14NErrInvalidNode("XML_ENTITY_REF_NODE", "processing node");
             return (-1);
         case XML_ENTITY_NODE:
-	    xmlC14NErr(ctx, cur, XML_C14N_INVALID_NODE,
-		"xmlC14NProcessNode: XML_ENTITY_NODE is illegal here\n");
+            xmlC14NErrInvalidNode("XML_ENTITY_NODE", "processing node");
             return (-1);
 
         case XML_DOCUMENT_TYPE_NODE:
@@ -1406,11 +1396,7 @@
              */
             break;
         default:
-#ifdef DEBUG_C14N
-            xmlGenericError(xmlGenericErrorContext,
-                            "xmlC14NProcessNode: unknown node type = %d\n",
-                            cur->type);
-#endif
+            xmlC14NErrUnknownNode(cur->type, "processing node");
             return (-1);
     }
 
@@ -1432,10 +1418,7 @@
     int ret;
 
     if (ctx == NULL) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlC14NProcessNodeList: Null context pointer.\n");
-#endif
+        xmlC14NErrParam("processing node list");
         return (-1);
     }
 
@@ -1457,10 +1440,7 @@
 xmlC14NFreeCtx(xmlC14NCtxPtr ctx)
 {
     if (ctx == NULL) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlC14NFreeCtx: ctx == NULL\n");
-#endif
+        xmlC14NErrParam("freeing context");
         return;
     }
 
@@ -1499,10 +1479,7 @@
     xmlC14NCtxPtr ctx = NULL;
 
     if ((doc == NULL) || (buf == NULL)) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlC14NNewCtx: pointer to document or output buffer is NULL\n");
-#endif
+        xmlC14NErrParam("creating new context");
         return (NULL);
     }
 
@@ -1597,10 +1574,7 @@
     int ret;
 
     if ((buf == NULL) || (doc == NULL)) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlC14NExecute: null return buffer or doc pointer\n");
-#endif
+        xmlC14NErrParam("executing c14n");
         return (-1);
     }
 
@@ -1635,10 +1609,7 @@
     if (doc->children != NULL) {
         ret = xmlC14NProcessNodeList(ctx, doc->children);
         if (ret < 0) {
-#ifdef DEBUG_C14N
-            xmlGenericError(xmlGenericErrorContext,
-                            "xmlC14NExecute: process childrens' list failed.\n");
-#endif
+            xmlC14NErrInternal("processing docs children list");
             xmlC14NFreeCtx(ctx);
             return (-1);
         }
@@ -1649,10 +1620,7 @@
      */
     ret = xmlOutputBufferFlush(buf);
     if (ret < 0) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlC14NExecute: buffer flush failed.\n");
-#endif
+        xmlC14NErrInternal("flushing output buffer");
         xmlC14NFreeCtx(ctx);
         return (-1);
     }
@@ -1731,10 +1699,7 @@
     xmlOutputBufferPtr buf;
 
     if (doc_txt_ptr == NULL) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlC14NDocDumpMemory:  null return buffer pointer\n");
-#endif
+        xmlC14NErrParam("dumping doc to memory");
         return (-1);
     }
 
@@ -1745,10 +1710,7 @@
      */
     buf = xmlAllocOutputBuffer(NULL);
     if (buf == NULL) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlC14NDocDumpMemory: failed to allocate output buffer.\n");
-#endif
+        xmlC14NErrMemory("creating output buffer");
         return (-1);
     }
 
@@ -1758,10 +1720,7 @@
     ret = xmlC14NDocSaveTo(doc, nodes, exclusive, inclusive_ns_prefixes,
                            with_comments, buf);
     if (ret < 0) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlC14NDocDumpMemory: xmlC14NDocSaveTo failed.\n");
-#endif
+        xmlC14NErrInternal("saving doc to output buffer");
         (void) xmlOutputBufferClose(buf);
         return (-1);
     }
@@ -1773,10 +1732,7 @@
     (void) xmlOutputBufferClose(buf);
 
     if ((*doc_txt_ptr == NULL) && (ret > 0)) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlC14NDocDumpMemory: failed to allocate memory for document text representation\n");
-#endif
+        xmlC14NErrMemory("coping canonicanized document");
         return (-1);
     }
     return (ret);
@@ -1815,10 +1771,7 @@
     int ret;
 
     if (filename == NULL) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlC14NDocSave:  filename is NULL\n");
-#endif
+        xmlC14NErrParam("saving doc");
         return (-1);
     }
 #ifdef HAVE_ZLIB_H
@@ -1831,11 +1784,7 @@
      */
     buf = xmlOutputBufferCreateFilename(filename, NULL, compression);
     if (buf == NULL) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlC14NDocSave:  unable to create buffer for file=\"%s\" with compressin=%d\n",
-                        filename, compression);
-#endif
+        xmlC14NErrInternal("creating temporary filename");
         return (-1);
     }
 
@@ -1845,10 +1794,7 @@
     ret = xmlC14NDocSaveTo(doc, nodes, exclusive, inclusive_ns_prefixes,
                            with_comments, buf);
     if (ret < 0) {
-#ifdef DEBUG_C14N
-        xmlGenericError(xmlGenericErrorContext,
-                        "xmlC14NDocSave: xmlC14NDocSaveTo failed.\n");
-#endif
+        xmlC14NErrInternal("cannicanize document to buffer");
         (void) xmlOutputBufferClose(buf);
         return (-1);
     }
@@ -1977,4 +1923,6 @@
     return (buffer);
 }
 #endif /* LIBXML_OUTPUT_ENABLED */
+#define bottom_c14n
+#include "elfgcchack.h"
 #endif /* LIBXML_C14N_ENABLED */

Modified: packages/libxml2/branches/upstream/current/catalog.c
===================================================================
--- packages/libxml2/branches/upstream/current/catalog.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/catalog.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -3787,4 +3787,6 @@
     return(NULL);
 }
 
+#define bottom_catalog
+#include "elfgcchack.h"
 #endif /* LIBXML_CATALOG_ENABLED */

Modified: packages/libxml2/branches/upstream/current/chvalid.c
===================================================================
--- packages/libxml2/branches/upstream/current/chvalid.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/chvalid.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -329,3 +329,5 @@
     return(xmlIsPubidCharQ(ch));
 }
 
+#define bottom_chvalid
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/config.h.in
===================================================================
--- packages/libxml2/branches/upstream/current/config.h.in	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/config.h.in	2005-04-04 18:23:13 UTC (rev 398)
@@ -273,9 +273,6 @@
 /* Define to 1 if the C compiler supports function prototypes. */
 #undef PROTOTYPES
 
-/* Determine what socket length (socklen_t) data type is */
-#undef SOCKLEN_T
-
 /* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS
 
@@ -285,6 +282,9 @@
 /* Version number of package */
 #undef VERSION
 
+/* Determine what socket length (socklen_t) data type is */
+#undef XML_SOCKLEN_T
+
 /* Using the Win32 Socket implementation */
 #undef _WINSOCKAPI_
 

Modified: packages/libxml2/branches/upstream/current/configure
===================================================================
--- packages/libxml2/branches/upstream/current/configure	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/configure	2005-04-04 18:23:13 UTC (rev 398)
@@ -1617,7 +1617,7 @@
 
 LIBXML_MAJOR_VERSION=2
 LIBXML_MINOR_VERSION=6
-LIBXML_MICRO_VERSION=18
+LIBXML_MICRO_VERSION=19
 LIBXML_MICRO_VERSION_SUFFIX=
 LIBXML_VERSION=$LIBXML_MAJOR_VERSION.$LIBXML_MINOR_VERSION.$LIBXML_MICRO_VERSION$LIBXML_MICRO_VERSION_SUFFIX
 LIBXML_VERSION_INFO=`expr $LIBXML_MAJOR_VERSION + $LIBXML_MINOR_VERSION`:$LIBXML_MICRO_VERSION:$LIBXML_MINOR_VERSION
@@ -26695,7 +26695,7 @@
 
   echo "$as_me:$LINENO: result: socklen_t *" >&5
 echo "${ECHO_T}socklen_t *" >&6
-  SOCKLEN_T=socklen_t
+  XML_SOCKLEN_T=socklen_t
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
@@ -26718,7 +26718,7 @@
 
     echo "$as_me:$LINENO: result: size_t *" >&5
 echo "${ECHO_T}size_t *" >&6
-    SOCKLEN_T=size_t
+    XML_SOCKLEN_T=size_t
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
@@ -26741,7 +26741,7 @@
 
       echo "$as_me:$LINENO: result: int *" >&5
 echo "${ECHO_T}int *" >&6
-      SOCKLEN_T=int
+      XML_SOCKLEN_T=int
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
@@ -26749,7 +26749,7 @@
 
       { echo "$as_me:$LINENO: WARNING: could not determine" >&5
 echo "$as_me: WARNING: could not determine" >&2;}
-      SOCKLEN_T="int"
+      XML_SOCKLEN_T="int"
 fi
 rm -f conftest*
 fi
@@ -26758,7 +26758,7 @@
 rm -f conftest*
 
 cat >>confdefs.h <<_ACEOF
-#define SOCKLEN_T $SOCKLEN_T
+#define XML_SOCKLEN_T $XML_SOCKLEN_T
 _ACEOF
 
 

Modified: packages/libxml2/branches/upstream/current/configure.in
===================================================================
--- packages/libxml2/branches/upstream/current/configure.in	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/configure.in	2005-04-04 18:23:13 UTC (rev 398)
@@ -5,7 +5,7 @@
 
 LIBXML_MAJOR_VERSION=2
 LIBXML_MINOR_VERSION=6
-LIBXML_MICRO_VERSION=18
+LIBXML_MICRO_VERSION=19
 LIBXML_MICRO_VERSION_SUFFIX=
 LIBXML_VERSION=$LIBXML_MAJOR_VERSION.$LIBXML_MINOR_VERSION.$LIBXML_MICRO_VERSION$LIBXML_MICRO_VERSION_SUFFIX
 LIBXML_VERSION_INFO=`expr $LIBXML_MAJOR_VERSION + $LIBXML_MINOR_VERSION`:$LIBXML_MICRO_VERSION:$LIBXML_MINOR_VERSION
@@ -419,24 +419,24 @@
 #include <sys/socket.h>],[
 (void)getsockopt (1, 1, 1, NULL, (socklen_t *)NULL)],[
   AC_MSG_RESULT(socklen_t *)
-  SOCKLEN_T=socklen_t],[
+  XML_SOCKLEN_T=socklen_t],[
   AC_TRY_COMPILE2([
 #include <stddef.h>
 #include <sys/types.h>
 #include <sys/socket.h>],[
 (void)getsockopt (1, 1, 1, NULL, (size_t *)NULL)],[
     AC_MSG_RESULT(size_t *)
-    SOCKLEN_T=size_t],[
+    XML_SOCKLEN_T=size_t],[
     AC_TRY_COMPILE2([
 #include <stddef.h>
 #include <sys/types.h>
 #include <sys/socket.h>],[
 (void)getsockopt (1, 1, 1, NULL, (int *)NULL)],[
       AC_MSG_RESULT(int *)
-      SOCKLEN_T=int],[
+      XML_SOCKLEN_T=int],[
       AC_MSG_WARN(could not determine)
-      SOCKLEN_T="int"])])])
-AC_DEFINE_UNQUOTED(SOCKLEN_T, $SOCKLEN_T, [Determine what socket length (socklen_t) data type is])
+      XML_SOCKLEN_T="int"])])])
+AC_DEFINE_UNQUOTED(XML_SOCKLEN_T, $XML_SOCKLEN_T, [Determine what socket length (socklen_t) data type is])
 
 dnl ***********************Checking for availability of IPv6*******************
 

Modified: packages/libxml2/branches/upstream/current/debugXML.c
===================================================================
--- packages/libxml2/branches/upstream/current/debugXML.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/debugXML.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -3202,4 +3202,6 @@
 }
 
 #endif /* LIBXML_XPATH_ENABLED */
+#define bottom_debugXML
+#include "elfgcchack.h"
 #endif /* LIBXML_DEBUG_ENABLED */

Modified: packages/libxml2/branches/upstream/current/dict.c
===================================================================
--- packages/libxml2/branches/upstream/current/dict.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/dict.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -897,3 +897,5 @@
 }
 
 
+#define bottom_dict
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/doc/APIchunk0.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIchunk0.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIchunk0.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -43,35 +43,6 @@
 </dd><dt>ALL</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewAllTrans">xmlAutomataNewAllTrans</a><br />
 </dd><dt>ANY</dt><dd><a href="html/libxml-valid.html#xmlIsMixedElement">xmlIsMixedElement</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseElementContentDecl">xmlParseElementContentDecl</a><br />
-</dd><dt>API</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_TREE_ENABLED">LIBXML_TREE_ENABLED</a><br />
-<a href="html/libxml-tree.html#xmlBufferAdd">xmlBufferAdd</a><br />
-<a href="html/libxml-tree.html#xmlBufferAddHead">xmlBufferAddHead</a><br />
-<a href="html/libxml-tree.html#xmlBufferCCat">xmlBufferCCat</a><br />
-<a href="html/libxml-tree.html#xmlBufferCat">xmlBufferCat</a><br />
-<a href="html/libxml-xmlIO.html#xmlInputCloseCallback">xmlInputCloseCallback</a><br />
-<a href="html/libxml-xmlIO.html#xmlInputMatchCallback">xmlInputMatchCallback</a><br />
-<a href="html/libxml-xmlIO.html#xmlInputOpenCallback">xmlInputOpenCallback</a><br />
-<a href="html/libxml-xmlIO.html#xmlInputReadCallback">xmlInputReadCallback</a><br />
-<a href="html/libxml-parser.html#xmlLoadExternalEntity">xmlLoadExternalEntity</a><br />
-<a href="html/libxml-xmlIO.html#xmlOutputCloseCallback">xmlOutputCloseCallback</a><br />
-<a href="html/libxml-xmlIO.html#xmlOutputMatchCallback">xmlOutputMatchCallback</a><br />
-<a href="html/libxml-xmlIO.html#xmlOutputOpenCallback">xmlOutputOpenCallback</a><br />
-<a href="html/libxml-xmlIO.html#xmlOutputWriteCallback">xmlOutputWriteCallback</a><br />
-<a href="html/libxml-relaxng.html#xmlRelaxNGValidateDoc">xmlRelaxNGValidateDoc</a><br />
-<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br />
-<a href="html/libxml-xmlschemas.html#xmlSchemaSetValidOptions">xmlSchemaSetValidOptions</a><br />
-<a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNode">xmlSchemaValPredefTypeNode</a><br />
-<a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNodeNoNorm">xmlSchemaValPredefTypeNodeNoNorm</a><br />
-<a href="html/libxml-xmlschemas.html#xmlSchemaValidateDoc">xmlSchemaValidateDoc</a><br />
-<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacet">xmlSchemaValidateFacet</a><br />
-<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
-<a href="html/libxml-xmlschemas.html#xmlSchemaValidateOneElement">xmlSchemaValidateOneElement</a><br />
-<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidatePredefinedType">xmlSchemaValidatePredefinedType</a><br />
-<a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br />
-<a href="html/libxml-tree.html#xmlValidateNCName">xmlValidateNCName</a><br />
-<a href="html/libxml-tree.html#xmlValidateNMToken">xmlValidateNMToken</a><br />
-<a href="html/libxml-tree.html#xmlValidateName">xmlValidateName</a><br />
-<a href="html/libxml-tree.html#xmlValidateQName">xmlValidateQName</a><br />
 </dd><dt>APIs</dt><dd><a href="html/libxml-xmlversion.html#LIBXML_LEGACY_ENABLED">LIBXML_LEGACY_ENABLED</a><br />
 </dd><dt>ARRAY</dt><dd><a href="html/libxml-xmlstring.html#xmlStrlen">xmlStrlen</a><br />
 <a href="html/libxml-xmlstring.html#xmlUTF8Strsize">xmlUTF8Strsize</a><br />
@@ -93,6 +64,7 @@
 <a href="html/libxml-tree.html#xmlAddNextSibling">xmlAddNextSibling</a><br />
 <a href="html/libxml-tree.html#xmlAddPrevSibling">xmlAddPrevSibling</a><br />
 </dd><dt>Absolute</dt><dd><a href="html/libxml-uri.html#xmlBuildURI">xmlBuildURI</a><br />
+</dd><dt>Accessor</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetValType">xmlSchemaGetValType</a><br />
 </dd><dt>Activation</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderRelaxNGSetSchema">xmlTextReaderRelaxNGSetSchema</a><br />
 <a href="html/libxml-xmlreader.html#xmlTextReaderRelaxNGValidate">xmlTextReaderRelaxNGValidate</a><br />
 </dd><dt>Add</dt><dd><a href="html/libxml-catalog.html#xmlACatalogAdd">xmlACatalogAdd</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/APIchunk1.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIchunk1.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIchunk1.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -172,6 +172,7 @@
 <a href="html/libxml-parserInternals.html#xmlParseCharRef">xmlParseCharRef</a><br />
 </dd><dt>Characters</dt><dd><a href="html/libxml-parserInternals.html#xmlParseCharRef">xmlParseCharRef</a><br />
 </dd><dt>Checka</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
 </dd><dt>Checks</dt><dd><a href="html/libxml-HTMLparser.html#htmlAttrAllowed">htmlAttrAllowed</a><br />
 <a href="html/libxml-HTMLparser.html#htmlElementAllowedHere">htmlElementAllowedHere</a><br />
 <a href="html/libxml-HTMLparser.html#htmlElementAllowedHereDesc">htmlElementAllowedHereDesc</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/APIchunk10.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIchunk10.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIchunk10.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -488,12 +488,14 @@
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNode">xmlSchemaValPredefTypeNode</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNodeNoNorm">xmlSchemaValPredefTypeNodeNoNorm</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidatePredefinedType">xmlSchemaValidatePredefinedType</a><br />
 <a href="html/libxml-xmlreader.html#xmlTextReaderByteConsumed">xmlTextReaderByteConsumed</a><br />
 </dd><dt>concat</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathConcatFunction">xmlXPathConcatFunction</a><br />
 </dd><dt>concatenated</dt><dd><a href="html/libxml-xmlstring.html#xmlStrcat">xmlStrcat</a><br />
 </dd><dt>concatenation</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathConcatFunction">xmlXPathConcatFunction</a><br />
 </dd><dt>condition</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacet">xmlSchemaValidateFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 </dd><dt>conditionalSect</dt><dd><a href="html/libxml-parserInternals.html#xmlParseExternalSubset">xmlParseExternalSubset</a><br />
 </dd><dt>configured</dt><dd><a href="html/libxml-xmlmemory.html#DEBUG_MEMORY">DEBUG_MEMORY</a><br />
 <a href="html/libxml-xmlversion.html#DEBUG_MEMORY_LOCATION">DEBUG_MEMORY_LOCATION</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/APIchunk13.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIchunk13.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIchunk13.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -46,7 +46,9 @@
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaGetFacetValueAsULong">xmlSchemaGetFacetValueAsULong</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaIsBuiltInTypeFacet">xmlSchemaIsBuiltInTypeFacet</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacet">xmlSchemaValidateFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a><br />
 </dd><dt>facets</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FACETSNEEDVALUE">XML_SCHEMAS_TYPE_FACETSNEEDVALUE</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaCheckFacet">xmlSchemaCheckFacet</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/APIchunk14.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIchunk14.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIchunk14.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -251,6 +251,7 @@
 <a href="html/libxml-nanohttp.html#xmlNanoHTTPMimeType">xmlNanoHTTPMimeType</a><br />
 </dd><dt>heading</dt><dd><a href="html/libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a><br />
 </dd><dt>helper</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_ELEM_CIRCULAR">XML_SCHEMAS_ELEM_CIRCULAR</a><br />
+<a href="html/libxml-schemasInternals.html#_xmlSchema">_xmlSchema</a><br />
 </dd><dt>here</dt><dd><a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br />
 <a href="html/libxml-HTMLparser.html#htmlNodeStatus">htmlNodeStatus</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/APIchunk15.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIchunk15.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIchunk15.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -216,6 +216,8 @@
 <a href="html/libxml-pattern.html#xmlStreamPush">xmlStreamPush</a><br />
 <a href="html/libxml-pattern.html#xmlStreamPushAttr">xmlStreamPushAttr</a><br />
 </dd><dt>indicates</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FACETSNEEDVALUE">XML_SCHEMAS_TYPE_FACETSNEEDVALUE</a><br />
+<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_INTERNAL_INVALID">XML_SCHEMAS_TYPE_INTERNAL_INVALID</a><br />
+<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_INTERNAL_RESOLVED">XML_SCHEMAS_TYPE_INTERNAL_RESOLVED</a><br />
 <a href="html/libxml-tree.html#xmlHasNsProp">xmlHasNsProp</a><br />
 <a href="html/libxml-nanoftp.html#xmlNanoFTPRead">xmlNanoFTPRead</a><br />
 <a href="html/libxml-nanoftp.html#xmlNanoFTPScanProxy">xmlNanoFTPScanProxy</a><br />
@@ -476,6 +478,7 @@
 <a href="html/libxml-parser.html#xmlGetFeaturesList">xmlGetFeaturesList</a><br />
 <a href="html/libxml-parser.html#xmlNewIOInputStream">xmlNewIOInputStream</a><br />
 <a href="html/libxml-parser.html#xmlParserAddNodeInfo">xmlParserAddNodeInfo</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 <a href="html/libxml-xmlstring.html#xmlStrPrintf">xmlStrPrintf</a><br />
 <a href="html/libxml-xmlstring.html#xmlStrVPrintf">xmlStrVPrintf</a><br />
 <a href="html/libxml-tree.html#xmlTextMerge">xmlTextMerge</a><br />
@@ -484,7 +487,8 @@
 <a href="html/libxml-xpathInternals.html#xmlXPathWrapCString">xmlXPathWrapCString</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathWrapExternal">xmlXPathWrapExternal</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathWrapString">xmlXPathWrapString</a><br />
-</dd><dt>invalid</dt><dd><a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br />
+</dd><dt>invalid</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_INTERNAL_INVALID">XML_SCHEMAS_TYPE_INTERNAL_INVALID</a><br />
+<a href="html/libxml-tree.html#xmlReconciliateNs">xmlReconciliateNs</a><br />
 <a href="html/libxml-valid.html#xmlValidateDtdFinal">xmlValidateDtdFinal</a><br />
 </dd><dt>invited</dt><dd><a href="html/libxml-valid.html#xmlValidGetValidElements">xmlValidGetValidElements</a><br />
 </dd><dt>invoking</dt><dd><a href="html/libxml-tree.html#xmlGetLineNo">xmlGetLineNo</a><br />
@@ -507,7 +511,8 @@
 <a href="html/libxml-nanoftp.html#xmlNanoFTPDele">xmlNanoFTPDele</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaGetBuiltInListSimpleTypeItemType">xmlSchemaGetBuiltInListSimpleTypeItemType</a><br />
 <a href="html/libxml-xpath.html#xmlXPathNodeSetItem">xmlXPathNodeSetItem</a><br />
-</dd><dt>items</dt><dd><a href="html/libxml-xpathInternals.html#valuePush">valuePush</a><br />
+</dd><dt>items</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchema">_xmlSchema</a><br />
+<a href="html/libxml-xpathInternals.html#valuePush">valuePush</a><br />
 <a href="html/libxml-hash.html#xmlHashCopy">xmlHashCopy</a><br />
 <a href="html/libxml-hash.html#xmlHashFree">xmlHashFree</a><br />
 <a href="html/libxml-hash.html#xmlHashScan">xmlHashScan</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/APIchunk16.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIchunk16.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIchunk16.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -181,10 +181,13 @@
 <a href="html/libxml-xpathInternals.html#xmlXPathDebugDumpCompExpr">xmlXPathDebugDumpCompExpr</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathDebugDumpObject">xmlXPathDebugDumpObject</a><br />
 </dd><dt>lexical</dt><dd><a href="html/libxml-parserInternals.html#xmlParseDefaultDecl">xmlParseDefaultDecl</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNode">xmlSchemaValPredefTypeNode</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNodeNoNorm">xmlSchemaValPredefTypeNodeNoNorm</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacet">xmlSchemaValidateFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidatePredefinedType">xmlSchemaValidatePredefinedType</a><br />
 <a href="html/libxml-tree.html#xmlValidateNCName">xmlValidateNCName</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/APIchunk17.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIchunk17.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIchunk17.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -133,6 +133,7 @@
 <a href="html/libxml-xmlstring.html#xmlStrncasecmp">xmlStrncasecmp</a><br />
 <a href="html/libxml-xmlstring.html#xmlStrncmp">xmlStrncmp</a><br />
 </dd><dt>maxLength</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
 </dd><dt>maximal</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewCounter">xmlAutomataNewCounter</a><br />
 </dd><dt>maximum</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans">xmlAutomataNewCountTrans</a><br />
 <a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans2">xmlAutomataNewCountTrans2</a><br />
@@ -211,6 +212,7 @@
 </dd><dt>might</dt><dd><a href="html/libxml-tree.html#xmlNewTextChild">xmlNewTextChild</a><br />
 </dd><dt>migrate</dt><dd><a href="html/libxml-entities.html#xmlEncodeEntities">xmlEncodeEntities</a><br />
 </dd><dt>minLength</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
 </dd><dt>minimal</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewCounter">xmlAutomataNewCounter</a><br />
 </dd><dt>minimum</dt><dd><a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans">xmlAutomataNewCountTrans</a><br />
 <a href="html/libxml-xmlautomata.html#xmlAutomataNewCountTrans2">xmlAutomataNewCountTrans2</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/APIchunk18.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIchunk18.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIchunk18.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -128,6 +128,7 @@
 </dd><dt>needle</dt><dd><a href="html/libxml-xmlstring.html#xmlStrcasestr">xmlStrcasestr</a><br />
 <a href="html/libxml-xmlstring.html#xmlStrstr">xmlStrstr</a><br />
 </dd><dt>needs</dt><dd><a href="html/libxml-parserInternals.html#xmlEntityReferenceFunc">xmlEntityReferenceFunc</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathNodeSetFreeNs">xmlXPathNodeSetFreeNs</a><br />
 </dd><dt>negated</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaWildcard">_xmlSchemaWildcard</a><br />
 </dd><dt>negative</dt><dd><a href="html/libxml-c14n.html#xmlC14NDocDumpMemory">xmlC14NDocDumpMemory</a><br />
@@ -225,6 +226,7 @@
 </dd><dt>normalization</dt><dd><a href="html/libxml-uri.html#xmlNormalizeURIPath">xmlNormalizeURIPath</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNodeNoNorm">xmlSchemaValPredefTypeNodeNoNorm</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 <a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br />
 <a href="html/libxml-valid.html#xmlValidNormalizeAttributeValue">xmlValidNormalizeAttributeValue</a><br />
 </dd><dt>normalization:</dt><dd><a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br />
@@ -234,6 +236,7 @@
 <a href="html/libxml-xmlreader.html#xmlTextReaderNormalization">xmlTextReaderNormalization</a><br />
 </dd><dt>normalize-space</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathNormalizeFunction">xmlXPathNormalizeFunction</a><br />
 </dd><dt>normalized</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 <a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br />
 <a href="html/libxml-valid.html#xmlValidNormalizeAttributeValue">xmlValidNormalizeAttributeValue</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathNormalizeFunction">xmlXPathNormalizeFunction</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/APIchunk20.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIchunk20.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIchunk20.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -130,6 +130,7 @@
 <a href="html/libxml-pattern.html#xmlPatternMaxDepth">xmlPatternMaxDepth</a><br />
 <a href="html/libxml-pattern.html#xmlPatternStreamable">xmlPatternStreamable</a><br />
 <a href="html/libxml-pattern.html#xmlPatterncompile">xmlPatterncompile</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 <a href="html/libxml-xmlreader.html#xmlTextReaderPreservePattern">xmlTextReaderPreservePattern</a><br />
 </dd><dt>pcdata</dt><dd><a href="html/libxml-SAX.html#cdataBlock">cdataBlock</a><br />
 <a href="html/libxml-parser.html#cdataBlockSAXFunc">cdataBlockSAXFunc</a><br />
@@ -189,35 +190,6 @@
 </dd><dt>positioned</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderReadString">xmlTextReaderReadString</a><br />
 </dd><dt>positionned</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderReadAttributeValue">xmlTextReaderReadAttributeValue</a><br />
 </dd><dt>positions</dt><dd><a href="html/libxml-xmlstring.html#xmlUTF8Strsub">xmlUTF8Strsub</a><br />
-</dd><dt>positive</dt><dd><a href="html/libxml-HTMLparser.html#UTF8ToHtml">UTF8ToHtml</a><br />
-<a href="html/libxml-encoding.html#UTF8Toisolat1">UTF8Toisolat1</a><br />
-<a href="html/libxml-DOCBparser.html#docbEncodeEntities">docbEncodeEntities</a><br />
-<a href="html/libxml-HTMLparser.html#htmlEncodeEntities">htmlEncodeEntities</a><br />
-<a href="html/libxml-encoding.html#isolat1ToUTF8">isolat1ToUTF8</a><br />
-<a href="html/libxml-tree.html#xmlBufferAdd">xmlBufferAdd</a><br />
-<a href="html/libxml-tree.html#xmlBufferAddHead">xmlBufferAddHead</a><br />
-<a href="html/libxml-tree.html#xmlBufferCCat">xmlBufferCCat</a><br />
-<a href="html/libxml-tree.html#xmlBufferCat">xmlBufferCat</a><br />
-<a href="html/libxml-encoding.html#xmlCharEncodingInputFunc">xmlCharEncodingInputFunc</a><br />
-<a href="html/libxml-encoding.html#xmlCharEncodingOutputFunc">xmlCharEncodingOutputFunc</a><br />
-<a href="html/libxml-relaxng.html#xmlRelaxNGValidateDoc">xmlRelaxNGValidateDoc</a><br />
-<a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNode">xmlSchemaValPredefTypeNode</a><br />
-<a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNodeNoNorm">xmlSchemaValPredefTypeNodeNoNorm</a><br />
-<a href="html/libxml-xmlschemas.html#xmlSchemaValidateDoc">xmlSchemaValidateDoc</a><br />
-<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacet">xmlSchemaValidateFacet</a><br />
-<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
-<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a><br />
-<a href="html/libxml-xmlschemas.html#xmlSchemaValidateOneElement">xmlSchemaValidateOneElement</a><br />
-<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidatePredefinedType">xmlSchemaValidatePredefinedType</a><br />
-<a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br />
-<a href="html/libxml-xmlreader.html#xmlTextReaderPreservePattern">xmlTextReaderPreservePattern</a><br />
-<a href="html/libxml-tree.html#xmlValidateNCName">xmlValidateNCName</a><br />
-<a href="html/libxml-tree.html#xmlValidateNMToken">xmlValidateNMToken</a><br />
-<a href="html/libxml-tree.html#xmlValidateName">xmlValidateName</a><br />
-<a href="html/libxml-tree.html#xmlValidateQName">xmlValidateQName</a><br />
-<a href="html/libxml-xpathInternals.html#xmlXPathBooleanFunction">xmlXPathBooleanFunction</a><br />
-<a href="html/libxml-xpathInternals.html#xmlXPathFloorFunction">xmlXPathFloorFunction</a><br />
-<a href="html/libxml-xpathInternals.html#xmlXPathStringFunction">xmlXPathStringFunction</a><br />
 </dd><dt>possible</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaType">_xmlSchemaType</a><br />
 <a href="html/libxml-tree.html#xmlCopyNodeList">xmlCopyNodeList</a><br />
 <a href="html/libxml-parserInternals.html#xmlCreateEntityParserCtxt">xmlCreateEntityParserCtxt</a><br />
@@ -271,7 +243,9 @@
 </dd><dt>precomputed</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaCopyValue">xmlSchemaCopyValue</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacet">xmlSchemaValidateFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
 </dd><dt>predefined</dt><dd><a href="html/libxml-tree.html#XML_XML_NAMESPACE">XML_XML_NAMESPACE</a><br />
 <a href="html/libxml-entities.html#xmlCleanupPredefinedEntities">xmlCleanupPredefinedEntities</a><br />
 <a href="html/libxml-entities.html#xmlEncodeEntitiesReentrant">xmlEncodeEntitiesReentrant</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/APIchunk21.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIchunk21.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIchunk21.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -404,7 +404,9 @@
 <a href="html/libxml-HTMLparser.html#htmlCreatePushParserCtxt">htmlCreatePushParserCtxt</a><br />
 <a href="html/libxml-parser.html#xmlCreatePushParserCtxt">xmlCreatePushParserCtxt</a><br />
 </dd><dt>repr</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacet">xmlSchemaValidateFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a><br />
 </dd><dt>representation</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/APIchunk22.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIchunk22.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIchunk22.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -120,9 +120,11 @@
 </dd><dt>schemas</dt><dd><a href="html/libxml-relaxng.html#xmlRelaxNGNewDocParserCtxt">xmlRelaxNGNewDocParserCtxt</a><br />
 <a href="html/libxml-relaxng.html#xmlRelaxNGNewMemParserCtxt">xmlRelaxNGNewMemParserCtxt</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaGetFacetValueAsULong">xmlSchemaGetFacetValueAsULong</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetValType">xmlSchemaGetValType</a><br />
 <a href="html/libxml-xmlschemas.html#xmlSchemaNewMemParserCtxt">xmlSchemaNewMemParserCtxt</a><br />
 <a href="html/libxml-xmlschemas.html#xmlSchemaValidateDoc">xmlSchemaValidateDoc</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacet">xmlSchemaValidateFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 <a href="html/libxml-xmlschemas.html#xmlSchemaValidateStream">xmlSchemaValidateStream</a><br />
 </dd><dt>scheme</dt><dd><a href="html/libxml-uri.html#_xmlURI">_xmlURI</a><br />
 <a href="html/libxml-tree.html#xmlBufferSetAllocationScheme">xmlBufferSetAllocationScheme</a><br />
@@ -240,6 +242,7 @@
 <a href="html/libxml-xmlstring.html#xmlGetUTF8Char">xmlGetUTF8Char</a><br />
 <a href="html/libxml-SAX2.html#xmlSAX2InitDefaultSAXHandler">xmlSAX2InitDefaultSAXHandler</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathDifference">xmlXPathDifference</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathIntersection">xmlXPathIntersection</a><br />
 </dd><dt>setting</dt><dd><a href="html/libxml-xmlerror.html#xmlSetGenericErrorFunc">xmlSetGenericErrorFunc</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/APIchunk23.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIchunk23.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIchunk23.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -58,6 +58,7 @@
 <a href="html/libxml-HTMLparser.html#htmlIsAutoClosed">htmlIsAutoClosed</a><br />
 <a href="html/libxml-HTMLtree.html#htmlSetMetaEncoding">htmlSetMetaEncoding</a><br />
 </dd><dt>take</dt><dd><a href="html/libxml-threads.html#xmlLockLibrary">xmlLockLibrary</a><br />
+</dd><dt>takes</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 </dd><dt>tell</dt><dd><a href="html/libxml-parser.html#XML_COMPLETE_ATTRS">XML_COMPLETE_ATTRS</a><br />
 <a href="html/libxml-parser.html#XML_DETECT_IDS">XML_DETECT_IDS</a><br />
 <a href="html/libxml-parser.html#XML_SKIP_IDS">XML_SKIP_IDS</a><br />
@@ -413,12 +414,15 @@
 <a href="html/libxml-xpointer.html#xmlXPtrNewLocationSetNodes">xmlXPtrNewLocationSetNodes</a><br />
 </dd><dt>two-character</dt><dd><a href="html/libxml-parserInternals.html#xmlCurrentChar">xmlCurrentChar</a><br />
 </dd><dt>typ</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchemaTypeLink">_xmlSchemaTypeLink</a><br />
+</dd><dt>typefixed</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_INTERNAL_RESOLVED">XML_SCHEMAS_TYPE_INTERNAL_RESOLVED</a><br />
 </dd><dt>types</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_FACET_COLLAPSE">XML_SCHEMAS_FACET_COLLAPSE</a><br />
 <a href="html/libxml-xpath.html#_xmlXPathContext">_xmlXPathContext</a><br />
 <a href="html/libxml-parser.html#xmlExternalEntityLoader">xmlExternalEntityLoader</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseSDDecl">xmlParseSDDecl</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaCheckFacet">xmlSchemaCheckFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaNewStringValue">xmlSchemaNewStringValue</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 </dd><dt>typo</dt><dd><a href="html/libxml-parserInternals.html#xmlParseTextDecl">xmlParseTextDecl</a><br />
 </dd></dl><h2 align="center"><a href="APIchunk0.html">A-B</a>
 <a href="APIchunk1.html">C-C</a>

Modified: packages/libxml2/branches/upstream/current/doc/APIchunk24.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIchunk24.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIchunk24.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -191,6 +191,7 @@
 </dd></dl><h2>Letter v:</h2><dl><dt>val1</dt><dd><a href="html/libxml-xpointer.html#xmlXPtrLocationSetMerge">xmlXPtrLocationSetMerge</a><br />
 </dd><dt>validated</dt><dd><a href="html/libxml-chvalid.html#xmlCharInRange">xmlCharInRange</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
 </dd><dt>validates</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNode">xmlSchemaValPredefTypeNode</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNodeNoNorm">xmlSchemaValPredefTypeNodeNoNorm</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidatePredefinedType">xmlSchemaValidatePredefinedType</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/APIchunk25.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIchunk25.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIchunk25.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -152,6 +152,8 @@
 </dd><dt>whitespace</dt><dd><a href="html/libxml-tree.html#xmlIsBlankNode">xmlIsBlankNode</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseAttValue">xmlParseAttValue</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaCompareValuesWhtsp">xmlSchemaCompareValuesWhtsp</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathIdFunction">xmlXPathIdFunction</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathNormalizeFunction">xmlXPathNormalizeFunction</a><br />
 </dd><dt>whitespace-separated</dt><dd><a href="html/libxml-xpathInternals.html#xmlXPathIdFunction">xmlXPathIdFunction</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/APIchunk26.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIchunk26.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIchunk26.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -379,6 +379,7 @@
 </dd><dt>xmlSaveOptions</dt><dd><a href="html/libxml-xmlsave.html#xmlSaveToFd">xmlSaveToFd</a><br />
 <a href="html/libxml-xmlsave.html#xmlSaveToFilename">xmlSaveToFilename</a><br />
 <a href="html/libxml-xmlsave.html#xmlSaveToIO">xmlSaveToIO</a><br />
+</dd><dt>xmlSchemaValType</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetValType">xmlSchemaGetValType</a><br />
 </dd><dt>xmlSchemaValidOption</dt><dd><a href="html/libxml-xmlschemas.html#xmlSchemaSetValidOptions">xmlSchemaSetValidOptions</a><br />
 </dd><dt>xmlSetExternalEntityLoader</dt><dd><a href="html/libxml-SAX.html#resolveEntity">resolveEntity</a><br />
 <a href="html/libxml-parser.html#resolveEntitySAXFunc">resolveEntitySAXFunc</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/APIchunk4.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIchunk4.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIchunk4.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -140,7 +140,8 @@
 <a href="html/libxml-HTMLtree.html#htmlSetMetaEncoding">htmlSetMetaEncoding</a><br />
 </dd><dt>Method</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderGetRemainder">xmlTextReaderGetRemainder</a><br />
 </dd><dt>Mime-Type</dt><dd><a href="html/libxml-nanohttp.html#xmlNanoHTTPMimeType">xmlNanoHTTPMimeType</a><br />
-</dd><dt>Misc</dt><dd><a href="html/libxml-parser.html#xmlParseDocument">xmlParseDocument</a><br />
+</dd><dt>Misc</dt><dd><a href="html/libxml-schemasInternals.html#_xmlSchema">_xmlSchema</a><br />
+<a href="html/libxml-parser.html#xmlParseDocument">xmlParseDocument</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseMisc">xmlParseMisc</a><br />
 </dd><dt>MiscellaneousMathematicalSymbols-A</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsMiscellaneousMathematicalSymbolsA">xmlUCSIsMiscellaneousMathematicalSymbolsA</a><br />
 </dd><dt>MiscellaneousMathematicalSymbols-B</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsMiscellaneousMathematicalSymbolsB">xmlUCSIsMiscellaneousMathematicalSymbolsB</a><br />
@@ -300,6 +301,7 @@
 <a href="html/libxml-SAX2.html#xmlSAXDefaultVersion">xmlSAXDefaultVersion</a><br />
 <a href="html/libxml-tree.html#xmlSaveFormatFile">xmlSaveFormatFile</a><br />
 <a href="html/libxml-tree.html#xmlSaveFormatFileEnc">xmlSaveFormatFileEnc</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 <a href="html/libxml-xmlreader.html#xmlTextReaderSetParserProp">xmlTextReaderSetParserProp</a><br />
 <a href="html/libxml-valid.html#xmlValidateDtd">xmlValidateDtd</a><br />
 </dd><dt>Note:</dt><dd><a href="html/libxml-parser.html#fatalErrorSAXFunc">fatalErrorSAXFunc</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/APIchunk6.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIchunk6.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIchunk6.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -439,6 +439,7 @@
 </dd><dt>SmallFormVariants</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsSmallFormVariants">xmlUCSIsSmallFormVariants</a><br />
 </dd><dt>Some</dt><dd><a href="html/libxml-HTMLparser.html#_htmlElemDesc">_htmlElemDesc</a><br />
 <a href="html/libxml-uri.html#xmlBuildRelativeURI">xmlBuildRelativeURI</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br />
 </dd><dt>Sort</dt><dd><a href="html/libxml-list.html#xmlListSort">xmlListSort</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathNodeSetSort">xmlXPathNodeSetSort</a><br />
 </dd><dt>SpacingModifierLetters</dt><dd><a href="html/libxml-xmlunicode.html#xmlUCSIsSpacingModifierLetters">xmlUCSIsSpacingModifierLetters</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/APIchunk8.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIchunk8.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIchunk8.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -72,7 +72,8 @@
 <a href="html/libxml-parserInternals.html#xmlParseVersionNum">xmlParseVersionNum</a><br />
 </dd></dl><h2>Letter W:</h2><dl><dt>WARNING</dt><dd><a href="html/libxml-relaxng.html#xmlRelaxNGParse">xmlRelaxNGParse</a><br />
 <a href="html/libxml-xmlschemas.html#xmlSchemaParse">xmlSchemaParse</a><br />
-</dd><dt>WARNING:</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaNewStringValue">xmlSchemaNewStringValue</a><br />
+</dd><dt>WARNING:</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaNewStringValue">xmlSchemaNewStringValue</a><br />
 </dd><dt>WFC:</dt><dd><a href="html/libxml-parserInternals.html#xmlParseAttribute">xmlParseAttribute</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseCharRef">xmlParseCharRef</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseDefaultDecl">xmlParseDefaultDecl</a><br />
@@ -286,12 +287,14 @@
 </dd><dt>according</dt><dd><a href="html/libxml-uri.html#xmlBuildURI">xmlBuildURI</a><br />
 <a href="html/libxml-encoding.html#xmlDetectCharEncoding">xmlDetectCharEncoding</a><br />
 <a href="html/libxml-SAX2.html#xmlSAXVersion">xmlSAXVersion</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 <a href="html/libxml-uri.html#xmlURIEscape">xmlURIEscape</a><br />
 <a href="html/libxml-xpathInternals.html#xmlXPathCompareValues">xmlXPathCompareValues</a><br />
 </dd><dt>accordingly</dt><dd><a href="html/libxml-encoding.html#xmlParseCharEncoding">xmlParseCharEncoding</a><br />
 <a href="html/libxml-parserInternals.html#xmlParserHandlePEReference">xmlParserHandlePEReference</a><br />
 <a href="html/libxml-parserInternals.html#xmlParserHandleReference">xmlParserHandleReference</a><br />
 <a href="html/libxml-valid.html#xmlValidCtxtNormalizeAttributeValue">xmlValidCtxtNormalizeAttributeValue</a><br />
+</dd><dt>account</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 </dd><dt>act</dt><dd><a href="html/libxml-pattern.html#xmlStreamPush">xmlStreamPush</a><br />
 <a href="html/libxml-pattern.html#xmlStreamPushAttr">xmlStreamPushAttr</a><br />
 </dd><dt>activate</dt><dd><a href="html/libxml-xmlreader.html#xmlTextReaderSetParserProp">xmlTextReaderSetParserProp</a><br />
@@ -309,6 +312,7 @@
 </dd><dt>acts</dt><dd><a href="html/libxml-tree.html#xmlGetProp">xmlGetProp</a><br />
 </dd><dt>actual</dt><dd><a href="html/libxml-xmlstring.html#xmlGetUTF8Char">xmlGetUTF8Char</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
 <a href="html/libxml-xpath.html#xmlXPathFreeNodeSet">xmlXPathFreeNodeSet</a><br />
 <a href="html/libxml-xpointer.html#xmlXPtrFreeLocationSet">xmlXPtrFreeLocationSet</a><br />
 </dd><dt>actually</dt><dd><a href="html/libxml-tree.html#_xmlDoc">_xmlDoc</a><br />
@@ -423,7 +427,9 @@
 <a href="html/libxml-xmlregexp.html#xmlRegexpCompile">xmlRegexpCompile</a><br />
 <a href="html/libxml-xmlregexp.html#xmlRegexpExec">xmlRegexpExec</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacet">xmlSchemaValidateFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a><br />
 <a href="html/libxml-debugXML.html#xmlShellValidate">xmlShellValidate</a><br />
 <a href="html/libxml-valid.html#xmlValidateDtd">xmlValidateDtd</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/APIchunk9.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIchunk9.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIchunk9.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -252,7 +252,9 @@
 </dd><dt>built-in</dt><dd><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetBuiltInListSimpleTypeItemType">xmlSchemaGetBuiltInListSimpleTypeItemType</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaGetBuiltInType">xmlSchemaGetBuiltInType</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaIsBuiltInTypeFacet">xmlSchemaIsBuiltInTypeFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
 </dd><dt>builtin</dt><dd><a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE">XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE</a><br />
 <a href="html/libxml-xmlerror.html#initGenericErrorDefaultFunc">initGenericErrorDefaultFunc</a><br />
 </dd><dt>bunch</dt><dd><a href="html/libxml-parserInternals.html#xmlParseNamespace">xmlParseNamespace</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/APIconstructors.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIconstructors.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIconstructors.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -484,6 +484,7 @@
 </p><h2>Type xmlSchemaValPtr:</h2><p><a href="html/libxml-xmlschemastypes.html#xmlSchemaCopyValue">xmlSchemaCopyValue</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaNewNOTATIONValue">xmlSchemaNewNOTATIONValue</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaNewStringValue">xmlSchemaNewStringValue</a><br />
+</p><h2>Type xmlSchemaValType:</h2><p><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetValType">xmlSchemaGetValType</a><br />
 </p><h2>Type xmlSchemaValidCtxtPtr:</h2><p><a href="html/libxml-xmlschemas.html#xmlSchemaNewValidCtxt">xmlSchemaNewValidCtxt</a><br />
 </p><h2>Type xmlStreamCtxtPtr:</h2><p><a href="html/libxml-pattern.html#xmlPatternGetStreamCtxt">xmlPatternGetStreamCtxt</a><br />
 </p><h2>Type xmlTextReaderPtr:</h2><p><a href="html/libxml-xmlreader.html#xmlNewTextReader">xmlNewTextReader</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/APIfiles.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIfiles.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIfiles.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -1050,6 +1050,8 @@
 <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FINAL_RESTRICTION">XML_SCHEMAS_TYPE_FINAL_RESTRICTION</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FINAL_UNION">XML_SCHEMAS_TYPE_FINAL_UNION</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_GLOBAL">XML_SCHEMAS_TYPE_GLOBAL</a><br />
+<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_INTERNAL_INVALID">XML_SCHEMAS_TYPE_INTERNAL_INVALID</a><br />
+<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_INTERNAL_RESOLVED">XML_SCHEMAS_TYPE_INTERNAL_RESOLVED</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_MARKED">XML_SCHEMAS_TYPE_MARKED</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_MIXED">XML_SCHEMAS_TYPE_MIXED</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD">XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD</a><br />
@@ -1071,6 +1073,7 @@
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS">XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_CONTENT_SIMPLE">XML_SCHEMA_CONTENT_SIMPLE</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_CONTENT_UNKNOWN">XML_SCHEMA_CONTENT_UNKNOWN</a><br />
+<a href="html/libxml-schemasInternals.html#XML_SCHEMA_EXTRA_QNAMEREF">XML_SCHEMA_EXTRA_QNAMEREF</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_FACET_ENUMERATION">XML_SCHEMA_FACET_ENUMERATION</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_FACET_FRACTIONDIGITS">XML_SCHEMA_FACET_FRACTIONDIGITS</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_FACET_LENGTH">XML_SCHEMA_FACET_LENGTH</a><br />
@@ -1101,6 +1104,7 @@
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_IDC_UNIQUE">XML_SCHEMA_TYPE_IDC_UNIQUE</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_LIST">XML_SCHEMA_TYPE_LIST</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_NOTATION">XML_SCHEMA_TYPE_NOTATION</a><br />
+<a href="html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_PARTICLE">XML_SCHEMA_TYPE_PARTICLE</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_RESTRICTION">XML_SCHEMA_TYPE_RESTRICTION</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_SEQUENCE">XML_SCHEMA_TYPE_SEQUENCE</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_SIMPLE">XML_SCHEMA_TYPE_SIMPLE</a><br />
@@ -1672,7 +1676,9 @@
 </p><h2><a name="xmlerror" id="xmlerror">Module xmlerror</a>:</h2><p><a href="html/libxml-xmlerror.html#XML_C14N_CREATE_CTXT">XML_C14N_CREATE_CTXT</a><br />
 <a href="html/libxml-xmlerror.html#XML_C14N_CREATE_STACK">XML_C14N_CREATE_STACK</a><br />
 <a href="html/libxml-xmlerror.html#XML_C14N_INVALID_NODE">XML_C14N_INVALID_NODE</a><br />
+<a href="html/libxml-xmlerror.html#XML_C14N_RELATIVE_NAMESPACE">XML_C14N_RELATIVE_NAMESPACE</a><br />
 <a href="html/libxml-xmlerror.html#XML_C14N_REQUIRES_UTF8">XML_C14N_REQUIRES_UTF8</a><br />
+<a href="html/libxml-xmlerror.html#XML_C14N_UNKNOW_NODE">XML_C14N_UNKNOW_NODE</a><br />
 <a href="html/libxml-xmlerror.html#XML_CATALOG_ENTRY_BROKEN">XML_CATALOG_ENTRY_BROKEN</a><br />
 <a href="html/libxml-xmlerror.html#XML_CATALOG_MISSING_ATTR">XML_CATALOG_MISSING_ATTR</a><br />
 <a href="html/libxml-xmlerror.html#XML_CATALOG_NOT_CATALOG">XML_CATALOG_NOT_CATALOG</a><br />
@@ -2686,6 +2692,7 @@
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaGetFacetValueAsULong">xmlSchemaGetFacetValueAsULong</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaGetPredefinedType">xmlSchemaGetPredefinedType</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetValType">xmlSchemaGetValType</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaInitTypes">xmlSchemaInitTypes</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaIsBuiltInTypeFacet">xmlSchemaIsBuiltInTypeFacet</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaNewFacet">xmlSchemaNewFacet</a><br />
@@ -2694,7 +2701,9 @@
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNode">xmlSchemaValPredefTypeNode</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNodeNoNorm">xmlSchemaValPredefTypeNodeNoNorm</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacet">xmlSchemaValidateFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidatePredefinedType">xmlSchemaValidatePredefinedType</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaWhiteSpaceReplace">xmlSchemaWhiteSpaceReplace</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/APIfunctions.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIfunctions.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIfunctions.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -295,6 +295,7 @@
 <a href="html/libxml-parser.html#xmlParseBalancedChunkMemoryRecover">xmlParseBalancedChunkMemoryRecover</a><br />
 <a href="html/libxml-parser.html#xmlParseCtxtExternalEntity">xmlParseCtxtExternalEntity</a><br />
 <a href="html/libxml-parser.html#xmlParseDTD">xmlParseDTD</a><br />
+<a href="html/libxml-parser.html#xmlParseDoc">xmlParseDoc</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseElementContentDecl">xmlParseElementContentDecl</a><br />
 <a href="html/libxml-parser.html#xmlParseExternalEntity">xmlParseExternalEntity</a><br />
 <a href="html/libxml-parserInternals.html#xmlParseExternalSubset">xmlParseExternalSubset</a><br />
@@ -329,6 +330,7 @@
 <a href="html/libxml-SAX2.html#xmlSAX2StartElementNs">xmlSAX2StartElementNs</a><br />
 <a href="html/libxml-SAX2.html#xmlSAX2UnparsedEntityDecl">xmlSAX2UnparsedEntityDecl</a><br />
 <a href="html/libxml-parser.html#xmlSAXParseDTD">xmlSAXParseDTD</a><br />
+<a href="html/libxml-parser.html#xmlSAXParseDoc">xmlSAXParseDoc</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaCheckFacet">xmlSchemaCheckFacet</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaCollapseString">xmlSchemaCollapseString</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaGetPredefinedType">xmlSchemaGetPredefinedType</a><br />
@@ -337,7 +339,9 @@
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNode">xmlSchemaValPredefTypeNode</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNodeNoNorm">xmlSchemaValPredefTypeNodeNoNorm</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacet">xmlSchemaValidateFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidatePredefinedType">xmlSchemaValidatePredefinedType</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaWhiteSpaceReplace">xmlSchemaWhiteSpaceReplace</a><br />
@@ -592,6 +596,7 @@
 </p><h2>Type unsigned long:</h2><p><a href="html/libxml-nanoftp.html#ftpListCallback">ftpListCallback</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a><br />
 </p><h2>Type unsigned long *:</h2><p><a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a><br />
 </p><h2>Type va_list:</h2><p><a href="html/libxml-xmlstring.html#xmlStrVPrintf">xmlStrVPrintf</a><br />
 <a href="html/libxml-xmlwriter.html#xmlTextWriterWriteVFormatAttribute">xmlTextWriterWriteVFormatAttribute</a><br />
@@ -970,11 +975,9 @@
 <a href="html/libxml-tree.html#xmlNewDocNodeEatName">xmlNewDocNodeEatName</a><br />
 <a href="html/libxml-tree.html#xmlNewNodeEatName">xmlNewNodeEatName</a><br />
 <a href="html/libxml-tree.html#xmlNewNsPropEatName">xmlNewNsPropEatName</a><br />
-<a href="html/libxml-parser.html#xmlParseDoc">xmlParseDoc</a><br />
 <a href="html/libxml-parser.html#xmlParserInputDeallocate">xmlParserInputDeallocate</a><br />
 <a href="html/libxml-parser.html#xmlRecoverDoc">xmlRecoverDoc</a><br />
 <a href="html/libxml-SAX2.html#xmlSAX2EntityDecl">xmlSAX2EntityDecl</a><br />
-<a href="html/libxml-parser.html#xmlSAXParseDoc">xmlSAXParseDoc</a><br />
 <a href="html/libxml-xmlstring.html#xmlStrPrintf">xmlStrPrintf</a><br />
 <a href="html/libxml-xmlstring.html#xmlStrVPrintf">xmlStrVPrintf</a><br />
 <a href="html/libxml-xmlstring.html#xmlStrcasestr">xmlStrcasestr</a><br />
@@ -1792,7 +1795,9 @@
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaFreeFacet">xmlSchemaFreeFacet</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaGetFacetValueAsULong">xmlSchemaGetFacetValueAsULong</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacet">xmlSchemaValidateFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a><br />
 </p><h2>Type xmlSchemaParserCtxtPtr:</h2><p><a href="html/libxml-xmlschemastypes.html#xmlSchemaCheckFacet">xmlSchemaCheckFacet</a><br />
 <a href="html/libxml-xmlschemas.html#xmlSchemaFreeParserCtxt">xmlSchemaFreeParserCtxt</a><br />
@@ -1816,13 +1821,18 @@
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaCopyValue">xmlSchemaCopyValue</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaFreeValue">xmlSchemaFreeValue</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetValType">xmlSchemaGetValType</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacet">xmlSchemaValidateFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
 </p><h2>Type xmlSchemaValPtr *:</h2><p><a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNode">xmlSchemaValPredefTypeNode</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValPredefTypeNodeNoNorm">xmlSchemaValPredefTypeNodeNoNorm</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidatePredefinedType">xmlSchemaValidatePredefinedType</a><br />
 </p><h2>Type xmlSchemaValType:</h2><p><a href="html/libxml-xmlschemastypes.html#xmlSchemaGetBuiltInType">xmlSchemaGetBuiltInType</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaNewStringValue">xmlSchemaNewStringValue</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
 </p><h2>Type xmlSchemaValidCtxtPtr:</h2><p><a href="html/libxml-xmlschemas.html#xmlSchemaFreeValidCtxt">xmlSchemaFreeValidCtxt</a><br />
 <a href="html/libxml-xmlschemas.html#xmlSchemaGetValidErrors">xmlSchemaGetValidErrors</a><br />
 <a href="html/libxml-xmlschemas.html#xmlSchemaSetValidErrors">xmlSchemaSetValidErrors</a><br />
@@ -1840,6 +1850,8 @@
 </p><h2>Type xmlSchemaValidityWarningFunc *:</h2><p><a href="html/libxml-xmlschemas.html#xmlSchemaGetParserErrors">xmlSchemaGetParserErrors</a><br />
 <a href="html/libxml-xmlschemas.html#xmlSchemaGetValidErrors">xmlSchemaGetValidErrors</a><br />
 </p><h2>Type xmlSchemaWhitespaceValueType:</h2><p><a href="html/libxml-xmlschemastypes.html#xmlSchemaCompareValuesWhtsp">xmlSchemaCompareValuesWhtsp</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
 </p><h2>Type xmlSchemaWildcardPtr:</h2><p><a href="html/libxml-schemasInternals.html#xmlSchemaFreeWildcard">xmlSchemaFreeWildcard</a><br />
 </p><h2>Type xmlShellCtxtPtr:</h2><p><a href="html/libxml-debugXML.html#xmlShellBase">xmlShellBase</a><br />
 <a href="html/libxml-debugXML.html#xmlShellCat">xmlShellCat</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/APIsymbols.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/APIsymbols.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/APIsymbols.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -143,7 +143,9 @@
 <a href="html/libxml-xmlerror.html#XML_C14N_CREATE_CTXT">XML_C14N_CREATE_CTXT</a><br />
 <a href="html/libxml-xmlerror.html#XML_C14N_CREATE_STACK">XML_C14N_CREATE_STACK</a><br />
 <a href="html/libxml-xmlerror.html#XML_C14N_INVALID_NODE">XML_C14N_INVALID_NODE</a><br />
+<a href="html/libxml-xmlerror.html#XML_C14N_RELATIVE_NAMESPACE">XML_C14N_RELATIVE_NAMESPACE</a><br />
 <a href="html/libxml-xmlerror.html#XML_C14N_REQUIRES_UTF8">XML_C14N_REQUIRES_UTF8</a><br />
+<a href="html/libxml-xmlerror.html#XML_C14N_UNKNOW_NODE">XML_C14N_UNKNOW_NODE</a><br />
 <a href="html/libxml-hash.html#XML_CAST_FPTR">XML_CAST_FPTR</a><br />
 <a href="html/libxml-catalog.html#XML_CATALOGS_NAMESPACE">XML_CATALOGS_NAMESPACE</a><br />
 <a href="html/libxml-xmlerror.html#XML_CATALOG_ENTRY_BROKEN">XML_CATALOG_ENTRY_BROKEN</a><br />
@@ -1058,6 +1060,8 @@
 <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FINAL_RESTRICTION">XML_SCHEMAS_TYPE_FINAL_RESTRICTION</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_FINAL_UNION">XML_SCHEMAS_TYPE_FINAL_UNION</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_GLOBAL">XML_SCHEMAS_TYPE_GLOBAL</a><br />
+<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_INTERNAL_INVALID">XML_SCHEMAS_TYPE_INTERNAL_INVALID</a><br />
+<a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_INTERNAL_RESOLVED">XML_SCHEMAS_TYPE_INTERNAL_RESOLVED</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_MARKED">XML_SCHEMAS_TYPE_MARKED</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_MIXED">XML_SCHEMAS_TYPE_MIXED</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD">XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD</a><br />
@@ -1157,6 +1161,7 @@
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS">XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_CONTENT_SIMPLE">XML_SCHEMA_CONTENT_SIMPLE</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_CONTENT_UNKNOWN">XML_SCHEMA_CONTENT_UNKNOWN</a><br />
+<a href="html/libxml-schemasInternals.html#XML_SCHEMA_EXTRA_QNAMEREF">XML_SCHEMA_EXTRA_QNAMEREF</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_FACET_ENUMERATION">XML_SCHEMA_FACET_ENUMERATION</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_FACET_FRACTIONDIGITS">XML_SCHEMA_FACET_FRACTIONDIGITS</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_FACET_LENGTH">XML_SCHEMA_FACET_LENGTH</a><br />
@@ -1187,6 +1192,7 @@
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_IDC_UNIQUE">XML_SCHEMA_TYPE_IDC_UNIQUE</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_LIST">XML_SCHEMA_TYPE_LIST</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_NOTATION">XML_SCHEMA_TYPE_NOTATION</a><br />
+<a href="html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_PARTICLE">XML_SCHEMA_TYPE_PARTICLE</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_RESTRICTION">XML_SCHEMA_TYPE_RESTRICTION</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_SEQUENCE">XML_SCHEMA_TYPE_SEQUENCE</a><br />
 <a href="html/libxml-schemasInternals.html#XML_SCHEMA_TYPE_SIMPLE">XML_SCHEMA_TYPE_SIMPLE</a><br />
@@ -2546,6 +2552,7 @@
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaGetFacetValueAsULong">xmlSchemaGetFacetValueAsULong</a><br />
 <a href="html/libxml-xmlschemas.html#xmlSchemaGetParserErrors">xmlSchemaGetParserErrors</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaGetPredefinedType">xmlSchemaGetPredefinedType</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaGetValType">xmlSchemaGetValType</a><br />
 <a href="html/libxml-xmlschemas.html#xmlSchemaGetValidErrors">xmlSchemaGetValidErrors</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaInitTypes">xmlSchemaInitTypes</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaIsBuiltInTypeFacet">xmlSchemaIsBuiltInTypeFacet</a><br />
@@ -2582,7 +2589,9 @@
 <a href="html/libxml-xmlschemas.html#xmlSchemaValidOption">xmlSchemaValidOption</a><br />
 <a href="html/libxml-xmlschemas.html#xmlSchemaValidateDoc">xmlSchemaValidateDoc</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacet">xmlSchemaValidateFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a><br />
+<a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a><br />
 <a href="html/libxml-xmlschemas.html#xmlSchemaValidateOneElement">xmlSchemaValidateOneElement</a><br />
 <a href="html/libxml-xmlschemastypes.html#xmlSchemaValidatePredefinedType">xmlSchemaValidatePredefinedType</a><br />

Modified: packages/libxml2/branches/upstream/current/doc/apibuild.py
===================================================================
--- packages/libxml2/branches/upstream/current/doc/apibuild.py	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/apibuild.py	2005-04-04 18:23:13 UTC (rev 398)
@@ -33,6 +33,7 @@
   "rngparser.h": "not yet integrated",
   "elfgcchack.h": "not a normal header",
   "testapi.c": "generated regression tests",
+  "tst.c": "not part of the library",
   "testdso.c": "test for dynamid shared libraries",
 }
 
@@ -70,9 +71,10 @@
     return d.keys()
 
 class identifier:
-    def __init__(self, name, module=None, type=None, lineno = 0,
+    def __init__(self, name, header=None, module=None, type=None, lineno = 0,
                  info=None, extra=None, conditionals = None):
         self.name = name
+	self.header = header
 	self.module = module
 	self.type = type
 	self.info = info
@@ -102,6 +104,8 @@
 	return r
 
 
+    def set_header(self, header):
+        self.header = header
     def set_module(self, module):
         self.module = module
     def set_type(self, type):
@@ -122,6 +126,8 @@
 
     def get_name(self):
         return self.name
+    def get_header(self):
+        return self.module
     def get_module(self):
         return self.module
     def get_type(self):
@@ -137,12 +143,14 @@
     def get_conditionals(self):
         return self.conditionals
 
-    def update(self, module, type = None, info = None, extra=None,
+    def update(self, header, module, type = None, info = None, extra=None,
                conditionals=None):
 	if self.name == debugsym:
 	    print "=> update %s : %s" % (debugsym, (module, type, info,
 	                                 extra, conditionals))
-        if module != None and self.module == None:
+        if header != None and self.header == None:
+	    self.set_header(module)
+        if module != None and (self.module == None or self.header == self.module):
 	    self.set_module(module)
         if type != None and self.type == None:
 	    self.set_type(type)
@@ -153,7 +161,6 @@
         if conditionals != None:
 	    self.set_conditionals(conditionals)
 
-
 class index:
     def __init__(self, name = "noname"):
         self.name = name
@@ -168,15 +175,15 @@
 	self.references = {}
 	self.info = {}
 
-    def add_ref(self, name, module, static, type, lineno, info=None, extra=None, conditionals = None):
+    def add_ref(self, name, header, module, static, type, lineno, info=None, extra=None, conditionals = None):
         if name[0:2] == '__':
 	    return None
         d = None
         try:
 	   d = self.identifiers[name]
-	   d.update(module, type, lineno, info, extra, conditionals)
+	   d.update(header, module, type, lineno, info, extra, conditionals)
 	except:
-	   d = identifier(name, module, type, lineno, info, extra, conditionals)
+	   d = identifier(name, header, module, type, lineno, info, extra, conditionals)
 	   self.identifiers[name] = d
 
 	if d != None and static == 1:
@@ -190,15 +197,15 @@
 
 	return d
 
-    def add(self, name, module, static, type, lineno, info=None, extra=None, conditionals = None):
+    def add(self, name, header, module, static, type, lineno, info=None, extra=None, conditionals = None):
         if name[0:2] == '__':
 	    return None
         d = None
         try:
 	   d = self.identifiers[name]
-	   d.update(module, type, lineno, info, extra, conditionals)
+	   d.update(header, module, type, lineno, info, extra, conditionals)
 	except:
-	   d = identifier(name, module, type, lineno, info, extra, conditionals)
+	   d = identifier(name, header, module, type, lineno, info, extra, conditionals)
 	   self.identifiers[name] = d
 
 	if d != None and static == 1:
@@ -239,7 +246,7 @@
 	         del self.macros[id]
 	     if self.functions.has_key(id):
 	         print "function %s from %s redeclared in %s" % (
-		    id, self.functions[id].module, idx.functions[id].module)
+		    id, self.functions[id].header, idx.functions[id].header)
 	     else:
 	         self.functions[id] = idx.functions[id]
 		 self.identifiers[id] = idx.functions[id]
@@ -252,21 +259,21 @@
 	         del self.macros[id]
 	     if self.variables.has_key(id):
 	         print "variable %s from %s redeclared in %s" % (
-		    id, self.variables[id].module, idx.variables[id].module)
+		    id, self.variables[id].header, idx.variables[id].header)
 	     else:
 	         self.variables[id] = idx.variables[id]
 		 self.identifiers[id] = idx.variables[id]
         for id in idx.structs.keys():
 	     if self.structs.has_key(id):
 	         print "struct %s from %s redeclared in %s" % (
-		    id, self.structs[id].module, idx.structs[id].module)
+		    id, self.structs[id].header, idx.structs[id].header)
 	     else:
 	         self.structs[id] = idx.structs[id]
 		 self.identifiers[id] = idx.structs[id]
         for id in idx.typedefs.keys():
 	     if self.typedefs.has_key(id):
 	         print "typedef %s from %s redeclared in %s" % (
-		    id, self.typedefs[id].module, idx.typedefs[id].module)
+		    id, self.typedefs[id].header, idx.typedefs[id].header)
 	     else:
 	         self.typedefs[id] = idx.typedefs[id]
 		 self.identifiers[id] = idx.typedefs[id]
@@ -283,14 +290,14 @@
                  continue
 	     if self.macros.has_key(id):
 	         print "macro %s from %s redeclared in %s" % (
-		    id, self.macros[id].module, idx.macros[id].module)
+		    id, self.macros[id].header, idx.macros[id].header)
 	     else:
 	         self.macros[id] = idx.macros[id]
 		 self.identifiers[id] = idx.macros[id]
         for id in idx.enums.keys():
 	     if self.enums.has_key(id):
 	         print "enum %s from %s redeclared in %s" % (
-		    id, self.enums[id].module, idx.enums[id].module)
+		    id, self.enums[id].header, idx.enums[id].header)
 	     else:
 	         self.enums[id] = idx.enums[id]
 		 self.identifiers[id] = idx.enums[id]
@@ -306,7 +313,7 @@
 		     print "  H: %s" % self.functions[id].conditionals
 		     print "  C: %s" % idx.functions[id].conditionals
 	         up = idx.functions[id]
-	         self.functions[id].update(None, up.type, up.info, up.extra)
+	         self.functions[id].update(None, up.module, up.type, up.info, up.extra)
 	 #     else:
 	 #         print "Function %s from %s is not declared in headers" % (
 	 #	        id, idx.functions[id].module)
@@ -574,13 +581,21 @@
         return self.lexer.getlineno()
 
     def index_add(self, name, module, static, type, info=None, extra = None):
-        self.index.add(name, module, static, type, self.lineno(),
-	               info, extra, self.conditionals)
+	if self.is_header == 1:
+	    self.index.add(name, module, module, static, type, self.lineno(),
+			   info, extra, self.conditionals)
+	else:
+	    self.index.add(name, None, module, static, type, self.lineno(),
+			   info, extra, self.conditionals)
 
     def index_add_ref(self, name, module, static, type, info=None,
                       extra = None):
-        self.index.add_ref(name, module, static, type, self.lineno(),
-	               info, extra, self.conditionals)
+	if self.is_header == 1:
+	    self.index.add_ref(name, module, module, static, type,
+	                       self.lineno(), info, extra, self.conditionals)
+	else:
+	    self.index.add_ref(name, None, module, static, type, self.lineno(),
+			       info, extra, self.conditionals)
 
     def warning(self, msg):
         if self.no_error:
@@ -1603,12 +1618,14 @@
         module = os.path.basename(file)
 	if module[-2:] == '.h':
 	    module = module[:-2]
+	elif module[-2:] == '.c':
+	    module = module[:-2]
 	return module
 
     def serialize_enum(self, output, name):
         id = self.idx.enums[name]
         output.write("    <enum name='%s' file='%s'" % (name,
-	             self.modulename_file(id.module)))
+	             self.modulename_file(id.header)))
 	if id.info != None:
 	    info = id.info
 	    if info[0] != None and info[0] != '':
@@ -1626,7 +1643,7 @@
     def serialize_macro(self, output, name):
         id = self.idx.macros[name]
         output.write("    <macro name='%s' file='%s'>\n" % (name,
-	             self.modulename_file(id.module)))
+	             self.modulename_file(id.header)))
 	if id.info != None:
             try:
 		(args, desc) = id.info
@@ -1649,7 +1666,7 @@
         id = self.idx.typedefs[name]
 	if id.info[0:7] == 'struct ':
 	    output.write("    <struct name='%s' file='%s' type='%s'" % (
-	             name, self.modulename_file(id.module), id.info))
+	             name, self.modulename_file(id.header), id.info))
 	    name = id.info[7:]
 	    if self.idx.structs.has_key(name) and ( \
 	       type(self.idx.structs[name].info) == type(()) or
@@ -1671,24 +1688,25 @@
 	        output.write("/>\n");
 	else :
 	    output.write("    <typedef name='%s' file='%s' type='%s'/>\n" % (
-	             name, self.modulename_file(id.module), id.info))
+	             name, self.modulename_file(id.header), id.info))
 
     def serialize_variable(self, output, name):
         id = self.idx.variables[name]
 	if id.info != None:
 	    output.write("    <variable name='%s' file='%s' type='%s'/>\n" % (
-		    name, self.modulename_file(id.module), id.info))
+		    name, self.modulename_file(id.header), id.info))
 	else:
 	    output.write("    <variable name='%s' file='%s'/>\n" % (
-	            name, self.modulename_file(id.module)))
+	            name, self.modulename_file(id.header)))
 	              
     def serialize_function(self, output, name):
         id = self.idx.functions[name]
 	if name == debugsym:
 	    print "=>", id
 
-        output.write("    <%s name='%s' file='%s'>\n" % (id.type, name,
-	             self.modulename_file(id.module)))
+        output.write("    <%s name='%s' file='%s' module='%s'>\n" % (id.type,
+	             name, self.modulename_file(id.header),
+		     self.modulename_file(id.module)))
 	#
 	# Processing of conditionals modified by Bill 1/1/05
 	#
@@ -1870,7 +1888,7 @@
 	typ.sort()
 	for id in typ:
 	    idf = self.idx.identifiers[id]
-	    module = idf.module
+	    module = idf.header
 	    output.write("    <reference name='%s' href='%s'/>\n" % (id,
 	                 'html/' + self.basename + '-' +
 		         self.modulename_file(module) + '.html#' +

Modified: packages/libxml2/branches/upstream/current/doc/elfgcchack.xsl
===================================================================
--- packages/libxml2/branches/upstream/current/doc/elfgcchack.xsl	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/elfgcchack.xsl	2005-04-04 18:23:13 UTC (rev 398)
@@ -15,6 +15,12 @@
  * autogenerated with xsltproc doc/elfgcchack.xsl doc/libxml2-api.xml
  */
 
+#ifdef IN_LIBXML
+#ifdef __GNUC__
+#ifdef PIC
+#ifdef linux
+#if (__GNUC__ == 3 &amp;&amp; __GNUC_MINOR__ >= 3) || (__GNUC__ > 3)
+
 #include "libxml/c14n.h"
 #include "libxml/catalog.h"
 #include "libxml/chvalid.h"
@@ -64,18 +70,37 @@
 
 /* special hot spot not exported ones */
 
+#ifdef bottom_globals
+#undef __xmlGenericError
+extern __typeof (__xmlGenericError) __xmlGenericError __attribute((alias("__xmlGenericError__internal_alias")));
+#else
+#ifndef __xmlGenericError
 extern __typeof (__xmlGenericError) __xmlGenericError__internal_alias __attribute((visibility("hidden")));
-extern __typeof (__xmlGenericError) __xmlGenericError __attribute((alias("__xmlGenericError__internal_alias")));
 #define __xmlGenericError __xmlGenericError__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef __xmlGenericErrorContext
+extern __typeof (__xmlGenericErrorContext) __xmlGenericErrorContext __attribute((alias("__xmlGenericErrorContext__internal_alias")));
+#else
+#ifndef __xmlGenericErrorContext
 extern __typeof (__xmlGenericErrorContext) __xmlGenericErrorContext__internal_alias __attribute((visibility("hidden")));
-extern __typeof (__xmlGenericErrorContext) __xmlGenericErrorContext __attribute((alias("__xmlGenericErrorContext__internal_alias")));
 #define __xmlGenericErrorContext __xmlGenericErrorContext__internal_alias
+#endif
+#endif
 
 /* list generated from libxml2-api.xml */
+</xsl:text>
+    <xsl:apply-templates select="/api/symbols/function"/>
+    <xsl:text>
+#endif
+#endif
+#endif
+#endif
+#endif
 
 </xsl:text>
-    <xsl:apply-templates select="/api/symbols/function"/>
   </xsl:template>
 
   <xsl:template match="function">
@@ -83,25 +108,37 @@
     <xsl:if test="starts-with(@name, 'xml') or starts-with(@name, 'html') or contains(@name, 'Push') or contains(@name, 'Pop')">
       <xsl:variable name="alias" select="concat($str, '__internal_alias')"/>
       <xsl:apply-templates select="cond"/>
-      <xsl:text>extern __typeof (</xsl:text>
+      <xsl:text>#ifdef bottom_</xsl:text>
+      <xsl:value-of select="string(@module)"/>
+      <xsl:text>
+#undef </xsl:text>
       <xsl:value-of select="$str"/>
+      <xsl:text>
+extern __typeof (</xsl:text>
+      <xsl:value-of select="$str"/>
       <xsl:text>) </xsl:text>
+      <xsl:value-of select="$str"/>
+      <xsl:text> __attribute((alias("</xsl:text>
       <xsl:value-of select="$alias"/>
-      <xsl:text> __attribute((visibility("hidden")));
+      <xsl:text>")));
+#else
+#ifndef </xsl:text>
+      <xsl:value-of select="$str"/>
+      <xsl:text>
 </xsl:text>
       <xsl:text>extern __typeof (</xsl:text>
       <xsl:value-of select="$str"/>
       <xsl:text>) </xsl:text>
-      <xsl:value-of select="$str"/>
-      <xsl:text> __attribute((alias("</xsl:text>
       <xsl:value-of select="$alias"/>
-      <xsl:text>")));
+      <xsl:text> __attribute((visibility("hidden")));
 </xsl:text>
       <xsl:text>#define </xsl:text>
       <xsl:value-of select="$str"/>
       <xsl:text> </xsl:text>
       <xsl:value-of select="$alias"/>
       <xsl:text>
+#endif
+#endif
 </xsl:text>
       <xsl:apply-templates select="cond" mode="end"/>
       <xsl:text>

Modified: packages/libxml2/branches/upstream/current/doc/examples/Makefile.am
===================================================================
--- packages/libxml2/branches/upstream/current/doc/examples/Makefile.am	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/examples/Makefile.am	2005-04-04 18:23:13 UTC (rev 398)
@@ -15,40 +15,20 @@
 	$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)
 	- at INSTALL@ -m 0644 $(srcdir)/*.html $(srcdir)/*.c $(srcdir)/*.xml $(srcdir)/*.xsl $(srcdir)/*.res $(DESTDIR)$(HTML_DIR)
 
-EXTRA_DIST=examples.xsl index.py test1.xml examples.xml test2.xml writer.xml test3.xml tst.xml reader1.res reader3.res tree1.res tree2.res io1.res io2.res xpath1.res xpath2.res reader4.res 
+EXTRA_DIST=examples.xsl index.py test3.xml tst.xml test2.xml writer.xml test1.xml examples.xml xpath1.res tree2.res reader3.res tree1.res reader1.res xpath2.res reader4.res io2.res io1.res 
 
-noinst_PROGRAMS=xpath1 parse1 parse2 tree1 tree2 testWriter reader1 reader2 io1 parse3 parse4 io2 xpath2 reader4 reader3 
+noinst_PROGRAMS=reader3 io2 reader1 reader2 reader4 testWriter parse3 tree2 tree1 xpath2 parse1 xpath1 io1 parse4 parse2 
 
-xpath1_SOURCES=xpath1.c
-xpath1_LDFLAGS=
-xpath1_DEPENDENCIES= $(DEPS)
-xpath1_LDADD= @RDL_LIBS@ $(LDADDS)
+reader3_SOURCES=reader3.c
+reader3_LDFLAGS=
+reader3_DEPENDENCIES= $(DEPS)
+reader3_LDADD= @RDL_LIBS@ $(LDADDS)
 
-parse1_SOURCES=parse1.c
-parse1_LDFLAGS=
-parse1_DEPENDENCIES= $(DEPS)
-parse1_LDADD= @RDL_LIBS@ $(LDADDS)
+io2_SOURCES=io2.c
+io2_LDFLAGS=
+io2_DEPENDENCIES= $(DEPS)
+io2_LDADD= @RDL_LIBS@ $(LDADDS)
 
-parse2_SOURCES=parse2.c
-parse2_LDFLAGS=
-parse2_DEPENDENCIES= $(DEPS)
-parse2_LDADD= @RDL_LIBS@ $(LDADDS)
-
-tree1_SOURCES=tree1.c
-tree1_LDFLAGS=
-tree1_DEPENDENCIES= $(DEPS)
-tree1_LDADD= @RDL_LIBS@ $(LDADDS)
-
-tree2_SOURCES=tree2.c
-tree2_LDFLAGS=
-tree2_DEPENDENCIES= $(DEPS)
-tree2_LDADD= @RDL_LIBS@ $(LDADDS)
-
-testWriter_SOURCES=testWriter.c
-testWriter_LDFLAGS=
-testWriter_DEPENDENCIES= $(DEPS)
-testWriter_LDADD= @RDL_LIBS@ $(LDADDS)
-
 reader1_SOURCES=reader1.c
 reader1_LDFLAGS=
 reader1_DEPENDENCIES= $(DEPS)
@@ -59,76 +39,96 @@
 reader2_DEPENDENCIES= $(DEPS)
 reader2_LDADD= @RDL_LIBS@ $(LDADDS)
 
-io1_SOURCES=io1.c
-io1_LDFLAGS=
-io1_DEPENDENCIES= $(DEPS)
-io1_LDADD= @RDL_LIBS@ $(LDADDS)
+reader4_SOURCES=reader4.c
+reader4_LDFLAGS=
+reader4_DEPENDENCIES= $(DEPS)
+reader4_LDADD= @RDL_LIBS@ $(LDADDS)
 
+testWriter_SOURCES=testWriter.c
+testWriter_LDFLAGS=
+testWriter_DEPENDENCIES= $(DEPS)
+testWriter_LDADD= @RDL_LIBS@ $(LDADDS)
+
 parse3_SOURCES=parse3.c
 parse3_LDFLAGS=
 parse3_DEPENDENCIES= $(DEPS)
 parse3_LDADD= @RDL_LIBS@ $(LDADDS)
 
-parse4_SOURCES=parse4.c
-parse4_LDFLAGS=
-parse4_DEPENDENCIES= $(DEPS)
-parse4_LDADD= @RDL_LIBS@ $(LDADDS)
+tree2_SOURCES=tree2.c
+tree2_LDFLAGS=
+tree2_DEPENDENCIES= $(DEPS)
+tree2_LDADD= @RDL_LIBS@ $(LDADDS)
 
-io2_SOURCES=io2.c
-io2_LDFLAGS=
-io2_DEPENDENCIES= $(DEPS)
-io2_LDADD= @RDL_LIBS@ $(LDADDS)
+tree1_SOURCES=tree1.c
+tree1_LDFLAGS=
+tree1_DEPENDENCIES= $(DEPS)
+tree1_LDADD= @RDL_LIBS@ $(LDADDS)
 
 xpath2_SOURCES=xpath2.c
 xpath2_LDFLAGS=
 xpath2_DEPENDENCIES= $(DEPS)
 xpath2_LDADD= @RDL_LIBS@ $(LDADDS)
 
-reader4_SOURCES=reader4.c
-reader4_LDFLAGS=
-reader4_DEPENDENCIES= $(DEPS)
-reader4_LDADD= @RDL_LIBS@ $(LDADDS)
+parse1_SOURCES=parse1.c
+parse1_LDFLAGS=
+parse1_DEPENDENCIES= $(DEPS)
+parse1_LDADD= @RDL_LIBS@ $(LDADDS)
 
-reader3_SOURCES=reader3.c
-reader3_LDFLAGS=
-reader3_DEPENDENCIES= $(DEPS)
-reader3_LDADD= @RDL_LIBS@ $(LDADDS)
+xpath1_SOURCES=xpath1.c
+xpath1_LDFLAGS=
+xpath1_DEPENDENCIES= $(DEPS)
+xpath1_LDADD= @RDL_LIBS@ $(LDADDS)
 
+io1_SOURCES=io1.c
+io1_LDFLAGS=
+io1_DEPENDENCIES= $(DEPS)
+io1_LDADD= @RDL_LIBS@ $(LDADDS)
+
+parse4_SOURCES=parse4.c
+parse4_LDFLAGS=
+parse4_DEPENDENCIES= $(DEPS)
+parse4_LDADD= @RDL_LIBS@ $(LDADDS)
+
+parse2_SOURCES=parse2.c
+parse2_LDFLAGS=
+parse2_DEPENDENCIES= $(DEPS)
+parse2_LDADD= @RDL_LIBS@ $(LDADDS)
+
 valgrind: 
 	$(MAKE) CHECKER='valgrind' tests
 
 tests: $(noinst_PROGRAMS)
 	@(echo '## examples regression tests')
 	@(echo > .memdump)
-	@($(CHECKER) ././xpath1 test3.xml '//child2' > xpath1.tmp ; diff xpath1.tmp xpath1.res ; rm xpath1.tmp)
+	@($(CHECKER) ./reader3 > reader3.tmp ; diff reader3.tmp reader3.res ; rm reader3.tmp)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./parse1 test1.xml)
+	@($(CHECKER) ./io2 > io2.tmp ; diff io2.tmp io2.res ; rm -f io2.tmp)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./parse2 test2.xml)
+	@($(CHECKER) ./reader1 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./tree1 test2.xml > tree1.tmp ; diff tree1.tmp tree1.res ; rm tree1.tmp)
+	@($(CHECKER) ./reader2 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./tree2 > tree2.tmp ; diff tree2.tmp tree2.res ; rm tree2.tmp)
+	@($(CHECKER) ./reader4 test1.xml test2.xml test3.xml > reader4.tmp ; diff reader4.tmp reader4.res ; rm reader4.tmp)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
 	@($(CHECKER) ./testWriter ; for i in 1 2 3 4 ; do diff writer.xml writer$$i.res ; done ; rm writer*.res)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./reader1 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp)
+	@($(CHECKER) ./parse3)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./reader2 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp)
+	@($(CHECKER) ./tree2 > tree2.tmp ; diff tree2.tmp tree2.res ; rm tree2.tmp)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./io1 > io1.tmp ; diff io1.tmp io1.res ; rm -f io1.tmp)
+	@($(CHECKER) ./tree1 test2.xml > tree1.tmp ; diff tree1.tmp tree1.res ; rm tree1.tmp)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./parse3)
+	@($(CHECKER) ./xpath2 test3.xml '//discarded' discarded > xpath2.tmp ; diff xpath2.tmp xpath2.res ; rm xpath2.tmp)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./parse4 test3.xml)
+	@($(CHECKER) ./parse1 test1.xml)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./io2 > io2.tmp ; diff io2.tmp io2.res ; rm -f io2.tmp)
+	@($(CHECKER) ././xpath1 test3.xml '//child2' > xpath1.tmp ; diff xpath1.tmp xpath1.res ; rm xpath1.tmp)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./xpath2 test3.xml '//discarded' discarded > xpath2.tmp ; diff xpath2.tmp xpath2.res ; rm xpath2.tmp)
+	@($(CHECKER) ./io1 > io1.tmp ; diff io1.tmp io1.res ; rm -f io1.tmp)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./reader4 test1.xml test2.xml test3.xml > reader4.tmp ; diff reader4.tmp reader4.res ; rm reader4.tmp)
+	@($(CHECKER) ./parse4 test3.xml)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./reader3 > reader3.tmp ; diff reader3.tmp reader3.res ; rm reader3.tmp)
+	@($(CHECKER) ./parse2 test2.xml)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
 
 

Modified: packages/libxml2/branches/upstream/current/doc/examples/Makefile.in
===================================================================
--- packages/libxml2/branches/upstream/current/doc/examples/Makefile.in	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/examples/Makefile.in	2005-04-04 18:23:13 UTC (rev 398)
@@ -38,11 +38,11 @@
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-noinst_PROGRAMS = xpath1$(EXEEXT) parse1$(EXEEXT) parse2$(EXEEXT) \
-	tree1$(EXEEXT) tree2$(EXEEXT) testWriter$(EXEEXT) \
-	reader1$(EXEEXT) reader2$(EXEEXT) io1$(EXEEXT) parse3$(EXEEXT) \
-	parse4$(EXEEXT) io2$(EXEEXT) xpath2$(EXEEXT) reader4$(EXEEXT) \
-	reader3$(EXEEXT)
+noinst_PROGRAMS = reader3$(EXEEXT) io2$(EXEEXT) reader1$(EXEEXT) \
+	reader2$(EXEEXT) reader4$(EXEEXT) testWriter$(EXEEXT) \
+	parse3$(EXEEXT) tree2$(EXEEXT) tree1$(EXEEXT) xpath2$(EXEEXT) \
+	parse1$(EXEEXT) xpath1$(EXEEXT) io1$(EXEEXT) parse4$(EXEEXT) \
+	parse2$(EXEEXT)
 subdir = doc/examples
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -322,31 +322,15 @@
 INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I at srcdir@/include @THREAD_CFLAGS@ @Z_CFLAGS@
 DEPS = $(top_builddir)/libxml2.la
 LDADDS = @STATIC_BINARIES@ $(top_builddir)/libxml2.la @THREAD_LIBS@ @Z_LIBS@ $(ICONV_LIBS) -lm @WIN32_EXTRA_LIBADD@
-EXTRA_DIST = examples.xsl index.py test1.xml examples.xml test2.xml writer.xml test3.xml tst.xml reader1.res reader3.res tree1.res tree2.res io1.res io2.res xpath1.res xpath2.res reader4.res 
-xpath1_SOURCES = xpath1.c
-xpath1_LDFLAGS = 
-xpath1_DEPENDENCIES = $(DEPS)
-xpath1_LDADD = @RDL_LIBS@ $(LDADDS)
-parse1_SOURCES = parse1.c
-parse1_LDFLAGS = 
-parse1_DEPENDENCIES = $(DEPS)
-parse1_LDADD = @RDL_LIBS@ $(LDADDS)
-parse2_SOURCES = parse2.c
-parse2_LDFLAGS = 
-parse2_DEPENDENCIES = $(DEPS)
-parse2_LDADD = @RDL_LIBS@ $(LDADDS)
-tree1_SOURCES = tree1.c
-tree1_LDFLAGS = 
-tree1_DEPENDENCIES = $(DEPS)
-tree1_LDADD = @RDL_LIBS@ $(LDADDS)
-tree2_SOURCES = tree2.c
-tree2_LDFLAGS = 
-tree2_DEPENDENCIES = $(DEPS)
-tree2_LDADD = @RDL_LIBS@ $(LDADDS)
-testWriter_SOURCES = testWriter.c
-testWriter_LDFLAGS = 
-testWriter_DEPENDENCIES = $(DEPS)
-testWriter_LDADD = @RDL_LIBS@ $(LDADDS)
+EXTRA_DIST = examples.xsl index.py test3.xml tst.xml test2.xml writer.xml test1.xml examples.xml xpath1.res tree2.res reader3.res tree1.res reader1.res xpath2.res reader4.res io2.res io1.res 
+reader3_SOURCES = reader3.c
+reader3_LDFLAGS = 
+reader3_DEPENDENCIES = $(DEPS)
+reader3_LDADD = @RDL_LIBS@ $(LDADDS)
+io2_SOURCES = io2.c
+io2_LDFLAGS = 
+io2_DEPENDENCIES = $(DEPS)
+io2_LDADD = @RDL_LIBS@ $(LDADDS)
 reader1_SOURCES = reader1.c
 reader1_LDFLAGS = 
 reader1_DEPENDENCIES = $(DEPS)
@@ -355,34 +339,50 @@
 reader2_LDFLAGS = 
 reader2_DEPENDENCIES = $(DEPS)
 reader2_LDADD = @RDL_LIBS@ $(LDADDS)
+reader4_SOURCES = reader4.c
+reader4_LDFLAGS = 
+reader4_DEPENDENCIES = $(DEPS)
+reader4_LDADD = @RDL_LIBS@ $(LDADDS)
+testWriter_SOURCES = testWriter.c
+testWriter_LDFLAGS = 
+testWriter_DEPENDENCIES = $(DEPS)
+testWriter_LDADD = @RDL_LIBS@ $(LDADDS)
+parse3_SOURCES = parse3.c
+parse3_LDFLAGS = 
+parse3_DEPENDENCIES = $(DEPS)
+parse3_LDADD = @RDL_LIBS@ $(LDADDS)
+tree2_SOURCES = tree2.c
+tree2_LDFLAGS = 
+tree2_DEPENDENCIES = $(DEPS)
+tree2_LDADD = @RDL_LIBS@ $(LDADDS)
+tree1_SOURCES = tree1.c
+tree1_LDFLAGS = 
+tree1_DEPENDENCIES = $(DEPS)
+tree1_LDADD = @RDL_LIBS@ $(LDADDS)
+xpath2_SOURCES = xpath2.c
+xpath2_LDFLAGS = 
+xpath2_DEPENDENCIES = $(DEPS)
+xpath2_LDADD = @RDL_LIBS@ $(LDADDS)
+parse1_SOURCES = parse1.c
+parse1_LDFLAGS = 
+parse1_DEPENDENCIES = $(DEPS)
+parse1_LDADD = @RDL_LIBS@ $(LDADDS)
+xpath1_SOURCES = xpath1.c
+xpath1_LDFLAGS = 
+xpath1_DEPENDENCIES = $(DEPS)
+xpath1_LDADD = @RDL_LIBS@ $(LDADDS)
 io1_SOURCES = io1.c
 io1_LDFLAGS = 
 io1_DEPENDENCIES = $(DEPS)
 io1_LDADD = @RDL_LIBS@ $(LDADDS)
-parse3_SOURCES = parse3.c
-parse3_LDFLAGS = 
-parse3_DEPENDENCIES = $(DEPS)
-parse3_LDADD = @RDL_LIBS@ $(LDADDS)
 parse4_SOURCES = parse4.c
 parse4_LDFLAGS = 
 parse4_DEPENDENCIES = $(DEPS)
 parse4_LDADD = @RDL_LIBS@ $(LDADDS)
-io2_SOURCES = io2.c
-io2_LDFLAGS = 
-io2_DEPENDENCIES = $(DEPS)
-io2_LDADD = @RDL_LIBS@ $(LDADDS)
-xpath2_SOURCES = xpath2.c
-xpath2_LDFLAGS = 
-xpath2_DEPENDENCIES = $(DEPS)
-xpath2_LDADD = @RDL_LIBS@ $(LDADDS)
-reader4_SOURCES = reader4.c
-reader4_LDFLAGS = 
-reader4_DEPENDENCIES = $(DEPS)
-reader4_LDADD = @RDL_LIBS@ $(LDADDS)
-reader3_SOURCES = reader3.c
-reader3_LDFLAGS = 
-reader3_DEPENDENCIES = $(DEPS)
-reader3_LDADD = @RDL_LIBS@ $(LDADDS)
+parse2_SOURCES = parse2.c
+parse2_LDFLAGS = 
+parse2_DEPENDENCIES = $(DEPS)
+parse2_LDADD = @RDL_LIBS@ $(LDADDS)
 all: all-am
 
 .SUFFIXES:
@@ -707,35 +707,35 @@
 tests: $(noinst_PROGRAMS)
 	@(echo '## examples regression tests')
 	@(echo > .memdump)
-	@($(CHECKER) ././xpath1 test3.xml '//child2' > xpath1.tmp ; diff xpath1.tmp xpath1.res ; rm xpath1.tmp)
+	@($(CHECKER) ./reader3 > reader3.tmp ; diff reader3.tmp reader3.res ; rm reader3.tmp)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./parse1 test1.xml)
+	@($(CHECKER) ./io2 > io2.tmp ; diff io2.tmp io2.res ; rm -f io2.tmp)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./parse2 test2.xml)
+	@($(CHECKER) ./reader1 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./tree1 test2.xml > tree1.tmp ; diff tree1.tmp tree1.res ; rm tree1.tmp)
+	@($(CHECKER) ./reader2 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./tree2 > tree2.tmp ; diff tree2.tmp tree2.res ; rm tree2.tmp)
+	@($(CHECKER) ./reader4 test1.xml test2.xml test3.xml > reader4.tmp ; diff reader4.tmp reader4.res ; rm reader4.tmp)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
 	@($(CHECKER) ./testWriter ; for i in 1 2 3 4 ; do diff writer.xml writer$$i.res ; done ; rm writer*.res)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./reader1 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp)
+	@($(CHECKER) ./parse3)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./reader2 test2.xml > reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp)
+	@($(CHECKER) ./tree2 > tree2.tmp ; diff tree2.tmp tree2.res ; rm tree2.tmp)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./io1 > io1.tmp ; diff io1.tmp io1.res ; rm -f io1.tmp)
+	@($(CHECKER) ./tree1 test2.xml > tree1.tmp ; diff tree1.tmp tree1.res ; rm tree1.tmp)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./parse3)
+	@($(CHECKER) ./xpath2 test3.xml '//discarded' discarded > xpath2.tmp ; diff xpath2.tmp xpath2.res ; rm xpath2.tmp)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./parse4 test3.xml)
+	@($(CHECKER) ./parse1 test1.xml)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./io2 > io2.tmp ; diff io2.tmp io2.res ; rm -f io2.tmp)
+	@($(CHECKER) ././xpath1 test3.xml '//child2' > xpath1.tmp ; diff xpath1.tmp xpath1.res ; rm xpath1.tmp)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./xpath2 test3.xml '//discarded' discarded > xpath2.tmp ; diff xpath2.tmp xpath2.res ; rm xpath2.tmp)
+	@($(CHECKER) ./io1 > io1.tmp ; diff io1.tmp io1.res ; rm -f io1.tmp)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./reader4 test1.xml test2.xml test3.xml > reader4.tmp ; diff reader4.tmp reader4.res ; rm reader4.tmp)
+	@($(CHECKER) ./parse4 test3.xml)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
-	@($(CHECKER) ./reader3 > reader3.tmp ; diff reader3.tmp reader3.res ; rm reader3.tmp)
+	@($(CHECKER) ./parse2 test2.xml)
 	@(grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" ; exit 0)
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.

Modified: packages/libxml2/branches/upstream/current/doc/examples/examples.xml
===================================================================
--- packages/libxml2/branches/upstream/current/doc/examples/examples.xml	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/examples/examples.xml	2005-04-04 18:23:13 UTC (rev 398)
@@ -1,135 +1,136 @@
 <examples>
-  <example filename='xpath1.c'>
-    <synopsis>Evaluate XPath expression and prints result node set.</synopsis>
-    <purpose>Shows how to evaluate XPath expression and register known namespaces in XPath context.</purpose>
-    <usage>xpath1 &lt;xml-file&gt; &lt;xpath-expr&gt; [&lt;known-ns-list&gt;]</usage>
-    <test>./xpath1 test3.xml &apos;//child2&apos; &gt; xpath1.tmp ; diff xpath1.tmp xpath1.res ; rm xpath1.tmp</test>
-    <author>Aleksey Sanin</author>
+  <example filename='reader3.c'>
+    <synopsis>Show how to extract subdocuments with xmlReader</synopsis>
+    <purpose>Demonstrate the use of xmlTextReaderPreservePattern() to parse an XML file with the xmlReader while collecting only some subparts of the document. (Note that the XMLReader functions require libxml2 version later than 2.6.)</purpose>
+    <usage>reader3</usage>
+    <test>reader3 &gt; reader3.tmp ; diff reader3.tmp reader3.res ; rm reader3.tmp</test>
+    <author>Daniel Veillard</author>
     <copy>see Copyright for the status of this software. </copy>
-    <section>XPath</section>
+    <section>xmlReader</section>
     <includes>
-      <include>&lt;libxml/parser.h&gt;</include>
-      <include>&lt;libxml/xpath.h&gt;</include>
-      <include>&lt;libxml/xpathInternals.h&gt;</include>
-      <include>&lt;libxml/tree.h&gt;</include>
+      <include>&lt;libxml/xmlreader.h&gt;</include>
     </includes>
     <uses>
-      <enum line='229' file='tree' name='XML_ELEMENT_NODE'/>
-      <typedef line='88' file='xpath' name='xmlXPathObjectPtr'/>
-      <function line='54' file='xmlmemory' name='xmlMemoryDump'/>
-      <function line='117' file='xpath' name='xmlXPathEvalExpression'/>
-      <function line='94' file='parser' name='xmlParseFile'/>
-      <function line='186' file='xpathInternals' name='xmlXPathRegisterNs'/>
-      <function line='129' file='xpath' name='xmlXPathFreeObject'/>
-      <variable line='193' file='globals' name='xmlFree'/>
-      <typedef line='218' file='tree' name='xmlNsPtr'/>
-      <function line='101' file='xpath' name='xmlXPathNewContext'/>
-      <function line='49' file='parser' name='xmlCleanupParser'/>
-      <macro line='43' file='xmlversion' name='LIBXML_TEST_VERSION'/>
-      <typedef line='87' file='xpath' name='xmlXPathContextPtr'/>
-      <function line='130' file='xpath' name='xmlXPathFreeContext'/>
-      <function line='39' file='parser' name='xmlInitParser'/>
-      <function line='156' file='xmlstring' name='xmlStrdup'/>
-      <function line='131' file='tree' name='xmlFreeDoc'/>
-      <function line='180' file='xmlstring' name='xmlStrchr'/>
-      <typedef line='206' file='tree' name='xmlNodePtr'/>
-      <typedef line='86' file='tree' name='xmlDocPtr'/>
-      <enum line='217' file='tree' name='XML_NAMESPACE_DECL'/>
+      <function line='106' file='parser' name='xmlCleanupParser'/>
+      <typedef line='31' file='xmlreader' name='xmlTextReaderPtr'/>
+      <function line='110' file='xmlmemory' name='xmlMemoryDump'/>
+      <function line='99' file='tree' name='xmlFreeDoc'/>
+      <function line='65' file='xmlreader' name='xmlFreeTextReader'/>
+      <macro line='90' file='xmlversion' name='LIBXML_TEST_VERSION'/>
+      <function line='95' file='tree' name='xmlDocDump'/>
+      <function line='51' file='xmlreader' name='xmlTextReaderRead'/>
+      <function line='61' file='xmlreader' name='xmlTextReaderCurrentDoc'/>
+      <function line='42' file='xmlreader' name='xmlTextReaderPreservePattern'/>
+      <function line='37' file='xmlreader' name='xmlReaderForFile'/>
+      <typedef line='76' file='tree' name='xmlDocPtr'/>
     </uses>
   </example>
-  <example filename='parse1.c'>
-    <synopsis>Parse an XML file to a tree and free it</synopsis>
-    <purpose>Demonstrate the use of xmlReadFile() to read an XML file into a tree and and xmlFreeDoc() to free the resulting tree</purpose>
-    <usage>parse1 test1.xml</usage>
-    <test>parse1 test1.xml</test>
-    <author>Daniel Veillard</author>
+  <example filename='io2.c'>
+    <synopsis>Output to char buffer</synopsis>
+    <purpose>Demonstrate the use of xmlDocDumpMemory to output document to a character buffer</purpose>
+    <usage>io2</usage>
+    <test>io2 &gt; io2.tmp ; diff io2.tmp io2.res ; rm -f io2.tmp</test>
+    <author>John Fleck</author>
     <copy>see Copyright for the status of this software. </copy>
-    <section>Parsing</section>
+    <section>InputOutput</section>
     <includes>
-      <include>&lt;libxml/tree.h&gt;</include>
       <include>&lt;libxml/parser.h&gt;</include>
     </includes>
     <uses>
-      <function line='54' file='xmlmemory' name='xmlMemoryDump'/>
-      <function line='50' file='parser' name='xmlCleanupParser'/>
-      <macro line='45' file='xmlversion' name='LIBXML_TEST_VERSION'/>
-      <typedef line='24' file='tree' name='xmlDocPtr'/>
-      <function line='31' file='tree' name='xmlFreeDoc'/>
-      <function line='26' file='parser' name='xmlReadFile'/>
+      <function line='29' file='tree' name='xmlNodeSetContent'/>
+      <function line='36' file='tree' name='xmlDocDumpFormatMemory'/>
+      <variable line='42' file='globals' name='xmlFree'/>
+      <function line='30' file='tree' name='xmlDocSetRootElement'/>
+      <typedef line='20' file='tree' name='xmlDocPtr'/>
+      <function line='43' file='tree' name='xmlFreeDoc'/>
+      <typedef line='19' file='tree' name='xmlNodePtr'/>
+      <function line='27' file='tree' name='xmlNewDoc'/>
+      <function line='28' file='tree' name='xmlNewNode'/>
     </uses>
   </example>
-  <example filename='parse2.c'>
-    <synopsis>Parse and validate an XML file to a tree and free the result</synopsis>
-    <purpose>Create a parser context for an XML file, then parse and validate the file, creating a tree, check the validation result and xmlFreeDoc() to free the resulting tree.</purpose>
-    <usage>parse2 test2.xml</usage>
-    <test>parse2 test2.xml</test>
+  <example filename='reader1.c'>
+    <synopsis>Parse an XML file with an xmlReader</synopsis>
+    <purpose>Demonstrate the use of xmlReaderForFile() to parse an XML file and dump the informations about the nodes found in the process. (Note that the XMLReader functions require libxml2 version later than 2.6.)</purpose>
+    <usage>reader1 &lt;filename&gt;</usage>
+    <test>reader1 test2.xml &gt; reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp</test>
     <author>Daniel Veillard</author>
     <copy>see Copyright for the status of this software. </copy>
-    <section>Parsing</section>
+    <section>xmlReader</section>
     <includes>
-      <include>&lt;libxml/tree.h&gt;</include>
-      <include>&lt;libxml/parser.h&gt;</include>
+      <include>&lt;libxml/xmlreader.h&gt;</include>
     </includes>
     <uses>
-      <function line='47' file='parser' name='xmlFreeParserCtxt'/>
-      <enum line='35' file='parser' name='XML_PARSE_DTDVALID'/>
-      <function line='29' file='parser' name='xmlNewParserCtxt'/>
-      <typedef line='25' file='tree' name='xmlParserCtxtPtr'/>
-      <function line='35' file='parser' name='xmlCtxtReadFile'/>
-      <function line='66' file='parser' name='xmlCleanupParser'/>
-      <macro line='61' file='xmlversion' name='LIBXML_TEST_VERSION'/>
-      <function line='44' file='tree' name='xmlFreeDoc'/>
-      <typedef line='26' file='tree' name='xmlDocPtr'/>
-      <function line='70' file='xmlmemory' name='xmlMemoryDump'/>
+      <function line='44' file='xmlstring' name='xmlStrlen'/>
+      <function line='94' file='parser' name='xmlCleanupParser'/>
+      <function line='37' file='xmlreader' name='xmlTextReaderNodeType'/>
+      <typedef line='59' file='xmlreader' name='xmlTextReaderPtr'/>
+      <function line='98' file='xmlmemory' name='xmlMemoryDump'/>
+      <function line='33' file='xmlreader' name='xmlTextReaderConstValue'/>
+      <function line='36' file='xmlreader' name='xmlTextReaderDepth'/>
+      <function line='69' file='xmlreader' name='xmlFreeTextReader'/>
+      <macro line='89' file='xmlversion' name='LIBXML_TEST_VERSION'/>
+      <function line='29' file='xmlreader' name='xmlTextReaderConstName'/>
+      <function line='40' file='xmlreader' name='xmlTextReaderHasValue'/>
+      <function line='67' file='xmlreader' name='xmlTextReaderRead'/>
+      <function line='39' file='xmlreader' name='xmlTextReaderIsEmptyElement'/>
+      <function line='62' file='xmlreader' name='xmlReaderForFile'/>
     </uses>
   </example>
-  <example filename='tree1.c'>
-    <synopsis>Navigates a tree to print element names</synopsis>
-    <purpose>Parse a file to a tree, use xmlDocGetRootElement() to get the root element, then walk the document and print all the element name in document order.</purpose>
-    <usage>tree1 filename_or_URL</usage>
-    <test>tree1 test2.xml &gt; tree1.tmp ; diff tree1.tmp tree1.res ; rm tree1.tmp</test>
-    <author>Dodji Seketeli</author>
+  <example filename='reader2.c'>
+    <synopsis>Parse and validate an XML file with an xmlReader</synopsis>
+    <purpose>Demonstrate the use of xmlReaderForFile() to parse an XML file validating the content in the process and activating options like entities substitution, and DTD attributes defaulting. (Note that the XMLReader functions require libxml2 version later than 2.6.)</purpose>
+    <usage>reader2 &lt;valid_xml_filename&gt;</usage>
+    <test>reader2 test2.xml &gt; reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp</test>
+    <author>Daniel Veillard</author>
     <copy>see Copyright for the status of this software. </copy>
-    <section>Tree</section>
+    <section>xmlReader</section>
     <includes>
-      <include>&lt;libxml/tree.h&gt;</include>
-      <include>&lt;libxml/parser.h&gt;</include>
+      <include>&lt;libxml/xmlreader.h&gt;</include>
     </includes>
     <uses>
-      <enum line='36' file='tree' name='XML_ELEMENT_NODE'/>
-      <function line='74' file='tree' name='xmlDocGetRootElement'/>
-      <function line='85' file='parser' name='xmlCleanupParser'/>
-      <macro line='67' file='xmlversion' name='LIBXML_TEST_VERSION'/>
-      <function line='79' file='tree' name='xmlFreeDoc'/>
-      <function line='67' file='parser' name='xmlReadFile'/>
+      <function line='45' file='xmlstring' name='xmlStrlen'/>
+      <function line='109' file='parser' name='xmlCleanupParser'/>
+      <function line='38' file='xmlreader' name='xmlTextReaderNodeType'/>
+      <typedef line='60' file='xmlreader' name='xmlTextReaderPtr'/>
+      <function line='113' file='xmlmemory' name='xmlMemoryDump'/>
+      <function line='34' file='xmlreader' name='xmlTextReaderConstValue'/>
+      <enum line='70' file='parser' name='XML_PARSE_NOENT'/>
+      <function line='37' file='xmlreader' name='xmlTextReaderDepth'/>
+      <enum line='71' file='parser' name='XML_PARSE_DTDVALID'/>
+      <enum line='69' file='parser' name='XML_PARSE_DTDATTR'/>
+      <function line='84' file='xmlreader' name='xmlFreeTextReader'/>
+      <macro line='104' file='xmlversion' name='LIBXML_TEST_VERSION'/>
+      <function line='30' file='xmlreader' name='xmlTextReaderConstName'/>
+      <function line='41' file='xmlreader' name='xmlTextReaderHasValue'/>
+      <function line='76' file='xmlreader' name='xmlTextReaderRead'/>
+      <function line='40' file='xmlreader' name='xmlTextReaderIsEmptyElement'/>
+      <function line='68' file='xmlreader' name='xmlReaderForFile'/>
+      <function line='81' file='xmlreader' name='xmlTextReaderIsValid'/>
     </uses>
   </example>
-  <example filename='tree2.c'>
-    <synopsis>Creates a tree</synopsis>
-    <purpose>Shows how to create document, nodes and dump it to stdout or file.</purpose>
-    <usage>tree2 &lt;filename&gt;  -Default output: stdout</usage>
-    <test>tree2 &gt; tree2.tmp ; diff tree2.tmp tree2.res ; rm tree2.tmp</test>
-    <author>Lucas Brasilino &lt;brasilino at recife.pe.gov.br&gt;</author>
-    <copy>see Copyright for the status of this software </copy>
-    <section>Tree</section>
+  <example filename='reader4.c'>
+    <synopsis>Parse multiple XML files reusing an xmlReader</synopsis>
+    <purpose>Demonstrate the use of xmlReaderForFile() and xmlReaderNewFile to parse XML files while reusing the reader object and parser context.  (Note that the XMLReader functions require libxml2 version later than 2.6.)</purpose>
+    <usage>reader4 &lt;filename&gt; [ filename ... ]</usage>
+    <test>reader4 test1.xml test2.xml test3.xml &gt; reader4.tmp ; diff reader4.tmp reader4.res ; rm reader4.tmp</test>
+    <author>Graham Bennett</author>
+    <copy>see Copyright for the status of this software. </copy>
+    <section>xmlReader</section>
     <includes>
-      <include>&lt;libxml/tree.h&gt;</include>
-      <include>&lt;libxml/parser.h&gt;</include>
+      <include>&lt;libxml/xmlreader.h&gt;</include>
     </includes>
     <uses>
-      <function line='75' file='tree' name='xmlNewText'/>
-      <function line='110' file='xmlmemory' name='xmlMemoryDump'/>
-      <function line='96' file='tree' name='xmlSaveFormatFileEnc'/>
-      <function line='78' file='tree' name='xmlAddChild'/>
-      <function line='41' file='tree' name='xmlDocSetRootElement'/>
-      <function line='105' file='parser' name='xmlCleanupParser'/>
-      <macro line='34' file='xmlversion' name='LIBXML_TEST_VERSION'/>
-      <function line='89' file='tree' name='xmlNewProp'/>
-      <function line='88' file='tree' name='xmlNewChild'/>
-      <function line='74' file='tree' name='xmlNewNode'/>
-      <function line='46' file='tree' name='xmlCreateIntSubset'/>
       <function line='99' file='tree' name='xmlFreeDoc'/>
-      <function line='39' file='tree' name='xmlNewDoc'/>
+      <typedef line='54' file='xmlreader' name='xmlTextReaderPtr'/>
+      <function line='109' file='parser' name='xmlCleanupParser'/>
+      <function line='113' file='xmlmemory' name='xmlMemoryDump'/>
+      <function line='83' file='xmlreader' name='xmlReaderNewFile'/>
+      <function line='104' file='xmlreader' name='xmlFreeTextReader'/>
+      <macro line='72' file='xmlversion' name='LIBXML_TEST_VERSION'/>
+      <function line='26' file='xmlreader' name='xmlTextReaderRead'/>
+      <function line='97' file='xmlreader' name='xmlTextReaderCurrentDoc'/>
+      <function line='72' file='xmlreader' name='xmlReaderForFile'/>
+      <typedef line='56' file='tree' name='xmlDocPtr'/>
     </uses>
   </example>
   <example filename='testWriter.c'>
@@ -181,83 +182,6 @@
       <function line='885' file='tree' name='xmlNewDoc'/>
     </uses>
   </example>
-  <example filename='reader1.c'>
-    <synopsis>Parse an XML file with an xmlReader</synopsis>
-    <purpose>Demonstrate the use of xmlReaderForFile() to parse an XML file and dump the informations about the nodes found in the process. (Note that the XMLReader functions require libxml2 version later than 2.6.)</purpose>
-    <usage>reader1 &lt;filename&gt;</usage>
-    <test>reader1 test2.xml &gt; reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp</test>
-    <author>Daniel Veillard</author>
-    <copy>see Copyright for the status of this software. </copy>
-    <section>xmlReader</section>
-    <includes>
-      <include>&lt;libxml/xmlreader.h&gt;</include>
-    </includes>
-    <uses>
-      <function line='44' file='xmlstring' name='xmlStrlen'/>
-      <function line='37' file='xmlreader' name='xmlTextReaderNodeType'/>
-      <typedef line='59' file='xmlreader' name='xmlTextReaderPtr'/>
-      <function line='98' file='xmlmemory' name='xmlMemoryDump'/>
-      <function line='33' file='xmlreader' name='xmlTextReaderConstValue'/>
-      <function line='36' file='xmlreader' name='xmlTextReaderDepth'/>
-      <function line='69' file='xmlreader' name='xmlFreeTextReader'/>
-      <function line='29' file='xmlreader' name='xmlTextReaderConstName'/>
-      <function line='40' file='xmlreader' name='xmlTextReaderHasValue'/>
-      <function line='67' file='xmlreader' name='xmlTextReaderRead'/>
-      <function line='39' file='xmlreader' name='xmlTextReaderIsEmptyElement'/>
-      <function line='62' file='xmlreader' name='xmlReaderForFile'/>
-    </uses>
-  </example>
-  <example filename='reader2.c'>
-    <synopsis>Parse and validate an XML file with an xmlReader</synopsis>
-    <purpose>Demonstrate the use of xmlReaderForFile() to parse an XML file validating the content in the process and activating options like entities substitution, and DTD attributes defaulting. (Note that the XMLReader functions require libxml2 version later than 2.6.)</purpose>
-    <usage>reader2 &lt;valid_xml_filename&gt;</usage>
-    <test>reader2 test2.xml &gt; reader1.tmp ; diff reader1.tmp reader1.res ; rm reader1.tmp</test>
-    <author>Daniel Veillard</author>
-    <copy>see Copyright for the status of this software. </copy>
-    <section>xmlReader</section>
-    <includes>
-      <include>&lt;libxml/xmlreader.h&gt;</include>
-    </includes>
-    <uses>
-      <function line='45' file='xmlstring' name='xmlStrlen'/>
-      <function line='38' file='xmlreader' name='xmlTextReaderNodeType'/>
-      <typedef line='60' file='xmlreader' name='xmlTextReaderPtr'/>
-      <function line='34' file='xmlreader' name='xmlTextReaderConstValue'/>
-      <enum line='70' file='parser' name='XML_PARSE_NOENT'/>
-      <function line='37' file='xmlreader' name='xmlTextReaderDepth'/>
-      <enum line='71' file='parser' name='XML_PARSE_DTDVALID'/>
-      <enum line='69' file='parser' name='XML_PARSE_DTDATTR'/>
-      <function line='84' file='xmlreader' name='xmlFreeTextReader'/>
-      <function line='30' file='xmlreader' name='xmlTextReaderConstName'/>
-      <function line='41' file='xmlreader' name='xmlTextReaderHasValue'/>
-      <function line='76' file='xmlreader' name='xmlTextReaderRead'/>
-      <function line='40' file='xmlreader' name='xmlTextReaderIsEmptyElement'/>
-      <function line='68' file='xmlreader' name='xmlReaderForFile'/>
-      <function line='81' file='xmlreader' name='xmlTextReaderIsValid'/>
-    </uses>
-  </example>
-  <example filename='io1.c'>
-    <synopsis>Example of custom Input/Output</synopsis>
-    <purpose>Demonstrate the use of xmlRegisterInputCallbacks to build a custom I/O layer, this is used in an XInclude method context to show how dynamic document can be built in a clean way.</purpose>
-    <usage>io1</usage>
-    <test>io1 &gt; io1.tmp ; diff io1.tmp io1.res ; rm -f io1.tmp</test>
-    <author>Daniel Veillard</author>
-    <copy>see Copyright for the status of this software. </copy>
-    <section>InputOutput</section>
-    <includes>
-      <include>&lt;libxml/parser.h&gt;</include>
-      <include>&lt;libxml/xmlIO.h&gt;</include>
-      <include>&lt;libxml/xinclude.h&gt;</include>
-      <include>&lt;libxml/tree.h&gt;</include>
-    </includes>
-    <uses>
-      <function line='143' file='tree' name='xmlDocDump'/>
-      <function line='134' file='xinclude' name='xmlXIncludeProcess'/>
-      <function line='117' file='xmlIO' name='xmlRegisterInputCallbacks'/>
-      <function line='124' file='parser' name='xmlReadMemory'/>
-      <typedef line='105' file='tree' name='xmlDocPtr'/>
-    </uses>
-  </example>
   <example filename='parse3.c'>
     <synopsis>Parse an XML document in memory to a tree and free it</synopsis>
     <purpose>Demonstrate the use of xmlReadMemory() to read an XML file into a tree and and xmlFreeDoc() to free the resulting tree</purpose>
@@ -272,47 +196,54 @@
     </includes>
     <uses>
       <function line='33' file='parser' name='xmlReadMemory'/>
+      <function line='58' file='xmlmemory' name='xmlMemoryDump'/>
+      <function line='54' file='parser' name='xmlCleanupParser'/>
+      <macro line='49' file='xmlversion' name='LIBXML_TEST_VERSION'/>
+      <function line='38' file='tree' name='xmlFreeDoc'/>
       <typedef line='27' file='tree' name='xmlDocPtr'/>
     </uses>
   </example>
-  <example filename='parse4.c'>
-    <synopsis>Parse an XML document chunk by chunk to a tree and free it</synopsis>
-    <purpose>Demonstrate the use of xmlCreatePushParserCtxt() and xmlParseChunk() to read an XML file progressively into a tree and and xmlFreeDoc() to free the resulting tree</purpose>
-    <usage>parse4 test3.xml</usage>
-    <test>parse4 test3.xml</test>
-    <author>Daniel Veillard</author>
-    <copy>see Copyright for the status of this software. </copy>
-    <section>Parsing</section>
+  <example filename='tree2.c'>
+    <synopsis>Creates a tree</synopsis>
+    <purpose>Shows how to create document, nodes and dump it to stdout or file.</purpose>
+    <usage>tree2 &lt;filename&gt;  -Default output: stdout</usage>
+    <test>tree2 &gt; tree2.tmp ; diff tree2.tmp tree2.res ; rm tree2.tmp</test>
+    <author>Lucas Brasilino &lt;brasilino at recife.pe.gov.br&gt;</author>
+    <copy>see Copyright for the status of this software </copy>
+    <section>Tree</section>
     <includes>
       <include>&lt;libxml/tree.h&gt;</include>
       <include>&lt;libxml/parser.h&gt;</include>
     </includes>
     <uses>
-      <function line='94' file='parser' name='xmlFreeParserCtxt'/>
-      <function line='86' file='parser' name='xmlParseChunk'/>
-      <function line='67' file='parser' name='xmlCreatePushParserCtxt'/>
-      <typedef line='45' file='tree' name='xmlParserCtxtPtr'/>
+      <function line='75' file='tree' name='xmlNewText'/>
+      <function line='96' file='tree' name='xmlSaveFormatFileEnc'/>
+      <function line='78' file='tree' name='xmlAddChild'/>
+      <function line='41' file='tree' name='xmlDocSetRootElement'/>
+      <function line='89' file='tree' name='xmlNewProp'/>
+      <function line='88' file='tree' name='xmlNewChild'/>
+      <function line='74' file='tree' name='xmlNewNode'/>
+      <function line='46' file='tree' name='xmlCreateIntSubset'/>
+      <function line='99' file='tree' name='xmlFreeDoc'/>
+      <function line='39' file='tree' name='xmlNewDoc'/>
     </uses>
   </example>
-  <example filename='io2.c'>
-    <synopsis>Output to char buffer</synopsis>
-    <purpose>Demonstrate the use of xmlDocDumpMemory to output document to a character buffer</purpose>
-    <usage>io2</usage>
-    <test>io2 &gt; io2.tmp ; diff io2.tmp io2.res ; rm -f io2.tmp</test>
-    <author>John Fleck</author>
+  <example filename='tree1.c'>
+    <synopsis>Navigates a tree to print element names</synopsis>
+    <purpose>Parse a file to a tree, use xmlDocGetRootElement() to get the root element, then walk the document and print all the element name in document order.</purpose>
+    <usage>tree1 filename_or_URL</usage>
+    <test>tree1 test2.xml &gt; tree1.tmp ; diff tree1.tmp tree1.res ; rm tree1.tmp</test>
+    <author>Dodji Seketeli</author>
     <copy>see Copyright for the status of this software. </copy>
-    <section>InputOutput</section>
+    <section>Tree</section>
     <includes>
+      <include>&lt;libxml/tree.h&gt;</include>
       <include>&lt;libxml/parser.h&gt;</include>
     </includes>
     <uses>
-      <function line='29' file='tree' name='xmlNodeSetContent'/>
-      <function line='36' file='tree' name='xmlDocDumpFormatMemory'/>
-      <variable line='42' file='globals' name='xmlFree'/>
-      <function line='30' file='tree' name='xmlDocSetRootElement'/>
-      <typedef line='19' file='tree' name='xmlNodePtr'/>
-      <function line='27' file='tree' name='xmlNewDoc'/>
-      <function line='28' file='tree' name='xmlNewNode'/>
+      <enum line='36' file='tree' name='XML_ELEMENT_NODE'/>
+      <function line='74' file='tree' name='xmlDocGetRootElement'/>
+      <function line='67' file='parser' name='xmlReadFile'/>
     </uses>
   </example>
   <example filename='xpath2.c'>
@@ -341,75 +272,144 @@
       <function line='124' file='xpath' name='xmlXPathFreeContext'/>
       <function line='41' file='parser' name='xmlInitParser'/>
       <enum line='180' file='tree' name='XML_NAMESPACE_DECL'/>
+      <typedef line='86' file='tree' name='xmlDocPtr'/>
     </uses>
   </example>
-  <example filename='reader4.c'>
-    <synopsis>Parse multiple XML files reusing an xmlReader</synopsis>
-    <purpose>Demonstrate the use of xmlReaderForFile() and xmlReaderNewFile to parse XML files while reusing the reader object and parser context.  (Note that the XMLReader functions require libxml2 version later than 2.6.)</purpose>
-    <usage>reader4 &lt;filename&gt; [ filename ... ]</usage>
-    <test>reader4 test1.xml test2.xml test3.xml &gt; reader4.tmp ; diff reader4.tmp reader4.res ; rm reader4.tmp</test>
-    <author>Graham Bennett</author>
+  <example filename='parse1.c'>
+    <synopsis>Parse an XML file to a tree and free it</synopsis>
+    <purpose>Demonstrate the use of xmlReadFile() to read an XML file into a tree and and xmlFreeDoc() to free the resulting tree</purpose>
+    <usage>parse1 test1.xml</usage>
+    <test>parse1 test1.xml</test>
+    <author>Daniel Veillard</author>
     <copy>see Copyright for the status of this software. </copy>
-    <section>xmlReader</section>
+    <section>Parsing</section>
     <includes>
-      <include>&lt;libxml/xmlreader.h&gt;</include>
+      <include>&lt;libxml/tree.h&gt;</include>
+      <include>&lt;libxml/parser.h&gt;</include>
     </includes>
     <uses>
-      <typedef line='54' file='xmlreader' name='xmlTextReaderPtr'/>
-      <function line='83' file='xmlreader' name='xmlReaderNewFile'/>
-      <function line='104' file='xmlreader' name='xmlFreeTextReader'/>
-      <function line='26' file='xmlreader' name='xmlTextReaderRead'/>
-      <function line='97' file='xmlreader' name='xmlTextReaderCurrentDoc'/>
-      <function line='72' file='xmlreader' name='xmlReaderForFile'/>
+      <function line='26' file='parser' name='xmlReadFile'/>
     </uses>
   </example>
-  <example filename='reader3.c'>
-    <synopsis>Show how to extract subdocuments with xmlReader</synopsis>
-    <purpose>Demonstrate the use of xmlTextReaderPreservePattern() to parse an XML file with the xmlReader while collecting only some subparts of the document. (Note that the XMLReader functions require libxml2 version later than 2.6.)</purpose>
-    <usage>reader3</usage>
-    <test>reader3 &gt; reader3.tmp ; diff reader3.tmp reader3.res ; rm reader3.tmp</test>
+  <example filename='xpath1.c'>
+    <synopsis>Evaluate XPath expression and prints result node set.</synopsis>
+    <purpose>Shows how to evaluate XPath expression and register known namespaces in XPath context.</purpose>
+    <usage>xpath1 &lt;xml-file&gt; &lt;xpath-expr&gt; [&lt;known-ns-list&gt;]</usage>
+    <test>./xpath1 test3.xml &apos;//child2&apos; &gt; xpath1.tmp ; diff xpath1.tmp xpath1.res ; rm xpath1.tmp</test>
+    <author>Aleksey Sanin</author>
+    <copy>see Copyright for the status of this software. </copy>
+    <section>XPath</section>
+    <includes>
+      <include>&lt;libxml/parser.h&gt;</include>
+      <include>&lt;libxml/xpath.h&gt;</include>
+      <include>&lt;libxml/xpathInternals.h&gt;</include>
+      <include>&lt;libxml/tree.h&gt;</include>
+    </includes>
+    <uses>
+      <enum line='229' file='tree' name='XML_ELEMENT_NODE'/>
+      <typedef line='88' file='xpath' name='xmlXPathObjectPtr'/>
+      <function line='117' file='xpath' name='xmlXPathEvalExpression'/>
+      <function line='94' file='parser' name='xmlParseFile'/>
+      <function line='186' file='xpathInternals' name='xmlXPathRegisterNs'/>
+      <function line='129' file='xpath' name='xmlXPathFreeObject'/>
+      <variable line='193' file='globals' name='xmlFree'/>
+      <typedef line='218' file='tree' name='xmlNsPtr'/>
+      <function line='101' file='xpath' name='xmlXPathNewContext'/>
+      <typedef line='87' file='xpath' name='xmlXPathContextPtr'/>
+      <function line='130' file='xpath' name='xmlXPathFreeContext'/>
+      <function line='39' file='parser' name='xmlInitParser'/>
+      <function line='156' file='xmlstring' name='xmlStrdup'/>
+      <function line='180' file='xmlstring' name='xmlStrchr'/>
+      <typedef line='206' file='tree' name='xmlNodePtr'/>
+      <enum line='217' file='tree' name='XML_NAMESPACE_DECL'/>
+    </uses>
+  </example>
+  <example filename='io1.c'>
+    <synopsis>Example of custom Input/Output</synopsis>
+    <purpose>Demonstrate the use of xmlRegisterInputCallbacks to build a custom I/O layer, this is used in an XInclude method context to show how dynamic document can be built in a clean way.</purpose>
+    <usage>io1</usage>
+    <test>io1 &gt; io1.tmp ; diff io1.tmp io1.res ; rm -f io1.tmp</test>
     <author>Daniel Veillard</author>
     <copy>see Copyright for the status of this software. </copy>
-    <section>xmlReader</section>
+    <section>InputOutput</section>
     <includes>
-      <include>&lt;libxml/xmlreader.h&gt;</include>
+      <include>&lt;libxml/parser.h&gt;</include>
+      <include>&lt;libxml/xmlIO.h&gt;</include>
+      <include>&lt;libxml/xinclude.h&gt;</include>
+      <include>&lt;libxml/tree.h&gt;</include>
     </includes>
     <uses>
-      <typedef line='31' file='xmlreader' name='xmlTextReaderPtr'/>
-      <function line='65' file='xmlreader' name='xmlFreeTextReader'/>
-      <function line='95' file='tree' name='xmlDocDump'/>
-      <function line='51' file='xmlreader' name='xmlTextReaderRead'/>
-      <function line='61' file='xmlreader' name='xmlTextReaderCurrentDoc'/>
-      <function line='42' file='xmlreader' name='xmlTextReaderPreservePattern'/>
-      <function line='37' file='xmlreader' name='xmlReaderForFile'/>
+      <function line='143' file='tree' name='xmlDocDump'/>
+      <function line='134' file='xinclude' name='xmlXIncludeProcess'/>
+      <function line='117' file='xmlIO' name='xmlRegisterInputCallbacks'/>
+      <function line='124' file='parser' name='xmlReadMemory'/>
     </uses>
   </example>
+  <example filename='parse4.c'>
+    <synopsis>Parse an XML document chunk by chunk to a tree and free it</synopsis>
+    <purpose>Demonstrate the use of xmlCreatePushParserCtxt() and xmlParseChunk() to read an XML file progressively into a tree and and xmlFreeDoc() to free the resulting tree</purpose>
+    <usage>parse4 test3.xml</usage>
+    <test>parse4 test3.xml</test>
+    <author>Daniel Veillard</author>
+    <copy>see Copyright for the status of this software. </copy>
+    <section>Parsing</section>
+    <includes>
+      <include>&lt;libxml/tree.h&gt;</include>
+      <include>&lt;libxml/parser.h&gt;</include>
+    </includes>
+    <uses>
+      <function line='94' file='parser' name='xmlFreeParserCtxt'/>
+      <function line='86' file='parser' name='xmlParseChunk'/>
+      <function line='67' file='parser' name='xmlCreatePushParserCtxt'/>
+      <typedef line='45' file='tree' name='xmlParserCtxtPtr'/>
+    </uses>
+  </example>
+  <example filename='parse2.c'>
+    <synopsis>Parse and validate an XML file to a tree and free the result</synopsis>
+    <purpose>Create a parser context for an XML file, then parse and validate the file, creating a tree, check the validation result and xmlFreeDoc() to free the resulting tree.</purpose>
+    <usage>parse2 test2.xml</usage>
+    <test>parse2 test2.xml</test>
+    <author>Daniel Veillard</author>
+    <copy>see Copyright for the status of this software. </copy>
+    <section>Parsing</section>
+    <includes>
+      <include>&lt;libxml/tree.h&gt;</include>
+      <include>&lt;libxml/parser.h&gt;</include>
+    </includes>
+    <uses>
+      <function line='47' file='parser' name='xmlFreeParserCtxt'/>
+      <enum line='35' file='parser' name='XML_PARSE_DTDVALID'/>
+      <function line='29' file='parser' name='xmlNewParserCtxt'/>
+      <typedef line='25' file='tree' name='xmlParserCtxtPtr'/>
+      <function line='35' file='parser' name='xmlCtxtReadFile'/>
+    </uses>
+  </example>
   <symbols>
     <symbol name='LIBXML_TEST_VERSION'>
-      <ref filename='xpath1.c'/>
-      <ref filename='parse1.c'/>
-      <ref filename='parse2.c'/>
-      <ref filename='tree1.c'/>
-      <ref filename='tree2.c'/>
+      <ref filename='reader3.c'/>
+      <ref filename='reader1.c'/>
+      <ref filename='reader2.c'/>
+      <ref filename='reader4.c'/>
       <ref filename='testWriter.c'/>
+      <ref filename='parse3.c'/>
     </symbol>
     <symbol name='XML_DEFAULT_VERSION'>
       <ref filename='testWriter.c'/>
     </symbol>
     <symbol name='XML_ELEMENT_NODE'>
+      <ref filename='tree1.c'/>
       <ref filename='xpath1.c'/>
-      <ref filename='tree1.c'/>
     </symbol>
     <symbol name='XML_NAMESPACE_DECL'>
+      <ref filename='xpath2.c'/>
       <ref filename='xpath1.c'/>
-      <ref filename='xpath2.c'/>
     </symbol>
     <symbol name='XML_PARSE_DTDATTR'>
       <ref filename='reader2.c'/>
     </symbol>
     <symbol name='XML_PARSE_DTDVALID'>
+      <ref filename='reader2.c'/>
       <ref filename='parse2.c'/>
-      <ref filename='reader2.c'/>
     </symbol>
     <symbol name='XML_PARSE_NOENT'>
       <ref filename='reader2.c'/>
@@ -430,12 +430,12 @@
       <ref filename='testWriter.c'/>
     </symbol>
     <symbol name='xmlCleanupParser'>
-      <ref filename='xpath1.c'/>
-      <ref filename='parse1.c'/>
-      <ref filename='parse2.c'/>
-      <ref filename='tree1.c'/>
-      <ref filename='tree2.c'/>
+      <ref filename='reader3.c'/>
+      <ref filename='reader1.c'/>
+      <ref filename='reader2.c'/>
+      <ref filename='reader4.c'/>
       <ref filename='testWriter.c'/>
+      <ref filename='parse3.c'/>
     </symbol>
     <symbol name='xmlCreateIntSubset'>
       <ref filename='tree2.c'/>
@@ -447,9 +447,9 @@
       <ref filename='parse2.c'/>
     </symbol>
     <symbol name='xmlDocDump'>
+      <ref filename='reader3.c'/>
+      <ref filename='xpath2.c'/>
       <ref filename='io1.c'/>
-      <ref filename='xpath2.c'/>
-      <ref filename='reader3.c'/>
     </symbol>
     <symbol name='xmlDocDumpFormatMemory'>
       <ref filename='io2.c'/>
@@ -458,76 +458,76 @@
       <ref filename='tree1.c'/>
     </symbol>
     <symbol name='xmlDocPtr'>
-      <ref filename='xpath1.c'/>
-      <ref filename='parse1.c'/>
-      <ref filename='parse2.c'/>
+      <ref filename='reader3.c'/>
+      <ref filename='io2.c'/>
+      <ref filename='reader4.c'/>
       <ref filename='testWriter.c'/>
-      <ref filename='io1.c'/>
       <ref filename='parse3.c'/>
+      <ref filename='xpath2.c'/>
     </symbol>
     <symbol name='xmlDocSetRootElement'>
+      <ref filename='io2.c'/>
+      <ref filename='testWriter.c'/>
       <ref filename='tree2.c'/>
-      <ref filename='testWriter.c'/>
-      <ref filename='io2.c'/>
     </symbol>
     <symbol name='xmlFindCharEncodingHandler'>
       <ref filename='testWriter.c'/>
     </symbol>
     <symbol name='xmlFree'>
+      <ref filename='io2.c'/>
+      <ref filename='testWriter.c'/>
       <ref filename='xpath1.c'/>
-      <ref filename='testWriter.c'/>
-      <ref filename='io2.c'/>
     </symbol>
     <symbol name='xmlFreeDoc'>
-      <ref filename='xpath1.c'/>
-      <ref filename='parse1.c'/>
-      <ref filename='parse2.c'/>
-      <ref filename='tree1.c'/>
+      <ref filename='reader3.c'/>
+      <ref filename='io2.c'/>
+      <ref filename='reader4.c'/>
+      <ref filename='testWriter.c'/>
+      <ref filename='parse3.c'/>
       <ref filename='tree2.c'/>
-      <ref filename='testWriter.c'/>
     </symbol>
     <symbol name='xmlFreeParserCtxt'>
+      <ref filename='parse4.c'/>
       <ref filename='parse2.c'/>
-      <ref filename='parse4.c'/>
     </symbol>
     <symbol name='xmlFreeTextReader'>
+      <ref filename='reader3.c'/>
       <ref filename='reader1.c'/>
       <ref filename='reader2.c'/>
       <ref filename='reader4.c'/>
-      <ref filename='reader3.c'/>
     </symbol>
     <symbol name='xmlFreeTextWriter'>
       <ref filename='testWriter.c'/>
     </symbol>
     <symbol name='xmlInitParser'>
+      <ref filename='xpath2.c'/>
       <ref filename='xpath1.c'/>
-      <ref filename='xpath2.c'/>
     </symbol>
     <symbol name='xmlMalloc'>
       <ref filename='testWriter.c'/>
     </symbol>
     <symbol name='xmlMemoryDump'>
-      <ref filename='xpath1.c'/>
-      <ref filename='parse1.c'/>
-      <ref filename='parse2.c'/>
-      <ref filename='tree2.c'/>
+      <ref filename='reader3.c'/>
+      <ref filename='reader1.c'/>
+      <ref filename='reader2.c'/>
+      <ref filename='reader4.c'/>
       <ref filename='testWriter.c'/>
-      <ref filename='reader1.c'/>
+      <ref filename='parse3.c'/>
     </symbol>
     <symbol name='xmlNewChild'>
       <ref filename='tree2.c'/>
     </symbol>
     <symbol name='xmlNewDoc'>
+      <ref filename='io2.c'/>
+      <ref filename='testWriter.c'/>
       <ref filename='tree2.c'/>
-      <ref filename='testWriter.c'/>
-      <ref filename='io2.c'/>
     </symbol>
     <symbol name='xmlNewDocNode'>
       <ref filename='testWriter.c'/>
     </symbol>
     <symbol name='xmlNewNode'>
+      <ref filename='io2.c'/>
       <ref filename='tree2.c'/>
-      <ref filename='io2.c'/>
     </symbol>
     <symbol name='xmlNewParserCtxt'>
       <ref filename='parse2.c'/>
@@ -551,9 +551,9 @@
       <ref filename='testWriter.c'/>
     </symbol>
     <symbol name='xmlNodePtr'>
+      <ref filename='io2.c'/>
+      <ref filename='testWriter.c'/>
       <ref filename='xpath1.c'/>
-      <ref filename='testWriter.c'/>
-      <ref filename='io2.c'/>
     </symbol>
     <symbol name='xmlNodeSetContent'>
       <ref filename='io2.c'/>
@@ -566,26 +566,26 @@
       <ref filename='parse4.c'/>
     </symbol>
     <symbol name='xmlParseFile'>
+      <ref filename='xpath2.c'/>
       <ref filename='xpath1.c'/>
-      <ref filename='xpath2.c'/>
     </symbol>
     <symbol name='xmlParserCtxtPtr'>
+      <ref filename='parse4.c'/>
       <ref filename='parse2.c'/>
-      <ref filename='parse4.c'/>
     </symbol>
     <symbol name='xmlReadFile'>
+      <ref filename='tree1.c'/>
       <ref filename='parse1.c'/>
-      <ref filename='tree1.c'/>
     </symbol>
     <symbol name='xmlReadMemory'>
+      <ref filename='parse3.c'/>
       <ref filename='io1.c'/>
-      <ref filename='parse3.c'/>
     </symbol>
     <symbol name='xmlReaderForFile'>
+      <ref filename='reader3.c'/>
       <ref filename='reader1.c'/>
       <ref filename='reader2.c'/>
       <ref filename='reader4.c'/>
-      <ref filename='reader3.c'/>
     </symbol>
     <symbol name='xmlReaderNewFile'>
       <ref filename='reader4.c'/>
@@ -621,8 +621,8 @@
       <ref filename='reader2.c'/>
     </symbol>
     <symbol name='xmlTextReaderCurrentDoc'>
+      <ref filename='reader3.c'/>
       <ref filename='reader4.c'/>
-      <ref filename='reader3.c'/>
     </symbol>
     <symbol name='xmlTextReaderDepth'>
       <ref filename='reader1.c'/>
@@ -647,16 +647,16 @@
       <ref filename='reader3.c'/>
     </symbol>
     <symbol name='xmlTextReaderPtr'>
+      <ref filename='reader3.c'/>
       <ref filename='reader1.c'/>
       <ref filename='reader2.c'/>
       <ref filename='reader4.c'/>
-      <ref filename='reader3.c'/>
     </symbol>
     <symbol name='xmlTextReaderRead'>
+      <ref filename='reader3.c'/>
       <ref filename='reader1.c'/>
       <ref filename='reader2.c'/>
       <ref filename='reader4.c'/>
-      <ref filename='reader3.c'/>
     </symbol>
     <symbol name='xmlTextWriterEndDocument'>
       <ref filename='testWriter.c'/>
@@ -692,28 +692,28 @@
       <ref filename='io1.c'/>
     </symbol>
     <symbol name='xmlXPathContextPtr'>
+      <ref filename='xpath2.c'/>
       <ref filename='xpath1.c'/>
-      <ref filename='xpath2.c'/>
     </symbol>
     <symbol name='xmlXPathEvalExpression'>
+      <ref filename='xpath2.c'/>
       <ref filename='xpath1.c'/>
-      <ref filename='xpath2.c'/>
     </symbol>
     <symbol name='xmlXPathFreeContext'>
+      <ref filename='xpath2.c'/>
       <ref filename='xpath1.c'/>
-      <ref filename='xpath2.c'/>
     </symbol>
     <symbol name='xmlXPathFreeObject'>
+      <ref filename='xpath2.c'/>
       <ref filename='xpath1.c'/>
-      <ref filename='xpath2.c'/>
     </symbol>
     <symbol name='xmlXPathNewContext'>
+      <ref filename='xpath2.c'/>
       <ref filename='xpath1.c'/>
-      <ref filename='xpath2.c'/>
     </symbol>
     <symbol name='xmlXPathObjectPtr'>
+      <ref filename='xpath2.c'/>
       <ref filename='xpath1.c'/>
-      <ref filename='xpath2.c'/>
     </symbol>
     <symbol name='xmlXPathRegisterNs'>
       <ref filename='xpath1.c'/>
@@ -721,28 +721,28 @@
   </symbols>
   <sections>
     <section name='InputOutput'>
+      <example filename='io2.c'/>
       <example filename='io1.c'/>
-      <example filename='io2.c'/>
     </section>
     <section name='Parsing'>
+      <example filename='parse3.c'/>
       <example filename='parse1.c'/>
+      <example filename='parse4.c'/>
       <example filename='parse2.c'/>
-      <example filename='parse3.c'/>
-      <example filename='parse4.c'/>
     </section>
     <section name='Tree'>
+      <example filename='tree2.c'/>
       <example filename='tree1.c'/>
-      <example filename='tree2.c'/>
     </section>
     <section name='XPath'>
+      <example filename='xpath2.c'/>
       <example filename='xpath1.c'/>
-      <example filename='xpath2.c'/>
     </section>
     <section name='xmlReader'>
+      <example filename='reader3.c'/>
       <example filename='reader1.c'/>
       <example filename='reader2.c'/>
       <example filename='reader4.c'/>
-      <example filename='reader3.c'/>
     </section>
     <section name='xmlWriter'>
       <example filename='testWriter.c'/>

Modified: packages/libxml2/branches/upstream/current/doc/html/libxml-parser.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/html/libxml-parser.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/html/libxml-parser.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -145,7 +145,7 @@
 <pre class="programlisting">int	<a href="#xmlParseChunk">xmlParseChunk</a>			(<a href="libxml-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt, <br />					 const char * chunk, <br />					 int size, <br />					 int terminate)</pre>
 <pre class="programlisting">int	<a href="#xmlParseCtxtExternalEntity">xmlParseCtxtExternalEntity</a>	(<a href="libxml-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctx, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * URL, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * ID, <br />					 <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> * lst)</pre>
 <pre class="programlisting"><a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a>	<a href="#xmlParseDTD">xmlParseDTD</a>		(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * SystemID)</pre>
-<pre class="programlisting"><a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlParseDoc">xmlParseDoc</a>		(<a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * cur)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlParseDoc">xmlParseDoc</a>		(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * cur)</pre>
 <pre class="programlisting">int	<a href="#xmlParseDocument">xmlParseDocument</a>		(<a href="libxml-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)</pre>
 <pre class="programlisting"><a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlParseEntity">xmlParseEntity</a>		(const char * filename)</pre>
 <pre class="programlisting">int	<a href="#xmlParseExtParsedEnt">xmlParseExtParsedEnt</a>		(<a href="libxml-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)</pre>
@@ -171,7 +171,7 @@
 <pre class="programlisting"><a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlRecoverFile">xmlRecoverFile</a>		(const char * filename)</pre>
 <pre class="programlisting"><a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlRecoverMemory">xmlRecoverMemory</a>	(const char * buffer, <br />					 int size)</pre>
 <pre class="programlisting"><a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a>	<a href="#xmlSAXParseDTD">xmlSAXParseDTD</a>		(<a href="libxml-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * SystemID)</pre>
-<pre class="programlisting"><a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlSAXParseDoc">xmlSAXParseDoc</a>		(<a href="libxml-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br />					 <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * cur, <br />					 int recovery)</pre>
+<pre class="programlisting"><a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlSAXParseDoc">xmlSAXParseDoc</a>		(<a href="libxml-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * cur, <br />					 int recovery)</pre>
 <pre class="programlisting"><a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlSAXParseEntity">xmlSAXParseEntity</a>	(<a href="libxml-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br />					 const char * filename)</pre>
 <pre class="programlisting"><a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlSAXParseFile">xmlSAXParseFile</a>		(<a href="libxml-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br />					 const char * filename, <br />					 int recovery)</pre>
 <pre class="programlisting"><a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a>	<a href="#xmlSAXParseFileWithData">xmlSAXParseFileWithData</a>	(<a href="libxml-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br />					 const char * filename, <br />					 int recovery, <br />					 void * data)</pre>
@@ -434,7 +434,7 @@
 </pre><p>Parse an external general entity within an existing parsing context An external general parsed entity is well-formed if it matches the production labeled extParsedEnt. [78] extParsedEnt ::= TextDecl? content</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td>the existing parsing context</td></tr><tr><td><span class="term"><i><tt>URL</tt></i>:</span></td><td>the URL for the entity to load</td></tr><tr><td><span class="term"><i><tt>ID</tt></i>:</span></td><td>the System ID for the entity to load</td></tr><tr><td><span class="term"><i><tt>lst</tt></i>:</span></td><td>the return value for the set of parsed nodes</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the entity is well formed, -1 in case of args problem and the parser error code otherwise</td></tr></tbody></table></div><h3><a name="xmlParseDTD" id="xmlParseDTD"></a>Function: xmlParseDTD</h3><pre class="programlisting"><a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a>	xmlParseDTD		(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * SystemID)<br />
 </pre><p>Load and parse an external subset.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ExternalID</tt></i>:</span></td><td>a NAME* containing the External ID of the DTD</td></tr><tr><td><span class="term"><i><tt>SystemID</tt></i>:</span></td><td>a NAME* containing the URL to the DTD</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the resulting <a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlParseDoc" id="xmlParseDoc"></a>Function: xmlParseDoc</h3><pre class="programlisting"><a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlParseDoc		(<a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * cur)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>ExternalID</tt></i>:</span></td><td>a NAME* containing the External ID of the DTD</td></tr><tr><td><span class="term"><i><tt>SystemID</tt></i>:</span></td><td>a NAME* containing the URL to the DTD</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the resulting <a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlParseDoc" id="xmlParseDoc"></a>Function: xmlParseDoc</h3><pre class="programlisting"><a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlParseDoc		(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * cur)<br />
 </pre><p>parse an XML in-memory document and build a tree.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>a pointer to an array of <a href="libxml-xmlstring.html#xmlChar">xmlChar</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the resulting document tree</td></tr></tbody></table></div><h3><a name="xmlParseDocument" id="xmlParseDocument"></a>Function: xmlParseDocument</h3><pre class="programlisting">int	xmlParseDocument		(<a href="libxml-tree.html#xmlParserCtxtPtr">xmlParserCtxtPtr</a> ctxt)<br />
 </pre><p>parse an XML document (and build a tree if using the standard SAX interface). [1] document ::= prolog element Misc* [22] prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?</p>
@@ -483,7 +483,7 @@
 </pre><p>parse an XML in-memory block and build a tree. In the case the document is not Well Formed, a tree is built anyway</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>buffer</tt></i>:</span></td><td>an pointer to a char array</td></tr><tr><td><span class="term"><i><tt>size</tt></i>:</span></td><td>the size of the array</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the resulting document tree</td></tr></tbody></table></div><h3><a name="xmlSAXParseDTD" id="xmlSAXParseDTD"></a>Function: xmlSAXParseDTD</h3><pre class="programlisting"><a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a>	xmlSAXParseDTD		(<a href="libxml-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * ExternalID, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * SystemID)<br />
 </pre><p>Load and parse an external subset.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>sax</tt></i>:</span></td><td>the SAX handler block</td></tr><tr><td><span class="term"><i><tt>ExternalID</tt></i>:</span></td><td>a NAME* containing the External ID of the DTD</td></tr><tr><td><span class="term"><i><tt>SystemID</tt></i>:</span></td><td>a NAME* containing the URL to the DTD</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the resulting <a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlSAXParseDoc" id="xmlSAXParseDoc"></a>Function: xmlSAXParseDoc</h3><pre class="programlisting"><a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlSAXParseDoc		(<a href="libxml-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br />					 <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * cur, <br />					 int recovery)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>sax</tt></i>:</span></td><td>the SAX handler block</td></tr><tr><td><span class="term"><i><tt>ExternalID</tt></i>:</span></td><td>a NAME* containing the External ID of the DTD</td></tr><tr><td><span class="term"><i><tt>SystemID</tt></i>:</span></td><td>a NAME* containing the URL to the DTD</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the resulting <a href="libxml-tree.html#xmlDtdPtr">xmlDtdPtr</a> or NULL in case of error.</td></tr></tbody></table></div><h3><a name="xmlSAXParseDoc" id="xmlSAXParseDoc"></a>Function: xmlSAXParseDoc</h3><pre class="programlisting"><a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlSAXParseDoc		(<a href="libxml-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * cur, <br />					 int recovery)<br />
 </pre><p>parse an XML in-memory document and build a tree. It use the given SAX function block to handle the parsing callback. If sax is NULL, fallback to the default DOM tree building routines.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>sax</tt></i>:</span></td><td>the SAX handler block</td></tr><tr><td><span class="term"><i><tt>cur</tt></i>:</span></td><td>a pointer to an array of <a href="libxml-xmlstring.html#xmlChar">xmlChar</a></td></tr><tr><td><span class="term"><i><tt>recovery</tt></i>:</span></td><td>work in recovery mode, i.e. tries to read no Well Formed documents</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the resulting document tree</td></tr></tbody></table></div><h3><a name="xmlSAXParseEntity" id="xmlSAXParseEntity"></a>Function: xmlSAXParseEntity</h3><pre class="programlisting"><a href="libxml-tree.html#xmlDocPtr">xmlDocPtr</a>	xmlSAXParseEntity	(<a href="libxml-tree.html#xmlSAXHandlerPtr">xmlSAXHandlerPtr</a> sax, <br />					 const char * filename)<br />
 </pre><p>parse an XML external entity out of context and build a tree. It use the given SAX function block to handle the parsing callback. If sax is NULL, fallback to the default DOM tree building routines. [78] extParsedEnt ::= TextDecl? content This correspond to a "Well Balanced" chunk</p>

Modified: packages/libxml2/branches/upstream/current/doc/html/libxml-schemasInternals.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/html/libxml-schemasInternals.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/html/libxml-schemasInternals.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -10,7 +10,7 @@
 </style><style type="text/css">
       div.deprecated pre.programlisting {border-style: double;border-color:red}
       pre.programlisting {border-style: double;background: #EECFA1}
-    </style><title>Module schemasInternals 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 schemasInternals 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-relaxng.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-relaxng.html">relaxng</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-threads.html">threads</a></th><td><a accesskey="n" href="libxml-threads.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>internal interfaces for the XML Schemas handling and schema validity checking </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANYATTR_LAX">XML_SCHEMAS_ANYATTR_LAX</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANYATTR_SKIP">XML_SCHEMAS_ANYATTR_SKIP</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANYATTR_STRICT">XML_SCHEMAS_ANYATTR_STRICT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANY_LAX">XML_SCHEMAS_ANY_LAX</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANY_SKIP">XML_SCHEMAS_ANY_SKIP</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANY_STRICT">XML_SCHEMAS_ANY_STRICT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTRGROUP_GLOBAL">XML_SCHEMAS_ATTRGROUP_GLOBAL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTRGROUP_MARKED">XML_SCHEMAS_ATTRGROUP_MARKED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED">XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_FIXED">XML_SCHEMAS_ATTR_FIXED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_GLOBAL">XML_SCHEMAS_ATTR_GLOBAL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_INTERNAL_RESOLVED">XML_SCHEMAS_ATTR_INTERNAL_RESOLVED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_NSDEFAULT">XML_SCHEMAS_ATTR_NSDEFAULT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_USE_OPTIONAL">XML_SCHEMAS_ATTR_USE_OPTIONAL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_USE_PROHIBITED">XML_SCHEMAS_ATTR_USE_PROHIBITED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_USE_REQUIRED">XML_SCHEMAS_ATTR_USE_REQUIRED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION">XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION">XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION">XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_ABSTRACT">XML_SCHEMAS_ELEM_ABSTRACT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_BLOCK_ABSENT">XML_SCHEMAS_ELEM_BLOCK_ABSENT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_BLOCK_EXTENSION">XML_SCHEMAS_ELEM_BLOCK_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_BLOCK_RESTRICTION">XML_SCHEMAS_ELEM_BLOCK_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION">XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_CIRCULAR">XML_SCHEMAS_ELEM_CIRCULAR</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_DEFAULT">XML_SCHEMAS_ELEM_DEFAULT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_FINAL_ABSENT">XML_SCHEMAS_ELEM_FINAL_ABSENT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_FINAL_EXTENSION">XML_SCHEMAS_ELEM_FINAL_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_FINAL_RESTRICTION">XML_SCHEMAS_ELEM_FINAL_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_FIXED">XML_SCHEMAS_ELEM_FIXED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_GLOBAL">XML_SCHEMAS_ELEM_GLOBAL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_INTERNAL_RESOLVED">XML_SCHEMAS_ELEM_INTERNAL_RESOLVED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_NILLABLE">XML_SCHEMAS_ELEM_NILLABLE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_NSDEFAULT">XML_SCHEMAS_ELEM_NSDEFAULT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_REF">XML_SCHEMAS_ELEM_REF</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_TOPLEVEL">XML_SCHEMAS_ELEM_TOPLEVEL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FACET_COLLAPSE">XML_SCHEMAS_FACET_COLLAPSE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FACET_PRESERVE">XML_SCHEMAS_FACET_PRESERVE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FACET_REPLACE">XML_SCHEMAS_FACET_REPLACE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FACET_UNKNOWN">XML_SCHEMAS_FACET_UNKNOWN</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_EXTENSION">XML_SCHEMAS_FINAL_DEFAULT_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_LIST">XML_SCHEMAS_FINAL_DEFAULT_LIST</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION">XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_UNION">XML_SCHEMAS_FINAL_DEFAULT_UNION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_INCLUDING_CONVERT_NS">XML_SCHEMAS_INCLUDING_CONVERT_NS</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_QUALIF_ATTR">XML_SCHEMAS_QUALIF_ATTR</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_QUALIF_ELEM">XML_SCHEMAS_QUALIF_ELEM</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_ABSTRACT">XML_SCHEMAS_TYPE_ABSTRACT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_BLOCK_DEFAULT">XML_SCHEMAS_TYPE_BLOCK_DEFAULT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_BLOCK_EXTENSION">XML_SCHEMAS_TYPE_BLOCK_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_BLOCK_RESTRICTION">XML_SCHEMAS_TYPE_BLOCK_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE">XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION">XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION">XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FACETSNEEDVALUE">XML_SCHEMAS_TYPE_FACETSNEEDVALUE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_DEFAULT">XML_SCHEMAS_TYPE_FINAL_DEFAULT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_EXTENSION">XML_SCHEMAS_TYPE_FINAL_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_LIST">XML_SCHEMAS_TYPE_FINAL_LIST</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_RESTRICTION">XML_SCHEMAS_TYPE_FINAL_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_UNION">XML_SCHEMAS_TYPE_FINAL_UNION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_GLOBAL">XML_SCHEMAS_TYPE_GLOBAL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_MARKED">XML_SCHEMAS_TYPE_MARKED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_MIXED">XML_SCHEMAS_TYPE_MIXED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD">XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_VARIETY_ABSENT">XML_SCHEMAS_TYPE_VARIETY_ABSENT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_VARIETY_ATOMIC">XML_SCHEMAS_TYPE_VARIETY_ATOMIC</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_VARIETY_LIST">XML_SCHEMAS_TYPE_VARIETY_LIST</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_VARIETY_UNION">XML_SCHEMAS_TYPE_VARIETY_UNION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_WILDCARD_COMPLETE">XML_SCHEMAS_WILDCARD_COMPLETE</a></pre><pre class="programlisting">Structure <a href="#xmlSchemaAnnot">xmlSchemaAnnot</a><br />struct _xmlSchemaAnnot
+    </style><title>Module schemasInternals 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 schemasInternals 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-relaxng.html"><img src="left.png" width="24" height="24" border="0" alt="Prev" /></a></td><th align="left"><a href="libxml-relaxng.html">relaxng</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-threads.html">threads</a></th><td><a accesskey="n" href="libxml-threads.html"><img src="right.png" width="24" height="24" border="0" alt="Next" /></a></td></tr></table><p>internal interfaces for the XML Schemas handling and schema validity checking </p><h2>Table of Contents</h2><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANYATTR_LAX">XML_SCHEMAS_ANYATTR_LAX</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANYATTR_SKIP">XML_SCHEMAS_ANYATTR_SKIP</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANYATTR_STRICT">XML_SCHEMAS_ANYATTR_STRICT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANY_LAX">XML_SCHEMAS_ANY_LAX</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANY_SKIP">XML_SCHEMAS_ANY_SKIP</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ANY_STRICT">XML_SCHEMAS_ANY_STRICT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTRGROUP_GLOBAL">XML_SCHEMAS_ATTRGROUP_GLOBAL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTRGROUP_MARKED">XML_SCHEMAS_ATTRGROUP_MARKED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED">XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_FIXED">XML_SCHEMAS_ATTR_FIXED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_GLOBAL">XML_SCHEMAS_ATTR_GLOBAL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_INTERNAL_RESOLVED">XML_SCHEMAS_ATTR_INTERNAL_RESOLVED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_NSDEFAULT">XML_SCHEMAS_ATTR_NSDEFAULT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_USE_OPTIONAL">XML_SCHEMAS_ATTR_USE_OPTIONAL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_USE_PROHIBITED">XML_SCHEMAS_ATTR_USE_PROHIBITED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ATTR_USE_REQUIRED">XML_SCHEMAS_ATTR_USE_REQUIRED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION">XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION">XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION">XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_ABSTRACT">XML_SCHEMAS_ELEM_ABSTRACT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_BLOCK_ABSENT">XML_SCHEMAS_ELEM_BLOCK_ABSENT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_BLOCK_EXTENSION">XML_SCHEMAS_ELEM_BLOCK_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_BLOCK_RESTRICTION">XML_SCHEMAS_ELEM_BLOCK_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION">XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_CIRCULAR">XML_SCHEMAS_ELEM_CIRCULAR</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_DEFAULT">XML_SCHEMAS_ELEM_DEFAULT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_FINAL_ABSENT">XML_SCHEMAS_ELEM_FINAL_ABSENT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_FINAL_EXTENSION">XML_SCHEMAS_ELEM_FINAL_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_FINAL_RESTRICTION">XML_SCHEMAS_ELEM_FINAL_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_FIXED">XML_SCHEMAS_ELEM_FIXED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_GLOBAL">XML_SCHEMAS_ELEM_GLOBAL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_INTERNAL_RESOLVED">XML_SCHEMAS_ELEM_INTERNAL_RESOLVED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_NILLABLE">XML_SCHEMAS_ELEM_NILLABLE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_NSDEFAULT">XML_SCHEMAS_ELEM_NSDEFAULT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_REF">XML_SCHEMAS_ELEM_REF</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_ELEM_TOPLEVEL">XML_SCHEMAS_ELEM_TOPLEVEL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FACET_COLLAPSE">XML_SCHEMAS_FACET_COLLAPSE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FACET_PRESERVE">XML_SCHEMAS_FACET_PRESERVE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FACET_REPLACE">XML_SCHEMAS_FACET_REPLACE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FACET_UNKNOWN">XML_SCHEMAS_FACET_UNKNOWN</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_EXTENSION">XML_SCHEMAS_FINAL_DEFAULT_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_LIST">XML_SCHEMAS_FINAL_DEFAULT_LIST</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION">XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_FINAL_DEFAULT_UNION">XML_SCHEMAS_FINAL_DEFAULT_UNION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_INCLUDING_CONVERT_NS">XML_SCHEMAS_INCLUDING_CONVERT_NS</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_QUALIF_ATTR">XML_SCHEMAS_QUALIF_ATTR</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_QUALIF_ELEM">XML_SCHEMAS_QUALIF_ELEM</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_ABSTRACT">XML_SCHEMAS_TYPE_ABSTRACT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_BLOCK_DEFAULT">XML_SCHEMAS_TYPE_BLOCK_DEFAULT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_BLOCK_EXTENSION">XML_SCHEMAS_TYPE_BLOCK_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_BLOCK_RESTRICTION">XML_SCHEMAS_TYPE_BLOCK_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE">XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION">XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION">XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FACETSNEEDVALUE">XML_SCHEMAS_TYPE_FACETSNEEDVALUE</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_DEFAULT">XML_SCHEMAS_TYPE_FINAL_DEFAULT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_EXTENSION">XML_SCHEMAS_TYPE_FINAL_EXTENSION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_LIST">XML_SCHEMAS_TYPE_FINAL_LIST</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_RESTRICTION">XML_SCHEMAS_TYPE_FINAL_RESTRICTION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_FINAL_UNION">XML_SCHEMAS_TYPE_FINAL_UNION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_GLOBAL">XML_SCHEMAS_TYPE_GLOBAL</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_INTERNAL_INVALID">XML_SCHEMAS_TYPE_INTERNAL_INVALID</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_INTERNAL_RESOLVED">XML_SCHEMAS_TYPE_INTERNAL_RESOLVED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_MARKED">XML_SCHEMAS_TYPE_MARKED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_MIXED">XML_SCHEMAS_TYPE_MIXED</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD">XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_VARIETY_ABSENT">XML_SCHEMAS_TYPE_VARIETY_ABSENT</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_VARIETY_ATOMIC">XML_SCHEMAS_TYPE_VARIETY_ATOMIC</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_VARIETY_LIST">XML_SCHEMAS_TYPE_VARIETY_LIST</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_TYPE_VARIETY_UNION">XML_SCHEMAS_TYPE_VARIETY_UNION</a></pre><pre class="programlisting">#define <a href="#XML_SCHEMAS_WILDCARD_COMPLETE">XML_SCHEMAS_WILDCARD_COMPLETE</a></pre><pre class="programlisting">Structure <a href="#xmlSchemaAnnot">xmlSchemaAnnot</a><br />struct _xmlSchemaAnnot
 </pre><pre class="programlisting">Typedef <a href="libxml-schemasInternals.html#xmlSchemaAnnot">xmlSchemaAnnot</a> * <a name="xmlSchemaAnnotPtr" id="xmlSchemaAnnotPtr">xmlSchemaAnnotPtr</a>
 </pre><pre class="programlisting">Structure <a href="#xmlSchemaAttribute">xmlSchemaAttribute</a><br />struct _xmlSchemaAttribute
 </pre><pre class="programlisting">Structure <a href="#xmlSchemaAttributeGroup">xmlSchemaAttributeGroup</a><br />struct _xmlSchemaAttributeGroup
@@ -104,6 +104,8 @@
 <h3><a name="XML_SCHEMAS_TYPE_FINAL_RESTRICTION" id="XML_SCHEMAS_TYPE_FINAL_RESTRICTION"></a>Macro: XML_SCHEMAS_TYPE_FINAL_RESTRICTION</h3><pre>#define XML_SCHEMAS_TYPE_FINAL_RESTRICTION</pre><p>the simpleType/complexType has a final of "restriction".</p>
 <h3><a name="XML_SCHEMAS_TYPE_FINAL_UNION" id="XML_SCHEMAS_TYPE_FINAL_UNION"></a>Macro: XML_SCHEMAS_TYPE_FINAL_UNION</h3><pre>#define XML_SCHEMAS_TYPE_FINAL_UNION</pre><p>the simpleType has a final of "union".</p>
 <h3><a name="XML_SCHEMAS_TYPE_GLOBAL" id="XML_SCHEMAS_TYPE_GLOBAL"></a>Macro: XML_SCHEMAS_TYPE_GLOBAL</h3><pre>#define XML_SCHEMAS_TYPE_GLOBAL</pre><p>the type is global</p>
+<h3><a name="XML_SCHEMAS_TYPE_INTERNAL_INVALID" id="XML_SCHEMAS_TYPE_INTERNAL_INVALID"></a>Macro: XML_SCHEMAS_TYPE_INTERNAL_INVALID</h3><pre>#define XML_SCHEMAS_TYPE_INTERNAL_INVALID</pre><p>indicates that the type is invalid</p>
+<h3><a name="XML_SCHEMAS_TYPE_INTERNAL_RESOLVED" id="XML_SCHEMAS_TYPE_INTERNAL_RESOLVED"></a>Macro: XML_SCHEMAS_TYPE_INTERNAL_RESOLVED</h3><pre>#define XML_SCHEMAS_TYPE_INTERNAL_RESOLVED</pre><p>indicates that the type was typefixed</p>
 <h3><a name="XML_SCHEMAS_TYPE_MARKED" id="XML_SCHEMAS_TYPE_MARKED"></a>Macro: XML_SCHEMAS_TYPE_MARKED</h3><pre>#define XML_SCHEMAS_TYPE_MARKED</pre><p>Marks the item as marked; used for circular checks.</p>
 <h3><a name="XML_SCHEMAS_TYPE_MIXED" id="XML_SCHEMAS_TYPE_MIXED"></a>Macro: XML_SCHEMAS_TYPE_MIXED</h3><pre>#define XML_SCHEMAS_TYPE_MIXED</pre><p>the element content type is mixed</p>
 <h3><a name="XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD" id="XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD"></a>Macro: XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD</h3><pre>#define XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD</pre><p>the complexType owns an <a href="libxml-SAX.html#attribute">attribute</a> wildcard, i.e. it can be freed by the complexType</p>
@@ -268,6 +270,7 @@
     <a name="XML_SCHEMA_TYPE_IDC_UNIQUE" id="XML_SCHEMA_TYPE_IDC_UNIQUE">XML_SCHEMA_TYPE_IDC_UNIQUE</a> = 22
     <a name="XML_SCHEMA_TYPE_IDC_KEY" id="XML_SCHEMA_TYPE_IDC_KEY">XML_SCHEMA_TYPE_IDC_KEY</a> = 23
     <a name="XML_SCHEMA_TYPE_IDC_KEYREF" id="XML_SCHEMA_TYPE_IDC_KEYREF">XML_SCHEMA_TYPE_IDC_KEYREF</a> = 24
+    <a name="XML_SCHEMA_TYPE_PARTICLE" id="XML_SCHEMA_TYPE_PARTICLE">XML_SCHEMA_TYPE_PARTICLE</a> = 25
     <a name="XML_SCHEMA_FACET_MININCLUSIVE" id="XML_SCHEMA_FACET_MININCLUSIVE">XML_SCHEMA_FACET_MININCLUSIVE</a> = 1000
     <a name="XML_SCHEMA_FACET_MINEXCLUSIVE" id="XML_SCHEMA_FACET_MINEXCLUSIVE">XML_SCHEMA_FACET_MINEXCLUSIVE</a> = 1001
     <a name="XML_SCHEMA_FACET_MAXINCLUSIVE" id="XML_SCHEMA_FACET_MAXINCLUSIVE">XML_SCHEMA_FACET_MAXINCLUSIVE</a> = 1002
@@ -280,6 +283,7 @@
     <a name="XML_SCHEMA_FACET_LENGTH" id="XML_SCHEMA_FACET_LENGTH">XML_SCHEMA_FACET_LENGTH</a> = 1009
     <a name="XML_SCHEMA_FACET_MAXLENGTH" id="XML_SCHEMA_FACET_MAXLENGTH">XML_SCHEMA_FACET_MAXLENGTH</a> = 1010
     <a name="XML_SCHEMA_FACET_MINLENGTH" id="XML_SCHEMA_FACET_MINLENGTH">XML_SCHEMA_FACET_MINLENGTH</a> = 1011
+    <a name="XML_SCHEMA_EXTRA_QNAMEREF" id="XML_SCHEMA_EXTRA_QNAMEREF">XML_SCHEMA_EXTRA_QNAMEREF</a> = 2000
 }
 </pre><h3><a name="xmlSchemaVal" id="xmlSchemaVal">Structure xmlSchemaVal</a></h3><pre class="programlisting">Structure xmlSchemaVal<br />struct _xmlSchemaVal {
 The content of this structure is not made public by the API.

Modified: packages/libxml2/branches/upstream/current/doc/html/libxml-xmlerror.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/html/libxml-xmlerror.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/html/libxml-xmlerror.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -657,6 +657,8 @@
     <a name="XML_C14N_REQUIRES_UTF8" id="XML_C14N_REQUIRES_UTF8">XML_C14N_REQUIRES_UTF8</a> = 1951 : 1951
     <a name="XML_C14N_CREATE_STACK" id="XML_C14N_CREATE_STACK">XML_C14N_CREATE_STACK</a> = 1952 : 1952
     <a name="XML_C14N_INVALID_NODE" id="XML_C14N_INVALID_NODE">XML_C14N_INVALID_NODE</a> = 1953 : 1953
+    <a name="XML_C14N_UNKNOW_NODE" id="XML_C14N_UNKNOW_NODE">XML_C14N_UNKNOW_NODE</a> = 1954 : 1954
+    <a name="XML_C14N_RELATIVE_NAMESPACE" id="XML_C14N_RELATIVE_NAMESPACE">XML_C14N_RELATIVE_NAMESPACE</a> = 1955 : 1955
     <a name="XML_FTP_PASV_ANSWER" id="XML_FTP_PASV_ANSWER">XML_FTP_PASV_ANSWER</a> = 2000
     <a name="XML_FTP_EPSV_ANSWER" id="XML_FTP_EPSV_ANSWER">XML_FTP_EPSV_ANSWER</a> = 2001 : 2001
     <a name="XML_FTP_ACCNT" id="XML_FTP_ACCNT">XML_FTP_ACCNT</a> = 2002 : 2002

Modified: packages/libxml2/branches/upstream/current/doc/html/libxml-xmlschemas.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/html/libxml-xmlschemas.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/html/libxml-xmlschemas.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -66,6 +66,7 @@
     int	preserve	: whether to free the document
     int	counter	: used to give ononymous components uniqu
     <a href="libxml-hash.html#xmlHashTablePtr">xmlHashTablePtr</a>	idcDef
+    void *	volatiles	: Misc. helper items (e.g. <a href="libxml-SAX.html#reference">reference</a> item
 }</pre><h3><a name="xmlSchemaParserCtxt" id="xmlSchemaParserCtxt">Structure xmlSchemaParserCtxt</a></h3><pre class="programlisting">Structure xmlSchemaParserCtxt<br />struct _xmlSchemaParserCtxt {
 The content of this structure is not made public by the API.
 }</pre><h3><a name="xmlSchemaValidCtxt" id="xmlSchemaValidCtxt">Structure xmlSchemaValidCtxt</a></h3><pre class="programlisting">Structure xmlSchemaValidCtxt<br />struct _xmlSchemaValidCtxt {

Modified: packages/libxml2/branches/upstream/current/doc/html/libxml-xmlschemastypes.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/html/libxml-xmlschemastypes.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/html/libxml-xmlschemastypes.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -24,6 +24,7 @@
 <pre class="programlisting">int	<a href="#xmlSchemaGetCanonValue">xmlSchemaGetCanonValue</a>		(<a href="libxml-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** retValue)</pre>
 <pre class="programlisting">unsigned long	<a href="#xmlSchemaGetFacetValueAsULong">xmlSchemaGetFacetValueAsULong</a>	(<a href="libxml-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet)</pre>
 <pre class="programlisting"><a href="libxml-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a>	<a href="#xmlSchemaGetPredefinedType">xmlSchemaGetPredefinedType</a>	(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br />							 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * ns)</pre>
+<pre class="programlisting"><a href="libxml-schemasInternals.html#xmlSchemaValType">xmlSchemaValType</a>	<a href="#xmlSchemaGetValType">xmlSchemaGetValType</a>	(<a href="libxml-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val)</pre>
 <pre class="programlisting">void	<a href="#xmlSchemaInitTypes">xmlSchemaInitTypes</a>		(void)</pre>
 <pre class="programlisting">int	<a href="#xmlSchemaIsBuiltInTypeFacet">xmlSchemaIsBuiltInTypeFacet</a>	(<a href="libxml-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> type, <br />					 int facetType)</pre>
 <pre class="programlisting"><a href="libxml-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a>	<a href="#xmlSchemaNewFacet">xmlSchemaNewFacet</a>	(void)</pre>
@@ -32,7 +33,9 @@
 <pre class="programlisting">int	<a href="#xmlSchemaValPredefTypeNode">xmlSchemaValPredefTypeNode</a>	(<a href="libxml-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> type, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br />					 <a href="libxml-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> * val, <br />					 <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)</pre>
 <pre class="programlisting">int	<a href="#xmlSchemaValPredefTypeNodeNoNorm">xmlSchemaValPredefTypeNodeNoNorm</a>	(<a href="libxml-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> type, <br />						 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br />						 <a href="libxml-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> * val, <br />						 <a href="libxml-tree.html#xmlNodePtr">xmlNodePtr</a> node)</pre>
 <pre class="programlisting">int	<a href="#xmlSchemaValidateFacet">xmlSchemaValidateFacet</a>		(<a href="libxml-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> base, <br />					 <a href="libxml-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br />					 <a href="libxml-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val)</pre>
+<pre class="programlisting">int	<a href="#xmlSchemaValidateFacetWhtsp">xmlSchemaValidateFacetWhtsp</a>	(<a href="libxml-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br />					 <a href="libxml-xmlschemastypes.html#xmlSchemaWhitespaceValueType">xmlSchemaWhitespaceValueType</a> fws, <br />					 <a href="libxml-schemasInternals.html#xmlSchemaValType">xmlSchemaValType</a> valType, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br />					 <a href="libxml-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val, <br />					 <a href="libxml-xmlschemastypes.html#xmlSchemaWhitespaceValueType">xmlSchemaWhitespaceValueType</a> ws)</pre>
 <pre class="programlisting">int	<a href="#xmlSchemaValidateLengthFacet">xmlSchemaValidateLengthFacet</a>	(<a href="libxml-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> type, <br />					 <a href="libxml-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br />					 <a href="libxml-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val, <br />					 unsigned long * length)</pre>
+<pre class="programlisting">int	<a href="#xmlSchemaValidateLengthFacetWhtsp">xmlSchemaValidateLengthFacetWhtsp</a>	(<a href="libxml-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br />						 <a href="libxml-schemasInternals.html#xmlSchemaValType">xmlSchemaValType</a> valType, <br />						 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br />						 <a href="libxml-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val, <br />						 unsigned long * length, <br />						 <a href="libxml-xmlschemastypes.html#xmlSchemaWhitespaceValueType">xmlSchemaWhitespaceValueType</a> ws)</pre>
 <pre class="programlisting">int	<a href="#xmlSchemaValidateListSimpleTypeFacet">xmlSchemaValidateListSimpleTypeFacet</a>	(<a href="libxml-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br />						 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br />						 unsigned long actualLen, <br />						 unsigned long * expectedLen)</pre>
 <pre class="programlisting">int	<a href="#xmlSchemaValidatePredefinedType">xmlSchemaValidatePredefinedType</a>	(<a href="libxml-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> type, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br />					 <a href="libxml-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> * val)</pre>
 <pre class="programlisting"><a href="libxml-xmlstring.html#xmlChar">xmlChar</a> *	<a href="#xmlSchemaWhiteSpaceReplace">xmlSchemaWhiteSpaceReplace</a>	(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value)</pre>
@@ -64,12 +67,14 @@
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>type</tt></i>:</span></td><td>the built-in simple type.</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the item type of @type as defined by the built-in datatype hierarchy of XML Schema Part 2: Datatypes, or NULL in case of an error.</td></tr></tbody></table></div><h3><a name="xmlSchemaGetBuiltInType" id="xmlSchemaGetBuiltInType"></a>Function: xmlSchemaGetBuiltInType</h3><pre class="programlisting"><a href="libxml-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a>	xmlSchemaGetBuiltInType	(<a href="libxml-schemasInternals.html#xmlSchemaValType">xmlSchemaValType</a> type)<br />
 </pre><p>Gives you the type struct for a built-in type by its type id.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>type</tt></i>:</span></td><td>the type of the built in type</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the type if found, NULL otherwise.</td></tr></tbody></table></div><h3><a name="xmlSchemaGetCanonValue" id="xmlSchemaGetCanonValue"></a>Function: xmlSchemaGetCanonValue</h3><pre class="programlisting">int	xmlSchemaGetCanonValue		(<a href="libxml-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> ** retValue)<br />
-</pre><p>Get a the cononical representation of the value. The caller has to free the returned retValue.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the precomputed value</td></tr><tr><td><span class="term"><i><tt>retValue</tt></i>:</span></td><td>the returned value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the value could be built and -1 in case of API errors or if the value type is not supported yet.</td></tr></tbody></table></div><h3><a name="xmlSchemaGetFacetValueAsULong" id="xmlSchemaGetFacetValueAsULong"></a>Function: xmlSchemaGetFacetValueAsULong</h3><pre class="programlisting">unsigned long	xmlSchemaGetFacetValueAsULong	(<a href="libxml-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet)<br />
+</pre><p>Get a the cononical lexical representation of the value. The caller has to free the returned retValue. WARNING: Some value types are not supported yet, resulting in a @retValue of "???".</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the precomputed value</td></tr><tr><td><span class="term"><i><tt>retValue</tt></i>:</span></td><td>the returned value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the value could be built and -1 in case of API errors.</td></tr></tbody></table></div><h3><a name="xmlSchemaGetFacetValueAsULong" id="xmlSchemaGetFacetValueAsULong"></a>Function: xmlSchemaGetFacetValueAsULong</h3><pre class="programlisting">unsigned long	xmlSchemaGetFacetValueAsULong	(<a href="libxml-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet)<br />
 </pre><p>Extract the value of a facet</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>facet</tt></i>:</span></td><td>an schemas type facet</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the value as a long</td></tr></tbody></table></div><h3><a name="xmlSchemaGetPredefinedType" id="xmlSchemaGetPredefinedType"></a>Function: xmlSchemaGetPredefinedType</h3><pre class="programlisting"><a href="libxml-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a>	xmlSchemaGetPredefinedType	(const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * name, <br />							 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * ns)<br />
 </pre><p>Lookup a type in the default XML Schemas type library</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 type name</td></tr><tr><td><span class="term"><i><tt>ns</tt></i>:</span></td><td>the URI of the namespace usually "http://www.w3.org/2001/XMLSchema"</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the type if found, NULL otherwise</td></tr></tbody></table></div><h3><a name="xmlSchemaInitTypes" id="xmlSchemaInitTypes"></a>Function: xmlSchemaInitTypes</h3><pre class="programlisting">void	xmlSchemaInitTypes		(void)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>name</tt></i>:</span></td><td>the type name</td></tr><tr><td><span class="term"><i><tt>ns</tt></i>:</span></td><td>the URI of the namespace usually "http://www.w3.org/2001/XMLSchema"</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the type if found, NULL otherwise</td></tr></tbody></table></div><h3><a name="xmlSchemaGetValType" id="xmlSchemaGetValType"></a>Function: xmlSchemaGetValType</h3><pre class="programlisting"><a href="libxml-schemasInternals.html#xmlSchemaValType">xmlSchemaValType</a>	xmlSchemaGetValType	(<a href="libxml-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val)<br />
+</pre><p>Accessor for the type of a value</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>a schemas value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the <a href="libxml-schemasInternals.html#xmlSchemaValType">xmlSchemaValType</a> of the value</td></tr></tbody></table></div><h3><a name="xmlSchemaInitTypes" id="xmlSchemaInitTypes"></a>Function: xmlSchemaInitTypes</h3><pre class="programlisting">void	xmlSchemaInitTypes		(void)<br />
 </pre><p>Initialize the default XML Schemas type library</p>
 <h3><a name="xmlSchemaIsBuiltInTypeFacet" id="xmlSchemaIsBuiltInTypeFacet"></a>Function: xmlSchemaIsBuiltInTypeFacet</h3><pre class="programlisting">int	xmlSchemaIsBuiltInTypeFacet	(<a href="libxml-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> type, <br />					 int facetType)<br />
 </pre><p>Evaluates if a specific facet can be used in conjunction with a type.</p>
@@ -85,9 +90,13 @@
 </pre><p>Check that a value conforms to the lexical space of the predefined type. if true a value is computed and returned in @val. This one does apply any normalization to the value.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>type</tt></i>:</span></td><td>the predefined type</td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>the value to check</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the return computed value</td></tr><tr><td><span class="term"><i><tt>node</tt></i>:</span></td><td>the node containing the value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if this validates, a positive error code number otherwise and -1 in case of internal or API error.</td></tr></tbody></table></div><h3><a name="xmlSchemaValidateFacet" id="xmlSchemaValidateFacet"></a>Function: xmlSchemaValidateFacet</h3><pre class="programlisting">int	xmlSchemaValidateFacet		(<a href="libxml-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> base, <br />					 <a href="libxml-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br />					 <a href="libxml-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val)<br />
 </pre><p>Check a value against a facet condition</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>base</tt></i>:</span></td><td>the base type</td></tr><tr><td><span class="term"><i><tt>facet</tt></i>:</span></td><td>the facet to check</td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>the lexical repr of the value to validate</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the precomputed value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the element is schemas valid, a positive error code number otherwise and -1 in case of internal or API error.</td></tr></tbody></table></div><h3><a name="xmlSchemaValidateLengthFacet" id="xmlSchemaValidateLengthFacet"></a>Function: xmlSchemaValidateLengthFacet</h3><pre class="programlisting">int	xmlSchemaValidateLengthFacet	(<a href="libxml-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> type, <br />					 <a href="libxml-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br />					 <a href="libxml-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val, <br />					 unsigned long * length)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>base</tt></i>:</span></td><td>the base type</td></tr><tr><td><span class="term"><i><tt>facet</tt></i>:</span></td><td>the facet to check</td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>the lexical repr of the value to validate</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the precomputed value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the element is schemas valid, a positive error code number otherwise and -1 in case of internal or API error.</td></tr></tbody></table></div><h3><a name="xmlSchemaValidateFacetWhtsp" id="xmlSchemaValidateFacetWhtsp"></a>Function: xmlSchemaValidateFacetWhtsp</h3><pre class="programlisting">int	xmlSchemaValidateFacetWhtsp	(<a href="libxml-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br />					 <a href="libxml-xmlschemastypes.html#xmlSchemaWhitespaceValueType">xmlSchemaWhitespaceValueType</a> fws, <br />					 <a href="libxml-schemasInternals.html#xmlSchemaValType">xmlSchemaValType</a> valType, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br />					 <a href="libxml-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val, <br />					 <a href="libxml-xmlschemastypes.html#xmlSchemaWhitespaceValueType">xmlSchemaWhitespaceValueType</a> ws)<br />
+</pre><p>Check a value against a facet condition. This takes value normalization according to the specified whitespace types into account. Note that @value needs to be the *normalized* value if the facet is of type "pattern".</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>facet</tt></i>:</span></td><td>the facet to check</td></tr><tr><td><span class="term"><i><tt>fws</tt></i>:</span></td><td>the whitespace type of the facet's value</td></tr><tr><td><span class="term"><i><tt>valType</tt></i>:</span></td><td>the built-in type of the value</td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>the lexical (or normalized for pattern) repr of the value to validate</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the precomputed value</td></tr><tr><td><span class="term"><i><tt>ws</tt></i>:</span></td><td>the whitespace type of the value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the element is schemas valid, a positive error code number otherwise and -1 in case of internal or API error.</td></tr></tbody></table></div><h3><a name="xmlSchemaValidateLengthFacet" id="xmlSchemaValidateLengthFacet"></a>Function: xmlSchemaValidateLengthFacet</h3><pre class="programlisting">int	xmlSchemaValidateLengthFacet	(<a href="libxml-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> type, <br />					 <a href="libxml-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br />					 <a href="libxml-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val, <br />					 unsigned long * length)<br />
 </pre><p>Checka a value against a "length", "minLength" and "maxLength" facet; sets @length to the computed length of @value.</p>
-<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>type</tt></i>:</span></td><td>the built-in type</td></tr><tr><td><span class="term"><i><tt>facet</tt></i>:</span></td><td>the facet to check</td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>the lexical repr. of the value to be validated</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the precomputed value</td></tr><tr><td><span class="term"><i><tt>length</tt></i>:</span></td><td>the actual length of the value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the value is valid, a positive error code otherwise and -1 in case of an internal or API error.</td></tr></tbody></table></div><h3><a name="xmlSchemaValidateListSimpleTypeFacet" id="xmlSchemaValidateListSimpleTypeFacet"></a>Function: xmlSchemaValidateListSimpleTypeFacet</h3><pre class="programlisting">int	xmlSchemaValidateListSimpleTypeFacet	(<a href="libxml-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br />						 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br />						 unsigned long actualLen, <br />						 unsigned long * expectedLen)<br />
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>type</tt></i>:</span></td><td>the built-in type</td></tr><tr><td><span class="term"><i><tt>facet</tt></i>:</span></td><td>the facet to check</td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>the lexical repr. of the value to be validated</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the precomputed value</td></tr><tr><td><span class="term"><i><tt>length</tt></i>:</span></td><td>the actual length of the value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the value is valid, a positive error code otherwise and -1 in case of an internal or API error.</td></tr></tbody></table></div><h3><a name="xmlSchemaValidateLengthFacetWhtsp" id="xmlSchemaValidateLengthFacetWhtsp"></a>Function: xmlSchemaValidateLengthFacetWhtsp</h3><pre class="programlisting">int	xmlSchemaValidateLengthFacetWhtsp	(<a href="libxml-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br />						 <a href="libxml-schemasInternals.html#xmlSchemaValType">xmlSchemaValType</a> valType, <br />						 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br />						 <a href="libxml-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> val, <br />						 unsigned long * length, <br />						 <a href="libxml-xmlschemastypes.html#xmlSchemaWhitespaceValueType">xmlSchemaWhitespaceValueType</a> ws)<br />
+</pre><p>Checka a value against a "length", "minLength" and "maxLength" facet; sets @length to the computed length of @value.</p>
+<div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>facet</tt></i>:</span></td><td>the facet to check</td></tr><tr><td><span class="term"><i><tt>valType</tt></i>:</span></td><td>the built-in type</td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>the lexical repr. of the value to be validated</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the precomputed value</td></tr><tr><td><span class="term"><i><tt>length</tt></i>:</span></td><td>the actual length of the value</td></tr><tr><td><span class="term"><i><tt>ws</tt></i>:</span></td><td>the whitespace type of the value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the value is valid, a positive error code otherwise and -1 in case of an internal or API error.</td></tr></tbody></table></div><h3><a name="xmlSchemaValidateListSimpleTypeFacet" id="xmlSchemaValidateListSimpleTypeFacet"></a>Function: xmlSchemaValidateListSimpleTypeFacet</h3><pre class="programlisting">int	xmlSchemaValidateListSimpleTypeFacet	(<a href="libxml-schemasInternals.html#xmlSchemaFacetPtr">xmlSchemaFacetPtr</a> facet, <br />						 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br />						 unsigned long actualLen, <br />						 unsigned long * expectedLen)<br />
 </pre><p>Checks the value of a list simple type against a facet.</p>
 <div class="variablelist"><table border="0"><col align="left" /><tbody><tr><td><span class="term"><i><tt>facet</tt></i>:</span></td><td>the facet to check</td></tr><tr><td><span class="term"><i><tt>value</tt></i>:</span></td><td>the lexical repr of the value to validate</td></tr><tr><td><span class="term"><i><tt>actualLen</tt></i>:</span></td><td>the number of list items</td></tr><tr><td><span class="term"><i><tt>expectedLen</tt></i>:</span></td><td>the resulting expected number of list items</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 if the value is valid, a positive error code number otherwise and -1 in case of an internal error.</td></tr></tbody></table></div><h3><a name="xmlSchemaValidatePredefinedType" id="xmlSchemaValidatePredefinedType"></a>Function: xmlSchemaValidatePredefinedType</h3><pre class="programlisting">int	xmlSchemaValidatePredefinedType	(<a href="libxml-schemasInternals.html#xmlSchemaTypePtr">xmlSchemaTypePtr</a> type, <br />					 const <a href="libxml-xmlstring.html#xmlChar">xmlChar</a> * value, <br />					 <a href="libxml-schemasInternals.html#xmlSchemaValPtr">xmlSchemaValPtr</a> * val)<br />
 </pre><p>Check that a value conforms to the lexical space of the predefined type. if true a value is computed and returned in @val.</p>

Modified: packages/libxml2/branches/upstream/current/doc/libxml2-api.xml
===================================================================
--- packages/libxml2/branches/upstream/current/doc/libxml2-api.xml	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/libxml2-api.xml	2005-04-04 18:23:13 UTC (rev 398)
@@ -1063,6 +1063,7 @@
      <exports symbol='XML_SCHEMAS_ATTR_USE_REQUIRED' type='macro'/>
      <exports symbol='XML_SCHEMAS_FACET_COLLAPSE' type='macro'/>
      <exports symbol='XML_SCHEMAS_ANY_STRICT' type='macro'/>
+     <exports symbol='XML_SCHEMAS_TYPE_INTERNAL_RESOLVED' type='macro'/>
      <exports symbol='XML_SCHEMAS_QUALIF_ELEM' type='macro'/>
      <exports symbol='XML_SCHEMAS_TYPE_VARIETY_LIST' type='macro'/>
      <exports symbol='XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION' type='macro'/>
@@ -1107,6 +1108,7 @@
      <exports symbol='XML_SCHEMAS_ELEM_FINAL_EXTENSION' type='macro'/>
      <exports symbol='XML_SCHEMAS_ELEM_FINAL_ABSENT' type='macro'/>
      <exports symbol='XML_SCHEMAS_TYPE_BLOCK_EXTENSION' type='macro'/>
+     <exports symbol='XML_SCHEMAS_TYPE_INTERNAL_INVALID' type='macro'/>
      <exports symbol='XML_SCHEMAS_ELEM_TOPLEVEL' type='macro'/>
      <exports symbol='XML_SCHEMAS_ELEM_ABSTRACT' type='macro'/>
      <exports symbol='XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION' type='macro'/>
@@ -1121,6 +1123,7 @@
      <exports symbol='XML_SCHEMAS_ELEM_BLOCK_ABSENT' type='macro'/>
      <exports symbol='XML_SCHEMAS_ATTRGROUP_GLOBAL' type='macro'/>
      <exports symbol='XML_SCHEMAS_ELEM_REF' type='macro'/>
+     <exports symbol='XML_SCHEMA_EXTRA_QNAMEREF' type='enum'/>
      <exports symbol='XML_SCHEMA_TYPE_EXTENSION' type='enum'/>
      <exports symbol='XML_SCHEMAS_NMTOKEN' type='enum'/>
      <exports symbol='XML_SCHEMAS_ID' type='enum'/>
@@ -1143,6 +1146,7 @@
      <exports symbol='XML_SCHEMAS_DOUBLE' type='enum'/>
      <exports symbol='XML_SCHEMAS_NINTEGER' type='enum'/>
      <exports symbol='XML_SCHEMAS_NORMSTRING' type='enum'/>
+     <exports symbol='XML_SCHEMA_TYPE_PARTICLE' type='enum'/>
      <exports symbol='XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS' type='enum'/>
      <exports symbol='XML_SCHEMA_TYPE_SIMPLE' type='enum'/>
      <exports symbol='XML_SCHEMAS_NCNAME' type='enum'/>
@@ -1164,7 +1168,7 @@
      <exports symbol='XML_SCHEMA_CONTENT_EMPTY' type='enum'/>
      <exports symbol='XML_SCHEMA_FACET_ENUMERATION' type='enum'/>
      <exports symbol='XML_SCHEMA_CONTENT_UNKNOWN' type='enum'/>
-     <exports symbol='XML_SCHEMA_TYPE_RESTRICTION' type='enum'/>
+     <exports symbol='XML_SCHEMA_FACET_MININCLUSIVE' type='enum'/>
      <exports symbol='XML_SCHEMAS_GMONTH' type='enum'/>
      <exports symbol='XML_SCHEMA_CONTENT_ELEMENTS' type='enum'/>
      <exports symbol='XML_SCHEMAS_GYEAR' type='enum'/>
@@ -1208,9 +1212,9 @@
      <exports symbol='XML_SCHEMA_TYPE_NOTATION' type='enum'/>
      <exports symbol='XML_SCHEMA_CONTENT_ANY' type='enum'/>
      <exports symbol='XML_SCHEMA_FACET_MINLENGTH' type='enum'/>
+     <exports symbol='XML_SCHEMA_TYPE_RESTRICTION' type='enum'/>
      <exports symbol='XML_SCHEMA_TYPE_SEQUENCE' type='enum'/>
      <exports symbol='XML_SCHEMA_TYPE_ELEMENT' type='enum'/>
-     <exports symbol='XML_SCHEMA_FACET_MININCLUSIVE' type='enum'/>
      <exports symbol='XML_SCHEMA_FACET_MAXLENGTH' type='enum'/>
      <exports symbol='xmlSchemaAttributeGroupPtr' type='typedef'/>
      <exports symbol='xmlSchemaElementPtr' type='typedef'/>
@@ -2066,7 +2070,7 @@
      <exports symbol='XML_SCHEMAV_CVC_ELT_5_1_2' type='enum'/>
      <exports symbol='XML_RNGP_INTERLEAVE_CREATE_FAILED' type='enum'/>
      <exports symbol='XML_IO_EAGAIN' type='enum'/>
-     <exports symbol='XML_DTD_LOAD_ERROR' type='enum'/>
+     <exports symbol='XML_ERR_NOTATION_NOT_STARTED' type='enum'/>
      <exports symbol='XML_DTD_ENTITY_TYPE' type='enum'/>
      <exports symbol='XML_SCHEMAP_SRC_SIMPLE_TYPE_4' type='enum'/>
      <exports symbol='XML_FTP_URL_SYNTAX' type='enum'/>
@@ -2086,7 +2090,6 @@
      <exports symbol='XML_SCHEMAP_SRC_ELEMENT_3' type='enum'/>
      <exports symbol='XML_SCHEMAP_UNKNOWN_REF' type='enum'/>
      <exports symbol='XML_RNGP_PAT_DATA_EXCEPT_EMPTY' type='enum'/>
-     <exports symbol='XML_ERR_NS_DECL_ERROR' type='enum'/>
      <exports symbol='XML_RNGP_PAT_START_DATA' type='enum'/>
      <exports symbol='XML_DTD_MISSING_ATTRIBUTE' type='enum'/>
      <exports symbol='XML_IO_EMFILE' type='enum'/>
@@ -2108,6 +2111,7 @@
      <exports symbol='XML_RNGP_PAT_START_EMPTY' type='enum'/>
      <exports symbol='XML_ERR_ATTLIST_NOT_FINISHED' type='enum'/>
      <exports symbol='XML_XINCLUDE_TEXT_FRAGMENT' type='enum'/>
+     <exports symbol='XML_C14N_RELATIVE_NAMESPACE' type='enum'/>
      <exports symbol='XML_SCHEMAP_FAILED_LOAD' type='enum'/>
      <exports symbol='XML_ERR_ATTRIBUTE_WITHOUT_VALUE' type='enum'/>
      <exports symbol='XML_XPTR_SYNTAX_ERROR' type='enum'/>
@@ -2266,7 +2270,7 @@
      <exports symbol='XML_XPATH_INVALID_TYPE' type='enum'/>
      <exports symbol='XML_CHECK_NS_SCOPE' type='enum'/>
      <exports symbol='XML_IO_FLUSH' type='enum'/>
-     <exports symbol='XML_C14N_INVALID_NODE' type='enum'/>
+     <exports symbol='XML_CATALOG_ENTRY_BROKEN' type='enum'/>
      <exports symbol='XML_XPATH_INVALID_CTXT_POSITION' type='enum'/>
      <exports symbol='XML_SCHEMAV_CVC_LENGTH_VALID' type='enum'/>
      <exports symbol='XML_DTD_STANDALONE_DEFAULTED' type='enum'/>
@@ -2297,9 +2301,10 @@
      <exports symbol='XML_SCHEMAP_UNKNOWN_ATTR_CHILD' type='enum'/>
      <exports symbol='XML_ERR_UNKNOWN_ENCODING' type='enum'/>
      <exports symbol='XML_RNGP_REF_NO_NAME' type='enum'/>
+     <exports symbol='XML_C14N_UNKNOW_NODE' type='enum'/>
      <exports symbol='XML_SCHEMAP_REF_AND_SUBTYPE' type='enum'/>
      <exports symbol='XML_RNGP_PAT_ONEMORE_INTERLEAVE_ATTR' type='enum'/>
-     <exports symbol='XML_CATALOG_ENTRY_BROKEN' type='enum'/>
+     <exports symbol='XML_C14N_INVALID_NODE' type='enum'/>
      <exports symbol='XML_RNGP_TEXT_EXPECTED' type='enum'/>
      <exports symbol='XML_XPATH_UNDEF_VARIABLE_ERROR' type='enum'/>
      <exports symbol='XML_SCHEMAV_NOROLLBACK' type='enum'/>
@@ -2389,6 +2394,7 @@
      <exports symbol='XML_SCHEMAP_S4S_ELEM_MISSING' type='enum'/>
      <exports symbol='XML_SCHEMAV_CVC_ELT_5_1_1' type='enum'/>
      <exports symbol='XML_CHECK_FOUND_FRAGMENT' type='enum'/>
+     <exports symbol='XML_DTD_LOAD_ERROR' type='enum'/>
      <exports symbol='XML_CHECK_UNKNOWN_NODE' type='enum'/>
      <exports symbol='XML_SCHEMAP_UNKNOWN_NOTATION_CHILD' type='enum'/>
      <exports symbol='XML_SCHEMAP_SRC_CT_1' type='enum'/>
@@ -2478,7 +2484,7 @@
      <exports symbol='XML_SCHEMAV_CVC_MININCLUSIVE_VALID' type='enum'/>
      <exports symbol='XML_SCHEMAV_ISABSTRACT' type='enum'/>
      <exports symbol='XML_RNGP_DEFINE_MISSING' type='enum'/>
-     <exports symbol='XML_ERR_NOTATION_NOT_STARTED' type='enum'/>
+     <exports symbol='XML_ERR_NS_DECL_ERROR' type='enum'/>
      <exports symbol='XML_ERR_INTERNAL_ERROR' type='enum'/>
      <exports symbol='XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1' type='enum'/>
      <exports symbol='XML_ERR_ELEMCONTENT_NOT_FINISHED' type='enum'/>
@@ -2865,6 +2871,7 @@
      <exports symbol='XML_SCHEMA_WHITESPACE_PRESERVE' type='enum'/>
      <exports symbol='xmlSchemaWhitespaceValueType' type='typedef'/>
      <exports symbol='xmlSchemaValPredefTypeNode' type='function'/>
+     <exports symbol='xmlSchemaValidateLengthFacetWhtsp' type='function'/>
      <exports symbol='xmlSchemaIsBuiltInTypeFacet' type='function'/>
      <exports symbol='xmlSchemaGetCanonValue' type='function'/>
      <exports symbol='xmlSchemaGetBuiltInListSimpleTypeItemType' type='function'/>
@@ -2875,6 +2882,7 @@
      <exports symbol='xmlSchemaNewFacet' type='function'/>
      <exports symbol='xmlSchemaCompareValues' type='function'/>
      <exports symbol='xmlSchemaValidateLengthFacet' type='function'/>
+     <exports symbol='xmlSchemaGetValType' type='function'/>
      <exports symbol='xmlSchemaGetPredefinedType' type='function'/>
      <exports symbol='xmlSchemaValidatePredefinedType' type='function'/>
      <exports symbol='xmlSchemaFreeFacet' type='function'/>
@@ -2888,6 +2896,7 @@
      <exports symbol='xmlSchemaNewStringValue' type='function'/>
      <exports symbol='xmlSchemaGetBuiltInType' type='function'/>
      <exports symbol='xmlSchemaInitTypes' type='function'/>
+     <exports symbol='xmlSchemaValidateFacetWhtsp' type='function'/>
      <exports symbol='xmlSchemaCheckFacet' type='function'/>
     </file>
     <file name='xmlstring'>
@@ -4042,6 +4051,12 @@
     <macro name='XML_SCHEMAS_TYPE_GLOBAL' file='schemasInternals'>
       <info>the type is global</info>
     </macro>
+    <macro name='XML_SCHEMAS_TYPE_INTERNAL_INVALID' file='schemasInternals'>
+      <info>indicates that the type is invalid</info>
+    </macro>
+    <macro name='XML_SCHEMAS_TYPE_INTERNAL_RESOLVED' file='schemasInternals'>
+      <info>indicates that the type was typefixed</info>
+    </macro>
     <macro name='XML_SCHEMAS_TYPE_MARKED' file='schemasInternals'>
       <info>Marks the item as marked; used for circular checks.</info>
     </macro>
@@ -4316,7 +4331,9 @@
     <enum name='XML_C14N_CREATE_CTXT' file='xmlerror' value='1950' type='xmlParserErrors'/>
     <enum name='XML_C14N_CREATE_STACK' file='xmlerror' value='1952' type='xmlParserErrors' info='1952'/>
     <enum name='XML_C14N_INVALID_NODE' file='xmlerror' value='1953' type='xmlParserErrors' info='1953'/>
+    <enum name='XML_C14N_RELATIVE_NAMESPACE' file='xmlerror' value='1955' type='xmlParserErrors' info='1955'/>
     <enum name='XML_C14N_REQUIRES_UTF8' file='xmlerror' value='1951' type='xmlParserErrors' info='1951'/>
+    <enum name='XML_C14N_UNKNOW_NODE' file='xmlerror' value='1954' type='xmlParserErrors' info='1954'/>
     <enum name='XML_CATALOG_ENTRY_BROKEN' file='xmlerror' value='1651' type='xmlParserErrors' info='1651'/>
     <enum name='XML_CATALOG_MISSING_ATTR' file='xmlerror' value='1650' type='xmlParserErrors'/>
     <enum name='XML_CATALOG_NOT_CATALOG' file='xmlerror' value='1653' type='xmlParserErrors' info='1653'/>
@@ -5248,6 +5265,7 @@
     <enum name='XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS' file='schemasInternals' value='5' type='xmlSchemaContentType' info='obsolete, not used'/>
     <enum name='XML_SCHEMA_CONTENT_SIMPLE' file='schemasInternals' value='4' type='xmlSchemaContentType'/>
     <enum name='XML_SCHEMA_CONTENT_UNKNOWN' file='schemasInternals' value='0' type='xmlSchemaContentType'/>
+    <enum name='XML_SCHEMA_EXTRA_QNAMEREF' file='schemasInternals' value='2000' type='xmlSchemaTypeType'/>
     <enum name='XML_SCHEMA_FACET_ENUMERATION' file='schemasInternals' value='1007' type='xmlSchemaTypeType'/>
     <enum name='XML_SCHEMA_FACET_FRACTIONDIGITS' file='schemasInternals' value='1005' type='xmlSchemaTypeType'/>
     <enum name='XML_SCHEMA_FACET_LENGTH' file='schemasInternals' value='1009' type='xmlSchemaTypeType'/>
@@ -5278,6 +5296,7 @@
     <enum name='XML_SCHEMA_TYPE_IDC_UNIQUE' file='schemasInternals' value='22' type='xmlSchemaTypeType'/>
     <enum name='XML_SCHEMA_TYPE_LIST' file='schemasInternals' value='19' type='xmlSchemaTypeType'/>
     <enum name='XML_SCHEMA_TYPE_NOTATION' file='schemasInternals' value='18' type='xmlSchemaTypeType'/>
+    <enum name='XML_SCHEMA_TYPE_PARTICLE' file='schemasInternals' value='25' type='xmlSchemaTypeType'/>
     <enum name='XML_SCHEMA_TYPE_RESTRICTION' file='schemasInternals' value='12' type='xmlSchemaTypeType'/>
     <enum name='XML_SCHEMA_TYPE_SEQUENCE' file='schemasInternals' value='6' type='xmlSchemaTypeType'/>
     <enum name='XML_SCHEMA_TYPE_SIMPLE' file='schemasInternals' value='4' type='xmlSchemaTypeType'/>
@@ -6041,6 +6060,7 @@
       <field name='preserve' type='int' info=' whether to free the document'/>
       <field name='counter' type='int' info=' used to give ononymous components unique names'/>
       <field name='idcDef' type='xmlHashTablePtr' info=''/>
+      <field name='volatiles' type='void *' info=' Misc. helper items (e.g. reference items)'/>
     </struct>
     <struct name='xmlSchemaAnnot' file='schemasInternals' type='struct _xmlSchemaAnnot'>
       <field name='next' type='struct _xmlSchemaAnnot *' info=''/>
@@ -6407,7 +6427,7 @@
     <variable name='xmlXPathNAN' file='xpath' type='double'/>
     <variable name='xmlXPathNINF' file='xpath' type='double'/>
     <variable name='xmlXPathPINF' file='xpath' type='double'/>
-    <function name='UTF8ToHtml' file='HTMLparser'>
+    <function name='UTF8ToHtml' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Take a block of UTF-8 chars in and try to convert it to an ASCII plus HTML entities block of chars out.</info>
       <return type='int' info='0 if success, -2 if the transcoding fails, or -1 otherwise The value of @inlen after return is the number of octets consumed as the return value is positive, else unpredictable. The value of @outlen after return is the number of octets consumed.'/>
@@ -6416,7 +6436,7 @@
       <arg name='in' type='const unsigned char *' info='a pointer to an array of UTF-8 chars'/>
       <arg name='inlen' type='int *' info='the length of @in'/>
     </function>
-    <function name='UTF8Toisolat1' file='encoding'>
+    <function name='UTF8Toisolat1' file='encoding' module='encoding'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Take a block of UTF-8 chars in and try to convert it to an ISO Latin 1 block of chars out.</info>
       <return type='int' info='the number of bytes written if success, -2 if the transcoding fails, or -1 otherwise The value of @inlen after return is the number of octets consumed if the return value is positive, else unpredictable. The value of @outlen after return is the number of octets consumed.'/>
@@ -6425,7 +6445,7 @@
       <arg name='in' type='const unsigned char *' info='a pointer to an array of UTF-8 chars'/>
       <arg name='inlen' type='int *' info='the length of @in'/>
     </function>
-    <function name='attribute' file='SAX'>
+    <function name='attribute' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Handle an attribute that has been read by the parser. The default handling is to convert the attribute into an DOM subtree and past it in a new xmlAttr element added to the element. DEPRECATED: use xmlSAX2Attribute()</info>
       <return type='void'/>
@@ -6433,7 +6453,7 @@
       <arg name='fullname' type='const xmlChar *' info='The attribute name, including namespace prefix'/>
       <arg name='value' type='const xmlChar *' info='The attribute value'/>
     </function>
-    <function name='attributeDecl' file='SAX'>
+    <function name='attributeDecl' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>An attribute definition has been parsed DEPRECATED: use xmlSAX2AttributeDecl()</info>
       <return type='void'/>
@@ -6445,7 +6465,7 @@
       <arg name='defaultValue' type='const xmlChar *' info='the attribute default value'/>
       <arg name='tree' type='xmlEnumerationPtr' info='the tree of enumerated value set'/>
     </function>
-    <functype name='attributeDeclSAXFunc' file='parser'>
+    <functype name='attributeDeclSAXFunc' file='parser' module='parser'>
       <info>An attribute definition has been parsed.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
@@ -6456,14 +6476,14 @@
       <arg name='defaultValue' type='const xmlChar *' info='the attribute default value'/>
       <arg name='tree' type='xmlEnumerationPtr' info='the tree of enumerated value set'/>
     </functype>
-    <functype name='attributeSAXFunc' file='parser'>
+    <functype name='attributeSAXFunc' file='parser' module='parser'>
       <info>Handle an attribute that has been read by the parser. The default handling is to convert the attribute into an DOM subtree and past it in a new xmlAttr element added to the element.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='name' type='const xmlChar *' info='The attribute name, including namespace prefix'/>
       <arg name='value' type='const xmlChar *' info='The attribute value'/>
     </functype>
-    <function name='cdataBlock' file='SAX'>
+    <function name='cdataBlock' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>called when a pcdata block has been parsed DEPRECATED: use xmlSAX2CDataBlock()</info>
       <return type='void'/>
@@ -6471,14 +6491,14 @@
       <arg name='value' type='const xmlChar *' info='The pcdata content'/>
       <arg name='len' type='int' info='the block length'/>
     </function>
-    <functype name='cdataBlockSAXFunc' file='parser'>
+    <functype name='cdataBlockSAXFunc' file='parser' module='parser'>
       <info>Called when a pcdata block has been parsed.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='value' type='const xmlChar *' info='The pcdata content'/>
       <arg name='len' type='int' info='the block length'/>
     </functype>
-    <function name='characters' file='SAX'>
+    <function name='characters' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>receiving some chars from the parser. DEPRECATED: use xmlSAX2Characters()</info>
       <return type='void'/>
@@ -6486,41 +6506,41 @@
       <arg name='ch' type='const xmlChar *' info='a xmlChar string'/>
       <arg name='len' type='int' info='the number of xmlChar'/>
     </function>
-    <functype name='charactersSAXFunc' file='parser'>
+    <functype name='charactersSAXFunc' file='parser' module='parser'>
       <info>Receiving some chars from the parser.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='ch' type='const xmlChar *' info='a xmlChar string'/>
       <arg name='len' type='int' info='the number of xmlChar'/>
     </functype>
-    <function name='checkNamespace' file='SAX'>
+    <function name='checkNamespace' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Check that the current element namespace is the same as the one read upon parsing. DEPRECATED</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='namespace' type='xmlChar *' info='the namespace to check against'/>
     </function>
-    <function name='comment' file='SAX'>
+    <function name='comment' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>A comment has been parsed. DEPRECATED: use xmlSAX2Comment()</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='value' type='const xmlChar *' info='the comment content'/>
     </function>
-    <functype name='commentSAXFunc' file='parser'>
+    <functype name='commentSAXFunc' file='parser' module='parser'>
       <info>A comment has been parsed.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='value' type='const xmlChar *' info='the comment content'/>
     </functype>
-    <function name='docbCreateFileParserCtxt' file='DOCBparser'>
+    <function name='docbCreateFileParserCtxt' file='DOCBparser' module='DOCBparser'>
       <cond>defined(LIBXML_DOCB_ENABLED)</cond>
       <info>Create a parser context for a file content. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time.</info>
       <return type='docbParserCtxtPtr' info='the new parser context or NULL'/>
       <arg name='filename' type='const char *' info='the filename'/>
       <arg name='encoding' type='const char *' info='the SGML document encoding, or NULL'/>
     </function>
-    <function name='docbCreatePushParserCtxt' file='DOCBparser'>
+    <function name='docbCreatePushParserCtxt' file='DOCBparser' module='DOCBparser'>
       <cond>defined(LIBXML_DOCB_ENABLED)</cond>
       <info>Create a parser context for using the DocBook SGML parser in push mode To allow content encoding detection, @size should be &gt;= 4 The value of @filename is used for fetching external entities and error/warning reports.</info>
       <return type='docbParserCtxtPtr' info='the new parser context or NULL'/>
@@ -6531,12 +6551,12 @@
       <arg name='filename' type='const char *' info='an optional file name or URI'/>
       <arg name='enc' type='xmlCharEncoding' info='an optional encoding'/>
     </function>
-    <function name='docbDefaultSAXHandlerInit' file='SAX2'>
+    <function name='docbDefaultSAXHandlerInit' file='SAX2' module='SAX2'>
       <cond>defined(LIBXML_DOCB_ENABLED)</cond>
       <info>Initialize the default SAX handler</info>
       <return type='void'/>
     </function>
-    <function name='docbEncodeEntities' file='DOCBparser'>
+    <function name='docbEncodeEntities' file='DOCBparser' module='DOCBparser'>
       <cond>defined(LIBXML_DOCB_ENABLED)</cond>
       <info>Take a block of UTF-8 chars in and try to convert it to an ASCII plus SGML entities block of chars out.</info>
       <return type='int' info='0 if success, -2 if the transcoding fails, or -1 otherwise The value of @inlen after return is the number of octets consumed as the return value is positive, else unpredictable. The value of @outlen after return is the number of octets consumed.'/>
@@ -6546,13 +6566,13 @@
       <arg name='inlen' type='int *' info='the length of @in'/>
       <arg name='quoteChar' type='int' info='the quote character to escape (&apos; or &quot;) or zero.'/>
     </function>
-    <function name='docbFreeParserCtxt' file='DOCBparser'>
+    <function name='docbFreeParserCtxt' file='DOCBparser' module='DOCBparser'>
       <cond>defined(LIBXML_DOCB_ENABLED)</cond>
       <info>Free all the memory used by a parser context. However the parsed document in ctxt-&gt;myDoc is not freed.</info>
       <return type='void'/>
       <arg name='ctxt' type='docbParserCtxtPtr' info='an SGML parser context'/>
     </function>
-    <function name='docbParseChunk' file='DOCBparser'>
+    <function name='docbParseChunk' file='DOCBparser' module='DOCBparser'>
       <cond>defined(LIBXML_DOCB_ENABLED)</cond>
       <info>Parse a Chunk of memory</info>
       <return type='int' info='zero if no error, the xmlParserErrors otherwise.'/>
@@ -6561,27 +6581,27 @@
       <arg name='size' type='int' info='the size in byte of the chunk'/>
       <arg name='terminate' type='int' info='last chunk indicator'/>
     </function>
-    <function name='docbParseDoc' file='DOCBparser'>
+    <function name='docbParseDoc' file='DOCBparser' module='DOCBparser'>
       <cond>defined(LIBXML_DOCB_ENABLED)</cond>
       <info>parse an SGML in-memory document and build a tree.</info>
       <return type='docbDocPtr' info='the resulting document tree'/>
       <arg name='cur' type='xmlChar *' info='a pointer to an array of xmlChar'/>
       <arg name='encoding' type='const char *' info='a free form C string describing the SGML document encoding, or NULL'/>
     </function>
-    <function name='docbParseDocument' file='DOCBparser'>
+    <function name='docbParseDocument' file='DOCBparser' module='DOCBparser'>
       <cond>defined(LIBXML_DOCB_ENABLED)</cond>
       <info>parse an SGML document (and build a tree if using the standard SAX interface).</info>
       <return type='int' info='0, -1 in case of error. the parser context is augmented as a result of the parsing.'/>
       <arg name='ctxt' type='docbParserCtxtPtr' info='an SGML parser context'/>
     </function>
-    <function name='docbParseFile' file='DOCBparser'>
+    <function name='docbParseFile' file='DOCBparser' module='DOCBparser'>
       <cond>defined(LIBXML_DOCB_ENABLED)</cond>
       <info>parse a Docbook SGML file and build a tree. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time.</info>
       <return type='docbDocPtr' info='the resulting document tree'/>
       <arg name='filename' type='const char *' info='the filename'/>
       <arg name='encoding' type='const char *' info='a free form C string describing document encoding, or NULL'/>
     </function>
-    <function name='docbSAXParseDoc' file='DOCBparser'>
+    <function name='docbSAXParseDoc' file='DOCBparser' module='DOCBparser'>
       <cond>defined(LIBXML_DOCB_ENABLED)</cond>
       <info>parse an SGML in-memory document and build a tree. It use the given SAX function block to handle the parsing callback. If sax is NULL, fallback to the default DOM tree building routines.</info>
       <return type='docbDocPtr' info='the resulting document tree'/>
@@ -6590,7 +6610,7 @@
       <arg name='sax' type='docbSAXHandlerPtr' info='the SAX handler block'/>
       <arg name='userData' type='void *' info='if using SAX, this pointer will be provided on callbacks.'/>
     </function>
-    <function name='docbSAXParseFile' file='DOCBparser'>
+    <function name='docbSAXParseFile' file='DOCBparser' module='DOCBparser'>
       <cond>defined(LIBXML_DOCB_ENABLED)</cond>
       <info>parse an SGML file and build a tree. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time. It use the given SAX function block to handle the parsing callback. If sax is NULL, fallback to the default DOM tree building routines.</info>
       <return type='docbDocPtr' info='the resulting document tree'/>
@@ -6599,7 +6619,7 @@
       <arg name='sax' type='docbSAXHandlerPtr' info='the SAX handler block'/>
       <arg name='userData' type='void *' info='if using SAX, this pointer will be provided on callbacks.'/>
     </function>
-    <function name='elementDecl' file='SAX'>
+    <function name='elementDecl' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>An element definition has been parsed DEPRECATED: use xmlSAX2ElementDecl()</info>
       <return type='void'/>
@@ -6608,7 +6628,7 @@
       <arg name='type' type='int' info='the element type'/>
       <arg name='content' type='xmlElementContentPtr' info='the element value tree'/>
     </function>
-    <functype name='elementDeclSAXFunc' file='parser'>
+    <functype name='elementDeclSAXFunc' file='parser' module='parser'>
       <info>An element definition has been parsed.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
@@ -6616,25 +6636,25 @@
       <arg name='type' type='int' info='the element type'/>
       <arg name='content' type='xmlElementContentPtr' info='the element value tree'/>
     </functype>
-    <function name='endDocument' file='SAX'>
+    <function name='endDocument' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>called when the document end has been detected. DEPRECATED: use xmlSAX2EndDocument()</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </function>
-    <functype name='endDocumentSAXFunc' file='parser'>
+    <functype name='endDocumentSAXFunc' file='parser' module='parser'>
       <info>Called when the document end has been detected.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </functype>
-    <function name='endElement' file='SAX'>
+    <function name='endElement' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>called when the end of an element has been detected. DEPRECATED: use xmlSAX2EndElement()</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='name' type='const xmlChar *' info='The element name'/>
     </function>
-    <functype name='endElementNsSAX2Func' file='parser'>
+    <functype name='endElementNsSAX2Func' file='parser' module='parser'>
       <info>SAX2 callback when an element end has been detected by the parser. It provides the namespace informations for the element.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
@@ -6642,13 +6662,13 @@
       <arg name='prefix' type='const xmlChar *' info='the element namespace prefix if available'/>
       <arg name='URI' type='const xmlChar *' info='the element namespace name if available'/>
     </functype>
-    <functype name='endElementSAXFunc' file='parser'>
+    <functype name='endElementSAXFunc' file='parser' module='parser'>
       <info>Called when the end of an element has been detected.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='name' type='const xmlChar *' info='The element name'/>
     </functype>
-    <function name='entityDecl' file='SAX'>
+    <function name='entityDecl' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>An entity definition has been parsed DEPRECATED: use xmlSAX2EntityDecl()</info>
       <return type='void'/>
@@ -6659,7 +6679,7 @@
       <arg name='systemId' type='const xmlChar *' info='The system ID of the entity'/>
       <arg name='content' type='xmlChar *' info='the entity value (without processing).'/>
     </function>
-    <functype name='entityDeclSAXFunc' file='parser'>
+    <functype name='entityDeclSAXFunc' file='parser' module='parser'>
       <info>An entity definition has been parsed.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
@@ -6669,14 +6689,14 @@
       <arg name='systemId' type='const xmlChar *' info='The system ID of the entity'/>
       <arg name='content' type='xmlChar *' info='the entity value (without processing).'/>
     </functype>
-    <functype name='errorSAXFunc' file='parser'>
+    <functype name='errorSAXFunc' file='parser' module='parser'>
       <info>Display and format an error messages, callback.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='an XML parser context'/>
       <arg name='msg' type='const char *' info='the message to display/transmit'/>
       <arg name='...' type='...' info='extra parameters for the message display'/>
     </functype>
-    <function name='externalSubset' file='SAX'>
+    <function name='externalSubset' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Callback on external subset declaration. DEPRECATED: use xmlSAX2ExternalSubset()</info>
       <return type='void'/>
@@ -6685,7 +6705,7 @@
       <arg name='ExternalID' type='const xmlChar *' info='the external ID'/>
       <arg name='SystemID' type='const xmlChar *' info='the SYSTEM ID (e.g. filename or URL)'/>
     </function>
-    <functype name='externalSubsetSAXFunc' file='parser'>
+    <functype name='externalSubsetSAXFunc' file='parser' module='parser'>
       <info>Callback on external subset declaration.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
@@ -6693,14 +6713,14 @@
       <arg name='ExternalID' type='const xmlChar *' info='the external ID'/>
       <arg name='SystemID' type='const xmlChar *' info='the SYSTEM ID (e.g. filename or URL)'/>
     </functype>
-    <functype name='fatalErrorSAXFunc' file='parser'>
+    <functype name='fatalErrorSAXFunc' file='parser' module='parser'>
       <info>Display and format fatal error messages, callback. Note: so far fatalError() SAX callbacks are not used, error() get all the callbacks for errors.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='an XML parser context'/>
       <arg name='msg' type='const char *' info='the message to display/transmit'/>
       <arg name='...' type='...' info='extra parameters for the message display'/>
     </functype>
-    <functype name='ftpDataCallback' file='nanoftp'>
+    <functype name='ftpDataCallback' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>A callback for the xmlNanoFTPGet command.</info>
       <return type='void'/>
@@ -6708,7 +6728,7 @@
       <arg name='data' type='const char *' info='the data received'/>
       <arg name='len' type='int' info='its size in bytes'/>
     </functype>
-    <functype name='ftpListCallback' file='nanoftp'>
+    <functype name='ftpListCallback' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>A callback for the xmlNanoFTPList command. Note that only one of year and day:minute are specified.</info>
       <return type='void'/>
@@ -6725,63 +6745,63 @@
       <arg name='hour' type='int' info='the hour'/>
       <arg name='minute' type='int' info='the minute'/>
     </functype>
-    <function name='getColumnNumber' file='SAX'>
+    <function name='getColumnNumber' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Provide the column number of the current parsing point. DEPRECATED: use xmlSAX2GetColumnNumber()</info>
       <return type='int' info='an int'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </function>
-    <function name='getEntity' file='SAX'>
+    <function name='getEntity' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Get an entity by name DEPRECATED: use xmlSAX2GetEntity()</info>
       <return type='xmlEntityPtr' info='the xmlEntityPtr if found.'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='name' type='const xmlChar *' info='The entity name'/>
     </function>
-    <functype name='getEntitySAXFunc' file='parser'>
+    <functype name='getEntitySAXFunc' file='parser' module='parser'>
       <info>Get an entity by name.</info>
       <return type='xmlEntityPtr' info='the xmlEntityPtr if found.'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='name' type='const xmlChar *' info='The entity name'/>
     </functype>
-    <function name='getLineNumber' file='SAX'>
+    <function name='getLineNumber' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Provide the line number of the current parsing point. DEPRECATED: use xmlSAX2GetLineNumber()</info>
       <return type='int' info='an int'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </function>
-    <function name='getNamespace' file='SAX'>
+    <function name='getNamespace' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Get the current element namespace. DEPRECATED</info>
       <return type='xmlNsPtr' info='the xmlNsPtr or NULL if none'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </function>
-    <function name='getParameterEntity' file='SAX'>
+    <function name='getParameterEntity' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Get a parameter entity by name DEPRECATED: use xmlSAX2GetParameterEntity()</info>
       <return type='xmlEntityPtr' info='the xmlEntityPtr if found.'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='name' type='const xmlChar *' info='The entity name'/>
     </function>
-    <functype name='getParameterEntitySAXFunc' file='parser'>
+    <functype name='getParameterEntitySAXFunc' file='parser' module='parser'>
       <info>Get a parameter entity by name.</info>
       <return type='xmlEntityPtr' info='the xmlEntityPtr if found.'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='name' type='const xmlChar *' info='The entity name'/>
     </functype>
-    <function name='getPublicId' file='SAX'>
+    <function name='getPublicId' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Provides the public ID e.g. &quot;-//SGMLSOURCE//DTD DEMO//EN&quot; DEPRECATED: use xmlSAX2GetPublicId()</info>
       <return type='const xmlChar *' info='a xmlChar *'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </function>
-    <function name='getSystemId' file='SAX'>
+    <function name='getSystemId' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Provides the system ID, basically URL or filename e.g. http://www.sgmlsource.com/dtds/memo.dtd DEPRECATED: use xmlSAX2GetSystemId()</info>
       <return type='const xmlChar *' info='a xmlChar *'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </function>
-    <function name='globalNamespace' file='SAX'>
+    <function name='globalNamespace' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>An old global namespace has been parsed. DEPRECATED</info>
       <return type='void'/>
@@ -6789,29 +6809,29 @@
       <arg name='href' type='const xmlChar *' info='the namespace associated URN'/>
       <arg name='prefix' type='const xmlChar *' info='the namespace prefix'/>
     </function>
-    <function name='hasExternalSubset' file='SAX'>
+    <function name='hasExternalSubset' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Does this document has an external subset DEPRECATED: use xmlSAX2HasExternalSubset()</info>
       <return type='int' info='1 if true'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </function>
-    <functype name='hasExternalSubsetSAXFunc' file='parser'>
+    <functype name='hasExternalSubsetSAXFunc' file='parser' module='parser'>
       <info>Does this document has an external subset?</info>
       <return type='int' info='1 if true'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </functype>
-    <function name='hasInternalSubset' file='SAX'>
+    <function name='hasInternalSubset' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Does this document has an internal subset DEPRECATED: use xmlSAX2HasInternalSubset()</info>
       <return type='int' info='1 if true'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </function>
-    <functype name='hasInternalSubsetSAXFunc' file='parser'>
+    <functype name='hasInternalSubsetSAXFunc' file='parser' module='parser'>
       <info>Does this document has an internal subset.</info>
       <return type='int' info='1 if true'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </functype>
-    <function name='htmlAttrAllowed' file='HTMLparser'>
+    <function name='htmlAttrAllowed' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Checks whether an attribute is valid for an element Has full knowledge of Required and Deprecated attributes</info>
       <return type='htmlStatus' info='one of HTML_REQUIRED, HTML_VALID, HTML_DEPRECATED, HTML_INVALID'/>
@@ -6819,7 +6839,7 @@
       <arg name='attr' type='const xmlChar *' info='HTML attribute'/>
       <arg name='legacy' type='int' info='whether to allow deprecated attributes'/>
     </function>
-    <function name='htmlAutoCloseTag' file='HTMLparser'>
+    <function name='htmlAutoCloseTag' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>The HTML DTD allows a tag to implicitly close other tags. The list is kept in htmlStartClose array. This function checks if the element or one of it&apos;s children would autoclose the given tag.</info>
       <return type='int' info='1 if autoclose, 0 otherwise'/>
@@ -6827,21 +6847,21 @@
       <arg name='name' type='const xmlChar *' info='The tag name'/>
       <arg name='elem' type='htmlNodePtr' info='the HTML element'/>
     </function>
-    <function name='htmlCreateFileParserCtxt' file='parserInternals'>
+    <function name='htmlCreateFileParserCtxt' file='parserInternals' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Create a parser context for a file content. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time.</info>
       <return type='htmlParserCtxtPtr' info='the new parser context or NULL'/>
       <arg name='filename' type='const char *' info='the filename'/>
       <arg name='encoding' type='const char *' info='a free form C string describing the HTML document encoding, or NULL'/>
     </function>
-    <function name='htmlCreateMemoryParserCtxt' file='HTMLparser'>
+    <function name='htmlCreateMemoryParserCtxt' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Create a parser context for an HTML in-memory document.</info>
       <return type='htmlParserCtxtPtr' info='the new parser context or NULL'/>
       <arg name='buffer' type='const char *' info='a pointer to a char array'/>
       <arg name='size' type='int' info='the size of the array'/>
     </function>
-    <function name='htmlCreatePushParserCtxt' file='HTMLparser'>
+    <function name='htmlCreatePushParserCtxt' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED) &amp;&amp; defined(LIBXML_PUSH_ENABLED)</cond>
       <info>Create a parser context for using the HTML parser in push mode The value of @filename is used for fetching external entities and error/warning reports.</info>
       <return type='htmlParserCtxtPtr' info='the new parser context or NULL'/>
@@ -6852,7 +6872,7 @@
       <arg name='filename' type='const char *' info='an optional file name or URI'/>
       <arg name='enc' type='xmlCharEncoding' info='an optional encoding'/>
     </function>
-    <function name='htmlCtxtReadDoc' file='HTMLparser'>
+    <function name='htmlCtxtReadDoc' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>parse an XML in-memory document and build a tree. This reuses the existing @ctxt parser context</info>
       <return type='htmlDocPtr' info='the resulting document tree'/>
@@ -6862,7 +6882,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of htmlParserOption(s)'/>
     </function>
-    <function name='htmlCtxtReadFd' file='HTMLparser'>
+    <function name='htmlCtxtReadFd' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>parse an XML from a file descriptor and build a tree. This reuses the existing @ctxt parser context</info>
       <return type='htmlDocPtr' info='the resulting document tree'/>
@@ -6872,7 +6892,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of htmlParserOption(s)'/>
     </function>
-    <function name='htmlCtxtReadFile' file='HTMLparser'>
+    <function name='htmlCtxtReadFile' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>parse an XML file from the filesystem or the network. This reuses the existing @ctxt parser context</info>
       <return type='htmlDocPtr' info='the resulting document tree'/>
@@ -6881,7 +6901,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of htmlParserOption(s)'/>
     </function>
-    <function name='htmlCtxtReadIO' file='HTMLparser'>
+    <function name='htmlCtxtReadIO' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>parse an HTML document from I/O functions and source and build a tree. This reuses the existing @ctxt parser context</info>
       <return type='htmlDocPtr' info='the resulting document tree'/>
@@ -6893,7 +6913,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of htmlParserOption(s)'/>
     </function>
-    <function name='htmlCtxtReadMemory' file='HTMLparser'>
+    <function name='htmlCtxtReadMemory' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>parse an XML in-memory document and build a tree. This reuses the existing @ctxt parser context</info>
       <return type='htmlDocPtr' info='the resulting document tree'/>
@@ -6904,25 +6924,25 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of htmlParserOption(s)'/>
     </function>
-    <function name='htmlCtxtReset' file='HTMLparser'>
+    <function name='htmlCtxtReset' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Reset a parser context</info>
       <return type='void'/>
       <arg name='ctxt' type='htmlParserCtxtPtr' info='an HTML parser context'/>
     </function>
-    <function name='htmlCtxtUseOptions' file='HTMLparser'>
+    <function name='htmlCtxtUseOptions' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Applies the options to the parser context</info>
       <return type='int' info='0 in case of success, the set of unknown or unimplemented options in case of error.'/>
       <arg name='ctxt' type='htmlParserCtxtPtr' info='an HTML parser context'/>
       <arg name='options' type='int' info='a combination of htmlParserOption(s)'/>
     </function>
-    <function name='htmlDefaultSAXHandlerInit' file='SAX2'>
+    <function name='htmlDefaultSAXHandlerInit' file='SAX2' module='SAX2'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Initialize the default SAX handler</info>
       <return type='void'/>
     </function>
-    <function name='htmlDocContentDumpFormatOutput' file='HTMLtree'>
+    <function name='htmlDocContentDumpFormatOutput' file='HTMLtree' module='HTMLtree'>
       <cond>defined(LIBXML_HTML_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an HTML document.</info>
       <return type='void'/>
@@ -6931,7 +6951,7 @@
       <arg name='encoding' type='const char *' info='the encoding string'/>
       <arg name='format' type='int' info='should formatting spaces been added'/>
     </function>
-    <function name='htmlDocContentDumpOutput' file='HTMLtree'>
+    <function name='htmlDocContentDumpOutput' file='HTMLtree' module='HTMLtree'>
       <cond>defined(LIBXML_HTML_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an HTML document. Formating return/spaces are added.</info>
       <return type='void'/>
@@ -6939,14 +6959,14 @@
       <arg name='cur' type='xmlDocPtr' info='the document'/>
       <arg name='encoding' type='const char *' info='the encoding string'/>
     </function>
-    <function name='htmlDocDump' file='HTMLtree'>
+    <function name='htmlDocDump' file='HTMLtree' module='HTMLtree'>
       <cond>defined(LIBXML_HTML_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an HTML document to an open FILE.</info>
       <return type='int' info='the number of byte written or -1 in case of failure.'/>
       <arg name='f' type='FILE *' info='the FILE*'/>
       <arg name='cur' type='xmlDocPtr' info='the document'/>
     </function>
-    <function name='htmlDocDumpMemory' file='HTMLtree'>
+    <function name='htmlDocDumpMemory' file='HTMLtree' module='HTMLtree'>
       <cond>defined(LIBXML_HTML_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an HTML document in memory and return the xmlChar * and it&apos;s size. It&apos;s up to the caller to free the memory.</info>
       <return type='void'/>
@@ -6954,21 +6974,21 @@
       <arg name='mem' type='xmlChar **' info='OUT: the memory pointer'/>
       <arg name='size' type='int *' info='OUT: the memory length'/>
     </function>
-    <function name='htmlElementAllowedHere' file='HTMLparser'>
+    <function name='htmlElementAllowedHere' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Checks whether an HTML element may be a direct child of a parent element. Note - doesn&apos;t check for deprecated elements</info>
       <return type='int' info='1 if allowed; 0 otherwise.'/>
       <arg name='parent' type='const htmlElemDesc *' info='HTML parent element'/>
       <arg name='elt' type='const xmlChar *' info='HTML element'/>
     </function>
-    <function name='htmlElementStatusHere' file='HTMLparser'>
+    <function name='htmlElementStatusHere' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Checks whether an HTML element may be a direct child of a parent element. and if so whether it is valid or deprecated.</info>
       <return type='htmlStatus' info='one of HTML_VALID, HTML_DEPRECATED, HTML_INVALID'/>
       <arg name='parent' type='const htmlElemDesc *' info='HTML parent element'/>
       <arg name='elt' type='const htmlElemDesc *' info='HTML element'/>
     </function>
-    <function name='htmlEncodeEntities' file='HTMLparser'>
+    <function name='htmlEncodeEntities' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Take a block of UTF-8 chars in and try to convert it to an ASCII plus HTML entities block of chars out.</info>
       <return type='int' info='0 if success, -2 if the transcoding fails, or -1 otherwise The value of @inlen after return is the number of octets consumed as the return value is positive, else unpredictable. The value of @outlen after return is the number of octets consumed.'/>
@@ -6978,75 +6998,75 @@
       <arg name='inlen' type='int *' info='the length of @in'/>
       <arg name='quoteChar' type='int' info='the quote character to escape (&apos; or &quot;) or zero.'/>
     </function>
-    <function name='htmlEntityLookup' file='HTMLparser'>
+    <function name='htmlEntityLookup' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Lookup the given entity in EntitiesTable  TODO: the linear scan is really ugly, an hash table is really needed.</info>
       <return type='const htmlEntityDesc *' info='the associated htmlEntityDescPtr if found, NULL otherwise.'/>
       <arg name='name' type='const xmlChar *' info='the entity name'/>
     </function>
-    <function name='htmlEntityValueLookup' file='HTMLparser'>
+    <function name='htmlEntityValueLookup' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Lookup the given entity in EntitiesTable  TODO: the linear scan is really ugly, an hash table is really needed.</info>
       <return type='const htmlEntityDesc *' info='the associated htmlEntityDescPtr if found, NULL otherwise.'/>
       <arg name='value' type='unsigned int' info='the entity&apos;s unicode value'/>
     </function>
-    <function name='htmlFreeParserCtxt' file='HTMLparser'>
+    <function name='htmlFreeParserCtxt' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Free all the memory used by a parser context. However the parsed document in ctxt-&gt;myDoc is not freed.</info>
       <return type='void'/>
       <arg name='ctxt' type='htmlParserCtxtPtr' info='an HTML parser context'/>
     </function>
-    <function name='htmlGetMetaEncoding' file='HTMLtree'>
+    <function name='htmlGetMetaEncoding' file='HTMLtree' module='HTMLtree'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Encoding definition lookup in the Meta tags</info>
       <return type='const xmlChar *' info='the current encoding as flagged in the HTML source'/>
       <arg name='doc' type='htmlDocPtr' info='the document'/>
     </function>
-    <function name='htmlHandleOmittedElem' file='HTMLparser'>
+    <function name='htmlHandleOmittedElem' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Set and return the previous value for handling HTML omitted tags.</info>
       <return type='int' info='the last value for 0 for no handling, 1 for auto insertion.'/>
       <arg name='val' type='int' info='int 0 or 1'/>
     </function>
-    <function name='htmlInitAutoClose' file='parserInternals'>
+    <function name='htmlInitAutoClose' file='parserInternals' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Initialize the htmlStartCloseIndex for fast lookup of closing tags names. This is not reentrant. Call xmlInitParser() once before processing in case of use in multithreaded programs.</info>
       <return type='void'/>
     </function>
-    <function name='htmlIsAutoClosed' file='HTMLparser'>
+    <function name='htmlIsAutoClosed' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>The HTML DTD allows a tag to implicitly close other tags. The list is kept in htmlStartClose array. This function checks if a tag is autoclosed by one of it&apos;s child</info>
       <return type='int' info='1 if autoclosed, 0 otherwise'/>
       <arg name='doc' type='htmlDocPtr' info='the HTML document'/>
       <arg name='elem' type='htmlNodePtr' info='the HTML element'/>
     </function>
-    <function name='htmlIsBooleanAttr' file='HTMLtree'>
+    <function name='htmlIsBooleanAttr' file='HTMLtree' module='HTMLtree'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Determine if a given attribute is a boolean attribute.</info>
       <return type='int' info='false if the attribute is not boolean, true otherwise.'/>
       <arg name='name' type='const xmlChar *' info='the name of the attribute to check'/>
     </function>
-    <function name='htmlIsScriptAttribute' file='HTMLparser'>
+    <function name='htmlIsScriptAttribute' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Check if an attribute is of content type Script</info>
       <return type='int' info='1 is the attribute is a script 0 otherwise'/>
       <arg name='name' type='const xmlChar *' info='an attribute name'/>
     </function>
-    <function name='htmlNewDoc' file='HTMLtree'>
+    <function name='htmlNewDoc' file='HTMLtree' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Creates a new HTML document</info>
       <return type='htmlDocPtr' info='a new document'/>
       <arg name='URI' type='const xmlChar *' info='URI for the dtd, or NULL'/>
       <arg name='ExternalID' type='const xmlChar *' info='the external ID of the DTD, or NULL'/>
     </function>
-    <function name='htmlNewDocNoDtD' file='HTMLtree'>
+    <function name='htmlNewDocNoDtD' file='HTMLtree' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Creates a new HTML document without a DTD node if @URI and @ExternalID are NULL</info>
       <return type='htmlDocPtr' info='a new document, do not initialize the DTD if not provided'/>
       <arg name='URI' type='const xmlChar *' info='URI for the dtd, or NULL'/>
       <arg name='ExternalID' type='const xmlChar *' info='the external ID of the DTD, or NULL'/>
     </function>
-    <function name='htmlNodeDump' file='HTMLtree'>
+    <function name='htmlNodeDump' file='HTMLtree' module='HTMLtree'>
       <cond>defined(LIBXML_HTML_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an HTML node, recursive behaviour,children are printed too, and formatting returns are added.</info>
       <return type='int' info='the number of byte written or -1 in case of error'/>
@@ -7054,7 +7074,7 @@
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='cur' type='xmlNodePtr' info='the current node'/>
     </function>
-    <function name='htmlNodeDumpFile' file='HTMLtree'>
+    <function name='htmlNodeDumpFile' file='HTMLtree' module='HTMLtree'>
       <cond>defined(LIBXML_HTML_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an HTML node, recursive behaviour,children are printed too, and formatting returns are added.</info>
       <return type='void'/>
@@ -7062,7 +7082,7 @@
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='cur' type='xmlNodePtr' info='the current node'/>
     </function>
-    <function name='htmlNodeDumpFileFormat' file='HTMLtree'>
+    <function name='htmlNodeDumpFileFormat' file='HTMLtree' module='HTMLtree'>
       <cond>defined(LIBXML_HTML_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an HTML node, recursive behaviour,children are printed too.  TODO: if encoding == NULL try to save in the doc encoding</info>
       <return type='int' info='the number of byte written or -1 in case of failure.'/>
@@ -7072,7 +7092,7 @@
       <arg name='encoding' type='const char *' info='the document encoding'/>
       <arg name='format' type='int' info='should formatting spaces been added'/>
     </function>
-    <function name='htmlNodeDumpFormatOutput' file='HTMLtree'>
+    <function name='htmlNodeDumpFormatOutput' file='HTMLtree' module='HTMLtree'>
       <cond>defined(LIBXML_HTML_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an HTML node, recursive behaviour,children are printed too.</info>
       <return type='void'/>
@@ -7082,7 +7102,7 @@
       <arg name='encoding' type='const char *' info='the encoding string'/>
       <arg name='format' type='int' info='should formatting spaces been added'/>
     </function>
-    <function name='htmlNodeDumpOutput' file='HTMLtree'>
+    <function name='htmlNodeDumpOutput' file='HTMLtree' module='HTMLtree'>
       <cond>defined(LIBXML_HTML_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an HTML node, recursive behaviour,children are printed too, and formatting returns/spaces are added.</info>
       <return type='void'/>
@@ -7091,20 +7111,20 @@
       <arg name='cur' type='xmlNodePtr' info='the current node'/>
       <arg name='encoding' type='const char *' info='the encoding string'/>
     </function>
-    <function name='htmlNodeStatus' file='HTMLparser'>
+    <function name='htmlNodeStatus' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Checks whether the tree node is valid.  Experimental (the author only uses the HTML enhancements in a SAX parser)</info>
       <return type='htmlStatus' info='for Element nodes, a return from htmlElementAllowedHere (if legacy allowed) or htmlElementStatusHere (otherwise). for Attribute nodes, a return from htmlAttrAllowed for other nodes, HTML_NA (no checks performed)'/>
       <arg name='node' type='const htmlNodePtr' info='an htmlNodePtr in a tree'/>
       <arg name='legacy' type='int' info='whether to allow deprecated elements (YES is faster here for Element nodes)'/>
     </function>
-    <function name='htmlParseCharRef' file='HTMLparser'>
+    <function name='htmlParseCharRef' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>parse Reference declarations  [66] CharRef ::= &apos;&amp;#&apos; [0-9]+ &apos;;&apos; | &apos;&amp;#x&apos; [0-9a-fA-F]+ &apos;;&apos;</info>
       <return type='int' info='the value parsed (as an int)'/>
       <arg name='ctxt' type='htmlParserCtxtPtr' info='an HTML parser context'/>
     </function>
-    <function name='htmlParseChunk' file='HTMLparser'>
+    <function name='htmlParseChunk' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED) &amp;&amp; defined(LIBXML_PUSH_ENABLED)</cond>
       <info>Parse a Chunk of memory</info>
       <return type='int' info='zero if no error, the xmlParserErrors otherwise.'/>
@@ -7113,40 +7133,40 @@
       <arg name='size' type='int' info='the size in byte of the chunk'/>
       <arg name='terminate' type='int' info='last chunk indicator'/>
     </function>
-    <function name='htmlParseDoc' file='HTMLparser'>
+    <function name='htmlParseDoc' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>parse an HTML in-memory document and build a tree.</info>
       <return type='htmlDocPtr' info='the resulting document tree'/>
       <arg name='cur' type='xmlChar *' info='a pointer to an array of xmlChar'/>
       <arg name='encoding' type='const char *' info='a free form C string describing the HTML document encoding, or NULL'/>
     </function>
-    <function name='htmlParseDocument' file='HTMLparser'>
+    <function name='htmlParseDocument' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>parse an HTML document (and build a tree if using the standard SAX interface).</info>
       <return type='int' info='0, -1 in case of error. the parser context is augmented as a result of the parsing.'/>
       <arg name='ctxt' type='htmlParserCtxtPtr' info='an HTML parser context'/>
     </function>
-    <function name='htmlParseElement' file='HTMLparser'>
+    <function name='htmlParseElement' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>parse an HTML element, this is highly recursive  [39] element ::= EmptyElemTag | STag content ETag  [41] Attribute ::= Name Eq AttValue</info>
       <return type='void'/>
       <arg name='ctxt' type='htmlParserCtxtPtr' info='an HTML parser context'/>
     </function>
-    <function name='htmlParseEntityRef' file='HTMLparser'>
+    <function name='htmlParseEntityRef' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>parse an HTML ENTITY references  [68] EntityRef ::= &apos;&amp;&apos; Name &apos;;&apos;</info>
       <return type='const htmlEntityDesc *' info='the associated htmlEntityDescPtr if found, or NULL otherwise, if non-NULL *str will have to be freed by the caller.'/>
       <arg name='ctxt' type='htmlParserCtxtPtr' info='an HTML parser context'/>
       <arg name='str' type='const xmlChar **' info='location to store the entity name'/>
     </function>
-    <function name='htmlParseFile' file='HTMLparser'>
+    <function name='htmlParseFile' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>parse an HTML file and build a tree. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time.</info>
       <return type='htmlDocPtr' info='the resulting document tree'/>
       <arg name='filename' type='const char *' info='the filename'/>
       <arg name='encoding' type='const char *' info='a free form C string describing the HTML document encoding, or NULL'/>
     </function>
-    <function name='htmlReadDoc' file='HTMLparser'>
+    <function name='htmlReadDoc' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>parse an XML in-memory document and build a tree.</info>
       <return type='htmlDocPtr' info='the resulting document tree'/>
@@ -7155,7 +7175,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of htmlParserOption(s)'/>
     </function>
-    <function name='htmlReadFd' file='HTMLparser'>
+    <function name='htmlReadFd' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>parse an XML from a file descriptor and build a tree.</info>
       <return type='htmlDocPtr' info='the resulting document tree'/>
@@ -7164,7 +7184,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of htmlParserOption(s)'/>
     </function>
-    <function name='htmlReadFile' file='HTMLparser'>
+    <function name='htmlReadFile' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>parse an XML file from the filesystem or the network.</info>
       <return type='htmlDocPtr' info='the resulting document tree'/>
@@ -7172,7 +7192,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of htmlParserOption(s)'/>
     </function>
-    <function name='htmlReadIO' file='HTMLparser'>
+    <function name='htmlReadIO' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>parse an HTML document from I/O functions and source and build a tree.</info>
       <return type='htmlDocPtr' info='the resulting document tree'/>
@@ -7183,7 +7203,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of htmlParserOption(s)'/>
     </function>
-    <function name='htmlReadMemory' file='HTMLparser'>
+    <function name='htmlReadMemory' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>parse an XML in-memory document and build a tree.</info>
       <return type='htmlDocPtr' info='the resulting document tree'/>
@@ -7193,7 +7213,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of htmlParserOption(s)'/>
     </function>
-    <function name='htmlSAXParseDoc' file='HTMLparser'>
+    <function name='htmlSAXParseDoc' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Parse an HTML in-memory document. If sax is not NULL, use the SAX callbacks to handle parse events. If sax is NULL, fallback to the default DOM behavior and return a tree.</info>
       <return type='htmlDocPtr' info='the resulting document tree unless SAX is NULL or the document is not well formed.'/>
@@ -7202,7 +7222,7 @@
       <arg name='sax' type='htmlSAXHandlerPtr' info='the SAX handler block'/>
       <arg name='userData' type='void *' info='if using SAX, this pointer will be provided on callbacks.'/>
     </function>
-    <function name='htmlSAXParseFile' file='HTMLparser'>
+    <function name='htmlSAXParseFile' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>parse an HTML file and build a tree. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time. It use the given SAX function block to handle the parsing callback. If sax is NULL, fallback to the default DOM tree building routines.</info>
       <return type='htmlDocPtr' info='the resulting document tree unless SAX is NULL or the document is not well formed.'/>
@@ -7211,14 +7231,14 @@
       <arg name='sax' type='htmlSAXHandlerPtr' info='the SAX handler block'/>
       <arg name='userData' type='void *' info='if using SAX, this pointer will be provided on callbacks.'/>
     </function>
-    <function name='htmlSaveFile' file='HTMLtree'>
+    <function name='htmlSaveFile' file='HTMLtree' module='HTMLtree'>
       <cond>defined(LIBXML_HTML_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an HTML document to a file. If @filename is &quot;-&quot; the stdout file is used.</info>
       <return type='int' info='the number of byte written or -1 in case of failure.'/>
       <arg name='filename' type='const char *' info='the filename (or URL)'/>
       <arg name='cur' type='xmlDocPtr' info='the document'/>
     </function>
-    <function name='htmlSaveFileEnc' file='HTMLtree'>
+    <function name='htmlSaveFileEnc' file='HTMLtree' module='HTMLtree'>
       <cond>defined(LIBXML_HTML_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an HTML document to a file using a given encoding and formatting returns/spaces are added.</info>
       <return type='int' info='the number of byte written or -1 in case of failure.'/>
@@ -7226,7 +7246,7 @@
       <arg name='cur' type='xmlDocPtr' info='the document'/>
       <arg name='encoding' type='const char *' info='the document encoding'/>
     </function>
-    <function name='htmlSaveFileFormat' file='HTMLtree'>
+    <function name='htmlSaveFileFormat' file='HTMLtree' module='HTMLtree'>
       <cond>defined(LIBXML_HTML_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an HTML document to a file using a given encoding.</info>
       <return type='int' info='the number of byte written or -1 in case of failure.'/>
@@ -7235,20 +7255,20 @@
       <arg name='encoding' type='const char *' info='the document encoding'/>
       <arg name='format' type='int' info='should formatting spaces been added'/>
     </function>
-    <function name='htmlSetMetaEncoding' file='HTMLtree'>
+    <function name='htmlSetMetaEncoding' file='HTMLtree' module='HTMLtree'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Sets the current encoding in the Meta tags NOTE: this will not change the document content encoding, just the META flag associated.</info>
       <return type='int' info='0 in case of success and -1 in case of error'/>
       <arg name='doc' type='htmlDocPtr' info='the document'/>
       <arg name='encoding' type='const xmlChar *' info='the encoding string'/>
     </function>
-    <function name='htmlTagLookup' file='HTMLparser'>
+    <function name='htmlTagLookup' file='HTMLparser' module='HTMLparser'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Lookup the HTML tag in the ElementTable</info>
       <return type='const htmlElemDesc *' info='the related htmlElemDescPtr or NULL if not found.'/>
       <arg name='tag' type='const xmlChar *' info='The tag name in lowercase'/>
     </function>
-    <function name='ignorableWhitespace' file='SAX'>
+    <function name='ignorableWhitespace' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>receiving some ignorable whitespaces from the parser. UNUSED: by default the DOM building will use characters DEPRECATED: use xmlSAX2IgnorableWhitespace()</info>
       <return type='void'/>
@@ -7256,49 +7276,49 @@
       <arg name='ch' type='const xmlChar *' info='a xmlChar string'/>
       <arg name='len' type='int' info='the number of xmlChar'/>
     </function>
-    <functype name='ignorableWhitespaceSAXFunc' file='parser'>
+    <functype name='ignorableWhitespaceSAXFunc' file='parser' module='parser'>
       <info>Receiving some ignorable whitespaces from the parser. UNUSED: by default the DOM building will use characters.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='ch' type='const xmlChar *' info='a xmlChar string'/>
       <arg name='len' type='int' info='the number of xmlChar'/>
     </functype>
-    <function name='initGenericErrorDefaultFunc' file='xmlerror'>
+    <function name='initGenericErrorDefaultFunc' file='xmlerror' module='error'>
       <info>Set or reset (if NULL) the default handler for generic errors to the builtin error function.</info>
       <return type='void'/>
       <arg name='handler' type='xmlGenericErrorFunc *' info='the handler'/>
     </function>
-    <function name='initdocbDefaultSAXHandler' file='SAX'>
+    <function name='initdocbDefaultSAXHandler' file='SAX' module='SAX'>
       <cond>defined(LIBXML_LEGACY_ENABLED) &amp;&amp; defined(LIBXML_SAX1_ENABLED) &amp;&amp; defined(LIBXML_DOCB_ENABLED)</cond>
       <info>Initialize the default DocBook SAX version 1 handler DEPRECATED: use xmlSAX2InitDocbDefaultSAXHandler() for the new SAX2 blocks</info>
       <return type='void'/>
       <arg name='hdlr' type='xmlSAXHandlerV1 *' info='the SAX handler'/>
     </function>
-    <function name='inithtmlDefaultSAXHandler' file='SAX'>
+    <function name='inithtmlDefaultSAXHandler' file='SAX' module='SAX'>
       <cond>defined(LIBXML_LEGACY_ENABLED) &amp;&amp; defined(LIBXML_SAX1_ENABLED) &amp;&amp; defined(LIBXML_HTML_ENABLED)</cond>
       <info>Initialize the default HTML SAX version 1 handler DEPRECATED: use xmlSAX2InitHtmlDefaultSAXHandler() for the new SAX2 blocks</info>
       <return type='void'/>
       <arg name='hdlr' type='xmlSAXHandlerV1 *' info='the SAX handler'/>
     </function>
-    <function name='initxmlDefaultSAXHandler' file='SAX'>
+    <function name='initxmlDefaultSAXHandler' file='SAX' module='SAX'>
       <cond>defined(LIBXML_LEGACY_ENABLED) &amp;&amp; defined(LIBXML_SAX1_ENABLED)</cond>
       <info>Initialize the default XML SAX version 1 handler DEPRECATED: use xmlSAX2InitDefaultSAXHandler() for the new SAX2 blocks</info>
       <return type='void'/>
       <arg name='hdlr' type='xmlSAXHandlerV1 *' info='the SAX handler'/>
       <arg name='warning' type='int' info='flag if non-zero sets the handler warning procedure'/>
     </function>
-    <function name='inputPop' file='parserInternals'>
+    <function name='inputPop' file='parserInternals' module='parser'>
       <info>Pops the top parser input from the input stack</info>
       <return type='xmlParserInputPtr' info='the input just removed'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='inputPush' file='parserInternals'>
+    <function name='inputPush' file='parserInternals' module='parser'>
       <info>Pushes a new parser input on top of the input stack</info>
       <return type='int' info='0 in case of error, the index in the stack otherwise'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='value' type='xmlParserInputPtr' info='the parser input'/>
     </function>
-    <function name='internalSubset' file='SAX'>
+    <function name='internalSubset' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Callback on internal subset declaration. DEPRECATED: use xmlSAX2InternalSubset()</info>
       <return type='void'/>
@@ -7307,7 +7327,7 @@
       <arg name='ExternalID' type='const xmlChar *' info='the external ID'/>
       <arg name='SystemID' type='const xmlChar *' info='the SYSTEM ID (e.g. filename or URL)'/>
     </function>
-    <functype name='internalSubsetSAXFunc' file='parser'>
+    <functype name='internalSubsetSAXFunc' file='parser' module='parser'>
       <info>Callback on internal subset declaration.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
@@ -7315,18 +7335,18 @@
       <arg name='ExternalID' type='const xmlChar *' info='the external ID'/>
       <arg name='SystemID' type='const xmlChar *' info='the SYSTEM ID (e.g. filename or URL)'/>
     </functype>
-    <function name='isStandalone' file='SAX'>
+    <function name='isStandalone' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Is this document tagged standalone ? DEPRECATED: use xmlSAX2IsStandalone()</info>
       <return type='int' info='1 if true'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </function>
-    <functype name='isStandaloneSAXFunc' file='parser'>
+    <functype name='isStandaloneSAXFunc' file='parser' module='parser'>
       <info>Is this document tagged standalone?</info>
       <return type='int' info='1 if true'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </functype>
-    <function name='isolat1ToUTF8' file='encoding'>
+    <function name='isolat1ToUTF8' file='encoding' module='encoding'>
       <info>Take a block of ISO Latin 1 chars in and try to convert it to an UTF-8 block of chars out.</info>
       <return type='int' info='the number of bytes written if success, or -1 otherwise The value of @inlen after return is the number of octets consumed if the return value is positive, else unpredictable. The value of @outlen after return is the number of octets consumed.'/>
       <arg name='out' type='unsigned char *' info='a pointer to an array of bytes to store the result'/>
@@ -7334,18 +7354,18 @@
       <arg name='in' type='const unsigned char *' info='a pointer to an array of ISO Latin 1 chars'/>
       <arg name='inlen' type='int *' info='the length of @in'/>
     </function>
-    <function name='namePop' file='parserInternals'>
+    <function name='namePop' file='parserInternals' module='parser'>
       <info>Pops the top element name from the name stack</info>
       <return type='const xmlChar *' info='the name just removed'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='namePush' file='parserInternals'>
+    <function name='namePush' file='parserInternals' module='parser'>
       <info>Pushes a new element name on top of the name stack</info>
       <return type='int' info='-1 in case of error, the index in the stack otherwise'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='value' type='const xmlChar *' info='the element name'/>
     </function>
-    <function name='namespaceDecl' file='SAX'>
+    <function name='namespaceDecl' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>A namespace has been parsed. DEPRECATED</info>
       <return type='void'/>
@@ -7353,18 +7373,18 @@
       <arg name='href' type='const xmlChar *' info='the namespace associated URN'/>
       <arg name='prefix' type='const xmlChar *' info='the namespace prefix'/>
     </function>
-    <function name='nodePop' file='parserInternals'>
+    <function name='nodePop' file='parserInternals' module='parser'>
       <info>Pops the top element node from the node stack</info>
       <return type='xmlNodePtr' info='the node just removed'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='nodePush' file='parserInternals'>
+    <function name='nodePush' file='parserInternals' module='parser'>
       <info>Pushes a new element node on top of the node stack</info>
       <return type='int' info='0 in case of error, the index in the stack otherwise'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='value' type='xmlNodePtr' info='the element node'/>
     </function>
-    <function name='notationDecl' file='SAX'>
+    <function name='notationDecl' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>What to do when a notation declaration has been parsed. DEPRECATED: use xmlSAX2NotationDecl()</info>
       <return type='void'/>
@@ -7373,7 +7393,7 @@
       <arg name='publicId' type='const xmlChar *' info='The public ID of the entity'/>
       <arg name='systemId' type='const xmlChar *' info='The system ID of the entity'/>
     </function>
-    <functype name='notationDeclSAXFunc' file='parser'>
+    <functype name='notationDeclSAXFunc' file='parser' module='parser'>
       <info>What to do when a notation declaration has been parsed.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
@@ -7381,7 +7401,7 @@
       <arg name='publicId' type='const xmlChar *' info='The public ID of the entity'/>
       <arg name='systemId' type='const xmlChar *' info='The system ID of the entity'/>
     </functype>
-    <function name='processingInstruction' file='SAX'>
+    <function name='processingInstruction' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>A processing instruction has been parsed. DEPRECATED: use xmlSAX2ProcessingInstruction()</info>
       <return type='void'/>
@@ -7389,27 +7409,27 @@
       <arg name='target' type='const xmlChar *' info='the target name'/>
       <arg name='data' type='const xmlChar *' info='the PI data&apos;s'/>
     </function>
-    <functype name='processingInstructionSAXFunc' file='parser'>
+    <functype name='processingInstructionSAXFunc' file='parser' module='parser'>
       <info>A processing instruction has been parsed.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='target' type='const xmlChar *' info='the target name'/>
       <arg name='data' type='const xmlChar *' info='the PI data&apos;s'/>
     </functype>
-    <function name='reference' file='SAX'>
+    <function name='reference' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>called when an entity reference is detected. DEPRECATED: use xmlSAX2Reference()</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='name' type='const xmlChar *' info='The entity name'/>
     </function>
-    <functype name='referenceSAXFunc' file='parser'>
+    <functype name='referenceSAXFunc' file='parser' module='parser'>
       <info>Called when an entity reference is detected.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='name' type='const xmlChar *' info='The entity name'/>
     </functype>
-    <function name='resolveEntity' file='SAX'>
+    <function name='resolveEntity' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>The entity loader, to control the loading of external entities, the application can either: - override this resolveEntity() callback in the SAX block - or better use the xmlSetExternalEntityLoader() function to set up it&apos;s own entity resolution routine DEPRECATED: use xmlSAX2ResolveEntity()</info>
       <return type='xmlParserInputPtr' info='the xmlParserInputPtr if inlined or NULL for DOM behaviour.'/>
@@ -7417,45 +7437,45 @@
       <arg name='publicId' type='const xmlChar *' info='The public ID of the entity'/>
       <arg name='systemId' type='const xmlChar *' info='The system ID of the entity'/>
     </function>
-    <functype name='resolveEntitySAXFunc' file='parser'>
+    <functype name='resolveEntitySAXFunc' file='parser' module='parser'>
       <info>Callback: The entity loader, to control the loading of external entities, the application can either: - override this resolveEntity() callback in the SAX block - or better use the xmlSetExternalEntityLoader() function to set up it&apos;s own entity resolution routine</info>
       <return type='xmlParserInputPtr' info='the xmlParserInputPtr if inlined or NULL for DOM behaviour.'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='publicId' type='const xmlChar *' info='The public ID of the entity'/>
       <arg name='systemId' type='const xmlChar *' info='The system ID of the entity'/>
     </functype>
-    <function name='setDocumentLocator' file='SAX'>
+    <function name='setDocumentLocator' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Receive the document locator at startup, actually xmlDefaultSAXLocator Everything is available on the context, so this is useless in our case. DEPRECATED</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='loc' type='xmlSAXLocatorPtr' info='A SAX Locator'/>
     </function>
-    <functype name='setDocumentLocatorSAXFunc' file='parser'>
+    <functype name='setDocumentLocatorSAXFunc' file='parser' module='parser'>
       <info>Receive the document locator at startup, actually xmlDefaultSAXLocator. Everything is available on the context, so this is useless in our case.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='loc' type='xmlSAXLocatorPtr' info='A SAX Locator'/>
     </functype>
-    <function name='setNamespace' file='SAX'>
+    <function name='setNamespace' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Set the current element namespace. DEPRECATED</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='name' type='const xmlChar *' info='the namespace prefix'/>
     </function>
-    <function name='startDocument' file='SAX'>
+    <function name='startDocument' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>called when the document start being processed. DEPRECATED: use xmlSAX2StartDocument()</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </function>
-    <functype name='startDocumentSAXFunc' file='parser'>
+    <functype name='startDocumentSAXFunc' file='parser' module='parser'>
       <info>Called when the document start being processed.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </functype>
-    <function name='startElement' file='SAX'>
+    <function name='startElement' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>called when an opening tag has been processed. DEPRECATED: use xmlSAX2StartElement()</info>
       <return type='void'/>
@@ -7463,7 +7483,7 @@
       <arg name='fullname' type='const xmlChar *' info='The element name, including namespace prefix'/>
       <arg name='atts' type='const xmlChar **' info='An array of name/value attributes pairs, NULL terminated'/>
     </function>
-    <functype name='startElementNsSAX2Func' file='parser'>
+    <functype name='startElementNsSAX2Func' file='parser' module='parser'>
       <info>SAX2 callback when an element start has been detected by the parser. It provides the namespace informations for the element, as well as the new namespace declarations on the element.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
@@ -7476,14 +7496,14 @@
       <arg name='nb_defaulted' type='int' info='the number of defaulted attributes. The defaulted ones are at the end of the array'/>
       <arg name='attributes' type='const xmlChar **' info='pointer to the array of (localname/prefix/URI/value/end) attribute values.'/>
     </functype>
-    <functype name='startElementSAXFunc' file='parser'>
+    <functype name='startElementSAXFunc' file='parser' module='parser'>
       <info>Called when an opening tag has been processed.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='name' type='const xmlChar *' info='The element name, including namespace prefix'/>
       <arg name='atts' type='const xmlChar **' info='An array of name/value attributes pairs, NULL terminated'/>
     </functype>
-    <function name='unparsedEntityDecl' file='SAX'>
+    <function name='unparsedEntityDecl' file='SAX' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>What to do when an unparsed entity declaration is parsed DEPRECATED: use xmlSAX2UnparsedEntityDecl()</info>
       <return type='void'/>
@@ -7493,7 +7513,7 @@
       <arg name='systemId' type='const xmlChar *' info='The system ID of the entity'/>
       <arg name='notationName' type='const xmlChar *' info='the name of the notation'/>
     </function>
-    <functype name='unparsedEntityDeclSAXFunc' file='parser'>
+    <functype name='unparsedEntityDeclSAXFunc' file='parser' module='parser'>
       <info>What to do when an unparsed entity declaration is parsed.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
@@ -7502,27 +7522,27 @@
       <arg name='systemId' type='const xmlChar *' info='The system ID of the entity'/>
       <arg name='notationName' type='const xmlChar *' info='the name of the notation'/>
     </functype>
-    <function name='valuePop' file='xpathInternals'>
+    <function name='valuePop' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Pops the top XPath object from the value stack</info>
       <return type='xmlXPathObjectPtr' info='the XPath object just removed'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='an XPath evaluation context'/>
     </function>
-    <function name='valuePush' file='xpathInternals'>
+    <function name='valuePush' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Pushes a new XPath object on top of the value stack</info>
       <return type='int' info='the number of items on the value stack'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='an XPath evaluation context'/>
       <arg name='value' type='xmlXPathObjectPtr' info='the XPath object'/>
     </function>
-    <functype name='warningSAXFunc' file='parser'>
+    <functype name='warningSAXFunc' file='parser' module='parser'>
       <info>Display and format a warning messages, callback.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='an XML parser context'/>
       <arg name='msg' type='const char *' info='the message to display/transmit'/>
       <arg name='...' type='...' info='extra parameters for the message display'/>
     </functype>
-    <functype name='xlinkExtendedLinkFunk' file='xlink'>
+    <functype name='xlinkExtendedLinkFunk' file='xlink' module='xlink'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>This is the prototype for a extended link detection callback.</info>
       <return type='void'/>
@@ -7540,7 +7560,7 @@
       <arg name='titles' type='const xlinkTitle *' info=''/>
       <arg name='langs' type='const xmlChar **' info='array of xml:lang values for the titles'/>
     </functype>
-    <functype name='xlinkExtendedLinkSetFunk' file='xlink'>
+    <functype name='xlinkExtendedLinkSetFunk' file='xlink' module='xlink'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>This is the prototype for a extended link set detection callback.</info>
       <return type='void'/>
@@ -7553,43 +7573,43 @@
       <arg name='titles' type='const xlinkTitle *' info=''/>
       <arg name='langs' type='const xmlChar **' info='array of xml:lang values for the titles'/>
     </functype>
-    <function name='xlinkGetDefaultDetect' file='xlink'>
+    <function name='xlinkGetDefaultDetect' file='xlink' module='xlink'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Get the default xlink detection routine</info>
       <return type='xlinkNodeDetectFunc' info='the current function or NULL;'/>
     </function>
-    <function name='xlinkGetDefaultHandler' file='xlink'>
+    <function name='xlinkGetDefaultHandler' file='xlink' module='xlink'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Get the default xlink handler.</info>
       <return type='xlinkHandlerPtr' info='the current xlinkHandlerPtr value.'/>
     </function>
-    <function name='xlinkIsLink' file='xlink'>
+    <function name='xlinkIsLink' file='xlink' module='xlink'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Check whether the given node carries the attributes needed to be a link element (or is one of the linking elements issued from the (X)HTML DtDs). This routine don&apos;t try to do full checking of the link validity but tries to detect and return the appropriate link type.</info>
       <return type='xlinkType' info='the xlinkType of the node (XLINK_TYPE_NONE if there is no link detected.'/>
       <arg name='doc' type='xmlDocPtr' info='the document containing the node'/>
       <arg name='node' type='xmlNodePtr' info='the node pointer itself'/>
     </function>
-    <functype name='xlinkNodeDetectFunc' file='xlink'>
+    <functype name='xlinkNodeDetectFunc' file='xlink' module='xlink'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>This is the prototype for the link detection routine. It calls the default link detection callbacks upon link detection.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='user data pointer'/>
       <arg name='node' type='xmlNodePtr' info='the node to check'/>
     </functype>
-    <function name='xlinkSetDefaultDetect' file='xlink'>
+    <function name='xlinkSetDefaultDetect' file='xlink' module='xlink'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Set the default xlink detection routine</info>
       <return type='void'/>
       <arg name='func' type='xlinkNodeDetectFunc' info='pointer to the new detection routine.'/>
     </function>
-    <function name='xlinkSetDefaultHandler' file='xlink'>
+    <function name='xlinkSetDefaultHandler' file='xlink' module='xlink'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Set the default xlink handlers</info>
       <return type='void'/>
       <arg name='handler' type='xlinkHandlerPtr' info='the new value for the xlink handler block'/>
     </function>
-    <functype name='xlinkSimpleLinkFunk' file='xlink'>
+    <functype name='xlinkSimpleLinkFunk' file='xlink' module='xlink'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>This is the prototype for a simple link detection callback.</info>
       <return type='void'/>
@@ -7599,7 +7619,7 @@
       <arg name='role' type='const xlinkRole' info='the role string'/>
       <arg name='title' type='const xlinkTitle' info='the link title'/>
     </functype>
-    <function name='xmlACatalogAdd' file='catalog'>
+    <function name='xmlACatalogAdd' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Add an entry in the catalog, it may overwrite existing but different entries.</info>
       <return type='int' info='0 if successful, -1 otherwise'/>
@@ -7608,21 +7628,21 @@
       <arg name='orig' type='const xmlChar *' info='the system, public or prefix to match'/>
       <arg name='replace' type='const xmlChar *' info='the replacement value for the match'/>
     </function>
-    <function name='xmlACatalogDump' file='catalog'>
+    <function name='xmlACatalogDump' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump the given catalog to the given file.</info>
       <return type='void'/>
       <arg name='catal' type='xmlCatalogPtr' info='a Catalog'/>
       <arg name='out' type='FILE *' info='the file.'/>
     </function>
-    <function name='xmlACatalogRemove' file='catalog'>
+    <function name='xmlACatalogRemove' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Remove an entry from the catalog</info>
       <return type='int' info='the number of entries removed if successful, -1 otherwise'/>
       <arg name='catal' type='xmlCatalogPtr' info='a Catalog'/>
       <arg name='value' type='const xmlChar *' info='the value to remove'/>
     </function>
-    <function name='xmlACatalogResolve' file='catalog'>
+    <function name='xmlACatalogResolve' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Do a complete resolution lookup of an External Identifier</info>
       <return type='xmlChar *' info='the URI of the resource or NULL if not found, it must be freed by the caller.'/>
@@ -7630,28 +7650,28 @@
       <arg name='pubID' type='const xmlChar *' info='the public ID string'/>
       <arg name='sysID' type='const xmlChar *' info='the system ID string'/>
     </function>
-    <function name='xmlACatalogResolvePublic' file='catalog'>
+    <function name='xmlACatalogResolvePublic' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Try to lookup the catalog local reference associated to a public ID in that catalog</info>
       <return type='xmlChar *' info='the local resource if found or NULL otherwise, the value returned must be freed by the caller.'/>
       <arg name='catal' type='xmlCatalogPtr' info='a Catalog'/>
       <arg name='pubID' type='const xmlChar *' info='the public ID string'/>
     </function>
-    <function name='xmlACatalogResolveSystem' file='catalog'>
+    <function name='xmlACatalogResolveSystem' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Try to lookup the catalog resource for a system ID</info>
       <return type='xmlChar *' info='the resource if found or NULL otherwise, the value returned must be freed by the caller.'/>
       <arg name='catal' type='xmlCatalogPtr' info='a Catalog'/>
       <arg name='sysID' type='const xmlChar *' info='the system ID string'/>
     </function>
-    <function name='xmlACatalogResolveURI' file='catalog'>
+    <function name='xmlACatalogResolveURI' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Do a complete resolution lookup of an URI</info>
       <return type='xmlChar *' info='the URI of the resource or NULL if not found, it must be freed by the caller.'/>
       <arg name='catal' type='xmlCatalogPtr' info='a Catalog'/>
       <arg name='URI' type='const xmlChar *' info='the URI'/>
     </function>
-    <function name='xmlAddAttributeDecl' file='valid'>
+    <function name='xmlAddAttributeDecl' file='valid' module='valid'>
       <info>Register a new attribute declaration Note that @tree becomes the ownership of the DTD</info>
       <return type='xmlAttributePtr' info='NULL if not new, otherwise the attribute decl'/>
       <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
@@ -7664,19 +7684,19 @@
       <arg name='defaultValue' type='const xmlChar *' info='the attribute default value'/>
       <arg name='tree' type='xmlEnumerationPtr' info='if it&apos;s an enumeration, the associated list'/>
     </function>
-    <function name='xmlAddChild' file='tree'>
+    <function name='xmlAddChild' file='tree' module='tree'>
       <info>Add a new node to @parent, at the end of the child (or property) list merging adjacent TEXT nodes (in which case @cur is freed) If the new node is ATTRIBUTE, it is added into properties instead of children. If there is an attribute with equal name, it is first destroyed.</info>
       <return type='xmlNodePtr' info='the child or NULL in case of error.'/>
       <arg name='parent' type='xmlNodePtr' info='the parent node'/>
       <arg name='cur' type='xmlNodePtr' info='the child node'/>
     </function>
-    <function name='xmlAddChildList' file='tree'>
+    <function name='xmlAddChildList' file='tree' module='tree'>
       <info>Add a list of node at the end of the child list of the parent merging adjacent TEXT nodes (@cur may be freed)</info>
       <return type='xmlNodePtr' info='the last child or NULL in case of error.'/>
       <arg name='parent' type='xmlNodePtr' info='the parent node'/>
       <arg name='cur' type='xmlNodePtr' info='the first node in the list'/>
     </function>
-    <function name='xmlAddDocEntity' file='entities'>
+    <function name='xmlAddDocEntity' file='entities' module='entities'>
       <info>Register a new entity for this document.</info>
       <return type='xmlEntityPtr' info='a pointer to the entity or NULL in case of error'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
@@ -7686,7 +7706,7 @@
       <arg name='SystemID' type='const xmlChar *' info='the entity system ID if available'/>
       <arg name='content' type='const xmlChar *' info='the entity content'/>
     </function>
-    <function name='xmlAddDtdEntity' file='entities'>
+    <function name='xmlAddDtdEntity' file='entities' module='entities'>
       <info>Register a new entity for this document DTD external subset.</info>
       <return type='xmlEntityPtr' info='a pointer to the entity or NULL in case of error'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
@@ -7696,7 +7716,7 @@
       <arg name='SystemID' type='const xmlChar *' info='the entity system ID if available'/>
       <arg name='content' type='const xmlChar *' info='the entity content'/>
     </function>
-    <function name='xmlAddElementDecl' file='valid'>
+    <function name='xmlAddElementDecl' file='valid' module='valid'>
       <info>Register a new element declaration</info>
       <return type='xmlElementPtr' info='NULL if not, otherwise the entity'/>
       <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
@@ -7705,13 +7725,13 @@
       <arg name='type' type='xmlElementTypeVal' info='the element type'/>
       <arg name='content' type='xmlElementContentPtr' info='the element content tree or NULL'/>
     </function>
-    <function name='xmlAddEncodingAlias' file='encoding'>
+    <function name='xmlAddEncodingAlias' file='encoding' module='encoding'>
       <info>Registers an alias @alias for an encoding named @name. Existing alias will be overwritten.</info>
       <return type='int' info='0 in case of success, -1 in case of error'/>
       <arg name='name' type='const char *' info='the encoding name as parsed, in UTF-8 format (ASCII actually)'/>
       <arg name='alias' type='const char *' info='the alias name as parsed, in UTF-8 format (ASCII actually)'/>
     </function>
-    <function name='xmlAddID' file='valid'>
+    <function name='xmlAddID' file='valid' module='valid'>
       <info>Register a new id declaration</info>
       <return type='xmlIDPtr' info='NULL if not, otherwise the new xmlIDPtr'/>
       <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
@@ -7719,13 +7739,13 @@
       <arg name='value' type='const xmlChar *' info='the value name'/>
       <arg name='attr' type='xmlAttrPtr' info='the attribute holding the ID'/>
     </function>
-    <function name='xmlAddNextSibling' file='tree'>
+    <function name='xmlAddNextSibling' file='tree' module='tree'>
       <info>Add a new node @elem as the next sibling of @cur If the new node was already inserted in a document it is first unlinked from its existing context. As a result of text merging @elem may be freed. If the new node is ATTRIBUTE, it is added into properties instead of children. If there is an attribute with equal name, it is first destroyed.</info>
       <return type='xmlNodePtr' info='the new node or NULL in case of error.'/>
       <arg name='cur' type='xmlNodePtr' info='the child node'/>
       <arg name='elem' type='xmlNodePtr' info='the new node'/>
     </function>
-    <function name='xmlAddNotationDecl' file='valid'>
+    <function name='xmlAddNotationDecl' file='valid' module='valid'>
       <info>Register a new notation declaration</info>
       <return type='xmlNotationPtr' info='NULL if not, otherwise the entity'/>
       <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
@@ -7734,14 +7754,14 @@
       <arg name='PublicID' type='const xmlChar *' info='the public identifier or NULL'/>
       <arg name='SystemID' type='const xmlChar *' info='the system identifier or NULL'/>
     </function>
-    <function name='xmlAddPrevSibling' file='tree'>
+    <function name='xmlAddPrevSibling' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Add a new node @elem as the previous sibling of @cur merging adjacent TEXT nodes (@elem may be freed) If the new node was already inserted in a document it is first unlinked from its existing context. If the new node is ATTRIBUTE, it is added into properties instead of children. If there is an attribute with equal name, it is first destroyed.</info>
       <return type='xmlNodePtr' info='the new node or NULL in case of error.'/>
       <arg name='cur' type='xmlNodePtr' info='the child node'/>
       <arg name='elem' type='xmlNodePtr' info='the new node'/>
     </function>
-    <function name='xmlAddRef' file='valid'>
+    <function name='xmlAddRef' file='valid' module='valid'>
       <info>Register a new ref declaration</info>
       <return type='xmlRefPtr' info='NULL if not, otherwise the new xmlRefPtr'/>
       <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
@@ -7749,24 +7769,24 @@
       <arg name='value' type='const xmlChar *' info='the value name'/>
       <arg name='attr' type='xmlAttrPtr' info='the attribute holding the Ref'/>
     </function>
-    <function name='xmlAddSibling' file='tree'>
+    <function name='xmlAddSibling' file='tree' module='tree'>
       <info>Add a new element @elem to the list of siblings of @cur merging adjacent TEXT nodes (@elem may be freed) If the new element was already inserted in a document it is first unlinked from its existing context.</info>
       <return type='xmlNodePtr' info='the new element or NULL in case of error.'/>
       <arg name='cur' type='xmlNodePtr' info='the child node'/>
       <arg name='elem' type='xmlNodePtr' info='the new node'/>
     </function>
-    <function name='xmlAllocOutputBuffer' file='xmlIO'>
+    <function name='xmlAllocOutputBuffer' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Create a buffered parser output</info>
       <return type='xmlOutputBufferPtr' info='the new parser output or NULL'/>
       <arg name='encoder' type='xmlCharEncodingHandlerPtr' info='the encoding converter or NULL'/>
     </function>
-    <function name='xmlAllocParserInputBuffer' file='xmlIO'>
+    <function name='xmlAllocParserInputBuffer' file='xmlIO' module='xmlIO'>
       <info>Create a buffered parser input for progressive parsing</info>
       <return type='xmlParserInputBufferPtr' info='the new parser input or NULL'/>
       <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known'/>
     </function>
-    <function name='xmlAttrSerializeTxtContent' file='tree'>
+    <function name='xmlAttrSerializeTxtContent' file='tree' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Serialize text attribute values to an xml simple buffer</info>
       <return type='void'/>
@@ -7775,25 +7795,25 @@
       <arg name='attr' type='xmlAttrPtr' info='the attribute node'/>
       <arg name='string' type='const xmlChar *' info='the text content'/>
     </function>
-    <function name='xmlAutomataCompile' file='xmlautomata'>
+    <function name='xmlAutomataCompile' file='xmlautomata' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_AUTOMATA_ENABLED)</cond>
       <info>Compile the automata into a Reg Exp ready for being executed. The automata should be free after this point.</info>
       <return type='xmlRegexpPtr' info='the compiled regexp or NULL in case of error'/>
       <arg name='am' type='xmlAutomataPtr' info='an automata'/>
     </function>
-    <function name='xmlAutomataGetInitState' file='xmlautomata'>
+    <function name='xmlAutomataGetInitState' file='xmlautomata' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_AUTOMATA_ENABLED)</cond>
       <info>Initial state lookup</info>
       <return type='xmlAutomataStatePtr' info='the initial state of the automata'/>
       <arg name='am' type='xmlAutomataPtr' info='an automata'/>
     </function>
-    <function name='xmlAutomataIsDeterminist' file='xmlautomata'>
+    <function name='xmlAutomataIsDeterminist' file='xmlautomata' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_AUTOMATA_ENABLED)</cond>
       <info>Checks if an automata is determinist.</info>
       <return type='int' info='1 if true, 0 if not, and -1 in case of error'/>
       <arg name='am' type='xmlAutomataPtr' info='an automata'/>
     </function>
-    <function name='xmlAutomataNewAllTrans' file='xmlautomata'>
+    <function name='xmlAutomataNewAllTrans' file='xmlautomata' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_AUTOMATA_ENABLED)</cond>
       <info>If @to is NULL, this creates first a new target state in the automata and then adds a an ALL transition from the @from state to the target state. That transition is an epsilon transition allowed only when all transitions from the @from node have been activated.</info>
       <return type='xmlAutomataStatePtr' info='the target state or NULL in case of error'/>
@@ -7802,7 +7822,7 @@
       <arg name='to' type='xmlAutomataStatePtr' info='the target point of the transition or NULL'/>
       <arg name='lax' type='int' info='allow to transition if not all all transitions have been activated'/>
     </function>
-    <function name='xmlAutomataNewCountTrans' file='xmlautomata'>
+    <function name='xmlAutomataNewCountTrans' file='xmlautomata' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_AUTOMATA_ENABLED)</cond>
       <info>If @to is NULL, this creates first a new target state in the automata and then adds a transition from the @from state to the target state activated by a succession of input of value @token and whose number is between @min and @max</info>
       <return type='xmlAutomataStatePtr' info='the target state or NULL in case of error'/>
@@ -7814,7 +7834,7 @@
       <arg name='max' type='int' info='the maximum successive occurences of token'/>
       <arg name='data' type='void *' info='data associated to the transition'/>
     </function>
-    <function name='xmlAutomataNewCountTrans2' file='xmlautomata'>
+    <function name='xmlAutomataNewCountTrans2' file='xmlautomata' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_AUTOMATA_ENABLED)</cond>
       <info>If @to is NULL, this creates first a new target state in the automata and then adds a transition from the @from state to the target state activated by a succession of input of value @token and @token2 and whose number is between @min and @max</info>
       <return type='xmlAutomataStatePtr' info='the target state or NULL in case of error'/>
@@ -7827,7 +7847,7 @@
       <arg name='max' type='int' info='the maximum successive occurences of token'/>
       <arg name='data' type='void *' info='data associated to the transition'/>
     </function>
-    <function name='xmlAutomataNewCountedTrans' file='xmlautomata'>
+    <function name='xmlAutomataNewCountedTrans' file='xmlautomata' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_AUTOMATA_ENABLED)</cond>
       <info>If @to is NULL, this creates first a new target state in the automata and then adds an epsilon transition from the @from state to the target state which will increment the counter provided</info>
       <return type='xmlAutomataStatePtr' info='the target state or NULL in case of error'/>
@@ -7836,7 +7856,7 @@
       <arg name='to' type='xmlAutomataStatePtr' info='the target point of the transition or NULL'/>
       <arg name='counter' type='int' info='the counter associated to that transition'/>
     </function>
-    <function name='xmlAutomataNewCounter' file='xmlautomata'>
+    <function name='xmlAutomataNewCounter' file='xmlautomata' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_AUTOMATA_ENABLED)</cond>
       <info>Create a new counter</info>
       <return type='int' info='the counter number or -1 in case of error'/>
@@ -7844,7 +7864,7 @@
       <arg name='min' type='int' info='the minimal value on the counter'/>
       <arg name='max' type='int' info='the maximal value on the counter'/>
     </function>
-    <function name='xmlAutomataNewCounterTrans' file='xmlautomata'>
+    <function name='xmlAutomataNewCounterTrans' file='xmlautomata' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_AUTOMATA_ENABLED)</cond>
       <info>If @to is NULL, this creates first a new target state in the automata and then adds an epsilon transition from the @from state to the target state which will be allowed only if the counter is within the right range.</info>
       <return type='xmlAutomataStatePtr' info='the target state or NULL in case of error'/>
@@ -7853,7 +7873,7 @@
       <arg name='to' type='xmlAutomataStatePtr' info='the target point of the transition or NULL'/>
       <arg name='counter' type='int' info='the counter associated to that transition'/>
     </function>
-    <function name='xmlAutomataNewEpsilon' file='xmlautomata'>
+    <function name='xmlAutomataNewEpsilon' file='xmlautomata' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_AUTOMATA_ENABLED)</cond>
       <info>If @to is NULL, this creates first a new target state in the automata and then adds an epsilon transition from the @from state to the target state</info>
       <return type='xmlAutomataStatePtr' info='the target state or NULL in case of error'/>
@@ -7861,7 +7881,7 @@
       <arg name='from' type='xmlAutomataStatePtr' info='the starting point of the transition'/>
       <arg name='to' type='xmlAutomataStatePtr' info='the target point of the transition or NULL'/>
     </function>
-    <function name='xmlAutomataNewOnceTrans' file='xmlautomata'>
+    <function name='xmlAutomataNewOnceTrans' file='xmlautomata' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_AUTOMATA_ENABLED)</cond>
       <info>If @to is NULL, this creates first a new target state in the automata and then adds a transition from the @from state to the target state activated by a succession of input of value @token and whose number is between @min and @max, moreover that transition can only be crossed once.</info>
       <return type='xmlAutomataStatePtr' info='the target state or NULL in case of error'/>
@@ -7873,7 +7893,7 @@
       <arg name='max' type='int' info='the maximum successive occurences of token'/>
       <arg name='data' type='void *' info='data associated to the transition'/>
     </function>
-    <function name='xmlAutomataNewOnceTrans2' file='xmlautomata'>
+    <function name='xmlAutomataNewOnceTrans2' file='xmlautomata' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_AUTOMATA_ENABLED)</cond>
       <info>If @to is NULL, this creates first a new target state in the automata and then adds a transition from the @from state to the target state activated by a succession of input of value @token and @token2 and whose number is between @min and @max, moreover that transition can only be crossed once.</info>
       <return type='xmlAutomataStatePtr' info='the target state or NULL in case of error'/>
@@ -7886,13 +7906,13 @@
       <arg name='max' type='int' info='the maximum successive occurences of token'/>
       <arg name='data' type='void *' info='data associated to the transition'/>
     </function>
-    <function name='xmlAutomataNewState' file='xmlautomata'>
+    <function name='xmlAutomataNewState' file='xmlautomata' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_AUTOMATA_ENABLED)</cond>
       <info>Create a new disconnected state in the automata</info>
       <return type='xmlAutomataStatePtr' info='the new state or NULL in case of error'/>
       <arg name='am' type='xmlAutomataPtr' info='an automata'/>
     </function>
-    <function name='xmlAutomataNewTransition' file='xmlautomata'>
+    <function name='xmlAutomataNewTransition' file='xmlautomata' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_AUTOMATA_ENABLED)</cond>
       <info>If @to is NULL, this creates first a new target state in the automata and then adds a transition from the @from state to the target state activated by the value of @token</info>
       <return type='xmlAutomataStatePtr' info='the target state or NULL in case of error'/>
@@ -7902,7 +7922,7 @@
       <arg name='token' type='const xmlChar *' info='the input string associated to that transition'/>
       <arg name='data' type='void *' info='data passed to the callback function if the transition is activated'/>
     </function>
-    <function name='xmlAutomataNewTransition2' file='xmlautomata'>
+    <function name='xmlAutomataNewTransition2' file='xmlautomata' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_AUTOMATA_ENABLED)</cond>
       <info>If @to is NULL, this creates first a new target state in the automata and then adds a transition from the @from state to the target state activated by the value of @token</info>
       <return type='xmlAutomataStatePtr' info='the target state or NULL in case of error'/>
@@ -7913,129 +7933,129 @@
       <arg name='token2' type='const xmlChar *' info='the second input string associated to that transition'/>
       <arg name='data' type='void *' info='data passed to the callback function if the transition is activated'/>
     </function>
-    <function name='xmlAutomataSetFinalState' file='xmlautomata'>
+    <function name='xmlAutomataSetFinalState' file='xmlautomata' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_AUTOMATA_ENABLED)</cond>
       <info>Makes that state a final state</info>
       <return type='int' info='0 or -1 in case of error'/>
       <arg name='am' type='xmlAutomataPtr' info='an automata'/>
       <arg name='state' type='xmlAutomataStatePtr' info='a state in this automata'/>
     </function>
-    <function name='xmlBoolToText' file='debugXML'>
+    <function name='xmlBoolToText' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
       <info>Convenient way to turn bool into text</info>
       <return type='const char *' info='a pointer to either &quot;True&quot; or &quot;False&quot;'/>
       <arg name='boolval' type='int' info='a bool to turn into text'/>
     </function>
-    <function name='xmlBufferAdd' file='tree'>
+    <function name='xmlBufferAdd' file='tree' module='tree'>
       <info>Add a string range to an XML buffer. if len == -1, the length of str is recomputed.</info>
       <return type='int' info='0 successful, a positive error code number otherwise and -1 in case of internal or API error.'/>
       <arg name='buf' type='xmlBufferPtr' info='the buffer to dump'/>
       <arg name='str' type='const xmlChar *' info='the #xmlChar string'/>
       <arg name='len' type='int' info='the number of #xmlChar to add'/>
     </function>
-    <function name='xmlBufferAddHead' file='tree'>
+    <function name='xmlBufferAddHead' file='tree' module='tree'>
       <info>Add a string range to the beginning of an XML buffer. if len == -1, the length of @str is recomputed.</info>
       <return type='int' info='0 successful, a positive error code number otherwise and -1 in case of internal or API error.'/>
       <arg name='buf' type='xmlBufferPtr' info='the buffer'/>
       <arg name='str' type='const xmlChar *' info='the #xmlChar string'/>
       <arg name='len' type='int' info='the number of #xmlChar to add'/>
     </function>
-    <function name='xmlBufferCCat' file='tree'>
+    <function name='xmlBufferCCat' file='tree' module='tree'>
       <info>Append a zero terminated C string to an XML buffer.</info>
       <return type='int' info='0 successful, a positive error code number otherwise and -1 in case of internal or API error.'/>
       <arg name='buf' type='xmlBufferPtr' info='the buffer to dump'/>
       <arg name='str' type='const char *' info='the C char string'/>
     </function>
-    <function name='xmlBufferCat' file='tree'>
+    <function name='xmlBufferCat' file='tree' module='tree'>
       <info>Append a zero terminated string to an XML buffer.</info>
       <return type='int' info='0 successful, a positive error code number otherwise and -1 in case of internal or API error.'/>
       <arg name='buf' type='xmlBufferPtr' info='the buffer to add to'/>
       <arg name='str' type='const xmlChar *' info='the #xmlChar string'/>
     </function>
-    <function name='xmlBufferContent' file='tree'>
+    <function name='xmlBufferContent' file='tree' module='tree'>
       <info>Function to extract the content of a buffer</info>
       <return type='const xmlChar *' info='the internal content'/>
       <arg name='buf' type='const xmlBufferPtr' info='the buffer'/>
     </function>
-    <function name='xmlBufferCreate' file='tree'>
+    <function name='xmlBufferCreate' file='tree' module='tree'>
       <info>routine to create an XML buffer.</info>
       <return type='xmlBufferPtr' info='the new structure.'/>
     </function>
-    <function name='xmlBufferCreateSize' file='tree'>
+    <function name='xmlBufferCreateSize' file='tree' module='tree'>
       <info>routine to create an XML buffer.</info>
       <return type='xmlBufferPtr' info='the new structure.'/>
       <arg name='size' type='size_t' info='initial size of buffer'/>
     </function>
-    <function name='xmlBufferCreateStatic' file='tree'>
+    <function name='xmlBufferCreateStatic' file='tree' module='tree'>
       <info>routine to create an XML buffer from an immutable memory area. The area won&apos;t be modified nor copied, and is expected to be present until the end of the buffer lifetime.</info>
       <return type='xmlBufferPtr' info='the new structure.'/>
       <arg name='mem' type='void *' info='the memory area'/>
       <arg name='size' type='size_t' info='the size in byte'/>
     </function>
-    <function name='xmlBufferDump' file='tree'>
+    <function name='xmlBufferDump' file='tree' module='tree'>
       <info>Dumps an XML buffer to  a FILE *.</info>
       <return type='int' info='the number of #xmlChar written'/>
       <arg name='file' type='FILE *' info='the file output'/>
       <arg name='buf' type='xmlBufferPtr' info='the buffer to dump'/>
     </function>
-    <function name='xmlBufferEmpty' file='tree'>
+    <function name='xmlBufferEmpty' file='tree' module='tree'>
       <info>empty a buffer.</info>
       <return type='void'/>
       <arg name='buf' type='xmlBufferPtr' info='the buffer'/>
     </function>
-    <function name='xmlBufferFree' file='tree'>
+    <function name='xmlBufferFree' file='tree' module='tree'>
       <info>Frees an XML buffer. It frees both the content and the structure which encapsulate it.</info>
       <return type='void'/>
       <arg name='buf' type='xmlBufferPtr' info='the buffer to free'/>
     </function>
-    <function name='xmlBufferGrow' file='tree'>
+    <function name='xmlBufferGrow' file='tree' module='tree'>
       <info>Grow the available space of an XML buffer.</info>
       <return type='int' info='the new available space or -1 in case of error'/>
       <arg name='buf' type='xmlBufferPtr' info='the buffer'/>
       <arg name='len' type='unsigned int' info='the minimum free size to allocate'/>
     </function>
-    <function name='xmlBufferLength' file='tree'>
+    <function name='xmlBufferLength' file='tree' module='tree'>
       <info>Function to get the length of a buffer</info>
       <return type='int' info='the length of data in the internal content'/>
       <arg name='buf' type='const xmlBufferPtr' info='the buffer'/>
     </function>
-    <function name='xmlBufferResize' file='tree'>
+    <function name='xmlBufferResize' file='tree' module='tree'>
       <info>Resize a buffer to accommodate minimum size of @size.</info>
       <return type='int' info='0 in case of problems, 1 otherwise'/>
       <arg name='buf' type='xmlBufferPtr' info='the buffer to resize'/>
       <arg name='size' type='unsigned int' info='the desired size'/>
     </function>
-    <function name='xmlBufferSetAllocationScheme' file='tree'>
+    <function name='xmlBufferSetAllocationScheme' file='tree' module='tree'>
       <info>Sets the allocation scheme for this buffer</info>
       <return type='void'/>
       <arg name='buf' type='xmlBufferPtr' info='the buffer to tune'/>
       <arg name='scheme' type='xmlBufferAllocationScheme' info='allocation scheme to use'/>
     </function>
-    <function name='xmlBufferShrink' file='tree'>
+    <function name='xmlBufferShrink' file='tree' module='tree'>
       <info>Remove the beginning of an XML buffer.</info>
       <return type='int' info='the number of #xmlChar removed, or -1 in case of failure.'/>
       <arg name='buf' type='xmlBufferPtr' info='the buffer to dump'/>
       <arg name='len' type='unsigned int' info='the number of xmlChar to remove'/>
     </function>
-    <function name='xmlBufferWriteCHAR' file='tree'>
+    <function name='xmlBufferWriteCHAR' file='tree' module='tree'>
       <info>routine which manages and grows an output buffer. This one adds xmlChars at the end of the buffer.</info>
       <return type='void'/>
       <arg name='buf' type='xmlBufferPtr' info='the XML buffer'/>
       <arg name='string' type='const xmlChar *' info='the string to add'/>
     </function>
-    <function name='xmlBufferWriteChar' file='tree'>
+    <function name='xmlBufferWriteChar' file='tree' module='tree'>
       <info>routine which manage and grows an output buffer. This one add C chars at the end of the array.</info>
       <return type='void'/>
       <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
       <arg name='string' type='const char *' info='the string to add'/>
     </function>
-    <function name='xmlBufferWriteQuotedString' file='tree'>
+    <function name='xmlBufferWriteQuotedString' file='tree' module='tree'>
       <info>routine which manage and grows an output buffer. This one writes a quoted or double quoted #xmlChar string, checking first if it holds quote or double-quotes internally</info>
       <return type='void'/>
       <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
       <arg name='string' type='const xmlChar *' info='the string to add'/>
     </function>
-    <function name='xmlBuildQName' file='tree'>
+    <function name='xmlBuildQName' file='tree' module='tree'>
       <info>Builds the QName @prefix:@ncname in @memory if there is enough space and prefix is not NULL nor empty, otherwise allocate a new string. If prefix is NULL or empty it returns ncname.</info>
       <return type='xmlChar *' info='the new string which must be freed by the caller if different from @memory and @ncname or NULL in case of error'/>
       <arg name='ncname' type='const xmlChar *' info='the Name'/>
@@ -8043,24 +8063,24 @@
       <arg name='memory' type='xmlChar *' info='preallocated memory'/>
       <arg name='len' type='int' info='preallocated memory length'/>
     </function>
-    <function name='xmlBuildRelativeURI' file='uri'>
+    <function name='xmlBuildRelativeURI' file='uri' module='uri'>
       <info>Expresses the URI of the reference in terms relative to the base.  Some examples of this operation include: base = &quot;http://site1.com/docs/book1.html&quot; URI input                        URI returned docs/pic1.gif                    pic1.gif docs/img/pic1.gif                img/pic1.gif img/pic1.gif                     ../img/pic1.gif http://site1.com/docs/pic1.gif   pic1.gif http://site2.com/docs/pic1.gif   http://site2.com/docs/pic1.gif  base = &quot;docs/book1.html&quot; URI input                        URI returned docs/pic1.gif                    pic1.gif docs/img/pic1.gif                img/pic1.gif img/pic1.gif                     ../img/pic1.gif http://site1.com/docs/pic1.gif   http://site1.com/docs/pic1.gif   Note: if the URI reference is really wierd or complicated, it may be worthwhile to first convert it into a &quot;nice&quot; one by calling xmlBuildURI (using &apos;base&apos;) before calling this routine, since this routine (for reasonable efficiency) assumes URI has already been through some validation.</info>
       <return type='xmlChar *' info='a new URI string (to be freed by the caller) or NULL in case error.'/>
       <arg name='URI' type='const xmlChar *' info='the URI reference under consideration'/>
       <arg name='base' type='const xmlChar *' info='the base value'/>
     </function>
-    <function name='xmlBuildURI' file='uri'>
+    <function name='xmlBuildURI' file='uri' module='uri'>
       <info>Computes he final URI of the reference done by checking that the given URI is valid, and building the final URI using the base URI. This is processed according to section 5.2 of the RFC 2396  5.2. Resolving Relative References to Absolute Form</info>
       <return type='xmlChar *' info='a new URI string (to be freed by the caller) or NULL in case of error.'/>
       <arg name='URI' type='const xmlChar *' info='the URI instance found in the document'/>
       <arg name='base' type='const xmlChar *' info='the base value'/>
     </function>
-    <function name='xmlByteConsumed' file='parser'>
+    <function name='xmlByteConsumed' file='parser' module='encoding'>
       <info>This function provides the current index of the parser relative to the start of the current entity. This function is computed in bytes from the beginning starting at zero and finishing at the size in byte of the file if parsing a file. The function is of constant cost if the input is UTF-8 but can be costly if run on non-UTF-8 input.</info>
       <return type='long' info='the index in bytes from the beginning of the entity or -1 in case the index could not be computed.'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlC14NDocDumpMemory' file='c14n'>
+    <function name='xmlC14NDocDumpMemory' file='c14n' module='c14n'>
       <cond>defined(LIBXML_C14N_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dumps the canonized image of given XML document into memory. For details see &quot;Canonical XML&quot; (http://www.w3.org/TR/xml-c14n) or &quot;Exclusive XML Canonicalization&quot; (http://www.w3.org/TR/xml-exc-c14n)</info>
       <return type='int' info='the number of bytes written on success or a negative value on fail'/>
@@ -8071,7 +8091,7 @@
       <arg name='with_comments' type='int' info='include comments in the result (!=0) or not (==0)'/>
       <arg name='doc_txt_ptr' type='xmlChar **' info='the memory pointer for allocated canonical XML text; the caller of this functions is responsible for calling xmlFree() to free allocated memory'/>
     </function>
-    <function name='xmlC14NDocSave' file='c14n'>
+    <function name='xmlC14NDocSave' file='c14n' module='c14n'>
       <cond>defined(LIBXML_C14N_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dumps the canonized image of given XML document into the file. For details see &quot;Canonical XML&quot; (http://www.w3.org/TR/xml-c14n) or &quot;Exclusive XML Canonicalization&quot; (http://www.w3.org/TR/xml-exc-c14n)</info>
       <return type='int' info='the number of bytes written success or a negative value on fail'/>
@@ -8083,7 +8103,7 @@
       <arg name='filename' type='const char *' info='the filename to store canonical XML image'/>
       <arg name='compression' type='int' info='the compression level (zlib requred): -1 - libxml default, 0 - uncompressed, &gt;0 - compression level'/>
     </function>
-    <function name='xmlC14NDocSaveTo' file='c14n'>
+    <function name='xmlC14NDocSaveTo' file='c14n' module='c14n'>
       <cond>defined(LIBXML_C14N_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dumps the canonized image of given XML document into the provided buffer. For details see &quot;Canonical XML&quot; (http://www.w3.org/TR/xml-c14n) or &quot;Exclusive XML Canonicalization&quot; (http://www.w3.org/TR/xml-exc-c14n)</info>
       <return type='int' info='non-negative value on success or a negative value on fail'/>
@@ -8094,7 +8114,7 @@
       <arg name='with_comments' type='int' info='include comments in the result (!=0) or not (==0)'/>
       <arg name='buf' type='xmlOutputBufferPtr' info='the output buffer to store canonical XML; this buffer MUST have encoder==NULL because C14N requires UTF-8 output'/>
     </function>
-    <function name='xmlC14NExecute' file='c14n'>
+    <function name='xmlC14NExecute' file='c14n' module='c14n'>
       <cond>defined(LIBXML_C14N_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dumps the canonized image of given XML document into the provided buffer. For details see &quot;Canonical XML&quot; (http://www.w3.org/TR/xml-c14n) or &quot;Exclusive XML Canonicalization&quot; (http://www.w3.org/TR/xml-exc-c14n)</info>
       <return type='int' info='non-negative value on success or a negative value on fail'/>
@@ -8106,7 +8126,7 @@
       <arg name='with_comments' type='int' info='include comments in the result (!=0) or not (==0)'/>
       <arg name='buf' type='xmlOutputBufferPtr' info='the output buffer to store canonical XML; this buffer MUST have encoder==NULL because C14N requires UTF-8 output'/>
     </function>
-    <functype name='xmlC14NIsVisibleCallback' file='c14n'>
+    <functype name='xmlC14NIsVisibleCallback' file='c14n' module='c14n'>
       <cond>defined(LIBXML_C14N_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info></info>
       <return type='int' info=''/>
@@ -8114,12 +8134,12 @@
       <arg name='node' type='xmlNodePtr' info=''/>
       <arg name='parent' type='xmlNodePtr' info=''/>
     </functype>
-    <function name='xmlCanonicPath' file='uri'>
+    <function name='xmlCanonicPath' file='uri' module='uri'>
       <info>Constructs a canonic path from the specified path.</info>
       <return type='xmlChar *' info='a new canonic path, or a duplicate of the path parameter if the construction fails. The caller is responsible for freeing the memory occupied by the returned string. If there is insufficient memory available, or the argument is NULL, the function returns NULL.'/>
       <arg name='path' type='const xmlChar *' info='the resource locator in a filesystem notation'/>
     </function>
-    <function name='xmlCatalogAdd' file='catalog'>
+    <function name='xmlCatalogAdd' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Add an entry in the catalog, it may overwrite existing but different entries. If called before any other catalog routine, allows to override the default shared catalog put in place by xmlInitializeCatalog();</info>
       <return type='int' info='0 if successful, -1 otherwise'/>
@@ -8127,59 +8147,59 @@
       <arg name='orig' type='const xmlChar *' info='the system, public or prefix to match'/>
       <arg name='replace' type='const xmlChar *' info='the replacement value for the match'/>
     </function>
-    <function name='xmlCatalogAddLocal' file='catalog'>
+    <function name='xmlCatalogAddLocal' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Add the new entry to the catalog list</info>
       <return type='void *' info='the updated list'/>
       <arg name='catalogs' type='void *' info='a document&apos;s list of catalogs'/>
       <arg name='URL' type='const xmlChar *' info='the URL to a new local catalog'/>
     </function>
-    <function name='xmlCatalogCleanup' file='catalog'>
+    <function name='xmlCatalogCleanup' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Free up all the memory associated with catalogs</info>
       <return type='void'/>
     </function>
-    <function name='xmlCatalogConvert' file='catalog'>
+    <function name='xmlCatalogConvert' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Convert all the SGML catalog entries as XML ones</info>
       <return type='int' info='the number of entries converted if successful, -1 otherwise'/>
     </function>
-    <function name='xmlCatalogDump' file='catalog'>
+    <function name='xmlCatalogDump' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump all the global catalog content to the given file.</info>
       <return type='void'/>
       <arg name='out' type='FILE *' info='the file.'/>
     </function>
-    <function name='xmlCatalogFreeLocal' file='catalog'>
+    <function name='xmlCatalogFreeLocal' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Free up the memory associated to the catalog list</info>
       <return type='void'/>
       <arg name='catalogs' type='void *' info='a document&apos;s list of catalogs'/>
     </function>
-    <function name='xmlCatalogGetDefaults' file='catalog'>
+    <function name='xmlCatalogGetDefaults' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Used to get the user preference w.r.t. to what catalogs should be accepted</info>
       <return type='xmlCatalogAllow' info='the current xmlCatalogAllow value'/>
     </function>
-    <function name='xmlCatalogGetPublic' file='catalog'>
+    <function name='xmlCatalogGetPublic' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Try to lookup the catalog reference associated to a public ID DEPRECATED, use xmlCatalogResolvePublic()</info>
       <return type='const xmlChar *' info='the resource if found or NULL otherwise.'/>
       <arg name='pubID' type='const xmlChar *' info='the public ID string'/>
     </function>
-    <function name='xmlCatalogGetSystem' file='catalog'>
+    <function name='xmlCatalogGetSystem' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Try to lookup the catalog reference associated to a system ID DEPRECATED, use xmlCatalogResolveSystem()</info>
       <return type='const xmlChar *' info='the resource if found or NULL otherwise.'/>
       <arg name='sysID' type='const xmlChar *' info='the system ID string'/>
     </function>
-    <function name='xmlCatalogIsEmpty' file='catalog'>
+    <function name='xmlCatalogIsEmpty' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Check is a catalog is empty</info>
       <return type='int' info='1 if the catalog is empty, 0 if not, amd -1 in case of error.'/>
       <arg name='catal' type='xmlCatalogPtr' info='should this create an SGML catalog'/>
     </function>
-    <function name='xmlCatalogLocalResolve' file='catalog'>
+    <function name='xmlCatalogLocalResolve' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Do a complete resolution lookup of an External Identifier using a document&apos;s private catalog list</info>
       <return type='xmlChar *' info='the URI of the resource or NULL if not found, it must be freed by the caller.'/>
@@ -8187,89 +8207,89 @@
       <arg name='pubID' type='const xmlChar *' info='the public ID string'/>
       <arg name='sysID' type='const xmlChar *' info='the system ID string'/>
     </function>
-    <function name='xmlCatalogLocalResolveURI' file='catalog'>
+    <function name='xmlCatalogLocalResolveURI' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Do a complete resolution lookup of an URI using a document&apos;s private catalog list</info>
       <return type='xmlChar *' info='the URI of the resource or NULL if not found, it must be freed by the caller.'/>
       <arg name='catalogs' type='void *' info='a document&apos;s list of catalogs'/>
       <arg name='URI' type='const xmlChar *' info='the URI'/>
     </function>
-    <function name='xmlCatalogRemove' file='catalog'>
+    <function name='xmlCatalogRemove' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Remove an entry from the catalog</info>
       <return type='int' info='the number of entries removed if successful, -1 otherwise'/>
       <arg name='value' type='const xmlChar *' info='the value to remove'/>
     </function>
-    <function name='xmlCatalogResolve' file='catalog'>
+    <function name='xmlCatalogResolve' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Do a complete resolution lookup of an External Identifier</info>
       <return type='xmlChar *' info='the URI of the resource or NULL if not found, it must be freed by the caller.'/>
       <arg name='pubID' type='const xmlChar *' info='the public ID string'/>
       <arg name='sysID' type='const xmlChar *' info='the system ID string'/>
     </function>
-    <function name='xmlCatalogResolvePublic' file='catalog'>
+    <function name='xmlCatalogResolvePublic' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Try to lookup the catalog reference associated to a public ID</info>
       <return type='xmlChar *' info='the resource if found or NULL otherwise, the value returned must be freed by the caller.'/>
       <arg name='pubID' type='const xmlChar *' info='the public ID string'/>
     </function>
-    <function name='xmlCatalogResolveSystem' file='catalog'>
+    <function name='xmlCatalogResolveSystem' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Try to lookup the catalog resource for a system ID</info>
       <return type='xmlChar *' info='the resource if found or NULL otherwise, the value returned must be freed by the caller.'/>
       <arg name='sysID' type='const xmlChar *' info='the system ID string'/>
     </function>
-    <function name='xmlCatalogResolveURI' file='catalog'>
+    <function name='xmlCatalogResolveURI' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Do a complete resolution lookup of an URI</info>
       <return type='xmlChar *' info='the URI of the resource or NULL if not found, it must be freed by the caller.'/>
       <arg name='URI' type='const xmlChar *' info='the URI'/>
     </function>
-    <function name='xmlCatalogSetDebug' file='catalog'>
+    <function name='xmlCatalogSetDebug' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Used to set the debug level for catalog operation, 0 disable debugging, 1 enable it</info>
       <return type='int' info='the previous value of the catalog debugging level'/>
       <arg name='level' type='int' info='the debug level of catalogs required'/>
     </function>
-    <function name='xmlCatalogSetDefaultPrefer' file='catalog'>
+    <function name='xmlCatalogSetDefaultPrefer' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Allows to set the preference between public and system for deletion in XML Catalog resolution. C.f. section 4.1.1 of the spec Values accepted are XML_CATA_PREFER_PUBLIC or XML_CATA_PREFER_SYSTEM</info>
       <return type='xmlCatalogPrefer' info='the previous value of the default preference for delegation'/>
       <arg name='prefer' type='xmlCatalogPrefer' info='the default preference for delegation'/>
     </function>
-    <function name='xmlCatalogSetDefaults' file='catalog'>
+    <function name='xmlCatalogSetDefaults' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Used to set the user preference w.r.t. to what catalogs should be accepted</info>
       <return type='void'/>
       <arg name='allow' type='xmlCatalogAllow' info='what catalogs should be accepted'/>
     </function>
-    <function name='xmlCharEncCloseFunc' file='encoding'>
+    <function name='xmlCharEncCloseFunc' file='encoding' module='encoding'>
       <info>Generic front-end for encoding handler close function</info>
       <return type='int' info='0 if success, or -1 in case of error'/>
       <arg name='handler' type='xmlCharEncodingHandler *' info='char enconding transformation data structure'/>
     </function>
-    <function name='xmlCharEncFirstLine' file='encoding'>
+    <function name='xmlCharEncFirstLine' file='encoding' module='encoding'>
       <info>Front-end for the encoding handler input function, but handle only the very first line, i.e. limit itself to 45 chars.</info>
       <return type='int' info='the number of byte written if success, or -1 general error -2 if the transcoding fails (for *in is not valid utf8 string or the result of transformation can&apos;t fit into the encoding we want), or'/>
       <arg name='handler' type='xmlCharEncodingHandler *' info='char enconding transformation data structure'/>
       <arg name='out' type='xmlBufferPtr' info='an xmlBuffer for the output.'/>
       <arg name='in' type='xmlBufferPtr' info='an xmlBuffer for the input'/>
     </function>
-    <function name='xmlCharEncInFunc' file='encoding'>
+    <function name='xmlCharEncInFunc' file='encoding' module='encoding'>
       <info>Generic front-end for the encoding handler input function</info>
       <return type='int' info='the number of byte written if success, or -1 general error -2 if the transcoding fails (for *in is not valid utf8 string or the result of transformation can&apos;t fit into the encoding we want), or'/>
       <arg name='handler' type='xmlCharEncodingHandler *' info='char encoding transformation data structure'/>
       <arg name='out' type='xmlBufferPtr' info='an xmlBuffer for the output.'/>
       <arg name='in' type='xmlBufferPtr' info='an xmlBuffer for the input'/>
     </function>
-    <function name='xmlCharEncOutFunc' file='encoding'>
+    <function name='xmlCharEncOutFunc' file='encoding' module='encoding'>
       <info>Generic front-end for the encoding handler output function a first call with @in == NULL has to be made firs to initiate the output in case of non-stateless encoding needing to initiate their state or the output (like the BOM in UTF16). In case of UTF8 sequence conversion errors for the given encoder, the content will be automatically remapped to a CharRef sequence.</info>
       <return type='int' info='the number of byte written if success, or -1 general error -2 if the transcoding fails (for *in is not valid utf8 string or the result of transformation can&apos;t fit into the encoding we want), or'/>
       <arg name='handler' type='xmlCharEncodingHandler *' info='char enconding transformation data structure'/>
       <arg name='out' type='xmlBufferPtr' info='an xmlBuffer for the output.'/>
       <arg name='in' type='xmlBufferPtr' info='an xmlBuffer for the input'/>
     </function>
-    <functype name='xmlCharEncodingInputFunc' file='encoding'>
+    <functype name='xmlCharEncodingInputFunc' file='encoding' module='encoding'>
       <info>Take a block of chars in the original encoding and try to convert it to an UTF-8 block of chars out.</info>
       <return type='int' info='the number of bytes written, -1 if lack of space, or -2 if the transcoding failed. The value of @inlen after return is the number of octets consumed if the return value is positive, else unpredictiable. The value of @outlen after return is the number of octets consumed.'/>
       <arg name='out' type='unsigned char *' info='a pointer to an array of bytes to store the UTF-8 result'/>
@@ -8277,7 +8297,7 @@
       <arg name='in' type='const unsigned char *' info='a pointer to an array of chars in the original encoding'/>
       <arg name='inlen' type='int *' info='the length of @in'/>
     </functype>
-    <functype name='xmlCharEncodingOutputFunc' file='encoding'>
+    <functype name='xmlCharEncodingOutputFunc' file='encoding' module='encoding'>
       <info>Take a block of UTF-8 chars in and try to convert it to another encoding. Note: a first call designed to produce heading info is called with in = NULL. If stateful this should also initialize the encoder state.</info>
       <return type='int' info='the number of bytes written, -1 if lack of space, or -2 if the transcoding failed. The value of @inlen after return is the number of octets consumed if the return value is positive, else unpredictiable. The value of @outlen after return is the number of octets produced.'/>
       <arg name='out' type='unsigned char *' info='a pointer to an array of bytes to store the result'/>
@@ -8285,236 +8305,236 @@
       <arg name='in' type='const unsigned char *' info='a pointer to an array of UTF-8 chars'/>
       <arg name='inlen' type='int *' info='the length of @in'/>
     </functype>
-    <function name='xmlCharInRange' file='chvalid'>
+    <function name='xmlCharInRange' file='chvalid' module='chvalid'>
       <info>Does a binary search of the range table to determine if char is valid</info>
       <return type='int' info='true if character valid, false otherwise'/>
       <arg name='val' type='unsigned int' info='character to be validated'/>
       <arg name='rptr' type='const xmlChRangeGroupPtr' info='pointer to range to be used to validate'/>
     </function>
-    <function name='xmlCharStrdup' file='xmlstring'>
+    <function name='xmlCharStrdup' file='xmlstring' module='xmlstring'>
       <info>a strdup for char&apos;s to xmlChar&apos;s</info>
       <return type='xmlChar *' info='a new xmlChar * or NULL'/>
       <arg name='cur' type='const char *' info='the input char *'/>
     </function>
-    <function name='xmlCharStrndup' file='xmlstring'>
+    <function name='xmlCharStrndup' file='xmlstring' module='xmlstring'>
       <info>a strndup for char&apos;s to xmlChar&apos;s</info>
       <return type='xmlChar *' info='a new xmlChar * or NULL'/>
       <arg name='cur' type='const char *' info='the input char *'/>
       <arg name='len' type='int' info='the len of @cur'/>
     </function>
-    <function name='xmlCheckFilename' file='xmlIO'>
+    <function name='xmlCheckFilename' file='xmlIO' module='xmlIO'>
       <info>function checks to see if @path is a valid source (file, socket...) for XML.  if stat is not available on the target machine,</info>
       <return type='int' info='1.  if stat fails, returns 0 (if calling stat on the filename fails, it can&apos;t be right). if stat succeeds and the file is a directory, returns 2.  otherwise returns 1.'/>
       <arg name='path' type='const char *' info='the path to check'/>
     </function>
-    <function name='xmlCheckHTTPInput' file='xmlIO'>
+    <function name='xmlCheckHTTPInput' file='xmlIO' module='xmlIO'>
       <info>Check an input in case it was created from an HTTP stream, in that case it will handle encoding and update of the base URL in case of redirection. It also checks for HTTP errors in which case the input is cleanly freed up and an appropriate error is raised in context</info>
       <return type='xmlParserInputPtr' info='the input or NULL in case of HTTP error.'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='ret' type='xmlParserInputPtr' info='an XML parser input'/>
     </function>
-    <function name='xmlCheckLanguageID' file='parserInternals'>
+    <function name='xmlCheckLanguageID' file='parserInternals' module='parser'>
       <info>Checks that the value conforms to the LanguageID production:  NOTE: this is somewhat deprecated, those productions were removed from the XML Second edition.  [33] LanguageID ::= Langcode (&apos;-&apos; Subcode)* [34] Langcode ::= ISO639Code |  IanaCode |  UserCode [35] ISO639Code ::= ([a-z] | [A-Z]) ([a-z] | [A-Z]) [36] IanaCode ::= (&apos;i&apos; | &apos;I&apos;) &apos;-&apos; ([a-z] | [A-Z])+ [37] UserCode ::= (&apos;x&apos; | &apos;X&apos;) &apos;-&apos; ([a-z] | [A-Z])+ [38] Subcode ::= ([a-z] | [A-Z])+</info>
       <return type='int' info='1 if correct 0 otherwise'/>
       <arg name='lang' type='const xmlChar *' info='pointer to the string value'/>
     </function>
-    <function name='xmlCheckUTF8' file='xmlstring'>
+    <function name='xmlCheckUTF8' file='xmlstring' module='xmlstring'>
       <info>Checks @utf for being valid UTF-8. @utf is assumed to be null-terminated. This function is not super-strict, as it will allow longer UTF-8 sequences than necessary. Note that Java is capable of producing these sequences if provoked. Also note, this routine checks for the 4-byte maximum size, but does not check for 0x10ffff maximum value.</info>
       <return type='int' info='value: true if @utf is valid.'/>
       <arg name='utf' type='const unsigned char *' info='Pointer to putative UTF-8 encoded string.'/>
     </function>
-    <function name='xmlCheckVersion' file='xmlversion'>
+    <function name='xmlCheckVersion' file='xmlversion' module='parserInternals'>
       <info>check the compiled lib version against the include one. This can warn or immediately kill the application</info>
       <return type='void'/>
       <arg name='version' type='int' info='the include version number'/>
     </function>
-    <function name='xmlCleanupCharEncodingHandlers' file='encoding'>
+    <function name='xmlCleanupCharEncodingHandlers' file='encoding' module='encoding'>
       <info>Cleanup the memory allocated for the char encoding support, it unregisters all the encoding handlers and the aliases.</info>
       <return type='void'/>
     </function>
-    <function name='xmlCleanupEncodingAliases' file='encoding'>
+    <function name='xmlCleanupEncodingAliases' file='encoding' module='encoding'>
       <info>Unregisters all aliases</info>
       <return type='void'/>
     </function>
-    <function name='xmlCleanupGlobals' file='globals'>
+    <function name='xmlCleanupGlobals' file='globals' module='globals'>
       <info>Additional cleanup for multi-threading</info>
       <return type='void'/>
     </function>
-    <function name='xmlCleanupInputCallbacks' file='xmlIO'>
+    <function name='xmlCleanupInputCallbacks' file='xmlIO' module='xmlIO'>
       <info>clears the entire input callback table. this includes the compiled-in I/O.</info>
       <return type='void'/>
     </function>
-    <function name='xmlCleanupMemory' file='xmlmemory'>
+    <function name='xmlCleanupMemory' file='xmlmemory' module='xmlmemory'>
       <info>Free up all the memory allocated by the library for its own use. This should not be called by user level code.</info>
       <return type='void'/>
     </function>
-    <function name='xmlCleanupOutputCallbacks' file='xmlIO'>
+    <function name='xmlCleanupOutputCallbacks' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>clears the entire output callback table. this includes the compiled-in I/O callbacks.</info>
       <return type='void'/>
     </function>
-    <function name='xmlCleanupParser' file='parser'>
+    <function name='xmlCleanupParser' file='parser' module='parser'>
       <info>Cleanup function for the XML library. It tries to reclaim all parsing related global memory allocated for the library processing. It doesn&apos;t deallocate any document related memory. Calling this function should not prevent reusing the library but one should call xmlCleanupParser() only when the process has finished using the library or XML document built with it.</info>
       <return type='void'/>
     </function>
-    <function name='xmlCleanupPredefinedEntities' file='entities'>
+    <function name='xmlCleanupPredefinedEntities' file='entities' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Cleanup up the predefined entities table. Deprecated call</info>
       <return type='void'/>
     </function>
-    <function name='xmlCleanupThreads' file='threads'>
+    <function name='xmlCleanupThreads' file='threads' module='threads'>
       <info>xmlCleanupThreads() is used to to cleanup all the thread related data of the libxml2 library once processing has ended.</info>
       <return type='void'/>
     </function>
-    <function name='xmlClearNodeInfoSeq' file='parser'>
+    <function name='xmlClearNodeInfoSeq' file='parser' module='parserInternals'>
       <info>-- Clear (release memory and reinitialize) node info sequence</info>
       <return type='void'/>
       <arg name='seq' type='xmlParserNodeInfoSeqPtr' info='a node info sequence pointer'/>
     </function>
-    <function name='xmlClearParserCtxt' file='parser'>
+    <function name='xmlClearParserCtxt' file='parser' module='parserInternals'>
       <info>Clear (release owned resources) and reinitialize a parser context</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlConvertSGMLCatalog' file='catalog'>
+    <function name='xmlConvertSGMLCatalog' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Convert all the SGML catalog entries as XML ones</info>
       <return type='int' info='the number of entries converted if successful, -1 otherwise'/>
       <arg name='catal' type='xmlCatalogPtr' info='the catalog'/>
     </function>
-    <function name='xmlCopyAttributeTable' file='valid'>
+    <function name='xmlCopyAttributeTable' file='valid' module='valid'>
       <cond>defined(LIBXML_TREE_ENABLED)</cond>
       <info>Build a copy of an attribute table.</info>
       <return type='xmlAttributeTablePtr' info='the new xmlAttributeTablePtr or NULL in case of error.'/>
       <arg name='table' type='xmlAttributeTablePtr' info='An attribute table'/>
     </function>
-    <function name='xmlCopyChar' file='parserInternals'>
+    <function name='xmlCopyChar' file='parserInternals' module='parserInternals'>
       <info>append the char value in the array</info>
       <return type='int' info='the number of xmlChar written'/>
       <arg name='len' type='int' info='Ignored, compatibility'/>
       <arg name='out' type='xmlChar *' info='pointer to an array of xmlChar'/>
       <arg name='val' type='int' info='the char value'/>
     </function>
-    <function name='xmlCopyCharMultiByte' file='parserInternals'>
+    <function name='xmlCopyCharMultiByte' file='parserInternals' module='parserInternals'>
       <info>append the char value in the array</info>
       <return type='int' info='the number of xmlChar written'/>
       <arg name='out' type='xmlChar *' info='pointer to an array of xmlChar'/>
       <arg name='val' type='int' info='the char value'/>
     </function>
-    <function name='xmlCopyDoc' file='tree'>
+    <function name='xmlCopyDoc' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Do a copy of the document info. If recursive, the content tree will be copied too as well as DTD, namespaces and entities.</info>
       <return type='xmlDocPtr' info='a new #xmlDocPtr, or NULL in case of error.'/>
       <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'>
+    <function name='xmlCopyDocElementContent' file='valid' module='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'>
+    <function name='xmlCopyDtd' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED)</cond>
       <info>Do a copy of the dtd.</info>
       <return type='xmlDtdPtr' info='a new #xmlDtdPtr, or NULL in case of error.'/>
       <arg name='dtd' type='xmlDtdPtr' info='the dtd'/>
     </function>
-    <function name='xmlCopyElementContent' file='valid'>
+    <function name='xmlCopyElementContent' file='valid' module='valid'>
       <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>
-    <function name='xmlCopyElementTable' file='valid'>
+    <function name='xmlCopyElementTable' file='valid' module='valid'>
       <cond>defined(LIBXML_TREE_ENABLED)</cond>
       <info>Build a copy of an element table.</info>
       <return type='xmlElementTablePtr' info='the new xmlElementTablePtr or NULL in case of error.'/>
       <arg name='table' type='xmlElementTablePtr' info='An element table'/>
     </function>
-    <function name='xmlCopyEntitiesTable' file='entities'>
+    <function name='xmlCopyEntitiesTable' file='entities' module='entities'>
       <cond>defined(LIBXML_TREE_ENABLED)</cond>
       <info>Build a copy of an entity table.</info>
       <return type='xmlEntitiesTablePtr' info='the new xmlEntitiesTablePtr or NULL in case of error.'/>
       <arg name='table' type='xmlEntitiesTablePtr' info='An entity table'/>
     </function>
-    <function name='xmlCopyEnumeration' file='valid'>
+    <function name='xmlCopyEnumeration' file='valid' module='valid'>
       <cond>defined(LIBXML_TREE_ENABLED)</cond>
       <info>Copy an enumeration attribute node (recursive).</info>
       <return type='xmlEnumerationPtr' info='the xmlEnumerationPtr just created or NULL in case of error.'/>
       <arg name='cur' type='xmlEnumerationPtr' info='the tree to copy.'/>
     </function>
-    <function name='xmlCopyError' file='xmlerror'>
+    <function name='xmlCopyError' file='xmlerror' module='error'>
       <info>Save the original error to the new place.</info>
       <return type='int' info='0 in case of success and -1 in case of error.'/>
       <arg name='from' type='xmlErrorPtr' info='a source error'/>
       <arg name='to' type='xmlErrorPtr' info='a target error'/>
     </function>
-    <function name='xmlCopyNamespace' file='tree'>
+    <function name='xmlCopyNamespace' file='tree' module='tree'>
       <info>Do a copy of the namespace.</info>
       <return type='xmlNsPtr' info='a new #xmlNsPtr, or NULL in case of error.'/>
       <arg name='cur' type='xmlNsPtr' info='the namespace'/>
     </function>
-    <function name='xmlCopyNamespaceList' file='tree'>
+    <function name='xmlCopyNamespaceList' file='tree' module='tree'>
       <info>Do a copy of an namespace list.</info>
       <return type='xmlNsPtr' info='a new #xmlNsPtr, or NULL in case of error.'/>
       <arg name='cur' type='xmlNsPtr' info='the first namespace'/>
     </function>
-    <function name='xmlCopyNode' file='tree'>
+    <function name='xmlCopyNode' file='tree' module='tree'>
       <info>Do a copy of the node.</info>
       <return type='xmlNodePtr' info='a new #xmlNodePtr, or NULL in case of error.'/>
       <arg name='node' type='const xmlNodePtr' info='the node'/>
       <arg name='extended' type='int' info='if 1 do a recursive copy (properties, namespaces and children when applicable) if 2 copy properties and namespaces (when applicable)'/>
     </function>
-    <function name='xmlCopyNodeList' file='tree'>
+    <function name='xmlCopyNodeList' file='tree' module='tree'>
       <info>Do a recursive copy of the node list. Use xmlDocCopyNodeList() if possible to ensure string interning.</info>
       <return type='xmlNodePtr' info='a new #xmlNodePtr, or NULL in case of error.'/>
       <arg name='node' type='const xmlNodePtr' info='the first node in the list.'/>
     </function>
-    <function name='xmlCopyNotationTable' file='valid'>
+    <function name='xmlCopyNotationTable' file='valid' module='valid'>
       <cond>defined(LIBXML_TREE_ENABLED)</cond>
       <info>Build a copy of a notation table.</info>
       <return type='xmlNotationTablePtr' info='the new xmlNotationTablePtr or NULL in case of error.'/>
       <arg name='table' type='xmlNotationTablePtr' info='A notation table'/>
     </function>
-    <function name='xmlCopyProp' file='tree'>
+    <function name='xmlCopyProp' file='tree' module='tree'>
       <info>Do a copy of the attribute.</info>
       <return type='xmlAttrPtr' info='a new #xmlAttrPtr, or NULL in case of error.'/>
       <arg name='target' type='xmlNodePtr' info='the element where the attribute will be grafted'/>
       <arg name='cur' type='xmlAttrPtr' info='the attribute'/>
     </function>
-    <function name='xmlCopyPropList' file='tree'>
+    <function name='xmlCopyPropList' file='tree' module='tree'>
       <info>Do a copy of an attribute list.</info>
       <return type='xmlAttrPtr' info='a new #xmlAttrPtr, or NULL in case of error.'/>
       <arg name='target' type='xmlNodePtr' info='the element where the attributes will be grafted'/>
       <arg name='cur' type='xmlAttrPtr' info='the first attribute'/>
     </function>
-    <function name='xmlCreateDocParserCtxt' file='parser'>
+    <function name='xmlCreateDocParserCtxt' file='parser' module='parser'>
       <info>Creates a parser context for an XML in-memory document.</info>
       <return type='xmlParserCtxtPtr' info='the new parser context or NULL'/>
       <arg name='cur' type='const xmlChar *' info='a pointer to an array of xmlChar'/>
     </function>
-    <function name='xmlCreateEntitiesTable' file='entities'>
+    <function name='xmlCreateEntitiesTable' file='entities' module='entities'>
       <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'>
+    <function name='xmlCreateEntityParserCtxt' file='parserInternals' module='parser'>
       <info>Create a parser context for an external entity Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time.</info>
       <return type='xmlParserCtxtPtr' info='the new parser context or NULL'/>
       <arg name='URL' type='const xmlChar *' info='the entity URL'/>
       <arg name='ID' type='const xmlChar *' info='the entity PUBLIC ID'/>
       <arg name='base' type='const xmlChar *' info='a possible base for the target URI'/>
     </function>
-    <function name='xmlCreateEnumeration' file='valid'>
+    <function name='xmlCreateEnumeration' file='valid' module='valid'>
       <info>create and initialize an enumeration attribute node.</info>
       <return type='xmlEnumerationPtr' info='the xmlEnumerationPtr just created or NULL in case of error.'/>
       <arg name='name' type='const xmlChar *' info='the enumeration name or NULL'/>
     </function>
-    <function name='xmlCreateFileParserCtxt' file='parserInternals'>
+    <function name='xmlCreateFileParserCtxt' file='parserInternals' module='parser'>
       <info>Create a parser context for a file content. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time.</info>
       <return type='xmlParserCtxtPtr' info='the new parser context or NULL'/>
       <arg name='filename' type='const char *' info='the filename'/>
     </function>
-    <function name='xmlCreateIOParserCtxt' file='parser'>
+    <function name='xmlCreateIOParserCtxt' file='parser' module='parser'>
       <info>Create a parser context for using the XML parser with an existing I/O stream</info>
       <return type='xmlParserCtxtPtr' info='the new parser context or NULL'/>
       <arg name='sax' type='xmlSAXHandlerPtr' info='a SAX handler'/>
@@ -8524,7 +8544,7 @@
       <arg name='ioctx' type='void *' info='an I/O handler'/>
       <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known'/>
     </function>
-    <function name='xmlCreateIntSubset' file='tree'>
+    <function name='xmlCreateIntSubset' file='tree' module='tree'>
       <info>Create the internal subset of a document</info>
       <return type='xmlDtdPtr' info='a pointer to the new DTD structure'/>
       <arg name='doc' type='xmlDocPtr' info='the document pointer'/>
@@ -8532,13 +8552,13 @@
       <arg name='ExternalID' type='const xmlChar *' info='the external (PUBLIC) ID'/>
       <arg name='SystemID' type='const xmlChar *' info='the system ID'/>
     </function>
-    <function name='xmlCreateMemoryParserCtxt' file='parserInternals'>
+    <function name='xmlCreateMemoryParserCtxt' file='parserInternals' module='parser'>
       <info>Create a parser context for an XML in-memory document.</info>
       <return type='xmlParserCtxtPtr' info='the new parser context or NULL'/>
       <arg name='buffer' type='const char *' info='a pointer to a char array'/>
       <arg name='size' type='int' info='the size of the array'/>
     </function>
-    <function name='xmlCreatePushParserCtxt' file='parser'>
+    <function name='xmlCreatePushParserCtxt' file='parser' module='parser'>
       <cond>defined(LIBXML_PUSH_ENABLED)</cond>
       <info>Create a parser context for using the XML parser in push mode. If @buffer and @size are non-NULL, the data is used to detect the encoding.  The remaining characters will be parsed so they don&apos;t need to be fed in again through xmlParseChunk. To allow content encoding detection, @size should be &gt;= 4 The value of @filename is used for fetching external entities and error/warning reports.</info>
       <return type='xmlParserCtxtPtr' info='the new parser context or NULL'/>
@@ -8548,22 +8568,22 @@
       <arg name='size' type='int' info='number of chars in the array'/>
       <arg name='filename' type='const char *' info='an optional file name or URI'/>
     </function>
-    <function name='xmlCreateURI' file='uri'>
+    <function name='xmlCreateURI' file='uri' module='uri'>
       <info>Simply creates an empty xmlURI</info>
       <return type='xmlURIPtr' info='the new structure or NULL in case of error'/>
     </function>
-    <function name='xmlCreateURLParserCtxt' file='parserInternals'>
+    <function name='xmlCreateURLParserCtxt' file='parserInternals' module='parser'>
       <info>Create a parser context for a file or URL content. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time and for file accesses</info>
       <return type='xmlParserCtxtPtr' info='the new parser context or NULL'/>
       <arg name='filename' type='const char *' info='the filename or URL'/>
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
     </function>
-    <function name='xmlCtxtGetLastError' file='xmlerror'>
+    <function name='xmlCtxtGetLastError' file='xmlerror' module='error'>
       <info>Get the last parsing error registered.</info>
       <return type='xmlErrorPtr' info='NULL if no error occured or a pointer to the error'/>
       <arg name='ctx' type='void *' info='an XML parser context'/>
     </function>
-    <function name='xmlCtxtReadDoc' file='parser'>
+    <function name='xmlCtxtReadDoc' file='parser' module='parser'>
       <info>parse an XML in-memory document and build a tree. This reuses the existing @ctxt parser context</info>
       <return type='xmlDocPtr' info='the resulting document tree'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
@@ -8572,7 +8592,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
     </function>
-    <function name='xmlCtxtReadFd' file='parser'>
+    <function name='xmlCtxtReadFd' file='parser' module='parser'>
       <info>parse an XML from a file descriptor and build a tree. This reuses the existing @ctxt parser context NOTE that the file descriptor will not be closed when the reader is closed or reset.</info>
       <return type='xmlDocPtr' info='the resulting document tree'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
@@ -8581,7 +8601,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
     </function>
-    <function name='xmlCtxtReadFile' file='parser'>
+    <function name='xmlCtxtReadFile' file='parser' module='parser'>
       <info>parse an XML file from the filesystem or the network. This reuses the existing @ctxt parser context</info>
       <return type='xmlDocPtr' info='the resulting document tree'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
@@ -8589,7 +8609,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
     </function>
-    <function name='xmlCtxtReadIO' file='parser'>
+    <function name='xmlCtxtReadIO' file='parser' module='parser'>
       <info>parse an XML document from I/O functions and source and build a tree. This reuses the existing @ctxt parser context</info>
       <return type='xmlDocPtr' info='the resulting document tree'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
@@ -8600,7 +8620,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
     </function>
-    <function name='xmlCtxtReadMemory' file='parser'>
+    <function name='xmlCtxtReadMemory' file='parser' module='parser'>
       <info>parse an XML in-memory document and build a tree. This reuses the existing @ctxt parser context</info>
       <return type='xmlDocPtr' info='the resulting document tree'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
@@ -8610,17 +8630,17 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
     </function>
-    <function name='xmlCtxtReset' file='parser'>
+    <function name='xmlCtxtReset' file='parser' module='parser'>
       <info>Reset a parser context</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlCtxtResetLastError' file='xmlerror'>
+    <function name='xmlCtxtResetLastError' file='xmlerror' module='error'>
       <info>Cleanup the last global error registered. For parsing error this does not change the well-formedness result.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='an XML parser context'/>
     </function>
-    <function name='xmlCtxtResetPush' file='parser'>
+    <function name='xmlCtxtResetPush' file='parser' module='parser'>
       <info>Reset a push parser context</info>
       <return type='int' info='0 in case of success and 1 in case of error'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
@@ -8629,26 +8649,26 @@
       <arg name='filename' type='const char *' info='an optional file name or URI'/>
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
     </function>
-    <function name='xmlCtxtUseOptions' file='parser'>
+    <function name='xmlCtxtUseOptions' file='parser' module='parser'>
       <info>Applies the options to the parser context</info>
       <return type='int' info='0 in case of success, the set of unknown or unimplemented options in case of error.'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
     </function>
-    <function name='xmlCurrentChar' file='parserInternals'>
+    <function name='xmlCurrentChar' file='parserInternals' module='parserInternals'>
       <info>The current char value, if using UTF-8 this may actually span multiple bytes in the input buffer. Implement the end of line normalization: 2.11 End-of-Line Handling Wherever an external parsed entity or the literal entity value of an internal parsed entity contains either the literal two-character sequence &quot;#xD#xA&quot; or a standalone literal #xD, an XML processor must pass to the application the single character #xA. This behavior can conveniently be produced by normalizing all line breaks to #xA on input, before parsing.)</info>
       <return type='int' info='the current char value and its length'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='the XML parser context'/>
       <arg name='len' type='int *' info='pointer to the length of the char read'/>
     </function>
-    <function name='xmlDebugCheckDocument' file='debugXML'>
+    <function name='xmlDebugCheckDocument' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
       <info>Check the document for potential content problems, and output the errors to @output</info>
       <return type='int' info='the number of errors found'/>
       <arg name='output' type='FILE *' info='the FILE * for the output'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
     </function>
-    <function name='xmlDebugDumpAttr' file='debugXML'>
+    <function name='xmlDebugDumpAttr' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
       <info>Dumps debug information for the attribute</info>
       <return type='void'/>
@@ -8656,7 +8676,7 @@
       <arg name='attr' type='xmlAttrPtr' info='the attribute'/>
       <arg name='depth' type='int' info='the indentation level.'/>
     </function>
-    <function name='xmlDebugDumpAttrList' file='debugXML'>
+    <function name='xmlDebugDumpAttrList' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
       <info>Dumps debug information for the attribute list</info>
       <return type='void'/>
@@ -8664,35 +8684,35 @@
       <arg name='attr' type='xmlAttrPtr' info='the attribute list'/>
       <arg name='depth' type='int' info='the indentation level.'/>
     </function>
-    <function name='xmlDebugDumpDTD' file='debugXML'>
+    <function name='xmlDebugDumpDTD' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
       <info>Dumps debug information for the DTD</info>
       <return type='void'/>
       <arg name='output' type='FILE *' info='the FILE * for the output'/>
       <arg name='dtd' type='xmlDtdPtr' info='the DTD'/>
     </function>
-    <function name='xmlDebugDumpDocument' file='debugXML'>
+    <function name='xmlDebugDumpDocument' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
       <info>Dumps debug information for the document, it&apos;s recursive</info>
       <return type='void'/>
       <arg name='output' type='FILE *' info='the FILE * for the output'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
     </function>
-    <function name='xmlDebugDumpDocumentHead' file='debugXML'>
+    <function name='xmlDebugDumpDocumentHead' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
       <info>Dumps debug information cncerning the document, not recursive</info>
       <return type='void'/>
       <arg name='output' type='FILE *' info='the FILE * for the output'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
     </function>
-    <function name='xmlDebugDumpEntities' file='debugXML'>
+    <function name='xmlDebugDumpEntities' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
       <info>Dumps debug information for all the entities in use by the document</info>
       <return type='void'/>
       <arg name='output' type='FILE *' info='the FILE * for the output'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
     </function>
-    <function name='xmlDebugDumpNode' file='debugXML'>
+    <function name='xmlDebugDumpNode' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
       <info>Dumps debug information for the element node, it is recursive</info>
       <return type='void'/>
@@ -8700,7 +8720,7 @@
       <arg name='node' type='xmlNodePtr' info='the node'/>
       <arg name='depth' type='int' info='the indentation level.'/>
     </function>
-    <function name='xmlDebugDumpNodeList' file='debugXML'>
+    <function name='xmlDebugDumpNodeList' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
       <info>Dumps debug information for the list of element node, it is recursive</info>
       <return type='void'/>
@@ -8708,7 +8728,7 @@
       <arg name='node' type='xmlNodePtr' info='the node list'/>
       <arg name='depth' type='int' info='the indentation level.'/>
     </function>
-    <function name='xmlDebugDumpOneNode' file='debugXML'>
+    <function name='xmlDebugDumpOneNode' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
       <info>Dumps debug information for the element node, it is not recursive</info>
       <return type='void'/>
@@ -8716,14 +8736,14 @@
       <arg name='node' type='xmlNodePtr' info='the node'/>
       <arg name='depth' type='int' info='the indentation level.'/>
     </function>
-    <function name='xmlDebugDumpString' file='debugXML'>
+    <function name='xmlDebugDumpString' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
       <info>Dumps informations about the string, shorten it if necessary</info>
       <return type='void'/>
       <arg name='output' type='FILE *' info='the FILE * for the output'/>
       <arg name='str' type='const xmlChar *' info='the string'/>
     </function>
-    <function name='xmlDecodeEntities' file='parserInternals'>
+    <function name='xmlDecodeEntities' file='parserInternals' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>This function is deprecated, we now always process entities content through xmlStringDecodeEntities  TODO: remove it in next major release.  [67] Reference ::= EntityRef | CharRef  [69] PEReference ::= &apos;%&apos; Name &apos;;&apos;</info>
       <return type='xmlChar *' info='A newly allocated string with the substitution done. The caller must deallocate it !'/>
@@ -8734,107 +8754,107 @@
       <arg name='end2' type='xmlChar' info='an end marker xmlChar, 0 if none'/>
       <arg name='end3' type='xmlChar' info='an end marker xmlChar, 0 if none'/>
     </function>
-    <function name='xmlDefaultSAXHandlerInit' file='SAX2'>
+    <function name='xmlDefaultSAXHandlerInit' file='SAX2' module='SAX2'>
       <info>Initialize the default SAX2 handler</info>
       <return type='void'/>
     </function>
-    <function name='xmlDelEncodingAlias' file='encoding'>
+    <function name='xmlDelEncodingAlias' file='encoding' module='encoding'>
       <info>Unregisters an encoding alias @alias</info>
       <return type='int' info='0 in case of success, -1 in case of error'/>
       <arg name='alias' type='const char *' info='the alias name as parsed, in UTF-8 format (ASCII actually)'/>
     </function>
-    <function name='xmlDeregisterNodeDefault' file='globals'>
+    <function name='xmlDeregisterNodeDefault' file='globals' module='globals'>
       <info>Registers a callback for node destruction</info>
       <return type='xmlDeregisterNodeFunc' info='the previous value of the deregistration function'/>
       <arg name='func' type='xmlDeregisterNodeFunc' info='function pointer to the new DeregisterNodeFunc'/>
     </function>
-    <functype name='xmlDeregisterNodeFunc' file='globals'>
+    <functype name='xmlDeregisterNodeFunc' file='globals' module='globals'>
       <info></info>
       <return type='void'/>
       <arg name='node' type='xmlNodePtr' info=''/>
     </functype>
-    <function name='xmlDetectCharEncoding' file='encoding'>
+    <function name='xmlDetectCharEncoding' file='encoding' module='encoding'>
       <info>Guess the encoding of the entity using the first bytes of the entity content according to the non-normative appendix F of the XML-1.0 recommendation.</info>
       <return type='xmlCharEncoding' info='one of the XML_CHAR_ENCODING_... values.'/>
       <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'>
+    <function name='xmlDictCleanup' file='dict' module='dict'>
       <info>Free the dictionary mutex.</info>
       <return type='void'/>
     </function>
-    <function name='xmlDictCreate' file='dict'>
+    <function name='xmlDictCreate' file='dict' module='dict'>
       <info>Create a new dictionary</info>
       <return type='xmlDictPtr' info='the newly created dictionnary, or NULL if an error occured.'/>
     </function>
-    <function name='xmlDictCreateSub' file='dict'>
+    <function name='xmlDictCreateSub' file='dict' module='dict'>
       <info>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.</info>
       <return type='xmlDictPtr' info='the newly created dictionnary, or NULL if an error occured.'/>
       <arg name='sub' type='xmlDictPtr' info='an existing dictionnary'/>
     </function>
-    <function name='xmlDictExists' file='dict'>
+    <function name='xmlDictExists' file='dict' module='dict'>
       <info>Check if the @name exists in the dictionnary @dict.</info>
       <return type='const xmlChar *' info='the internal copy of the name or NULL if not found.'/>
       <arg name='dict' type='xmlDictPtr' info='the dictionnary'/>
       <arg name='name' type='const xmlChar *' info='the name of the userdata'/>
       <arg name='len' type='int' info='the length of the name, if -1 it is recomputed'/>
     </function>
-    <function name='xmlDictFree' file='dict'>
+    <function name='xmlDictFree' file='dict' module='dict'>
       <info>Free the hash @dict and its contents. The userdata is deallocated with @f if provided.</info>
       <return type='void'/>
       <arg name='dict' type='xmlDictPtr' info='the dictionnary'/>
     </function>
-    <function name='xmlDictLookup' file='dict'>
+    <function name='xmlDictLookup' file='dict' module='dict'>
       <info>Add the @name to the dictionnary @dict if not present.</info>
       <return type='const xmlChar *' info='the internal copy of the name or NULL in case of internal error'/>
       <arg name='dict' type='xmlDictPtr' info='the dictionnary'/>
       <arg name='name' type='const xmlChar *' info='the name of the userdata'/>
       <arg name='len' type='int' info='the length of the name, if -1 it is recomputed'/>
     </function>
-    <function name='xmlDictOwns' file='dict'>
+    <function name='xmlDictOwns' file='dict' module='dict'>
       <info>check if a string is owned by the disctionary</info>
       <return type='int' info='1 if true, 0 if false and -1 in case of error -1 in case of error'/>
       <arg name='dict' type='xmlDictPtr' info='the dictionnary'/>
       <arg name='str' type='const xmlChar *' info='the string'/>
     </function>
-    <function name='xmlDictQLookup' file='dict'>
+    <function name='xmlDictQLookup' file='dict' module='dict'>
       <info>Add the QName @prefix:@name to the hash @dict if not present.</info>
       <return type='const xmlChar *' info='the internal copy of the QName or NULL in case of internal error'/>
       <arg name='dict' type='xmlDictPtr' info='the dictionnary'/>
       <arg name='prefix' type='const xmlChar *' info='the prefix'/>
       <arg name='name' type='const xmlChar *' info='the name'/>
     </function>
-    <function name='xmlDictReference' file='dict'>
+    <function name='xmlDictReference' file='dict' module='dict'>
       <info>Increment the reference counter of a dictionary</info>
       <return type='int' info='0 in case of success and -1 in case of error'/>
       <arg name='dict' type='xmlDictPtr' info='the dictionnary'/>
     </function>
-    <function name='xmlDictSize' file='dict'>
+    <function name='xmlDictSize' file='dict' module='dict'>
       <info>Query the number of elements installed in the hash @dict.</info>
       <return type='int' info='the number of elements in the dictionnary or -1 in case of error'/>
       <arg name='dict' type='xmlDictPtr' info='the dictionnary'/>
     </function>
-    <function name='xmlDocCopyNode' file='tree'>
+    <function name='xmlDocCopyNode' file='tree' module='tree'>
       <info>Do a copy of the node to a given document.</info>
       <return type='xmlNodePtr' info='a new #xmlNodePtr, or NULL in case of error.'/>
       <arg name='node' type='const xmlNodePtr' info='the node'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='extended' type='int' info='if 1 do a recursive copy (properties, namespaces and children when applicable) if 2 copy properties and namespaces (when applicable)'/>
     </function>
-    <function name='xmlDocCopyNodeList' file='tree'>
+    <function name='xmlDocCopyNodeList' file='tree' module='tree'>
       <info>Do a recursive copy of the node list.</info>
       <return type='xmlNodePtr' info='a new #xmlNodePtr, or NULL in case of error.'/>
       <arg name='doc' type='xmlDocPtr' info='the target document'/>
       <arg name='node' type='const xmlNodePtr' info='the first node in the list.'/>
     </function>
-    <function name='xmlDocDump' file='tree'>
+    <function name='xmlDocDump' file='tree' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an XML document to an open FILE.</info>
       <return type='int' info='the number of bytes written or -1 in case of failure.'/>
       <arg name='f' type='FILE *' info='the FILE*'/>
       <arg name='cur' type='xmlDocPtr' info='the document'/>
     </function>
-    <function name='xmlDocDumpFormatMemory' file='tree'>
+    <function name='xmlDocDumpFormatMemory' file='tree' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an XML document in memory and return the #xmlChar * and it&apos;s size. It&apos;s up to the caller to free the memory with xmlFree(). Note that @format = 1 provide node indenting only if xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was called</info>
       <return type='void'/>
@@ -8843,7 +8863,7 @@
       <arg name='size' type='int *' info='OUT: the memory length'/>
       <arg name='format' type='int' info='should formatting spaces been added'/>
     </function>
-    <function name='xmlDocDumpFormatMemoryEnc' file='tree'>
+    <function name='xmlDocDumpFormatMemoryEnc' file='tree' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump the current DOM tree into memory using the character encoding specified by the caller.  Note it is up to the caller of this function to free the allocated memory with xmlFree(). Note that @format = 1 provide node indenting only if xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was called</info>
       <return type='void'/>
@@ -8853,7 +8873,7 @@
       <arg name='txt_encoding' type='const char *' info='Character encoding to use when generating XML text'/>
       <arg name='format' type='int' info='should formatting spaces been added'/>
     </function>
-    <function name='xmlDocDumpMemory' file='tree'>
+    <function name='xmlDocDumpMemory' file='tree' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an XML document in memory and return the #xmlChar * and it&apos;s size in bytes. It&apos;s up to the caller to free the memory with xmlFree(). The resulting byte array is zero terminated, though the last 0 is not included in the returned size.</info>
       <return type='void'/>
@@ -8861,7 +8881,7 @@
       <arg name='mem' type='xmlChar **' info='OUT: the memory pointer'/>
       <arg name='size' type='int *' info='OUT: the memory length'/>
     </function>
-    <function name='xmlDocDumpMemoryEnc' file='tree'>
+    <function name='xmlDocDumpMemoryEnc' file='tree' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump the current DOM tree into memory using the character encoding specified by the caller.  Note it is up to the caller of this function to free the allocated memory with xmlFree().</info>
       <return type='void'/>
@@ -8870,7 +8890,7 @@
       <arg name='doc_txt_len' type='int *' info='Length of the generated XML text'/>
       <arg name='txt_encoding' type='const char *' info='Character encoding to use when generating XML text'/>
     </function>
-    <function name='xmlDocFormatDump' file='tree'>
+    <function name='xmlDocFormatDump' file='tree' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an XML document to an open FILE.</info>
       <return type='int' info='the number of bytes written or -1 in case of failure. Note that @format = 1 provide node indenting only if xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was called'/>
@@ -8878,75 +8898,75 @@
       <arg name='cur' type='xmlDocPtr' info='the document'/>
       <arg name='format' type='int' info='should formatting spaces been added'/>
     </function>
-    <function name='xmlDocGetRootElement' file='tree'>
+    <function name='xmlDocGetRootElement' file='tree' module='tree'>
       <info>Get the root element of the document (doc-&gt;children is a list containing possibly comments, PIs, etc ...).</info>
       <return type='xmlNodePtr' info='the #xmlNodePtr for the root or NULL'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
     </function>
-    <function name='xmlDocSetRootElement' file='tree'>
+    <function name='xmlDocSetRootElement' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Set the root element of the document (doc-&gt;children is a list containing possibly comments, PIs, etc ...).</info>
       <return type='xmlNodePtr' info='the old root element if any was found'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='root' type='xmlNodePtr' info='the new document root element'/>
     </function>
-    <function name='xmlDumpAttributeDecl' file='valid'>
+    <function name='xmlDumpAttributeDecl' file='valid' module='valid'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>This will dump the content of the attribute declaration as an XML DTD definition</info>
       <return type='void'/>
       <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
       <arg name='attr' type='xmlAttributePtr' info='An attribute declaration'/>
     </function>
-    <function name='xmlDumpAttributeTable' file='valid'>
+    <function name='xmlDumpAttributeTable' file='valid' module='valid'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>This will dump the content of the attribute table as an XML DTD definition</info>
       <return type='void'/>
       <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
       <arg name='table' type='xmlAttributeTablePtr' info='An attribute table'/>
     </function>
-    <function name='xmlDumpElementDecl' file='valid'>
+    <function name='xmlDumpElementDecl' file='valid' module='valid'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>This will dump the content of the element declaration as an XML DTD definition</info>
       <return type='void'/>
       <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
       <arg name='elem' type='xmlElementPtr' info='An element table'/>
     </function>
-    <function name='xmlDumpElementTable' file='valid'>
+    <function name='xmlDumpElementTable' file='valid' module='valid'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>This will dump the content of the element table as an XML DTD definition</info>
       <return type='void'/>
       <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
       <arg name='table' type='xmlElementTablePtr' info='An element table'/>
     </function>
-    <function name='xmlDumpEntitiesTable' file='entities'>
+    <function name='xmlDumpEntitiesTable' file='entities' module='entities'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>This will dump the content of the entity table as an XML DTD definition</info>
       <return type='void'/>
       <arg name='buf' type='xmlBufferPtr' info='An XML buffer.'/>
       <arg name='table' type='xmlEntitiesTablePtr' info='An entity table'/>
     </function>
-    <function name='xmlDumpEntityDecl' file='entities'>
+    <function name='xmlDumpEntityDecl' file='entities' module='entities'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>This will dump the content of the entity table as an XML DTD definition</info>
       <return type='void'/>
       <arg name='buf' type='xmlBufferPtr' info='An XML buffer.'/>
       <arg name='ent' type='xmlEntityPtr' info='An entity table'/>
     </function>
-    <function name='xmlDumpNotationDecl' file='valid'>
+    <function name='xmlDumpNotationDecl' file='valid' module='valid'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>This will dump the content the notation declaration as an XML DTD definition</info>
       <return type='void'/>
       <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
       <arg name='nota' type='xmlNotationPtr' info='A notation declaration'/>
     </function>
-    <function name='xmlDumpNotationTable' file='valid'>
+    <function name='xmlDumpNotationTable' file='valid' module='valid'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>This will dump the content of the notation table as an XML DTD definition</info>
       <return type='void'/>
       <arg name='buf' type='xmlBufferPtr' info='the XML buffer output'/>
       <arg name='table' type='xmlNotationTablePtr' info='A notation table'/>
     </function>
-    <function name='xmlElemDump' file='tree'>
+    <function name='xmlElemDump' file='tree' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an XML/HTML node, recursive behaviour, children are printed too.</info>
       <return type='void'/>
@@ -8954,26 +8974,26 @@
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='cur' type='xmlNodePtr' info='the current node'/>
     </function>
-    <function name='xmlEncodeEntities' file='entities'>
+    <function name='xmlEncodeEntities' file='entities' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>TODO: remove xmlEncodeEntities, once we are not afraid of breaking binary compatibility  People must migrate their code to xmlEncodeEntitiesReentrant ! This routine will issue a warning when encountered.</info>
       <return type='const xmlChar *' info='NULL'/>
       <arg name='doc' type='xmlDocPtr' info='the document containing the string'/>
       <arg name='input' type='const xmlChar *' info='A string to convert to XML.'/>
     </function>
-    <function name='xmlEncodeEntitiesReentrant' file='entities'>
+    <function name='xmlEncodeEntitiesReentrant' file='entities' module='entities'>
       <info>Do a global encoding of a string, replacing the predefined entities and non ASCII values with their entities and CharRef counterparts. Contrary to xmlEncodeEntities, this routine is reentrant, and result must be deallocated.</info>
       <return type='xmlChar *' info='A newly allocated string with the substitution done.'/>
       <arg name='doc' type='xmlDocPtr' info='the document containing the string'/>
       <arg name='input' type='const xmlChar *' info='A string to convert to XML.'/>
     </function>
-    <function name='xmlEncodeSpecialChars' file='entities'>
+    <function name='xmlEncodeSpecialChars' file='entities' module='entities'>
       <info>Do a global encoding of a string, replacing the predefined entities this routine is reentrant, and result must be deallocated.</info>
       <return type='xmlChar *' info='A newly allocated string with the substitution done.'/>
       <arg name='doc' type='xmlDocPtr' info='the document containing the string'/>
       <arg name='input' type='const xmlChar *' info='A string to convert to XML.'/>
     </function>
-    <functype name='xmlEntityReferenceFunc' file='parserInternals'>
+    <functype name='xmlEntityReferenceFunc' file='parserInternals' module='parserInternals'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Callback function used when one needs to be able to track back the provenance of a chunk of nodes inherited from an entity replacement.</info>
       <return type='void'/>
@@ -8981,216 +9001,216 @@
       <arg name='firstNode' type='xmlNodePtr' info='the fist node in the chunk'/>
       <arg name='lastNode' type='xmlNodePtr' info='the last nod in the chunk'/>
     </functype>
-    <function name='xmlErrMemory' file='parserInternals'>
+    <function name='xmlErrMemory' file='parserInternals' module='parserInternals'>
       <info>Handle a redefinition of attribute error</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='extra' type='const char *' info='extra informations'/>
     </function>
-    <functype name='xmlExternalEntityLoader' file='parser'>
+    <functype name='xmlExternalEntityLoader' file='parser' module='parser'>
       <info>External entity loaders types.</info>
       <return type='xmlParserInputPtr' info='the entity input parser.'/>
       <arg name='URL' type='const char *' info='The System ID of the resource requested'/>
       <arg name='ID' type='const char *' info='The Public ID of the resource requested'/>
       <arg name='context' type='xmlParserCtxtPtr' info='the XML parser context'/>
     </functype>
-    <function name='xmlFileClose' file='xmlIO'>
+    <function name='xmlFileClose' file='xmlIO' module='xmlIO'>
       <info>Close an I/O channel</info>
       <return type='int' info='0 or -1 in case of error'/>
       <arg name='context' type='void *' info='the I/O context'/>
     </function>
-    <function name='xmlFileMatch' file='xmlIO'>
+    <function name='xmlFileMatch' file='xmlIO' module='xmlIO'>
       <info>input from FILE *</info>
       <return type='int' info='1 if matches, 0 otherwise'/>
       <arg name='filename' type='const char *' info='the URI for matching'/>
     </function>
-    <function name='xmlFileOpen' file='xmlIO'>
+    <function name='xmlFileOpen' file='xmlIO' module='xmlIO'>
       <info>Wrapper around xmlFileOpen_real that try it with an unescaped version of @filename, if this fails fallback to @filename</info>
       <return type='void *' info='a handler or NULL in case or failure'/>
       <arg name='filename' type='const char *' info='the URI for matching'/>
     </function>
-    <function name='xmlFileRead' file='xmlIO'>
+    <function name='xmlFileRead' file='xmlIO' module='xmlIO'>
       <info>Read @len bytes to @buffer from the I/O channel.</info>
       <return type='int' info='the number of bytes written or &lt; 0 in case of failure'/>
       <arg name='context' type='void *' info='the I/O context'/>
       <arg name='buffer' type='char *' info='where to drop data'/>
       <arg name='len' type='int' info='number of bytes to write'/>
     </function>
-    <function name='xmlFindCharEncodingHandler' file='encoding'>
+    <function name='xmlFindCharEncodingHandler' file='encoding' module='encoding'>
       <info>Search in the registered set the handler able to read/write that encoding.</info>
       <return type='xmlCharEncodingHandlerPtr' info='the handler or NULL if not found'/>
       <arg name='name' type='const char *' info='a string describing the char encoding.'/>
     </function>
-    <function name='xmlFreeAttributeTable' file='valid'>
+    <function name='xmlFreeAttributeTable' file='valid' module='valid'>
       <info>Deallocate the memory used by an entities hash table.</info>
       <return type='void'/>
       <arg name='table' type='xmlAttributeTablePtr' info='An attribute table'/>
     </function>
-    <function name='xmlFreeAutomata' file='xmlautomata'>
+    <function name='xmlFreeAutomata' file='xmlautomata' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_AUTOMATA_ENABLED)</cond>
       <info>Free an automata</info>
       <return type='void'/>
       <arg name='am' type='xmlAutomataPtr' info='an automata'/>
     </function>
-    <function name='xmlFreeCatalog' file='catalog'>
+    <function name='xmlFreeCatalog' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Free the memory allocated to a Catalog</info>
       <return type='void'/>
       <arg name='catal' type='xmlCatalogPtr' info='a Catalog'/>
     </function>
-    <function name='xmlFreeDoc' file='tree'>
+    <function name='xmlFreeDoc' file='tree' module='tree'>
       <info>Free up all the structures used by a document, tree included.</info>
       <return type='void'/>
       <arg name='cur' type='xmlDocPtr' info='pointer to the document'/>
     </function>
-    <function name='xmlFreeDocElementContent' file='valid'>
+    <function name='xmlFreeDocElementContent' file='valid' module='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'>
+    <function name='xmlFreeDtd' file='tree' module='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'>
+    <function name='xmlFreeElementContent' file='valid' module='valid'>
       <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>
-    <function name='xmlFreeElementTable' file='valid'>
+    <function name='xmlFreeElementTable' file='valid' module='valid'>
       <info>Deallocate the memory used by an element hash table.</info>
       <return type='void'/>
       <arg name='table' type='xmlElementTablePtr' info='An element table'/>
     </function>
-    <function name='xmlFreeEntitiesTable' file='entities'>
+    <function name='xmlFreeEntitiesTable' file='entities' module='entities'>
       <info>Deallocate the memory used by an entities hash table.</info>
       <return type='void'/>
       <arg name='table' type='xmlEntitiesTablePtr' info='An entity table'/>
     </function>
-    <function name='xmlFreeEnumeration' file='valid'>
+    <function name='xmlFreeEnumeration' file='valid' module='valid'>
       <info>free an enumeration attribute node (recursive).</info>
       <return type='void'/>
       <arg name='cur' type='xmlEnumerationPtr' info='the tree to free.'/>
     </function>
-    <functype name='xmlFreeFunc' file='xmlmemory'>
+    <functype name='xmlFreeFunc' file='xmlmemory' module='xmlmemory'>
       <info>Signature for a free() implementation.</info>
       <return type='void'/>
       <arg name='mem' type='void *' info='an already allocated block of memory'/>
     </functype>
-    <function name='xmlFreeIDTable' file='valid'>
+    <function name='xmlFreeIDTable' file='valid' module='valid'>
       <info>Deallocate the memory used by an ID hash table.</info>
       <return type='void'/>
       <arg name='table' type='xmlIDTablePtr' info='An id table'/>
     </function>
-    <function name='xmlFreeInputStream' file='parserInternals'>
+    <function name='xmlFreeInputStream' file='parserInternals' module='parserInternals'>
       <info>Free up an input stream.</info>
       <return type='void'/>
       <arg name='input' type='xmlParserInputPtr' info='an xmlParserInputPtr'/>
     </function>
-    <function name='xmlFreeMutex' file='threads'>
+    <function name='xmlFreeMutex' file='threads' module='threads'>
       <info>xmlFreeMutex() is used to reclaim resources associated with a libxml2 token struct.</info>
       <return type='void'/>
       <arg name='tok' type='xmlMutexPtr' info='the simple mutex'/>
     </function>
-    <function name='xmlFreeNode' file='tree'>
+    <function name='xmlFreeNode' file='tree' module='tree'>
       <info>Free a node, this is a recursive behaviour, all the children are freed too. This doesn&apos;t unlink the child from the list, use xmlUnlinkNode() first.</info>
       <return type='void'/>
       <arg name='cur' type='xmlNodePtr' info='the node'/>
     </function>
-    <function name='xmlFreeNodeList' file='tree'>
+    <function name='xmlFreeNodeList' file='tree' module='tree'>
       <info>Free a node and all its siblings, this is a recursive behaviour, all the children are freed too.</info>
       <return type='void'/>
       <arg name='cur' type='xmlNodePtr' info='the first node in the list'/>
     </function>
-    <function name='xmlFreeNotationTable' file='valid'>
+    <function name='xmlFreeNotationTable' file='valid' module='valid'>
       <info>Deallocate the memory used by an entities hash table.</info>
       <return type='void'/>
       <arg name='table' type='xmlNotationTablePtr' info='An notation table'/>
     </function>
-    <function name='xmlFreeNs' file='tree'>
+    <function name='xmlFreeNs' file='tree' module='tree'>
       <info>Free up the structures associated to a namespace</info>
       <return type='void'/>
       <arg name='cur' type='xmlNsPtr' info='the namespace pointer'/>
     </function>
-    <function name='xmlFreeNsList' file='tree'>
+    <function name='xmlFreeNsList' file='tree' module='tree'>
       <info>Free up all the structures associated to the chained namespaces.</info>
       <return type='void'/>
       <arg name='cur' type='xmlNsPtr' info='the first namespace pointer'/>
     </function>
-    <function name='xmlFreeParserCtxt' file='parser'>
+    <function name='xmlFreeParserCtxt' file='parser' module='parserInternals'>
       <info>Free all the memory used by a parser context. However the parsed document in ctxt-&gt;myDoc is not freed.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlFreeParserInputBuffer' file='xmlIO'>
+    <function name='xmlFreeParserInputBuffer' file='xmlIO' module='xmlIO'>
       <info>Free up the memory used by a buffered parser input</info>
       <return type='void'/>
       <arg name='in' type='xmlParserInputBufferPtr' info='a buffered parser input'/>
     </function>
-    <function name='xmlFreePattern' file='pattern'>
+    <function name='xmlFreePattern' file='pattern' module='pattern'>
       <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
       <info>Free up the memory allocated by @comp</info>
       <return type='void'/>
       <arg name='comp' type='xmlPatternPtr' info='an XSLT comp'/>
     </function>
-    <function name='xmlFreePatternList' file='pattern'>
+    <function name='xmlFreePatternList' file='pattern' module='pattern'>
       <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
       <info>Free up the memory allocated by all the elements of @comp</info>
       <return type='void'/>
       <arg name='comp' type='xmlPatternPtr' info='an XSLT comp list'/>
     </function>
-    <function name='xmlFreeProp' file='tree'>
+    <function name='xmlFreeProp' file='tree' module='tree'>
       <info>Free one attribute, all the content is freed too</info>
       <return type='void'/>
       <arg name='cur' type='xmlAttrPtr' info='an attribute'/>
     </function>
-    <function name='xmlFreePropList' file='tree'>
+    <function name='xmlFreePropList' file='tree' module='tree'>
       <info>Free a property and all its siblings, all the children are freed too.</info>
       <return type='void'/>
       <arg name='cur' type='xmlAttrPtr' info='the first property in the list'/>
     </function>
-    <function name='xmlFreeRMutex' file='threads'>
+    <function name='xmlFreeRMutex' file='threads' module='threads'>
       <info>xmlRFreeMutex() is used to reclaim resources associated with a reentrant mutex.</info>
       <return type='void'/>
       <arg name='tok' type='xmlRMutexPtr' info='the reentrant mutex'/>
     </function>
-    <function name='xmlFreeRefTable' file='valid'>
+    <function name='xmlFreeRefTable' file='valid' module='valid'>
       <info>Deallocate the memory used by an Ref hash table.</info>
       <return type='void'/>
       <arg name='table' type='xmlRefTablePtr' info='An ref table'/>
     </function>
-    <function name='xmlFreeStreamCtxt' file='pattern'>
+    <function name='xmlFreeStreamCtxt' file='pattern' module='pattern'>
       <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
       <info>Free the stream context</info>
       <return type='void'/>
       <arg name='stream' type='xmlStreamCtxtPtr' info='the stream context'/>
     </function>
-    <function name='xmlFreeTextReader' file='xmlreader'>
+    <function name='xmlFreeTextReader' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Deallocate all the resources associated to the reader</info>
       <return type='void'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr'/>
     </function>
-    <function name='xmlFreeTextWriter' file='xmlwriter'>
+    <function name='xmlFreeTextWriter' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Deallocate all the resources associated to the writer</info>
       <return type='void'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
     </function>
-    <function name='xmlFreeURI' file='uri'>
+    <function name='xmlFreeURI' file='uri' module='uri'>
       <info>Free up the xmlURI struct</info>
       <return type='void'/>
       <arg name='uri' type='xmlURIPtr' info='pointer to an xmlURI'/>
     </function>
-    <function name='xmlFreeValidCtxt' file='valid'>
+    <function name='xmlFreeValidCtxt' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Free a validation context structure.</info>
       <return type='void'/>
       <arg name='cur' type='xmlValidCtxtPtr' info='the validation context to free'/>
     </function>
-    <function name='xmlGcMemGet' file='xmlmemory'>
+    <function name='xmlGcMemGet' file='xmlmemory' module='xmlmemory'>
       <info>Provides the memory access functions set currently in use The mallocAtomicFunc is specialized for atomic block allocations (i.e. of areas  useful for garbage collected memory allocators</info>
       <return type='int' info='0 on success'/>
       <arg name='freeFunc' type='xmlFreeFunc *' info='place to save the free() function in use'/>
@@ -9199,7 +9219,7 @@
       <arg name='reallocFunc' type='xmlReallocFunc *' info='place to save the realloc() function in use'/>
       <arg name='strdupFunc' type='xmlStrdupFunc *' info='place to save the strdup() function in use'/>
     </function>
-    <function name='xmlGcMemSetup' file='xmlmemory'>
+    <function name='xmlGcMemSetup' file='xmlmemory' module='xmlmemory'>
       <info>Override the default memory access functions with a new set This has to be called before any other libxml routines ! The mallocAtomicFunc is specialized for atomic block allocations (i.e. of areas  useful for garbage collected memory allocators  Should this be blocked if there was already some allocations done ?</info>
       <return type='int' info='0 on success'/>
       <arg name='freeFunc' type='xmlFreeFunc' info='the free() function to use'/>
@@ -9208,68 +9228,68 @@
       <arg name='reallocFunc' type='xmlReallocFunc' info='the realloc() function to use'/>
       <arg name='strdupFunc' type='xmlStrdupFunc' info='the strdup() function to use'/>
     </function>
-    <functype name='xmlGenericErrorFunc' file='xmlerror'>
+    <functype name='xmlGenericErrorFunc' file='xmlerror' module='xmlerror'>
       <info>Signature of the function to use when there is an error and no parsing or validity context available .</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='a parsing context'/>
       <arg name='msg' type='const char *' info='the message'/>
       <arg name='...' type='...' info='the extra arguments of the varags to format the message'/>
     </functype>
-    <function name='xmlGetBufferAllocationScheme' file='tree'>
+    <function name='xmlGetBufferAllocationScheme' file='tree' module='tree'>
       <info>Types are XML_BUFFER_ALLOC_EXACT - use exact sizes, keeps memory usage down XML_BUFFER_ALLOC_DOUBLEIT - double buffer when extra needed, improves performance</info>
       <return type='xmlBufferAllocationScheme' info='the current allocation scheme'/>
     </function>
-    <function name='xmlGetCharEncodingHandler' file='encoding'>
+    <function name='xmlGetCharEncodingHandler' file='encoding' module='encoding'>
       <info>Search in the registered set the handler able to read/write that encoding.</info>
       <return type='xmlCharEncodingHandlerPtr' info='the handler or NULL if not found'/>
       <arg name='enc' type='xmlCharEncoding' info='an xmlCharEncoding value.'/>
     </function>
-    <function name='xmlGetCharEncodingName' file='encoding'>
+    <function name='xmlGetCharEncodingName' file='encoding' module='encoding'>
       <info>The &quot;canonical&quot; name for XML encoding. C.f. http://www.w3.org/TR/REC-xml#charencoding Section 4.3.3  Character Encoding in Entities</info>
       <return type='const char *' info='the canonical name for the given encoding'/>
       <arg name='enc' type='xmlCharEncoding' info='the encoding'/>
     </function>
-    <function name='xmlGetCompressMode' file='tree'>
+    <function name='xmlGetCompressMode' file='tree' module='tree'>
       <info>get the default compression mode used, ZLIB based.</info>
       <return type='int' info='0 (uncompressed) to 9 (max compression)'/>
     </function>
-    <function name='xmlGetDocCompressMode' file='tree'>
+    <function name='xmlGetDocCompressMode' file='tree' module='tree'>
       <info>get the compression ratio for a document, ZLIB based</info>
       <return type='int' info='0 (uncompressed) to 9 (max compression)'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
     </function>
-    <function name='xmlGetDocEntity' file='entities'>
+    <function name='xmlGetDocEntity' file='entities' module='entities'>
       <info>Do an entity lookup in the document entity hash table and</info>
       <return type='xmlEntityPtr' info='the corresponding entity, otherwise a lookup is done in the predefined entities too.  Returns A pointer to the entity structure or NULL if not found.'/>
       <arg name='doc' type='xmlDocPtr' info='the document referencing the entity'/>
       <arg name='name' type='const xmlChar *' info='the entity name'/>
     </function>
-    <function name='xmlGetDtdAttrDesc' file='valid'>
+    <function name='xmlGetDtdAttrDesc' file='valid' module='valid'>
       <info>Search the DTD for the description of this attribute on this element.</info>
       <return type='xmlAttributePtr' info='the xmlAttributePtr if found or NULL'/>
       <arg name='dtd' type='xmlDtdPtr' info='a pointer to the DtD to search'/>
       <arg name='elem' type='const xmlChar *' info='the element name'/>
       <arg name='name' type='const xmlChar *' info='the attribute name'/>
     </function>
-    <function name='xmlGetDtdElementDesc' file='valid'>
+    <function name='xmlGetDtdElementDesc' file='valid' module='valid'>
       <info>Search the DTD for the description of this element</info>
       <return type='xmlElementPtr' info='the xmlElementPtr if found or NULL'/>
       <arg name='dtd' type='xmlDtdPtr' info='a pointer to the DtD to search'/>
       <arg name='name' type='const xmlChar *' info='the element name'/>
     </function>
-    <function name='xmlGetDtdEntity' file='entities'>
+    <function name='xmlGetDtdEntity' file='entities' module='entities'>
       <info>Do an entity lookup in the DTD entity hash table and</info>
       <return type='xmlEntityPtr' info='the corresponding entity, if found. Note: the first argument is the document node, not the DTD node.  Returns A pointer to the entity structure or NULL if not found.'/>
       <arg name='doc' type='xmlDocPtr' info='the document referencing the entity'/>
       <arg name='name' type='const xmlChar *' info='the entity name'/>
     </function>
-    <function name='xmlGetDtdNotationDesc' file='valid'>
+    <function name='xmlGetDtdNotationDesc' file='valid' module='valid'>
       <info>Search the DTD for the description of this notation</info>
       <return type='xmlNotationPtr' info='the xmlNotationPtr if found or NULL'/>
       <arg name='dtd' type='xmlDtdPtr' info='a pointer to the DtD to search'/>
       <arg name='name' type='const xmlChar *' info='the notation name'/>
     </function>
-    <function name='xmlGetDtdQAttrDesc' file='valid'>
+    <function name='xmlGetDtdQAttrDesc' file='valid' module='valid'>
       <info>Search the DTD for the description of this qualified attribute on this element.</info>
       <return type='xmlAttributePtr' info='the xmlAttributePtr if found or NULL'/>
       <arg name='dtd' type='xmlDtdPtr' info='a pointer to the DtD to search'/>
@@ -9277,23 +9297,23 @@
       <arg name='name' type='const xmlChar *' info='the attribute name'/>
       <arg name='prefix' type='const xmlChar *' info='the attribute namespace prefix'/>
     </function>
-    <function name='xmlGetDtdQElementDesc' file='valid'>
+    <function name='xmlGetDtdQElementDesc' file='valid' module='valid'>
       <info>Search the DTD for the description of this element</info>
       <return type='xmlElementPtr' info='the xmlElementPtr if found or NULL'/>
       <arg name='dtd' type='xmlDtdPtr' info='a pointer to the DtD to search'/>
       <arg name='name' type='const xmlChar *' info='the element name'/>
       <arg name='prefix' type='const xmlChar *' info='the element namespace prefix'/>
     </function>
-    <function name='xmlGetEncodingAlias' file='encoding'>
+    <function name='xmlGetEncodingAlias' file='encoding' module='encoding'>
       <info>Lookup an encoding name for the given alias.</info>
       <return type='const char *' info='NULL if not found, otherwise the original name'/>
       <arg name='alias' type='const char *' info='the alias name as parsed, in UTF-8 format (ASCII actually)'/>
     </function>
-    <function name='xmlGetExternalEntityLoader' file='parser'>
+    <function name='xmlGetExternalEntityLoader' file='parser' module='xmlIO'>
       <info>Get the default external entity resolver function for the application</info>
       <return type='xmlExternalEntityLoader' info='the xmlExternalEntityLoader function pointer'/>
     </function>
-    <function name='xmlGetFeature' file='parser'>
+    <function name='xmlGetFeature' file='parser' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Read the current value of one feature of this parser instance</info>
       <return type='int' info='-1 in case or error, 0 otherwise'/>
@@ -9301,129 +9321,129 @@
       <arg name='name' type='const char *' info='the feature name'/>
       <arg name='result' type='void *' info='location to store the result'/>
     </function>
-    <function name='xmlGetFeaturesList' file='parser'>
+    <function name='xmlGetFeaturesList' file='parser' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Copy at most *@len feature names into the @result array</info>
       <return type='int' info='-1 in case or error, or the total number of features, len is updated with the number of strings copied, strings must not be deallocated'/>
       <arg name='len' type='int *' info='the length of the features name array (input/output)'/>
       <arg name='result' type='const char **' info='an array of string to be filled with the features name.'/>
     </function>
-    <function name='xmlGetGlobalState' file='threads'>
+    <function name='xmlGetGlobalState' file='threads' module='threads'>
       <info>xmlGetGlobalState() is called to retrieve the global state for a thread.</info>
       <return type='xmlGlobalStatePtr' info='the thread global state or NULL in case of error'/>
     </function>
-    <function name='xmlGetID' file='valid'>
+    <function name='xmlGetID' file='valid' module='valid'>
       <info>Search the attribute declaring the given ID</info>
       <return type='xmlAttrPtr' info='NULL if not found, otherwise the xmlAttrPtr defining the ID'/>
       <arg name='doc' type='xmlDocPtr' info='pointer to the document'/>
       <arg name='ID' type='const xmlChar *' info='the ID value'/>
     </function>
-    <function name='xmlGetIntSubset' file='tree'>
+    <function name='xmlGetIntSubset' file='tree' module='tree'>
       <info>Get the internal subset of a document</info>
       <return type='xmlDtdPtr' info='a pointer to the DTD structure or NULL if not found'/>
       <arg name='doc' type='xmlDocPtr' info='the document pointer'/>
     </function>
-    <function name='xmlGetLastChild' file='tree'>
+    <function name='xmlGetLastChild' file='tree' module='tree'>
       <info>Search the last child of a node.</info>
       <return type='xmlNodePtr' info='the last child or NULL if none.'/>
       <arg name='parent' type='xmlNodePtr' info='the parent node'/>
     </function>
-    <function name='xmlGetLastError' file='xmlerror'>
+    <function name='xmlGetLastError' file='xmlerror' module='error'>
       <info>Get the last global error registered. This is per thread if compiled with thread support.</info>
       <return type='xmlErrorPtr' info='NULL if no error occured or a pointer to the error'/>
     </function>
-    <function name='xmlGetLineNo' file='tree'>
+    <function name='xmlGetLineNo' file='tree' module='tree'>
       <info>Get line number of @node. This requires activation of this option before invoking the parser by calling xmlLineNumbersDefault(1)</info>
       <return type='long' info='the line number if successful, -1 otherwise'/>
       <arg name='node' type='xmlNodePtr' info='valid node'/>
     </function>
-    <function name='xmlGetNoNsProp' file='tree'>
+    <function name='xmlGetNoNsProp' file='tree' module='tree'>
       <info>Search and get the value of an attribute associated to a node This does the entity substitution. This function looks in DTD attribute declaration for #FIXED or default declaration values unless DTD use has been turned off. This function is similar to xmlGetProp except it will accept only an attribute in no namespace.</info>
       <return type='xmlChar *' info='the attribute value or NULL if not found. It&apos;s up to the caller to free the memory with xmlFree().'/>
       <arg name='node' type='xmlNodePtr' info='the node'/>
       <arg name='name' type='const xmlChar *' info='the attribute name'/>
     </function>
-    <function name='xmlGetNodePath' file='tree'>
+    <function name='xmlGetNodePath' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED)</cond>
       <info>Build a structure based Path for the given node</info>
       <return type='xmlChar *' info='the new path or NULL in case of error. The caller must free the returned string'/>
       <arg name='node' type='xmlNodePtr' info='a node'/>
     </function>
-    <function name='xmlGetNsList' file='tree'>
+    <function name='xmlGetNsList' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Search all the namespace applying to a given element.</info>
       <return type='xmlNsPtr *' info='an NULL terminated array of all the #xmlNsPtr found that need to be freed by the caller or NULL if no namespace if defined'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='node' type='xmlNodePtr' info='the current node'/>
     </function>
-    <function name='xmlGetNsProp' file='tree'>
+    <function name='xmlGetNsProp' file='tree' module='tree'>
       <info>Search and get the value of an attribute associated to a node This attribute has to be anchored in the namespace specified. This does the entity substitution. This function looks in DTD attribute declaration for #FIXED or default declaration values unless DTD use has been turned off.</info>
       <return type='xmlChar *' info='the attribute value or NULL if not found. It&apos;s up to the caller to free the memory with xmlFree().'/>
       <arg name='node' type='xmlNodePtr' info='the node'/>
       <arg name='name' type='const xmlChar *' info='the attribute name'/>
       <arg name='nameSpace' type='const xmlChar *' info='the URI of the namespace'/>
     </function>
-    <function name='xmlGetParameterEntity' file='entities'>
+    <function name='xmlGetParameterEntity' file='entities' module='entities'>
       <info>Do an entity lookup in the internal and external subsets and</info>
       <return type='xmlEntityPtr' info='the corresponding parameter entity, if found.  Returns A pointer to the entity structure or NULL if not found.'/>
       <arg name='doc' type='xmlDocPtr' info='the document referencing the entity'/>
       <arg name='name' type='const xmlChar *' info='the entity name'/>
     </function>
-    <function name='xmlGetPredefinedEntity' file='entities'>
+    <function name='xmlGetPredefinedEntity' file='entities' module='entities'>
       <info>Check whether this name is an predefined entity.</info>
       <return type='xmlEntityPtr' info='NULL if not, otherwise the entity'/>
       <arg name='name' type='const xmlChar *' info='the entity name'/>
     </function>
-    <function name='xmlGetProp' file='tree'>
+    <function name='xmlGetProp' file='tree' module='tree'>
       <info>Search and get the value of an attribute associated to a node This does the entity substitution. This function looks in DTD attribute declaration for #FIXED or default declaration values unless DTD use has been turned off. NOTE: this function acts independently of namespaces associated to the attribute. Use xmlGetNsProp() or xmlGetNoNsProp() for namespace aware processing.</info>
       <return type='xmlChar *' info='the attribute value or NULL if not found. It&apos;s up to the caller to free the memory with xmlFree().'/>
       <arg name='node' type='xmlNodePtr' info='the node'/>
       <arg name='name' type='const xmlChar *' info='the attribute name'/>
     </function>
-    <function name='xmlGetRefs' file='valid'>
+    <function name='xmlGetRefs' file='valid' module='valid'>
       <info>Find the set of references for the supplied ID.</info>
       <return type='xmlListPtr' info='NULL if not found, otherwise node set for the ID.'/>
       <arg name='doc' type='xmlDocPtr' info='pointer to the document'/>
       <arg name='ID' type='const xmlChar *' info='the ID value'/>
     </function>
-    <function name='xmlGetThreadId' file='threads'>
+    <function name='xmlGetThreadId' file='threads' module='threads'>
       <info>xmlGetThreadId() find the current thread ID number</info>
       <return type='int' info='the current thread ID number'/>
     </function>
-    <function name='xmlGetUTF8Char' file='xmlstring'>
+    <function name='xmlGetUTF8Char' file='xmlstring' module='xmlstring'>
       <info>Read the first UTF8 character from @utf</info>
       <return type='int' info='the char value or -1 in case of error, and sets *len to the actual number of bytes consumed (0 in case of error)'/>
       <arg name='utf' type='const unsigned char *' info='a sequence of UTF-8 encoded bytes'/>
       <arg name='len' type='int *' info='a pointer to the minimum number of bytes present in the sequence.  This is used to assure the next character is completely contained within the sequence.'/>
     </function>
-    <function name='xmlHandleEntity' file='parserInternals'>
+    <function name='xmlHandleEntity' file='parserInternals' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Default handling of defined entities, when should we define a new input stream ? When do we just handle that as a set of chars ?  OBSOLETE: to be removed at some point.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='entity' type='xmlEntityPtr' info='an XML entity pointer.'/>
     </function>
-    <function name='xmlHasNsProp' file='tree'>
+    <function name='xmlHasNsProp' file='tree' module='tree'>
       <info>Search for an attribute associated to a node This attribute has to be anchored in the namespace specified. This does the entity substitution. This function looks in DTD attribute declaration for #FIXED or default declaration values unless DTD use has been turned off. Note that a namespace of NULL indicates to use the default namespace.</info>
       <return type='xmlAttrPtr' info='the attribute or the attribute declaration or NULL if neither was found.'/>
       <arg name='node' type='xmlNodePtr' info='the node'/>
       <arg name='name' type='const xmlChar *' info='the attribute name'/>
       <arg name='nameSpace' type='const xmlChar *' info='the URI of the namespace'/>
     </function>
-    <function name='xmlHasProp' file='tree'>
+    <function name='xmlHasProp' file='tree' module='tree'>
       <info>Search an attribute associated to a node This function also looks in DTD attribute declaration for #FIXED or default declaration values unless DTD use has been turned off.</info>
       <return type='xmlAttrPtr' info='the attribute or the attribute declaration or NULL if neither was found.'/>
       <arg name='node' type='xmlNodePtr' info='the node'/>
       <arg name='name' type='const xmlChar *' info='the attribute name'/>
     </function>
-    <function name='xmlHashAddEntry' file='hash'>
+    <function name='xmlHashAddEntry' file='hash' module='hash'>
       <info>Add the @userdata to the hash @table. This can later be retrieved by using the @name. Duplicate names generate errors.</info>
       <return type='int' info='0 the addition succeeded and -1 in case of error.'/>
       <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
       <arg name='name' type='const xmlChar *' info='the name of the userdata'/>
       <arg name='userdata' type='void *' info='a pointer to the userdata'/>
     </function>
-    <function name='xmlHashAddEntry2' file='hash'>
+    <function name='xmlHashAddEntry2' file='hash' module='hash'>
       <info>Add the @userdata to the hash @table. This can later be retrieved by using the (@name, @name2) tuple. Duplicate tuples generate errors.</info>
       <return type='int' info='0 the addition succeeded and -1 in case of error.'/>
       <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
@@ -9431,7 +9451,7 @@
       <arg name='name2' type='const xmlChar *' info='a second name of the userdata'/>
       <arg name='userdata' type='void *' info='a pointer to the userdata'/>
     </function>
-    <function name='xmlHashAddEntry3' file='hash'>
+    <function name='xmlHashAddEntry3' file='hash' module='hash'>
       <info>Add the @userdata to the hash @table. This can later be retrieved by using the tuple (@name, @name2, @name3). Duplicate entries generate errors.</info>
       <return type='int' info='0 the addition succeeded and -1 in case of error.'/>
       <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
@@ -9440,55 +9460,55 @@
       <arg name='name3' type='const xmlChar *' info='a third name of the userdata'/>
       <arg name='userdata' type='void *' info='a pointer to the userdata'/>
     </function>
-    <functype name='xmlHashCopier' file='hash'>
+    <functype name='xmlHashCopier' file='hash' module='hash'>
       <info>Callback to copy data from a hash.</info>
       <return type='void *' info='a copy of the data or NULL in case of error.'/>
       <arg name='payload' type='void *' info='the data in the hash'/>
       <arg name='name' type='xmlChar *' info='the name associated'/>
     </functype>
-    <function name='xmlHashCopy' file='hash'>
+    <function name='xmlHashCopy' file='hash' module='hash'>
       <info>Scan the hash @table and applied @f to each value.</info>
       <return type='xmlHashTablePtr' info='the new table or NULL in case of error.'/>
       <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
       <arg name='f' type='xmlHashCopier' info='the copier function for items in the hash'/>
     </function>
-    <function name='xmlHashCreate' file='hash'>
+    <function name='xmlHashCreate' file='hash' module='hash'>
       <info>Create a new xmlHashTablePtr.</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'/>
     </function>
-    <function name='xmlHashCreateDict' file='hash'>
+    <function name='xmlHashCreateDict' file='hash' module='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'>
+    <functype name='xmlHashDeallocator' file='hash' module='hash'>
       <info>Callback to free data from a hash.</info>
       <return type='void'/>
       <arg name='payload' type='void *' info='the data in the hash'/>
       <arg name='name' type='xmlChar *' info='the name associated'/>
     </functype>
-    <function name='xmlHashFree' file='hash'>
+    <function name='xmlHashFree' file='hash' module='hash'>
       <info>Free the hash @table and its contents. The userdata is deallocated with @f if provided.</info>
       <return type='void'/>
       <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
       <arg name='f' type='xmlHashDeallocator' info='the deallocator function for items in the hash'/>
     </function>
-    <function name='xmlHashLookup' file='hash'>
+    <function name='xmlHashLookup' file='hash' module='hash'>
       <info>Find the userdata specified by the @name.</info>
       <return type='void *' info='the pointer to the userdata'/>
       <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
       <arg name='name' type='const xmlChar *' info='the name of the userdata'/>
     </function>
-    <function name='xmlHashLookup2' file='hash'>
+    <function name='xmlHashLookup2' file='hash' module='hash'>
       <info>Find the userdata specified by the (@name, @name2) tuple.</info>
       <return type='void *' info='the pointer to the userdata'/>
       <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
       <arg name='name' type='const xmlChar *' info='the name of the userdata'/>
       <arg name='name2' type='const xmlChar *' info='a second name of the userdata'/>
     </function>
-    <function name='xmlHashLookup3' file='hash'>
+    <function name='xmlHashLookup3' file='hash' module='hash'>
       <info>Find the userdata specified by the (@name, @name2, @name3) tuple.</info>
       <return type='void *' info='the a pointer to the userdata'/>
       <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
@@ -9496,14 +9516,14 @@
       <arg name='name2' type='const xmlChar *' info='a second name of the userdata'/>
       <arg name='name3' type='const xmlChar *' info='a third name of the userdata'/>
     </function>
-    <function name='xmlHashQLookup' file='hash'>
+    <function name='xmlHashQLookup' file='hash' module='hash'>
       <info>Find the userdata specified by the QName @prefix:@name/@name.</info>
       <return type='void *' info='the pointer to the userdata'/>
       <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
       <arg name='prefix' type='const xmlChar *' info='the prefix of the userdata'/>
       <arg name='name' type='const xmlChar *' info='the name of the userdata'/>
     </function>
-    <function name='xmlHashQLookup2' file='hash'>
+    <function name='xmlHashQLookup2' file='hash' module='hash'>
       <info>Find the userdata specified by the QNames tuple</info>
       <return type='void *' info='the pointer to the userdata'/>
       <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
@@ -9512,7 +9532,7 @@
       <arg name='prefix2' type='const xmlChar *' info='the second prefix of the userdata'/>
       <arg name='name2' type='const xmlChar *' info='a second name of the userdata'/>
     </function>
-    <function name='xmlHashQLookup3' file='hash'>
+    <function name='xmlHashQLookup3' file='hash' module='hash'>
       <info>Find the userdata specified by the (@name, @name2, @name3) tuple.</info>
       <return type='void *' info='the a pointer to the userdata'/>
       <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
@@ -9523,14 +9543,14 @@
       <arg name='prefix3' type='const xmlChar *' info='the third prefix of the userdata'/>
       <arg name='name3' type='const xmlChar *' info='a third name of the userdata'/>
     </function>
-    <function name='xmlHashRemoveEntry' file='hash'>
+    <function name='xmlHashRemoveEntry' file='hash' module='hash'>
       <info>Find the userdata specified by the @name and remove it from the hash @table. Existing userdata for this tuple will be removed and freed with @f.</info>
       <return type='int' info='0 if the removal succeeded and -1 in case of error or not found.'/>
       <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
       <arg name='name' type='const xmlChar *' info='the name of the userdata'/>
       <arg name='f' type='xmlHashDeallocator' info='the deallocator function for removed item (if any)'/>
     </function>
-    <function name='xmlHashRemoveEntry2' file='hash'>
+    <function name='xmlHashRemoveEntry2' file='hash' module='hash'>
       <info>Find the userdata specified by the (@name, @name2) tuple and remove it from the hash @table. Existing userdata for this tuple will be removed and freed with @f.</info>
       <return type='int' info='0 if the removal succeeded and -1 in case of error or not found.'/>
       <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
@@ -9538,7 +9558,7 @@
       <arg name='name2' type='const xmlChar *' info='a second name of the userdata'/>
       <arg name='f' type='xmlHashDeallocator' info='the deallocator function for removed item (if any)'/>
     </function>
-    <function name='xmlHashRemoveEntry3' file='hash'>
+    <function name='xmlHashRemoveEntry3' file='hash' module='hash'>
       <info>Find the userdata specified by the (@name, @name2, @name3) tuple and remove it from the hash @table. Existing userdata for this tuple will be removed and freed with @f.</info>
       <return type='int' info='0 if the removal succeeded and -1 in case of error or not found.'/>
       <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
@@ -9547,14 +9567,14 @@
       <arg name='name3' type='const xmlChar *' info='a third name of the userdata'/>
       <arg name='f' type='xmlHashDeallocator' info='the deallocator function for removed item (if any)'/>
     </function>
-    <function name='xmlHashScan' file='hash'>
+    <function name='xmlHashScan' file='hash' module='hash'>
       <info>Scan the hash @table and applied @f to each value.</info>
       <return type='void'/>
       <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
       <arg name='f' type='xmlHashScanner' info='the scanner function for items in the hash'/>
       <arg name='data' type='void *' info='extra data passed to f'/>
     </function>
-    <function name='xmlHashScan3' file='hash'>
+    <function name='xmlHashScan3' file='hash' module='hash'>
       <info>Scan the hash @table and applied @f to each value matching (@name, @name2, @name3) tuple. If one of the names is null, the comparison is considered to match.</info>
       <return type='void'/>
       <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
@@ -9564,14 +9584,14 @@
       <arg name='f' type='xmlHashScanner' info='the scanner function for items in the hash'/>
       <arg name='data' type='void *' info='extra data passed to f'/>
     </function>
-    <function name='xmlHashScanFull' file='hash'>
+    <function name='xmlHashScanFull' file='hash' module='hash'>
       <info>Scan the hash @table and applied @f to each value.</info>
       <return type='void'/>
       <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
       <arg name='f' type='xmlHashScannerFull' info='the scanner function for items in the hash'/>
       <arg name='data' type='void *' info='extra data passed to f'/>
     </function>
-    <function name='xmlHashScanFull3' file='hash'>
+    <function name='xmlHashScanFull3' file='hash' module='hash'>
       <info>Scan the hash @table and applied @f to each value matching (@name, @name2, @name3) tuple. If one of the names is null, the comparison is considered to match.</info>
       <return type='void'/>
       <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
@@ -9581,14 +9601,14 @@
       <arg name='f' type='xmlHashScannerFull' info='the scanner function for items in the hash'/>
       <arg name='data' type='void *' info='extra data passed to f'/>
     </function>
-    <functype name='xmlHashScanner' file='hash'>
+    <functype name='xmlHashScanner' file='hash' module='hash'>
       <info>Callback when scanning data in a hash with the simple scanner.</info>
       <return type='void'/>
       <arg name='payload' type='void *' info='the data in the hash'/>
       <arg name='data' type='void *' info='extra scannner data'/>
       <arg name='name' type='xmlChar *' info='the name associated'/>
     </functype>
-    <functype name='xmlHashScannerFull' file='hash'>
+    <functype name='xmlHashScannerFull' file='hash' module='hash'>
       <info>Callback when scanning data in a hash with the full scanner.</info>
       <return type='void'/>
       <arg name='payload' type='void *' info='the data in the hash'/>
@@ -9597,12 +9617,12 @@
       <arg name='name2' type='const xmlChar *' info='the second name associated'/>
       <arg name='name3' type='const xmlChar *' info='the third name associated'/>
     </functype>
-    <function name='xmlHashSize' file='hash'>
+    <function name='xmlHashSize' file='hash' module='hash'>
       <info>Query the number of elements installed in the hash @table.</info>
       <return type='int' info='the number of elements in the hash table or -1 in case of error'/>
       <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
     </function>
-    <function name='xmlHashUpdateEntry' file='hash'>
+    <function name='xmlHashUpdateEntry' file='hash' module='hash'>
       <info>Add the @userdata to the hash @table. This can later be retrieved by using the @name. Existing entry for this @name will be removed and freed with @f if found.</info>
       <return type='int' info='0 the addition succeeded and -1 in case of error.'/>
       <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
@@ -9610,7 +9630,7 @@
       <arg name='userdata' type='void *' info='a pointer to the userdata'/>
       <arg name='f' type='xmlHashDeallocator' info='the deallocator function for replaced item (if any)'/>
     </function>
-    <function name='xmlHashUpdateEntry2' file='hash'>
+    <function name='xmlHashUpdateEntry2' file='hash' module='hash'>
       <info>Add the @userdata to the hash @table. This can later be retrieved by using the (@name, @name2) tuple. Existing entry for this tuple will be removed and freed with @f if found.</info>
       <return type='int' info='0 the addition succeeded and -1 in case of error.'/>
       <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
@@ -9619,7 +9639,7 @@
       <arg name='userdata' type='void *' info='a pointer to the userdata'/>
       <arg name='f' type='xmlHashDeallocator' info='the deallocator function for replaced item (if any)'/>
     </function>
-    <function name='xmlHashUpdateEntry3' file='hash'>
+    <function name='xmlHashUpdateEntry3' file='hash' module='hash'>
       <info>Add the @userdata to the hash @table. This can later be retrieved by using the tuple (@name, @name2, @name3). Existing entry for this tuple will be removed and freed with @f if found.</info>
       <return type='int' info='0 the addition succeeded and -1 in case of error.'/>
       <arg name='table' type='xmlHashTablePtr' info='the hash table'/>
@@ -9629,25 +9649,25 @@
       <arg name='userdata' type='void *' info='a pointer to the userdata'/>
       <arg name='f' type='xmlHashDeallocator' info='the deallocator function for replaced item (if any)'/>
     </function>
-    <function name='xmlIOFTPClose' file='xmlIO'>
+    <function name='xmlIOFTPClose' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>Close an FTP I/O channel</info>
       <return type='int' info='0'/>
       <arg name='context' type='void *' info='the I/O context'/>
     </function>
-    <function name='xmlIOFTPMatch' file='xmlIO'>
+    <function name='xmlIOFTPMatch' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>check if the URI matches an FTP one</info>
       <return type='int' info='1 if matches, 0 otherwise'/>
       <arg name='filename' type='const char *' info='the URI for matching'/>
     </function>
-    <function name='xmlIOFTPOpen' file='xmlIO'>
+    <function name='xmlIOFTPOpen' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>open an FTP I/O channel</info>
       <return type='void *' info='an I/O context or NULL in case of error'/>
       <arg name='filename' type='const char *' info='the URI for matching'/>
     </function>
-    <function name='xmlIOFTPRead' file='xmlIO'>
+    <function name='xmlIOFTPRead' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>Read @len bytes to @buffer from the I/O channel.</info>
       <return type='int' info='the number of bytes written'/>
@@ -9655,32 +9675,32 @@
       <arg name='buffer' type='char *' info='where to drop data'/>
       <arg name='len' type='int' info='number of bytes to write'/>
     </function>
-    <function name='xmlIOHTTPClose' file='xmlIO'>
+    <function name='xmlIOHTTPClose' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_HTTP_ENABLED)</cond>
       <info>Close an HTTP I/O channel</info>
       <return type='int' info='0'/>
       <arg name='context' type='void *' info='the I/O context'/>
     </function>
-    <function name='xmlIOHTTPMatch' file='xmlIO'>
+    <function name='xmlIOHTTPMatch' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_HTTP_ENABLED)</cond>
       <info>check if the URI matches an HTTP one</info>
       <return type='int' info='1 if matches, 0 otherwise'/>
       <arg name='filename' type='const char *' info='the URI for matching'/>
     </function>
-    <function name='xmlIOHTTPOpen' file='xmlIO'>
+    <function name='xmlIOHTTPOpen' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_HTTP_ENABLED)</cond>
       <info>open an HTTP I/O channel</info>
       <return type='void *' info='an I/O context or NULL in case of error'/>
       <arg name='filename' type='const char *' info='the URI for matching'/>
     </function>
-    <function name='xmlIOHTTPOpenW' file='xmlIO'>
+    <function name='xmlIOHTTPOpenW' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_HTTP_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Open a temporary buffer to collect the document for a subsequent HTTP POST request.  Non-static as is called from the output buffer creation routine.</info>
       <return type='void *' info='an I/O context or NULL in case of error.'/>
       <arg name='post_uri' type='const char *' info='The destination URI for the document'/>
       <arg name='compression' type='int' info='The compression desired for the document.'/>
     </function>
-    <function name='xmlIOHTTPRead' file='xmlIO'>
+    <function name='xmlIOHTTPRead' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_HTTP_ENABLED)</cond>
       <info>Read @len bytes to @buffer from the I/O channel.</info>
       <return type='int' info='the number of bytes written'/>
@@ -9688,7 +9708,7 @@
       <arg name='buffer' type='char *' info='where to drop data'/>
       <arg name='len' type='int' info='number of bytes to write'/>
     </function>
-    <function name='xmlIOParseDTD' file='parser'>
+    <function name='xmlIOParseDTD' file='parser' module='parser'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Load and parse a DTD</info>
       <return type='xmlDtdPtr' info='the resulting xmlDtdPtr or NULL in case of error. @input will be freed at parsing end.'/>
@@ -9696,408 +9716,408 @@
       <arg name='input' type='xmlParserInputBufferPtr' info='an Input Buffer'/>
       <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known'/>
     </function>
-    <function name='xmlInitCharEncodingHandlers' file='encoding'>
+    <function name='xmlInitCharEncodingHandlers' file='encoding' module='encoding'>
       <info>Initialize the char encoding support, it registers the default encoding supported. NOTE: while public, this function usually doesn&apos;t need to be called in normal processing.</info>
       <return type='void'/>
     </function>
-    <function name='xmlInitGlobals' file='globals'>
+    <function name='xmlInitGlobals' file='globals' module='globals'>
       <info>Additional initialisation for multi-threading</info>
       <return type='void'/>
     </function>
-    <function name='xmlInitMemory' file='xmlmemory'>
+    <function name='xmlInitMemory' file='xmlmemory' module='xmlmemory'>
       <info>Initialize the memory layer.</info>
       <return type='int' info='0 on success'/>
     </function>
-    <function name='xmlInitNodeInfoSeq' file='parser'>
+    <function name='xmlInitNodeInfoSeq' file='parser' module='parserInternals'>
       <info>-- Initialize (set to initial state) node info sequence</info>
       <return type='void'/>
       <arg name='seq' type='xmlParserNodeInfoSeqPtr' info='a node info sequence pointer'/>
     </function>
-    <function name='xmlInitParser' file='parser'>
+    <function name='xmlInitParser' file='parser' module='parser'>
       <info>Initialization function for the XML parser. This is not reentrant. Call once before processing in case of use in multithreaded programs.</info>
       <return type='void'/>
     </function>
-    <function name='xmlInitParserCtxt' file='parser'>
+    <function name='xmlInitParserCtxt' file='parser' module='parserInternals'>
       <info>Initialize a parser context</info>
       <return type='int' info='0 in case of success and -1 in case of error'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlInitThreads' file='threads'>
+    <function name='xmlInitThreads' file='threads' module='threads'>
       <info>xmlInitThreads() is used to to initialize all the thread related data of the libxml2 library.</info>
       <return type='void'/>
     </function>
-    <function name='xmlInitializeCatalog' file='catalog'>
+    <function name='xmlInitializeCatalog' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Do the catalog initialization. this function is not thread safe, catalog initialization should preferably be done once at startup</info>
       <return type='void'/>
     </function>
-    <function name='xmlInitializeGlobalState' file='globals'>
+    <function name='xmlInitializeGlobalState' file='globals' module='globals'>
       <info>xmlInitializeGlobalState() initialize a global state with all the default values of the library.</info>
       <return type='void'/>
       <arg name='gs' type='xmlGlobalStatePtr' info='a pointer to a newly allocated global state'/>
     </function>
-    <function name='xmlInitializePredefinedEntities' file='entities'>
+    <function name='xmlInitializePredefinedEntities' file='entities' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Set up the predefined entities. Deprecated call</info>
       <return type='void'/>
     </function>
-    <functype name='xmlInputCloseCallback' file='xmlIO'>
+    <functype name='xmlInputCloseCallback' file='xmlIO' module='xmlIO'>
       <info>Callback used in the I/O Input API to close the resource</info>
       <return type='int' info='0 or -1 in case of error'/>
       <arg name='context' type='void *' info='an Input context'/>
     </functype>
-    <functype name='xmlInputMatchCallback' file='xmlIO'>
+    <functype name='xmlInputMatchCallback' file='xmlIO' module='xmlIO'>
       <info>Callback used in the I/O Input API to detect if the current handler can provide input fonctionnalities for this resource.</info>
       <return type='int' info='1 if yes and 0 if another Input module should be used'/>
       <arg name='filename' type='char const *' info='the filename or URI'/>
     </functype>
-    <functype name='xmlInputOpenCallback' file='xmlIO'>
+    <functype name='xmlInputOpenCallback' file='xmlIO' module='xmlIO'>
       <info>Callback used in the I/O Input API to open the resource</info>
       <return type='void *' info='an Input context or NULL in case or error'/>
       <arg name='filename' type='char const *' info='the filename or URI'/>
     </functype>
-    <functype name='xmlInputReadCallback' file='xmlIO'>
+    <functype name='xmlInputReadCallback' file='xmlIO' module='xmlIO'>
       <info>Callback used in the I/O Input API to read the resource</info>
       <return type='int' info='the number of bytes read or -1 in case of error'/>
       <arg name='context' type='void *' info='an Input context'/>
       <arg name='buffer' type='char *' info='the buffer to store data read'/>
       <arg name='len' type='int' info='the length of the buffer in bytes'/>
     </functype>
-    <function name='xmlIsBaseChar' file='chvalid'>
+    <function name='xmlIsBaseChar' file='chvalid' module='chvalid'>
       <info>This function is DEPRECATED. Use xmlIsBaseChar_ch or xmlIsBaseCharQ instead</info>
       <return type='int' info='true if argument valid, false otherwise'/>
       <arg name='ch' type='unsigned int' info='character to validate'/>
     </function>
-    <function name='xmlIsBlank' file='chvalid'>
+    <function name='xmlIsBlank' file='chvalid' module='chvalid'>
       <info>This function is DEPRECATED. Use xmlIsBlank_ch or xmlIsBlankQ instead</info>
       <return type='int' info='true if argument valid, false otherwise'/>
       <arg name='ch' type='unsigned int' info='character to validate'/>
     </function>
-    <function name='xmlIsBlankNode' file='tree'>
+    <function name='xmlIsBlankNode' file='tree' module='tree'>
       <info>Checks whether this node is an empty or whitespace only (and possibly ignorable) text-node.</info>
       <return type='int' info='1 yes, 0 no'/>
       <arg name='node' type='xmlNodePtr' info='the node'/>
     </function>
-    <function name='xmlIsChar' file='chvalid'>
+    <function name='xmlIsChar' file='chvalid' module='chvalid'>
       <info>This function is DEPRECATED. Use xmlIsChar_ch or xmlIsCharQ instead</info>
       <return type='int' info='true if argument valid, false otherwise'/>
       <arg name='ch' type='unsigned int' info='character to validate'/>
     </function>
-    <function name='xmlIsCombining' file='chvalid'>
+    <function name='xmlIsCombining' file='chvalid' module='chvalid'>
       <info>This function is DEPRECATED. Use xmlIsCombiningQ instead</info>
       <return type='int' info='true if argument valid, false otherwise'/>
       <arg name='ch' type='unsigned int' info='character to validate'/>
     </function>
-    <function name='xmlIsDigit' file='chvalid'>
+    <function name='xmlIsDigit' file='chvalid' module='chvalid'>
       <info>This function is DEPRECATED. Use xmlIsDigit_ch or xmlIsDigitQ instead</info>
       <return type='int' info='true if argument valid, false otherwise'/>
       <arg name='ch' type='unsigned int' info='character to validate'/>
     </function>
-    <function name='xmlIsExtender' file='chvalid'>
+    <function name='xmlIsExtender' file='chvalid' module='chvalid'>
       <info>This function is DEPRECATED. Use xmlIsExtender_ch or xmlIsExtenderQ instead</info>
       <return type='int' info='true if argument valid, false otherwise'/>
       <arg name='ch' type='unsigned int' info='character to validate'/>
     </function>
-    <function name='xmlIsID' file='valid'>
+    <function name='xmlIsID' file='valid' module='valid'>
       <info>Determine whether an attribute is of type ID. In case we have DTD(s) then this is done if DTD loading has been requested. In the case of HTML documents parsed with the HTML parser, then ID detection is done systematically.</info>
       <return type='int' info='0 or 1 depending on the lookup result'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='elem' type='xmlNodePtr' info='the element carrying the attribute'/>
       <arg name='attr' type='xmlAttrPtr' info='the attribute'/>
     </function>
-    <function name='xmlIsIdeographic' file='chvalid'>
+    <function name='xmlIsIdeographic' file='chvalid' module='chvalid'>
       <info>This function is DEPRECATED. Use xmlIsIdeographicQ instead</info>
       <return type='int' info='true if argument valid, false otherwise'/>
       <arg name='ch' type='unsigned int' info='character to validate'/>
     </function>
-    <function name='xmlIsLetter' file='parserInternals'>
+    <function name='xmlIsLetter' file='parserInternals' module='parserInternals'>
       <info>Check whether the character is allowed by the production [84] Letter ::= BaseChar | Ideographic</info>
       <return type='int' info='0 if not, non-zero otherwise'/>
       <arg name='c' type='int' info='an unicode character (int)'/>
     </function>
-    <function name='xmlIsMainThread' file='threads'>
+    <function name='xmlIsMainThread' file='threads' module='threads'>
       <info>xmlIsMainThread() check whether the current thread is the main thread.</info>
       <return type='int' info='1 if the current thread is the main thread, 0 otherwise'/>
     </function>
-    <function name='xmlIsMixedElement' file='valid'>
+    <function name='xmlIsMixedElement' file='valid' module='valid'>
       <info>Search in the DtDs whether an element accept Mixed content (or ANY) basically if it is supposed to accept text childs</info>
       <return type='int' info='0 if no, 1 if yes, and -1 if no element description is available'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='name' type='const xmlChar *' info='the element name'/>
     </function>
-    <function name='xmlIsPubidChar' file='chvalid'>
+    <function name='xmlIsPubidChar' file='chvalid' module='chvalid'>
       <info>This function is DEPRECATED. Use xmlIsPubidChar_ch or xmlIsPubidCharQ instead</info>
       <return type='int' info='true if argument valid, false otherwise'/>
       <arg name='ch' type='unsigned int' info='character to validate'/>
     </function>
-    <function name='xmlIsRef' file='valid'>
+    <function name='xmlIsRef' file='valid' module='valid'>
       <info>Determine whether an attribute is of type Ref. In case we have DTD(s) then this is simple, otherwise we use an heuristic: name Ref (upper or lowercase).</info>
       <return type='int' info='0 or 1 depending on the lookup result'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='elem' type='xmlNodePtr' info='the element carrying the attribute'/>
       <arg name='attr' type='xmlAttrPtr' info='the attribute'/>
     </function>
-    <function name='xmlIsXHTML' file='tree'>
+    <function name='xmlIsXHTML' file='tree' module='xmlsave'>
       <info>Try to find if the document correspond to an XHTML DTD</info>
       <return type='int' info='1 if true, 0 if not and -1 in case of error'/>
       <arg name='systemID' type='const xmlChar *' info='the system identifier'/>
       <arg name='publicID' type='const xmlChar *' info='the public identifier'/>
     </function>
-    <function name='xmlKeepBlanksDefault' file='parser'>
+    <function name='xmlKeepBlanksDefault' file='parser' module='parserInternals'>
       <info>Set and return the previous value for default blanks text nodes support. The 1.x version of the parser used an heuristic to try to detect ignorable white spaces. As a result the SAX callback was generating xmlSAX2IgnorableWhitespace() callbacks instead of characters() one, and when using the DOM output text nodes containing those blanks were not generated. The 2.x and later version will switch to the XML standard way and ignorableWhitespace() are only generated when running the parser in validating mode and when the current element doesn&apos;t allow CDATA or mixed content. This function is provided as a way to force the standard behavior on 1.X libs and to switch back to the old mode for compatibility when running 1.X client code on 2.X . Upgrade of 1.X code should be done by using xmlIsBlankNode() commodity function to detect the &quot;empty&quot; nodes generated. This value also affect autogeneration of indentation when saving code if blanks sections are kept, indentation is not generated.</info>
       <return type='int' info='the last value for 0 for no substitution, 1 for substitution.'/>
       <arg name='val' type='int' info='int 0 or 1'/>
     </function>
-    <function name='xmlLineNumbersDefault' file='parser'>
+    <function name='xmlLineNumbersDefault' file='parser' module='parserInternals'>
       <info>Set and return the previous value for enabling line numbers in elements contents. This may break on old application and is turned off by default.</info>
       <return type='int' info='the last value for 0 for no substitution, 1 for substitution.'/>
       <arg name='val' type='int' info='int 0 or 1'/>
     </function>
-    <function name='xmlLinkGetData' file='list'>
+    <function name='xmlLinkGetData' file='list' module='list'>
       <info>See Returns.</info>
       <return type='void *' info='a pointer to the data referenced from this link'/>
       <arg name='lk' type='xmlLinkPtr' info='a link'/>
     </function>
-    <function name='xmlListAppend' file='list'>
+    <function name='xmlListAppend' file='list' module='list'>
       <info>Insert data in the ordered list at the end for this value</info>
       <return type='int' info='0 in case of success, 1 in case of failure'/>
       <arg name='l' type='xmlListPtr' info='a list'/>
       <arg name='data' type='void *' info='the data'/>
     </function>
-    <function name='xmlListClear' file='list'>
+    <function name='xmlListClear' file='list' module='list'>
       <info>Remove the all data in the list</info>
       <return type='void'/>
       <arg name='l' type='xmlListPtr' info='a list'/>
     </function>
-    <function name='xmlListCopy' file='list'>
+    <function name='xmlListCopy' file='list' module='list'>
       <info>Move all the element from the old list in the new list</info>
       <return type='int' info='0 in case of success 1 in case of error'/>
       <arg name='cur' type='xmlListPtr' info='the new list'/>
       <arg name='old' type='const xmlListPtr' info='the old list'/>
     </function>
-    <function name='xmlListCreate' file='list'>
+    <function name='xmlListCreate' file='list' module='list'>
       <info>Create a new list</info>
       <return type='xmlListPtr' info='the new list or NULL in case of error'/>
       <arg name='deallocator' type='xmlListDeallocator' info='an optional deallocator function'/>
       <arg name='compare' type='xmlListDataCompare' info='an optional comparison function'/>
     </function>
-    <functype name='xmlListDataCompare' file='list'>
+    <functype name='xmlListDataCompare' file='list' module='list'>
       <info>Callback function used to compare 2 data.</info>
       <return type='int' info='0 is equality, -1 or 1 otherwise depending on the ordering.'/>
       <arg name='data0' type='const void *' info='the first data'/>
       <arg name='data1' type='const void *' info='the second data'/>
     </functype>
-    <functype name='xmlListDeallocator' file='list'>
+    <functype name='xmlListDeallocator' file='list' module='list'>
       <info>Callback function used to free data from a list.</info>
       <return type='void'/>
       <arg name='lk' type='xmlLinkPtr' info='the data to deallocate'/>
     </functype>
-    <function name='xmlListDelete' file='list'>
+    <function name='xmlListDelete' file='list' module='list'>
       <info>Deletes the list and its associated data</info>
       <return type='void'/>
       <arg name='l' type='xmlListPtr' info='a list'/>
     </function>
-    <function name='xmlListDup' file='list'>
+    <function name='xmlListDup' file='list' module='list'>
       <info>Duplicate the list</info>
       <return type='xmlListPtr' info='a new copy of the list or NULL in case of error'/>
       <arg name='old' type='const xmlListPtr' info='the list'/>
     </function>
-    <function name='xmlListEmpty' file='list'>
+    <function name='xmlListEmpty' file='list' module='list'>
       <info>Is the list empty ?</info>
       <return type='int' info='1 if the list is empty, 0 if not empty and -1 in case of error'/>
       <arg name='l' type='xmlListPtr' info='a list'/>
     </function>
-    <function name='xmlListEnd' file='list'>
+    <function name='xmlListEnd' file='list' module='list'>
       <info>Get the last element in the list</info>
       <return type='xmlLinkPtr' info='the last element in the list, or NULL'/>
       <arg name='l' type='xmlListPtr' info='a list'/>
     </function>
-    <function name='xmlListFront' file='list'>
+    <function name='xmlListFront' file='list' module='list'>
       <info>Get the first element in the list</info>
       <return type='xmlLinkPtr' info='the first element in the list, or NULL'/>
       <arg name='l' type='xmlListPtr' info='a list'/>
     </function>
-    <function name='xmlListInsert' file='list'>
+    <function name='xmlListInsert' file='list' module='list'>
       <info>Insert data in the ordered list at the beginning for this value</info>
       <return type='int' info='0 in case of success, 1 in case of failure'/>
       <arg name='l' type='xmlListPtr' info='a list'/>
       <arg name='data' type='void *' info='the data'/>
     </function>
-    <function name='xmlListMerge' file='list'>
+    <function name='xmlListMerge' file='list' module='list'>
       <info>include all the elements of the second list in the first one and clear the second list</info>
       <return type='void'/>
       <arg name='l1' type='xmlListPtr' info='the original list'/>
       <arg name='l2' type='xmlListPtr' info='the new list'/>
     </function>
-    <function name='xmlListPopBack' file='list'>
+    <function name='xmlListPopBack' file='list' module='list'>
       <info>Removes the last element in the list</info>
       <return type='void'/>
       <arg name='l' type='xmlListPtr' info='a list'/>
     </function>
-    <function name='xmlListPopFront' file='list'>
+    <function name='xmlListPopFront' file='list' module='list'>
       <info>Removes the first element in the list</info>
       <return type='void'/>
       <arg name='l' type='xmlListPtr' info='a list'/>
     </function>
-    <function name='xmlListPushBack' file='list'>
+    <function name='xmlListPushBack' file='list' module='list'>
       <info>add the new data at the end of the list</info>
       <return type='int' info='1 if successful, 0 otherwise'/>
       <arg name='l' type='xmlListPtr' info='a list'/>
       <arg name='data' type='void *' info='new data'/>
     </function>
-    <function name='xmlListPushFront' file='list'>
+    <function name='xmlListPushFront' file='list' module='list'>
       <info>add the new data at the beginning of the list</info>
       <return type='int' info='1 if successful, 0 otherwise'/>
       <arg name='l' type='xmlListPtr' info='a list'/>
       <arg name='data' type='void *' info='new data'/>
     </function>
-    <function name='xmlListRemoveAll' file='list'>
+    <function name='xmlListRemoveAll' file='list' module='list'>
       <info>Remove the all instance associated to data in the list</info>
       <return type='int' info='the number of deallocation, or 0 if not found'/>
       <arg name='l' type='xmlListPtr' info='a list'/>
       <arg name='data' type='void *' info='list data'/>
     </function>
-    <function name='xmlListRemoveFirst' file='list'>
+    <function name='xmlListRemoveFirst' file='list' module='list'>
       <info>Remove the first instance associated to data in the list</info>
       <return type='int' info='1 if a deallocation occured, or 0 if not found'/>
       <arg name='l' type='xmlListPtr' info='a list'/>
       <arg name='data' type='void *' info='list data'/>
     </function>
-    <function name='xmlListRemoveLast' file='list'>
+    <function name='xmlListRemoveLast' file='list' module='list'>
       <info>Remove the last instance associated to data in the list</info>
       <return type='int' info='1 if a deallocation occured, or 0 if not found'/>
       <arg name='l' type='xmlListPtr' info='a list'/>
       <arg name='data' type='void *' info='list data'/>
     </function>
-    <function name='xmlListReverse' file='list'>
+    <function name='xmlListReverse' file='list' module='list'>
       <info>Reverse the order of the elements in the list</info>
       <return type='void'/>
       <arg name='l' type='xmlListPtr' info='a list'/>
     </function>
-    <function name='xmlListReverseSearch' file='list'>
+    <function name='xmlListReverseSearch' file='list' module='list'>
       <info>Search the list in reverse order for an existing value of @data</info>
       <return type='void *' info='the value associated to @data or NULL in case of error'/>
       <arg name='l' type='xmlListPtr' info='a list'/>
       <arg name='data' type='void *' info='a search value'/>
     </function>
-    <function name='xmlListReverseWalk' file='list'>
+    <function name='xmlListReverseWalk' file='list' module='list'>
       <info>Walk all the element of the list in reverse order and apply the walker function to it</info>
       <return type='void'/>
       <arg name='l' type='xmlListPtr' info='a list'/>
       <arg name='walker' type='xmlListWalker' info='a processing function'/>
       <arg name='user' type='const void *' info='a user parameter passed to the walker function'/>
     </function>
-    <function name='xmlListSearch' file='list'>
+    <function name='xmlListSearch' file='list' module='list'>
       <info>Search the list for an existing value of @data</info>
       <return type='void *' info='the value associated to @data or NULL in case of error'/>
       <arg name='l' type='xmlListPtr' info='a list'/>
       <arg name='data' type='void *' info='a search value'/>
     </function>
-    <function name='xmlListSize' file='list'>
+    <function name='xmlListSize' file='list' module='list'>
       <info>Get the number of elements in the list</info>
       <return type='int' info='the number of elements in the list or -1 in case of error'/>
       <arg name='l' type='xmlListPtr' info='a list'/>
     </function>
-    <function name='xmlListSort' file='list'>
+    <function name='xmlListSort' file='list' module='list'>
       <info>Sort all the elements in the list</info>
       <return type='void'/>
       <arg name='l' type='xmlListPtr' info='a list'/>
     </function>
-    <function name='xmlListWalk' file='list'>
+    <function name='xmlListWalk' file='list' module='list'>
       <info>Walk all the element of the first from first to last and apply the walker function to it</info>
       <return type='void'/>
       <arg name='l' type='xmlListPtr' info='a list'/>
       <arg name='walker' type='xmlListWalker' info='a processing function'/>
       <arg name='user' type='const void *' info='a user parameter passed to the walker function'/>
     </function>
-    <functype name='xmlListWalker' file='list'>
+    <functype name='xmlListWalker' file='list' module='list'>
       <info>Callback function used when walking a list with xmlListWalk().</info>
       <return type='int' info='0 to stop walking the list, 1 otherwise.'/>
       <arg name='data' type='const void *' info='the data found in the list'/>
       <arg name='user' type='const void *' info='extra user provided data to the walker'/>
     </functype>
-    <function name='xmlLoadACatalog' file='catalog'>
+    <function name='xmlLoadACatalog' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Load the catalog and build the associated data structures. This can be either an XML Catalog or an SGML Catalog It will recurse in SGML CATALOG entries. On the other hand XML Catalogs are not handled recursively.</info>
       <return type='xmlCatalogPtr' info='the catalog parsed or NULL in case of error'/>
       <arg name='filename' type='const char *' info='a file path'/>
     </function>
-    <function name='xmlLoadCatalog' file='catalog'>
+    <function name='xmlLoadCatalog' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Load the catalog and makes its definitions effective for the default external entity loader. It will recurse in SGML CATALOG entries. this function is not thread safe, catalog initialization should preferably be done once at startup</info>
       <return type='int' info='0 in case of success -1 in case of error'/>
       <arg name='filename' type='const char *' info='a file path'/>
     </function>
-    <function name='xmlLoadCatalogs' file='catalog'>
+    <function name='xmlLoadCatalogs' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Load the catalogs and makes their definitions effective for the default external entity loader. this function is not thread safe, catalog initialization should preferably be done once at startup</info>
       <return type='void'/>
       <arg name='pathss' type='const char *' info='a list of directories separated by a colon or a space.'/>
     </function>
-    <function name='xmlLoadExternalEntity' file='parser'>
+    <function name='xmlLoadExternalEntity' file='parser' module='xmlIO'>
       <info>Load an external entity, note that the use of this function for unparsed entities may generate problems TODO: a more generic External entity API must be designed</info>
       <return type='xmlParserInputPtr' info='the xmlParserInputPtr or NULL'/>
       <arg name='URL' type='const char *' info='the URL for the entity to load'/>
       <arg name='ID' type='const char *' info='the Public ID for the entity to load'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='the context in which the entity is called or NULL'/>
     </function>
-    <function name='xmlLoadSGMLSuperCatalog' file='catalog'>
+    <function name='xmlLoadSGMLSuperCatalog' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>Load an SGML super catalog. It won&apos;t expand CATALOG or DELEGATE references. This is only needed for manipulating SGML Super Catalogs like adding and removing CATALOG or DELEGATE entries.</info>
       <return type='xmlCatalogPtr' info='the catalog parsed or NULL in case of error'/>
       <arg name='filename' type='const char *' info='a file path'/>
     </function>
-    <function name='xmlLockLibrary' file='threads'>
+    <function name='xmlLockLibrary' file='threads' module='threads'>
       <info>xmlLockLibrary() is used to take out a re-entrant lock on the libxml2 library.</info>
       <return type='void'/>
     </function>
-    <function name='xmlLsCountNode' file='debugXML'>
+    <function name='xmlLsCountNode' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
       <info>Count the children of @node.</info>
       <return type='int' info='the number of children of @node.'/>
       <arg name='node' type='xmlNodePtr' info='the node to count'/>
     </function>
-    <function name='xmlLsOneNode' file='debugXML'>
+    <function name='xmlLsOneNode' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED)</cond>
       <info>Dump to @output the type and name of @node.</info>
       <return type='void'/>
       <arg name='output' type='FILE *' info='the FILE * for the output'/>
       <arg name='node' type='xmlNodePtr' info='the node to dump'/>
     </function>
-    <function name='xmlMallocAtomicLoc' file='xmlmemory'>
+    <function name='xmlMallocAtomicLoc' file='xmlmemory' module='xmlmemory'>
       <info>a malloc() equivalent, with logging of the allocation info.</info>
       <return type='void *' info='a pointer to the allocated area or NULL in case of lack of memory.'/>
       <arg name='size' type='size_t' info='an int specifying the size in byte to allocate.'/>
       <arg name='file' type='const char *' info='the file name or NULL'/>
       <arg name='line' type='int' info='the line number'/>
     </function>
-    <functype name='xmlMallocFunc' file='xmlmemory'>
+    <functype name='xmlMallocFunc' file='xmlmemory' module='xmlmemory'>
       <info>Signature for a malloc() implementation.</info>
       <return type='void *' info='a pointer to the newly allocated block or NULL in case of error.'/>
       <arg name='size' type='size_t' info='the size requested in bytes'/>
     </functype>
-    <function name='xmlMallocLoc' file='xmlmemory'>
+    <function name='xmlMallocLoc' file='xmlmemory' module='xmlmemory'>
       <info>a malloc() equivalent, with logging of the allocation info.</info>
       <return type='void *' info='a pointer to the allocated area or NULL in case of lack of memory.'/>
       <arg name='size' type='size_t' info='an int specifying the size in byte to allocate.'/>
       <arg name='file' type='const char *' info='the file name or NULL'/>
       <arg name='line' type='int' info='the line number'/>
     </function>
-    <function name='xmlMemBlocks' file='xmlmemory'>
+    <function name='xmlMemBlocks' file='xmlmemory' module='xmlmemory'>
       <info>Provides the number of memory areas currently allocated</info>
       <return type='int' info='an int representing the number of blocks'/>
     </function>
-    <function name='xmlMemDisplay' file='xmlmemory'>
+    <function name='xmlMemDisplay' file='xmlmemory' module='xmlmemory'>
       <info>show in-extenso the memory blocks allocated</info>
       <return type='void'/>
       <arg name='fp' type='FILE *' info='a FILE descriptor used as the output file, if NULL, the result is written to the file .memorylist'/>
     </function>
-    <function name='xmlMemFree' file='xmlmemory'>
+    <function name='xmlMemFree' file='xmlmemory' module='xmlmemory'>
       <info>a free() equivalent, with error checking.</info>
       <return type='void'/>
       <arg name='ptr' type='void *' info='the memory block pointer'/>
     </function>
-    <function name='xmlMemGet' file='xmlmemory'>
+    <function name='xmlMemGet' file='xmlmemory' module='xmlmemory'>
       <info>Provides the memory access functions set currently in use</info>
       <return type='int' info='0 on success'/>
       <arg name='freeFunc' type='xmlFreeFunc *' info='place to save the free() function in use'/>
@@ -10105,18 +10125,18 @@
       <arg name='reallocFunc' type='xmlReallocFunc *' info='place to save the realloc() function in use'/>
       <arg name='strdupFunc' type='xmlStrdupFunc *' info='place to save the strdup() function in use'/>
     </function>
-    <function name='xmlMemMalloc' file='xmlmemory'>
+    <function name='xmlMemMalloc' file='xmlmemory' module='xmlmemory'>
       <info>a malloc() equivalent, with logging of the allocation info.</info>
       <return type='void *' info='a pointer to the allocated area or NULL in case of lack of memory.'/>
       <arg name='size' type='size_t' info='an int specifying the size in byte to allocate.'/>
     </function>
-    <function name='xmlMemRealloc' file='xmlmemory'>
+    <function name='xmlMemRealloc' file='xmlmemory' module='xmlmemory'>
       <info>a realloc() equivalent, with logging of the allocation info.</info>
       <return type='void *' info='a pointer to the allocated area or NULL in case of lack of memory.'/>
       <arg name='ptr' type='void *' info='the initial memory block pointer'/>
       <arg name='size' type='size_t' info='an int specifying the size in byte to allocate.'/>
     </function>
-    <function name='xmlMemSetup' file='xmlmemory'>
+    <function name='xmlMemSetup' file='xmlmemory' module='xmlmemory'>
       <info>Override the default memory access functions with a new set This has to be called before any other libxml routines !  Should this be blocked if there was already some allocations done ?</info>
       <return type='int' info='0 on success'/>
       <arg name='freeFunc' type='xmlFreeFunc' info='the free() function to use'/>
@@ -10124,52 +10144,52 @@
       <arg name='reallocFunc' type='xmlReallocFunc' info='the realloc() function to use'/>
       <arg name='strdupFunc' type='xmlStrdupFunc' info='the strdup() function to use'/>
     </function>
-    <function name='xmlMemShow' file='xmlmemory'>
+    <function name='xmlMemShow' file='xmlmemory' module='xmlmemory'>
       <info>show a show display of the memory allocated, and dump the @nr last allocated areas which were not freed</info>
       <return type='void'/>
       <arg name='fp' type='FILE *' info='a FILE descriptor used as the output file'/>
       <arg name='nr' type='int' info='number of entries to dump'/>
     </function>
-    <function name='xmlMemStrdupLoc' file='xmlmemory'>
+    <function name='xmlMemStrdupLoc' file='xmlmemory' module='xmlmemory'>
       <info>a strdup() equivalent, with logging of the allocation info.</info>
       <return type='char *' info='a pointer to the new string or NULL if allocation error occurred.'/>
       <arg name='str' type='const char *' info='the initial string pointer'/>
       <arg name='file' type='const char *' info='the file name or NULL'/>
       <arg name='line' type='int' info='the line number'/>
     </function>
-    <function name='xmlMemUsed' file='xmlmemory'>
+    <function name='xmlMemUsed' file='xmlmemory' module='xmlmemory'>
       <info>Provides the amount of memory currently allocated</info>
       <return type='int' info='an int representing the amount of memory allocated.'/>
     </function>
-    <function name='xmlMemoryDump' file='xmlmemory'>
+    <function name='xmlMemoryDump' file='xmlmemory' module='xmlmemory'>
       <info>Dump in-extenso the memory blocks allocated to the file .memorylist</info>
       <return type='void'/>
     </function>
-    <function name='xmlMemoryStrdup' file='xmlmemory'>
+    <function name='xmlMemoryStrdup' file='xmlmemory' module='xmlmemory'>
       <info>a strdup() equivalent, with logging of the allocation info.</info>
       <return type='char *' info='a pointer to the new string or NULL if allocation error occurred.'/>
       <arg name='str' type='const char *' info='the initial string pointer'/>
     </function>
-    <function name='xmlModuleClose' file='xmlmodule'>
+    <function name='xmlModuleClose' file='xmlmodule' module='xmlmodule'>
       <cond>defined(LIBXML_MODULES_ENABLED)</cond>
       <info>The close operations unload the associated module and free the data associated to the module.</info>
       <return type='int' info='0 in case of success, -1 in case of argument error and -2 if the module could not be closed/unloaded.'/>
       <arg name='module' type='xmlModulePtr' info='the module handle'/>
     </function>
-    <function name='xmlModuleFree' file='xmlmodule'>
+    <function name='xmlModuleFree' file='xmlmodule' module='xmlmodule'>
       <cond>defined(LIBXML_MODULES_ENABLED)</cond>
       <info>The free operations free the data associated to the module but does not unload the associated shared library which may still be in use.</info>
       <return type='int' info='0 in case of success, -1 in case of argument error'/>
       <arg name='module' type='xmlModulePtr' info='the module handle'/>
     </function>
-    <function name='xmlModuleOpen' file='xmlmodule'>
+    <function name='xmlModuleOpen' file='xmlmodule' module='xmlmodule'>
       <cond>defined(LIBXML_MODULES_ENABLED)</cond>
       <info>Opens a module/shared library given its name or path TODO: options are not yet implemented.</info>
       <return type='xmlModulePtr' info='a handle for the module or NULL in case of error'/>
       <arg name='name' type='const char *' info='the module name'/>
       <arg name='options' type='int' info='a set of xmlModuleOption'/>
     </function>
-    <function name='xmlModuleSymbol' file='xmlmodule'>
+    <function name='xmlModuleSymbol' file='xmlmodule' module='xmlmodule'>
       <cond>defined(LIBXML_MODULES_ENABLED)</cond>
       <info>Lookup for a symbol address in the given module</info>
       <return type='int' info='0 if the symbol was found, or -1 in case of error'/>
@@ -10177,92 +10197,92 @@
       <arg name='name' type='const char *' info='the name of the symbol'/>
       <arg name='symbol' type='void **' info='the resulting symbol address'/>
     </function>
-    <function name='xmlMutexLock' file='threads'>
+    <function name='xmlMutexLock' file='threads' module='threads'>
       <info>xmlMutexLock() is used to lock a libxml2 token.</info>
       <return type='void'/>
       <arg name='tok' type='xmlMutexPtr' info='the simple mutex'/>
     </function>
-    <function name='xmlMutexUnlock' file='threads'>
+    <function name='xmlMutexUnlock' file='threads' module='threads'>
       <info>xmlMutexUnlock() is used to unlock a libxml2 token.</info>
       <return type='void'/>
       <arg name='tok' type='xmlMutexPtr' info='the simple mutex'/>
     </function>
-    <function name='xmlNamespaceParseNCName' file='parserInternals'>
+    <function name='xmlNamespaceParseNCName' file='parserInternals' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>parse an XML namespace name.  TODO: this seems not in use anymore, the namespace handling is done on top of the SAX interfaces, i.e. not on raw input.  [NS 3] NCName ::= (Letter | &apos;_&apos;) (NCNameChar)*  [NS 4] NCNameChar ::= Letter | Digit | &apos;.&apos; | &apos;-&apos; | &apos;_&apos; | CombiningChar | Extender</info>
       <return type='xmlChar *' info='the namespace name or NULL'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlNamespaceParseNSDef' file='parserInternals'>
+    <function name='xmlNamespaceParseNSDef' file='parserInternals' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>parse a namespace prefix declaration  TODO: this seems not in use anymore, the namespace handling is done on top of the SAX interfaces, i.e. not on raw input.  [NS 1] NSDef ::= PrefixDef Eq SystemLiteral  [NS 2] PrefixDef ::= &apos;xmlns&apos; (&apos;:&apos; NCName)?</info>
       <return type='xmlChar *' info='the namespace name'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlNamespaceParseQName' file='parserInternals'>
+    <function name='xmlNamespaceParseQName' file='parserInternals' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>TODO: this seems not in use anymore, the namespace handling is done on top of the SAX interfaces, i.e. not on raw input.  parse an XML qualified name  [NS 5] QName ::= (Prefix &apos;:&apos;)? LocalPart  [NS 6] Prefix ::= NCName  [NS 7] LocalPart ::= NCName</info>
       <return type='xmlChar *' info='the local part, and prefix is updated to get the Prefix if any.'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='prefix' type='xmlChar **' info='a xmlChar **'/>
     </function>
-    <function name='xmlNanoFTPCheckResponse' file='nanoftp'>
+    <function name='xmlNanoFTPCheckResponse' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>Check if there is a response from the FTP server after a command.</info>
       <return type='int' info='the code number, or 0'/>
       <arg name='ctx' type='void *' info='an FTP context'/>
     </function>
-    <function name='xmlNanoFTPCleanup' file='nanoftp'>
+    <function name='xmlNanoFTPCleanup' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>Cleanup the FTP protocol layer. This cleanup proxy informations.</info>
       <return type='void'/>
     </function>
-    <function name='xmlNanoFTPClose' file='nanoftp'>
+    <function name='xmlNanoFTPClose' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>Close the connection and both control and transport</info>
       <return type='int' info='-1 incase of error, 0 otherwise'/>
       <arg name='ctx' type='void *' info='an FTP context'/>
     </function>
-    <function name='xmlNanoFTPCloseConnection' file='nanoftp'>
+    <function name='xmlNanoFTPCloseConnection' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>Close the data connection from the server</info>
       <return type='int' info='-1 incase of error, 0 otherwise'/>
       <arg name='ctx' type='void *' info='an FTP context'/>
     </function>
-    <function name='xmlNanoFTPConnect' file='nanoftp'>
+    <function name='xmlNanoFTPConnect' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>Tries to open a control connection</info>
       <return type='int' info='-1 in case of error, 0 otherwise'/>
       <arg name='ctx' type='void *' info='an FTP context'/>
     </function>
-    <function name='xmlNanoFTPConnectTo' file='nanoftp'>
+    <function name='xmlNanoFTPConnectTo' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>Tries to open a control connection to the given server/port</info>
       <return type='void *' info='an fTP context or NULL if it failed'/>
       <arg name='server' type='const char *' info='an FTP server name'/>
       <arg name='port' type='int' info='the port (use 21 if 0)'/>
     </function>
-    <function name='xmlNanoFTPCwd' file='nanoftp'>
+    <function name='xmlNanoFTPCwd' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>Tries to change the remote directory</info>
       <return type='int' info='-1 incase of error, 1 if CWD worked, 0 if it failed'/>
       <arg name='ctx' type='void *' info='an FTP context'/>
       <arg name='directory' type='const char *' info='a directory on the server'/>
     </function>
-    <function name='xmlNanoFTPDele' file='nanoftp'>
+    <function name='xmlNanoFTPDele' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>Tries to delete an item (file or directory) from server</info>
       <return type='int' info='-1 incase of error, 1 if DELE worked, 0 if it failed'/>
       <arg name='ctx' type='void *' info='an FTP context'/>
       <arg name='file' type='const char *' info='a file or directory on the server'/>
     </function>
-    <function name='xmlNanoFTPFreeCtxt' file='nanoftp'>
+    <function name='xmlNanoFTPFreeCtxt' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>Frees the context after closing the connection.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='an FTP context'/>
     </function>
-    <function name='xmlNanoFTPGet' file='nanoftp'>
+    <function name='xmlNanoFTPGet' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>Fetch the given file from the server. All data are passed back in the callbacks. The last callback has a size of 0 block.</info>
       <return type='int' info='-1 incase of error, 0 otherwise'/>
@@ -10271,31 +10291,31 @@
       <arg name='userData' type='void *' info='the user callback data'/>
       <arg name='filename' type='const char *' info='the file to retrieve'/>
     </function>
-    <function name='xmlNanoFTPGetConnection' file='nanoftp'>
+    <function name='xmlNanoFTPGetConnection' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>Try to open a data connection to the server. Currently only passive mode is supported.</info>
       <return type='int' info='-1 incase of error, 0 otherwise'/>
       <arg name='ctx' type='void *' info='an FTP context'/>
     </function>
-    <function name='xmlNanoFTPGetResponse' file='nanoftp'>
+    <function name='xmlNanoFTPGetResponse' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>Get the response from the FTP server after a command.</info>
       <return type='int' info='the code number'/>
       <arg name='ctx' type='void *' info='an FTP context'/>
     </function>
-    <function name='xmlNanoFTPGetSocket' file='nanoftp'>
+    <function name='xmlNanoFTPGetSocket' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>Initiate fetch of the given file from the server.</info>
       <return type='int' info='the socket for the data connection, or &lt;0 in case of error'/>
       <arg name='ctx' type='void *' info='an FTP context'/>
       <arg name='filename' type='const char *' info='the file to retrieve (or NULL if path is in context).'/>
     </function>
-    <function name='xmlNanoFTPInit' file='nanoftp'>
+    <function name='xmlNanoFTPInit' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>Initialize the FTP protocol layer. Currently it just checks for proxy informations, and get the hostname</info>
       <return type='void'/>
     </function>
-    <function name='xmlNanoFTPList' file='nanoftp'>
+    <function name='xmlNanoFTPList' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>Do a listing on the server. All files info are passed back in the callbacks.</info>
       <return type='int' info='-1 incase of error, 0 otherwise'/>
@@ -10304,19 +10324,19 @@
       <arg name='userData' type='void *' info='the user callback data'/>
       <arg name='filename' type='const char *' info='optional files to list'/>
     </function>
-    <function name='xmlNanoFTPNewCtxt' file='nanoftp'>
+    <function name='xmlNanoFTPNewCtxt' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>Allocate and initialize a new FTP context.</info>
       <return type='void *' info='an FTP context or NULL in case of error.'/>
       <arg name='URL' type='const char *' info='The URL used to initialize the context'/>
     </function>
-    <function name='xmlNanoFTPOpen' file='nanoftp'>
+    <function name='xmlNanoFTPOpen' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>Start to fetch the given ftp:// resource</info>
       <return type='void *' info='an FTP context, or NULL'/>
       <arg name='URL' type='const char *' info='the URL to the resource'/>
     </function>
-    <function name='xmlNanoFTPProxy' file='nanoftp'>
+    <function name='xmlNanoFTPProxy' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>Setup the FTP proxy informations. This can also be done by using ftp_proxy ftp_proxy_user and ftp_proxy_password environment variables.</info>
       <return type='void'/>
@@ -10326,13 +10346,13 @@
       <arg name='passwd' type='const char *' info='the proxy password'/>
       <arg name='type' type='int' info='the type of proxy 1 for using SITE, 2 for USER a at b'/>
     </function>
-    <function name='xmlNanoFTPQuit' file='nanoftp'>
+    <function name='xmlNanoFTPQuit' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>Send a QUIT command to the server</info>
       <return type='int' info='-1 in case of error, 0 otherwise'/>
       <arg name='ctx' type='void *' info='an FTP context'/>
     </function>
-    <function name='xmlNanoFTPRead' file='nanoftp'>
+    <function name='xmlNanoFTPRead' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>This function tries to read @len bytes from the existing FTP connection and saves them in @dest. This is a blocking call.</info>
       <return type='int' info='the number of byte read. 0 is an indication of an end of connection. -1 indicates a parameter error.'/>
@@ -10340,49 +10360,49 @@
       <arg name='dest' type='void *' info='a buffer'/>
       <arg name='len' type='int' info='the buffer length'/>
     </function>
-    <function name='xmlNanoFTPScanProxy' file='nanoftp'>
+    <function name='xmlNanoFTPScanProxy' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>(Re)Initialize the FTP Proxy context by parsing the URL and finding the protocol host port it indicates. Should be like ftp://myproxy/ or ftp://myproxy:3128/ A NULL URL cleans up proxy informations.</info>
       <return type='void'/>
       <arg name='URL' type='const char *' info='The proxy URL used to initialize the proxy context'/>
     </function>
-    <function name='xmlNanoFTPUpdateURL' file='nanoftp'>
+    <function name='xmlNanoFTPUpdateURL' file='nanoftp' module='nanoftp'>
       <cond>defined(LIBXML_FTP_ENABLED)</cond>
       <info>Update an FTP context by parsing the URL and finding new path it indicates. If there is an error in the protocol, hostname, port or other information, the error is raised. It indicates a new connection has to be established.</info>
       <return type='int' info='0 if Ok, -1 in case of error (other host).'/>
       <arg name='ctx' type='void *' info='an FTP context'/>
       <arg name='URL' type='const char *' info='The URL used to update the context'/>
     </function>
-    <function name='xmlNanoHTTPAuthHeader' file='nanohttp'>
+    <function name='xmlNanoHTTPAuthHeader' file='nanohttp' module='nanohttp'>
       <cond>defined(LIBXML_HTTP_ENABLED)</cond>
       <info>Get the authentication header of an HTTP context</info>
       <return type='const char *' info='the stashed value of the WWW-Authenticate or Proxy-Authenticate header.'/>
       <arg name='ctx' type='void *' info='the HTTP context'/>
     </function>
-    <function name='xmlNanoHTTPCleanup' file='nanohttp'>
+    <function name='xmlNanoHTTPCleanup' file='nanohttp' module='nanohttp'>
       <cond>defined(LIBXML_HTTP_ENABLED)</cond>
       <info>Cleanup the HTTP protocol layer.</info>
       <return type='void'/>
     </function>
-    <function name='xmlNanoHTTPClose' file='nanohttp'>
+    <function name='xmlNanoHTTPClose' file='nanohttp' module='nanohttp'>
       <cond>defined(LIBXML_HTTP_ENABLED)</cond>
       <info>This function closes an HTTP context, it ends up the connection and free all data related to it.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the HTTP context'/>
     </function>
-    <function name='xmlNanoHTTPContentLength' file='nanohttp'>
+    <function name='xmlNanoHTTPContentLength' file='nanohttp' module='nanohttp'>
       <cond>defined(LIBXML_HTTP_ENABLED)</cond>
       <info>Provides the specified content length from the HTTP header.</info>
       <return type='int' info='the specified content length from the HTTP header.  Note that a value of -1 indicates that the content length element was not included in the response header.'/>
       <arg name='ctx' type='void *' info='the HTTP context'/>
     </function>
-    <function name='xmlNanoHTTPEncoding' file='nanohttp'>
+    <function name='xmlNanoHTTPEncoding' file='nanohttp' module='nanohttp'>
       <cond>defined(LIBXML_HTTP_ENABLED)</cond>
       <info>Provides the specified encoding if specified in the HTTP headers.</info>
       <return type='const char *' info='the specified encoding or NULL if not available'/>
       <arg name='ctx' type='void *' info='the HTTP context'/>
     </function>
-    <function name='xmlNanoHTTPFetch' file='nanohttp'>
+    <function name='xmlNanoHTTPFetch' file='nanohttp' module='nanohttp'>
       <cond>defined(LIBXML_HTTP_ENABLED)</cond>
       <info>This function try to fetch the indicated resource via HTTP GET and save it&apos;s content in the file.</info>
       <return type='int' info='-1 in case of failure, 0 incase of success. The contentType, if provided must be freed by the caller'/>
@@ -10390,12 +10410,12 @@
       <arg name='filename' type='const char *' info='the filename where the content should be saved'/>
       <arg name='contentType' type='char **' info='if available the Content-Type information will be returned at that location'/>
     </function>
-    <function name='xmlNanoHTTPInit' file='nanohttp'>
+    <function name='xmlNanoHTTPInit' file='nanohttp' module='nanohttp'>
       <cond>defined(LIBXML_HTTP_ENABLED)</cond>
       <info>Initialize the HTTP protocol layer. Currently it just checks for proxy informations</info>
       <return type='void'/>
     </function>
-    <function name='xmlNanoHTTPMethod' file='nanohttp'>
+    <function name='xmlNanoHTTPMethod' file='nanohttp' module='nanohttp'>
       <cond>defined(LIBXML_HTTP_ENABLED)</cond>
       <info>This function try to open a connection to the indicated resource via HTTP using the given @method, adding the given extra headers and the input buffer for the request content.</info>
       <return type='void *' info='NULL in case of failure, otherwise a request handler. The contentType, if provided must be freed by the caller'/>
@@ -10406,7 +10426,7 @@
       <arg name='headers' type='const char *' info='the extra headers'/>
       <arg name='ilen' type='int' info='input length'/>
     </function>
-    <function name='xmlNanoHTTPMethodRedir' file='nanohttp'>
+    <function name='xmlNanoHTTPMethodRedir' file='nanohttp' module='nanohttp'>
       <cond>defined(LIBXML_HTTP_ENABLED)</cond>
       <info>This function try to open a connection to the indicated resource via HTTP using the given @method, adding the given extra headers and the input buffer for the request content.</info>
       <return type='void *' info='NULL in case of failure, otherwise a request handler. The contentType, or redir, if provided must be freed by the caller'/>
@@ -10418,20 +10438,20 @@
       <arg name='headers' type='const char *' info='the extra headers'/>
       <arg name='ilen' type='int' info='input length'/>
     </function>
-    <function name='xmlNanoHTTPMimeType' file='nanohttp'>
+    <function name='xmlNanoHTTPMimeType' file='nanohttp' module='nanohttp'>
       <cond>defined(LIBXML_HTTP_ENABLED)</cond>
       <info>Provides the specified Mime-Type if specified in the HTTP headers.</info>
       <return type='const char *' info='the specified Mime-Type or NULL if not available'/>
       <arg name='ctx' type='void *' info='the HTTP context'/>
     </function>
-    <function name='xmlNanoHTTPOpen' file='nanohttp'>
+    <function name='xmlNanoHTTPOpen' file='nanohttp' module='nanohttp'>
       <cond>defined(LIBXML_HTTP_ENABLED)</cond>
       <info>This function try to open a connection to the indicated resource via HTTP GET.</info>
       <return type='void *' info='NULL in case of failure, otherwise a request handler. The contentType, if provided must be freed by the caller'/>
       <arg name='URL' type='const char *' info='The URL to load'/>
       <arg name='contentType' type='char **' info='if available the Content-Type information will be returned at that location'/>
     </function>
-    <function name='xmlNanoHTTPOpenRedir' file='nanohttp'>
+    <function name='xmlNanoHTTPOpenRedir' file='nanohttp' module='nanohttp'>
       <cond>defined(LIBXML_HTTP_ENABLED)</cond>
       <info>This function try to open a connection to the indicated resource via HTTP GET.</info>
       <return type='void *' info='NULL in case of failure, otherwise a request handler. The contentType, if provided must be freed by the caller'/>
@@ -10439,7 +10459,7 @@
       <arg name='contentType' type='char **' info='if available the Content-Type information will be returned at that location'/>
       <arg name='redir' type='char **' info='if available the redirected URL will be returned'/>
     </function>
-    <function name='xmlNanoHTTPRead' file='nanohttp'>
+    <function name='xmlNanoHTTPRead' file='nanohttp' module='nanohttp'>
       <cond>defined(LIBXML_HTTP_ENABLED)</cond>
       <info>This function tries to read @len bytes from the existing HTTP connection and saves them in @dest. This is a blocking call.</info>
       <return type='int' info='the number of byte read. 0 is an indication of an end of connection. -1 indicates a parameter error.'/>
@@ -10447,63 +10467,63 @@
       <arg name='dest' type='void *' info='a buffer'/>
       <arg name='len' type='int' info='the buffer length'/>
     </function>
-    <function name='xmlNanoHTTPRedir' file='nanohttp'>
+    <function name='xmlNanoHTTPRedir' file='nanohttp' module='nanohttp'>
       <cond>defined(LIBXML_HTTP_ENABLED)</cond>
       <info>Provides the specified redirection URL if available from the HTTP header.</info>
       <return type='const char *' info='the specified redirection URL or NULL if not redirected.'/>
       <arg name='ctx' type='void *' info='the HTTP context'/>
     </function>
-    <function name='xmlNanoHTTPReturnCode' file='nanohttp'>
+    <function name='xmlNanoHTTPReturnCode' file='nanohttp' module='nanohttp'>
       <cond>defined(LIBXML_HTTP_ENABLED)</cond>
       <info>Get the latest HTTP return code received</info>
       <return type='int' info='the HTTP return code for the request.'/>
       <arg name='ctx' type='void *' info='the HTTP context'/>
     </function>
-    <function name='xmlNanoHTTPSave' file='nanohttp'>
+    <function name='xmlNanoHTTPSave' file='nanohttp' module='nanohttp'>
       <cond>defined(LIBXML_HTTP_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>This function saves the output of the HTTP transaction to a file It closes and free the context at the end</info>
       <return type='int' info='-1 in case of failure, 0 incase of success.'/>
       <arg name='ctxt' type='void *' info='the HTTP context'/>
       <arg name='filename' type='const char *' info='the filename where the content should be saved'/>
     </function>
-    <function name='xmlNanoHTTPScanProxy' file='nanohttp'>
+    <function name='xmlNanoHTTPScanProxy' file='nanohttp' module='nanohttp'>
       <cond>defined(LIBXML_HTTP_ENABLED)</cond>
       <info>(Re)Initialize the HTTP Proxy context by parsing the URL and finding the protocol host port it indicates. Should be like http://myproxy/ or http://myproxy:3128/ A NULL URL cleans up proxy informations.</info>
       <return type='void'/>
       <arg name='URL' type='const char *' info='The proxy URL used to initialize the proxy context'/>
     </function>
-    <function name='xmlNewAutomata' file='xmlautomata'>
+    <function name='xmlNewAutomata' file='xmlautomata' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED) &amp;&amp; defined(LIBXML_AUTOMATA_ENABLED)</cond>
       <info>Create a new automata</info>
       <return type='xmlAutomataPtr' info='the new object or NULL in case of failure'/>
     </function>
-    <function name='xmlNewCDataBlock' file='tree'>
+    <function name='xmlNewCDataBlock' file='tree' module='tree'>
       <info>Creation of a new node containing a CDATA block.</info>
       <return type='xmlNodePtr' info='a pointer to the new node object.'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='content' type='const xmlChar *' info='the CDATA block content content'/>
       <arg name='len' type='int' info='the length of the block'/>
     </function>
-    <function name='xmlNewCatalog' file='catalog'>
+    <function name='xmlNewCatalog' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>create a new Catalog.</info>
       <return type='xmlCatalogPtr' info='the xmlCatalogPtr or NULL in case of error'/>
       <arg name='sgml' type='int' info='should this create an SGML catalog'/>
     </function>
-    <function name='xmlNewCharEncodingHandler' file='encoding'>
+    <function name='xmlNewCharEncodingHandler' file='encoding' module='encoding'>
       <info>Create and registers an xmlCharEncodingHandler.</info>
       <return type='xmlCharEncodingHandlerPtr' info='the xmlCharEncodingHandlerPtr created (or NULL in case of error).'/>
       <arg name='name' type='const char *' info='the encoding name, in UTF-8 format (ASCII actually)'/>
       <arg name='input' type='xmlCharEncodingInputFunc' info='the xmlCharEncodingInputFunc to read that encoding'/>
       <arg name='output' type='xmlCharEncodingOutputFunc' info='the xmlCharEncodingOutputFunc to write that encoding'/>
     </function>
-    <function name='xmlNewCharRef' file='tree'>
+    <function name='xmlNewCharRef' file='tree' module='tree'>
       <info>Creation of a new character reference node.</info>
       <return type='xmlNodePtr' info='a pointer to the new node object.'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='name' type='const xmlChar *' info='the char ref string, starting with # or &quot;&amp;# ... ;&quot;'/>
     </function>
-    <function name='xmlNewChild' file='tree'>
+    <function name='xmlNewChild' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Creation of a new child element, added at the end of @parent children list. @ns and @content parameters are optional (NULL). If @ns is NULL, the newly created element inherits the namespace of @parent. If @content is non NULL, a child list containing the TEXTs and ENTITY_REFs node will be created. NOTE: @content is supposed to be a piece of XML CDATA, so it allows entity references. XML special chars must be escaped first by using xmlEncodeEntitiesReentrant(), or xmlNewTextChild() should be used.</info>
       <return type='xmlNodePtr' info='a pointer to the new node object.'/>
@@ -10512,36 +10532,36 @@
       <arg name='name' type='const xmlChar *' info='the name of the child'/>
       <arg name='content' type='const xmlChar *' info='the XML content of the child if any.'/>
     </function>
-    <function name='xmlNewComment' file='tree'>
+    <function name='xmlNewComment' file='tree' module='tree'>
       <info>Creation of a new node containing a comment.</info>
       <return type='xmlNodePtr' info='a pointer to the new node object.'/>
       <arg name='content' type='const xmlChar *' info='the comment content'/>
     </function>
-    <function name='xmlNewDoc' file='tree'>
+    <function name='xmlNewDoc' file='tree' module='tree'>
       <info>Creates a new XML document</info>
       <return type='xmlDocPtr' info='a new document'/>
       <arg name='version' type='const xmlChar *' info='xmlChar string giving the version of XML &quot;1.0&quot;'/>
     </function>
-    <function name='xmlNewDocComment' file='tree'>
+    <function name='xmlNewDocComment' file='tree' module='tree'>
       <info>Creation of a new node containing a comment within a document.</info>
       <return type='xmlNodePtr' info='a pointer to the new node object.'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='content' type='const xmlChar *' info='the comment content'/>
     </function>
-    <function name='xmlNewDocElementContent' file='valid'>
+    <function name='xmlNewDocElementContent' file='valid' module='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'>
+    <function name='xmlNewDocFragment' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED)</cond>
       <info>Creation of a new Fragment node.</info>
       <return type='xmlNodePtr' info='a pointer to the new node object.'/>
       <arg name='doc' type='xmlDocPtr' info='the document owning the fragment'/>
     </function>
-    <function name='xmlNewDocNode' file='tree'>
+    <function name='xmlNewDocNode' file='tree' module='tree'>
       <info>Creation of a new node element within a document. @ns and @content are optional (NULL). NOTE: @content is supposed to be a piece of XML CDATA, so it allow entities references, but XML special chars need to be escaped first by using xmlEncodeEntitiesReentrant(). Use xmlNewDocRawNode() if you don&apos;t need entities support.</info>
       <return type='xmlNodePtr' info='a pointer to the new node object.'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
@@ -10549,7 +10569,7 @@
       <arg name='name' type='const xmlChar *' info='the node name'/>
       <arg name='content' type='const xmlChar *' info='the XML text content if any'/>
     </function>
-    <function name='xmlNewDocNodeEatName' file='tree'>
+    <function name='xmlNewDocNodeEatName' file='tree' module='tree'>
       <info>Creation of a new node element within a document. @ns and @content are optional (NULL). NOTE: @content is supposed to be a piece of XML CDATA, so it allow entities references, but XML special chars need to be escaped first by using xmlEncodeEntitiesReentrant(). Use xmlNewDocRawNode() if you don&apos;t need entities support.</info>
       <return type='xmlNodePtr' info='a pointer to the new node object.'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
@@ -10557,21 +10577,21 @@
       <arg name='name' type='xmlChar *' info='the node name'/>
       <arg name='content' type='const xmlChar *' info='the XML text content if any'/>
     </function>
-    <function name='xmlNewDocPI' file='tree'>
+    <function name='xmlNewDocPI' file='tree' module='tree'>
       <info>Creation of a processing instruction element.</info>
       <return type='xmlNodePtr' info='a pointer to the new node object.'/>
       <arg name='doc' type='xmlDocPtr' info='the target document'/>
       <arg name='name' type='const xmlChar *' info='the processing instruction name'/>
       <arg name='content' type='const xmlChar *' info='the PI content'/>
     </function>
-    <function name='xmlNewDocProp' file='tree'>
+    <function name='xmlNewDocProp' file='tree' module='tree'>
       <info>Create a new property carried by a document.</info>
       <return type='xmlAttrPtr' info='a pointer to the attribute'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='name' type='const xmlChar *' info='the name of the attribute'/>
       <arg name='value' type='const xmlChar *' info='the value of the attribute'/>
     </function>
-    <function name='xmlNewDocRawNode' file='tree'>
+    <function name='xmlNewDocRawNode' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED)</cond>
       <info>Creation of a new node element within a document. @ns and @content are optional (NULL).</info>
       <return type='xmlNodePtr' info='a pointer to the new node object.'/>
@@ -10580,20 +10600,20 @@
       <arg name='name' type='const xmlChar *' info='the node name'/>
       <arg name='content' type='const xmlChar *' info='the text content if any'/>
     </function>
-    <function name='xmlNewDocText' file='tree'>
+    <function name='xmlNewDocText' file='tree' module='tree'>
       <info>Creation of a new text node within a document.</info>
       <return type='xmlNodePtr' info='a pointer to the new node object.'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='content' type='const xmlChar *' info='the text content'/>
     </function>
-    <function name='xmlNewDocTextLen' file='tree'>
+    <function name='xmlNewDocTextLen' file='tree' module='tree'>
       <info>Creation of a new text node with an extra content length parameter. The text node pertain to a given document.</info>
       <return type='xmlNodePtr' info='a pointer to the new node object.'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='content' type='const xmlChar *' info='the text content'/>
       <arg name='len' type='int' info='the text len.'/>
     </function>
-    <function name='xmlNewDtd' file='tree'>
+    <function name='xmlNewDtd' file='tree' module='tree'>
       <info>Creation of a new DTD for the external subset. To create an internal subset, use xmlCreateIntSubset().</info>
       <return type='xmlDtdPtr' info='a pointer to the new DTD structure'/>
       <arg name='doc' type='xmlDocPtr' info='the document pointer'/>
@@ -10601,19 +10621,19 @@
       <arg name='ExternalID' type='const xmlChar *' info='the external ID'/>
       <arg name='SystemID' type='const xmlChar *' info='the system ID'/>
     </function>
-    <function name='xmlNewElementContent' file='valid'>
+    <function name='xmlNewElementContent' file='valid' module='valid'>
       <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'/>
     </function>
-    <function name='xmlNewEntityInputStream' file='parserInternals'>
+    <function name='xmlNewEntityInputStream' file='parserInternals' module='parserInternals'>
       <info>Create a new input stream based on an xmlEntityPtr</info>
       <return type='xmlParserInputPtr' info='the new input stream or NULL'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='entity' type='xmlEntityPtr' info='an Entity pointer'/>
     </function>
-    <function name='xmlNewGlobalNs' file='tree'>
+    <function name='xmlNewGlobalNs' file='tree' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Creation of a Namespace, the old way using PI and without scoping DEPRECATED !!! It now create a namespace on the root element of the document if found.</info>
       <return type='xmlNsPtr' info='NULL this functionality had been removed'/>
@@ -10621,48 +10641,48 @@
       <arg name='href' type='const xmlChar *' info='the URI associated'/>
       <arg name='prefix' type='const xmlChar *' info='the prefix for the namespace'/>
     </function>
-    <function name='xmlNewIOInputStream' file='parser'>
+    <function name='xmlNewIOInputStream' file='parser' module='parserInternals'>
       <info>Create a new input stream structure encapsulating the @input into a stream suitable for the parser.</info>
       <return type='xmlParserInputPtr' info='the new input stream or NULL'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='input' type='xmlParserInputBufferPtr' info='an I/O Input'/>
       <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known'/>
     </function>
-    <function name='xmlNewInputFromFile' file='parserInternals'>
+    <function name='xmlNewInputFromFile' file='parserInternals' module='parserInternals'>
       <info>Create a new input stream based on a file or an URL.</info>
       <return type='xmlParserInputPtr' info='the new input stream or NULL in case of error'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='filename' type='const char *' info='the filename to use as entity'/>
     </function>
-    <function name='xmlNewInputStream' file='parserInternals'>
+    <function name='xmlNewInputStream' file='parserInternals' module='parserInternals'>
       <info>Create a new input stream structure</info>
       <return type='xmlParserInputPtr' info='the new input stream or NULL'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlNewMutex' file='threads'>
+    <function name='xmlNewMutex' file='threads' module='threads'>
       <info>xmlNewMutex() is used to allocate a libxml2 token struct for use in synchronizing access to data.</info>
       <return type='xmlMutexPtr' info='a new simple mutex pointer or NULL in case of error'/>
     </function>
-    <function name='xmlNewNode' file='tree'>
+    <function name='xmlNewNode' file='tree' module='tree'>
       <info>Creation of a new node element. @ns is optional (NULL).</info>
       <return type='xmlNodePtr' info='a pointer to the new node object. Uses xmlStrdup() to make copy of @name.'/>
       <arg name='ns' type='xmlNsPtr' info='namespace if any'/>
       <arg name='name' type='const xmlChar *' info='the node name'/>
     </function>
-    <function name='xmlNewNodeEatName' file='tree'>
+    <function name='xmlNewNodeEatName' file='tree' module='tree'>
       <info>Creation of a new node element. @ns is optional (NULL).</info>
       <return type='xmlNodePtr' info='a pointer to the new node object, with pointer @name as new node&apos;s name. Use xmlNewNode() if a copy of @name string is is needed as new node&apos;s name.'/>
       <arg name='ns' type='xmlNsPtr' info='namespace if any'/>
       <arg name='name' type='xmlChar *' info='the node name'/>
     </function>
-    <function name='xmlNewNs' file='tree'>
+    <function name='xmlNewNs' file='tree' module='tree'>
       <info>Creation of a new Namespace. This function will refuse to create a namespace with a similar prefix than an existing one present on this node. We use href==NULL in the case of an element creation where the namespace was not defined.</info>
       <return type='xmlNsPtr' info='a new namespace pointer or NULL'/>
       <arg name='node' type='xmlNodePtr' info='the element carrying the namespace'/>
       <arg name='href' type='const xmlChar *' info='the URI associated'/>
       <arg name='prefix' type='const xmlChar *' info='the prefix for the namespace'/>
     </function>
-    <function name='xmlNewNsProp' file='tree'>
+    <function name='xmlNewNsProp' file='tree' module='tree'>
       <info>Create a new property tagged with a namespace and carried by a node.</info>
       <return type='xmlAttrPtr' info='a pointer to the attribute'/>
       <arg name='node' type='xmlNodePtr' info='the holding node'/>
@@ -10670,7 +10690,7 @@
       <arg name='name' type='const xmlChar *' info='the name of the attribute'/>
       <arg name='value' type='const xmlChar *' info='the value of the attribute'/>
     </function>
-    <function name='xmlNewNsPropEatName' file='tree'>
+    <function name='xmlNewNsPropEatName' file='tree' module='tree'>
       <info>Create a new property tagged with a namespace and carried by a node.</info>
       <return type='xmlAttrPtr' info='a pointer to the attribute'/>
       <arg name='node' type='xmlNodePtr' info='the holding node'/>
@@ -10678,17 +10698,17 @@
       <arg name='name' type='xmlChar *' info='the name of the attribute'/>
       <arg name='value' type='const xmlChar *' info='the value of the attribute'/>
     </function>
-    <function name='xmlNewPI' file='tree'>
+    <function name='xmlNewPI' file='tree' module='tree'>
       <info>Creation of a processing instruction element. Use xmlDocNewPI preferably to get string interning</info>
       <return type='xmlNodePtr' info='a pointer to the new node object.'/>
       <arg name='name' type='const xmlChar *' info='the processing instruction name'/>
       <arg name='content' type='const xmlChar *' info='the PI content'/>
     </function>
-    <function name='xmlNewParserCtxt' file='parser'>
+    <function name='xmlNewParserCtxt' file='parser' module='parserInternals'>
       <info>Allocate and initialize a new parser context.</info>
       <return type='xmlParserCtxtPtr' info='the xmlParserCtxtPtr or NULL'/>
     </function>
-    <function name='xmlNewProp' file='tree'>
+    <function name='xmlNewProp' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Create a new property carried by a node.</info>
       <return type='xmlAttrPtr' info='a pointer to the attribute'/>
@@ -10696,28 +10716,28 @@
       <arg name='name' type='const xmlChar *' info='the name of the attribute'/>
       <arg name='value' type='const xmlChar *' info='the value of the attribute'/>
     </function>
-    <function name='xmlNewRMutex' file='threads'>
+    <function name='xmlNewRMutex' file='threads' module='threads'>
       <info>xmlRNewMutex() is used to allocate a reentrant mutex for use in synchronizing access to data. token_r is a re-entrant lock and thus useful for synchronizing access to data structures that may be manipulated in a recursive fashion.</info>
       <return type='xmlRMutexPtr' info='the new reentrant mutex pointer or NULL in case of error'/>
     </function>
-    <function name='xmlNewReference' file='tree'>
+    <function name='xmlNewReference' file='tree' module='tree'>
       <info>Creation of a new reference node.</info>
       <return type='xmlNodePtr' info='a pointer to the new node object.'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='name' type='const xmlChar *' info='the reference name, or the reference string with &amp; and ;'/>
     </function>
-    <function name='xmlNewStringInputStream' file='parserInternals'>
+    <function name='xmlNewStringInputStream' file='parserInternals' module='parserInternals'>
       <info>Create a new input stream based on a memory buffer.</info>
       <return type='xmlParserInputPtr' info='the new input stream'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='buffer' type='const xmlChar *' info='an memory buffer'/>
     </function>
-    <function name='xmlNewText' file='tree'>
+    <function name='xmlNewText' file='tree' module='tree'>
       <info>Creation of a new text node.</info>
       <return type='xmlNodePtr' info='a pointer to the new node object.'/>
       <arg name='content' type='const xmlChar *' info='the text content'/>
     </function>
-    <function name='xmlNewTextChild' file='tree'>
+    <function name='xmlNewTextChild' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED)</cond>
       <info>Creation of a new child element, added at the end of @parent children list. @ns and @content parameters are optional (NULL). If @ns is NULL, the newly created element inherits the namespace of @parent. If @content is non NULL, a child TEXT node will be created containing the string @content. NOTE: Use xmlNewChild() if @content will contain entities that need to be preserved. Use this function, xmlNewTextChild(), if you need to ensure that reserved XML chars that might appear in @content, such as the ampersand, greater-than or less-than signs, are automatically replaced by their XML escaped entity representations.</info>
       <return type='xmlNodePtr' info='a pointer to the new node object.'/>
@@ -10726,60 +10746,60 @@
       <arg name='name' type='const xmlChar *' info='the name of the child'/>
       <arg name='content' type='const xmlChar *' info='the text content of the child if any.'/>
     </function>
-    <function name='xmlNewTextLen' file='tree'>
+    <function name='xmlNewTextLen' file='tree' module='tree'>
       <info>Creation of a new text node with an extra parameter for the content&apos;s length</info>
       <return type='xmlNodePtr' info='a pointer to the new node object.'/>
       <arg name='content' type='const xmlChar *' info='the text content'/>
       <arg name='len' type='int' info='the text len.'/>
     </function>
-    <function name='xmlNewTextReader' file='xmlreader'>
+    <function name='xmlNewTextReader' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Create an xmlTextReader structure fed with @input</info>
       <return type='xmlTextReaderPtr' info='the new xmlTextReaderPtr or NULL in case of error'/>
       <arg name='input' type='xmlParserInputBufferPtr' info='the xmlParserInputBufferPtr used to read data'/>
       <arg name='URI' type='const char *' info='the URI information for the source if available'/>
     </function>
-    <function name='xmlNewTextReaderFilename' file='xmlreader'>
+    <function name='xmlNewTextReaderFilename' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Create an xmlTextReader structure fed with the resource at @URI</info>
       <return type='xmlTextReaderPtr' info='the new xmlTextReaderPtr or NULL in case of error'/>
       <arg name='URI' type='const char *' info='the URI of the resource to process'/>
     </function>
-    <function name='xmlNewTextWriter' file='xmlwriter'>
+    <function name='xmlNewTextWriter' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Create a new xmlNewTextWriter structure using an xmlOutputBufferPtr NOTE: the @out parameter will be deallocated when the writer is closed (if the call succeed.)</info>
       <return type='xmlTextWriterPtr' info='the new xmlTextWriterPtr or NULL in case of error'/>
       <arg name='out' type='xmlOutputBufferPtr' info='an xmlOutputBufferPtr'/>
     </function>
-    <function name='xmlNewTextWriterDoc' file='xmlwriter'>
+    <function name='xmlNewTextWriterDoc' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Create a new xmlNewTextWriter structure with @*doc as output</info>
       <return type='xmlTextWriterPtr' info='the new xmlTextWriterPtr or NULL in case of error'/>
       <arg name='doc' type='xmlDocPtr *' info='address of a xmlDocPtr to hold the new XML document tree'/>
       <arg name='compression' type='int' info='compress the output?'/>
     </function>
-    <function name='xmlNewTextWriterFilename' file='xmlwriter'>
+    <function name='xmlNewTextWriterFilename' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Create a new xmlNewTextWriter structure with @uri as output</info>
       <return type='xmlTextWriterPtr' info='the new xmlTextWriterPtr or NULL in case of error'/>
       <arg name='uri' type='const char *' info='the URI of the resource for the output'/>
       <arg name='compression' type='int' info='compress the output?'/>
     </function>
-    <function name='xmlNewTextWriterMemory' file='xmlwriter'>
+    <function name='xmlNewTextWriterMemory' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Create a new xmlNewTextWriter structure with @buf as output TODO: handle compression</info>
       <return type='xmlTextWriterPtr' info='the new xmlTextWriterPtr or NULL in case of error'/>
       <arg name='buf' type='xmlBufferPtr' info='xmlBufferPtr'/>
       <arg name='compression' type='int' info='compress the output?'/>
     </function>
-    <function name='xmlNewTextWriterPushParser' file='xmlwriter'>
+    <function name='xmlNewTextWriterPushParser' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Create a new xmlNewTextWriter structure with @ctxt as output NOTE: the @ctxt context will be freed with the resulting writer (if the call succeeds). TODO: handle compression</info>
       <return type='xmlTextWriterPtr' info='the new xmlTextWriterPtr or NULL in case of error'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='xmlParserCtxtPtr to hold the new XML document tree'/>
       <arg name='compression' type='int' info='compress the output?'/>
     </function>
-    <function name='xmlNewTextWriterTree' file='xmlwriter'>
+    <function name='xmlNewTextWriterTree' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Create a new xmlNewTextWriter structure with @doc as output starting at @node</info>
       <return type='xmlTextWriterPtr' info='the new xmlTextWriterPtr or NULL in case of error'/>
@@ -10787,43 +10807,43 @@
       <arg name='node' type='xmlNodePtr' info='xmlNodePtr or NULL for doc-&gt;children'/>
       <arg name='compression' type='int' info='compress the output?'/>
     </function>
-    <function name='xmlNewValidCtxt' file='valid'>
+    <function name='xmlNewValidCtxt' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Allocate a validation context structure.</info>
       <return type='xmlValidCtxtPtr' info='NULL if not, otherwise the new validation context structure'/>
     </function>
-    <function name='xmlNextChar' file='parserInternals'>
+    <function name='xmlNextChar' file='parserInternals' module='parserInternals'>
       <info>Skip to the next char input char.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='the XML parser context'/>
     </function>
-    <function name='xmlNoNetExternalEntityLoader' file='xmlIO'>
+    <function name='xmlNoNetExternalEntityLoader' file='xmlIO' module='xmlIO'>
       <info>A specific entity loader disabling network accesses, though still allowing local catalog accesses for resolution.</info>
       <return type='xmlParserInputPtr' info='a new allocated xmlParserInputPtr, or NULL.'/>
       <arg name='URL' type='const char *' info='the URL for the entity to load'/>
       <arg name='ID' type='const char *' info='the System ID for the entity to load'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='the context in which the entity is called or NULL'/>
     </function>
-    <function name='xmlNodeAddContent' file='tree'>
+    <function name='xmlNodeAddContent' file='tree' module='tree'>
       <info>Append the extra substring to the node content.</info>
       <return type='void'/>
       <arg name='cur' type='xmlNodePtr' info='the node being modified'/>
       <arg name='content' type='const xmlChar *' info='extra content'/>
     </function>
-    <function name='xmlNodeAddContentLen' file='tree'>
+    <function name='xmlNodeAddContentLen' file='tree' module='tree'>
       <info>Append the extra substring to the node content.</info>
       <return type='void'/>
       <arg name='cur' type='xmlNodePtr' info='the node being modified'/>
       <arg name='content' type='const xmlChar *' info='extra content'/>
       <arg name='len' type='int' info='the size of @content'/>
     </function>
-    <function name='xmlNodeBufGetContent' file='tree'>
+    <function name='xmlNodeBufGetContent' file='tree' module='tree'>
       <info>Read the value of a node @cur, this can be either the text carried directly by this node if it&apos;s a TEXT node or the aggregate string of the values carried by this node child&apos;s (TEXT and ENTITY_REF). Entity references are substituted. Fills up the buffer @buffer with this value</info>
       <return type='int' info='0 in case of success and -1 in case of error.'/>
       <arg name='buffer' type='xmlBufferPtr' info='a buffer'/>
       <arg name='cur' type='xmlNodePtr' info='the node being read'/>
     </function>
-    <function name='xmlNodeDump' file='tree'>
+    <function name='xmlNodeDump' file='tree' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an XML node, recursive behaviour,children are printed too. Note that @format = 1 provide node indenting only if xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was called</info>
       <return type='int' info='the number of bytes written to the buffer or -1 in case of error'/>
@@ -10833,7 +10853,7 @@
       <arg name='level' type='int' info='the imbrication level for indenting'/>
       <arg name='format' type='int' info='is formatting allowed'/>
     </function>
-    <function name='xmlNodeDumpOutput' file='tree'>
+    <function name='xmlNodeDumpOutput' file='tree' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an XML node, recursive behaviour, children are printed too. Note that @format = 1 provide node indenting only if xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was called</info>
       <return type='void'/>
@@ -10844,33 +10864,33 @@
       <arg name='format' type='int' info='is formatting allowed'/>
       <arg name='encoding' type='const char *' info='an optional encoding string'/>
     </function>
-    <function name='xmlNodeGetBase' file='tree'>
+    <function name='xmlNodeGetBase' file='tree' module='tree'>
       <info>Searches for the BASE URL. The code should work on both XML and HTML document even if base mechanisms are completely different. It returns the base as defined in RFC 2396 sections 5.1.1. Base URI within Document Content and 5.1.2. Base URI from the Encapsulating Entity However it does not return the document base (5.1.3), use xmlDocumentGetBase() for this</info>
       <return type='xmlChar *' info='a pointer to the base URL, or NULL if not found It&apos;s up to the caller to free the memory with xmlFree().'/>
       <arg name='doc' type='xmlDocPtr' info='the document the node pertains to'/>
       <arg name='cur' type='xmlNodePtr' info='the node being checked'/>
     </function>
-    <function name='xmlNodeGetContent' file='tree'>
+    <function name='xmlNodeGetContent' file='tree' module='tree'>
       <info>Read the value of a node, this can be either the text carried directly by this node if it&apos;s a TEXT node or the aggregate string of the values carried by this node child&apos;s (TEXT and ENTITY_REF). Entity references are substituted.</info>
       <return type='xmlChar *' info='a new #xmlChar * or NULL if no content is available. It&apos;s up to the caller to free the memory with xmlFree().'/>
       <arg name='cur' type='xmlNodePtr' info='the node being read'/>
     </function>
-    <function name='xmlNodeGetLang' file='tree'>
+    <function name='xmlNodeGetLang' file='tree' module='tree'>
       <info>Searches the language of a node, i.e. the values of the xml:lang attribute or the one carried by the nearest ancestor.</info>
       <return type='xmlChar *' info='a pointer to the lang value, or NULL if not found It&apos;s up to the caller to free the memory with xmlFree().'/>
       <arg name='cur' type='xmlNodePtr' info='the node being checked'/>
     </function>
-    <function name='xmlNodeGetSpacePreserve' file='tree'>
+    <function name='xmlNodeGetSpacePreserve' file='tree' module='tree'>
       <info>Searches the space preserving behaviour of a node, i.e. the values of the xml:space attribute or the one carried by the nearest ancestor.</info>
       <return type='int' info='-1 if xml:space is not inherited, 0 if &quot;default&quot;, 1 if &quot;preserve&quot;'/>
       <arg name='cur' type='xmlNodePtr' info='the node being checked'/>
     </function>
-    <function name='xmlNodeIsText' file='tree'>
+    <function name='xmlNodeIsText' file='tree' module='tree'>
       <info>Is this node a Text node ?</info>
       <return type='int' info='1 yes, 0 no'/>
       <arg name='node' type='xmlNodePtr' info='the node'/>
     </function>
-    <function name='xmlNodeListGetRawString' file='tree'>
+    <function name='xmlNodeListGetRawString' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED)</cond>
       <info>Builds the string equivalent to the text contained in the Node list made of TEXTs and ENTITY_REFs, contrary to xmlNodeListGetString() this function doesn&apos;t do any character encoding handling.</info>
       <return type='xmlChar *' info='a pointer to the string copy, the caller must free it with xmlFree().'/>
@@ -10878,27 +10898,27 @@
       <arg name='list' type='xmlNodePtr' info='a Node list'/>
       <arg name='inLine' type='int' info='should we replace entity contents or show their external form'/>
     </function>
-    <function name='xmlNodeListGetString' file='tree'>
+    <function name='xmlNodeListGetString' file='tree' module='tree'>
       <info>Build the string equivalent to the text contained in the Node list made of TEXTs and ENTITY_REFs</info>
       <return type='xmlChar *' info='a pointer to the string copy, the caller must free it with xmlFree().'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='list' type='xmlNodePtr' info='a Node list'/>
       <arg name='inLine' type='int' info='should we replace entity contents or show their external form'/>
     </function>
-    <function name='xmlNodeSetBase' file='tree'>
+    <function name='xmlNodeSetBase' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED)</cond>
       <info>Set (or reset) the base URI of a node, i.e. the value of the xml:base attribute.</info>
       <return type='void'/>
       <arg name='cur' type='xmlNodePtr' info='the node being changed'/>
       <arg name='uri' type='const xmlChar *' info='the new base URI'/>
     </function>
-    <function name='xmlNodeSetContent' file='tree'>
+    <function name='xmlNodeSetContent' file='tree' module='tree'>
       <info>Replace the content of a node.</info>
       <return type='void'/>
       <arg name='cur' type='xmlNodePtr' info='the node being modified'/>
       <arg name='content' type='const xmlChar *' info='the new value of the content'/>
     </function>
-    <function name='xmlNodeSetContentLen' file='tree'>
+    <function name='xmlNodeSetContentLen' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED)</cond>
       <info>Replace the content of a node.</info>
       <return type='void'/>
@@ -10906,58 +10926,58 @@
       <arg name='content' type='const xmlChar *' info='the new value of the content'/>
       <arg name='len' type='int' info='the size of @content'/>
     </function>
-    <function name='xmlNodeSetLang' file='tree'>
+    <function name='xmlNodeSetLang' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED)</cond>
       <info>Set the language of a node, i.e. the values of the xml:lang attribute.</info>
       <return type='void'/>
       <arg name='cur' type='xmlNodePtr' info='the node being changed'/>
       <arg name='lang' type='const xmlChar *' info='the language description'/>
     </function>
-    <function name='xmlNodeSetName' file='tree'>
+    <function name='xmlNodeSetName' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED)</cond>
       <info>Set (or reset) the name of a node.</info>
       <return type='void'/>
       <arg name='cur' type='xmlNodePtr' info='the node being changed'/>
       <arg name='name' type='const xmlChar *' info='the new tag name'/>
     </function>
-    <function name='xmlNodeSetSpacePreserve' file='tree'>
+    <function name='xmlNodeSetSpacePreserve' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED)</cond>
       <info>Set (or reset) the space preserving behaviour of a node, i.e. the value of the xml:space attribute.</info>
       <return type='void'/>
       <arg name='cur' type='xmlNodePtr' info='the node being changed'/>
       <arg name='val' type='int' info='the xml:space value (&quot;0&quot;: default, 1: &quot;preserve&quot;)'/>
     </function>
-    <function name='xmlNormalizeURIPath' file='uri'>
+    <function name='xmlNormalizeURIPath' file='uri' module='uri'>
       <info>Applies the 5 normalization steps to a path string--that is, RFC 2396 Section 5.2, steps 6.c through 6.g.  Normalization occurs directly on the string, no new allocation is done</info>
       <return type='int' info='0 or an error code'/>
       <arg name='path' type='char *' info='pointer to the path string'/>
     </function>
-    <function name='xmlNormalizeWindowsPath' file='xmlIO'>
+    <function name='xmlNormalizeWindowsPath' file='xmlIO' module='xmlIO'>
       <info>This function is obsolete. Please see xmlURIFromPath in uri.c for a better solution.</info>
       <return type='xmlChar *' info='a canonicalized version of the path'/>
       <arg name='path' type='const xmlChar *' info='the input file path'/>
     </function>
-    <function name='xmlOutputBufferClose' file='xmlIO'>
+    <function name='xmlOutputBufferClose' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>flushes and close the output I/O channel and free up all the associated resources</info>
       <return type='int' info='the number of byte written or -1 in case of error.'/>
       <arg name='out' type='xmlOutputBufferPtr' info='a buffered output'/>
     </function>
-    <function name='xmlOutputBufferCreateFd' file='xmlIO'>
+    <function name='xmlOutputBufferCreateFd' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Create a buffered output for the progressive saving to a file descriptor</info>
       <return type='xmlOutputBufferPtr' info='the new parser output or NULL'/>
       <arg name='fd' type='int' info='a file descriptor number'/>
       <arg name='encoder' type='xmlCharEncodingHandlerPtr' info='the encoding converter or NULL'/>
     </function>
-    <function name='xmlOutputBufferCreateFile' file='xmlIO'>
+    <function name='xmlOutputBufferCreateFile' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Create a buffered output for the progressive saving to a FILE * buffered C I/O</info>
       <return type='xmlOutputBufferPtr' info='the new parser output or NULL'/>
       <arg name='file' type='FILE *' info='a FILE*'/>
       <arg name='encoder' type='xmlCharEncodingHandlerPtr' info='the encoding converter or NULL'/>
     </function>
-    <function name='xmlOutputBufferCreateFilename' file='xmlIO'>
+    <function name='xmlOutputBufferCreateFilename' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Create a buffered  output for the progressive saving of a file If filename is &quot;-&apos; then we use stdout as the output. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time. TODO: currently if compression is set, the library only support writing to a local file.</info>
       <return type='xmlOutputBufferPtr' info='the new output or NULL'/>
@@ -10965,19 +10985,19 @@
       <arg name='encoder' type='xmlCharEncodingHandlerPtr' info='the encoding converter or NULL'/>
       <arg name='compression' type='int' info='the compression ration (0 none, 9 max).'/>
     </function>
-    <function name='xmlOutputBufferCreateFilenameDefault' file='globals'>
+    <function name='xmlOutputBufferCreateFilenameDefault' file='globals' module='xmlIO'>
       <info>Registers a callback for URI output file handling</info>
       <return type='xmlOutputBufferCreateFilenameFunc' info='the old value of the registration function'/>
       <arg name='func' type='xmlOutputBufferCreateFilenameFunc' info='function pointer to the new OutputBufferCreateFilenameFunc'/>
     </function>
-    <functype name='xmlOutputBufferCreateFilenameFunc' file='globals'>
+    <functype name='xmlOutputBufferCreateFilenameFunc' file='globals' module='globals'>
       <info></info>
       <return type='xmlOutputBufferPtr' info=''/>
       <arg name='URI' type='const char *' info=''/>
       <arg name='encoder' type='xmlCharEncodingHandlerPtr' info=''/>
       <arg name='compression' type='int' info=''/>
     </functype>
-    <function name='xmlOutputBufferCreateIO' file='xmlIO'>
+    <function name='xmlOutputBufferCreateIO' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Create a buffered output for the progressive saving to an I/O handler</info>
       <return type='xmlOutputBufferPtr' info='the new parser output or NULL'/>
@@ -10986,13 +11006,13 @@
       <arg name='ioctx' type='void *' info='an I/O handler'/>
       <arg name='encoder' type='xmlCharEncodingHandlerPtr' info='the charset encoding if known'/>
     </function>
-    <function name='xmlOutputBufferFlush' file='xmlIO'>
+    <function name='xmlOutputBufferFlush' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>flushes the output I/O channel</info>
       <return type='int' info='the number of byte written or -1 in case of error.'/>
       <arg name='out' type='xmlOutputBufferPtr' info='a buffered output'/>
     </function>
-    <function name='xmlOutputBufferWrite' file='xmlIO'>
+    <function name='xmlOutputBufferWrite' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Write the content of the array in the output I/O buffer This routine handle the I18N transcoding from internal UTF-8 The buffer is lossless, i.e. will store in case of partial or delayed writes.</info>
       <return type='int' info='the number of chars immediately written, or -1 in case of error.'/>
@@ -11000,7 +11020,7 @@
       <arg name='len' type='int' info='the size in bytes of the array.'/>
       <arg name='buf' type='const char *' info='an char array'/>
     </function>
-    <function name='xmlOutputBufferWriteEscape' file='xmlIO'>
+    <function name='xmlOutputBufferWriteEscape' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Write the content of the string in the output I/O buffer This routine escapes the caracters and then handle the I18N transcoding from internal UTF-8 The buffer is lossless, i.e. will store in case of partial or delayed writes.</info>
       <return type='int' info='the number of chars immediately written, or -1 in case of error.'/>
@@ -11008,32 +11028,32 @@
       <arg name='str' type='const xmlChar *' info='a zero terminated UTF-8 string'/>
       <arg name='escaping' type='xmlCharEncodingOutputFunc' info='an optional escaping function (or NULL)'/>
     </function>
-    <function name='xmlOutputBufferWriteString' file='xmlIO'>
+    <function name='xmlOutputBufferWriteString' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Write the content of the string in the output I/O buffer This routine handle the I18N transcoding from internal UTF-8 The buffer is lossless, i.e. will store in case of partial or delayed writes.</info>
       <return type='int' info='the number of chars immediately written, or -1 in case of error.'/>
       <arg name='out' type='xmlOutputBufferPtr' info='a buffered parser output'/>
       <arg name='str' type='const char *' info='a zero terminated C string'/>
     </function>
-    <functype name='xmlOutputCloseCallback' file='xmlIO'>
+    <functype name='xmlOutputCloseCallback' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Callback used in the I/O Output API to close the resource</info>
       <return type='int' info='0 or -1 in case of error'/>
       <arg name='context' type='void *' info='an Output context'/>
     </functype>
-    <functype name='xmlOutputMatchCallback' file='xmlIO'>
+    <functype name='xmlOutputMatchCallback' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Callback used in the I/O Output API to detect if the current handler can provide output fonctionnalities for this resource.</info>
       <return type='int' info='1 if yes and 0 if another Output module should be used'/>
       <arg name='filename' type='char const *' info='the filename or URI'/>
     </functype>
-    <functype name='xmlOutputOpenCallback' file='xmlIO'>
+    <functype name='xmlOutputOpenCallback' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Callback used in the I/O Output API to open the resource</info>
       <return type='void *' info='an Output context or NULL in case or error'/>
       <arg name='filename' type='char const *' info='the filename or URI'/>
     </functype>
-    <functype name='xmlOutputWriteCallback' file='xmlIO'>
+    <functype name='xmlOutputWriteCallback' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Callback used in the I/O Output API to write to the resource</info>
       <return type='int' info='the number of bytes written or -1 in case of error'/>
@@ -11041,30 +11061,30 @@
       <arg name='buffer' type='const char *' info='the buffer of data to write'/>
       <arg name='len' type='int' info='the length of the buffer in bytes'/>
     </functype>
-    <function name='xmlParseAttValue' file='parserInternals'>
+    <function name='xmlParseAttValue' file='parserInternals' module='parser'>
       <info>parse a value for an attribute Note: the parser won&apos;t do substitution of entities here, this will be handled later in xmlStringGetNodeList  [10] AttValue ::= &apos;&quot;&apos; ([^&lt;&amp;&quot;] | Reference)* &apos;&quot;&apos; | &quot;&apos;&quot; ([^&lt;&amp;&apos;] | Reference)* &quot;&apos;&quot;  3.3.3 Attribute-Value Normalization: Before the value of an attribute is passed to the application or checked for validity, the XML processor must normalize it as follows: - a character reference is processed by appending the referenced character to the attribute value - an entity reference is processed by recursively processing the replacement text of the entity - a whitespace character (#x20, #xD, #xA, #x9) is processed by appending #x20 to the normalized value, except that only a single #x20 is appended for a &quot;#xD#xA&quot; sequence that is part of an external parsed entity or the literal entity value of an internal parsed entity - other characters are processed by appending them to the normalized value If the declared value is not CDATA, then the XML processor must further process the normalized attribute value by discarding any leading and trailing space (#x20) characters, and by replacing sequences of space (#x20) characters by a single space (#x20) character. All attributes for which no declaration has been read should be treated by a non-validating parser as if declared CDATA.</info>
       <return type='xmlChar *' info='the AttValue parsed or NULL. The value has to be freed by the caller.'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseAttribute' file='parserInternals'>
+    <function name='xmlParseAttribute' file='parserInternals' module='parser'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>parse an attribute  [41] Attribute ::= Name Eq AttValue  [ WFC: No External Entity References ] Attribute values cannot contain direct or indirect entity references to external entities.  [ WFC: No &lt; in Attribute Values ] The replacement text of any entity referred to directly or indirectly in an attribute value (other than &quot;&amp;lt;&quot;) must not contain a &lt;.  [ VC: Attribute Value Type ] The attribute must have been declared; the value must be of the type declared for it.  [25] Eq ::= S? &apos;=&apos; S?  With namespace:  [NS 11] Attribute ::= QName Eq AttValue  Also the case QName == xmlns:??? is handled independently as a namespace definition.</info>
       <return type='const xmlChar *' info='the attribute name, and the value in *value.'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='value' type='xmlChar **' info='a xmlChar ** used to store the value of the attribute'/>
     </function>
-    <function name='xmlParseAttributeListDecl' file='parserInternals'>
+    <function name='xmlParseAttributeListDecl' file='parserInternals' module='parser'>
       <info>: parse the Attribute list def for an element  [52] AttlistDecl ::= &apos;&lt;!ATTLIST&apos; S Name AttDef* S? &apos;&gt;&apos;  [53] AttDef ::= S Name S AttType S DefaultDecl</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseAttributeType' file='parserInternals'>
+    <function name='xmlParseAttributeType' file='parserInternals' module='parser'>
       <info>parse the Attribute list def for an element  [54] AttType ::= StringType | TokenizedType | EnumeratedType  [55] StringType ::= &apos;CDATA&apos;  [56] TokenizedType ::= &apos;ID&apos; | &apos;IDREF&apos; | &apos;IDREFS&apos; | &apos;ENTITY&apos; | &apos;ENTITIES&apos; | &apos;NMTOKEN&apos; | &apos;NMTOKENS&apos;  Validity constraints for attribute values syntax are checked in xmlValidateAttributeValue()  [ VC: ID ] Values of type ID must match the Name production. A name must not appear more than once in an XML document as a value of this type; i.e., ID values must uniquely identify the elements which bear them.  [ VC: One ID per Element Type ] No element type may have more than one ID attribute specified.  [ VC: ID Attribute Default ] An ID attribute must have a declared default of #IMPLIED or #REQUIRED.  [ VC: IDREF ] Values of type IDREF must match the Name production, and values of type IDREFS must match Names; each IDREF Name must match the value of an ID attribute on some element in the XML document; i.e. IDREF values must match the value of some ID attribute.  [ VC: Entity Name ] Values of type ENTITY must match the Name production, values of type ENTITIES must match Names; each Entity Name must match the name of an unparsed entity declared in the DTD.  [ VC: Name Token ] Values of type NMTOKEN must match the Nmtoken production; values of type NMTOKENS must match Nmtokens.</info>
       <return type='int' info='the attribute type'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='tree' type='xmlEnumerationPtr *' info='the enumeration tree built while parsing'/>
     </function>
-    <function name='xmlParseBalancedChunkMemory' file='parser'>
+    <function name='xmlParseBalancedChunkMemory' file='parser' module='parser'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>Parse a well-balanced chunk of an XML document called by the parser The allowed sequence for the Well Balanced Chunk is the one defined by the content production in the XML grammar:  [43] content ::= (element | CharData | Reference | CDSect | PI | Comment)*</info>
       <return type='int' info='0 if the chunk is well balanced, -1 in case of args problem and the parser error code otherwise'/>
@@ -11075,7 +11095,7 @@
       <arg name='string' type='const xmlChar *' info='the input string in UTF8 or ISO-Latin (zero terminated)'/>
       <arg name='lst' type='xmlNodePtr *' info='the return value for the set of parsed nodes'/>
     </function>
-    <function name='xmlParseBalancedChunkMemoryRecover' file='parser'>
+    <function name='xmlParseBalancedChunkMemoryRecover' file='parser' module='parser'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>Parse a well-balanced chunk of an XML document called by the parser The allowed sequence for the Well Balanced Chunk is the one defined by the content production in the XML grammar:  [43] content ::= (element | CharData | Reference | CDSect | PI | Comment)*</info>
       <return type='int' info='0 if the chunk is well balanced, -1 in case of args problem and the parser error code otherwise  In case recover is set to 1, the nodelist will not be empty even if the parsed chunk is not well balanced.'/>
@@ -11087,34 +11107,34 @@
       <arg name='lst' type='xmlNodePtr *' info='the return value for the set of parsed nodes'/>
       <arg name='recover' type='int' info='return nodes even if the data is broken (use 0)'/>
     </function>
-    <function name='xmlParseCDSect' file='parserInternals'>
+    <function name='xmlParseCDSect' file='parserInternals' module='parser'>
       <info>Parse escaped pure raw content.  [18] CDSect ::= CDStart CData CDEnd  [19] CDStart ::= &apos;&lt;![CDATA[&apos;  [20] Data ::= (Char* - (Char* &apos;]]&gt;&apos; Char*))  [21] CDEnd ::= &apos;]]&gt;&apos;</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseCatalogFile' file='catalog'>
+    <function name='xmlParseCatalogFile' file='catalog' module='catalog'>
       <cond>defined(LIBXML_CATALOG_ENABLED)</cond>
       <info>parse an XML file and build a tree. It&apos;s like xmlParseFile() except it bypass all catalog lookups.</info>
       <return type='xmlDocPtr' info='the resulting document tree or NULL in case of error'/>
       <arg name='filename' type='const char *' info='the filename'/>
     </function>
-    <function name='xmlParseCharData' file='parserInternals'>
+    <function name='xmlParseCharData' file='parserInternals' module='parser'>
       <info>parse a CharData section. if we are within a CDATA section &apos;]]&gt;&apos; marks an end of section.  The right angle bracket (&gt;) may be represented using the string &quot;&amp;gt;&quot;, and must, for compatibility, be escaped using &quot;&amp;gt;&quot; or a character reference when it appears in the string &quot;]]&gt;&quot; in content, when that string is not marking the end of a CDATA section.  [14] CharData ::= [^&lt;&amp;]* - ([^&lt;&amp;]* &apos;]]&gt;&apos; [^&lt;&amp;]*)</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='cdata' type='int' info='int indicating whether we are within a CDATA section'/>
     </function>
-    <function name='xmlParseCharEncoding' file='encoding'>
+    <function name='xmlParseCharEncoding' file='encoding' module='encoding'>
       <info>Compare the string to the encoding schemes already known. Note that the comparison is case insensitive accordingly to the section [XML] 4.3.3 Character Encoding in Entities.</info>
       <return type='xmlCharEncoding' info='one of the XML_CHAR_ENCODING_... values or XML_CHAR_ENCODING_NONE if not recognized.'/>
       <arg name='name' type='const char *' info='the encoding name as parsed, in UTF-8 format (ASCII actually)'/>
     </function>
-    <function name='xmlParseCharRef' file='parserInternals'>
+    <function name='xmlParseCharRef' file='parserInternals' module='parser'>
       <info>parse Reference declarations  [66] CharRef ::= &apos;&amp;#&apos; [0-9]+ &apos;;&apos; | &apos;&amp;#x&apos; [0-9a-fA-F]+ &apos;;&apos;  [ WFC: Legal Character ] Characters referred to using character references must match the production for Char.</info>
       <return type='int' info='the value parsed (as an int), 0 in case of error'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseChunk' file='parser'>
+    <function name='xmlParseChunk' file='parser' module='parser'>
       <cond>defined(LIBXML_PUSH_ENABLED)</cond>
       <info>Parse a Chunk of memory</info>
       <return type='int' info='zero if no error, the xmlParserErrors otherwise.'/>
@@ -11123,17 +11143,17 @@
       <arg name='size' type='int' info='the size in byte of the chunk'/>
       <arg name='terminate' type='int' info='last chunk indicator'/>
     </function>
-    <function name='xmlParseComment' file='parserInternals'>
+    <function name='xmlParseComment' file='parserInternals' module='parser'>
       <info>Skip an XML (SGML) comment &lt;!-- .... --&gt; The spec says that &quot;For compatibility, the string &quot;--&quot; (double-hyphen) must not occur within comments. &quot;  [15] Comment ::= &apos;&lt;!--&apos; ((Char - &apos;-&apos;) | (&apos;-&apos; (Char - &apos;-&apos;)))* &apos;--&gt;&apos;</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseContent' file='parserInternals'>
+    <function name='xmlParseContent' file='parserInternals' module='parser'>
       <info>Parse a content:  [43] content ::= (element | CharData | Reference | CDSect | PI | Comment)*</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseCtxtExternalEntity' file='parser'>
+    <function name='xmlParseCtxtExternalEntity' file='parser' module='parser'>
       <info>Parse an external general entity within an existing parsing context An external general parsed entity is well-formed if it matches the production labeled extParsedEnt.  [78] extParsedEnt ::= TextDecl? content</info>
       <return type='int' info='0 if the entity is well formed, -1 in case of args problem and the parser error code otherwise'/>
       <arg name='ctx' type='xmlParserCtxtPtr' info='the existing parsing context'/>
@@ -11141,119 +11161,119 @@
       <arg name='ID' type='const xmlChar *' info='the System ID for the entity to load'/>
       <arg name='lst' type='xmlNodePtr *' info='the return value for the set of parsed nodes'/>
     </function>
-    <function name='xmlParseDTD' file='parser'>
+    <function name='xmlParseDTD' file='parser' module='parser'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Load and parse an external subset.</info>
       <return type='xmlDtdPtr' info='the resulting xmlDtdPtr or NULL in case of error.'/>
       <arg name='ExternalID' type='const xmlChar *' info='a NAME* containing the External ID of the DTD'/>
       <arg name='SystemID' type='const xmlChar *' info='a NAME* containing the URL to the DTD'/>
     </function>
-    <function name='xmlParseDefaultDecl' file='parserInternals'>
+    <function name='xmlParseDefaultDecl' file='parserInternals' module='parser'>
       <info>Parse an attribute default declaration  [60] DefaultDecl ::= &apos;#REQUIRED&apos; | &apos;#IMPLIED&apos; | ((&apos;#FIXED&apos; S)? AttValue)  [ VC: Required Attribute ] if the default declaration is the keyword #REQUIRED, then the attribute must be specified for all elements of the type in the attribute-list declaration.  [ VC: Attribute Default Legal ] The declared default value must meet the lexical constraints of the declared attribute type c.f. xmlValidateAttributeDecl()  [ VC: Fixed Attribute Default ] if an attribute has a default value declared with the #FIXED keyword, instances of that attribute must match the default value.  [ WFC: No &lt; in Attribute Values ] handled in xmlParseAttValue()</info>
       <return type='int' info='XML_ATTRIBUTE_NONE, XML_ATTRIBUTE_REQUIRED, XML_ATTRIBUTE_IMPLIED or XML_ATTRIBUTE_FIXED.'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='value' type='xmlChar **' info='Receive a possible fixed default value for the attribute'/>
     </function>
-    <function name='xmlParseDoc' file='parser'>
+    <function name='xmlParseDoc' file='parser' module='parser'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>parse an XML in-memory document and build a tree.</info>
       <return type='xmlDocPtr' info='the resulting document tree'/>
-      <arg name='cur' type='xmlChar *' info='a pointer to an array of xmlChar'/>
+      <arg name='cur' type='const xmlChar *' info='a pointer to an array of xmlChar'/>
     </function>
-    <function name='xmlParseDocTypeDecl' file='parserInternals'>
+    <function name='xmlParseDocTypeDecl' file='parserInternals' module='parser'>
       <info>parse a DOCTYPE declaration  [28] doctypedecl ::= &apos;&lt;!DOCTYPE&apos; S Name (S ExternalID)? S? (&apos;[&apos; (markupdecl | PEReference | S)* &apos;]&apos; S?)? &apos;&gt;&apos;  [ VC: Root Element Type ] The Name in the document type declaration must match the element type of the root element.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseDocument' file='parser'>
+    <function name='xmlParseDocument' file='parser' module='parser'>
       <info>parse an XML document (and build a tree if using the standard SAX interface).  [1] document ::= prolog element Misc*  [22] prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?</info>
       <return type='int' info='0, -1 in case of error. the parser context is augmented as a result of the parsing.'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseElement' file='parserInternals'>
+    <function name='xmlParseElement' file='parserInternals' module='parser'>
       <info>parse an XML element, this is highly recursive  [39] element ::= EmptyElemTag | STag content ETag  [ WFC: Element Type Match ] The Name in an element&apos;s end-tag must match the element type in the start-tag.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseElementChildrenContentDecl' file='parserInternals'>
+    <function name='xmlParseElementChildrenContentDecl' file='parserInternals' module='parser'>
       <info>parse the declaration for a Mixed Element content The leading &apos;(&apos; and spaces have been skipped in xmlParseElementContentDecl   [47] children ::= (choice | seq) (&apos;?&apos; | &apos;*&apos; | &apos;+&apos;)?  [48] cp ::= (Name | choice | seq) (&apos;?&apos; | &apos;*&apos; | &apos;+&apos;)?  [49] choice ::= &apos;(&apos; S? cp ( S? &apos;|&apos; S? cp )* S? &apos;)&apos;  [50] seq ::= &apos;(&apos; S? cp ( S? &apos;,&apos; S? cp )* S? &apos;)&apos;  [ VC: Proper Group/PE Nesting ] applies to [49] and [50] TODO Parameter-entity replacement text must be properly nested with parenthesized groups. That is to say, if either of the opening or closing parentheses in a choice, seq, or Mixed construct is contained in the replacement text for a parameter entity, both must be contained in the same replacement text. For interoperability, if a parameter-entity reference appears in a choice, seq, or Mixed construct, its replacement text should not be empty, and neither the first nor last non-blank character of the replacement text should be a connector (| or ,).</info>
       <return type='xmlElementContentPtr' info='the tree of xmlElementContentPtr describing the element hierarchy.'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='inputchk' type='int' info='the input used for the current entity, needed for boundary checks'/>
     </function>
-    <function name='xmlParseElementContentDecl' file='parserInternals'>
+    <function name='xmlParseElementContentDecl' file='parserInternals' module='parser'>
       <info>parse the declaration for an Element content either Mixed or Children, the cases EMPTY and ANY are handled directly in xmlParseElementDecl  [46] contentspec ::= &apos;EMPTY&apos; | &apos;ANY&apos; | Mixed | children</info>
       <return type='int' info='the type of element content XML_ELEMENT_TYPE_xxx'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='name' type='const xmlChar *' info='the name of the element being defined.'/>
       <arg name='result' type='xmlElementContentPtr *' info='the Element Content pointer will be stored here if any'/>
     </function>
-    <function name='xmlParseElementDecl' file='parserInternals'>
+    <function name='xmlParseElementDecl' file='parserInternals' module='parser'>
       <info>parse an Element declaration.  [45] elementdecl ::= &apos;&lt;!ELEMENT&apos; S Name S contentspec S? &apos;&gt;&apos;  [ VC: Unique Element Type Declaration ] No element type may be declared more than once</info>
       <return type='int' info='the type of the element, or -1 in case of error'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseElementMixedContentDecl' file='parserInternals'>
+    <function name='xmlParseElementMixedContentDecl' file='parserInternals' module='parser'>
       <info>parse the declaration for a Mixed Element content The leading &apos;(&apos; and spaces have been skipped in xmlParseElementContentDecl  [51] Mixed ::= &apos;(&apos; S? &apos;#PCDATA&apos; (S? &apos;|&apos; S? Name)* S? &apos;)*&apos; | &apos;(&apos; S? &apos;#PCDATA&apos; S? &apos;)&apos;  [ VC: Proper Group/PE Nesting ] applies to [51] too (see [49])  [ VC: No Duplicate Types ] The same name must not appear more than once in a single mixed-content declaration.</info>
       <return type='xmlElementContentPtr' info='the list of the xmlElementContentPtr describing the element choices'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='inputchk' type='int' info='the input used for the current entity, needed for boundary checks'/>
     </function>
-    <function name='xmlParseEncName' file='parserInternals'>
+    <function name='xmlParseEncName' file='parserInternals' module='parser'>
       <info>parse the XML encoding name  [81] EncName ::= [A-Za-z] ([A-Za-z0-9._] | &apos;-&apos;)*</info>
       <return type='xmlChar *' info='the encoding name value or NULL'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseEncodingDecl' file='parserInternals'>
+    <function name='xmlParseEncodingDecl' file='parserInternals' module='parser'>
       <info>parse the XML encoding declaration  [80] EncodingDecl ::= S &apos;encoding&apos; Eq (&apos;&quot;&apos; EncName &apos;&quot;&apos; |  &quot;&apos;&quot; EncName &quot;&apos;&quot;)  this setups the conversion filters.</info>
       <return type='const xmlChar *' info='the encoding value or NULL'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseEndTag' file='parserInternals'>
+    <function name='xmlParseEndTag' file='parserInternals' module='parser'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>parse an end of tag  [42] ETag ::= &apos;&lt;/&apos; Name S? &apos;&gt;&apos;  With namespace  [NS 9] ETag ::= &apos;&lt;/&apos; QName S? &apos;&gt;&apos;</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseEntity' file='parser'>
+    <function name='xmlParseEntity' file='parser' module='parser'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>parse an XML external entity out of context and build a tree.  [78] extParsedEnt ::= TextDecl? content  This correspond to a &quot;Well Balanced&quot; chunk</info>
       <return type='xmlDocPtr' info='the resulting document tree'/>
       <arg name='filename' type='const char *' info='the filename'/>
     </function>
-    <function name='xmlParseEntityDecl' file='parserInternals'>
+    <function name='xmlParseEntityDecl' file='parserInternals' module='parser'>
       <info>parse &lt;!ENTITY declarations  [70] EntityDecl ::= GEDecl | PEDecl  [71] GEDecl ::= &apos;&lt;!ENTITY&apos; S Name S EntityDef S? &apos;&gt;&apos;  [72] PEDecl ::= &apos;&lt;!ENTITY&apos; S &apos;%&apos; S Name S PEDef S? &apos;&gt;&apos;  [73] EntityDef ::= EntityValue | (ExternalID NDataDecl?)  [74] PEDef ::= EntityValue | ExternalID  [76] NDataDecl ::= S &apos;NDATA&apos; S Name  [ VC: Notation Declared ] The Name must match the declared name of a notation.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseEntityRef' file='parserInternals'>
+    <function name='xmlParseEntityRef' file='parserInternals' module='parser'>
       <info>parse ENTITY references declarations  [68] EntityRef ::= &apos;&amp;&apos; Name &apos;;&apos;  [ WFC: Entity Declared ] In a document without any DTD, a document with only an internal DTD subset which contains no parameter entity references, or a document with &quot;standalone=&apos;yes&apos;&quot;, the Name given in the entity reference must match that in an entity declaration, except that well-formed documents need not declare any of the following entities: amp, lt, gt, apos, quot.  The declaration of a parameter entity must precede any reference to it.  Similarly, the declaration of a general entity must precede any reference to it which appears in a default value in an attribute-list declaration. Note that if entities are declared in the external subset or in external parameter entities, a non-validating processor is not obligated to read and process their declarations; for such documents, the rule that an entity must be declared is a well-formedness constraint only if standalone=&apos;yes&apos;.  [ WFC: Parsed Entity ] An entity reference must not contain the name of an unparsed entity</info>
       <return type='xmlEntityPtr' info='the xmlEntityPtr if found, or NULL otherwise.'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseEntityValue' file='parserInternals'>
+    <function name='xmlParseEntityValue' file='parserInternals' module='parser'>
       <info>parse a value for ENTITY declarations  [9] EntityValue ::= &apos;&quot;&apos; ([^%&amp;&quot;] | PEReference | Reference)* &apos;&quot;&apos; | &quot;&apos;&quot; ([^%&amp;&apos;] | PEReference | Reference)* &quot;&apos;&quot;</info>
       <return type='xmlChar *' info='the EntityValue parsed with reference substituted or NULL'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='orig' type='xmlChar **' info='if non-NULL store a copy of the original entity value'/>
     </function>
-    <function name='xmlParseEnumeratedType' file='parserInternals'>
+    <function name='xmlParseEnumeratedType' file='parserInternals' module='parser'>
       <info>parse an Enumerated attribute type.  [57] EnumeratedType ::= NotationType | Enumeration  [58] NotationType ::= &apos;NOTATION&apos; S &apos;(&apos; S? Name (S? &apos;|&apos; S? Name)* S? &apos;)&apos;</info>
       <return type='int' info='XML_ATTRIBUTE_ENUMERATION or XML_ATTRIBUTE_NOTATION'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='tree' type='xmlEnumerationPtr *' info='the enumeration tree built while parsing'/>
     </function>
-    <function name='xmlParseEnumerationType' file='parserInternals'>
+    <function name='xmlParseEnumerationType' file='parserInternals' module='parser'>
       <info>parse an Enumeration attribute type.  [59] Enumeration ::= &apos;(&apos; S? Nmtoken (S? &apos;|&apos; S? Nmtoken)* S? &apos;)&apos;  [ VC: Enumeration ] Values of this type must match one of the Nmtoken tokens in the declaration</info>
       <return type='xmlEnumerationPtr' info='the enumeration attribute tree built while parsing'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseExtParsedEnt' file='parser'>
+    <function name='xmlParseExtParsedEnt' file='parser' module='parser'>
       <info>parse a general parsed entity An external general parsed entity is well-formed if it matches the production labeled extParsedEnt.  [78] extParsedEnt ::= TextDecl? content</info>
       <return type='int' info='0, -1 in case of error. the parser context is augmented as a result of the parsing.'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseExternalEntity' file='parser'>
+    <function name='xmlParseExternalEntity' file='parser' module='parser'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>Parse an external general entity An external general parsed entity is well-formed if it matches the production labeled extParsedEnt.  [78] extParsedEnt ::= TextDecl? content</info>
       <return type='int' info='0 if the entity is well formed, -1 in case of args problem and the parser error code otherwise'/>
@@ -11265,27 +11285,27 @@
       <arg name='ID' type='const xmlChar *' info='the System ID for the entity to load'/>
       <arg name='lst' type='xmlNodePtr *' info='the return value for the set of parsed nodes'/>
     </function>
-    <function name='xmlParseExternalID' file='parserInternals'>
+    <function name='xmlParseExternalID' file='parserInternals' module='parser'>
       <info>Parse an External ID or a Public ID  NOTE: Productions [75] and [83] interact badly since [75] can generate &apos;PUBLIC&apos; S PubidLiteral S SystemLiteral  [75] ExternalID ::= &apos;SYSTEM&apos; S SystemLiteral | &apos;PUBLIC&apos; S PubidLiteral S SystemLiteral  [83] PublicID ::= &apos;PUBLIC&apos; S PubidLiteral</info>
       <return type='xmlChar *' info='the function returns SystemLiteral and in the second case publicID receives PubidLiteral, is strict is off it is possible to return NULL and have publicID set.'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='publicID' type='xmlChar **' info='a xmlChar** receiving PubidLiteral'/>
       <arg name='strict' type='int' info='indicate whether we should restrict parsing to only production [75], see NOTE below'/>
     </function>
-    <function name='xmlParseExternalSubset' file='parserInternals'>
+    <function name='xmlParseExternalSubset' file='parserInternals' module='parser'>
       <info>parse Markup declarations from an external subset  [30] extSubset ::= textDecl? extSubsetDecl  [31] extSubsetDecl ::= (markupdecl | conditionalSect | PEReference | S) *</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='ExternalID' type='const xmlChar *' info='the external identifier'/>
       <arg name='SystemID' type='const xmlChar *' info='the system identifier (or URL)'/>
     </function>
-    <function name='xmlParseFile' file='parser'>
+    <function name='xmlParseFile' file='parser' module='parser'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>parse an XML file and build a tree. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time.</info>
       <return type='xmlDocPtr' info='the resulting document tree if the file was wellformed, NULL otherwise.'/>
       <arg name='filename' type='const char *' info='the filename'/>
     </function>
-    <function name='xmlParseInNodeContext' file='parser'>
+    <function name='xmlParseInNodeContext' file='parser' module='parser'>
       <info>Parse a well-balanced chunk of an XML document within the context (DTD, namespaces, etc ...) of the given node.  The allowed sequence for the data is a Well Balanced Chunk defined by the content production in the XML grammar:  [43] content ::= (element | CharData | Reference | CDSect | PI | Comment)*</info>
       <return type='xmlParserErrors' info='XML_ERR_OK if the chunk is well balanced, and the parser error code otherwise'/>
       <arg name='node' type='xmlNodePtr' info='the context node'/>
@@ -11294,198 +11314,198 @@
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
       <arg name='lst' type='xmlNodePtr *' info='the return value for the set of parsed nodes'/>
     </function>
-    <function name='xmlParseMarkupDecl' file='parserInternals'>
+    <function name='xmlParseMarkupDecl' file='parserInternals' module='parser'>
       <info>parse Markup declarations  [29] markupdecl ::= elementdecl | AttlistDecl | EntityDecl | NotationDecl | PI | Comment  [ VC: Proper Declaration/PE Nesting ] Parameter-entity replacement text must be properly nested with markup declarations. That is to say, if either the first character or the last character of a markup declaration (markupdecl above) is contained in the replacement text for a parameter-entity reference, both must be contained in the same replacement text.  [ WFC: PEs in Internal Subset ] In the internal DTD subset, parameter-entity references can occur only where markup declarations can occur, not within markup declarations. (This does not apply to references that occur in external parameter entities or to the external subset.)</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseMemory' file='parser'>
+    <function name='xmlParseMemory' file='parser' module='parser'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>parse an XML in-memory block and build a tree.</info>
       <return type='xmlDocPtr' info='the resulting document tree'/>
       <arg name='buffer' type='const char *' info='an pointer to a char array'/>
       <arg name='size' type='int' info='the size of the array'/>
     </function>
-    <function name='xmlParseMisc' file='parserInternals'>
+    <function name='xmlParseMisc' file='parserInternals' module='parser'>
       <info>parse an XML Misc* optional field.  [27] Misc ::= Comment | PI |  S</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseName' file='parserInternals'>
+    <function name='xmlParseName' file='parserInternals' module='parser'>
       <info>parse an XML name.  [4] NameChar ::= Letter | Digit | &apos;.&apos; | &apos;-&apos; | &apos;_&apos; | &apos;:&apos; | CombiningChar | Extender  [5] Name ::= (Letter | &apos;_&apos; | &apos;:&apos;) (NameChar)*  [6] Names ::= Name (#x20 Name)*</info>
       <return type='const xmlChar *' info='the Name parsed or NULL'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseNamespace' file='parserInternals'>
+    <function name='xmlParseNamespace' file='parserInternals' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>xmlParseNamespace: parse specific PI &apos;&lt;?namespace ...&apos; constructs.  This is what the older xml-name Working Draft specified, a bunch of other stuff may still rely on it, so support is still here as if it was declared on the root of the Tree:-(  TODO: remove from library  To be removed at next drop of binary compatibility</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseNmtoken' file='parserInternals'>
+    <function name='xmlParseNmtoken' file='parserInternals' module='parser'>
       <info>parse an XML Nmtoken.  [7] Nmtoken ::= (NameChar)+  [8] Nmtokens ::= Nmtoken (#x20 Nmtoken)*</info>
       <return type='xmlChar *' info='the Nmtoken parsed or NULL'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseNotationDecl' file='parserInternals'>
+    <function name='xmlParseNotationDecl' file='parserInternals' module='parser'>
       <info>parse a notation declaration  [82] NotationDecl ::= &apos;&lt;!NOTATION&apos; S Name S (ExternalID |  PublicID) S? &apos;&gt;&apos;  Hence there is actually 3 choices: &apos;PUBLIC&apos; S PubidLiteral &apos;PUBLIC&apos; S PubidLiteral S SystemLiteral and &apos;SYSTEM&apos; S SystemLiteral  See the NOTE on xmlParseExternalID().</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseNotationType' file='parserInternals'>
+    <function name='xmlParseNotationType' file='parserInternals' module='parser'>
       <info>parse an Notation attribute type.  Note: the leading &apos;NOTATION&apos; S part has already being parsed...  [58] NotationType ::= &apos;NOTATION&apos; S &apos;(&apos; S? Name (S? &apos;|&apos; S? Name)* S? &apos;)&apos;  [ VC: Notation Attributes ] Values of this type must match one of the notation names included in the declaration; all notation names in the declaration must be declared.</info>
       <return type='xmlEnumerationPtr' info='the notation attribute tree built while parsing'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParsePEReference' file='parserInternals'>
+    <function name='xmlParsePEReference' file='parserInternals' module='parser'>
       <info>parse PEReference declarations The entity content is handled directly by pushing it&apos;s content as a new input stream.  [69] PEReference ::= &apos;%&apos; Name &apos;;&apos;  [ WFC: No Recursion ] A parsed entity must not contain a recursive reference to itself, either directly or indirectly.  [ WFC: Entity Declared ] In a document without any DTD, a document with only an internal DTD subset which contains no parameter entity references, or a document with &quot;standalone=&apos;yes&apos;&quot;, ...  ... The declaration of a parameter entity must precede any reference to it...  [ VC: Entity Declared ] In a document with an external subset or external parameter entities with &quot;standalone=&apos;no&apos;&quot;, ...  ... The declaration of a parameter entity must precede any reference to it...  [ WFC: In DTD ] Parameter-entity references may only appear in the DTD. NOTE: misleading but this is handled.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParsePI' file='parserInternals'>
+    <function name='xmlParsePI' file='parserInternals' module='parser'>
       <info>parse an XML Processing Instruction.  [16] PI ::= &apos;&lt;?&apos; PITarget (S (Char* - (Char* &apos;?&gt;&apos; Char*)))? &apos;?&gt;&apos;  The processing is transfered to SAX once parsed.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParsePITarget' file='parserInternals'>
+    <function name='xmlParsePITarget' file='parserInternals' module='parser'>
       <info>parse the name of a PI  [17] PITarget ::= Name - ((&apos;X&apos; | &apos;x&apos;) (&apos;M&apos; | &apos;m&apos;) (&apos;L&apos; | &apos;l&apos;))</info>
       <return type='const xmlChar *' info='the PITarget name or NULL'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParsePubidLiteral' file='parserInternals'>
+    <function name='xmlParsePubidLiteral' file='parserInternals' module='parser'>
       <info>parse an XML public literal  [12] PubidLiteral ::= &apos;&quot;&apos; PubidChar* &apos;&quot;&apos; | &quot;&apos;&quot; (PubidChar - &quot;&apos;&quot;)* &quot;&apos;&quot;</info>
       <return type='xmlChar *' info='the PubidLiteral parsed or NULL.'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseQuotedString' file='parserInternals'>
+    <function name='xmlParseQuotedString' file='parserInternals' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Parse and return a string between quotes or doublequotes  TODO: Deprecated, to  be removed at next drop of binary compatibility</info>
       <return type='xmlChar *' info='the string parser or NULL.'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseReference' file='parserInternals'>
+    <function name='xmlParseReference' file='parserInternals' module='parser'>
       <info>parse and handle entity references in content, depending on the SAX interface, this may end-up in a call to character() if this is a CharRef, a predefined entity, if there is no reference() callback. or if the parser was asked to switch to that mode.  [67] Reference ::= EntityRef | CharRef</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseSDDecl' file='parserInternals'>
+    <function name='xmlParseSDDecl' file='parserInternals' module='parser'>
       <info>parse the XML standalone declaration  [32] SDDecl ::= S &apos;standalone&apos; Eq ((&quot;&apos;&quot; (&apos;yes&apos; | &apos;no&apos;) &quot;&apos;&quot;) | (&apos;&quot;&apos; (&apos;yes&apos; | &apos;no&apos;)&apos;&quot;&apos;))  [ VC: Standalone Document Declaration ] TODO The standalone document declaration must have the value &quot;no&quot; if any external markup declarations contain declarations of: - attributes with default values, if elements to which these attributes apply appear in the document without specifications of values for these attributes, or - entities (other than amp, lt, gt, apos, quot), if references to those entities appear in the document, or - attributes with values subject to normalization, where the attribute appears in the document with a value which will change as a result of normalization, or - element types with element content, if white space occurs directly within any instance of those types.</info>
       <return type='int' info='1 if standalone, 0 otherwise'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseStartTag' file='parserInternals'>
+    <function name='xmlParseStartTag' file='parserInternals' module='parser'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>parse a start of tag either for rule element or EmptyElement. In both case we don&apos;t parse the tag closing chars.  [40] STag ::= &apos;&lt;&apos; Name (S Attribute)* S? &apos;&gt;&apos;  [ WFC: Unique Att Spec ] No attribute name may appear more than once in the same start-tag or empty-element tag.  [44] EmptyElemTag ::= &apos;&lt;&apos; Name (S Attribute)* S? &apos;/&gt;&apos;  [ WFC: Unique Att Spec ] No attribute name may appear more than once in the same start-tag or empty-element tag.  With namespace:  [NS 8] STag ::= &apos;&lt;&apos; QName (S Attribute)* S? &apos;&gt;&apos;  [NS 10] EmptyElement ::= &apos;&lt;&apos; QName (S Attribute)* S? &apos;/&gt;&apos;</info>
       <return type='const xmlChar *' info='the element name parsed'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseSystemLiteral' file='parserInternals'>
+    <function name='xmlParseSystemLiteral' file='parserInternals' module='parser'>
       <info>parse an XML Literal  [11] SystemLiteral ::= (&apos;&quot;&apos; [^&quot;]* &apos;&quot;&apos;) | (&quot;&apos;&quot; [^&apos;]* &quot;&apos;&quot;)</info>
       <return type='xmlChar *' info='the SystemLiteral parsed or NULL'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseTextDecl' file='parserInternals'>
+    <function name='xmlParseTextDecl' file='parserInternals' module='parser'>
       <info>parse an XML declaration header for external entities  [77] TextDecl ::= &apos;&lt;?xml&apos; VersionInfo? EncodingDecl S? &apos;?&gt;&apos;  Question: Seems that EncodingDecl is mandatory ? Is that a typo ?</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseURI' file='uri'>
+    <function name='xmlParseURI' file='uri' module='uri'>
       <info>Parse an URI  URI-reference = [ absoluteURI | relativeURI ] [ &quot;#&quot; fragment ]</info>
       <return type='xmlURIPtr' info='a newly built xmlURIPtr or NULL in case of error'/>
       <arg name='str' type='const char *' info='the URI string to analyze'/>
     </function>
-    <function name='xmlParseURIReference' file='uri'>
+    <function name='xmlParseURIReference' file='uri' module='uri'>
       <info>Parse an URI reference string and fills in the appropriate fields of the @uri structure  URI-reference = [ absoluteURI | relativeURI ] [ &quot;#&quot; fragment ]</info>
       <return type='int' info='0 or the error code'/>
       <arg name='uri' type='xmlURIPtr' info='pointer to an URI structure'/>
       <arg name='str' type='const char *' info='the string to analyze'/>
     </function>
-    <function name='xmlParseVersionInfo' file='parserInternals'>
+    <function name='xmlParseVersionInfo' file='parserInternals' module='parser'>
       <info>parse the XML version.  [24] VersionInfo ::= S &apos;version&apos; Eq (&apos; VersionNum &apos; | &quot; VersionNum &quot;)  [25] Eq ::= S? &apos;=&apos; S?</info>
       <return type='xmlChar *' info='the version string, e.g. &quot;1.0&quot;'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseVersionNum' file='parserInternals'>
+    <function name='xmlParseVersionNum' file='parserInternals' module='parser'>
       <info>parse the XML version value.  [26] VersionNum ::= ([a-zA-Z0-9_.:] | &apos;-&apos;)+</info>
       <return type='xmlChar *' info='the string giving the XML version number, or NULL'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParseXMLDecl' file='parserInternals'>
+    <function name='xmlParseXMLDecl' file='parserInternals' module='parser'>
       <info>parse an XML declaration header  [23] XMLDecl ::= &apos;&lt;?xml&apos; VersionInfo EncodingDecl? SDDecl? S? &apos;?&gt;&apos;</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlParserAddNodeInfo' file='parser'>
+    <function name='xmlParserAddNodeInfo' file='parser' module='parserInternals'>
       <info>Insert node info record into the sorted sequence</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='info' type='const xmlParserNodeInfoPtr' info='a node info sequence pointer'/>
     </function>
-    <function name='xmlParserError' file='xmlerror'>
+    <function name='xmlParserError' file='xmlerror' module='error'>
       <info>Display and format an error messages, gives file, line, position and extra parameters.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='an XML parser context'/>
       <arg name='msg' type='const char *' info='the message to display/transmit'/>
       <arg name='...' type='...' info='extra parameters for the message display'/>
     </function>
-    <function name='xmlParserFindNodeInfo' file='parser'>
+    <function name='xmlParserFindNodeInfo' file='parser' module='parserInternals'>
       <info>Find the parser node info struct for a given node</info>
       <return type='const xmlParserNodeInfo *' info='an xmlParserNodeInfo block pointer or NULL'/>
       <arg name='ctx' type='const xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='node' type='const xmlNodePtr' info='an XML node within the tree'/>
     </function>
-    <function name='xmlParserFindNodeInfoIndex' file='parser'>
+    <function name='xmlParserFindNodeInfoIndex' file='parser' module='parserInternals'>
       <info>xmlParserFindNodeInfoIndex : Find the index that the info record for the given node is or should be at in a sorted sequence</info>
       <return type='unsigned long' info='a long indicating the position of the record'/>
       <arg name='seq' type='const xmlParserNodeInfoSeqPtr' info='a node info sequence pointer'/>
       <arg name='node' type='const xmlNodePtr' info='an XML node pointer'/>
     </function>
-    <function name='xmlParserGetDirectory' file='xmlIO'>
+    <function name='xmlParserGetDirectory' file='xmlIO' module='xmlIO'>
       <info>lookup the directory for that file</info>
       <return type='char *' info='a new allocated string containing the directory, or NULL.'/>
       <arg name='filename' type='const char *' info='the path to a file'/>
     </function>
-    <function name='xmlParserHandlePEReference' file='parserInternals'>
+    <function name='xmlParserHandlePEReference' file='parserInternals' module='parser'>
       <info>[69] PEReference ::= &apos;%&apos; Name &apos;;&apos;  [ WFC: No Recursion ] A parsed entity must not contain a recursive reference to itself, either directly or indirectly.  [ WFC: Entity Declared ] In a document without any DTD, a document with only an internal DTD subset which contains no parameter entity references, or a document with &quot;standalone=&apos;yes&apos;&quot;, ...  ... The declaration of a parameter entity must precede any reference to it...  [ VC: Entity Declared ] In a document with an external subset or external parameter entities with &quot;standalone=&apos;no&apos;&quot;, ...  ... The declaration of a parameter entity must precede any reference to it...  [ WFC: In DTD ] Parameter-entity references may only appear in the DTD. NOTE: misleading but this is handled.  A PEReference may have been detected in the current input stream the handling is done accordingly to http://www.w3.org/TR/REC-xml#entproc i.e. - Included in literal in entity values - Included as Parameter Entity reference within DTDs</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
     </function>
-    <function name='xmlParserHandleReference' file='parserInternals'>
+    <function name='xmlParserHandleReference' file='parserInternals' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>TODO: Remove, now deprecated ... the test is done directly in the content parsing routines.  [67] Reference ::= EntityRef | CharRef  [68] EntityRef ::= &apos;&amp;&apos; Name &apos;;&apos;  [ WFC: Entity Declared ] the Name given in the entity reference must match that in an entity declaration, except that well-formed documents need not declare any of the following entities: amp, lt, gt, apos, quot.  [ WFC: Parsed Entity ] An entity reference must not contain the name of an unparsed entity  [66] CharRef ::= &apos;&amp;#&apos; [0-9]+ &apos;;&apos; | &apos;&amp;#x&apos; [0-9a-fA-F]+ &apos;;&apos;  A PEReference may have been detected in the current input stream the handling is done accordingly to http://www.w3.org/TR/REC-xml#entproc</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
     </function>
-    <function name='xmlParserInputBufferCreateFd' file='xmlIO'>
+    <function name='xmlParserInputBufferCreateFd' file='xmlIO' module='xmlIO'>
       <info>Create a buffered parser input for the progressive parsing for the input from a file descriptor</info>
       <return type='xmlParserInputBufferPtr' info='the new parser input or NULL'/>
       <arg name='fd' type='int' info='a file descriptor number'/>
       <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known'/>
     </function>
-    <function name='xmlParserInputBufferCreateFile' file='xmlIO'>
+    <function name='xmlParserInputBufferCreateFile' file='xmlIO' module='xmlIO'>
       <info>Create a buffered parser input for the progressive parsing of a FILE * buffered C I/O</info>
       <return type='xmlParserInputBufferPtr' info='the new parser input or NULL'/>
       <arg name='file' type='FILE *' info='a FILE*'/>
       <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known'/>
     </function>
-    <function name='xmlParserInputBufferCreateFilename' file='xmlIO'>
+    <function name='xmlParserInputBufferCreateFilename' file='xmlIO' module='xmlIO'>
       <info>Create a buffered parser input for the progressive parsing of a file If filename is &quot;-&apos; then we use stdin as the input. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time. Do an encoding check if enc == XML_CHAR_ENCODING_NONE</info>
       <return type='xmlParserInputBufferPtr' info='the new parser input or NULL'/>
       <arg name='URI' type='const char *' info='a C string containing the URI or filename'/>
       <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known'/>
     </function>
-    <function name='xmlParserInputBufferCreateFilenameDefault' file='globals'>
+    <function name='xmlParserInputBufferCreateFilenameDefault' file='globals' module='xmlIO'>
       <info>Registers a callback for URI input file handling</info>
       <return type='xmlParserInputBufferCreateFilenameFunc' info='the old value of the registration function'/>
       <arg name='func' type='xmlParserInputBufferCreateFilenameFunc' info='function pointer to the new ParserInputBufferCreateFilenameFunc'/>
     </function>
-    <functype name='xmlParserInputBufferCreateFilenameFunc' file='globals'>
+    <functype name='xmlParserInputBufferCreateFilenameFunc' file='globals' module='globals'>
       <info></info>
       <return type='xmlParserInputBufferPtr' info=''/>
       <arg name='URI' type='const char *' info=''/>
       <arg name='enc' type='xmlCharEncoding' info=''/>
     </functype>
-    <function name='xmlParserInputBufferCreateIO' file='xmlIO'>
+    <function name='xmlParserInputBufferCreateIO' file='xmlIO' module='xmlIO'>
       <info>Create a buffered parser input for the progressive parsing for the input from an I/O handler</info>
       <return type='xmlParserInputBufferPtr' info='the new parser input or NULL'/>
       <arg name='ioread' type='xmlInputReadCallback' info='an I/O read function'/>
@@ -11493,124 +11513,124 @@
       <arg name='ioctx' type='void *' info='an I/O handler'/>
       <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known'/>
     </function>
-    <function name='xmlParserInputBufferCreateMem' file='xmlIO'>
+    <function name='xmlParserInputBufferCreateMem' file='xmlIO' module='xmlIO'>
       <info>Create a buffered parser input for the progressive parsing for the input from a memory area.</info>
       <return type='xmlParserInputBufferPtr' info='the new parser input or NULL'/>
       <arg name='mem' type='const char *' info='the memory input'/>
       <arg name='size' type='int' info='the length of the memory block'/>
       <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known'/>
     </function>
-    <function name='xmlParserInputBufferCreateStatic' file='xmlIO'>
+    <function name='xmlParserInputBufferCreateStatic' file='xmlIO' module='xmlIO'>
       <info>Create a buffered parser input for the progressive parsing for the input from an immutable memory area. This will not copy the memory area to the buffer, but the memory is expected to be available until the end of the parsing, this is useful for example when using mmap&apos;ed file.</info>
       <return type='xmlParserInputBufferPtr' info='the new parser input or NULL'/>
       <arg name='mem' type='const char *' info='the memory input'/>
       <arg name='size' type='int' info='the length of the memory block'/>
       <arg name='enc' type='xmlCharEncoding' info='the charset encoding if known'/>
     </function>
-    <function name='xmlParserInputBufferGrow' file='xmlIO'>
+    <function name='xmlParserInputBufferGrow' file='xmlIO' module='xmlIO'>
       <info>Grow up the content of the input buffer, the old data are preserved This routine handle the I18N transcoding to internal UTF-8 This routine is used when operating the parser in normal (pull) mode  TODO: one should be able to remove one extra copy by copying directly onto in-&gt;buffer or in-&gt;raw</info>
       <return type='int' info='the number of chars read and stored in the buffer, or -1 in case of error.'/>
       <arg name='in' type='xmlParserInputBufferPtr' info='a buffered parser input'/>
       <arg name='len' type='int' info='indicative value of the amount of chars to read'/>
     </function>
-    <function name='xmlParserInputBufferPush' file='xmlIO'>
+    <function name='xmlParserInputBufferPush' file='xmlIO' module='xmlIO'>
       <info>Push the content of the arry in the input buffer This routine handle the I18N transcoding to internal UTF-8 This is used when operating the parser in progressive (push) mode.</info>
       <return type='int' info='the number of chars read and stored in the buffer, or -1 in case of error.'/>
       <arg name='in' type='xmlParserInputBufferPtr' info='a buffered parser input'/>
       <arg name='len' type='int' info='the size in bytes of the array.'/>
       <arg name='buf' type='const char *' info='an char array'/>
     </function>
-    <function name='xmlParserInputBufferRead' file='xmlIO'>
+    <function name='xmlParserInputBufferRead' file='xmlIO' module='xmlIO'>
       <info>Refresh the content of the input buffer, the old data are considered consumed This routine handle the I18N transcoding to internal UTF-8</info>
       <return type='int' info='the number of chars read and stored in the buffer, or -1 in case of error.'/>
       <arg name='in' type='xmlParserInputBufferPtr' info='a buffered parser input'/>
       <arg name='len' type='int' info='indicative value of the amount of chars to read'/>
     </function>
-    <functype name='xmlParserInputDeallocate' file='parser'>
+    <functype name='xmlParserInputDeallocate' file='parser' module='parser'>
       <info>Callback for freeing some parser input allocations.</info>
       <return type='void'/>
       <arg name='str' type='xmlChar *' info='the string to deallocate'/>
     </functype>
-    <function name='xmlParserInputGrow' file='parser'>
+    <function name='xmlParserInputGrow' file='parser' module='parserInternals'>
       <info>This function increase the input for the parser. It tries to preserve pointers to the input buffer, and keep already read data</info>
       <return type='int' info='the number of xmlChars read, or -1 in case of error, 0 indicate the end of this entity'/>
       <arg name='in' type='xmlParserInputPtr' info='an XML parser input'/>
       <arg name='len' type='int' info='an indicative size for the lookahead'/>
     </function>
-    <function name='xmlParserInputRead' file='parser'>
+    <function name='xmlParserInputRead' file='parser' module='parserInternals'>
       <info>This function refresh the input for the parser. It doesn&apos;t try to preserve pointers to the input buffer, and discard already read data</info>
       <return type='int' info='the number of xmlChars read, or -1 in case of error, 0 indicate the end of this entity'/>
       <arg name='in' type='xmlParserInputPtr' info='an XML parser input'/>
       <arg name='len' type='int' info='an indicative size for the lookahead'/>
     </function>
-    <function name='xmlParserInputShrink' file='parserInternals'>
+    <function name='xmlParserInputShrink' file='parserInternals' module='parserInternals'>
       <info>This function removes used input for the parser.</info>
       <return type='void'/>
       <arg name='in' type='xmlParserInputPtr' info='an XML parser input'/>
     </function>
-    <function name='xmlParserPrintFileContext' file='xmlerror'>
+    <function name='xmlParserPrintFileContext' file='xmlerror' module='error'>
       <info>Displays current context within the input content for error tracking</info>
       <return type='void'/>
       <arg name='input' type='xmlParserInputPtr' info='an xmlParserInputPtr input'/>
     </function>
-    <function name='xmlParserPrintFileInfo' file='xmlerror'>
+    <function name='xmlParserPrintFileInfo' file='xmlerror' module='error'>
       <info>Displays the associated file and line informations for the current input</info>
       <return type='void'/>
       <arg name='input' type='xmlParserInputPtr' info='an xmlParserInputPtr input'/>
     </function>
-    <function name='xmlParserValidityError' file='xmlerror'>
+    <function name='xmlParserValidityError' file='xmlerror' module='error'>
       <info>Display and format an validity error messages, gives file, line, position and extra parameters.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='an XML parser context'/>
       <arg name='msg' type='const char *' info='the message to display/transmit'/>
       <arg name='...' type='...' info='extra parameters for the message display'/>
     </function>
-    <function name='xmlParserValidityWarning' file='xmlerror'>
+    <function name='xmlParserValidityWarning' file='xmlerror' module='error'>
       <info>Display and format a validity warning messages, gives file, line, position and extra parameters.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='an XML parser context'/>
       <arg name='msg' type='const char *' info='the message to display/transmit'/>
       <arg name='...' type='...' info='extra parameters for the message display'/>
     </function>
-    <function name='xmlParserWarning' file='xmlerror'>
+    <function name='xmlParserWarning' file='xmlerror' module='error'>
       <info>Display and format a warning messages, gives file, line, position and extra parameters.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='an XML parser context'/>
       <arg name='msg' type='const char *' info='the message to display/transmit'/>
       <arg name='...' type='...' info='extra parameters for the message display'/>
     </function>
-    <function name='xmlPatternFromRoot' file='pattern'>
+    <function name='xmlPatternFromRoot' file='pattern' module='pattern'>
       <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
       <info>Check if the pattern must be looked at from the root.</info>
       <return type='int' info='1 if true, 0 if false and -1 in case of error'/>
       <arg name='comp' type='xmlPatternPtr' info='the precompiled pattern'/>
     </function>
-    <function name='xmlPatternGetStreamCtxt' file='pattern'>
+    <function name='xmlPatternGetStreamCtxt' file='pattern' module='pattern'>
       <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
       <info>Get a streaming context for that pattern Use xmlFreeStreamCtxt to free the context.</info>
       <return type='xmlStreamCtxtPtr' info='a pointer to the context or NULL in case of failure'/>
       <arg name='comp' type='xmlPatternPtr' info='the precompiled pattern'/>
     </function>
-    <function name='xmlPatternMatch' file='pattern'>
+    <function name='xmlPatternMatch' file='pattern' module='pattern'>
       <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
       <info>Test wether the node matches the pattern</info>
       <return type='int' info='1 if it matches, 0 if it doesn&apos;t and -1 in case of failure'/>
       <arg name='comp' type='xmlPatternPtr' info='the precompiled pattern'/>
       <arg name='node' type='xmlNodePtr' info='a node'/>
     </function>
-    <function name='xmlPatternMaxDepth' file='pattern'>
+    <function name='xmlPatternMaxDepth' file='pattern' module='pattern'>
       <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
       <info>Check the maximum depth reachable by a pattern</info>
       <return type='int' info='-2 if no limit (using //), otherwise the depth, and -1 in case of error'/>
       <arg name='comp' type='xmlPatternPtr' info='the precompiled pattern'/>
     </function>
-    <function name='xmlPatternStreamable' file='pattern'>
+    <function name='xmlPatternStreamable' file='pattern' module='pattern'>
       <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
       <info>Check if the pattern is streamable i.e. xmlPatternGetStreamCtxt() should work.</info>
       <return type='int' info='1 if streamable, 0 if not and -1 in case of error.'/>
       <arg name='comp' type='xmlPatternPtr' info='the precompiled pattern'/>
     </function>
-    <function name='xmlPatterncompile' file='pattern'>
+    <function name='xmlPatterncompile' file='pattern' module='pattern'>
       <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
       <info>Compile a pattern.</info>
       <return type='xmlPatternPtr' info='the compiled for of the pattern or NULL in case of error'/>
@@ -11619,43 +11639,43 @@
       <arg name='flags' type='int' info='compilation flags, undefined yet'/>
       <arg name='namespaces' type='const xmlChar **' info='the prefix definitions, array of [URI, prefix] or NULL'/>
     </function>
-    <function name='xmlPedanticParserDefault' file='parser'>
+    <function name='xmlPedanticParserDefault' file='parser' module='parserInternals'>
       <info>Set and return the previous value for enabling pedantic warnings.</info>
       <return type='int' info='the last value for 0 for no substitution, 1 for substitution.'/>
       <arg name='val' type='int' info='int 0 or 1'/>
     </function>
-    <function name='xmlPopInput' file='parserInternals'>
+    <function name='xmlPopInput' file='parserInternals' module='parser'>
       <info>xmlPopInput: the current input pointed by ctxt-&gt;input came to an end pop it and return the next char.</info>
       <return type='xmlChar' info='the current xmlChar in the parser context'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlPopInputCallbacks' file='xmlIO'>
+    <function name='xmlPopInputCallbacks' file='xmlIO' module='xmlIO'>
       <info>Clear the top input callback from the input stack. this includes the compiled-in I/O.</info>
       <return type='int' info='the number of input callback registered or -1 in case of error.'/>
     </function>
-    <function name='xmlPrintURI' file='uri'>
+    <function name='xmlPrintURI' file='uri' module='uri'>
       <info>Prints the URI in the stream @stream.</info>
       <return type='void'/>
       <arg name='stream' type='FILE *' info='a FILE* for the output'/>
       <arg name='uri' type='xmlURIPtr' info='pointer to an xmlURI'/>
     </function>
-    <function name='xmlPushInput' file='parserInternals'>
+    <function name='xmlPushInput' file='parserInternals' module='parser'>
       <info>xmlPushInput: switch to a new input stream which is stacked on top of the previous one(s).</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='input' type='xmlParserInputPtr' info='an XML parser input fragment (entity, XML fragment ...).'/>
     </function>
-    <function name='xmlRMutexLock' file='threads'>
+    <function name='xmlRMutexLock' file='threads' module='threads'>
       <info>xmlRMutexLock() is used to lock a libxml2 token_r.</info>
       <return type='void'/>
       <arg name='tok' type='xmlRMutexPtr' info='the reentrant mutex'/>
     </function>
-    <function name='xmlRMutexUnlock' file='threads'>
+    <function name='xmlRMutexUnlock' file='threads' module='threads'>
       <info>xmlRMutexUnlock() is used to unlock a libxml2 token_r.</info>
       <return type='void'/>
       <arg name='tok' type='xmlRMutexPtr' info='the reentrant mutex'/>
     </function>
-    <function name='xmlReadDoc' file='parser'>
+    <function name='xmlReadDoc' file='parser' module='parser'>
       <info>parse an XML in-memory document and build a tree.</info>
       <return type='xmlDocPtr' info='the resulting document tree'/>
       <arg name='cur' type='const xmlChar *' info='a pointer to a zero terminated string'/>
@@ -11663,7 +11683,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
     </function>
-    <function name='xmlReadFd' file='parser'>
+    <function name='xmlReadFd' file='parser' module='parser'>
       <info>parse an XML from a file descriptor and build a tree. NOTE that the file descriptor will not be closed when the reader is closed or reset.</info>
       <return type='xmlDocPtr' info='the resulting document tree'/>
       <arg name='fd' type='int' info='an open file descriptor'/>
@@ -11671,14 +11691,14 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
     </function>
-    <function name='xmlReadFile' file='parser'>
+    <function name='xmlReadFile' file='parser' module='parser'>
       <info>parse an XML file from the filesystem or the network.</info>
       <return type='xmlDocPtr' info='the resulting document tree'/>
       <arg name='filename' type='const char *' info='a file or URL'/>
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
     </function>
-    <function name='xmlReadIO' file='parser'>
+    <function name='xmlReadIO' file='parser' module='parser'>
       <info>parse an XML document from I/O functions and source and build a tree.</info>
       <return type='xmlDocPtr' info='the resulting document tree'/>
       <arg name='ioread' type='xmlInputReadCallback' info='an I/O read function'/>
@@ -11688,7 +11708,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
     </function>
-    <function name='xmlReadMemory' file='parser'>
+    <function name='xmlReadMemory' file='parser' module='parser'>
       <info>parse an XML in-memory document and build a tree.</info>
       <return type='xmlDocPtr' info='the resulting document tree'/>
       <arg name='buffer' type='const char *' info='a pointer to a char array'/>
@@ -11697,7 +11717,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
     </function>
-    <function name='xmlReaderForDoc' file='xmlreader'>
+    <function name='xmlReaderForDoc' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Create an xmltextReader for an XML in-memory document. The parsing flags @options are a combination of xmlParserOption.</info>
       <return type='xmlTextReaderPtr' info='the new reader or NULL in case of error.'/>
@@ -11706,7 +11726,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
     </function>
-    <function name='xmlReaderForFd' file='xmlreader'>
+    <function name='xmlReaderForFd' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Create an xmltextReader for an XML from a file descriptor. The parsing flags @options are a combination of xmlParserOption. NOTE that the file descriptor will not be closed when the reader is closed or reset.</info>
       <return type='xmlTextReaderPtr' info='the new reader or NULL in case of error.'/>
@@ -11715,7 +11735,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
     </function>
-    <function name='xmlReaderForFile' file='xmlreader'>
+    <function name='xmlReaderForFile' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>parse an XML file from the filesystem or the network. The parsing flags @options are a combination of xmlParserOption.</info>
       <return type='xmlTextReaderPtr' info='the new reader or NULL in case of error.'/>
@@ -11723,7 +11743,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
     </function>
-    <function name='xmlReaderForIO' file='xmlreader'>
+    <function name='xmlReaderForIO' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Create an xmltextReader for an XML document from I/O functions and source. The parsing flags @options are a combination of xmlParserOption.</info>
       <return type='xmlTextReaderPtr' info='the new reader or NULL in case of error.'/>
@@ -11734,7 +11754,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
     </function>
-    <function name='xmlReaderForMemory' file='xmlreader'>
+    <function name='xmlReaderForMemory' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Create an xmltextReader for an XML in-memory document. The parsing flags @options are a combination of xmlParserOption.</info>
       <return type='xmlTextReaderPtr' info='the new reader or NULL in case of error.'/>
@@ -11744,7 +11764,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
     </function>
-    <function name='xmlReaderNewDoc' file='xmlreader'>
+    <function name='xmlReaderNewDoc' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Setup an xmltextReader to parse an XML in-memory document. The parsing flags @options are a combination of xmlParserOption. This reuses the existing @reader xmlTextReader.</info>
       <return type='int' info='0 in case of success and -1 in case of error'/>
@@ -11754,7 +11774,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
     </function>
-    <function name='xmlReaderNewFd' file='xmlreader'>
+    <function name='xmlReaderNewFd' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Setup an xmltextReader to parse an XML from a file descriptor. NOTE that the file descriptor will not be closed when the reader is closed or reset. The parsing flags @options are a combination of xmlParserOption. This reuses the existing @reader xmlTextReader.</info>
       <return type='int' info='0 in case of success and -1 in case of error'/>
@@ -11764,7 +11784,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
     </function>
-    <function name='xmlReaderNewFile' file='xmlreader'>
+    <function name='xmlReaderNewFile' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>parse an XML file from the filesystem or the network. The parsing flags @options are a combination of xmlParserOption. This reuses the existing @reader xmlTextReader.</info>
       <return type='int' info='0 in case of success and -1 in case of error'/>
@@ -11773,7 +11793,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
     </function>
-    <function name='xmlReaderNewIO' file='xmlreader'>
+    <function name='xmlReaderNewIO' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Setup an xmltextReader to parse an XML document from I/O functions and source. The parsing flags @options are a combination of xmlParserOption. This reuses the existing @reader xmlTextReader.</info>
       <return type='int' info='0 in case of success and -1 in case of error'/>
@@ -11785,7 +11805,7 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
     </function>
-    <function name='xmlReaderNewMemory' file='xmlreader'>
+    <function name='xmlReaderNewMemory' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Setup an xmltextReader to parse an XML in-memory document. The parsing flags @options are a combination of xmlParserOption. This reuses the existing @reader xmlTextReader.</info>
       <return type='int' info='0 in case of success and -1 in case of error'/>
@@ -11796,26 +11816,26 @@
       <arg name='encoding' type='const char *' info='the document encoding, or NULL'/>
       <arg name='options' type='int' info='a combination of xmlParserOption'/>
     </function>
-    <function name='xmlReaderNewWalker' file='xmlreader'>
+    <function name='xmlReaderNewWalker' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Setup an xmltextReader to parse a preparsed XML document. This reuses the existing @reader xmlTextReader.</info>
       <return type='int' info='0 in case of success and -1 in case of error'/>
       <arg name='reader' type='xmlTextReaderPtr' info='an XML reader'/>
       <arg name='doc' type='xmlDocPtr' info='a preparsed document'/>
     </function>
-    <function name='xmlReaderWalker' file='xmlreader'>
+    <function name='xmlReaderWalker' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Create an xmltextReader for a preparsed document.</info>
       <return type='xmlTextReaderPtr' info='the new reader or NULL in case of error.'/>
       <arg name='doc' type='xmlDocPtr' info='a preparsed document'/>
     </function>
-    <functype name='xmlReallocFunc' file='xmlmemory'>
+    <functype name='xmlReallocFunc' file='xmlmemory' module='xmlmemory'>
       <info>Signature for a realloc() implementation.</info>
       <return type='void *' info='a pointer to the newly reallocated block or NULL in case of error.'/>
       <arg name='mem' type='void *' info='an already allocated block of memory'/>
       <arg name='size' type='size_t' info='the new size requested in bytes'/>
     </functype>
-    <function name='xmlReallocLoc' file='xmlmemory'>
+    <function name='xmlReallocLoc' file='xmlmemory' module='xmlmemory'>
       <info>a realloc() equivalent, with logging of the allocation info.</info>
       <return type='void *' info='a pointer to the allocated area or NULL in case of lack of memory.'/>
       <arg name='ptr' type='void *' info='the initial memory block pointer'/>
@@ -11823,33 +11843,33 @@
       <arg name='file' type='const char *' info='the file name or NULL'/>
       <arg name='line' type='int' info='the line number'/>
     </function>
-    <function name='xmlReconciliateNs' file='tree'>
+    <function name='xmlReconciliateNs' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED)</cond>
       <info>This function checks that all the namespaces declared within the given tree are properly declared. This is needed for example after Copy or Cut and then paste operations. The subtree may still hold pointers to namespace declarations outside the subtree or invalid/masked. As much as possible the function try to reuse the existing namespaces found in the new environment. If not possible the new namespaces are redeclared on @tree at the top of the given subtree.</info>
       <return type='int' info='the number of namespace declarations created or -1 in case of error.'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='tree' type='xmlNodePtr' info='a node defining the subtree to reconciliate'/>
     </function>
-    <function name='xmlRecoverDoc' file='parser'>
+    <function name='xmlRecoverDoc' file='parser' module='parser'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>parse an XML in-memory document and build a tree. In the case the document is not Well Formed, a tree is built anyway</info>
       <return type='xmlDocPtr' info='the resulting document tree'/>
       <arg name='cur' type='xmlChar *' info='a pointer to an array of xmlChar'/>
     </function>
-    <function name='xmlRecoverFile' file='parser'>
+    <function name='xmlRecoverFile' file='parser' module='parser'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>parse an XML file and build a tree. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time. In the case the document is not Well Formed, a tree is built anyway</info>
       <return type='xmlDocPtr' info='the resulting document tree'/>
       <arg name='filename' type='const char *' info='the filename'/>
     </function>
-    <function name='xmlRecoverMemory' file='parser'>
+    <function name='xmlRecoverMemory' file='parser' module='parser'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>parse an XML in-memory block and build a tree. In the case the document is not Well Formed, a tree is built anyway</info>
       <return type='xmlDocPtr' info='the resulting document tree'/>
       <arg name='buffer' type='const char *' info='an pointer to a char array'/>
       <arg name='size' type='int' info='the size of the array'/>
     </function>
-    <functype name='xmlRegExecCallbacks' file='xmlregexp'>
+    <functype name='xmlRegExecCallbacks' file='xmlregexp' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED)</cond>
       <info></info>
       <return type='void'/>
@@ -11858,7 +11878,7 @@
       <arg name='transdata' type='void *' info=''/>
       <arg name='inputdata' type='void *' info=''/>
     </functype>
-    <function name='xmlRegExecErrInfo' file='xmlregexp'>
+    <function name='xmlRegExecErrInfo' file='xmlregexp' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED)</cond>
       <info>Extract error informations from the regexp execution, the parameter @string will be updated with the value pushed and not accepted, the parameter @values must point to an array of @nbval string pointers on return nbval will contain the number of possible strings in that state and the @values array will be updated with them. The string values</info>
       <return type='int' info='will be freed with the @exec context and don&apos;t need to be deallocated.  Returns: 0 in case of success or -1 in case of error.'/>
@@ -11869,7 +11889,7 @@
       <arg name='values' type='xmlChar **' info='pointer to the array of acceptable values'/>
       <arg name='terminal' type='int *' info='return value if this was a terminal state'/>
     </function>
-    <function name='xmlRegExecNextValues' file='xmlregexp'>
+    <function name='xmlRegExecNextValues' file='xmlregexp' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED)</cond>
       <info>Extract informations from the regexp execution, the parameter @values must point to an array of @nbval string pointers on return nbval will contain the number of possible strings in that state and the @values array will be updated with them. The string values</info>
       <return type='int' info='will be freed with the @exec context and don&apos;t need to be deallocated.  Returns: 0 in case of success or -1 in case of error.'/>
@@ -11879,7 +11899,7 @@
       <arg name='values' type='xmlChar **' info='pointer to the array of acceptable values'/>
       <arg name='terminal' type='int *' info='return value if this was a terminal state'/>
     </function>
-    <function name='xmlRegExecPushString' file='xmlregexp'>
+    <function name='xmlRegExecPushString' file='xmlregexp' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED)</cond>
       <info>Push one input token in the execution context</info>
       <return type='int' info='1 if the regexp reached a final state, 0 if non-final, and a negative value in case of error.'/>
@@ -11887,7 +11907,7 @@
       <arg name='value' type='const xmlChar *' info='a string token input'/>
       <arg name='data' type='void *' info='data associated to the token to reuse in callbacks'/>
     </function>
-    <function name='xmlRegExecPushString2' file='xmlregexp'>
+    <function name='xmlRegExecPushString2' file='xmlregexp' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED)</cond>
       <info>Push one input token in the execution context</info>
       <return type='int' info='1 if the regexp reached a final state, 0 if non-final, and a negative value in case of error.'/>
@@ -11896,19 +11916,19 @@
       <arg name='value2' type='const xmlChar *' info='the second string token input'/>
       <arg name='data' type='void *' info='data associated to the token to reuse in callbacks'/>
     </function>
-    <function name='xmlRegFreeExecCtxt' file='xmlregexp'>
+    <function name='xmlRegFreeExecCtxt' file='xmlregexp' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED)</cond>
       <info>Free the structures associated to a regular expression evaulation context.</info>
       <return type='void'/>
       <arg name='exec' type='xmlRegExecCtxtPtr' info='a regular expression evaulation context'/>
     </function>
-    <function name='xmlRegFreeRegexp' file='xmlregexp'>
+    <function name='xmlRegFreeRegexp' file='xmlregexp' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED)</cond>
       <info>Free a regexp</info>
       <return type='void'/>
       <arg name='regexp' type='xmlRegexpPtr' info='the regexp'/>
     </function>
-    <function name='xmlRegNewExecCtxt' file='xmlregexp'>
+    <function name='xmlRegNewExecCtxt' file='xmlregexp' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED)</cond>
       <info>Build a context used for progressive evaluation of a regexp.</info>
       <return type='xmlRegExecCtxtPtr' info='the new context'/>
@@ -11916,52 +11936,52 @@
       <arg name='callback' type='xmlRegExecCallbacks' info='a callback function used for handling progresses in the automata matching phase'/>
       <arg name='data' type='void *' info='the context data associated to the callback in this context'/>
     </function>
-    <function name='xmlRegexpCompile' file='xmlregexp'>
+    <function name='xmlRegexpCompile' file='xmlregexp' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED)</cond>
       <info>Parses a regular expression conforming to XML Schemas Part 2 Datatype Appendix F and builds an automata suitable for testing strings against that regular expression</info>
       <return type='xmlRegexpPtr' info='the compiled expression or NULL in case of error'/>
       <arg name='regexp' type='const xmlChar *' info='a regular expression string'/>
     </function>
-    <function name='xmlRegexpExec' file='xmlregexp'>
+    <function name='xmlRegexpExec' file='xmlregexp' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED)</cond>
       <info>Check if the regular expression generates the value</info>
       <return type='int' info='1 if it matches, 0 if not and a negative value in case of error'/>
       <arg name='comp' type='xmlRegexpPtr' info='the compiled regular expression'/>
       <arg name='content' type='const xmlChar *' info='the value to check against the regular expression'/>
     </function>
-    <function name='xmlRegexpIsDeterminist' file='xmlregexp'>
+    <function name='xmlRegexpIsDeterminist' file='xmlregexp' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED)</cond>
       <info>Check if the regular expression is determinist</info>
       <return type='int' info='1 if it yes, 0 if not and a negative value in case of error'/>
       <arg name='comp' type='xmlRegexpPtr' info='the compiled regular expression'/>
     </function>
-    <function name='xmlRegexpPrint' file='xmlregexp'>
+    <function name='xmlRegexpPrint' file='xmlregexp' module='xmlregexp'>
       <cond>defined(LIBXML_REGEXP_ENABLED)</cond>
       <info>Print the content of the compiled regular expression</info>
       <return type='void'/>
       <arg name='output' type='FILE *' info='the file for the output debug'/>
       <arg name='regexp' type='xmlRegexpPtr' info='the compiled regexp'/>
     </function>
-    <function name='xmlRegisterCharEncodingHandler' file='encoding'>
+    <function name='xmlRegisterCharEncodingHandler' file='encoding' module='encoding'>
       <info>Register the char encoding handler, surprising, isn&apos;t it ?</info>
       <return type='void'/>
       <arg name='handler' type='xmlCharEncodingHandlerPtr' info='the xmlCharEncodingHandlerPtr handler block'/>
     </function>
-    <function name='xmlRegisterDefaultInputCallbacks' file='xmlIO'>
+    <function name='xmlRegisterDefaultInputCallbacks' file='xmlIO' module='xmlIO'>
       <info>Registers the default compiled-in I/O handlers.</info>
       <return type='void'/>
     </function>
-    <function name='xmlRegisterDefaultOutputCallbacks' file='xmlIO'>
+    <function name='xmlRegisterDefaultOutputCallbacks' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Registers the default compiled-in I/O handlers.</info>
       <return type='void'/>
     </function>
-    <function name='xmlRegisterHTTPPostCallbacks' file='xmlIO'>
+    <function name='xmlRegisterHTTPPostCallbacks' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_OUTPUT_ENABLED) &amp;&amp; defined(LIBXML_HTTP_ENABLED)</cond>
       <info>By default, libxml submits HTTP output requests using the &quot;PUT&quot; method. Calling this method changes the HTTP output method to use the &quot;POST&quot; method instead.</info>
       <return type='void'/>
     </function>
-    <function name='xmlRegisterInputCallbacks' file='xmlIO'>
+    <function name='xmlRegisterInputCallbacks' file='xmlIO' module='xmlIO'>
       <info>Register a new set of I/O callback for handling parser input.</info>
       <return type='int' info='the registered handler number or -1 in case of error'/>
       <arg name='matchFunc' type='xmlInputMatchCallback' info='the xmlInputMatchCallback'/>
@@ -11969,17 +11989,17 @@
       <arg name='readFunc' type='xmlInputReadCallback' info='the xmlInputReadCallback'/>
       <arg name='closeFunc' type='xmlInputCloseCallback' info='the xmlInputCloseCallback'/>
     </function>
-    <function name='xmlRegisterNodeDefault' file='globals'>
+    <function name='xmlRegisterNodeDefault' file='globals' module='globals'>
       <info>Registers a callback for node creation</info>
       <return type='xmlRegisterNodeFunc' info='the old value of the registration function'/>
       <arg name='func' type='xmlRegisterNodeFunc' info='function pointer to the new RegisterNodeFunc'/>
     </function>
-    <functype name='xmlRegisterNodeFunc' file='globals'>
+    <functype name='xmlRegisterNodeFunc' file='globals' module='globals'>
       <info></info>
       <return type='void'/>
       <arg name='node' type='xmlNodePtr' info=''/>
     </functype>
-    <function name='xmlRegisterOutputCallbacks' file='xmlIO'>
+    <function name='xmlRegisterOutputCallbacks' file='xmlIO' module='xmlIO'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Register a new set of I/O callback for handling output.</info>
       <return type='int' info='the registered handler number or -1 in case of error'/>
@@ -11988,44 +12008,44 @@
       <arg name='writeFunc' type='xmlOutputWriteCallback' info='the xmlOutputWriteCallback'/>
       <arg name='closeFunc' type='xmlOutputCloseCallback' info='the xmlOutputCloseCallback'/>
     </function>
-    <function name='xmlRelaxNGCleanupTypes' file='relaxng'>
+    <function name='xmlRelaxNGCleanupTypes' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Cleanup the default Schemas type library associated to RelaxNG</info>
       <return type='void'/>
     </function>
-    <function name='xmlRelaxNGDump' file='relaxng'>
+    <function name='xmlRelaxNGDump' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump a RelaxNG structure back</info>
       <return type='void'/>
       <arg name='output' type='FILE *' info='the file output'/>
       <arg name='schema' type='xmlRelaxNGPtr' info='a schema structure'/>
     </function>
-    <function name='xmlRelaxNGDumpTree' file='relaxng'>
+    <function name='xmlRelaxNGDumpTree' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump the transformed RelaxNG tree.</info>
       <return type='void'/>
       <arg name='output' type='FILE *' info='the file output'/>
       <arg name='schema' type='xmlRelaxNGPtr' info='a schema structure'/>
     </function>
-    <function name='xmlRelaxNGFree' file='relaxng'>
+    <function name='xmlRelaxNGFree' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Deallocate a RelaxNG structure.</info>
       <return type='void'/>
       <arg name='schema' type='xmlRelaxNGPtr' info='a schema structure'/>
     </function>
-    <function name='xmlRelaxNGFreeParserCtxt' file='relaxng'>
+    <function name='xmlRelaxNGFreeParserCtxt' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Free the resources associated to the schema parser context</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlRelaxNGParserCtxtPtr' info='the schema parser context'/>
     </function>
-    <function name='xmlRelaxNGFreeValidCtxt' file='relaxng'>
+    <function name='xmlRelaxNGFreeValidCtxt' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Free the resources associated to the schema validation context</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlRelaxNGValidCtxtPtr' info='the schema validation context'/>
     </function>
-    <function name='xmlRelaxNGGetParserErrors' file='relaxng'>
+    <function name='xmlRelaxNGGetParserErrors' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Get the callback information used to handle errors for a validation context</info>
       <return type='int' info='-1 in case of failure, 0 otherwise.'/>
@@ -12034,7 +12054,7 @@
       <arg name='warn' type='xmlRelaxNGValidityWarningFunc *' info='the warning callback result'/>
       <arg name='ctx' type='void **' info='contextual data for the callbacks result'/>
     </function>
-    <function name='xmlRelaxNGGetValidErrors' file='relaxng'>
+    <function name='xmlRelaxNGGetValidErrors' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Get the error and warning callback informations</info>
       <return type='int' info='-1 in case of error and 0 otherwise'/>
@@ -12043,43 +12063,43 @@
       <arg name='warn' type='xmlRelaxNGValidityWarningFunc *' info='the warning function result'/>
       <arg name='ctx' type='void **' info='the functions context result'/>
     </function>
-    <function name='xmlRelaxNGInitTypes' file='relaxng'>
+    <function name='xmlRelaxNGInitTypes' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Initilize the default type libraries.</info>
       <return type='int' info='0 in case of success and -1 in case of error.'/>
     </function>
-    <function name='xmlRelaxNGNewDocParserCtxt' file='relaxng'>
+    <function name='xmlRelaxNGNewDocParserCtxt' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Create an XML RelaxNGs parser context for that document. Note: since the process of compiling a RelaxNG schemas modifies the document, the @doc parameter is duplicated internally.</info>
       <return type='xmlRelaxNGParserCtxtPtr' info='the parser context or NULL in case of error'/>
       <arg name='doc' type='xmlDocPtr' info='a preparsed document tree'/>
     </function>
-    <function name='xmlRelaxNGNewMemParserCtxt' file='relaxng'>
+    <function name='xmlRelaxNGNewMemParserCtxt' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Create an XML RelaxNGs parse context for that memory buffer expected to contain an XML RelaxNGs file.</info>
       <return type='xmlRelaxNGParserCtxtPtr' info='the parser context or NULL in case of error'/>
       <arg name='buffer' type='const char *' info='a pointer to a char array containing the schemas'/>
       <arg name='size' type='int' info='the size of the array'/>
     </function>
-    <function name='xmlRelaxNGNewParserCtxt' file='relaxng'>
+    <function name='xmlRelaxNGNewParserCtxt' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Create an XML RelaxNGs parse context for that file/resource expected to contain an XML RelaxNGs file.</info>
       <return type='xmlRelaxNGParserCtxtPtr' info='the parser context or NULL in case of error'/>
       <arg name='URL' type='const char *' info='the location of the schema'/>
     </function>
-    <function name='xmlRelaxNGNewValidCtxt' file='relaxng'>
+    <function name='xmlRelaxNGNewValidCtxt' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Create an XML RelaxNGs validation context based on the given schema</info>
       <return type='xmlRelaxNGValidCtxtPtr' info='the validation context or NULL in case of error'/>
       <arg name='schema' type='xmlRelaxNGPtr' info='a precompiled XML RelaxNGs'/>
     </function>
-    <function name='xmlRelaxNGParse' file='relaxng'>
+    <function name='xmlRelaxNGParse' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>parse a schema definition resource and build an internal XML Shema struture which can be used to validate instances. *WARNING* this interface is highly subject to change</info>
       <return type='xmlRelaxNGPtr' info='the internal XML RelaxNG structure built from the resource or NULL in case of error'/>
       <arg name='ctxt' type='xmlRelaxNGParserCtxtPtr' info='a Relax-NG parser context'/>
     </function>
-    <function name='xmlRelaxNGSetParserErrors' file='relaxng'>
+    <function name='xmlRelaxNGSetParserErrors' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Set the callback functions used to handle errors for a validation context</info>
       <return type='void'/>
@@ -12088,7 +12108,7 @@
       <arg name='warn' type='xmlRelaxNGValidityWarningFunc' info='the warning callback'/>
       <arg name='ctx' type='void *' info='contextual data for the callbacks'/>
     </function>
-    <function name='xmlRelaxNGSetValidErrors' file='relaxng'>
+    <function name='xmlRelaxNGSetValidErrors' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Set the error and warning callback informations</info>
       <return type='void'/>
@@ -12097,14 +12117,14 @@
       <arg name='warn' type='xmlRelaxNGValidityWarningFunc' info='the warning function'/>
       <arg name='ctx' type='void *' info='the functions context'/>
     </function>
-    <function name='xmlRelaxNGValidateDoc' file='relaxng'>
+    <function name='xmlRelaxNGValidateDoc' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Validate a document tree in memory.</info>
       <return type='int' info='0 if the document is valid, a positive error code number otherwise and -1 in case of internal or API error.'/>
       <arg name='ctxt' type='xmlRelaxNGValidCtxtPtr' info='a Relax-NG validation context'/>
       <arg name='doc' type='xmlDocPtr' info='a parsed document tree'/>
     </function>
-    <function name='xmlRelaxNGValidateFullElement' file='relaxng'>
+    <function name='xmlRelaxNGValidateFullElement' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Validate a full subtree when xmlRelaxNGValidatePushElement() returned 0 and the content of the node has been expanded.</info>
       <return type='int' info='1 if no validation problem was found or -1 in case of error.'/>
@@ -12112,7 +12132,7 @@
       <arg name='doc' type='xmlDocPtr' info='a document instance'/>
       <arg name='elem' type='xmlNodePtr' info='an element instance'/>
     </function>
-    <function name='xmlRelaxNGValidatePopElement' file='relaxng'>
+    <function name='xmlRelaxNGValidatePopElement' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Pop the element end from the RelaxNG validation stack.</info>
       <return type='int' info='1 if no validation problem was found or 0 otherwise'/>
@@ -12120,7 +12140,7 @@
       <arg name='doc' type='xmlDocPtr' info='a document instance'/>
       <arg name='elem' type='xmlNodePtr' info='an element instance'/>
     </function>
-    <function name='xmlRelaxNGValidatePushCData' file='relaxng'>
+    <function name='xmlRelaxNGValidatePushCData' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>check the CData parsed for validation in the current stack</info>
       <return type='int' info='1 if no validation problem was found or -1 otherwise'/>
@@ -12128,7 +12148,7 @@
       <arg name='data' type='const xmlChar *' info='some character data read'/>
       <arg name='len' type='int' info='the lenght of the data'/>
     </function>
-    <function name='xmlRelaxNGValidatePushElement' file='relaxng'>
+    <function name='xmlRelaxNGValidatePushElement' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Push a new element start on the RelaxNG validation stack.</info>
       <return type='int' info='1 if no validation problem was found or 0 if validating the element requires a full node, and -1 in case of error.'/>
@@ -12136,7 +12156,7 @@
       <arg name='doc' type='xmlDocPtr' info='a document instance'/>
       <arg name='elem' type='xmlNodePtr' info='an element instance'/>
     </function>
-    <functype name='xmlRelaxNGValidityErrorFunc' file='relaxng'>
+    <functype name='xmlRelaxNGValidityErrorFunc' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info></info>
       <return type='void'/>
@@ -12144,7 +12164,7 @@
       <arg name='msg' type='const char *' info=''/>
       <arg name='...' type='...' info=''/>
     </functype>
-    <functype name='xmlRelaxNGValidityWarningFunc' file='relaxng'>
+    <functype name='xmlRelaxNGValidityWarningFunc' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info></info>
       <return type='void'/>
@@ -12152,48 +12172,48 @@
       <arg name='msg' type='const char *' info=''/>
       <arg name='...' type='...' info=''/>
     </functype>
-    <function name='xmlRelaxParserSetFlag' file='relaxng'>
+    <function name='xmlRelaxParserSetFlag' file='relaxng' module='relaxng'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Semi private function used to pass informations to a parser context which are a combination of xmlRelaxNGParserFlag .</info>
       <return type='int' info='0 if success and -1 in case of error'/>
       <arg name='ctxt' type='xmlRelaxNGParserCtxtPtr' info='a RelaxNG parser context'/>
       <arg name='flags' type='int' info='a set of flags values'/>
     </function>
-    <function name='xmlRemoveID' file='valid'>
+    <function name='xmlRemoveID' file='valid' module='valid'>
       <info>Remove the given attribute from the ID table maintained internally.</info>
       <return type='int' info='-1 if the lookup failed and 0 otherwise'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='attr' type='xmlAttrPtr' info='the attribute'/>
     </function>
-    <function name='xmlRemoveProp' file='tree'>
+    <function name='xmlRemoveProp' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED)</cond>
       <info>Unlink and free one attribute, all the content is freed too Note this doesn&apos;t work for namespace definition attributes</info>
       <return type='int' info='0 if success and -1 in case of error.'/>
       <arg name='cur' type='xmlAttrPtr' info='an attribute'/>
     </function>
-    <function name='xmlRemoveRef' file='valid'>
+    <function name='xmlRemoveRef' file='valid' module='valid'>
       <info>Remove the given attribute from the Ref table maintained internally.</info>
       <return type='int' info='-1 if the lookup failed and 0 otherwise'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='attr' type='xmlAttrPtr' info='the attribute'/>
     </function>
-    <function name='xmlReplaceNode' file='tree'>
+    <function name='xmlReplaceNode' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Unlink the old node from its current context, prune the new one at the same place. If @cur was already inserted in a document it is first unlinked from its existing context.</info>
       <return type='xmlNodePtr' info='the @old node'/>
       <arg name='old' type='xmlNodePtr' info='the old node'/>
       <arg name='cur' type='xmlNodePtr' info='the node'/>
     </function>
-    <function name='xmlResetError' file='xmlerror'>
+    <function name='xmlResetError' file='xmlerror' module='error'>
       <info>Cleanup the error.</info>
       <return type='void'/>
       <arg name='err' type='xmlErrorPtr' info='pointer to the error.'/>
     </function>
-    <function name='xmlResetLastError' file='xmlerror'>
+    <function name='xmlResetLastError' file='xmlerror' module='error'>
       <info>Cleanup the last global error registered. For parsing error this does not change the well-formedness result.</info>
       <return type='void'/>
     </function>
-    <function name='xmlSAX2AttributeDecl' file='SAX2'>
+    <function name='xmlSAX2AttributeDecl' file='SAX2' module='SAX2'>
       <info>An attribute definition has been parsed</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
@@ -12204,27 +12224,27 @@
       <arg name='defaultValue' type='const xmlChar *' info='the attribute default value'/>
       <arg name='tree' type='xmlEnumerationPtr' info='the tree of enumerated value set'/>
     </function>
-    <function name='xmlSAX2CDataBlock' file='SAX2'>
+    <function name='xmlSAX2CDataBlock' file='SAX2' module='SAX2'>
       <info>called when a pcdata block has been parsed</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='value' type='const xmlChar *' info='The pcdata content'/>
       <arg name='len' type='int' info='the block length'/>
     </function>
-    <function name='xmlSAX2Characters' file='SAX2'>
+    <function name='xmlSAX2Characters' file='SAX2' module='SAX2'>
       <info>receiving some chars from the parser.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='ch' type='const xmlChar *' info='a xmlChar string'/>
       <arg name='len' type='int' info='the number of xmlChar'/>
     </function>
-    <function name='xmlSAX2Comment' file='SAX2'>
+    <function name='xmlSAX2Comment' file='SAX2' module='SAX2'>
       <info>A xmlSAX2Comment has been parsed.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='value' type='const xmlChar *' info='the xmlSAX2Comment content'/>
     </function>
-    <function name='xmlSAX2ElementDecl' file='SAX2'>
+    <function name='xmlSAX2ElementDecl' file='SAX2' module='SAX2'>
       <info>An element definition has been parsed</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
@@ -12232,19 +12252,19 @@
       <arg name='type' type='int' info='the element type'/>
       <arg name='content' type='xmlElementContentPtr' info='the element value tree'/>
     </function>
-    <function name='xmlSAX2EndDocument' file='SAX2'>
+    <function name='xmlSAX2EndDocument' file='SAX2' module='SAX2'>
       <info>called when the document end has been detected.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </function>
-    <function name='xmlSAX2EndElement' file='SAX2'>
+    <function name='xmlSAX2EndElement' file='SAX2' module='SAX2'>
       <cond>defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED)</cond>
       <info>called when the end of an element has been detected.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='name' type='const xmlChar *' info='The element name'/>
     </function>
-    <function name='xmlSAX2EndElementNs' file='SAX2'>
+    <function name='xmlSAX2EndElementNs' file='SAX2' module='SAX2'>
       <info>SAX2 callback when an element end has been detected by the parser. It provides the namespace informations for the element.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
@@ -12252,7 +12272,7 @@
       <arg name='prefix' type='const xmlChar *' info='the element namespace prefix if available'/>
       <arg name='URI' type='const xmlChar *' info='the element namespace name if available'/>
     </function>
-    <function name='xmlSAX2EntityDecl' file='SAX2'>
+    <function name='xmlSAX2EntityDecl' file='SAX2' module='SAX2'>
       <info>An entity definition has been parsed</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
@@ -12262,7 +12282,7 @@
       <arg name='systemId' type='const xmlChar *' info='The system ID of the entity'/>
       <arg name='content' type='xmlChar *' info='the entity value (without processing).'/>
     </function>
-    <function name='xmlSAX2ExternalSubset' file='SAX2'>
+    <function name='xmlSAX2ExternalSubset' file='SAX2' module='SAX2'>
       <info>Callback on external subset declaration.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
@@ -12270,74 +12290,74 @@
       <arg name='ExternalID' type='const xmlChar *' info='the external ID'/>
       <arg name='SystemID' type='const xmlChar *' info='the SYSTEM ID (e.g. filename or URL)'/>
     </function>
-    <function name='xmlSAX2GetColumnNumber' file='SAX2'>
+    <function name='xmlSAX2GetColumnNumber' file='SAX2' module='SAX2'>
       <info>Provide the column number of the current parsing point.</info>
       <return type='int' info='an int'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </function>
-    <function name='xmlSAX2GetEntity' file='SAX2'>
+    <function name='xmlSAX2GetEntity' file='SAX2' module='SAX2'>
       <info>Get an entity by name</info>
       <return type='xmlEntityPtr' info='the xmlEntityPtr if found.'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='name' type='const xmlChar *' info='The entity name'/>
     </function>
-    <function name='xmlSAX2GetLineNumber' file='SAX2'>
+    <function name='xmlSAX2GetLineNumber' file='SAX2' module='SAX2'>
       <info>Provide the line number of the current parsing point.</info>
       <return type='int' info='an int'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </function>
-    <function name='xmlSAX2GetParameterEntity' file='SAX2'>
+    <function name='xmlSAX2GetParameterEntity' file='SAX2' module='SAX2'>
       <info>Get a parameter entity by name</info>
       <return type='xmlEntityPtr' info='the xmlEntityPtr if found.'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='name' type='const xmlChar *' info='The entity name'/>
     </function>
-    <function name='xmlSAX2GetPublicId' file='SAX2'>
+    <function name='xmlSAX2GetPublicId' file='SAX2' module='SAX2'>
       <info>Provides the public ID e.g. &quot;-//SGMLSOURCE//DTD DEMO//EN&quot;</info>
       <return type='const xmlChar *' info='a xmlChar *'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </function>
-    <function name='xmlSAX2GetSystemId' file='SAX2'>
+    <function name='xmlSAX2GetSystemId' file='SAX2' module='SAX2'>
       <info>Provides the system ID, basically URL or filename e.g. http://www.sgmlsource.com/dtds/memo.dtd</info>
       <return type='const xmlChar *' info='a xmlChar *'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </function>
-    <function name='xmlSAX2HasExternalSubset' file='SAX2'>
+    <function name='xmlSAX2HasExternalSubset' file='SAX2' module='SAX2'>
       <info>Does this document has an external subset</info>
       <return type='int' info='1 if true'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </function>
-    <function name='xmlSAX2HasInternalSubset' file='SAX2'>
+    <function name='xmlSAX2HasInternalSubset' file='SAX2' module='SAX2'>
       <info>Does this document has an internal subset</info>
       <return type='int' info='1 if true'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </function>
-    <function name='xmlSAX2IgnorableWhitespace' file='SAX2'>
+    <function name='xmlSAX2IgnorableWhitespace' file='SAX2' module='SAX2'>
       <info>receiving some ignorable whitespaces from the parser. UNUSED: by default the DOM building will use xmlSAX2Characters</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='ch' type='const xmlChar *' info='a xmlChar string'/>
       <arg name='len' type='int' info='the number of xmlChar'/>
     </function>
-    <function name='xmlSAX2InitDefaultSAXHandler' file='SAX2'>
+    <function name='xmlSAX2InitDefaultSAXHandler' file='SAX2' module='SAX2'>
       <info>Initialize the default XML SAX2 handler</info>
       <return type='void'/>
       <arg name='hdlr' type='xmlSAXHandler *' info='the SAX handler'/>
       <arg name='warning' type='int' info='flag if non-zero sets the handler warning procedure'/>
     </function>
-    <function name='xmlSAX2InitDocbDefaultSAXHandler' file='SAX2'>
+    <function name='xmlSAX2InitDocbDefaultSAXHandler' file='SAX2' module='SAX2'>
       <cond>defined(LIBXML_DOCB_ENABLED)</cond>
       <info>Initialize the default DocBook SAX2 handler</info>
       <return type='void'/>
       <arg name='hdlr' type='xmlSAXHandler *' info='the SAX handler'/>
     </function>
-    <function name='xmlSAX2InitHtmlDefaultSAXHandler' file='SAX2'>
+    <function name='xmlSAX2InitHtmlDefaultSAXHandler' file='SAX2' module='SAX2'>
       <cond>defined(LIBXML_HTML_ENABLED)</cond>
       <info>Initialize the default HTML SAX2 handler</info>
       <return type='void'/>
       <arg name='hdlr' type='xmlSAXHandler *' info='the SAX handler'/>
     </function>
-    <function name='xmlSAX2InternalSubset' file='SAX2'>
+    <function name='xmlSAX2InternalSubset' file='SAX2' module='SAX2'>
       <info>Callback on internal subset declaration.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
@@ -12345,12 +12365,12 @@
       <arg name='ExternalID' type='const xmlChar *' info='the external ID'/>
       <arg name='SystemID' type='const xmlChar *' info='the SYSTEM ID (e.g. filename or URL)'/>
     </function>
-    <function name='xmlSAX2IsStandalone' file='SAX2'>
+    <function name='xmlSAX2IsStandalone' file='SAX2' module='SAX2'>
       <info>Is this document tagged standalone ?</info>
       <return type='int' info='1 if true'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </function>
-    <function name='xmlSAX2NotationDecl' file='SAX2'>
+    <function name='xmlSAX2NotationDecl' file='SAX2' module='SAX2'>
       <info>What to do when a notation declaration has been parsed.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
@@ -12358,38 +12378,38 @@
       <arg name='publicId' type='const xmlChar *' info='The public ID of the entity'/>
       <arg name='systemId' type='const xmlChar *' info='The system ID of the entity'/>
     </function>
-    <function name='xmlSAX2ProcessingInstruction' file='SAX2'>
+    <function name='xmlSAX2ProcessingInstruction' file='SAX2' module='SAX2'>
       <info>A processing instruction has been parsed.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='target' type='const xmlChar *' info='the target name'/>
       <arg name='data' type='const xmlChar *' info='the PI data&apos;s'/>
     </function>
-    <function name='xmlSAX2Reference' file='SAX2'>
+    <function name='xmlSAX2Reference' file='SAX2' module='SAX2'>
       <info>called when an entity xmlSAX2Reference is detected.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='name' type='const xmlChar *' info='The entity name'/>
     </function>
-    <function name='xmlSAX2ResolveEntity' file='SAX2'>
+    <function name='xmlSAX2ResolveEntity' file='SAX2' module='SAX2'>
       <info>The entity loader, to control the loading of external entities, the application can either: - override this xmlSAX2ResolveEntity() callback in the SAX block - or better use the xmlSetExternalEntityLoader() function to set up it&apos;s own entity resolution routine</info>
       <return type='xmlParserInputPtr' info='the xmlParserInputPtr if inlined or NULL for DOM behaviour.'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='publicId' type='const xmlChar *' info='The public ID of the entity'/>
       <arg name='systemId' type='const xmlChar *' info='The system ID of the entity'/>
     </function>
-    <function name='xmlSAX2SetDocumentLocator' file='SAX2'>
+    <function name='xmlSAX2SetDocumentLocator' file='SAX2' module='SAX2'>
       <info>Receive the document locator at startup, actually xmlDefaultSAXLocator Everything is available on the context, so this is useless in our case.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
       <arg name='loc' type='xmlSAXLocatorPtr' info='A SAX Locator'/>
     </function>
-    <function name='xmlSAX2StartDocument' file='SAX2'>
+    <function name='xmlSAX2StartDocument' file='SAX2' module='SAX2'>
       <info>called when the document start being processed.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
     </function>
-    <function name='xmlSAX2StartElement' file='SAX2'>
+    <function name='xmlSAX2StartElement' file='SAX2' module='SAX2'>
       <cond>defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED)</cond>
       <info>called when an opening tag has been processed.</info>
       <return type='void'/>
@@ -12397,7 +12417,7 @@
       <arg name='fullname' type='const xmlChar *' info='The element name, including namespace prefix'/>
       <arg name='atts' type='const xmlChar **' info='An array of name/value attributes pairs, NULL terminated'/>
     </function>
-    <function name='xmlSAX2StartElementNs' file='SAX2'>
+    <function name='xmlSAX2StartElementNs' file='SAX2' module='SAX2'>
       <info>SAX2 callback when an element start has been detected by the parser. It provides the namespace informations for the element, as well as the new namespace declarations on the element.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
@@ -12410,7 +12430,7 @@
       <arg name='nb_defaulted' type='int' info='the number of defaulted attributes.'/>
       <arg name='attributes' type='const xmlChar **' info='pointer to the array of (localname/prefix/URI/value/end) attribute values.'/>
     </function>
-    <function name='xmlSAX2UnparsedEntityDecl' file='SAX2'>
+    <function name='xmlSAX2UnparsedEntityDecl' file='SAX2' module='SAX2'>
       <info>What to do when an unparsed entity declaration is parsed</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the user data (XML parser context)'/>
@@ -12419,13 +12439,13 @@
       <arg name='systemId' type='const xmlChar *' info='The system ID of the entity'/>
       <arg name='notationName' type='const xmlChar *' info='the name of the notation'/>
     </function>
-    <function name='xmlSAXDefaultVersion' file='SAX2'>
+    <function name='xmlSAXDefaultVersion' file='SAX2' module='SAX2'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>Set the default version of SAX used globally by the library. By default, during initialization the default is set to 2. Note that it is generally a better coding style to use xmlSAXVersion() to set up the version explicitly for a given parsing context.</info>
       <return type='int' info='the previous value in case of success and -1 in case of error.'/>
       <arg name='version' type='int' info='the version, 1 or 2'/>
     </function>
-    <function name='xmlSAXParseDTD' file='parser'>
+    <function name='xmlSAXParseDTD' file='parser' module='parser'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Load and parse an external subset.</info>
       <return type='xmlDtdPtr' info='the resulting xmlDtdPtr or NULL in case of error.'/>
@@ -12433,22 +12453,22 @@
       <arg name='ExternalID' type='const xmlChar *' info='a NAME* containing the External ID of the DTD'/>
       <arg name='SystemID' type='const xmlChar *' info='a NAME* containing the URL to the DTD'/>
     </function>
-    <function name='xmlSAXParseDoc' file='parser'>
+    <function name='xmlSAXParseDoc' file='parser' module='parser'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>parse an XML in-memory document and build a tree. It use the given SAX function block to handle the parsing callback. If sax is NULL, fallback to the default DOM tree building routines.</info>
       <return type='xmlDocPtr' info='the resulting document tree'/>
       <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler block'/>
-      <arg name='cur' type='xmlChar *' info='a pointer to an array of xmlChar'/>
+      <arg name='cur' type='const xmlChar *' info='a pointer to an array of xmlChar'/>
       <arg name='recovery' type='int' info='work in recovery mode, i.e. tries to read no Well Formed documents'/>
     </function>
-    <function name='xmlSAXParseEntity' file='parser'>
+    <function name='xmlSAXParseEntity' file='parser' module='parser'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>parse an XML external entity out of context and build a tree. It use the given SAX function block to handle the parsing callback. If sax is NULL, fallback to the default DOM tree building routines.  [78] extParsedEnt ::= TextDecl? content  This correspond to a &quot;Well Balanced&quot; chunk</info>
       <return type='xmlDocPtr' info='the resulting document tree'/>
       <arg name='sax' type='xmlSAXHandlerPtr' info='the SAX handler block'/>
       <arg name='filename' type='const char *' info='the filename'/>
     </function>
-    <function name='xmlSAXParseFile' file='parser'>
+    <function name='xmlSAXParseFile' file='parser' module='parser'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>parse an XML file and build a tree. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time. It use the given SAX function block to handle the parsing callback. If sax is NULL, fallback to the default DOM tree building routines.</info>
       <return type='xmlDocPtr' info='the resulting document tree'/>
@@ -12456,7 +12476,7 @@
       <arg name='filename' type='const char *' info='the filename'/>
       <arg name='recovery' type='int' info='work in recovery mode, i.e. tries to read no Well Formed documents'/>
     </function>
-    <function name='xmlSAXParseFileWithData' file='parser'>
+    <function name='xmlSAXParseFileWithData' file='parser' module='parser'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>parse an XML file and build a tree. Automatic support for ZLIB/Compress compressed document is provided by default if found at compile-time. It use the given SAX function block to handle the parsing callback. If sax is NULL, fallback to the default DOM tree building routines.  User data (void *) is stored within the parser context in the context&apos;s _private member, so it is available nearly everywhere in libxml</info>
       <return type='xmlDocPtr' info='the resulting document tree'/>
@@ -12465,7 +12485,7 @@
       <arg name='recovery' type='int' info='work in recovery mode, i.e. tries to read no Well Formed documents'/>
       <arg name='data' type='void *' info='the userdata'/>
     </function>
-    <function name='xmlSAXParseMemory' file='parser'>
+    <function name='xmlSAXParseMemory' file='parser' module='parser'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>parse an XML in-memory block and use the given SAX function block to handle the parsing callback. If sax is NULL, fallback to the default DOM tree building routines.</info>
       <return type='xmlDocPtr' info='the resulting document tree'/>
@@ -12474,7 +12494,7 @@
       <arg name='size' type='int' info='the size of the array'/>
       <arg name='recovery' type='int' info='work in recovery mode, i.e. tries to read not Well Formed documents'/>
     </function>
-    <function name='xmlSAXParseMemoryWithData' file='parser'>
+    <function name='xmlSAXParseMemoryWithData' file='parser' module='parser'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>parse an XML in-memory block and use the given SAX function block to handle the parsing callback. If sax is NULL, fallback to the default DOM tree building routines.  User data (void *) is stored within the parser context in the context&apos;s _private member, so it is available nearly everywhere in libxml</info>
       <return type='xmlDocPtr' info='the resulting document tree'/>
@@ -12484,7 +12504,7 @@
       <arg name='recovery' type='int' info='work in recovery mode, i.e. tries to read no Well Formed documents'/>
       <arg name='data' type='void *' info='the userdata'/>
     </function>
-    <function name='xmlSAXUserParseFile' file='parser'>
+    <function name='xmlSAXUserParseFile' file='parser' module='parser'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>parse an XML file and call the given SAX handler routines. Automatic support for ZLIB/Compress compressed document is provided</info>
       <return type='int' info='0 in case of success or a error number otherwise'/>
@@ -12492,7 +12512,7 @@
       <arg name='user_data' type='void *' info='The user data returned on SAX callbacks'/>
       <arg name='filename' type='const char *' info='a file name'/>
     </function>
-    <function name='xmlSAXUserParseMemory' file='parser'>
+    <function name='xmlSAXUserParseMemory' file='parser' module='parser'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>A better SAX parsing routine. parse an XML in-memory buffer and call the given SAX handler routines.</info>
       <return type='int' info='0 in case of success or a error number otherwise'/>
@@ -12501,33 +12521,33 @@
       <arg name='buffer' type='const char *' info='an in-memory XML document input'/>
       <arg name='size' type='int' info='the length of the XML document in bytes'/>
     </function>
-    <function name='xmlSAXVersion' file='SAX2'>
+    <function name='xmlSAXVersion' file='SAX2' module='SAX2'>
       <info>Initialize the default XML SAX handler according to the version</info>
       <return type='int' info='0 in case of success and -1 in case of error.'/>
       <arg name='hdlr' type='xmlSAXHandler *' info='the SAX handler'/>
       <arg name='version' type='int' info='the version, 1 or 2'/>
     </function>
-    <function name='xmlSaveClose' file='xmlsave'>
+    <function name='xmlSaveClose' file='xmlsave' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Close a document saving context, i.e. make sure that all bytes have been output and free the associated data.</info>
       <return type='int' info='the number of byte written or -1 in case of error.'/>
       <arg name='ctxt' type='xmlSaveCtxtPtr' info='a document saving context'/>
     </function>
-    <function name='xmlSaveDoc' file='xmlsave'>
+    <function name='xmlSaveDoc' file='xmlsave' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Save a full document to a saving context TODO: The function is not fully implemented yet as it does not return the byte count but 0 instead</info>
       <return type='long' info='the number of byte written or -1 in case of error'/>
       <arg name='ctxt' type='xmlSaveCtxtPtr' info='a document saving context'/>
       <arg name='doc' type='xmlDocPtr' info='a document'/>
     </function>
-    <function name='xmlSaveFile' file='tree'>
+    <function name='xmlSaveFile' file='tree' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an XML document to a file. Will use compression if compiled in and enabled. If @filename is &quot;-&quot; the stdout file is used.</info>
       <return type='int' info='the number of bytes written or -1 in case of failure.'/>
       <arg name='filename' type='const char *' info='the filename (or URL)'/>
       <arg name='cur' type='xmlDocPtr' info='the document'/>
     </function>
-    <function name='xmlSaveFileEnc' file='tree'>
+    <function name='xmlSaveFileEnc' file='tree' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an XML document, converting it to the given encoding</info>
       <return type='int' info='the number of bytes written or -1 in case of failure.'/>
@@ -12535,7 +12555,7 @@
       <arg name='cur' type='xmlDocPtr' info='the document'/>
       <arg name='encoding' type='const char *' info='the name of an encoding (or NULL)'/>
     </function>
-    <function name='xmlSaveFileTo' file='tree'>
+    <function name='xmlSaveFileTo' file='tree' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an XML document to an I/O buffer. Warning ! This call xmlOutputBufferClose() on buf which is not available after this call.</info>
       <return type='int' info='the number of bytes written or -1 in case of failure.'/>
@@ -12543,13 +12563,13 @@
       <arg name='cur' type='xmlDocPtr' info='the document'/>
       <arg name='encoding' type='const char *' info='the encoding if any assuming the I/O layer handles the trancoding'/>
     </function>
-    <function name='xmlSaveFlush' file='xmlsave'>
+    <function name='xmlSaveFlush' file='xmlsave' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Flush a document saving context, i.e. make sure that all bytes have been output.</info>
       <return type='int' info='the number of byte written or -1 in case of error.'/>
       <arg name='ctxt' type='xmlSaveCtxtPtr' info='a document saving context'/>
     </function>
-    <function name='xmlSaveFormatFile' file='tree'>
+    <function name='xmlSaveFormatFile' file='tree' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an XML document to a file. Will use compression if compiled in and enabled. If @filename is &quot;-&quot; the stdout file is used. If @format is set then the document will be indented on output. Note that @format = 1 provide node indenting only if xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was called</info>
       <return type='int' info='the number of bytes written or -1 in case of failure.'/>
@@ -12557,7 +12577,7 @@
       <arg name='cur' type='xmlDocPtr' info='the document'/>
       <arg name='format' type='int' info='should formatting spaces been added'/>
     </function>
-    <function name='xmlSaveFormatFileEnc' file='tree'>
+    <function name='xmlSaveFormatFileEnc' file='tree' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an XML document to a file or an URL.</info>
       <return type='int' info='the number of bytes written or -1 in case of error. Note that @format = 1 provide node indenting only if xmlIndentTreeOutput = 1 or xmlKeepBlanksDefault(0) was called'/>
@@ -12566,7 +12586,7 @@
       <arg name='encoding' type='const char *' info='the name of the encoding to use or NULL.'/>
       <arg name='format' type='int' info='should formatting spaces be added.'/>
     </function>
-    <function name='xmlSaveFormatFileTo' file='tree'>
+    <function name='xmlSaveFormatFileTo' file='tree' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump an XML document to an I/O buffer. Warning ! This call xmlOutputBufferClose() on buf which is not available after this call.</info>
       <return type='int' info='the number of bytes written or -1 in case of failure.'/>
@@ -12575,21 +12595,21 @@
       <arg name='encoding' type='const char *' info='the encoding if any assuming the I/O layer handles the trancoding'/>
       <arg name='format' type='int' info='should formatting spaces been added'/>
     </function>
-    <function name='xmlSaveSetAttrEscape' file='xmlsave'>
+    <function name='xmlSaveSetAttrEscape' file='xmlsave' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Set a custom escaping function to be used for text in attribute content</info>
       <return type='int' info='0 if successful or -1 in case of error.'/>
       <arg name='ctxt' type='xmlSaveCtxtPtr' info='a document saving context'/>
       <arg name='escape' type='xmlCharEncodingOutputFunc' info='the escaping function'/>
     </function>
-    <function name='xmlSaveSetEscape' file='xmlsave'>
+    <function name='xmlSaveSetEscape' file='xmlsave' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Set a custom escaping function to be used for text in element content</info>
       <return type='int' info='0 if successful or -1 in case of error.'/>
       <arg name='ctxt' type='xmlSaveCtxtPtr' info='a document saving context'/>
       <arg name='escape' type='xmlCharEncodingOutputFunc' info='the escaping function'/>
     </function>
-    <function name='xmlSaveToFd' file='xmlsave'>
+    <function name='xmlSaveToFd' file='xmlsave' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Create a document saving context serializing to a file descriptor with the encoding and the options given.</info>
       <return type='xmlSaveCtxtPtr' info='a new serialization context or NULL in case of error.'/>
@@ -12597,7 +12617,7 @@
       <arg name='encoding' type='const char *' info='the encoding name to use or NULL'/>
       <arg name='options' type='int' info='a set of xmlSaveOptions'/>
     </function>
-    <function name='xmlSaveToFilename' file='xmlsave'>
+    <function name='xmlSaveToFilename' file='xmlsave' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Create a document saving context serializing to a filename or possibly to an URL (but this is less reliable) with the encoding and the options given.</info>
       <return type='xmlSaveCtxtPtr' info='a new serialization context or NULL in case of error.'/>
@@ -12605,7 +12625,7 @@
       <arg name='encoding' type='const char *' info='the encoding name to use or NULL'/>
       <arg name='options' type='int' info='a set of xmlSaveOptions'/>
     </function>
-    <function name='xmlSaveToIO' file='xmlsave'>
+    <function name='xmlSaveToIO' file='xmlsave' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Create a document saving context serializing to a file descriptor with the encoding and the options given</info>
       <return type='xmlSaveCtxtPtr' info='a new serialization context or NULL in case of error.'/>
@@ -12615,25 +12635,25 @@
       <arg name='encoding' type='const char *' info='the encoding name to use or NULL'/>
       <arg name='options' type='int' info='a set of xmlSaveOptions'/>
     </function>
-    <function name='xmlSaveTree' file='xmlsave'>
+    <function name='xmlSaveTree' file='xmlsave' module='xmlsave'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Save a subtree starting at the node parameter to a saving context TODO: The function is not fully implemented yet as it does not return the byte count but 0 instead</info>
       <return type='long' info='the number of byte written or -1 in case of error'/>
       <arg name='ctxt' type='xmlSaveCtxtPtr' info='a document saving context'/>
       <arg name='node' type='xmlNodePtr' info='a document'/>
     </function>
-    <function name='xmlSaveUri' file='uri'>
+    <function name='xmlSaveUri' file='uri' module='uri'>
       <info>Save the URI as an escaped string</info>
       <return type='xmlChar *' info='a new string (to be deallocated by caller)'/>
       <arg name='uri' type='xmlURIPtr' info='pointer to an xmlURI'/>
     </function>
-    <function name='xmlScanName' file='parserInternals'>
+    <function name='xmlScanName' file='parserInternals' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Trickery: parse an XML name but without consuming the input flow Needed for rollback cases. Used only when parsing entities references.  TODO: seems deprecated now, only used in the default part of xmlParserHandleReference  [4] NameChar ::= Letter | Digit | &apos;.&apos; | &apos;-&apos; | &apos;_&apos; | &apos;:&apos; | CombiningChar | Extender  [5] Name ::= (Letter | &apos;_&apos; | &apos;:&apos;) (NameChar)*  [6] Names ::= Name (S Name)*</info>
       <return type='xmlChar *' info='the Name parsed or NULL'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlSchemaCheckFacet' file='xmlschemastypes'>
+    <function name='xmlSchemaCheckFacet' file='xmlschemastypes' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Checks the default values types, especially for facets</info>
       <return type='int' info='0 if okay or -1 in cae of error'/>
@@ -12642,25 +12662,25 @@
       <arg name='ctxt' type='xmlSchemaParserCtxtPtr' info='the schema parser context or NULL'/>
       <arg name='name' type='const xmlChar *' info='name of the type'/>
     </function>
-    <function name='xmlSchemaCleanupTypes' file='xmlschemastypes'>
+    <function name='xmlSchemaCleanupTypes' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Cleanup the default XML Schemas type library</info>
       <return type='void'/>
     </function>
-    <function name='xmlSchemaCollapseString' file='xmlschemastypes'>
+    <function name='xmlSchemaCollapseString' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Removes and normalize white spaces in the string</info>
       <return type='xmlChar *' info='the new string or NULL if no change was required.'/>
       <arg name='value' type='const xmlChar *' info='a value'/>
     </function>
-    <function name='xmlSchemaCompareValues' file='xmlschemastypes'>
+    <function name='xmlSchemaCompareValues' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Compare 2 values</info>
       <return type='int' info='-1 if x &lt; y, 0 if x == y, 1 if x &gt; y, 2 if x &lt;&gt; y, and -2 in case of error'/>
       <arg name='x' type='xmlSchemaValPtr' info='a first value'/>
       <arg name='y' type='xmlSchemaValPtr' info='a second value'/>
     </function>
-    <function name='xmlSchemaCompareValuesWhtsp' file='xmlschemastypes'>
+    <function name='xmlSchemaCompareValuesWhtsp' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Compare 2 values</info>
       <return type='int' info='-1 if x &lt; y, 0 if x == y, 1 if x &gt; y, 2 if x &lt;&gt; y, and -2 in case of error'/>
@@ -12669,87 +12689,87 @@
       <arg name='y' type='xmlSchemaValPtr' info='a second value'/>
       <arg name='yws' type='xmlSchemaWhitespaceValueType' info='the whitespace value of y'/>
     </function>
-    <function name='xmlSchemaCopyValue' file='xmlschemastypes'>
+    <function name='xmlSchemaCopyValue' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Copies the precomputed value. This duplicates any string within.</info>
       <return type='xmlSchemaValPtr' info='the copy or NULL if a copy for a data-type is not implemented.'/>
       <arg name='val' type='xmlSchemaValPtr' info='the precomputed value to be copied'/>
     </function>
-    <function name='xmlSchemaDump' file='xmlschemas'>
+    <function name='xmlSchemaDump' file='xmlschemas' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Dump a Schema structure.</info>
       <return type='void'/>
       <arg name='output' type='FILE *' info='the file output'/>
       <arg name='schema' type='xmlSchemaPtr' info='a schema structure'/>
     </function>
-    <function name='xmlSchemaFree' file='xmlschemas'>
+    <function name='xmlSchemaFree' file='xmlschemas' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Deallocate a Schema structure.</info>
       <return type='void'/>
       <arg name='schema' type='xmlSchemaPtr' info='a schema structure'/>
     </function>
-    <function name='xmlSchemaFreeFacet' file='xmlschemastypes'>
+    <function name='xmlSchemaFreeFacet' file='xmlschemastypes' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Deallocate a Schema Facet structure.</info>
       <return type='void'/>
       <arg name='facet' type='xmlSchemaFacetPtr' info='a schema facet structure'/>
     </function>
-    <function name='xmlSchemaFreeParserCtxt' file='xmlschemas'>
+    <function name='xmlSchemaFreeParserCtxt' file='xmlschemas' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Free the resources associated to the schema parser context</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlSchemaParserCtxtPtr' info='the schema parser context'/>
     </function>
-    <function name='xmlSchemaFreeType' file='schemasInternals'>
+    <function name='xmlSchemaFreeType' file='schemasInternals' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Deallocate a Schema Type structure.</info>
       <return type='void'/>
       <arg name='type' type='xmlSchemaTypePtr' info='a schema type structure'/>
     </function>
-    <function name='xmlSchemaFreeValidCtxt' file='xmlschemas'>
+    <function name='xmlSchemaFreeValidCtxt' file='xmlschemas' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Free the resources associated to the schema validation context</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlSchemaValidCtxtPtr' info='the schema validation context'/>
     </function>
-    <function name='xmlSchemaFreeValue' file='xmlschemastypes'>
+    <function name='xmlSchemaFreeValue' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Cleanup the default XML Schemas type library</info>
       <return type='void'/>
       <arg name='value' type='xmlSchemaValPtr' info='the value to free'/>
     </function>
-    <function name='xmlSchemaFreeWildcard' file='schemasInternals'>
+    <function name='xmlSchemaFreeWildcard' file='schemasInternals' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Deallocates a wildcard structure.</info>
       <return type='void'/>
       <arg name='wildcard' type='xmlSchemaWildcardPtr' info='a wildcard structure'/>
     </function>
-    <function name='xmlSchemaGetBuiltInListSimpleTypeItemType' file='xmlschemastypes'>
+    <function name='xmlSchemaGetBuiltInListSimpleTypeItemType' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Lookup function</info>
       <return type='xmlSchemaTypePtr' info='the item type of @type as defined by the built-in datatype hierarchy of XML Schema Part 2: Datatypes, or NULL in case of an error.'/>
       <arg name='type' type='xmlSchemaTypePtr' info='the built-in simple type.'/>
     </function>
-    <function name='xmlSchemaGetBuiltInType' file='xmlschemastypes'>
+    <function name='xmlSchemaGetBuiltInType' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Gives you the type struct for a built-in type by its type id.</info>
       <return type='xmlSchemaTypePtr' info='the type if found, NULL otherwise.'/>
       <arg name='type' type='xmlSchemaValType' info='the type of the built in type'/>
     </function>
-    <function name='xmlSchemaGetCanonValue' file='xmlschemastypes'>
+    <function name='xmlSchemaGetCanonValue' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
-      <info>Get a the cononical representation of the value. The caller has to free the returned retValue.</info>
-      <return type='int' info='0 if the value could be built and -1 in case of API errors or if the value type is not supported yet.'/>
+      <info>Get a the cononical lexical representation of the value. The caller has to free the returned retValue. WARNING: Some value types are not supported yet, resulting in a @retValue of &quot;???&quot;.</info>
+      <return type='int' info='0 if the value could be built and -1 in case of API errors.'/>
       <arg name='val' type='xmlSchemaValPtr' info='the precomputed value'/>
       <arg name='retValue' type='const xmlChar **' info='the returned value'/>
     </function>
-    <function name='xmlSchemaGetFacetValueAsULong' file='xmlschemastypes'>
+    <function name='xmlSchemaGetFacetValueAsULong' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Extract the value of a facet</info>
       <return type='unsigned long' info='the value as a long'/>
       <arg name='facet' type='xmlSchemaFacetPtr' info='an schemas type facet'/>
     </function>
-    <function name='xmlSchemaGetParserErrors' file='xmlschemas'>
+    <function name='xmlSchemaGetParserErrors' file='xmlschemas' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Get the callback information used to handle errors for a parser context</info>
       <return type='int' info='-1 in case of failure, 0 otherwise'/>
@@ -12758,15 +12778,21 @@
       <arg name='warn' type='xmlSchemaValidityWarningFunc *' info='the warning callback result'/>
       <arg name='ctx' type='void **' info='contextual data for the callbacks result'/>
     </function>
-    <function name='xmlSchemaGetPredefinedType' file='xmlschemastypes'>
+    <function name='xmlSchemaGetPredefinedType' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Lookup a type in the default XML Schemas type library</info>
       <return type='xmlSchemaTypePtr' info='the type if found, NULL otherwise'/>
       <arg name='name' type='const xmlChar *' info='the type name'/>
       <arg name='ns' type='const xmlChar *' info='the URI of the namespace usually &quot;http://www.w3.org/2001/XMLSchema&quot;'/>
     </function>
-    <function name='xmlSchemaGetValidErrors' file='xmlschemas'>
+    <function name='xmlSchemaGetValType' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
+      <info>Accessor for the type of a value</info>
+      <return type='xmlSchemaValType' info='the xmlSchemaValType of the value'/>
+      <arg name='val' type='xmlSchemaValPtr' info='a schemas value'/>
+    </function>
+    <function name='xmlSchemaGetValidErrors' file='xmlschemas' module='xmlschemas'>
+      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Get the error and warning callback informations</info>
       <return type='int' info='-1 in case of error and 0 otherwise'/>
       <arg name='ctxt' type='xmlSchemaValidCtxtPtr' info='a XML-Schema validation context'/>
@@ -12774,69 +12800,69 @@
       <arg name='warn' type='xmlSchemaValidityWarningFunc *' info='the warning function result'/>
       <arg name='ctx' type='void **' info='the functions context result'/>
     </function>
-    <function name='xmlSchemaInitTypes' file='xmlschemastypes'>
+    <function name='xmlSchemaInitTypes' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Initialize the default XML Schemas type library</info>
       <return type='void'/>
     </function>
-    <function name='xmlSchemaIsBuiltInTypeFacet' file='xmlschemastypes'>
+    <function name='xmlSchemaIsBuiltInTypeFacet' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Evaluates if a specific facet can be used in conjunction with a type.</info>
       <return type='int' info='1 if the facet can be used with the given built-in type, 0 otherwise and -1 in case the type is not a built-in type.'/>
       <arg name='type' type='xmlSchemaTypePtr' info='the built-in type'/>
       <arg name='facetType' type='int' info='the facet type'/>
     </function>
-    <function name='xmlSchemaNewDocParserCtxt' file='xmlschemas'>
+    <function name='xmlSchemaNewDocParserCtxt' file='xmlschemas' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Create an XML Schemas parse context for that document. NB. The document may be modified during the parsing process.</info>
       <return type='xmlSchemaParserCtxtPtr' info='the parser context or NULL in case of error'/>
       <arg name='doc' type='xmlDocPtr' info='a preparsed document tree'/>
     </function>
-    <function name='xmlSchemaNewFacet' file='xmlschemastypes'>
+    <function name='xmlSchemaNewFacet' file='xmlschemastypes' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Allocate a new Facet structure.</info>
       <return type='xmlSchemaFacetPtr' info='the newly allocated structure or NULL in case or error'/>
     </function>
-    <function name='xmlSchemaNewMemParserCtxt' file='xmlschemas'>
+    <function name='xmlSchemaNewMemParserCtxt' file='xmlschemas' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Create an XML Schemas parse context for that memory buffer expected to contain an XML Schemas file.</info>
       <return type='xmlSchemaParserCtxtPtr' info='the parser context or NULL in case of error'/>
       <arg name='buffer' type='const char *' info='a pointer to a char array containing the schemas'/>
       <arg name='size' type='int' info='the size of the array'/>
     </function>
-    <function name='xmlSchemaNewNOTATIONValue' file='xmlschemastypes'>
+    <function name='xmlSchemaNewNOTATIONValue' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Allocate a new NOTATION value.</info>
       <return type='xmlSchemaValPtr' info='a pointer to the new value or NULL in case of error'/>
       <arg name='name' type='const xmlChar *' info='the notation name'/>
       <arg name='ns' type='const xmlChar *' info='the notation namespace name or NULL'/>
     </function>
-    <function name='xmlSchemaNewParserCtxt' file='xmlschemas'>
+    <function name='xmlSchemaNewParserCtxt' file='xmlschemas' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Create an XML Schemas parse context for that file/resource expected to contain an XML Schemas file.</info>
       <return type='xmlSchemaParserCtxtPtr' info='the parser context or NULL in case of error'/>
       <arg name='URL' type='const char *' info='the location of the schema'/>
     </function>
-    <function name='xmlSchemaNewStringValue' file='xmlschemastypes'>
+    <function name='xmlSchemaNewStringValue' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Allocate a new simple type value. The type can be of XML_SCHEMAS_STRING. WARNING: This one is intended to be expanded for other string based types. We need this for anySimpleType as well.</info>
       <return type='xmlSchemaValPtr' info='a pointer to the new value or NULL in case of error'/>
       <arg name='type' type='xmlSchemaValType' info='the value type'/>
       <arg name='value' type='const xmlChar *' info='the value'/>
     </function>
-    <function name='xmlSchemaNewValidCtxt' file='xmlschemas'>
+    <function name='xmlSchemaNewValidCtxt' file='xmlschemas' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Create an XML Schemas validation context based on the given schema.</info>
       <return type='xmlSchemaValidCtxtPtr' info='the validation context or NULL in case of error'/>
       <arg name='schema' type='xmlSchemaPtr' info='a precompiled XML Schemas'/>
     </function>
-    <function name='xmlSchemaParse' file='xmlschemas'>
+    <function name='xmlSchemaParse' file='xmlschemas' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>parse a schema definition resource and build an internal XML Shema struture which can be used to validate instances. *WARNING* this interface is highly subject to change</info>
       <return type='xmlSchemaPtr' info='the internal XML Schema structure built from the resource or NULL in case of error'/>
       <arg name='ctxt' type='xmlSchemaParserCtxtPtr' info='a schema validation context'/>
     </function>
-    <function name='xmlSchemaSetParserErrors' file='xmlschemas'>
+    <function name='xmlSchemaSetParserErrors' file='xmlschemas' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Set the callback functions used to handle errors for a validation context</info>
       <return type='void'/>
@@ -12845,7 +12871,7 @@
       <arg name='warn' type='xmlSchemaValidityWarningFunc' info='the warning callback'/>
       <arg name='ctx' type='void *' info='contextual data for the callbacks'/>
     </function>
-    <function name='xmlSchemaSetValidErrors' file='xmlschemas'>
+    <function name='xmlSchemaSetValidErrors' file='xmlschemas' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Set the error and warning callback informations</info>
       <return type='void'/>
@@ -12854,14 +12880,14 @@
       <arg name='warn' type='xmlSchemaValidityWarningFunc' info='the warning function'/>
       <arg name='ctx' type='void *' info='the functions context'/>
     </function>
-    <function name='xmlSchemaSetValidOptions' file='xmlschemas'>
+    <function name='xmlSchemaSetValidOptions' file='xmlschemas' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Sets the options to be used during the validation.</info>
       <return type='int' info='0 in case of success, -1 in case of an API error.'/>
       <arg name='ctxt' type='xmlSchemaValidCtxtPtr' info='a schema validation context'/>
       <arg name='options' type='int' info='a combination of xmlSchemaValidOption'/>
     </function>
-    <function name='xmlSchemaValPredefTypeNode' file='xmlschemastypes'>
+    <function name='xmlSchemaValPredefTypeNode' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Check that a value conforms to the lexical space of the predefined type. if true a value is computed and returned in @val.</info>
       <return type='int' info='0 if this validates, a positive error code number otherwise and -1 in case of internal or API error.'/>
@@ -12870,7 +12896,7 @@
       <arg name='val' type='xmlSchemaValPtr *' info='the return computed value'/>
       <arg name='node' type='xmlNodePtr' info='the node containing the value'/>
     </function>
-    <function name='xmlSchemaValPredefTypeNodeNoNorm' file='xmlschemastypes'>
+    <function name='xmlSchemaValPredefTypeNodeNoNorm' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Check that a value conforms to the lexical space of the predefined type. if true a value is computed and returned in @val. This one does apply any normalization to the value.</info>
       <return type='int' info='0 if this validates, a positive error code number otherwise and -1 in case of internal or API error.'/>
@@ -12879,20 +12905,20 @@
       <arg name='val' type='xmlSchemaValPtr *' info='the return computed value'/>
       <arg name='node' type='xmlNodePtr' info='the node containing the value'/>
     </function>
-    <function name='xmlSchemaValidCtxtGetOptions' file='xmlschemas'>
+    <function name='xmlSchemaValidCtxtGetOptions' file='xmlschemas' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Get the validation context options.</info>
       <return type='int' info='the option combination or -1 on error.'/>
       <arg name='ctxt' type='xmlSchemaValidCtxtPtr' info='a schema validation context'/>
     </function>
-    <function name='xmlSchemaValidateDoc' file='xmlschemas'>
+    <function name='xmlSchemaValidateDoc' file='xmlschemas' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Validate a document tree in memory.</info>
       <return type='int' info='0 if the document is schemas valid, a positive error code number otherwise and -1 in case of internal or API error.'/>
       <arg name='ctxt' type='xmlSchemaValidCtxtPtr' info='a schema validation context'/>
       <arg name='doc' type='xmlDocPtr' info='a parsed document tree'/>
     </function>
-    <function name='xmlSchemaValidateFacet' file='xmlschemastypes'>
+    <function name='xmlSchemaValidateFacet' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Check a value against a facet condition</info>
       <return type='int' info='0 if the element is schemas valid, a positive error code number otherwise and -1 in case of internal or API error.'/>
@@ -12901,8 +12927,19 @@
       <arg name='value' type='const xmlChar *' info='the lexical repr of the value to validate'/>
       <arg name='val' type='xmlSchemaValPtr' info='the precomputed value'/>
     </function>
-    <function name='xmlSchemaValidateLengthFacet' file='xmlschemastypes'>
+    <function name='xmlSchemaValidateFacetWhtsp' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
+      <info>Check a value against a facet condition. This takes value normalization according to the specified whitespace types into account. Note that @value needs to be the *normalized* value if the facet is of type &quot;pattern&quot;.</info>
+      <return type='int' info='0 if the element is schemas valid, a positive error code number otherwise and -1 in case of internal or API error.'/>
+      <arg name='facet' type='xmlSchemaFacetPtr' info='the facet to check'/>
+      <arg name='fws' type='xmlSchemaWhitespaceValueType' info='the whitespace type of the facet&apos;s value'/>
+      <arg name='valType' type='xmlSchemaValType' info='the built-in type of the value'/>
+      <arg name='value' type='const xmlChar *' info='the lexical (or normalized for pattern) repr of the value to validate'/>
+      <arg name='val' type='xmlSchemaValPtr' info='the precomputed value'/>
+      <arg name='ws' type='xmlSchemaWhitespaceValueType' info='the whitespace type of the value'/>
+    </function>
+    <function name='xmlSchemaValidateLengthFacet' file='xmlschemastypes' module='xmlschemastypes'>
+      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Checka a value against a &quot;length&quot;, &quot;minLength&quot; and &quot;maxLength&quot; facet; sets @length to the computed length of @value.</info>
       <return type='int' info='0 if the value is valid, a positive error code otherwise and -1 in case of an internal or API error.'/>
       <arg name='type' type='xmlSchemaTypePtr' info='the built-in type'/>
@@ -12911,8 +12948,19 @@
       <arg name='val' type='xmlSchemaValPtr' info='the precomputed value'/>
       <arg name='length' type='unsigned long *' info='the actual length of the value'/>
     </function>
-    <function name='xmlSchemaValidateListSimpleTypeFacet' file='xmlschemastypes'>
+    <function name='xmlSchemaValidateLengthFacetWhtsp' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
+      <info>Checka a value against a &quot;length&quot;, &quot;minLength&quot; and &quot;maxLength&quot; facet; sets @length to the computed length of @value.</info>
+      <return type='int' info='0 if the value is valid, a positive error code otherwise and -1 in case of an internal or API error.'/>
+      <arg name='facet' type='xmlSchemaFacetPtr' info='the facet to check'/>
+      <arg name='valType' type='xmlSchemaValType' info='the built-in type'/>
+      <arg name='value' type='const xmlChar *' info='the lexical repr. of the value to be validated'/>
+      <arg name='val' type='xmlSchemaValPtr' info='the precomputed value'/>
+      <arg name='length' type='unsigned long *' info='the actual length of the value'/>
+      <arg name='ws' type='xmlSchemaWhitespaceValueType' info='the whitespace type of the value'/>
+    </function>
+    <function name='xmlSchemaValidateListSimpleTypeFacet' file='xmlschemastypes' module='xmlschemastypes'>
+      <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Checks the value of a list simple type against a facet.</info>
       <return type='int' info='0 if the value is valid, a positive error code number otherwise and -1 in case of an internal error.'/>
       <arg name='facet' type='xmlSchemaFacetPtr' info='the facet to check'/>
@@ -12920,14 +12968,14 @@
       <arg name='actualLen' type='unsigned long' info='the number of list items'/>
       <arg name='expectedLen' type='unsigned long *' info='the resulting expected number of list items'/>
     </function>
-    <function name='xmlSchemaValidateOneElement' file='xmlschemas'>
+    <function name='xmlSchemaValidateOneElement' file='xmlschemas' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Validate a branch of a tree, starting with the given @elem.</info>
       <return type='int' info='0 if the element and its subtree is valid, a positive error code number otherwise and -1 in case of an internal or API error.'/>
       <arg name='ctxt' type='xmlSchemaValidCtxtPtr' info='a schema validation context'/>
       <arg name='elem' type='xmlNodePtr' info='an element node'/>
     </function>
-    <function name='xmlSchemaValidatePredefinedType' file='xmlschemastypes'>
+    <function name='xmlSchemaValidatePredefinedType' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Check that a value conforms to the lexical space of the predefined type. if true a value is computed and returned in @val.</info>
       <return type='int' info='0 if this validates, a positive error code number otherwise and -1 in case of internal or API error.'/>
@@ -12935,7 +12983,7 @@
       <arg name='value' type='const xmlChar *' info='the value to check'/>
       <arg name='val' type='xmlSchemaValPtr *' info='the return computed value'/>
     </function>
-    <function name='xmlSchemaValidateStream' file='xmlschemas'>
+    <function name='xmlSchemaValidateStream' file='xmlschemas' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Validate a document tree in memory.</info>
       <return type='int' info='0 if the document is schemas valid, a positive error code number otherwise and -1 in case of internal or API error.'/>
@@ -12945,7 +12993,7 @@
       <arg name='sax' type='xmlSAXHandlerPtr' info='a SAX handler for the resulting events'/>
       <arg name='user_data' type='void *' info='the context to provide to the SAX handler.'/>
     </function>
-    <functype name='xmlSchemaValidityErrorFunc' file='xmlschemas'>
+    <functype name='xmlSchemaValidityErrorFunc' file='xmlschemas' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info></info>
       <return type='void'/>
@@ -12953,7 +13001,7 @@
       <arg name='msg' type='const char *' info=''/>
       <arg name='...' type='...' info=''/>
     </functype>
-    <functype name='xmlSchemaValidityWarningFunc' file='xmlschemas'>
+    <functype name='xmlSchemaValidityWarningFunc' file='xmlschemas' module='xmlschemas'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info></info>
       <return type='void'/>
@@ -12961,54 +13009,54 @@
       <arg name='msg' type='const char *' info=''/>
       <arg name='...' type='...' info=''/>
     </functype>
-    <function name='xmlSchemaWhiteSpaceReplace' file='xmlschemastypes'>
+    <function name='xmlSchemaWhiteSpaceReplace' file='xmlschemastypes' module='xmlschemastypes'>
       <cond>defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Replaces 0xd, 0x9 and 0xa with a space.</info>
       <return type='xmlChar *' info='the new string or NULL if no change was required.'/>
       <arg name='value' type='const xmlChar *' info='a value'/>
     </function>
-    <function name='xmlSearchNs' file='tree'>
+    <function name='xmlSearchNs' file='tree' module='tree'>
       <info>Search a Ns registered under a given name space for a document. recurse on the parents until it finds the defined namespace or return NULL otherwise. @nameSpace can be NULL, this is a search for the default namespace. We don&apos;t allow to cross entities boundaries. If you don&apos;t declare the namespace within those you will be in troubles !!! A warning is generated to cover this case.</info>
       <return type='xmlNsPtr' info='the namespace pointer or NULL.'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='node' type='xmlNodePtr' info='the current node'/>
       <arg name='nameSpace' type='const xmlChar *' info='the namespace prefix'/>
     </function>
-    <function name='xmlSearchNsByHref' file='tree'>
+    <function name='xmlSearchNsByHref' file='tree' module='tree'>
       <info>Search a Ns aliasing a given URI. Recurse on the parents until it finds the defined namespace or return NULL otherwise.</info>
       <return type='xmlNsPtr' info='the namespace pointer or NULL.'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='node' type='xmlNodePtr' info='the current node'/>
       <arg name='href' type='const xmlChar *' info='the namespace value'/>
     </function>
-    <function name='xmlSetBufferAllocationScheme' file='tree'>
+    <function name='xmlSetBufferAllocationScheme' file='tree' module='tree'>
       <info>Set the buffer allocation method.  Types are XML_BUFFER_ALLOC_EXACT - use exact sizes, keeps memory usage down XML_BUFFER_ALLOC_DOUBLEIT - double buffer when extra needed, improves performance</info>
       <return type='void'/>
       <arg name='scheme' type='xmlBufferAllocationScheme' info='allocation method to use'/>
     </function>
-    <function name='xmlSetCompressMode' file='tree'>
+    <function name='xmlSetCompressMode' file='tree' module='tree'>
       <info>set the default compression mode used, ZLIB based Correct values: 0 (uncompressed) to 9 (max compression)</info>
       <return type='void'/>
       <arg name='mode' type='int' info='the compression ratio'/>
     </function>
-    <function name='xmlSetDocCompressMode' file='tree'>
+    <function name='xmlSetDocCompressMode' file='tree' module='tree'>
       <info>set the compression ratio for a document, ZLIB based Correct values: 0 (uncompressed) to 9 (max compression)</info>
       <return type='void'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='mode' type='int' info='the compression ratio'/>
     </function>
-    <function name='xmlSetEntityReferenceFunc' file='parserInternals'>
+    <function name='xmlSetEntityReferenceFunc' file='parserInternals' module='parser'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Set the function to call call back when a xml reference has been made</info>
       <return type='void'/>
       <arg name='func' type='xmlEntityReferenceFunc' info='A valid function'/>
     </function>
-    <function name='xmlSetExternalEntityLoader' file='parser'>
+    <function name='xmlSetExternalEntityLoader' file='parser' module='xmlIO'>
       <info>Changes the defaultexternal entity resolver function for the application</info>
       <return type='void'/>
       <arg name='f' type='xmlExternalEntityLoader' info='the new entity resolver function'/>
     </function>
-    <function name='xmlSetFeature' file='parser'>
+    <function name='xmlSetFeature' file='parser' module='legacy'>
       <cond>defined(LIBXML_LEGACY_ENABLED)</cond>
       <info>Change the current value of one feature of this parser instance</info>
       <return type='int' info='-1 in case or error, 0 otherwise'/>
@@ -13016,25 +13064,25 @@
       <arg name='name' type='const char *' info='the feature name'/>
       <arg name='value' type='void *' info='pointer to the location of the new value'/>
     </function>
-    <function name='xmlSetGenericErrorFunc' file='xmlerror'>
+    <function name='xmlSetGenericErrorFunc' file='xmlerror' module='error'>
       <info>Function to reset the handler and the error context for out of context error messages. This simply means that @handler will be called for subsequent error messages while not parsing nor validating. And @ctx will be passed as first argument to @handler One can simply force messages to be emitted to another FILE * than stderr by setting @ctx to this file handle and @handler to NULL. For multi-threaded applications, this must be set separately for each thread.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the new error handling context'/>
       <arg name='handler' type='xmlGenericErrorFunc' info='the new handler function'/>
     </function>
-    <function name='xmlSetListDoc' file='tree'>
+    <function name='xmlSetListDoc' file='tree' module='tree'>
       <info>update all nodes in the list to point to the right document</info>
       <return type='void'/>
       <arg name='list' type='xmlNodePtr' info='the first element'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
     </function>
-    <function name='xmlSetNs' file='tree'>
+    <function name='xmlSetNs' file='tree' module='tree'>
       <info>Associate a namespace to a node, a posteriori.</info>
       <return type='void'/>
       <arg name='node' type='xmlNodePtr' info='a node in the document'/>
       <arg name='ns' type='xmlNsPtr' info='a namespace pointer'/>
     </function>
-    <function name='xmlSetNsProp' file='tree'>
+    <function name='xmlSetNsProp' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED)</cond>
       <info>Set (or reset) an attribute carried by a node. The ns structure must be in scope, this is not checked.</info>
       <return type='xmlAttrPtr' info='the attribute pointer.'/>
@@ -13043,7 +13091,7 @@
       <arg name='name' type='const xmlChar *' info='the attribute name'/>
       <arg name='value' type='const xmlChar *' info='the attribute value'/>
     </function>
-    <function name='xmlSetProp' file='tree'>
+    <function name='xmlSetProp' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED)</cond>
       <info>Set (or reset) an attribute carried by a node.</info>
       <return type='xmlAttrPtr' info='the attribute pointer.'/>
@@ -13051,19 +13099,19 @@
       <arg name='name' type='const xmlChar *' info='the attribute name'/>
       <arg name='value' type='const xmlChar *' info='the attribute value'/>
     </function>
-    <function name='xmlSetStructuredErrorFunc' file='xmlerror'>
+    <function name='xmlSetStructuredErrorFunc' file='xmlerror' module='error'>
       <info>Function to reset the handler and the error context for out of context structured error messages. This simply means that @handler will be called for subsequent error messages while not parsing nor validating. And @ctx will be passed as first argument to @handler For multi-threaded applications, this must be set separately for each thread.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='the new error handling context'/>
       <arg name='handler' type='xmlStructuredErrorFunc' info='the new handler function'/>
     </function>
-    <function name='xmlSetTreeDoc' file='tree'>
+    <function name='xmlSetTreeDoc' file='tree' module='tree'>
       <info>update all nodes under the tree to point to the right document</info>
       <return type='void'/>
       <arg name='tree' type='xmlNodePtr' info='the top element'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
     </function>
-    <function name='xmlSetupParserForBuffer' file='parser'>
+    <function name='xmlSetupParserForBuffer' file='parser' module='parser'>
       <cond>defined(LIBXML_SAX1_ENABLED)</cond>
       <info>Setup the parser context to parse a new buffer; Clears any prior contents from the parser context. The buffer parameter must not be NULL, but the filename parameter can be</info>
       <return type='void'/>
@@ -13071,7 +13119,7 @@
       <arg name='buffer' type='const xmlChar *' info='a xmlChar * buffer'/>
       <arg name='filename' type='const char *' info='a file name'/>
     </function>
-    <function name='xmlShell' file='debugXML'>
+    <function name='xmlShell' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implements the XML shell This allow to load, validate, view, modify and save a document using a environment similar to a UNIX commandline.</info>
       <return type='void'/>
@@ -13080,7 +13128,7 @@
       <arg name='input' type='xmlShellReadlineFunc' info='the line reading function'/>
       <arg name='output' type='FILE *' info='the output FILE*, defaults to stdout if NULL'/>
     </function>
-    <function name='xmlShellBase' file='debugXML'>
+    <function name='xmlShellBase' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implements the XML shell function &quot;base&quot; dumps the current XML base of the node</info>
       <return type='int' info='0'/>
@@ -13089,7 +13137,7 @@
       <arg name='node' type='xmlNodePtr' info='a node'/>
       <arg name='node2' type='xmlNodePtr' info='unused'/>
     </function>
-    <function name='xmlShellCat' file='debugXML'>
+    <function name='xmlShellCat' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Implements the XML shell function &quot;cat&quot; dumps the serialization node content (XML or HTML).</info>
       <return type='int' info='0'/>
@@ -13098,7 +13146,7 @@
       <arg name='node' type='xmlNodePtr' info='a node'/>
       <arg name='node2' type='xmlNodePtr' info='unused'/>
     </function>
-    <functype name='xmlShellCmd' file='debugXML'>
+    <functype name='xmlShellCmd' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED)</cond>
       <info>This is a generic signature for the XML shell functions.</info>
       <return type='int' info='an int, negative returns indicating errors.'/>
@@ -13107,7 +13155,7 @@
       <arg name='node' type='xmlNodePtr' info='a first node'/>
       <arg name='node2' type='xmlNodePtr' info='a second node'/>
     </functype>
-    <function name='xmlShellDir' file='debugXML'>
+    <function name='xmlShellDir' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implements the XML shell function &quot;dir&quot; dumps informations about the node (namespace, attributes, content).</info>
       <return type='int' info='0'/>
@@ -13116,7 +13164,7 @@
       <arg name='node' type='xmlNodePtr' info='a node'/>
       <arg name='node2' type='xmlNodePtr' info='unused'/>
     </function>
-    <function name='xmlShellDu' file='debugXML'>
+    <function name='xmlShellDu' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implements the XML shell function &quot;du&quot; show the structure of the subtree under node @tree If @tree is null, the command works on the current node.</info>
       <return type='int' info='0 or -1 in case of error'/>
@@ -13125,7 +13173,7 @@
       <arg name='tree' type='xmlNodePtr' info='a node defining a subtree'/>
       <arg name='node2' type='xmlNodePtr' info='unused'/>
     </function>
-    <function name='xmlShellList' file='debugXML'>
+    <function name='xmlShellList' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implements the XML shell function &quot;ls&quot; Does an Unix like listing of the given node (like a directory)</info>
       <return type='int' info='0'/>
@@ -13134,7 +13182,7 @@
       <arg name='node' type='xmlNodePtr' info='a node'/>
       <arg name='node2' type='xmlNodePtr' info='unused'/>
     </function>
-    <function name='xmlShellLoad' file='debugXML'>
+    <function name='xmlShellLoad' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implements the XML shell function &quot;load&quot; loads a new document specified by the filename</info>
       <return type='int' info='0 or -1 if loading failed'/>
@@ -13143,26 +13191,26 @@
       <arg name='node' type='xmlNodePtr' info='unused'/>
       <arg name='node2' type='xmlNodePtr' info='unused'/>
     </function>
-    <function name='xmlShellPrintNode' file='debugXML'>
+    <function name='xmlShellPrintNode' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Print node to the output FILE</info>
       <return type='void'/>
       <arg name='node' type='xmlNodePtr' info='a non-null node to print to the output FILE'/>
     </function>
-    <function name='xmlShellPrintXPathError' file='debugXML'>
+    <function name='xmlShellPrintXPathError' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Print the xpath error to libxml default error channel</info>
       <return type='void'/>
       <arg name='errorType' type='int' info='valid xpath error id'/>
       <arg name='arg' type='const char *' info='the argument that cause xpath to fail'/>
     </function>
-    <function name='xmlShellPrintXPathResult' file='debugXML'>
+    <function name='xmlShellPrintXPathResult' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Prints result to the output FILE</info>
       <return type='void'/>
       <arg name='list' type='xmlXPathObjectPtr' info='a valid result generated by an xpath evaluation'/>
     </function>
-    <function name='xmlShellPwd' file='debugXML'>
+    <function name='xmlShellPwd' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implements the XML shell function &quot;pwd&quot; Show the full path from the root to the node, if needed building thumblers when similar elements exists at a given ancestor level. The output is compatible with XPath commands.</info>
       <return type='int' info='0 or -1 in case of error'/>
@@ -13171,13 +13219,13 @@
       <arg name='node' type='xmlNodePtr' info='a node'/>
       <arg name='node2' type='xmlNodePtr' info='unused'/>
     </function>
-    <functype name='xmlShellReadlineFunc' file='debugXML'>
+    <functype name='xmlShellReadlineFunc' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED)</cond>
       <info>This is a generic signature for the XML shell input function.</info>
       <return type='char *' info='a string which will be freed by the Shell.'/>
       <arg name='prompt' type='char *' info='a string prompt'/>
     </functype>
-    <function name='xmlShellSave' file='debugXML'>
+    <function name='xmlShellSave' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Implements the XML shell function &quot;save&quot; Write the current document to the filename, or it&apos;s original name</info>
       <return type='int' info='0 or -1 in case of error'/>
@@ -13186,7 +13234,7 @@
       <arg name='node' type='xmlNodePtr' info='unused'/>
       <arg name='node2' type='xmlNodePtr' info='unused'/>
     </function>
-    <function name='xmlShellValidate' file='debugXML'>
+    <function name='xmlShellValidate' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED) &amp;&amp; defined(LIBXML_VALID_ENABLED)</cond>
       <info>Implements the XML shell function &quot;validate&quot; Validate the document, if a DTD path is provided, then the validation is done against the given DTD.</info>
       <return type='int' info='0 or -1 in case of error'/>
@@ -13195,7 +13243,7 @@
       <arg name='node' type='xmlNodePtr' info='unused'/>
       <arg name='node2' type='xmlNodePtr' info='unused'/>
     </function>
-    <function name='xmlShellWrite' file='debugXML'>
+    <function name='xmlShellWrite' file='debugXML' module='debugXML'>
       <cond>defined(LIBXML_DEBUG_ENABLED) &amp;&amp; defined(LIBXML_XPATH_ENABLED) &amp;&amp; defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Implements the XML shell function &quot;write&quot; Write the current node to the filename, it saves the serialization of the subtree under the @node specified</info>
       <return type='int' info='0 or -1 in case of error'/>
@@ -13204,12 +13252,12 @@
       <arg name='node' type='xmlNodePtr' info='a node in the tree'/>
       <arg name='node2' type='xmlNodePtr' info='unused'/>
     </function>
-    <function name='xmlSkipBlankChars' file='parserInternals'>
+    <function name='xmlSkipBlankChars' file='parserInternals' module='parser'>
       <info>skip all blanks character found at that point in the input streams. It pops up finished entities in the process if allowable at that point.</info>
       <return type='int' info='the number of space chars skipped'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='the XML parser context'/>
     </function>
-    <function name='xmlSnprintfElementContent' file='valid'>
+    <function name='xmlSnprintfElementContent' file='valid' module='valid'>
       <info>This will dump the content of the element content definition Intended just for the debug routine</info>
       <return type='void'/>
       <arg name='buf' type='char *' info='an output buffer'/>
@@ -13217,26 +13265,26 @@
       <arg name='content' type='xmlElementContentPtr' info='An element table'/>
       <arg name='glob' type='int' info='1 if one must print the englobing parenthesis, 0 otherwise'/>
     </function>
-    <function name='xmlSplitQName' file='parserInternals'>
+    <function name='xmlSplitQName' file='parserInternals' module='parser'>
       <info>parse an UTF8 encoded XML qualified name string  [NS 5] QName ::= (Prefix &apos;:&apos;)? LocalPart  [NS 6] Prefix ::= NCName  [NS 7] LocalPart ::= NCName</info>
       <return type='xmlChar *' info='the local part, and prefix is updated to get the Prefix if any.'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
       <arg name='name' type='const xmlChar *' info='an XML parser context'/>
       <arg name='prefix' type='xmlChar **' info='a xmlChar **'/>
     </function>
-    <function name='xmlSplitQName2' file='tree'>
+    <function name='xmlSplitQName2' file='tree' module='tree'>
       <info>parse an XML qualified name string  [NS 5] QName ::= (Prefix &apos;:&apos;)? LocalPart  [NS 6] Prefix ::= NCName  [NS 7] LocalPart ::= NCName</info>
       <return type='xmlChar *' info='NULL if not a QName, otherwise the local part, and prefix is updated to get the Prefix if any.'/>
       <arg name='name' type='const xmlChar *' info='the full QName'/>
       <arg name='prefix' type='xmlChar **' info='a xmlChar **'/>
     </function>
-    <function name='xmlSplitQName3' file='tree'>
+    <function name='xmlSplitQName3' file='tree' module='tree'>
       <info>parse an XML qualified name string,i</info>
       <return type='const xmlChar *' info='NULL if it is not a Qualified Name, otherwise, update len with the lenght in byte of the prefix and return a pointer'/>
       <arg name='name' type='const xmlChar *' info='the full QName'/>
       <arg name='len' type='int *' info='an int *'/>
     </function>
-    <function name='xmlSprintfElementContent' file='valid'>
+    <function name='xmlSprintfElementContent' file='valid' module='valid'>
       <cond>defined(LIBXML_OUTPUT_ENABLED)</cond>
       <info>Deprecated, unsafe, use xmlSnprintfElementContent</info>
       <return type='void'/>
@@ -13244,19 +13292,19 @@
       <arg name='content' type='xmlElementContentPtr' info='An element table'/>
       <arg name='glob' type='int' info='1 if one must print the englobing parenthesis, 0 otherwise'/>
     </function>
-    <function name='xmlStopParser' file='parser'>
+    <function name='xmlStopParser' file='parser' module='parser'>
       <cond>defined(LIBXML_PUSH_ENABLED)</cond>
       <info>Blocks further parser processing</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='an XML parser context'/>
     </function>
-    <function name='xmlStrEqual' file='xmlstring'>
+    <function name='xmlStrEqual' file='xmlstring' module='xmlstring'>
       <info>Check if both string are equal of have same content Should be a bit more readable and faster than xmlStrEqual()</info>
       <return type='int' info='1 if they are equal, 0 if they are different'/>
       <arg name='str1' type='const xmlChar *' info='the first xmlChar *'/>
       <arg name='str2' type='const xmlChar *' info='the second xmlChar *'/>
     </function>
-    <function name='xmlStrPrintf' file='xmlstring'>
+    <function name='xmlStrPrintf' file='xmlstring' module='xmlstring'>
       <info>Formats @msg and places result into @buf.</info>
       <return type='int' info='the number of characters written to @buf or -1 if an error occurs.'/>
       <arg name='buf' type='xmlChar *' info='the result buffer.'/>
@@ -13264,14 +13312,14 @@
       <arg name='msg' type='const xmlChar *' info='the message with printf formatting.'/>
       <arg name='...' type='...' info='extra parameters for the message.'/>
     </function>
-    <function name='xmlStrQEqual' file='xmlstring'>
+    <function name='xmlStrQEqual' file='xmlstring' module='xmlstring'>
       <info>Check if a QName is Equal to a given string</info>
       <return type='int' info='1 if they are equal, 0 if they are different'/>
       <arg name='pref' type='const xmlChar *' info='the prefix of the QName'/>
       <arg name='name' type='const xmlChar *' info='the localname of the QName'/>
       <arg name='str' type='const xmlChar *' info='the second xmlChar *'/>
     </function>
-    <function name='xmlStrVPrintf' file='xmlstring'>
+    <function name='xmlStrVPrintf' file='xmlstring' module='xmlstring'>
       <info>Formats @msg and places result into @buf.</info>
       <return type='int' info='the number of characters written to @buf or -1 if an error occurs.'/>
       <arg name='buf' type='xmlChar *' info='the result buffer.'/>
@@ -13279,53 +13327,53 @@
       <arg name='msg' type='const xmlChar *' info='the message with printf formatting.'/>
       <arg name='ap' type='va_list' info='extra parameters for the message.'/>
     </function>
-    <function name='xmlStrcasecmp' file='xmlstring'>
+    <function name='xmlStrcasecmp' file='xmlstring' module='xmlstring'>
       <info>a strcasecmp for xmlChar&apos;s</info>
       <return type='int' info='the integer result of the comparison'/>
       <arg name='str1' type='const xmlChar *' info='the first xmlChar *'/>
       <arg name='str2' type='const xmlChar *' info='the second xmlChar *'/>
     </function>
-    <function name='xmlStrcasestr' file='xmlstring'>
+    <function name='xmlStrcasestr' file='xmlstring' module='xmlstring'>
       <info>a case-ignoring strstr for xmlChar&apos;s</info>
       <return type='const xmlChar *' info='the xmlChar * for the first occurrence or NULL.'/>
       <arg name='str' type='const xmlChar *' info='the xmlChar * array (haystack)'/>
       <arg name='val' type='xmlChar *' info='the xmlChar to search (needle)'/>
     </function>
-    <function name='xmlStrcat' file='xmlstring'>
+    <function name='xmlStrcat' file='xmlstring' module='xmlstring'>
       <info>a strcat for array of xmlChar&apos;s. Since they are supposed to be encoded in UTF-8 or an encoding with 8bit based chars, we assume a termination mark of &apos;0&apos;.</info>
       <return type='xmlChar *' info='a new xmlChar * containing the concatenated string.'/>
       <arg name='cur' type='xmlChar *' info='the original xmlChar * array'/>
       <arg name='add' type='const xmlChar *' info='the xmlChar * array added'/>
     </function>
-    <function name='xmlStrchr' file='xmlstring'>
+    <function name='xmlStrchr' file='xmlstring' module='xmlstring'>
       <info>a strchr for xmlChar&apos;s</info>
       <return type='const xmlChar *' info='the xmlChar * for the first occurrence or NULL.'/>
       <arg name='str' type='const xmlChar *' info='the xmlChar * array'/>
       <arg name='val' type='xmlChar' info='the xmlChar to search'/>
     </function>
-    <function name='xmlStrcmp' file='xmlstring'>
+    <function name='xmlStrcmp' file='xmlstring' module='xmlstring'>
       <info>a strcmp for xmlChar&apos;s</info>
       <return type='int' info='the integer result of the comparison'/>
       <arg name='str1' type='const xmlChar *' info='the first xmlChar *'/>
       <arg name='str2' type='const xmlChar *' info='the second xmlChar *'/>
     </function>
-    <function name='xmlStrdup' file='xmlstring'>
+    <function name='xmlStrdup' file='xmlstring' module='xmlstring'>
       <info>a strdup for array of xmlChar&apos;s. Since they are supposed to be encoded in UTF-8 or an encoding with 8bit based chars, we assume a termination mark of &apos;0&apos;.</info>
       <return type='xmlChar *' info='a new xmlChar * or NULL'/>
       <arg name='cur' type='const xmlChar *' info='the input xmlChar *'/>
     </function>
-    <functype name='xmlStrdupFunc' file='xmlmemory'>
+    <functype name='xmlStrdupFunc' file='xmlmemory' module='xmlmemory'>
       <info>Signature for an strdup() implementation.</info>
       <return type='char *' info='the copy of the string or NULL in case of error.'/>
       <arg name='str' type='const char *' info='a zero terminated string'/>
     </functype>
-    <function name='xmlStreamPop' file='pattern'>
+    <function name='xmlStreamPop' file='pattern' module='pattern'>
       <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
       <info>push one level from the stream.</info>
       <return type='int' info='-1 in case of error, 0 otherwise.'/>
       <arg name='stream' type='xmlStreamCtxtPtr' info='the stream context'/>
     </function>
-    <function name='xmlStreamPush' file='pattern'>
+    <function name='xmlStreamPush' file='pattern' module='pattern'>
       <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
       <info>push new data onto the stream. NOTE: if the call xmlPatterncompile() indicated a dictionnary, then strings for name and ns will be expected to come from the dictionary. Both @name and @ns being NULL means the / i.e. the root of the document. This can also act as a reset.</info>
       <return type='int' info='-1 in case of error, 1 if the current state in the stream is a match and 0 otherwise.'/>
@@ -13333,7 +13381,7 @@
       <arg name='name' type='const xmlChar *' info='the current name'/>
       <arg name='ns' type='const xmlChar *' info='the namespace name'/>
     </function>
-    <function name='xmlStreamPushAttr' file='pattern'>
+    <function name='xmlStreamPushAttr' file='pattern' module='pattern'>
       <cond>defined(LIBXML_PATTERN_ENABLED)</cond>
       <info>push new attribute data onto the stream. NOTE: if the call xmlPatterncompile() indicated a dictionnary, then strings for name and ns will be expected to come from the dictionary. Both @name and @ns being NULL means the / i.e. the root of the document. This can also act as a reset.</info>
       <return type='int' info='-1 in case of error, 1 if the current state in the stream is a match and 0 otherwise.'/>
@@ -13341,14 +13389,14 @@
       <arg name='name' type='const xmlChar *' info='the current name'/>
       <arg name='ns' type='const xmlChar *' info='the namespace name'/>
     </function>
-    <function name='xmlStringCurrentChar' file='parserInternals'>
+    <function name='xmlStringCurrentChar' file='parserInternals' module='parserInternals'>
       <info>The current char value, if using UTF-8 this may actually span multiple bytes in the input buffer.</info>
       <return type='int' info='the current char value and its length'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='the XML parser context'/>
       <arg name='cur' type='const xmlChar *' info='pointer to the beginning of the char'/>
       <arg name='len' type='int *' info='pointer to the length of the char read'/>
     </function>
-    <function name='xmlStringDecodeEntities' file='parserInternals'>
+    <function name='xmlStringDecodeEntities' file='parserInternals' module='parser'>
       <info>Takes a entity string content and process to do the adequate substitutions.  [67] Reference ::= EntityRef | CharRef  [69] PEReference ::= &apos;%&apos; Name &apos;;&apos;</info>
       <return type='xmlChar *' info='A newly allocated string with the substitution done. The caller must deallocate it !'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
@@ -13358,13 +13406,13 @@
       <arg name='end2' type='xmlChar' info='an end marker xmlChar, 0 if none'/>
       <arg name='end3' type='xmlChar' info='an end marker xmlChar, 0 if none'/>
     </function>
-    <function name='xmlStringGetNodeList' file='tree'>
+    <function name='xmlStringGetNodeList' file='tree' module='tree'>
       <info>Parse the value string and build the node list associated. Should produce a flat tree with only TEXTs and ENTITY_REFs.</info>
       <return type='xmlNodePtr' info='a pointer to the first child'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='value' type='const xmlChar *' info='the value of the attribute'/>
     </function>
-    <function name='xmlStringLenDecodeEntities' file='parserInternals'>
+    <function name='xmlStringLenDecodeEntities' file='parserInternals' module='parser'>
       <info>Takes a entity string content and process to do the adequate substitutions.  [67] Reference ::= EntityRef | CharRef  [69] PEReference ::= &apos;%&apos; Name &apos;;&apos;</info>
       <return type='xmlChar *' info='A newly allocated string with the substitution done. The caller must deallocate it !'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
@@ -13375,212 +13423,212 @@
       <arg name='end2' type='xmlChar' info='an end marker xmlChar, 0 if none'/>
       <arg name='end3' type='xmlChar' info='an end marker xmlChar, 0 if none'/>
     </function>
-    <function name='xmlStringLenGetNodeList' file='tree'>
+    <function name='xmlStringLenGetNodeList' file='tree' module='tree'>
       <info>Parse the value string and build the node list associated. Should produce a flat tree with only TEXTs and ENTITY_REFs.</info>
       <return type='xmlNodePtr' info='a pointer to the first child'/>
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='value' type='const xmlChar *' info='the value of the text'/>
       <arg name='len' type='int' info='the length of the string value'/>
     </function>
-    <function name='xmlStrlen' file='xmlstring'>
+    <function name='xmlStrlen' file='xmlstring' module='xmlstring'>
       <info>length of a xmlChar&apos;s string</info>
       <return type='int' info='the number of xmlChar contained in the ARRAY.'/>
       <arg name='str' type='const xmlChar *' info='the xmlChar * array'/>
     </function>
-    <function name='xmlStrncasecmp' file='xmlstring'>
+    <function name='xmlStrncasecmp' file='xmlstring' module='xmlstring'>
       <info>a strncasecmp for xmlChar&apos;s</info>
       <return type='int' info='the integer result of the comparison'/>
       <arg name='str1' type='const xmlChar *' info='the first xmlChar *'/>
       <arg name='str2' type='const xmlChar *' info='the second xmlChar *'/>
       <arg name='len' type='int' info='the max comparison length'/>
     </function>
-    <function name='xmlStrncat' file='xmlstring'>
+    <function name='xmlStrncat' file='xmlstring' module='xmlstring'>
       <info>a strncat for array of xmlChar&apos;s, it will extend @cur with the len first bytes of @add.</info>
       <return type='xmlChar *' info='a new xmlChar *, the original @cur is reallocated if needed and should not be freed'/>
       <arg name='cur' type='xmlChar *' info='the original xmlChar * array'/>
       <arg name='add' type='const xmlChar *' info='the xmlChar * array added'/>
       <arg name='len' type='int' info='the length of @add'/>
     </function>
-    <function name='xmlStrncatNew' file='xmlstring'>
+    <function name='xmlStrncatNew' file='xmlstring' module='xmlstring'>
       <info>same as xmlStrncat, but creates a new string.  The original two strings are not freed.</info>
       <return type='xmlChar *' info='a new xmlChar * or NULL'/>
       <arg name='str1' type='const xmlChar *' info='first xmlChar string'/>
       <arg name='str2' type='const xmlChar *' info='second xmlChar string'/>
       <arg name='len' type='int' info='the len of @str2'/>
     </function>
-    <function name='xmlStrncmp' file='xmlstring'>
+    <function name='xmlStrncmp' file='xmlstring' module='xmlstring'>
       <info>a strncmp for xmlChar&apos;s</info>
       <return type='int' info='the integer result of the comparison'/>
       <arg name='str1' type='const xmlChar *' info='the first xmlChar *'/>
       <arg name='str2' type='const xmlChar *' info='the second xmlChar *'/>
       <arg name='len' type='int' info='the max comparison length'/>
     </function>
-    <function name='xmlStrndup' file='xmlstring'>
+    <function name='xmlStrndup' file='xmlstring' module='xmlstring'>
       <info>a strndup for array of xmlChar&apos;s</info>
       <return type='xmlChar *' info='a new xmlChar * or NULL'/>
       <arg name='cur' type='const xmlChar *' info='the input xmlChar *'/>
       <arg name='len' type='int' info='the len of @cur'/>
     </function>
-    <function name='xmlStrstr' file='xmlstring'>
+    <function name='xmlStrstr' file='xmlstring' module='xmlstring'>
       <info>a strstr for xmlChar&apos;s</info>
       <return type='const xmlChar *' info='the xmlChar * for the first occurrence or NULL.'/>
       <arg name='str' type='const xmlChar *' info='the xmlChar * array (haystack)'/>
       <arg name='val' type='const xmlChar *' info='the xmlChar to search (needle)'/>
     </function>
-    <function name='xmlStrsub' file='xmlstring'>
+    <function name='xmlStrsub' file='xmlstring' module='xmlstring'>
       <info>Extract a substring of a given string</info>
       <return type='xmlChar *' info='the xmlChar * for the first occurrence or NULL.'/>
       <arg name='str' type='const xmlChar *' info='the xmlChar * array (haystack)'/>
       <arg name='start' type='int' info='the index of the first char (zero based)'/>
       <arg name='len' type='int' info='the length of the substring'/>
     </function>
-    <functype name='xmlStructuredErrorFunc' file='xmlerror'>
+    <functype name='xmlStructuredErrorFunc' file='xmlerror' module='xmlerror'>
       <info>Signature of the function to use when there is an error and the module handles the new error reporting mechanism.</info>
       <return type='void'/>
       <arg name='userData' type='void *' info='user provided data for the error callback'/>
       <arg name='error' type='xmlErrorPtr' info='the error being raised.'/>
     </functype>
-    <function name='xmlSubstituteEntitiesDefault' file='parser'>
+    <function name='xmlSubstituteEntitiesDefault' file='parser' module='parserInternals'>
       <info>Set and return the previous value for default entity support. Initially the parser always keep entity references instead of substituting entity values in the output. This function has to be used to change the default parser behavior SAX::substituteEntities() has to be used for changing that on a file by file basis.</info>
       <return type='int' info='the last value for 0 for no substitution, 1 for substitution.'/>
       <arg name='val' type='int' info='int 0 or 1'/>
     </function>
-    <function name='xmlSwitchEncoding' file='parserInternals'>
+    <function name='xmlSwitchEncoding' file='parserInternals' module='parserInternals'>
       <info>change the input functions when discovering the character encoding of a given entity.</info>
       <return type='int' info='0 in case of success, -1 otherwise'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
       <arg name='enc' type='xmlCharEncoding' info='the encoding value (number)'/>
     </function>
-    <function name='xmlSwitchInputEncoding' file='parserInternals'>
+    <function name='xmlSwitchInputEncoding' file='parserInternals' module='parserInternals'>
       <info>change the input functions when discovering the character encoding of a given entity.</info>
       <return type='int' info='0 in case of success, -1 otherwise'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
       <arg name='input' type='xmlParserInputPtr' info='the input stream'/>
       <arg name='handler' type='xmlCharEncodingHandlerPtr' info='the encoding handler'/>
     </function>
-    <function name='xmlSwitchToEncoding' file='parserInternals'>
+    <function name='xmlSwitchToEncoding' file='parserInternals' module='parserInternals'>
       <info>change the input functions when discovering the character encoding of a given entity.</info>
       <return type='int' info='0 in case of success, -1 otherwise'/>
       <arg name='ctxt' type='xmlParserCtxtPtr' info='the parser context'/>
       <arg name='handler' type='xmlCharEncodingHandlerPtr' info='the encoding handler'/>
     </function>
-    <function name='xmlTextConcat' file='tree'>
+    <function name='xmlTextConcat' file='tree' module='tree'>
       <info>Concat the given string at the end of the existing node content</info>
       <return type='int' info='-1 in case of error, 0 otherwise'/>
       <arg name='node' type='xmlNodePtr' info='the node'/>
       <arg name='content' type='const xmlChar *' info='the content'/>
       <arg name='len' type='int' info='@content length'/>
     </function>
-    <function name='xmlTextMerge' file='tree'>
+    <function name='xmlTextMerge' file='tree' module='tree'>
       <info>Merge two text nodes into one</info>
       <return type='xmlNodePtr' info='the first text node augmented'/>
       <arg name='first' type='xmlNodePtr' info='the first text node'/>
       <arg name='second' type='xmlNodePtr' info='the second text node being merged'/>
     </function>
-    <function name='xmlTextReaderAttributeCount' file='xmlreader'>
+    <function name='xmlTextReaderAttributeCount' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Provides the number of attributes of the current node</info>
       <return type='int' info='0 i no attributes, -1 in case of error or the attribute count'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderBaseUri' file='xmlreader'>
+    <function name='xmlTextReaderBaseUri' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>The base URI of the node.</info>
       <return type='xmlChar *' info='the base URI or NULL if not available'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderByteConsumed' file='xmlreader'>
+    <function name='xmlTextReaderByteConsumed' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>This function provides the current index of the parser used by the reader, relative to the start of the current entity. This function actually just wraps a call to xmlBytesConsumed() for the parser context associated with the reader. See xmlBytesConsumed() for more information.</info>
       <return type='long' info='the index in bytes from the beginning of the entity or -1 in case the index could not be computed.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='an XML reader'/>
     </function>
-    <function name='xmlTextReaderClose' file='xmlreader'>
+    <function name='xmlTextReaderClose' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>This method releases any resources allocated by the current instance changes the state to Closed and close any underlying input.</info>
       <return type='int' info='0 or -1 in case of error'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderConstBaseUri' file='xmlreader'>
+    <function name='xmlTextReaderConstBaseUri' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>The base URI of the node.</info>
       <return type='const xmlChar *' info='the base URI or NULL if not available, the string will be deallocated with the reader'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderConstEncoding' file='xmlreader'>
+    <function name='xmlTextReaderConstEncoding' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Determine the encoding of the document being read.</info>
       <return type='const xmlChar *' info='a string containing the encoding of the document or NULL in case of error.  The string is deallocated with the reader.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderConstLocalName' file='xmlreader'>
+    <function name='xmlTextReaderConstLocalName' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>The local name of the node.</info>
       <return type='const xmlChar *' info='the local name or NULL if not available, the string will be deallocated with the reader.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderConstName' file='xmlreader'>
+    <function name='xmlTextReaderConstName' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>The qualified name of the node, equal to Prefix :LocalName.</info>
       <return type='const xmlChar *' info='the local name or NULL if not available, the string is deallocated with the reader.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderConstNamespaceUri' file='xmlreader'>
+    <function name='xmlTextReaderConstNamespaceUri' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>The URI defining the namespace associated with the node.</info>
       <return type='const xmlChar *' info='the namespace URI or NULL if not available, the string will be deallocated with the reader'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderConstPrefix' file='xmlreader'>
+    <function name='xmlTextReaderConstPrefix' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>A shorthand reference to the namespace associated with the node.</info>
       <return type='const xmlChar *' info='the prefix or NULL if not available, the string is deallocated with the reader.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderConstString' file='xmlreader'>
+    <function name='xmlTextReaderConstString' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Get an interned string from the reader, allows for example to speedup string name comparisons</info>
       <return type='const xmlChar *' info='an interned copy of the string or NULL in case of error. The string will be deallocated with the reader.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
       <arg name='str' type='const xmlChar *' info='the string to intern.'/>
     </function>
-    <function name='xmlTextReaderConstValue' file='xmlreader'>
+    <function name='xmlTextReaderConstValue' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Provides the text value of the node if present</info>
       <return type='const xmlChar *' info='the string or NULL if not available. The result will be deallocated on the next Read() operation.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderConstXmlLang' file='xmlreader'>
+    <function name='xmlTextReaderConstXmlLang' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>The xml:lang scope within which the node resides.</info>
       <return type='const xmlChar *' info='the xml:lang value or NULL if none exists.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderConstXmlVersion' file='xmlreader'>
+    <function name='xmlTextReaderConstXmlVersion' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Determine the XML version of the document being read.</info>
       <return type='const xmlChar *' info='a string containing the XML version of the document or NULL in case of error.  The string is deallocated with the reader.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderCurrentDoc' file='xmlreader'>
+    <function name='xmlTextReaderCurrentDoc' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Hacking interface allowing to get the xmlDocPtr correponding to the current document being accessed by the xmlTextReader. NOTE: as a result of this call, the reader will not destroy the associated XML document and calling xmlFreeDoc() on the result is needed once the reader parsing has finished.</info>
       <return type='xmlDocPtr' info='the xmlDocPtr or NULL in case of error.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderCurrentNode' file='xmlreader'>
+    <function name='xmlTextReaderCurrentNode' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Hacking interface allowing to get the xmlNodePtr correponding to the current node being accessed by the xmlTextReader. This is dangerous because the underlying node may be destroyed on the next Reads.</info>
       <return type='xmlNodePtr' info='the xmlNodePtr or NULL in case of error.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderDepth' file='xmlreader'>
+    <function name='xmlTextReaderDepth' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>The depth of the node in the tree.</info>
       <return type='int' info='the depth or -1 in case of error'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <functype name='xmlTextReaderErrorFunc' file='xmlreader'>
+    <functype name='xmlTextReaderErrorFunc' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info></info>
       <return type='void'/>
@@ -13589,27 +13637,27 @@
       <arg name='severity' type='xmlParserSeverities' info=''/>
       <arg name='locator' type='xmlTextReaderLocatorPtr' info=''/>
     </functype>
-    <function name='xmlTextReaderExpand' file='xmlreader'>
+    <function name='xmlTextReaderExpand' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Reads the contents of the current node and the full subtree. It then makes the subtree available until the next xmlTextReaderRead() call</info>
       <return type='xmlNodePtr' info='a node pointer valid until the next xmlTextReaderRead() call or NULL in case of error.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderGetAttribute' file='xmlreader'>
+    <function name='xmlTextReaderGetAttribute' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Provides the value of the attribute with the specified qualified name.</info>
       <return type='xmlChar *' info='a string containing the value of the specified attribute, or NULL in case of error. The string must be deallocated by the caller.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
       <arg name='name' type='const xmlChar *' info='the qualified name of the attribute.'/>
     </function>
-    <function name='xmlTextReaderGetAttributeNo' file='xmlreader'>
+    <function name='xmlTextReaderGetAttributeNo' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Provides the value of the attribute with the specified index relative to the containing element.</info>
       <return type='xmlChar *' info='a string containing the value of the specified attribute, or NULL in case of error. The string must be deallocated by the caller.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
       <arg name='no' type='int' info='the zero-based index of the attribute relative to the containing element'/>
     </function>
-    <function name='xmlTextReaderGetAttributeNs' file='xmlreader'>
+    <function name='xmlTextReaderGetAttributeNs' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Provides the value of the specified attribute</info>
       <return type='xmlChar *' info='a string containing the value of the specified attribute, or NULL in case of error. The string must be deallocated by the caller.'/>
@@ -13617,7 +13665,7 @@
       <arg name='localName' type='const xmlChar *' info='the local name of the attribute.'/>
       <arg name='namespaceURI' type='const xmlChar *' info='the namespace URI of the attribute.'/>
     </function>
-    <function name='xmlTextReaderGetErrorHandler' file='xmlreader'>
+    <function name='xmlTextReaderGetErrorHandler' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Retrieve the error callback function and user argument.</info>
       <return type='void'/>
@@ -13625,107 +13673,107 @@
       <arg name='f' type='xmlTextReaderErrorFunc *' info='the callback function or NULL is no callback has been registered'/>
       <arg name='arg' type='void **' info='a user argument'/>
     </function>
-    <function name='xmlTextReaderGetParserColumnNumber' file='xmlreader'>
+    <function name='xmlTextReaderGetParserColumnNumber' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Provide the column number of the current parsing point.</info>
       <return type='int' info='an int or 0 if not available'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the user data (XML reader context)'/>
     </function>
-    <function name='xmlTextReaderGetParserLineNumber' file='xmlreader'>
+    <function name='xmlTextReaderGetParserLineNumber' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Provide the line number of the current parsing point.</info>
       <return type='int' info='an int or 0 if not available'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the user data (XML reader context)'/>
     </function>
-    <function name='xmlTextReaderGetParserProp' file='xmlreader'>
+    <function name='xmlTextReaderGetParserProp' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Read the parser internal property.</info>
       <return type='int' info='the value, usually 0 or 1, or -1 in case of error.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
       <arg name='prop' type='int' info='the xmlParserProperties to get'/>
     </function>
-    <function name='xmlTextReaderGetRemainder' file='xmlreader'>
+    <function name='xmlTextReaderGetRemainder' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Method to get the remainder of the buffered XML. this method stops the parser, set its state to End Of File and return the input stream with what is left that the parser did not use.  The implementation is not good, the parser certainly procgressed past what&apos;s left in reader-&gt;input, and there is an allocation problem. Best would be to rewrite it differently.</info>
       <return type='xmlParserInputBufferPtr' info='the xmlParserInputBufferPtr attached to the XML or NULL in case of error.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderHasAttributes' file='xmlreader'>
+    <function name='xmlTextReaderHasAttributes' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Whether the node has attributes.</info>
       <return type='int' info='1 if true, 0 if false, and -1 in case or error'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderHasValue' file='xmlreader'>
+    <function name='xmlTextReaderHasValue' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Whether the node can have a text value.</info>
       <return type='int' info='1 if true, 0 if false, and -1 in case or error'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderIsDefault' file='xmlreader'>
+    <function name='xmlTextReaderIsDefault' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Whether an Attribute  node was generated from the default value defined in the DTD or schema.</info>
       <return type='int' info='0 if not defaulted, 1 if defaulted, and -1 in case of error'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderIsEmptyElement' file='xmlreader'>
+    <function name='xmlTextReaderIsEmptyElement' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Check if the current node is empty</info>
       <return type='int' info='1 if empty, 0 if not and -1 in case of error'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderIsNamespaceDecl' file='xmlreader'>
+    <function name='xmlTextReaderIsNamespaceDecl' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Determine whether the current node is a namespace declaration rather than a regular attribute.</info>
       <return type='int' info='1 if the current node is a namespace declaration, 0 if it is a regular attribute or other type of node, or -1 in case of error.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderIsValid' file='xmlreader'>
+    <function name='xmlTextReaderIsValid' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Retrieve the validity status from the parser context</info>
       <return type='int' info='the flag value 1 if valid, 0 if no, and -1 in case of error'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderLocalName' file='xmlreader'>
+    <function name='xmlTextReaderLocalName' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>The local name of the node.</info>
       <return type='xmlChar *' info='the local name or NULL if not available'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderLocatorBaseURI' file='xmlreader'>
+    <function name='xmlTextReaderLocatorBaseURI' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Obtain the base URI for the given locator.</info>
       <return type='xmlChar *' info='the base URI or NULL in case of error.'/>
       <arg name='locator' type='xmlTextReaderLocatorPtr' info='the xmlTextReaderLocatorPtr used'/>
     </function>
-    <function name='xmlTextReaderLocatorLineNumber' file='xmlreader'>
+    <function name='xmlTextReaderLocatorLineNumber' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Obtain the line number for the given locator.</info>
       <return type='int' info='the line number or -1 in case of error.'/>
       <arg name='locator' type='xmlTextReaderLocatorPtr' info='the xmlTextReaderLocatorPtr used'/>
     </function>
-    <function name='xmlTextReaderLookupNamespace' file='xmlreader'>
+    <function name='xmlTextReaderLookupNamespace' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Resolves a namespace prefix in the scope of the current element.</info>
       <return type='xmlChar *' info='a string containing the namespace URI to which the prefix maps or NULL in case of error. The string must be deallocated by the caller.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
       <arg name='prefix' type='const xmlChar *' info='the prefix whose namespace URI is to be resolved. To return the default namespace, specify NULL'/>
     </function>
-    <function name='xmlTextReaderMoveToAttribute' file='xmlreader'>
+    <function name='xmlTextReaderMoveToAttribute' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Moves the position of the current instance to the attribute with the specified qualified name.</info>
       <return type='int' info='1 in case of success, -1 in case of error, 0 if not found'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
       <arg name='name' type='const xmlChar *' info='the qualified name of the attribute.'/>
     </function>
-    <function name='xmlTextReaderMoveToAttributeNo' file='xmlreader'>
+    <function name='xmlTextReaderMoveToAttributeNo' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Moves the position of the current instance to the attribute with the specified index relative to the containing element.</info>
       <return type='int' info='1 in case of success, -1 in case of error, 0 if not found'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
       <arg name='no' type='int' info='the zero-based index of the attribute relative to the containing element.'/>
     </function>
-    <function name='xmlTextReaderMoveToAttributeNs' file='xmlreader'>
+    <function name='xmlTextReaderMoveToAttributeNs' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Moves the position of the current instance to the attribute with the specified local name and namespace URI.</info>
       <return type='int' info='1 in case of success, -1 in case of error, 0 if not found'/>
@@ -13733,73 +13781,73 @@
       <arg name='localName' type='const xmlChar *' info='the local name of the attribute.'/>
       <arg name='namespaceURI' type='const xmlChar *' info='the namespace URI of the attribute.'/>
     </function>
-    <function name='xmlTextReaderMoveToElement' file='xmlreader'>
+    <function name='xmlTextReaderMoveToElement' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Moves the position of the current instance to the node that contains the current Attribute  node.</info>
       <return type='int' info='1 in case of success, -1 in case of error, 0 if not moved'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderMoveToFirstAttribute' file='xmlreader'>
+    <function name='xmlTextReaderMoveToFirstAttribute' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Moves the position of the current instance to the first attribute associated with the current node.</info>
       <return type='int' info='1 in case of success, -1 in case of error, 0 if not found'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderMoveToNextAttribute' file='xmlreader'>
+    <function name='xmlTextReaderMoveToNextAttribute' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Moves the position of the current instance to the next attribute associated with the current node.</info>
       <return type='int' info='1 in case of success, -1 in case of error, 0 if not found'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderName' file='xmlreader'>
+    <function name='xmlTextReaderName' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>The qualified name of the node, equal to Prefix :LocalName.</info>
       <return type='xmlChar *' info='the local name or NULL if not available'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderNamespaceUri' file='xmlreader'>
+    <function name='xmlTextReaderNamespaceUri' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>The URI defining the namespace associated with the node.</info>
       <return type='xmlChar *' info='the namespace URI or NULL if not available'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderNext' file='xmlreader'>
+    <function name='xmlTextReaderNext' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Skip to the node following the current one in document order while avoiding the subtree if any.</info>
       <return type='int' info='1 if the node was read successfully, 0 if there is no more nodes to read, or -1 in case of error'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderNextSibling' file='xmlreader'>
+    <function name='xmlTextReaderNextSibling' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Skip to the node following the current one in document order while avoiding the subtree if any. Currently implemented only for Readers built on a document</info>
       <return type='int' info='1 if the node was read successfully, 0 if there is no more nodes to read, or -1 in case of error'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderNodeType' file='xmlreader'>
+    <function name='xmlTextReaderNodeType' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Get the node type of the current node Reference: http://dotgnu.org/pnetlib-doc/System/Xml/XmlNodeType.html</info>
       <return type='int' info='the xmlNodeType of the current node or -1 in case of error'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderNormalization' file='xmlreader'>
+    <function name='xmlTextReaderNormalization' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>The value indicating whether to normalize white space and attribute values. Since attribute value and end of line normalizations are a MUST in the XML specification only the value true is accepted. The broken bahaviour of accepting out of range character entities like &amp;#0; is of course not supported either.</info>
       <return type='int' info='1 or -1 in case of error.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderPrefix' file='xmlreader'>
+    <function name='xmlTextReaderPrefix' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>A shorthand reference to the namespace associated with the node.</info>
       <return type='xmlChar *' info='the prefix or NULL if not available'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderPreserve' file='xmlreader'>
+    <function name='xmlTextReaderPreserve' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>This tells the XML Reader to preserve the current node. The caller must also use xmlTextReaderCurrentDoc() to keep an handle on the resulting document once parsing has finished</info>
       <return type='xmlNodePtr' info='the xmlNodePtr or NULL in case of error.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderPreservePattern' file='xmlreader'>
+    <function name='xmlTextReaderPreservePattern' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED) &amp;&amp; defined(LIBXML_PATTERN_ENABLED)</cond>
       <info>This tells the XML Reader to preserve all nodes matched by the pattern. The caller must also use xmlTextReaderCurrentDoc() to keep an handle on the resulting document once parsing has finished</info>
       <return type='int' info='a positive number in case of success and -1 in case of error'/>
@@ -13807,63 +13855,63 @@
       <arg name='pattern' type='const xmlChar *' info='an XPath subset pattern'/>
       <arg name='namespaces' type='const xmlChar **' info='the prefix definitions, array of [URI, prefix] or NULL'/>
     </function>
-    <function name='xmlTextReaderQuoteChar' file='xmlreader'>
+    <function name='xmlTextReaderQuoteChar' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>The quotation mark character used to enclose the value of an attribute.</info>
       <return type='int' info='&quot; or &apos; and -1 in case of error'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderRead' file='xmlreader'>
+    <function name='xmlTextReaderRead' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Moves the position of the current instance to the next node in the stream, exposing its properties.</info>
       <return type='int' info='1 if the node was read successfully, 0 if there is no more nodes to read, or -1 in case of error'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderReadAttributeValue' file='xmlreader'>
+    <function name='xmlTextReaderReadAttributeValue' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Parses an attribute value into one or more Text and EntityReference nodes.</info>
       <return type='int' info='1 in case of success, 0 if the reader was not positionned on an ttribute node or all the attribute values have been read, or -1 in case of error.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderReadInnerXml' file='xmlreader'>
+    <function name='xmlTextReaderReadInnerXml' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Reads the contents of the current node, including child nodes and markup.</info>
       <return type='xmlChar *' info='a string containing the XML content, or NULL if the current node is neither an element nor attribute, or has no child nodes. The string must be deallocated by the caller.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderReadOuterXml' file='xmlreader'>
+    <function name='xmlTextReaderReadOuterXml' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Reads the contents of the current node, including child nodes and markup.</info>
       <return type='xmlChar *' info='a string containing the XML content, or NULL if the current node is neither an element nor attribute, or has no child nodes. The string must be deallocated by the caller.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderReadState' file='xmlreader'>
+    <function name='xmlTextReaderReadState' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Gets the read state of the reader.</info>
       <return type='int' info='the state value, or -1 in case of error'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderReadString' file='xmlreader'>
+    <function name='xmlTextReaderReadString' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Reads the contents of an element or a text node as a string.</info>
       <return type='xmlChar *' info='a string containing the contents of the Element or Text node, or NULL if the reader is positioned on any other type of node. The string must be deallocated by the caller.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderRelaxNGSetSchema' file='xmlreader'>
+    <function name='xmlTextReaderRelaxNGSetSchema' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED) &amp;&amp; defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Use RelaxNG to validate the document as it is processed. Activation is only possible before the first Read(). if @schema is NULL, then RelaxNG validation is desactivated. @ The @schema should not be freed until the reader is deallocated or its use has been deactivated.</info>
       <return type='int' info='0 in case the RelaxNG validation could be (des)activated and -1 in case of error.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
       <arg name='schema' type='xmlRelaxNGPtr' info='a precompiled RelaxNG schema'/>
     </function>
-    <function name='xmlTextReaderRelaxNGValidate' file='xmlreader'>
+    <function name='xmlTextReaderRelaxNGValidate' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED) &amp;&amp; defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Use RelaxNG to validate the document as it is processed. Activation is only possible before the first Read(). if @rng is NULL, then RelaxNG validation is desactivated.</info>
       <return type='int' info='0 in case the RelaxNG validation could be (des)activated and -1 in case of error.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
       <arg name='rng' type='const char *' info='the path to a RelaxNG schema or NULL'/>
     </function>
-    <function name='xmlTextReaderSetErrorHandler' file='xmlreader'>
+    <function name='xmlTextReaderSetErrorHandler' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Register a callback function that will be called on error and warnings.  If @f is NULL, the default error and warning handlers are restored.</info>
       <return type='void'/>
@@ -13871,7 +13919,7 @@
       <arg name='f' type='xmlTextReaderErrorFunc' info='the callback function to call on error and warnings'/>
       <arg name='arg' type='void *' info='a user argument to pass to the callback function'/>
     </function>
-    <function name='xmlTextReaderSetParserProp' file='xmlreader'>
+    <function name='xmlTextReaderSetParserProp' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Change the parser processing behaviour by changing some of its internal properties. Note that some properties can only be changed before any read has been done.</info>
       <return type='int' info='0 if the call was successful, or -1 in case of error'/>
@@ -13879,7 +13927,7 @@
       <arg name='prop' type='int' info='the xmlParserProperties to set'/>
       <arg name='value' type='int' info='usually 0 or 1 to (de)activate it'/>
     </function>
-    <function name='xmlTextReaderSetStructuredErrorHandler' file='xmlreader'>
+    <function name='xmlTextReaderSetStructuredErrorHandler' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Register a callback function that will be called on error and warnings.  If @f is NULL, the default error and warning handlers are restored.</info>
       <return type='void'/>
@@ -13887,118 +13935,118 @@
       <arg name='f' type='xmlStructuredErrorFunc' info='the callback function to call on error and warnings'/>
       <arg name='arg' type='void *' info='a user argument to pass to the callback function'/>
     </function>
-    <function name='xmlTextReaderStandalone' file='xmlreader'>
+    <function name='xmlTextReaderStandalone' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Determine the standalone status of the document being read.</info>
       <return type='int' info='1 if the document was declared to be standalone, 0 if it was declared to be not standalone, or -1 if the document did not specify its standalone status or in case of error.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderValue' file='xmlreader'>
+    <function name='xmlTextReaderValue' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>Provides the text value of the node if present</info>
       <return type='xmlChar *' info='the string or NULL if not available. The result must be deallocated with xmlFree()'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextReaderXmlLang' file='xmlreader'>
+    <function name='xmlTextReaderXmlLang' file='xmlreader' module='xmlreader'>
       <cond>defined(LIBXML_READER_ENABLED)</cond>
       <info>The xml:lang scope within which the node resides.</info>
       <return type='xmlChar *' info='the xml:lang value or NULL if none exists.'/>
       <arg name='reader' type='xmlTextReaderPtr' info='the xmlTextReaderPtr used'/>
     </function>
-    <function name='xmlTextWriterEndAttribute' file='xmlwriter'>
+    <function name='xmlTextWriterEndAttribute' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>End the current xml element.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
     </function>
-    <function name='xmlTextWriterEndCDATA' file='xmlwriter'>
+    <function name='xmlTextWriterEndCDATA' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>End an xml CDATA section.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
     </function>
-    <function name='xmlTextWriterEndComment' file='xmlwriter'>
+    <function name='xmlTextWriterEndComment' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>End the current xml coment.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
     </function>
-    <function name='xmlTextWriterEndDTD' file='xmlwriter'>
+    <function name='xmlTextWriterEndDTD' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>End an xml DTD.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
     </function>
-    <function name='xmlTextWriterEndDTDAttlist' file='xmlwriter'>
+    <function name='xmlTextWriterEndDTDAttlist' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>End an xml DTD attribute list.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
     </function>
-    <function name='xmlTextWriterEndDTDElement' file='xmlwriter'>
+    <function name='xmlTextWriterEndDTDElement' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>End an xml DTD element.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
     </function>
-    <function name='xmlTextWriterEndDTDEntity' file='xmlwriter'>
+    <function name='xmlTextWriterEndDTDEntity' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>End an xml DTD entity.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
     </function>
-    <function name='xmlTextWriterEndDocument' file='xmlwriter'>
+    <function name='xmlTextWriterEndDocument' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>End an xml document. All open elements are closed</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
     </function>
-    <function name='xmlTextWriterEndElement' file='xmlwriter'>
+    <function name='xmlTextWriterEndElement' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>End the current xml element.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
     </function>
-    <function name='xmlTextWriterEndPI' file='xmlwriter'>
+    <function name='xmlTextWriterEndPI' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>End the current xml PI.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
     </function>
-    <function name='xmlTextWriterFlush' file='xmlwriter'>
+    <function name='xmlTextWriterFlush' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Flush the output buffer.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
     </function>
-    <function name='xmlTextWriterFullEndElement' file='xmlwriter'>
+    <function name='xmlTextWriterFullEndElement' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>End the current xml element. Writes an end tag even if the element is empty</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
     </function>
-    <function name='xmlTextWriterSetIndent' file='xmlwriter'>
+    <function name='xmlTextWriterSetIndent' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Set indentation output. indent = 0 do not indentation. indent &gt; 0 do indentation.</info>
       <return type='int' info='-1 on error or 0 otherwise.'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
       <arg name='indent' type='int' info='do indentation?'/>
     </function>
-    <function name='xmlTextWriterSetIndentString' file='xmlwriter'>
+    <function name='xmlTextWriterSetIndentString' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Set string indentation.</info>
       <return type='int' info='-1 on error or 0 otherwise.'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
       <arg name='str' type='const xmlChar *' info='the xmlChar string'/>
     </function>
-    <function name='xmlTextWriterStartAttribute' file='xmlwriter'>
+    <function name='xmlTextWriterStartAttribute' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Start an xml attribute.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
       <arg name='name' type='const xmlChar *' info='element name'/>
     </function>
-    <function name='xmlTextWriterStartAttributeNS' file='xmlwriter'>
+    <function name='xmlTextWriterStartAttributeNS' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Start an xml attribute with namespace support.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14007,19 +14055,19 @@
       <arg name='name' type='const xmlChar *' info='element local name'/>
       <arg name='namespaceURI' type='const xmlChar *' info='namespace URI or NULL'/>
     </function>
-    <function name='xmlTextWriterStartCDATA' file='xmlwriter'>
+    <function name='xmlTextWriterStartCDATA' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Start an xml CDATA section.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
     </function>
-    <function name='xmlTextWriterStartComment' file='xmlwriter'>
+    <function name='xmlTextWriterStartComment' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Start an xml comment.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
     </function>
-    <function name='xmlTextWriterStartDTD' file='xmlwriter'>
+    <function name='xmlTextWriterStartDTD' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Start an xml DTD.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14028,21 +14076,21 @@
       <arg name='pubid' type='const xmlChar *' info='the public identifier, which is an alternative to the system identifier'/>
       <arg name='sysid' type='const xmlChar *' info='the system identifier, which is the URI of the DTD'/>
     </function>
-    <function name='xmlTextWriterStartDTDAttlist' file='xmlwriter'>
+    <function name='xmlTextWriterStartDTDAttlist' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Start an xml DTD ATTLIST.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
       <arg name='name' type='const xmlChar *' info='the name of the DTD ATTLIST'/>
     </function>
-    <function name='xmlTextWriterStartDTDElement' file='xmlwriter'>
+    <function name='xmlTextWriterStartDTDElement' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Start an xml DTD element.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
       <arg name='name' type='const xmlChar *' info='the name of the DTD element'/>
     </function>
-    <function name='xmlTextWriterStartDTDEntity' file='xmlwriter'>
+    <function name='xmlTextWriterStartDTDEntity' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Start an xml DTD ATTLIST.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14050,7 +14098,7 @@
       <arg name='pe' type='int' info='TRUE if this is a parameter entity, FALSE if not'/>
       <arg name='name' type='const xmlChar *' info='the name of the DTD ATTLIST'/>
     </function>
-    <function name='xmlTextWriterStartDocument' file='xmlwriter'>
+    <function name='xmlTextWriterStartDocument' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Start a new xml document</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14059,14 +14107,14 @@
       <arg name='encoding' type='const char *' info='the encoding or NULL for default'/>
       <arg name='standalone' type='const char *' info='&quot;yes&quot; or &quot;no&quot; or NULL for default'/>
     </function>
-    <function name='xmlTextWriterStartElement' file='xmlwriter'>
+    <function name='xmlTextWriterStartElement' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Start an xml element.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
       <arg name='name' type='const xmlChar *' info='element name'/>
     </function>
-    <function name='xmlTextWriterStartElementNS' file='xmlwriter'>
+    <function name='xmlTextWriterStartElementNS' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Start an xml element with namespace support.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14075,14 +14123,14 @@
       <arg name='name' type='const xmlChar *' info='element local name'/>
       <arg name='namespaceURI' type='const xmlChar *' info='namespace URI or NULL'/>
     </function>
-    <function name='xmlTextWriterStartPI' file='xmlwriter'>
+    <function name='xmlTextWriterStartPI' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Start an xml PI.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
       <arg name='target' type='const xmlChar *' info='PI target'/>
     </function>
-    <function name='xmlTextWriterWriteAttribute' file='xmlwriter'>
+    <function name='xmlTextWriterWriteAttribute' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write an xml attribute.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14090,7 +14138,7 @@
       <arg name='name' type='const xmlChar *' info='attribute name'/>
       <arg name='content' type='const xmlChar *' info='attribute content'/>
     </function>
-    <function name='xmlTextWriterWriteAttributeNS' file='xmlwriter'>
+    <function name='xmlTextWriterWriteAttributeNS' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write an xml attribute.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14100,7 +14148,7 @@
       <arg name='namespaceURI' type='const xmlChar *' info='namespace URI'/>
       <arg name='content' type='const xmlChar *' info='attribute content'/>
     </function>
-    <function name='xmlTextWriterWriteBase64' file='xmlwriter'>
+    <function name='xmlTextWriterWriteBase64' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write an base64 encoded xml text.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14109,7 +14157,7 @@
       <arg name='start' type='int' info='the position within the data of the first byte to encode'/>
       <arg name='len' type='int' info='the number of bytes to encode'/>
     </function>
-    <function name='xmlTextWriterWriteBinHex' file='xmlwriter'>
+    <function name='xmlTextWriterWriteBinHex' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a BinHex encoded xml text.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14118,21 +14166,21 @@
       <arg name='start' type='int' info='the position within the data of the first byte to encode'/>
       <arg name='len' type='int' info='the number of bytes to encode'/>
     </function>
-    <function name='xmlTextWriterWriteCDATA' file='xmlwriter'>
+    <function name='xmlTextWriterWriteCDATA' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write an xml CDATA.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
       <arg name='content' type='const xmlChar *' info='CDATA content'/>
     </function>
-    <function name='xmlTextWriterWriteComment' file='xmlwriter'>
+    <function name='xmlTextWriterWriteComment' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write an xml comment.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
       <arg name='content' type='const xmlChar *' info='comment string'/>
     </function>
-    <function name='xmlTextWriterWriteDTD' file='xmlwriter'>
+    <function name='xmlTextWriterWriteDTD' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a DTD.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14142,7 +14190,7 @@
       <arg name='sysid' type='const xmlChar *' info='the system identifier, which is the URI of the DTD'/>
       <arg name='subset' type='const xmlChar *' info='string content of the DTD'/>
     </function>
-    <function name='xmlTextWriterWriteDTDAttlist' file='xmlwriter'>
+    <function name='xmlTextWriterWriteDTDAttlist' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a DTD ATTLIST.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14150,7 +14198,7 @@
       <arg name='name' type='const xmlChar *' info='the name of the DTD ATTLIST'/>
       <arg name='content' type='const xmlChar *' info='content of the ATTLIST'/>
     </function>
-    <function name='xmlTextWriterWriteDTDElement' file='xmlwriter'>
+    <function name='xmlTextWriterWriteDTDElement' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a DTD element.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14158,7 +14206,7 @@
       <arg name='name' type='const xmlChar *' info='the name of the DTD element'/>
       <arg name='content' type='const xmlChar *' info='content of the element'/>
     </function>
-    <function name='xmlTextWriterWriteDTDEntity' file='xmlwriter'>
+    <function name='xmlTextWriterWriteDTDEntity' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a DTD entity.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14170,7 +14218,7 @@
       <arg name='ndataid' type='const xmlChar *' info='the xml notation name.'/>
       <arg name='content' type='const xmlChar *' info='content of the entity'/>
     </function>
-    <function name='xmlTextWriterWriteDTDExternalEntity' file='xmlwriter'>
+    <function name='xmlTextWriterWriteDTDExternalEntity' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a DTD external entity. The entity must have been started with xmlTextWriterStartDTDEntity</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14181,7 +14229,7 @@
       <arg name='sysid' type='const xmlChar *' info='the system identifier, which is the URI of the DTD'/>
       <arg name='ndataid' type='const xmlChar *' info='the xml notation name.'/>
     </function>
-    <function name='xmlTextWriterWriteDTDExternalEntityContents' file='xmlwriter'>
+    <function name='xmlTextWriterWriteDTDExternalEntityContents' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write the contents of a DTD external entity.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14190,7 +14238,7 @@
       <arg name='sysid' type='const xmlChar *' info='the system identifier, which is the URI of the DTD'/>
       <arg name='ndataid' type='const xmlChar *' info='the xml notation name.'/>
     </function>
-    <function name='xmlTextWriterWriteDTDInternalEntity' file='xmlwriter'>
+    <function name='xmlTextWriterWriteDTDInternalEntity' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a DTD internal entity.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14199,7 +14247,7 @@
       <arg name='name' type='const xmlChar *' info='the name of the DTD entity'/>
       <arg name='content' type='const xmlChar *' info='content of the entity'/>
     </function>
-    <function name='xmlTextWriterWriteDTDNotation' file='xmlwriter'>
+    <function name='xmlTextWriterWriteDTDNotation' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a DTD entity.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14208,7 +14256,7 @@
       <arg name='pubid' type='const xmlChar *' info='the public identifier, which is an alternative to the system identifier'/>
       <arg name='sysid' type='const xmlChar *' info='the system identifier, which is the URI of the DTD'/>
     </function>
-    <function name='xmlTextWriterWriteElement' file='xmlwriter'>
+    <function name='xmlTextWriterWriteElement' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write an xml element.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14216,7 +14264,7 @@
       <arg name='name' type='const xmlChar *' info='element name'/>
       <arg name='content' type='const xmlChar *' info='element content'/>
     </function>
-    <function name='xmlTextWriterWriteElementNS' file='xmlwriter'>
+    <function name='xmlTextWriterWriteElementNS' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write an xml element with namespace support.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14226,7 +14274,7 @@
       <arg name='namespaceURI' type='const xmlChar *' info='namespace URI'/>
       <arg name='content' type='const xmlChar *' info='element content'/>
     </function>
-    <function name='xmlTextWriterWriteFormatAttribute' file='xmlwriter'>
+    <function name='xmlTextWriterWriteFormatAttribute' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a formatted xml attribute.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14235,7 +14283,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='...' type='...' info='extra parameters for the format'/>
     </function>
-    <function name='xmlTextWriterWriteFormatAttributeNS' file='xmlwriter'>
+    <function name='xmlTextWriterWriteFormatAttributeNS' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a formatted xml attribute.with namespace support</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14246,7 +14294,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='...' type='...' info='extra parameters for the format'/>
     </function>
-    <function name='xmlTextWriterWriteFormatCDATA' file='xmlwriter'>
+    <function name='xmlTextWriterWriteFormatCDATA' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a formatted xml CDATA.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14254,7 +14302,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='...' type='...' info='extra parameters for the format'/>
     </function>
-    <function name='xmlTextWriterWriteFormatComment' file='xmlwriter'>
+    <function name='xmlTextWriterWriteFormatComment' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write an xml comment.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14262,7 +14310,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='...' type='...' info='extra parameters for the format'/>
     </function>
-    <function name='xmlTextWriterWriteFormatDTD' file='xmlwriter'>
+    <function name='xmlTextWriterWriteFormatDTD' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a DTD with a formatted markup declarations part.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14273,7 +14321,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='...' type='...' info='extra parameters for the format'/>
     </function>
-    <function name='xmlTextWriterWriteFormatDTDAttlist' file='xmlwriter'>
+    <function name='xmlTextWriterWriteFormatDTDAttlist' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a formatted DTD ATTLIST.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14282,7 +14330,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='...' type='...' info='extra parameters for the format'/>
     </function>
-    <function name='xmlTextWriterWriteFormatDTDElement' file='xmlwriter'>
+    <function name='xmlTextWriterWriteFormatDTDElement' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a formatted DTD element.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14291,7 +14339,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='...' type='...' info='extra parameters for the format'/>
     </function>
-    <function name='xmlTextWriterWriteFormatDTDInternalEntity' file='xmlwriter'>
+    <function name='xmlTextWriterWriteFormatDTDInternalEntity' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a formatted DTD internal entity.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14301,7 +14349,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='...' type='...' info='extra parameters for the format'/>
     </function>
-    <function name='xmlTextWriterWriteFormatElement' file='xmlwriter'>
+    <function name='xmlTextWriterWriteFormatElement' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a formatted xml element.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14310,7 +14358,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='...' type='...' info='extra parameters for the format'/>
     </function>
-    <function name='xmlTextWriterWriteFormatElementNS' file='xmlwriter'>
+    <function name='xmlTextWriterWriteFormatElementNS' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a formatted xml element with namespace support.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14321,7 +14369,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='...' type='...' info='extra parameters for the format'/>
     </function>
-    <function name='xmlTextWriterWriteFormatPI' file='xmlwriter'>
+    <function name='xmlTextWriterWriteFormatPI' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a formatted PI.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14330,7 +14378,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='...' type='...' info='extra parameters for the format'/>
     </function>
-    <function name='xmlTextWriterWriteFormatRaw' file='xmlwriter'>
+    <function name='xmlTextWriterWriteFormatRaw' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a formatted raw xml text.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14338,7 +14386,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='...' type='...' info='extra parameters for the format'/>
     </function>
-    <function name='xmlTextWriterWriteFormatString' file='xmlwriter'>
+    <function name='xmlTextWriterWriteFormatString' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a formatted xml text.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14346,7 +14394,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='...' type='...' info='extra parameters for the format'/>
     </function>
-    <function name='xmlTextWriterWritePI' file='xmlwriter'>
+    <function name='xmlTextWriterWritePI' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write an xml PI.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14354,14 +14402,14 @@
       <arg name='target' type='const xmlChar *' info='PI target'/>
       <arg name='content' type='const xmlChar *' info='PI content'/>
     </function>
-    <function name='xmlTextWriterWriteRaw' file='xmlwriter'>
+    <function name='xmlTextWriterWriteRaw' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a raw xml text.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
       <arg name='content' type='const xmlChar *' info='text string'/>
     </function>
-    <function name='xmlTextWriterWriteRawLen' file='xmlwriter'>
+    <function name='xmlTextWriterWriteRawLen' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write an xml text. TODO: what about entities and special chars??</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14369,14 +14417,14 @@
       <arg name='content' type='const xmlChar *' info='text string'/>
       <arg name='len' type='int' info='length of the text string'/>
     </function>
-    <function name='xmlTextWriterWriteString' file='xmlwriter'>
+    <function name='xmlTextWriterWriteString' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write an xml text.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
       <arg name='writer' type='xmlTextWriterPtr' info='the xmlTextWriterPtr'/>
       <arg name='content' type='const xmlChar *' info='text string'/>
     </function>
-    <function name='xmlTextWriterWriteVFormatAttribute' file='xmlwriter'>
+    <function name='xmlTextWriterWriteVFormatAttribute' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a formatted xml attribute.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14385,7 +14433,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='argptr' type='va_list' info='pointer to the first member of the variable argument list.'/>
     </function>
-    <function name='xmlTextWriterWriteVFormatAttributeNS' file='xmlwriter'>
+    <function name='xmlTextWriterWriteVFormatAttributeNS' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a formatted xml attribute.with namespace support</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14396,7 +14444,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='argptr' type='va_list' info='pointer to the first member of the variable argument list.'/>
     </function>
-    <function name='xmlTextWriterWriteVFormatCDATA' file='xmlwriter'>
+    <function name='xmlTextWriterWriteVFormatCDATA' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a formatted xml CDATA.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14404,7 +14452,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='argptr' type='va_list' info='pointer to the first member of the variable argument list.'/>
     </function>
-    <function name='xmlTextWriterWriteVFormatComment' file='xmlwriter'>
+    <function name='xmlTextWriterWriteVFormatComment' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write an xml comment.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14412,7 +14460,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='argptr' type='va_list' info='pointer to the first member of the variable argument list.'/>
     </function>
-    <function name='xmlTextWriterWriteVFormatDTD' file='xmlwriter'>
+    <function name='xmlTextWriterWriteVFormatDTD' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a DTD with a formatted markup declarations part.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14423,7 +14471,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='argptr' type='va_list' info='pointer to the first member of the variable argument list.'/>
     </function>
-    <function name='xmlTextWriterWriteVFormatDTDAttlist' file='xmlwriter'>
+    <function name='xmlTextWriterWriteVFormatDTDAttlist' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a formatted DTD ATTLIST.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14432,7 +14480,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='argptr' type='va_list' info='pointer to the first member of the variable argument list.'/>
     </function>
-    <function name='xmlTextWriterWriteVFormatDTDElement' file='xmlwriter'>
+    <function name='xmlTextWriterWriteVFormatDTDElement' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a formatted DTD element.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14441,7 +14489,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='argptr' type='va_list' info='pointer to the first member of the variable argument list.'/>
     </function>
-    <function name='xmlTextWriterWriteVFormatDTDInternalEntity' file='xmlwriter'>
+    <function name='xmlTextWriterWriteVFormatDTDInternalEntity' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a formatted DTD internal entity.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14451,7 +14499,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='argptr' type='va_list' info='pointer to the first member of the variable argument list.'/>
     </function>
-    <function name='xmlTextWriterWriteVFormatElement' file='xmlwriter'>
+    <function name='xmlTextWriterWriteVFormatElement' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a formatted xml element.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14460,7 +14508,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='argptr' type='va_list' info='pointer to the first member of the variable argument list.'/>
     </function>
-    <function name='xmlTextWriterWriteVFormatElementNS' file='xmlwriter'>
+    <function name='xmlTextWriterWriteVFormatElementNS' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a formatted xml element with namespace support.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14471,7 +14519,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='argptr' type='va_list' info='pointer to the first member of the variable argument list.'/>
     </function>
-    <function name='xmlTextWriterWriteVFormatPI' file='xmlwriter'>
+    <function name='xmlTextWriterWriteVFormatPI' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a formatted xml PI.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14480,7 +14528,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='argptr' type='va_list' info='pointer to the first member of the variable argument list.'/>
     </function>
-    <function name='xmlTextWriterWriteVFormatRaw' file='xmlwriter'>
+    <function name='xmlTextWriterWriteVFormatRaw' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a formatted raw xml text.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14488,7 +14536,7 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='argptr' type='va_list' info='pointer to the first member of the variable argument list.'/>
     </function>
-    <function name='xmlTextWriterWriteVFormatString' file='xmlwriter'>
+    <function name='xmlTextWriterWriteVFormatString' file='xmlwriter' module='xmlwriter'>
       <cond>defined(LIBXML_WRITER_ENABLED)</cond>
       <info>Write a formatted xml text.</info>
       <return type='int' info='the bytes written (may be 0 because of buffering) or -1 in case of error'/>
@@ -14496,1176 +14544,1176 @@
       <arg name='format' type='const char *' info='format string (see printf)'/>
       <arg name='argptr' type='va_list' info='pointer to the first member of the variable argument list.'/>
     </function>
-    <function name='xmlThrDefBufferAllocScheme' file='globals'>
+    <function name='xmlThrDefBufferAllocScheme' file='globals' module='globals'>
       <info></info>
       <return type='xmlBufferAllocationScheme' info=''/>
       <arg name='v' type='xmlBufferAllocationScheme' info=''/>
     </function>
-    <function name='xmlThrDefDefaultBufferSize' file='globals'>
+    <function name='xmlThrDefDefaultBufferSize' file='globals' module='globals'>
       <info></info>
       <return type='int' info=''/>
       <arg name='v' type='int' info=''/>
     </function>
-    <function name='xmlThrDefDeregisterNodeDefault' file='globals'>
+    <function name='xmlThrDefDeregisterNodeDefault' file='globals' module='globals'>
       <info></info>
       <return type='xmlDeregisterNodeFunc' info=''/>
       <arg name='func' type='xmlDeregisterNodeFunc' info=''/>
     </function>
-    <function name='xmlThrDefDoValidityCheckingDefaultValue' file='globals'>
+    <function name='xmlThrDefDoValidityCheckingDefaultValue' file='globals' module='globals'>
       <info></info>
       <return type='int' info=''/>
       <arg name='v' type='int' info=''/>
     </function>
-    <function name='xmlThrDefGetWarningsDefaultValue' file='globals'>
+    <function name='xmlThrDefGetWarningsDefaultValue' file='globals' module='globals'>
       <info></info>
       <return type='int' info=''/>
       <arg name='v' type='int' info=''/>
     </function>
-    <function name='xmlThrDefIndentTreeOutput' file='globals'>
+    <function name='xmlThrDefIndentTreeOutput' file='globals' module='globals'>
       <info></info>
       <return type='int' info=''/>
       <arg name='v' type='int' info=''/>
     </function>
-    <function name='xmlThrDefKeepBlanksDefaultValue' file='globals'>
+    <function name='xmlThrDefKeepBlanksDefaultValue' file='globals' module='globals'>
       <info></info>
       <return type='int' info=''/>
       <arg name='v' type='int' info=''/>
     </function>
-    <function name='xmlThrDefLineNumbersDefaultValue' file='globals'>
+    <function name='xmlThrDefLineNumbersDefaultValue' file='globals' module='globals'>
       <info></info>
       <return type='int' info=''/>
       <arg name='v' type='int' info=''/>
     </function>
-    <function name='xmlThrDefLoadExtDtdDefaultValue' file='globals'>
+    <function name='xmlThrDefLoadExtDtdDefaultValue' file='globals' module='globals'>
       <info></info>
       <return type='int' info=''/>
       <arg name='v' type='int' info=''/>
     </function>
-    <function name='xmlThrDefOutputBufferCreateFilenameDefault' file='globals'>
+    <function name='xmlThrDefOutputBufferCreateFilenameDefault' file='globals' module='globals'>
       <info></info>
       <return type='xmlOutputBufferCreateFilenameFunc' info=''/>
       <arg name='func' type='xmlOutputBufferCreateFilenameFunc' info=''/>
     </function>
-    <function name='xmlThrDefParserDebugEntities' file='globals'>
+    <function name='xmlThrDefParserDebugEntities' file='globals' module='globals'>
       <info></info>
       <return type='int' info=''/>
       <arg name='v' type='int' info=''/>
     </function>
-    <function name='xmlThrDefParserInputBufferCreateFilenameDefault' file='globals'>
+    <function name='xmlThrDefParserInputBufferCreateFilenameDefault' file='globals' module='globals'>
       <info></info>
       <return type='xmlParserInputBufferCreateFilenameFunc' info=''/>
       <arg name='func' type='xmlParserInputBufferCreateFilenameFunc' info=''/>
     </function>
-    <function name='xmlThrDefPedanticParserDefaultValue' file='globals'>
+    <function name='xmlThrDefPedanticParserDefaultValue' file='globals' module='globals'>
       <info></info>
       <return type='int' info=''/>
       <arg name='v' type='int' info=''/>
     </function>
-    <function name='xmlThrDefRegisterNodeDefault' file='globals'>
+    <function name='xmlThrDefRegisterNodeDefault' file='globals' module='globals'>
       <info></info>
       <return type='xmlRegisterNodeFunc' info=''/>
       <arg name='func' type='xmlRegisterNodeFunc' info=''/>
     </function>
-    <function name='xmlThrDefSaveNoEmptyTags' file='globals'>
+    <function name='xmlThrDefSaveNoEmptyTags' file='globals' module='globals'>
       <info></info>
       <return type='int' info=''/>
       <arg name='v' type='int' info=''/>
     </function>
-    <function name='xmlThrDefSetGenericErrorFunc' file='globals'>
+    <function name='xmlThrDefSetGenericErrorFunc' file='globals' module='globals'>
       <info></info>
       <return type='void'/>
       <arg name='ctx' type='void *' info=''/>
       <arg name='handler' type='xmlGenericErrorFunc' info=''/>
     </function>
-    <function name='xmlThrDefSetStructuredErrorFunc' file='globals'>
+    <function name='xmlThrDefSetStructuredErrorFunc' file='globals' module='globals'>
       <info></info>
       <return type='void'/>
       <arg name='ctx' type='void *' info=''/>
       <arg name='handler' type='xmlStructuredErrorFunc' info=''/>
     </function>
-    <function name='xmlThrDefSubstituteEntitiesDefaultValue' file='globals'>
+    <function name='xmlThrDefSubstituteEntitiesDefaultValue' file='globals' module='globals'>
       <info></info>
       <return type='int' info=''/>
       <arg name='v' type='int' info=''/>
     </function>
-    <function name='xmlThrDefTreeIndentString' file='globals'>
+    <function name='xmlThrDefTreeIndentString' file='globals' module='globals'>
       <info></info>
       <return type='const char *' info=''/>
       <arg name='v' type='const char *' info=''/>
     </function>
-    <function name='xmlUCSIsAegeanNumbers' file='xmlunicode'>
+    <function name='xmlUCSIsAegeanNumbers' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of AegeanNumbers UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsAlphabeticPresentationForms' file='xmlunicode'>
+    <function name='xmlUCSIsAlphabeticPresentationForms' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of AlphabeticPresentationForms UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsArabic' file='xmlunicode'>
+    <function name='xmlUCSIsArabic' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Arabic UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsArabicPresentationFormsA' file='xmlunicode'>
+    <function name='xmlUCSIsArabicPresentationFormsA' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of ArabicPresentationForms-A UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsArabicPresentationFormsB' file='xmlunicode'>
+    <function name='xmlUCSIsArabicPresentationFormsB' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of ArabicPresentationForms-B UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsArmenian' file='xmlunicode'>
+    <function name='xmlUCSIsArmenian' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Armenian UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsArrows' file='xmlunicode'>
+    <function name='xmlUCSIsArrows' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Arrows UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsBasicLatin' file='xmlunicode'>
+    <function name='xmlUCSIsBasicLatin' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of BasicLatin UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsBengali' file='xmlunicode'>
+    <function name='xmlUCSIsBengali' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Bengali UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsBlock' file='xmlunicode'>
+    <function name='xmlUCSIsBlock' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of the UCS Block</info>
       <return type='int' info='1 if true, 0 if false and -1 on unknown block'/>
       <arg name='code' type='int' info='UCS code point'/>
       <arg name='block' type='const char *' info='UCS block name'/>
     </function>
-    <function name='xmlUCSIsBlockElements' file='xmlunicode'>
+    <function name='xmlUCSIsBlockElements' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of BlockElements UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsBopomofo' file='xmlunicode'>
+    <function name='xmlUCSIsBopomofo' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Bopomofo UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsBopomofoExtended' file='xmlunicode'>
+    <function name='xmlUCSIsBopomofoExtended' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of BopomofoExtended UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsBoxDrawing' file='xmlunicode'>
+    <function name='xmlUCSIsBoxDrawing' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of BoxDrawing UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsBraillePatterns' file='xmlunicode'>
+    <function name='xmlUCSIsBraillePatterns' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of BraillePatterns UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsBuhid' file='xmlunicode'>
+    <function name='xmlUCSIsBuhid' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Buhid UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsByzantineMusicalSymbols' file='xmlunicode'>
+    <function name='xmlUCSIsByzantineMusicalSymbols' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of ByzantineMusicalSymbols UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCJKCompatibility' file='xmlunicode'>
+    <function name='xmlUCSIsCJKCompatibility' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of CJKCompatibility UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCJKCompatibilityForms' file='xmlunicode'>
+    <function name='xmlUCSIsCJKCompatibilityForms' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of CJKCompatibilityForms UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCJKCompatibilityIdeographs' file='xmlunicode'>
+    <function name='xmlUCSIsCJKCompatibilityIdeographs' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of CJKCompatibilityIdeographs UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCJKCompatibilityIdeographsSupplement' file='xmlunicode'>
+    <function name='xmlUCSIsCJKCompatibilityIdeographsSupplement' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of CJKCompatibilityIdeographsSupplement UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCJKRadicalsSupplement' file='xmlunicode'>
+    <function name='xmlUCSIsCJKRadicalsSupplement' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of CJKRadicalsSupplement UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCJKSymbolsandPunctuation' file='xmlunicode'>
+    <function name='xmlUCSIsCJKSymbolsandPunctuation' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of CJKSymbolsandPunctuation UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCJKUnifiedIdeographs' file='xmlunicode'>
+    <function name='xmlUCSIsCJKUnifiedIdeographs' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of CJKUnifiedIdeographs UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCJKUnifiedIdeographsExtensionA' file='xmlunicode'>
+    <function name='xmlUCSIsCJKUnifiedIdeographsExtensionA' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of CJKUnifiedIdeographsExtensionA UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCJKUnifiedIdeographsExtensionB' file='xmlunicode'>
+    <function name='xmlUCSIsCJKUnifiedIdeographsExtensionB' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of CJKUnifiedIdeographsExtensionB UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCat' file='xmlunicode'>
+    <function name='xmlUCSIsCat' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of the UCS Category</info>
       <return type='int' info='1 if true, 0 if false and -1 on unknown category'/>
       <arg name='code' type='int' info='UCS code point'/>
       <arg name='cat' type='const char *' info='UCS Category name'/>
     </function>
-    <function name='xmlUCSIsCatC' file='xmlunicode'>
+    <function name='xmlUCSIsCatC' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of C UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatCc' file='xmlunicode'>
+    <function name='xmlUCSIsCatCc' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Cc UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatCf' file='xmlunicode'>
+    <function name='xmlUCSIsCatCf' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Cf UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatCo' file='xmlunicode'>
+    <function name='xmlUCSIsCatCo' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Co UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatCs' file='xmlunicode'>
+    <function name='xmlUCSIsCatCs' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Cs UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatL' file='xmlunicode'>
+    <function name='xmlUCSIsCatL' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of L UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatLl' file='xmlunicode'>
+    <function name='xmlUCSIsCatLl' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Ll UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatLm' file='xmlunicode'>
+    <function name='xmlUCSIsCatLm' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Lm UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatLo' file='xmlunicode'>
+    <function name='xmlUCSIsCatLo' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Lo UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatLt' file='xmlunicode'>
+    <function name='xmlUCSIsCatLt' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Lt UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatLu' file='xmlunicode'>
+    <function name='xmlUCSIsCatLu' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Lu UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatM' file='xmlunicode'>
+    <function name='xmlUCSIsCatM' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of M UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatMc' file='xmlunicode'>
+    <function name='xmlUCSIsCatMc' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Mc UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatMe' file='xmlunicode'>
+    <function name='xmlUCSIsCatMe' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Me UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatMn' file='xmlunicode'>
+    <function name='xmlUCSIsCatMn' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Mn UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatN' file='xmlunicode'>
+    <function name='xmlUCSIsCatN' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of N UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatNd' file='xmlunicode'>
+    <function name='xmlUCSIsCatNd' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Nd UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatNl' file='xmlunicode'>
+    <function name='xmlUCSIsCatNl' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Nl UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatNo' file='xmlunicode'>
+    <function name='xmlUCSIsCatNo' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of No UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatP' file='xmlunicode'>
+    <function name='xmlUCSIsCatP' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of P UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatPc' file='xmlunicode'>
+    <function name='xmlUCSIsCatPc' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Pc UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatPd' file='xmlunicode'>
+    <function name='xmlUCSIsCatPd' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Pd UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatPe' file='xmlunicode'>
+    <function name='xmlUCSIsCatPe' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Pe UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatPf' file='xmlunicode'>
+    <function name='xmlUCSIsCatPf' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Pf UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatPi' file='xmlunicode'>
+    <function name='xmlUCSIsCatPi' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Pi UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatPo' file='xmlunicode'>
+    <function name='xmlUCSIsCatPo' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Po UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatPs' file='xmlunicode'>
+    <function name='xmlUCSIsCatPs' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Ps UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatS' file='xmlunicode'>
+    <function name='xmlUCSIsCatS' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of S UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatSc' file='xmlunicode'>
+    <function name='xmlUCSIsCatSc' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Sc UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatSk' file='xmlunicode'>
+    <function name='xmlUCSIsCatSk' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Sk UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatSm' file='xmlunicode'>
+    <function name='xmlUCSIsCatSm' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Sm UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatSo' file='xmlunicode'>
+    <function name='xmlUCSIsCatSo' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of So UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatZ' file='xmlunicode'>
+    <function name='xmlUCSIsCatZ' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Z UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatZl' file='xmlunicode'>
+    <function name='xmlUCSIsCatZl' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Zl UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatZp' file='xmlunicode'>
+    <function name='xmlUCSIsCatZp' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Zp UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCatZs' file='xmlunicode'>
+    <function name='xmlUCSIsCatZs' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Zs UCS Category</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCherokee' file='xmlunicode'>
+    <function name='xmlUCSIsCherokee' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Cherokee UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCombiningDiacriticalMarks' file='xmlunicode'>
+    <function name='xmlUCSIsCombiningDiacriticalMarks' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of CombiningDiacriticalMarks UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCombiningDiacriticalMarksforSymbols' file='xmlunicode'>
+    <function name='xmlUCSIsCombiningDiacriticalMarksforSymbols' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of CombiningDiacriticalMarksforSymbols UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCombiningHalfMarks' file='xmlunicode'>
+    <function name='xmlUCSIsCombiningHalfMarks' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of CombiningHalfMarks UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCombiningMarksforSymbols' file='xmlunicode'>
+    <function name='xmlUCSIsCombiningMarksforSymbols' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of CombiningMarksforSymbols UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsControlPictures' file='xmlunicode'>
+    <function name='xmlUCSIsControlPictures' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of ControlPictures UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCurrencySymbols' file='xmlunicode'>
+    <function name='xmlUCSIsCurrencySymbols' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of CurrencySymbols UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCypriotSyllabary' file='xmlunicode'>
+    <function name='xmlUCSIsCypriotSyllabary' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of CypriotSyllabary UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCyrillic' file='xmlunicode'>
+    <function name='xmlUCSIsCyrillic' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Cyrillic UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsCyrillicSupplement' file='xmlunicode'>
+    <function name='xmlUCSIsCyrillicSupplement' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of CyrillicSupplement UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsDeseret' file='xmlunicode'>
+    <function name='xmlUCSIsDeseret' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Deseret UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsDevanagari' file='xmlunicode'>
+    <function name='xmlUCSIsDevanagari' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Devanagari UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsDingbats' file='xmlunicode'>
+    <function name='xmlUCSIsDingbats' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Dingbats UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsEnclosedAlphanumerics' file='xmlunicode'>
+    <function name='xmlUCSIsEnclosedAlphanumerics' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of EnclosedAlphanumerics UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsEnclosedCJKLettersandMonths' file='xmlunicode'>
+    <function name='xmlUCSIsEnclosedCJKLettersandMonths' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of EnclosedCJKLettersandMonths UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsEthiopic' file='xmlunicode'>
+    <function name='xmlUCSIsEthiopic' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Ethiopic UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsGeneralPunctuation' file='xmlunicode'>
+    <function name='xmlUCSIsGeneralPunctuation' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of GeneralPunctuation UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsGeometricShapes' file='xmlunicode'>
+    <function name='xmlUCSIsGeometricShapes' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of GeometricShapes UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsGeorgian' file='xmlunicode'>
+    <function name='xmlUCSIsGeorgian' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Georgian UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsGothic' file='xmlunicode'>
+    <function name='xmlUCSIsGothic' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Gothic UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsGreek' file='xmlunicode'>
+    <function name='xmlUCSIsGreek' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Greek UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsGreekExtended' file='xmlunicode'>
+    <function name='xmlUCSIsGreekExtended' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of GreekExtended UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsGreekandCoptic' file='xmlunicode'>
+    <function name='xmlUCSIsGreekandCoptic' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of GreekandCoptic UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsGujarati' file='xmlunicode'>
+    <function name='xmlUCSIsGujarati' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Gujarati UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsGurmukhi' file='xmlunicode'>
+    <function name='xmlUCSIsGurmukhi' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Gurmukhi UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsHalfwidthandFullwidthForms' file='xmlunicode'>
+    <function name='xmlUCSIsHalfwidthandFullwidthForms' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of HalfwidthandFullwidthForms UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsHangulCompatibilityJamo' file='xmlunicode'>
+    <function name='xmlUCSIsHangulCompatibilityJamo' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of HangulCompatibilityJamo UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsHangulJamo' file='xmlunicode'>
+    <function name='xmlUCSIsHangulJamo' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of HangulJamo UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsHangulSyllables' file='xmlunicode'>
+    <function name='xmlUCSIsHangulSyllables' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of HangulSyllables UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsHanunoo' file='xmlunicode'>
+    <function name='xmlUCSIsHanunoo' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Hanunoo UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsHebrew' file='xmlunicode'>
+    <function name='xmlUCSIsHebrew' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Hebrew UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsHighPrivateUseSurrogates' file='xmlunicode'>
+    <function name='xmlUCSIsHighPrivateUseSurrogates' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of HighPrivateUseSurrogates UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsHighSurrogates' file='xmlunicode'>
+    <function name='xmlUCSIsHighSurrogates' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of HighSurrogates UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsHiragana' file='xmlunicode'>
+    <function name='xmlUCSIsHiragana' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Hiragana UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsIPAExtensions' file='xmlunicode'>
+    <function name='xmlUCSIsIPAExtensions' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of IPAExtensions UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsIdeographicDescriptionCharacters' file='xmlunicode'>
+    <function name='xmlUCSIsIdeographicDescriptionCharacters' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of IdeographicDescriptionCharacters UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsKanbun' file='xmlunicode'>
+    <function name='xmlUCSIsKanbun' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Kanbun UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsKangxiRadicals' file='xmlunicode'>
+    <function name='xmlUCSIsKangxiRadicals' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of KangxiRadicals UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsKannada' file='xmlunicode'>
+    <function name='xmlUCSIsKannada' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Kannada UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsKatakana' file='xmlunicode'>
+    <function name='xmlUCSIsKatakana' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Katakana UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsKatakanaPhoneticExtensions' file='xmlunicode'>
+    <function name='xmlUCSIsKatakanaPhoneticExtensions' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of KatakanaPhoneticExtensions UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsKhmer' file='xmlunicode'>
+    <function name='xmlUCSIsKhmer' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Khmer UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsKhmerSymbols' file='xmlunicode'>
+    <function name='xmlUCSIsKhmerSymbols' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of KhmerSymbols UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsLao' file='xmlunicode'>
+    <function name='xmlUCSIsLao' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Lao UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsLatin1Supplement' file='xmlunicode'>
+    <function name='xmlUCSIsLatin1Supplement' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Latin-1Supplement UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsLatinExtendedA' file='xmlunicode'>
+    <function name='xmlUCSIsLatinExtendedA' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of LatinExtended-A UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsLatinExtendedAdditional' file='xmlunicode'>
+    <function name='xmlUCSIsLatinExtendedAdditional' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of LatinExtendedAdditional UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsLatinExtendedB' file='xmlunicode'>
+    <function name='xmlUCSIsLatinExtendedB' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of LatinExtended-B UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsLetterlikeSymbols' file='xmlunicode'>
+    <function name='xmlUCSIsLetterlikeSymbols' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of LetterlikeSymbols UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsLimbu' file='xmlunicode'>
+    <function name='xmlUCSIsLimbu' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Limbu UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsLinearBIdeograms' file='xmlunicode'>
+    <function name='xmlUCSIsLinearBIdeograms' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of LinearBIdeograms UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsLinearBSyllabary' file='xmlunicode'>
+    <function name='xmlUCSIsLinearBSyllabary' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of LinearBSyllabary UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsLowSurrogates' file='xmlunicode'>
+    <function name='xmlUCSIsLowSurrogates' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of LowSurrogates UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsMalayalam' file='xmlunicode'>
+    <function name='xmlUCSIsMalayalam' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Malayalam UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsMathematicalAlphanumericSymbols' file='xmlunicode'>
+    <function name='xmlUCSIsMathematicalAlphanumericSymbols' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of MathematicalAlphanumericSymbols UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsMathematicalOperators' file='xmlunicode'>
+    <function name='xmlUCSIsMathematicalOperators' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of MathematicalOperators UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsMiscellaneousMathematicalSymbolsA' file='xmlunicode'>
+    <function name='xmlUCSIsMiscellaneousMathematicalSymbolsA' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of MiscellaneousMathematicalSymbols-A UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsMiscellaneousMathematicalSymbolsB' file='xmlunicode'>
+    <function name='xmlUCSIsMiscellaneousMathematicalSymbolsB' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of MiscellaneousMathematicalSymbols-B UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsMiscellaneousSymbols' file='xmlunicode'>
+    <function name='xmlUCSIsMiscellaneousSymbols' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of MiscellaneousSymbols UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsMiscellaneousSymbolsandArrows' file='xmlunicode'>
+    <function name='xmlUCSIsMiscellaneousSymbolsandArrows' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of MiscellaneousSymbolsandArrows UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsMiscellaneousTechnical' file='xmlunicode'>
+    <function name='xmlUCSIsMiscellaneousTechnical' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of MiscellaneousTechnical UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsMongolian' file='xmlunicode'>
+    <function name='xmlUCSIsMongolian' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Mongolian UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsMusicalSymbols' file='xmlunicode'>
+    <function name='xmlUCSIsMusicalSymbols' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of MusicalSymbols UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsMyanmar' file='xmlunicode'>
+    <function name='xmlUCSIsMyanmar' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Myanmar UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsNumberForms' file='xmlunicode'>
+    <function name='xmlUCSIsNumberForms' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of NumberForms UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsOgham' file='xmlunicode'>
+    <function name='xmlUCSIsOgham' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Ogham UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsOldItalic' file='xmlunicode'>
+    <function name='xmlUCSIsOldItalic' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of OldItalic UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsOpticalCharacterRecognition' file='xmlunicode'>
+    <function name='xmlUCSIsOpticalCharacterRecognition' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of OpticalCharacterRecognition UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsOriya' file='xmlunicode'>
+    <function name='xmlUCSIsOriya' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Oriya UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsOsmanya' file='xmlunicode'>
+    <function name='xmlUCSIsOsmanya' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Osmanya UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsPhoneticExtensions' file='xmlunicode'>
+    <function name='xmlUCSIsPhoneticExtensions' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of PhoneticExtensions UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsPrivateUse' file='xmlunicode'>
+    <function name='xmlUCSIsPrivateUse' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of PrivateUse UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsPrivateUseArea' file='xmlunicode'>
+    <function name='xmlUCSIsPrivateUseArea' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of PrivateUseArea UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsRunic' file='xmlunicode'>
+    <function name='xmlUCSIsRunic' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Runic UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsShavian' file='xmlunicode'>
+    <function name='xmlUCSIsShavian' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Shavian UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsSinhala' file='xmlunicode'>
+    <function name='xmlUCSIsSinhala' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Sinhala UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsSmallFormVariants' file='xmlunicode'>
+    <function name='xmlUCSIsSmallFormVariants' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of SmallFormVariants UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsSpacingModifierLetters' file='xmlunicode'>
+    <function name='xmlUCSIsSpacingModifierLetters' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of SpacingModifierLetters UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsSpecials' file='xmlunicode'>
+    <function name='xmlUCSIsSpecials' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Specials UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsSuperscriptsandSubscripts' file='xmlunicode'>
+    <function name='xmlUCSIsSuperscriptsandSubscripts' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of SuperscriptsandSubscripts UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsSupplementalArrowsA' file='xmlunicode'>
+    <function name='xmlUCSIsSupplementalArrowsA' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of SupplementalArrows-A UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsSupplementalArrowsB' file='xmlunicode'>
+    <function name='xmlUCSIsSupplementalArrowsB' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of SupplementalArrows-B UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsSupplementalMathematicalOperators' file='xmlunicode'>
+    <function name='xmlUCSIsSupplementalMathematicalOperators' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of SupplementalMathematicalOperators UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsSupplementaryPrivateUseAreaA' file='xmlunicode'>
+    <function name='xmlUCSIsSupplementaryPrivateUseAreaA' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of SupplementaryPrivateUseArea-A UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsSupplementaryPrivateUseAreaB' file='xmlunicode'>
+    <function name='xmlUCSIsSupplementaryPrivateUseAreaB' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of SupplementaryPrivateUseArea-B UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsSyriac' file='xmlunicode'>
+    <function name='xmlUCSIsSyriac' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Syriac UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsTagalog' file='xmlunicode'>
+    <function name='xmlUCSIsTagalog' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Tagalog UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsTagbanwa' file='xmlunicode'>
+    <function name='xmlUCSIsTagbanwa' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Tagbanwa UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsTags' file='xmlunicode'>
+    <function name='xmlUCSIsTags' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Tags UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsTaiLe' file='xmlunicode'>
+    <function name='xmlUCSIsTaiLe' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of TaiLe UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsTaiXuanJingSymbols' file='xmlunicode'>
+    <function name='xmlUCSIsTaiXuanJingSymbols' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of TaiXuanJingSymbols UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsTamil' file='xmlunicode'>
+    <function name='xmlUCSIsTamil' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Tamil UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsTelugu' file='xmlunicode'>
+    <function name='xmlUCSIsTelugu' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Telugu UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsThaana' file='xmlunicode'>
+    <function name='xmlUCSIsThaana' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Thaana UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsThai' file='xmlunicode'>
+    <function name='xmlUCSIsThai' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Thai UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsTibetan' file='xmlunicode'>
+    <function name='xmlUCSIsTibetan' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Tibetan UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsUgaritic' file='xmlunicode'>
+    <function name='xmlUCSIsUgaritic' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of Ugaritic UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsUnifiedCanadianAboriginalSyllabics' file='xmlunicode'>
+    <function name='xmlUCSIsUnifiedCanadianAboriginalSyllabics' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of UnifiedCanadianAboriginalSyllabics UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsVariationSelectors' file='xmlunicode'>
+    <function name='xmlUCSIsVariationSelectors' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of VariationSelectors UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsVariationSelectorsSupplement' file='xmlunicode'>
+    <function name='xmlUCSIsVariationSelectorsSupplement' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of VariationSelectorsSupplement UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsYiRadicals' file='xmlunicode'>
+    <function name='xmlUCSIsYiRadicals' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of YiRadicals UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsYiSyllables' file='xmlunicode'>
+    <function name='xmlUCSIsYiSyllables' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of YiSyllables UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlUCSIsYijingHexagramSymbols' file='xmlunicode'>
+    <function name='xmlUCSIsYijingHexagramSymbols' file='xmlunicode' module='xmlunicode'>
       <cond>defined(LIBXML_UNICODE_ENABLED)</cond>
       <info>Check whether the character is part of YijingHexagramSymbols UCS Block</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='code' type='int' info='UCS code point'/>
     </function>
-    <function name='xmlURIEscape' file='uri'>
+    <function name='xmlURIEscape' file='uri' module='uri'>
       <info>Escaping routine, does not do validity checks ! It will try to escape the chars needing this, but this is heuristic based it&apos;s impossible to be sure.</info>
       <return type='xmlChar *' info='an copy of the string, but escaped  25 May 2001 Uses xmlParseURI and xmlURIEscapeStr to try to escape correctly according to RFC2396. - Carl Douglas'/>
       <arg name='str' type='const xmlChar *' info='the string of the URI to escape'/>
     </function>
-    <function name='xmlURIEscapeStr' file='uri'>
+    <function name='xmlURIEscapeStr' file='uri' module='uri'>
       <info>This routine escapes a string to hex, ignoring reserved characters (a-z) and the characters in the exception list.</info>
       <return type='xmlChar *' info='a new escaped string or NULL in case of error.'/>
       <arg name='str' type='const xmlChar *' info='string to escape'/>
       <arg name='list' type='const xmlChar *' info='exception list string of chars not to escape'/>
     </function>
-    <function name='xmlURIUnescapeString' file='uri'>
+    <function name='xmlURIUnescapeString' file='uri' module='uri'>
       <info>Unescaping routine, does not do validity checks ! Output is direct unsigned char translation of %XX values (no encoding)</info>
       <return type='char *' info='an copy of the string, but unescaped'/>
       <arg name='str' type='const char *' info='the string to unescape'/>
       <arg name='len' type='int' info='the length in bytes to unescape (or &lt;= 0 to indicate full string)'/>
       <arg name='target' type='char *' info='optional destination buffer'/>
     </function>
-    <function name='xmlUTF8Charcmp' file='xmlstring'>
+    <function name='xmlUTF8Charcmp' file='xmlstring' module='xmlstring'>
       <info>compares the two UCS4 values</info>
       <return type='int' info='result of the compare as with xmlStrncmp'/>
       <arg name='utf1' type='const xmlChar *' info='pointer to first UTF8 char'/>
       <arg name='utf2' type='const xmlChar *' info='pointer to second UTF8 char'/>
     </function>
-    <function name='xmlUTF8Size' file='xmlstring'>
+    <function name='xmlUTF8Size' file='xmlstring' module='xmlstring'>
       <info>calculates the internal size of a UTF8 character</info>
       <return type='int' info='the numbers of bytes in the character, -1 on format error'/>
       <arg name='utf' type='const xmlChar *' info='pointer to the UTF8 character'/>
     </function>
-    <function name='xmlUTF8Strlen' file='xmlstring'>
+    <function name='xmlUTF8Strlen' file='xmlstring' module='xmlstring'>
       <info>compute the length of an UTF8 string, it doesn&apos;t do a full UTF8 checking of the content of the string.</info>
       <return type='int' info='the number of characters in the string or -1 in case of error'/>
       <arg name='utf' type='const xmlChar *' info='a sequence of UTF-8 encoded bytes'/>
     </function>
-    <function name='xmlUTF8Strloc' file='xmlstring'>
+    <function name='xmlUTF8Strloc' file='xmlstring' module='xmlstring'>
       <info>a function to provide the relative location of a UTF8 char</info>
       <return type='int' info='the relative character position of the desired char or -1 if not found'/>
       <arg name='utf' type='const xmlChar *' info='the input UTF8 *'/>
       <arg name='utfchar' type='const xmlChar *' info='the UTF8 character to be found'/>
     </function>
-    <function name='xmlUTF8Strndup' file='xmlstring'>
+    <function name='xmlUTF8Strndup' file='xmlstring' module='xmlstring'>
       <info>a strndup for array of UTF8&apos;s</info>
       <return type='xmlChar *' info='a new UTF8 * or NULL'/>
       <arg name='utf' type='const xmlChar *' info='the input UTF8 *'/>
       <arg name='len' type='int' info='the len of @utf (in chars)'/>
     </function>
-    <function name='xmlUTF8Strpos' file='xmlstring'>
+    <function name='xmlUTF8Strpos' file='xmlstring' module='xmlstring'>
       <info>a function to provide the equivalent of fetching a character from a string array</info>
       <return type='const xmlChar *' info='a pointer to the UTF8 character or NULL'/>
       <arg name='utf' type='const xmlChar *' info='the input UTF8 *'/>
       <arg name='pos' type='int' info='the position of the desired UTF8 char (in chars)'/>
     </function>
-    <function name='xmlUTF8Strsize' file='xmlstring'>
+    <function name='xmlUTF8Strsize' file='xmlstring' module='xmlstring'>
       <info>storage size of an UTF8 string the behaviour is not garanteed if the input string is not UTF-8</info>
       <return type='int' info='the storage size of the first &apos;len&apos; characters of ARRAY'/>
       <arg name='utf' type='const xmlChar *' info='a sequence of UTF-8 encoded bytes'/>
       <arg name='len' type='int' info='the number of characters in the array'/>
     </function>
-    <function name='xmlUTF8Strsub' file='xmlstring'>
+    <function name='xmlUTF8Strsub' file='xmlstring' module='xmlstring'>
       <info>Create a substring from a given UTF-8 string Note:  positions are given in units of UTF-8 chars</info>
       <return type='xmlChar *' info='a pointer to a newly created string or NULL if any problem'/>
       <arg name='utf' type='const xmlChar *' info='a sequence of UTF-8 encoded bytes'/>
       <arg name='start' type='int' info='relative pos of first char'/>
       <arg name='len' type='int' info='total number to copy'/>
     </function>
-    <function name='xmlUnlinkNode' file='tree'>
+    <function name='xmlUnlinkNode' file='tree' module='tree'>
       <info>Unlink a node from it&apos;s current context, the node is not freed</info>
       <return type='void'/>
       <arg name='cur' type='xmlNodePtr' info='the node'/>
     </function>
-    <function name='xmlUnlockLibrary' file='threads'>
+    <function name='xmlUnlockLibrary' file='threads' module='threads'>
       <info>xmlUnlockLibrary() is used to release a re-entrant lock on the libxml2 library.</info>
       <return type='void'/>
     </function>
-    <function name='xmlUnsetNsProp' file='tree'>
+    <function name='xmlUnsetNsProp' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Remove an attribute carried by a node.</info>
       <return type='int' info='0 if successful, -1 if not found'/>
@@ -15673,21 +15721,21 @@
       <arg name='ns' type='xmlNsPtr' info='the namespace definition'/>
       <arg name='name' type='const xmlChar *' info='the attribute name'/>
     </function>
-    <function name='xmlUnsetProp' file='tree'>
+    <function name='xmlUnsetProp' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Remove an attribute carried by a node.</info>
       <return type='int' info='0 if successful, -1 if not found'/>
       <arg name='node' type='xmlNodePtr' info='the node'/>
       <arg name='name' type='const xmlChar *' info='the attribute name'/>
     </function>
-    <function name='xmlValidBuildContentModel' file='valid'>
+    <function name='xmlValidBuildContentModel' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED) &amp;&amp; defined(LIBXML_REGEXP_ENABLED)</cond>
       <info>(Re)Build the automata associated to the content model of this element</info>
       <return type='int' info='1 in case of success, 0 in case of error'/>
       <arg name='ctxt' type='xmlValidCtxtPtr' info='a validation context'/>
       <arg name='elem' type='xmlElementPtr' info='an element declaration node'/>
     </function>
-    <function name='xmlValidCtxtNormalizeAttributeValue' file='valid'>
+    <function name='xmlValidCtxtNormalizeAttributeValue' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Does the validation related extra step of the normalization of attribute values:  If the declared value is not CDATA, then the XML processor must further process the normalized attribute value by discarding any leading and trailing space (#x20) characters, and by replacing sequences of space (#x20) characters by single space (#x20) character.  Also  check VC: Standalone Document Declaration in P32, and update ctxt-&gt;valid accordingly</info>
       <return type='xmlChar *' info='a new normalized string if normalization is needed, NULL otherwise the caller must free the returned value.'/>
@@ -15697,7 +15745,7 @@
       <arg name='name' type='const xmlChar *' info='the attribute name'/>
       <arg name='value' type='const xmlChar *' info='the attribute value'/>
     </function>
-    <function name='xmlValidGetPotentialChildren' file='valid'>
+    <function name='xmlValidGetPotentialChildren' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Build/extend a list of  potential children allowed by the content tree</info>
       <return type='int' info='the number of element in the list, or -1 in case of error.'/>
@@ -15706,7 +15754,7 @@
       <arg name='len' type='int *' info='a pointer to the number of element in the list'/>
       <arg name='max' type='int' info='the size of the array'/>
     </function>
-    <function name='xmlValidGetValidElements' file='valid'>
+    <function name='xmlValidGetValidElements' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>This function returns the list of authorized children to insert within an existing tree while respecting the validity constraints forced by the Dtd. The insertion point is defined using @prev and @next in the following ways: to insert before &apos;node&apos;: xmlValidGetValidElements(node-&gt;prev, node, ... to insert next &apos;node&apos;: xmlValidGetValidElements(node, node-&gt;next, ... to replace &apos;node&apos;: xmlValidGetValidElements(node-&gt;prev, node-&gt;next, ... to prepend a child to &apos;node&apos;: xmlValidGetValidElements(NULL, node-&gt;childs, to append a child to &apos;node&apos;: xmlValidGetValidElements(node-&gt;last, NULL, ...  pointers to the element names are inserted at the beginning of the array and do not need to be freed.</info>
       <return type='int' info='the number of element in the list, or -1 in case of error. If the function returns the value @max the caller is invited to grow the receiving array and retry.'/>
@@ -15715,7 +15763,7 @@
       <arg name='names' type='const xmlChar **' info='an array to store the list of child names'/>
       <arg name='max' type='int' info='the size of the array'/>
     </function>
-    <function name='xmlValidNormalizeAttributeValue' file='valid'>
+    <function name='xmlValidNormalizeAttributeValue' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Does the validation related extra step of the normalization of attribute values:  If the declared value is not CDATA, then the XML processor must further process the normalized attribute value by discarding any leading and trailing space (#x20) characters, and by replacing sequences of space (#x20) characters by single space (#x20) character.</info>
       <return type='xmlChar *' info='a new normalized string if normalization is needed, NULL otherwise the caller must free the returned value.'/>
@@ -15724,7 +15772,7 @@
       <arg name='name' type='const xmlChar *' info='the attribute name'/>
       <arg name='value' type='const xmlChar *' info='the attribute value'/>
     </function>
-    <function name='xmlValidateAttributeDecl' file='valid'>
+    <function name='xmlValidateAttributeDecl' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Try to validate a single attribute definition basically it does the following checks as described by the XML-1.0 recommendation: - [ VC: Attribute Default Legal ] - [ VC: Enumeration ] - [ VC: ID Attribute Default ]  The ID/IDREF uniqueness and matching are done separately</info>
       <return type='int' info='1 if valid or 0 otherwise'/>
@@ -15732,28 +15780,28 @@
       <arg name='doc' type='xmlDocPtr' info='a document instance'/>
       <arg name='attr' type='xmlAttributePtr' info='an attribute definition'/>
     </function>
-    <function name='xmlValidateAttributeValue' file='valid'>
+    <function name='xmlValidateAttributeValue' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Validate that the given attribute value match  the proper production  [ VC: ID ] Values of type ID must match the Name production....  [ VC: IDREF ] Values of type IDREF must match the Name production, and values of type IDREFS must match Names ...  [ VC: Entity Name ] Values of type ENTITY must match the Name production, values of type ENTITIES must match Names ...  [ VC: Name Token ] Values of type NMTOKEN must match the Nmtoken production; values of type NMTOKENS must match Nmtokens.</info>
       <return type='int' info='1 if valid or 0 otherwise'/>
       <arg name='type' type='xmlAttributeType' info='an attribute type'/>
       <arg name='value' type='const xmlChar *' info='an attribute value'/>
     </function>
-    <function name='xmlValidateDocument' file='valid'>
+    <function name='xmlValidateDocument' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Try to validate the document instance  basically it does the all the checks described by the XML Rec i.e. validates the internal and external subset (if present) and validate the document tree.</info>
       <return type='int' info='1 if valid or 0 otherwise'/>
       <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
       <arg name='doc' type='xmlDocPtr' info='a document instance'/>
     </function>
-    <function name='xmlValidateDocumentFinal' file='valid'>
+    <function name='xmlValidateDocumentFinal' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Does the final step for the document validation once all the incremental validation steps have been completed  basically it does the following checks described by the XML Rec  Check all the IDREF/IDREFS attributes definition for validity</info>
       <return type='int' info='1 if valid or 0 otherwise'/>
       <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
       <arg name='doc' type='xmlDocPtr' info='a document instance'/>
     </function>
-    <function name='xmlValidateDtd' file='valid'>
+    <function name='xmlValidateDtd' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Try to validate the document against the dtd instance  Basically it does check all the definitions in the DtD. Note the the internal subset (if present) is de-coupled (i.e. not used), which could give problems if ID or IDREF is present.</info>
       <return type='int' info='1 if valid or 0 otherwise'/>
@@ -15761,14 +15809,14 @@
       <arg name='doc' type='xmlDocPtr' info='a document instance'/>
       <arg name='dtd' type='xmlDtdPtr' info='a dtd instance'/>
     </function>
-    <function name='xmlValidateDtdFinal' file='valid'>
+    <function name='xmlValidateDtdFinal' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Does the final step for the dtds validation once all the subsets have been parsed  basically it does the following checks described by the XML Rec - check that ENTITY and ENTITIES type attributes default or possible values matches one of the defined entities. - check that NOTATION type attributes default or possible values matches one of the defined notations.</info>
       <return type='int' info='1 if valid or 0 if invalid and -1 if not well-formed'/>
       <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
       <arg name='doc' type='xmlDocPtr' info='a document instance'/>
     </function>
-    <function name='xmlValidateElement' file='valid'>
+    <function name='xmlValidateElement' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Try to validate the subtree under an element</info>
       <return type='int' info='1 if valid or 0 otherwise'/>
@@ -15776,7 +15824,7 @@
       <arg name='doc' type='xmlDocPtr' info='a document instance'/>
       <arg name='elem' type='xmlNodePtr' info='an element instance'/>
     </function>
-    <function name='xmlValidateElementDecl' file='valid'>
+    <function name='xmlValidateElementDecl' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Try to validate a single element definition basically it does the following checks as described by the XML-1.0 recommendation: - [ VC: One ID per Element Type ] - [ VC: No Duplicate Types ] - [ VC: Unique Element Type Declaration ]</info>
       <return type='int' info='1 if valid or 0 otherwise'/>
@@ -15784,52 +15832,52 @@
       <arg name='doc' type='xmlDocPtr' info='a document instance'/>
       <arg name='elem' type='xmlElementPtr' info='an element definition'/>
     </function>
-    <function name='xmlValidateNCName' file='tree'>
+    <function name='xmlValidateNCName' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED)</cond>
       <info>Check that a value conforms to the lexical space of NCName</info>
       <return type='int' info='0 if this validates, a positive error code number otherwise and -1 in case of internal or API error.'/>
       <arg name='value' type='const xmlChar *' info='the value to check'/>
       <arg name='space' type='int' info='allow spaces in front and end of the string'/>
     </function>
-    <function name='xmlValidateNMToken' file='tree'>
+    <function name='xmlValidateNMToken' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Check that a value conforms to the lexical space of NMToken</info>
       <return type='int' info='0 if this validates, a positive error code number otherwise and -1 in case of internal or API error.'/>
       <arg name='value' type='const xmlChar *' info='the value to check'/>
       <arg name='space' type='int' info='allow spaces in front and end of the string'/>
     </function>
-    <function name='xmlValidateName' file='tree'>
+    <function name='xmlValidateName' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Check that a value conforms to the lexical space of Name</info>
       <return type='int' info='0 if this validates, a positive error code number otherwise and -1 in case of internal or API error.'/>
       <arg name='value' type='const xmlChar *' info='the value to check'/>
       <arg name='space' type='int' info='allow spaces in front and end of the string'/>
     </function>
-    <function name='xmlValidateNameValue' file='valid'>
+    <function name='xmlValidateNameValue' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Validate that the given value match Name production</info>
       <return type='int' info='1 if valid or 0 otherwise'/>
       <arg name='value' type='const xmlChar *' info='an Name value'/>
     </function>
-    <function name='xmlValidateNamesValue' file='valid'>
+    <function name='xmlValidateNamesValue' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Validate that the given value match Names production</info>
       <return type='int' info='1 if valid or 0 otherwise'/>
       <arg name='value' type='const xmlChar *' info='an Names value'/>
     </function>
-    <function name='xmlValidateNmtokenValue' file='valid'>
+    <function name='xmlValidateNmtokenValue' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Validate that the given value match Nmtoken production  [ VC: Name Token ]</info>
       <return type='int' info='1 if valid or 0 otherwise'/>
       <arg name='value' type='const xmlChar *' info='an Nmtoken value'/>
     </function>
-    <function name='xmlValidateNmtokensValue' file='valid'>
+    <function name='xmlValidateNmtokensValue' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Validate that the given value match Nmtokens production  [ VC: Name Token ]</info>
       <return type='int' info='1 if valid or 0 otherwise'/>
       <arg name='value' type='const xmlChar *' info='an Nmtokens value'/>
     </function>
-    <function name='xmlValidateNotationDecl' file='valid'>
+    <function name='xmlValidateNotationDecl' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Try to validate a single notation definition basically it does the following checks as described by the XML-1.0 recommendation: - it seems that no validity constraint exists on notation declarations But this function get called anyway ...</info>
       <return type='int' info='1 if valid or 0 otherwise'/>
@@ -15837,7 +15885,7 @@
       <arg name='doc' type='xmlDocPtr' info='a document instance'/>
       <arg name='nota' type='xmlNotationPtr' info='a notation definition'/>
     </function>
-    <function name='xmlValidateNotationUse' file='valid'>
+    <function name='xmlValidateNotationUse' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Validate that the given name match a notation declaration. - [ VC: Notation Declared ]</info>
       <return type='int' info='1 if valid or 0 otherwise'/>
@@ -15845,7 +15893,7 @@
       <arg name='doc' type='xmlDocPtr' info='the document'/>
       <arg name='notationName' type='const xmlChar *' info='the notation name to check'/>
     </function>
-    <function name='xmlValidateOneAttribute' file='valid'>
+    <function name='xmlValidateOneAttribute' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Try to validate a single attribute for an element basically it does the following checks as described by the XML-1.0 recommendation: - [ VC: Attribute Value Type ] - [ VC: Fixed Attribute Default ] - [ VC: Entity Name ] - [ VC: Name Token ] - [ VC: ID ] - [ VC: IDREF ] - [ VC: Entity Name ] - [ VC: Notation Attributes ]  The ID/IDREF uniqueness and matching are done separately</info>
       <return type='int' info='1 if valid or 0 otherwise'/>
@@ -15855,7 +15903,7 @@
       <arg name='attr' type='xmlAttrPtr' info='an attribute instance'/>
       <arg name='value' type='const xmlChar *' info='the attribute value (without entities processing)'/>
     </function>
-    <function name='xmlValidateOneElement' file='valid'>
+    <function name='xmlValidateOneElement' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Try to validate a single element and it&apos;s attributes, basically it does the following checks as described by the XML-1.0 recommendation: - [ VC: Element Valid ] - [ VC: Required Attribute ] Then call xmlValidateOneAttribute() for each attribute present.  The ID/IDREF checkings are done separately</info>
       <return type='int' info='1 if valid or 0 otherwise'/>
@@ -15863,7 +15911,7 @@
       <arg name='doc' type='xmlDocPtr' info='a document instance'/>
       <arg name='elem' type='xmlNodePtr' info='an element instance'/>
     </function>
-    <function name='xmlValidateOneNamespace' file='valid'>
+    <function name='xmlValidateOneNamespace' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Try to validate a single namespace declaration for an element basically it does the following checks as described by the XML-1.0 recommendation: - [ VC: Attribute Value Type ] - [ VC: Fixed Attribute Default ] - [ VC: Entity Name ] - [ VC: Name Token ] - [ VC: ID ] - [ VC: IDREF ] - [ VC: Entity Name ] - [ VC: Notation Attributes ]  The ID/IDREF uniqueness and matching are done separately</info>
       <return type='int' info='1 if valid or 0 otherwise'/>
@@ -15874,7 +15922,7 @@
       <arg name='ns' type='xmlNsPtr' info='an namespace declaration instance'/>
       <arg name='value' type='const xmlChar *' info='the attribute value (without entities processing)'/>
     </function>
-    <function name='xmlValidatePopElement' file='valid'>
+    <function name='xmlValidatePopElement' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED) &amp;&amp; defined(LIBXML_REGEXP_ENABLED)</cond>
       <info>Pop the element end from the validation stack.</info>
       <return type='int' info='1 if no validation problem was found or 0 otherwise'/>
@@ -15883,7 +15931,7 @@
       <arg name='elem' type='xmlNodePtr' info='an element instance'/>
       <arg name='qname' type='const xmlChar *' info='the qualified name as appearing in the serialization'/>
     </function>
-    <function name='xmlValidatePushCData' file='valid'>
+    <function name='xmlValidatePushCData' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED) &amp;&amp; defined(LIBXML_REGEXP_ENABLED)</cond>
       <info>check the CData parsed for validation in the current stack</info>
       <return type='int' info='1 if no validation problem was found or 0 otherwise'/>
@@ -15891,7 +15939,7 @@
       <arg name='data' type='const xmlChar *' info='some character data read'/>
       <arg name='len' type='int' info='the lenght of the data'/>
     </function>
-    <function name='xmlValidatePushElement' file='valid'>
+    <function name='xmlValidatePushElement' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED) &amp;&amp; defined(LIBXML_REGEXP_ENABLED)</cond>
       <info>Push a new element start on the validation stack.</info>
       <return type='int' info='1 if no validation problem was found or 0 otherwise'/>
@@ -15900,205 +15948,205 @@
       <arg name='elem' type='xmlNodePtr' info='an element instance'/>
       <arg name='qname' type='const xmlChar *' info='the qualified name as appearing in the serialization'/>
     </function>
-    <function name='xmlValidateQName' file='tree'>
+    <function name='xmlValidateQName' file='tree' module='tree'>
       <cond>defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Check that a value conforms to the lexical space of QName</info>
       <return type='int' info='0 if this validates, a positive error code number otherwise and -1 in case of internal or API error.'/>
       <arg name='value' type='const xmlChar *' info='the value to check'/>
       <arg name='space' type='int' info='allow spaces in front and end of the string'/>
     </function>
-    <function name='xmlValidateRoot' file='valid'>
+    <function name='xmlValidateRoot' file='valid' module='valid'>
       <cond>defined(LIBXML_VALID_ENABLED)</cond>
       <info>Try to validate a the root element basically it does the following check as described by the XML-1.0 recommendation: - [ VC: Root Element Type ] it doesn&apos;t try to recurse or apply other check to the element</info>
       <return type='int' info='1 if valid or 0 otherwise'/>
       <arg name='ctxt' type='xmlValidCtxtPtr' info='the validation context'/>
       <arg name='doc' type='xmlDocPtr' info='a document instance'/>
     </function>
-    <functype name='xmlValidityErrorFunc' file='valid'>
+    <functype name='xmlValidityErrorFunc' file='valid' module='valid'>
       <info>Callback called when a validity error is found. This is a message oriented function similar to an *printf function.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='usually an xmlValidCtxtPtr to a validity error context, but comes from ctxt-&gt;userData (which normally contains such a pointer); ctxt-&gt;userData can be changed by the user.'/>
       <arg name='msg' type='const char *' info='the string to format *printf like vararg'/>
       <arg name='...' type='...' info='remaining arguments to the format'/>
     </functype>
-    <functype name='xmlValidityWarningFunc' file='valid'>
+    <functype name='xmlValidityWarningFunc' file='valid' module='valid'>
       <info>Callback called when a validity warning is found. This is a message oriented function similar to an *printf function.</info>
       <return type='void'/>
       <arg name='ctx' type='void *' info='usually an xmlValidCtxtPtr to a validity error context, but comes from ctxt-&gt;userData (which normally contains such a pointer); ctxt-&gt;userData can be changed by the user.'/>
       <arg name='msg' type='const char *' info='the string to format *printf like vararg'/>
       <arg name='...' type='...' info='remaining arguments to the format'/>
     </functype>
-    <function name='xmlXIncludeFreeContext' file='xinclude'>
+    <function name='xmlXIncludeFreeContext' file='xinclude' module='xinclude'>
       <cond>defined(LIBXML_XINCLUDE_ENABLED)</cond>
       <info>Free an XInclude context</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXIncludeCtxtPtr' info='the XInclude context'/>
     </function>
-    <function name='xmlXIncludeNewContext' file='xinclude'>
+    <function name='xmlXIncludeNewContext' file='xinclude' module='xinclude'>
       <cond>defined(LIBXML_XINCLUDE_ENABLED)</cond>
       <info>Creates a new XInclude context</info>
       <return type='xmlXIncludeCtxtPtr' info='the new set'/>
       <arg name='doc' type='xmlDocPtr' info='an XML Document'/>
     </function>
-    <function name='xmlXIncludeProcess' file='xinclude'>
+    <function name='xmlXIncludeProcess' file='xinclude' module='xinclude'>
       <cond>defined(LIBXML_XINCLUDE_ENABLED)</cond>
       <info>Implement the XInclude substitution on the XML document @doc</info>
       <return type='int' info='0 if no substitution were done, -1 if some processing failed or the number of substitutions done.'/>
       <arg name='doc' type='xmlDocPtr' info='an XML document'/>
     </function>
-    <function name='xmlXIncludeProcessFlags' file='xinclude'>
+    <function name='xmlXIncludeProcessFlags' file='xinclude' module='xinclude'>
       <cond>defined(LIBXML_XINCLUDE_ENABLED)</cond>
       <info>Implement the XInclude substitution on the XML document @doc</info>
       <return type='int' info='0 if no substitution were done, -1 if some processing failed or the number of substitutions done.'/>
       <arg name='doc' type='xmlDocPtr' info='an XML document'/>
       <arg name='flags' type='int' info='a set of xmlParserOption used for parsing XML includes'/>
     </function>
-    <function name='xmlXIncludeProcessNode' file='xinclude'>
+    <function name='xmlXIncludeProcessNode' file='xinclude' module='xinclude'>
       <cond>defined(LIBXML_XINCLUDE_ENABLED)</cond>
       <info>Implement the XInclude substitution for the given subtree reusing the informations and data coming from the given context.</info>
       <return type='int' info='0 if no substitution were done, -1 if some processing failed or the number of substitutions done.'/>
       <arg name='ctxt' type='xmlXIncludeCtxtPtr' info='an existing XInclude context'/>
       <arg name='node' type='xmlNodePtr' info='a node in an XML document'/>
     </function>
-    <function name='xmlXIncludeProcessTree' file='xinclude'>
+    <function name='xmlXIncludeProcessTree' file='xinclude' module='xinclude'>
       <cond>defined(LIBXML_XINCLUDE_ENABLED)</cond>
       <info>Implement the XInclude substitution for the given subtree</info>
       <return type='int' info='0 if no substitution were done, -1 if some processing failed or the number of substitutions done.'/>
       <arg name='tree' type='xmlNodePtr' info='a node in an XML document'/>
     </function>
-    <function name='xmlXIncludeProcessTreeFlags' file='xinclude'>
+    <function name='xmlXIncludeProcessTreeFlags' file='xinclude' module='xinclude'>
       <cond>defined(LIBXML_XINCLUDE_ENABLED)</cond>
       <info>Implement the XInclude substitution for the given subtree</info>
       <return type='int' info='0 if no substitution were done, -1 if some processing failed or the number of substitutions done.'/>
       <arg name='tree' type='xmlNodePtr' info='a node in an XML document'/>
       <arg name='flags' type='int' info='a set of xmlParserOption used for parsing XML includes'/>
     </function>
-    <function name='xmlXIncludeSetFlags' file='xinclude'>
+    <function name='xmlXIncludeSetFlags' file='xinclude' module='xinclude'>
       <cond>defined(LIBXML_XINCLUDE_ENABLED)</cond>
       <info>Set the flags used for further processing of XML resources.</info>
       <return type='int' info='0 in case of success and -1 in case of error.'/>
       <arg name='ctxt' type='xmlXIncludeCtxtPtr' info='an XInclude processing context'/>
       <arg name='flags' type='int' info='a set of xmlParserOption used for parsing XML includes'/>
     </function>
-    <function name='xmlXPathAddValues' file='xpathInternals'>
+    <function name='xmlXPathAddValues' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the add operation on XPath objects: The numeric operators convert their operands to numbers as if by calling the number function.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
     </function>
-    <functype name='xmlXPathAxisFunc' file='xpath'>
+    <functype name='xmlXPathAxisFunc' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>An axis traversal function. To traverse an axis, the engine calls the first time with cur == NULL and repeat until the function returns NULL indicating the end of the axis traversal.</info>
       <return type='xmlXPathObjectPtr' info='the next node in that axis or NULL if at the end of the axis.'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath interpreter context'/>
       <arg name='cur' type='xmlXPathObjectPtr' info='the previous node being explored on that axis'/>
     </functype>
-    <function name='xmlXPathBooleanFunction' file='xpathInternals'>
+    <function name='xmlXPathBooleanFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the boolean() XPath function boolean boolean(object) The boolean function converts its argument to a boolean as follows: - a number is true if and only if it is neither positive or negative zero nor NaN - a node-set is true if and only if it is non-empty - a string is true if and only if its length is non-zero</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathCastBooleanToNumber' file='xpath'>
+    <function name='xmlXPathCastBooleanToNumber' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Converts a boolean to its number value</info>
       <return type='double' info='the number value'/>
       <arg name='val' type='int' info='a boolean'/>
     </function>
-    <function name='xmlXPathCastBooleanToString' file='xpath'>
+    <function name='xmlXPathCastBooleanToString' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Converts a boolean to its string value.</info>
       <return type='xmlChar *' info='a newly allocated string.'/>
       <arg name='val' type='int' info='a boolean'/>
     </function>
-    <function name='xmlXPathCastNodeSetToBoolean' file='xpath'>
+    <function name='xmlXPathCastNodeSetToBoolean' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Converts a node-set to its boolean value</info>
       <return type='int' info='the boolean value'/>
       <arg name='ns' type='xmlNodeSetPtr' info='a node-set'/>
     </function>
-    <function name='xmlXPathCastNodeSetToNumber' file='xpath'>
+    <function name='xmlXPathCastNodeSetToNumber' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Converts a node-set to its number value</info>
       <return type='double' info='the number value'/>
       <arg name='ns' type='xmlNodeSetPtr' info='a node-set'/>
     </function>
-    <function name='xmlXPathCastNodeSetToString' file='xpath'>
+    <function name='xmlXPathCastNodeSetToString' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Converts a node-set to its string value.</info>
       <return type='xmlChar *' info='a newly allocated string.'/>
       <arg name='ns' type='xmlNodeSetPtr' info='a node-set'/>
     </function>
-    <function name='xmlXPathCastNodeToNumber' file='xpath'>
+    <function name='xmlXPathCastNodeToNumber' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Converts a node to its number value</info>
       <return type='double' info='the number value'/>
       <arg name='node' type='xmlNodePtr' info='a node'/>
     </function>
-    <function name='xmlXPathCastNodeToString' file='xpath'>
+    <function name='xmlXPathCastNodeToString' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Converts a node to its string value.</info>
       <return type='xmlChar *' info='a newly allocated string.'/>
       <arg name='node' type='xmlNodePtr' info='a node'/>
     </function>
-    <function name='xmlXPathCastNumberToBoolean' file='xpath'>
+    <function name='xmlXPathCastNumberToBoolean' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Converts a number to its boolean value</info>
       <return type='int' info='the boolean value'/>
       <arg name='val' type='double' info='a number'/>
     </function>
-    <function name='xmlXPathCastNumberToString' file='xpath'>
+    <function name='xmlXPathCastNumberToString' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Converts a number to its string value.</info>
       <return type='xmlChar *' info='a newly allocated string.'/>
       <arg name='val' type='double' info='a number'/>
     </function>
-    <function name='xmlXPathCastStringToBoolean' file='xpath'>
+    <function name='xmlXPathCastStringToBoolean' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Converts a string to its boolean value</info>
       <return type='int' info='the boolean value'/>
       <arg name='val' type='const xmlChar *' info='a string'/>
     </function>
-    <function name='xmlXPathCastStringToNumber' file='xpath'>
+    <function name='xmlXPathCastStringToNumber' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Converts a string to its number value</info>
       <return type='double' info='the number value'/>
       <arg name='val' type='const xmlChar *' info='a string'/>
     </function>
-    <function name='xmlXPathCastToBoolean' file='xpath'>
+    <function name='xmlXPathCastToBoolean' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Converts an XPath object to its boolean value</info>
       <return type='int' info='the boolean value'/>
       <arg name='val' type='xmlXPathObjectPtr' info='an XPath object'/>
     </function>
-    <function name='xmlXPathCastToNumber' file='xpath'>
+    <function name='xmlXPathCastToNumber' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Converts an XPath object to its number value</info>
       <return type='double' info='the number value'/>
       <arg name='val' type='xmlXPathObjectPtr' info='an XPath object'/>
     </function>
-    <function name='xmlXPathCastToString' file='xpath'>
+    <function name='xmlXPathCastToString' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Converts an existing object to its string() equivalent</info>
       <return type='xmlChar *' info='the string value of the object, NULL in case of error. A new string is allocated only if needed (@val isn&apos;t a string object).'/>
       <arg name='val' type='xmlXPathObjectPtr' info='an XPath object'/>
     </function>
-    <function name='xmlXPathCeilingFunction' file='xpathInternals'>
+    <function name='xmlXPathCeilingFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the ceiling() XPath function number ceiling(number) The ceiling function returns the smallest (closest to negative infinity) number that is not less than the argument and that is an integer.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathCmpNodes' file='xpath'>
+    <function name='xmlXPathCmpNodes' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Compare two nodes w.r.t document order</info>
       <return type='int' info='-2 in case of error 1 if first point &lt; second point, 0 if it&apos;s the same node, -1 otherwise'/>
       <arg name='node1' type='xmlNodePtr' info='the first node'/>
       <arg name='node2' type='xmlNodePtr' info='the second node'/>
     </function>
-    <function name='xmlXPathCompareValues' file='xpathInternals'>
+    <function name='xmlXPathCompareValues' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the compare operation on XPath objects: @arg1 &lt; @arg2    (1, 1, ... @arg1 &lt;= @arg2   (1, 0, ... @arg1 &gt; @arg2    (0, 1, ... @arg1 &gt;= @arg2   (0, 0, ...  When neither object to be compared is a node-set and the operator is &lt;=, &lt;, &gt;=, &gt;, then the objects are compared by converted both objects to numbers and comparing the numbers according to IEEE 754. The &lt; comparison will be true if and only if the first number is less than the second number. The &lt;= comparison will be true if and only if the first number is less than or equal to the second number. The &gt; comparison will be true if and only if the first number is greater than the second number. The &gt;= comparison will be true if and only if the first number is greater than or equal to the second number.</info>
       <return type='int' info='1 if the comparison succeeded, 0 if it failed'/>
@@ -16106,73 +16154,73 @@
       <arg name='inf' type='int' info='less than (1) or greater than (0)'/>
       <arg name='strict' type='int' info='is the comparison strict'/>
     </function>
-    <function name='xmlXPathCompile' file='xpath'>
+    <function name='xmlXPathCompile' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Compile an XPath expression</info>
       <return type='xmlXPathCompExprPtr' info='the xmlXPathCompExprPtr resulting from the compilation or NULL. the caller has to free the object.'/>
       <arg name='str' type='const xmlChar *' info='the XPath expression'/>
     </function>
-    <function name='xmlXPathCompiledEval' file='xpath'>
+    <function name='xmlXPathCompiledEval' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Evaluate the Precompiled XPath expression in the given context.</info>
       <return type='xmlXPathObjectPtr' info='the xmlXPathObjectPtr resulting from the evaluation or NULL. the caller has to free the object.'/>
       <arg name='comp' type='xmlXPathCompExprPtr' info='the compiled XPath expression'/>
       <arg name='ctx' type='xmlXPathContextPtr' info='the XPath context'/>
     </function>
-    <function name='xmlXPathConcatFunction' file='xpathInternals'>
+    <function name='xmlXPathConcatFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the concat() XPath function string concat(string, string, string*) The concat function returns the concatenation of its arguments.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathContainsFunction' file='xpathInternals'>
+    <function name='xmlXPathContainsFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the contains() XPath function boolean contains(string, string) The contains function returns true if the first argument string contains the second argument string, and otherwise returns false.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathConvertBoolean' file='xpath'>
+    <function name='xmlXPathConvertBoolean' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Converts an existing object to its boolean() equivalent</info>
       <return type='xmlXPathObjectPtr' info='the new object, the old one is freed (or the operation is done directly on @val)'/>
       <arg name='val' type='xmlXPathObjectPtr' info='an XPath object'/>
     </function>
-    <functype name='xmlXPathConvertFunc' file='xpath'>
+    <functype name='xmlXPathConvertFunc' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>A conversion function is associated to a type and used to cast the new type to primitive values.</info>
       <return type='int' info='-1 in case of error, 0 otherwise'/>
       <arg name='obj' type='xmlXPathObjectPtr' info='an XPath object'/>
       <arg name='type' type='int' info='the number of the target type'/>
     </functype>
-    <function name='xmlXPathConvertNumber' file='xpath'>
+    <function name='xmlXPathConvertNumber' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Converts an existing object to its number() equivalent</info>
       <return type='xmlXPathObjectPtr' info='the new object, the old one is freed (or the operation is done directly on @val)'/>
       <arg name='val' type='xmlXPathObjectPtr' info='an XPath object'/>
     </function>
-    <function name='xmlXPathConvertString' file='xpath'>
+    <function name='xmlXPathConvertString' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Converts an existing object to its string() equivalent</info>
       <return type='xmlXPathObjectPtr' info='the new object, the old one is freed (or the operation is done directly on @val)'/>
       <arg name='val' type='xmlXPathObjectPtr' info='an XPath object'/>
     </function>
-    <function name='xmlXPathCountFunction' file='xpathInternals'>
+    <function name='xmlXPathCountFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the count() XPath function number count(node-set)</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathCtxtCompile' file='xpath'>
+    <function name='xmlXPathCtxtCompile' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Compile an XPath expression</info>
       <return type='xmlXPathCompExprPtr' info='the xmlXPathCompExprPtr resulting from the compilation or NULL. the caller has to free the object.'/>
       <arg name='ctxt' type='xmlXPathContextPtr' info='an XPath context'/>
       <arg name='str' type='const xmlChar *' info='the XPath expression'/>
     </function>
-    <function name='xmlXPathDebugDumpCompExpr' file='xpathInternals'>
+    <function name='xmlXPathDebugDumpCompExpr' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED) &amp;&amp; defined(LIBXML_DEBUG_ENABLED)</cond>
       <info>Dumps the tree of the compiled XPath expression.</info>
       <return type='void'/>
@@ -16180,7 +16228,7 @@
       <arg name='comp' type='xmlXPathCompExprPtr' info='the precompiled XPath expression'/>
       <arg name='depth' type='int' info='the indentation level.'/>
     </function>
-    <function name='xmlXPathDebugDumpObject' file='xpathInternals'>
+    <function name='xmlXPathDebugDumpObject' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED) &amp;&amp; defined(LIBXML_DEBUG_ENABLED)</cond>
       <info>Dump the content of the object for debugging purposes</info>
       <return type='void'/>
@@ -16188,136 +16236,136 @@
       <arg name='cur' type='xmlXPathObjectPtr' info='the object to inspect'/>
       <arg name='depth' type='int' info='indentation level'/>
     </function>
-    <function name='xmlXPathDifference' file='xpathInternals'>
+    <function name='xmlXPathDifference' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implements the EXSLT - Sets difference() function: node-set set:difference (node-set, node-set)</info>
       <return type='xmlNodeSetPtr' info='the difference between the two node sets, or nodes1 if nodes2 is empty'/>
       <arg name='nodes1' type='xmlNodeSetPtr' info='a node-set'/>
       <arg name='nodes2' type='xmlNodeSetPtr' info='a node-set'/>
     </function>
-    <function name='xmlXPathDistinct' file='xpathInternals'>
+    <function name='xmlXPathDistinct' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implements the EXSLT - Sets distinct() function: node-set set:distinct (node-set) @nodes is sorted by document order, then #exslSetsDistinctSorted is called with the sorted node-set</info>
       <return type='xmlNodeSetPtr' info='a subset of the nodes contained in @nodes, or @nodes if it is empty'/>
       <arg name='nodes' type='xmlNodeSetPtr' info='a node-set'/>
     </function>
-    <function name='xmlXPathDistinctSorted' file='xpathInternals'>
+    <function name='xmlXPathDistinctSorted' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implements the EXSLT - Sets distinct() function: node-set set:distinct (node-set)</info>
       <return type='xmlNodeSetPtr' info='a subset of the nodes contained in @nodes, or @nodes if it is empty'/>
       <arg name='nodes' type='xmlNodeSetPtr' info='a node-set, sorted by document order'/>
     </function>
-    <function name='xmlXPathDivValues' file='xpathInternals'>
+    <function name='xmlXPathDivValues' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the div operation on XPath objects @arg1 / @arg2: The numeric operators convert their operands to numbers as if by calling the number function.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
     </function>
-    <function name='xmlXPathEqualValues' file='xpathInternals'>
+    <function name='xmlXPathEqualValues' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the equal operation on XPath objects content: @arg1 == @arg2</info>
       <return type='int' info='0 or 1 depending on the results of the test.'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
     </function>
-    <function name='xmlXPathErr' file='xpathInternals'>
+    <function name='xmlXPathErr' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Handle an XPath error</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='a XPath parser context'/>
       <arg name='error' type='int' info='the error code'/>
     </function>
-    <function name='xmlXPathEval' file='xpath'>
+    <function name='xmlXPathEval' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Evaluate the XPath Location Path in the given context.</info>
       <return type='xmlXPathObjectPtr' info='the xmlXPathObjectPtr resulting from the evaluation or NULL. the caller has to free the object.'/>
       <arg name='str' type='const xmlChar *' info='the XPath expression'/>
       <arg name='ctx' type='xmlXPathContextPtr' info='the XPath context'/>
     </function>
-    <function name='xmlXPathEvalExpr' file='xpathInternals'>
+    <function name='xmlXPathEvalExpr' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Parse and evaluate an XPath expression in the given context, then push the result on the context stack</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
     </function>
-    <function name='xmlXPathEvalExpression' file='xpath'>
+    <function name='xmlXPathEvalExpression' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Evaluate the XPath expression in the given context.</info>
       <return type='xmlXPathObjectPtr' info='the xmlXPathObjectPtr resulting from the evaluation or NULL. the caller has to free the object.'/>
       <arg name='str' type='const xmlChar *' info='the XPath expression'/>
       <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
     </function>
-    <functype name='xmlXPathEvalFunc' file='xpath'>
+    <functype name='xmlXPathEvalFunc' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>An XPath evaluation function, the parameters are on the XPath context stack.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='an XPath parser context'/>
       <arg name='nargs' type='int' info='the number of arguments passed to the function'/>
     </functype>
-    <function name='xmlXPathEvalPredicate' file='xpath'>
+    <function name='xmlXPathEvalPredicate' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Evaluate a predicate result for the current node. A PredicateExpr is evaluated by evaluating the Expr and converting the result to a boolean. If the result is a number, the result will be converted to true if the number is equal to the position of the context node in the context node list (as returned by the position function) and will be converted to false otherwise; if the result is not a number, then the result will be converted as if by a call to the boolean function.</info>
       <return type='int' info='1 if predicate is true, 0 otherwise'/>
       <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
       <arg name='res' type='xmlXPathObjectPtr' info='the Predicate Expression evaluation result'/>
     </function>
-    <function name='xmlXPathEvaluatePredicateResult' file='xpathInternals'>
+    <function name='xmlXPathEvaluatePredicateResult' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Evaluate a predicate result for the current node. A PredicateExpr is evaluated by evaluating the Expr and converting the result to a boolean. If the result is a number, the result will be converted to true if the number is equal to the position of the context node in the context node list (as returned by the position function) and will be converted to false otherwise; if the result is not a number, then the result will be converted as if by a call to the boolean function.</info>
       <return type='int' info='1 if predicate is true, 0 otherwise'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='res' type='xmlXPathObjectPtr' info='the Predicate Expression evaluation result'/>
     </function>
-    <function name='xmlXPathFalseFunction' file='xpathInternals'>
+    <function name='xmlXPathFalseFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the false() XPath function boolean false()</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathFloorFunction' file='xpathInternals'>
+    <function name='xmlXPathFloorFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the floor() XPath function number floor(number) The floor function returns the largest (closest to positive infinity) number that is not greater than the argument and that is an integer.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathFreeCompExpr' file='xpath'>
+    <function name='xmlXPathFreeCompExpr' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Free up the memory allocated by @comp</info>
       <return type='void'/>
       <arg name='comp' type='xmlXPathCompExprPtr' info='an XPATH comp'/>
     </function>
-    <function name='xmlXPathFreeContext' file='xpath'>
+    <function name='xmlXPathFreeContext' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Free up an xmlXPathContext</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathContextPtr' info='the context to free'/>
     </function>
-    <function name='xmlXPathFreeNodeSet' file='xpath'>
+    <function name='xmlXPathFreeNodeSet' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Free the NodeSet compound (not the actual nodes !).</info>
       <return type='void'/>
       <arg name='obj' type='xmlNodeSetPtr' info='the xmlNodeSetPtr to free'/>
     </function>
-    <function name='xmlXPathFreeNodeSetList' file='xpath'>
+    <function name='xmlXPathFreeNodeSetList' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Free up the xmlXPathObjectPtr @obj but don&apos;t deallocate the objects in the list contrary to xmlXPathFreeObject().</info>
       <return type='void'/>
       <arg name='obj' type='xmlXPathObjectPtr' info='an existing NodeSetList object'/>
     </function>
-    <function name='xmlXPathFreeObject' file='xpath'>
+    <function name='xmlXPathFreeObject' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Free up an xmlXPathObjectPtr object.</info>
       <return type='void'/>
       <arg name='obj' type='xmlXPathObjectPtr' info='the object to free'/>
     </function>
-    <function name='xmlXPathFreeParserContext' file='xpathInternals'>
+    <function name='xmlXPathFreeParserContext' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Free up an xmlXPathParserContext</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the context to free'/>
     </function>
-    <functype name='xmlXPathFuncLookupFunc' file='xpath'>
+    <functype name='xmlXPathFuncLookupFunc' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Prototype for callbacks used to plug function lookup in the XPath engine.</info>
       <return type='xmlXPathFunction' info='the XPath function or NULL if not found.'/>
@@ -16325,21 +16373,21 @@
       <arg name='name' type='const xmlChar *' info='name of the function'/>
       <arg name='ns_uri' type='const xmlChar *' info='the namespace name hosting this function'/>
     </functype>
-    <functype name='xmlXPathFunction' file='xpath'>
+    <functype name='xmlXPathFunction' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>An XPath function. The arguments (if any) are popped out from the context stack and the result is pushed on the stack.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath interprestation context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </functype>
-    <function name='xmlXPathFunctionLookup' file='xpathInternals'>
+    <function name='xmlXPathFunctionLookup' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Search in the Function array of the context for the given function.</info>
       <return type='xmlXPathFunction' info='the xmlXPathFunction or NULL if not found'/>
       <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
       <arg name='name' type='const xmlChar *' info='the function name'/>
     </function>
-    <function name='xmlXPathFunctionLookupNS' file='xpathInternals'>
+    <function name='xmlXPathFunctionLookupNS' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Search in the Function array of the context for the given function.</info>
       <return type='xmlXPathFunction' info='the xmlXPathFunction or NULL if not found'/>
@@ -16347,272 +16395,272 @@
       <arg name='name' type='const xmlChar *' info='the function name'/>
       <arg name='ns_uri' type='const xmlChar *' info='the function namespace URI'/>
     </function>
-    <function name='xmlXPathHasSameNodes' file='xpathInternals'>
+    <function name='xmlXPathHasSameNodes' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implements the EXSLT - Sets has-same-nodes function: boolean set:has-same-node(node-set, node-set)</info>
       <return type='int' info='true (1) if @nodes1 shares any node with @nodes2, false (0) otherwise'/>
       <arg name='nodes1' type='xmlNodeSetPtr' info='a node-set'/>
       <arg name='nodes2' type='xmlNodeSetPtr' info='a node-set'/>
     </function>
-    <function name='xmlXPathIdFunction' file='xpathInternals'>
+    <function name='xmlXPathIdFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the id() XPath function node-set id(object) The id function selects elements by their unique ID (see [5.2.1 Unique IDs]). When the argument to id is of type node-set, then the result is the union of the result of applying id to the string value of each of the nodes in the argument node-set. When the argument to id is of any other type, the argument is converted to a string as if by a call to the string function; the string is split into a whitespace-separated list of tokens (whitespace is any sequence of characters matching the production S); the result is a node-set containing the elements in the same document as the context node that have a unique ID equal to any of the tokens in the list.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathInit' file='xpath'>
+    <function name='xmlXPathInit' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Initialize the XPath environment</info>
       <return type='void'/>
     </function>
-    <function name='xmlXPathIntersection' file='xpathInternals'>
+    <function name='xmlXPathIntersection' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implements the EXSLT - Sets intersection() function: node-set set:intersection (node-set, node-set)</info>
       <return type='xmlNodeSetPtr' info='a node set comprising the nodes that are within both the node sets passed as arguments'/>
       <arg name='nodes1' type='xmlNodeSetPtr' info='a node-set'/>
       <arg name='nodes2' type='xmlNodeSetPtr' info='a node-set'/>
     </function>
-    <function name='xmlXPathIsInf' file='xpath'>
+    <function name='xmlXPathIsInf' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Provides a portable isinf() function to detect whether a double is a +Infinite or -Infinite. Based on trio code http://sourceforge.net/projects/ctrio/</info>
       <return type='int' info='1 vi the value is +Infinite, -1 if -Infinite, 0 otherwise'/>
       <arg name='val' type='double' info='a double value'/>
     </function>
-    <function name='xmlXPathIsNaN' file='xpath'>
+    <function name='xmlXPathIsNaN' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)</cond>
       <info>Provides a portable isnan() function to detect whether a double is a NotaNumber. Based on trio code http://sourceforge.net/projects/ctrio/</info>
       <return type='int' info='1 if the value is a NaN, 0 otherwise'/>
       <arg name='val' type='double' info='a double value'/>
     </function>
-    <function name='xmlXPathIsNodeType' file='xpathInternals'>
+    <function name='xmlXPathIsNodeType' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Is the name given a NodeType one.  [38]   NodeType ::=   &apos;comment&apos; | &apos;text&apos; | &apos;processing-instruction&apos; | &apos;node&apos;</info>
       <return type='int' info='1 if true 0 otherwise'/>
       <arg name='name' type='const xmlChar *' info='a name string'/>
     </function>
-    <function name='xmlXPathLangFunction' file='xpathInternals'>
+    <function name='xmlXPathLangFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the lang() XPath function boolean lang(string) The lang function returns true or false depending on whether the language of the context node as specified by xml:lang attributes is the same as or is a sublanguage of the language specified by the argument string. The language of the context node is determined by the value of the xml:lang attribute on the context node, or, if the context node has no xml:lang attribute, by the value of the xml:lang attribute on the nearest ancestor of the context node that has an xml:lang attribute. If there is no such attribute, then lang</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathLastFunction' file='xpathInternals'>
+    <function name='xmlXPathLastFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the last() XPath function number last() The last function returns the number of nodes in the context node list.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathLeading' file='xpathInternals'>
+    <function name='xmlXPathLeading' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implements the EXSLT - Sets leading() function: node-set set:leading (node-set, node-set) @nodes1 and @nodes2 are sorted by document order, then #exslSetsLeadingSorted is called.</info>
       <return type='xmlNodeSetPtr' info='the nodes in @nodes1 that precede the first node in @nodes2 in document order, @nodes1 if @nodes2 is NULL or empty or an empty node-set if @nodes1 doesn&apos;t contain @nodes2'/>
       <arg name='nodes1' type='xmlNodeSetPtr' info='a node-set'/>
       <arg name='nodes2' type='xmlNodeSetPtr' info='a node-set'/>
     </function>
-    <function name='xmlXPathLeadingSorted' file='xpathInternals'>
+    <function name='xmlXPathLeadingSorted' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implements the EXSLT - Sets leading() function: node-set set:leading (node-set, node-set)</info>
       <return type='xmlNodeSetPtr' info='the nodes in @nodes1 that precede the first node in @nodes2 in document order, @nodes1 if @nodes2 is NULL or empty or an empty node-set if @nodes1 doesn&apos;t contain @nodes2'/>
       <arg name='nodes1' type='xmlNodeSetPtr' info='a node-set, sorted by document order'/>
       <arg name='nodes2' type='xmlNodeSetPtr' info='a node-set, sorted by document order'/>
     </function>
-    <function name='xmlXPathLocalNameFunction' file='xpathInternals'>
+    <function name='xmlXPathLocalNameFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the local-name() XPath function string local-name(node-set?) The local-name function returns a string containing the local part of the name of the node in the argument node-set that is first in document order. If the node-set is empty or the first node has no name, an empty string is returned. If the argument is omitted it defaults to the context node.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathModValues' file='xpathInternals'>
+    <function name='xmlXPathModValues' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the mod operation on XPath objects: @arg1 / @arg2 The numeric operators convert their operands to numbers as if by calling the number function.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
     </function>
-    <function name='xmlXPathMultValues' file='xpathInternals'>
+    <function name='xmlXPathMultValues' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the multiply operation on XPath objects: The numeric operators convert their operands to numbers as if by calling the number function.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
     </function>
-    <function name='xmlXPathNamespaceURIFunction' file='xpathInternals'>
+    <function name='xmlXPathNamespaceURIFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the namespace-uri() XPath function string namespace-uri(node-set?) The namespace-uri function returns a string containing the namespace URI of the expanded name of the node in the argument node-set that is first in document order. If the node-set is empty, the first node has no name, or the expanded name has no namespace URI, an empty string is returned. If the argument is omitted it defaults to the context node.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathNewBoolean' file='xpathInternals'>
+    <function name='xmlXPathNewBoolean' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Create a new xmlXPathObjectPtr of type boolean and of value @val</info>
       <return type='xmlXPathObjectPtr' info='the newly created object.'/>
       <arg name='val' type='int' info='the boolean value'/>
     </function>
-    <function name='xmlXPathNewCString' file='xpathInternals'>
+    <function name='xmlXPathNewCString' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Create a new xmlXPathObjectPtr of type string and of value @val</info>
       <return type='xmlXPathObjectPtr' info='the newly created object.'/>
       <arg name='val' type='const char *' info='the char * value'/>
     </function>
-    <function name='xmlXPathNewContext' file='xpath'>
+    <function name='xmlXPathNewContext' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Create a new xmlXPathContext</info>
       <return type='xmlXPathContextPtr' info='the xmlXPathContext just allocated. The caller will need to free it.'/>
       <arg name='doc' type='xmlDocPtr' info='the XML document'/>
     </function>
-    <function name='xmlXPathNewFloat' file='xpathInternals'>
+    <function name='xmlXPathNewFloat' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Create a new xmlXPathObjectPtr of type double and of value @val</info>
       <return type='xmlXPathObjectPtr' info='the newly created object.'/>
       <arg name='val' type='double' info='the double value'/>
     </function>
-    <function name='xmlXPathNewNodeSet' file='xpathInternals'>
+    <function name='xmlXPathNewNodeSet' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Create a new xmlXPathObjectPtr of type NodeSet and initialize it with the single Node @val</info>
       <return type='xmlXPathObjectPtr' info='the newly created object.'/>
       <arg name='val' type='xmlNodePtr' info='the NodePtr value'/>
     </function>
-    <function name='xmlXPathNewNodeSetList' file='xpathInternals'>
+    <function name='xmlXPathNewNodeSetList' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Create a new xmlXPathObjectPtr of type NodeSet and initialize it with the Nodeset @val</info>
       <return type='xmlXPathObjectPtr' info='the newly created object.'/>
       <arg name='val' type='xmlNodeSetPtr' info='an existing NodeSet'/>
     </function>
-    <function name='xmlXPathNewParserContext' file='xpathInternals'>
+    <function name='xmlXPathNewParserContext' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Create a new xmlXPathParserContext</info>
       <return type='xmlXPathParserContextPtr' info='the xmlXPathParserContext just allocated.'/>
       <arg name='str' type='const xmlChar *' info='the XPath expression'/>
       <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
     </function>
-    <function name='xmlXPathNewString' file='xpathInternals'>
+    <function name='xmlXPathNewString' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Create a new xmlXPathObjectPtr of type string and of value @val</info>
       <return type='xmlXPathObjectPtr' info='the newly created object.'/>
       <arg name='val' type='const xmlChar *' info='the xmlChar * value'/>
     </function>
-    <function name='xmlXPathNewValueTree' file='xpathInternals'>
+    <function name='xmlXPathNewValueTree' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Create a new xmlXPathObjectPtr of type Value Tree (XSLT) and initialize it with the tree root @val</info>
       <return type='xmlXPathObjectPtr' info='the newly created object.'/>
       <arg name='val' type='xmlNodePtr' info='the NodePtr value'/>
     </function>
-    <function name='xmlXPathNextAncestor' file='xpathInternals'>
+    <function name='xmlXPathNextAncestor' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Traversal function for the &quot;ancestor&quot; direction the ancestor axis contains the ancestors of the context node; the ancestors of the context node consist of the parent of context node and the parent&apos;s parent and so on; the nodes are ordered in reverse document order; thus the parent is the first node on the axis, and the parent&apos;s parent is the second node on the axis</info>
       <return type='xmlNodePtr' info='the next element following that axis'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
     </function>
-    <function name='xmlXPathNextAncestorOrSelf' file='xpathInternals'>
+    <function name='xmlXPathNextAncestorOrSelf' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Traversal function for the &quot;ancestor-or-self&quot; direction he ancestor-or-self axis contains the context node and ancestors of the context node in reverse document order; thus the context node is the first node on the axis, and the context node&apos;s parent the second; parent here is defined the same as with the parent axis.</info>
       <return type='xmlNodePtr' info='the next element following that axis'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
     </function>
-    <function name='xmlXPathNextAttribute' file='xpathInternals'>
+    <function name='xmlXPathNextAttribute' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Traversal function for the &quot;attribute&quot; direction TODO: support DTD inherited default attributes</info>
       <return type='xmlNodePtr' info='the next element following that axis'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='cur' type='xmlNodePtr' info='the current attribute in the traversal'/>
     </function>
-    <function name='xmlXPathNextChild' file='xpathInternals'>
+    <function name='xmlXPathNextChild' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Traversal function for the &quot;child&quot; direction The child axis contains the children of the context node in document order.</info>
       <return type='xmlNodePtr' info='the next element following that axis'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
     </function>
-    <function name='xmlXPathNextDescendant' file='xpathInternals'>
+    <function name='xmlXPathNextDescendant' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Traversal function for the &quot;descendant&quot; direction the descendant axis contains the descendants of the context node in document order; a descendant is a child or a child of a child and so on.</info>
       <return type='xmlNodePtr' info='the next element following that axis'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
     </function>
-    <function name='xmlXPathNextDescendantOrSelf' file='xpathInternals'>
+    <function name='xmlXPathNextDescendantOrSelf' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Traversal function for the &quot;descendant-or-self&quot; direction the descendant-or-self axis contains the context node and the descendants of the context node in document order; thus the context node is the first node on the axis, and the first child of the context node is the second node on the axis</info>
       <return type='xmlNodePtr' info='the next element following that axis'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
     </function>
-    <function name='xmlXPathNextFollowing' file='xpathInternals'>
+    <function name='xmlXPathNextFollowing' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Traversal function for the &quot;following&quot; direction The following axis contains all nodes in the same document as the context node that are after the context node in document order, excluding any descendants and excluding attribute nodes and namespace nodes; the nodes are ordered in document order</info>
       <return type='xmlNodePtr' info='the next element following that axis'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
     </function>
-    <function name='xmlXPathNextFollowingSibling' file='xpathInternals'>
+    <function name='xmlXPathNextFollowingSibling' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Traversal function for the &quot;following-sibling&quot; direction The following-sibling axis contains the following siblings of the context node in document order.</info>
       <return type='xmlNodePtr' info='the next element following that axis'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
     </function>
-    <function name='xmlXPathNextNamespace' file='xpathInternals'>
+    <function name='xmlXPathNextNamespace' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Traversal function for the &quot;namespace&quot; direction the namespace axis contains the namespace nodes of the context node; the order of nodes on this axis is implementation-defined; the axis will be empty unless the context node is an element  We keep the XML namespace node at the end of the list.</info>
       <return type='xmlNodePtr' info='the next element following that axis'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='cur' type='xmlNodePtr' info='the current attribute in the traversal'/>
     </function>
-    <function name='xmlXPathNextParent' file='xpathInternals'>
+    <function name='xmlXPathNextParent' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Traversal function for the &quot;parent&quot; direction The parent axis contains the parent of the context node, if there is one.</info>
       <return type='xmlNodePtr' info='the next element following that axis'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
     </function>
-    <function name='xmlXPathNextPreceding' file='xpathInternals'>
+    <function name='xmlXPathNextPreceding' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Traversal function for the &quot;preceding&quot; direction the preceding axis contains all nodes in the same document as the context node that are before the context node in document order, excluding any ancestors and excluding attribute nodes and namespace nodes; the nodes are ordered in reverse document order</info>
       <return type='xmlNodePtr' info='the next element following that axis'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
     </function>
-    <function name='xmlXPathNextPrecedingSibling' file='xpathInternals'>
+    <function name='xmlXPathNextPrecedingSibling' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Traversal function for the &quot;preceding-sibling&quot; direction The preceding-sibling axis contains the preceding siblings of the context node in reverse document order; the first preceding sibling is first on the axis; the sibling preceding that node is the second on the axis and so on.</info>
       <return type='xmlNodePtr' info='the next element following that axis'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
     </function>
-    <function name='xmlXPathNextSelf' file='xpathInternals'>
+    <function name='xmlXPathNextSelf' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Traversal function for the &quot;self&quot; direction The self axis contains just the context node itself</info>
       <return type='xmlNodePtr' info='the next element following that axis'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='cur' type='xmlNodePtr' info='the current node in the traversal'/>
     </function>
-    <function name='xmlXPathNodeLeading' file='xpathInternals'>
+    <function name='xmlXPathNodeLeading' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implements the EXSLT - Sets leading() function: node-set set:leading (node-set, node-set) @nodes is sorted by document order, then #exslSetsNodeLeadingSorted is called.</info>
       <return type='xmlNodeSetPtr' info='the nodes in @nodes that precede @node in document order, @nodes if @node is NULL or an empty node-set if @nodes doesn&apos;t contain @node'/>
       <arg name='nodes' type='xmlNodeSetPtr' info='a node-set'/>
       <arg name='node' type='xmlNodePtr' info='a node'/>
     </function>
-    <function name='xmlXPathNodeLeadingSorted' file='xpathInternals'>
+    <function name='xmlXPathNodeLeadingSorted' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implements the EXSLT - Sets leading() function: node-set set:leading (node-set, node-set)</info>
       <return type='xmlNodeSetPtr' info='the nodes in @nodes that precede @node in document order, @nodes if @node is NULL or an empty node-set if @nodes doesn&apos;t contain @node'/>
       <arg name='nodes' type='xmlNodeSetPtr' info='a node-set, sorted by document order'/>
       <arg name='node' type='xmlNodePtr' info='a node'/>
     </function>
-    <function name='xmlXPathNodeSetAdd' file='xpathInternals'>
+    <function name='xmlXPathNodeSetAdd' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>add a new xmlNodePtr to an existing NodeSet</info>
       <return type='void'/>
       <arg name='cur' type='xmlNodeSetPtr' info='the initial node set'/>
       <arg name='val' type='xmlNodePtr' info='a new xmlNodePtr'/>
     </function>
-    <function name='xmlXPathNodeSetAddNs' file='xpathInternals'>
+    <function name='xmlXPathNodeSetAddNs' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>add a new namespace node to an existing NodeSet</info>
       <return type='void'/>
@@ -16620,175 +16668,175 @@
       <arg name='node' type='xmlNodePtr' info='the hosting node'/>
       <arg name='ns' type='xmlNsPtr' info='a the namespace node'/>
     </function>
-    <function name='xmlXPathNodeSetAddUnique' file='xpathInternals'>
+    <function name='xmlXPathNodeSetAddUnique' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>add a new xmlNodePtr to an existing NodeSet, optimized version when we are sure the node is not already in the set.</info>
       <return type='void'/>
       <arg name='cur' type='xmlNodeSetPtr' info='the initial node set'/>
       <arg name='val' type='xmlNodePtr' info='a new xmlNodePtr'/>
     </function>
-    <function name='xmlXPathNodeSetContains' file='xpathInternals'>
+    <function name='xmlXPathNodeSetContains' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>checks whether @cur contains @val</info>
       <return type='int' info='true (1) if @cur contains @val, false (0) otherwise'/>
       <arg name='cur' type='xmlNodeSetPtr' info='the node-set'/>
       <arg name='val' type='xmlNodePtr' info='the node'/>
     </function>
-    <function name='xmlXPathNodeSetCreate' file='xpath'>
+    <function name='xmlXPathNodeSetCreate' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Create a new xmlNodeSetPtr of type double and of value @val</info>
       <return type='xmlNodeSetPtr' info='the newly created object.'/>
       <arg name='val' type='xmlNodePtr' info='an initial xmlNodePtr, or NULL'/>
     </function>
-    <function name='xmlXPathNodeSetDel' file='xpathInternals'>
+    <function name='xmlXPathNodeSetDel' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Removes an xmlNodePtr from an existing NodeSet</info>
       <return type='void'/>
       <arg name='cur' type='xmlNodeSetPtr' info='the initial node set'/>
       <arg name='val' type='xmlNodePtr' info='an xmlNodePtr'/>
     </function>
-    <function name='xmlXPathNodeSetFreeNs' file='xpathInternals'>
+    <function name='xmlXPathNodeSetFreeNs' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Namespace nodes in libxml don&apos;t match the XPath semantic. In a node set the namespace nodes are duplicated and the next pointer is set to the parent node in the XPath semantic. Check if such a node needs to be freed</info>
       <return type='void'/>
       <arg name='ns' type='xmlNsPtr' info='the XPath namespace node found in a nodeset.'/>
     </function>
-    <function name='xmlXPathNodeSetMerge' file='xpathInternals'>
+    <function name='xmlXPathNodeSetMerge' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Merges two nodesets, all nodes from @val2 are added to @val1 if @val1 is NULL, a new set is created and copied from @val2</info>
       <return type='xmlNodeSetPtr' info='@val1 once extended or NULL in case of error.'/>
       <arg name='val1' type='xmlNodeSetPtr' info='the first NodeSet or NULL'/>
       <arg name='val2' type='xmlNodeSetPtr' info='the second NodeSet'/>
     </function>
-    <function name='xmlXPathNodeSetRemove' file='xpathInternals'>
+    <function name='xmlXPathNodeSetRemove' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Removes an entry from an existing NodeSet list.</info>
       <return type='void'/>
       <arg name='cur' type='xmlNodeSetPtr' info='the initial node set'/>
       <arg name='val' type='int' info='the index to remove'/>
     </function>
-    <function name='xmlXPathNodeSetSort' file='xpathInternals'>
+    <function name='xmlXPathNodeSetSort' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Sort the node set in document order</info>
       <return type='void'/>
       <arg name='set' type='xmlNodeSetPtr' info='the node set'/>
     </function>
-    <function name='xmlXPathNodeTrailing' file='xpathInternals'>
+    <function name='xmlXPathNodeTrailing' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implements the EXSLT - Sets trailing() function: node-set set:trailing (node-set, node-set) @nodes is sorted by document order, then #xmlXPathNodeTrailingSorted is called.</info>
       <return type='xmlNodeSetPtr' info='the nodes in @nodes that follow @node in document order, @nodes if @node is NULL or an empty node-set if @nodes doesn&apos;t contain @node'/>
       <arg name='nodes' type='xmlNodeSetPtr' info='a node-set'/>
       <arg name='node' type='xmlNodePtr' info='a node'/>
     </function>
-    <function name='xmlXPathNodeTrailingSorted' file='xpathInternals'>
+    <function name='xmlXPathNodeTrailingSorted' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implements the EXSLT - Sets trailing() function: node-set set:trailing (node-set, node-set)</info>
       <return type='xmlNodeSetPtr' info='the nodes in @nodes that follow @node in document order, @nodes if @node is NULL or an empty node-set if @nodes doesn&apos;t contain @node'/>
       <arg name='nodes' type='xmlNodeSetPtr' info='a node-set, sorted by document order'/>
       <arg name='node' type='xmlNodePtr' info='a node'/>
     </function>
-    <function name='xmlXPathNormalizeFunction' file='xpathInternals'>
+    <function name='xmlXPathNormalizeFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the normalize-space() XPath function string normalize-space(string?) The normalize-space function returns the argument string with white space normalized by stripping leading and trailing whitespace and replacing sequences of whitespace characters by a single space. Whitespace characters are the same allowed by the S production in XML. If the argument is omitted, it defaults to the context node converted to a string, in other words the value of the context node.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathNotEqualValues' file='xpathInternals'>
+    <function name='xmlXPathNotEqualValues' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the equal operation on XPath objects content: @arg1 == @arg2</info>
       <return type='int' info='0 or 1 depending on the results of the test.'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
     </function>
-    <function name='xmlXPathNotFunction' file='xpathInternals'>
+    <function name='xmlXPathNotFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the not() XPath function boolean not(boolean) The not function returns true if its argument is false, and false otherwise.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathNsLookup' file='xpathInternals'>
+    <function name='xmlXPathNsLookup' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Search in the namespace declaration array of the context for the given namespace name associated to the given prefix</info>
       <return type='const xmlChar *' info='the value or NULL if not found'/>
       <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
       <arg name='prefix' type='const xmlChar *' info='the namespace prefix value'/>
     </function>
-    <function name='xmlXPathNumberFunction' file='xpathInternals'>
+    <function name='xmlXPathNumberFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the number() XPath function number number(object?)</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathObjectCopy' file='xpath'>
+    <function name='xmlXPathObjectCopy' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>allocate a new copy of a given object</info>
       <return type='xmlXPathObjectPtr' info='the newly created object.'/>
       <arg name='val' type='xmlXPathObjectPtr' info='the original object'/>
     </function>
-    <function name='xmlXPathOrderDocElems' file='xpath'>
+    <function name='xmlXPathOrderDocElems' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Call this routine to speed up XPath computation on static documents. This stamps all the element nodes with the document order Like for line information, the order is kept in the element-&gt;content field, the value stored is actually - the node number (starting at -1) to be able to differentiate from line numbers.</info>
       <return type='long' info='the number of elements found in the document or -1 in case of error.'/>
       <arg name='doc' type='xmlDocPtr' info='an input document'/>
     </function>
-    <function name='xmlXPathParseNCName' file='xpathInternals'>
+    <function name='xmlXPathParseNCName' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>parse an XML namespace non qualified name.  [NS 3] NCName ::= (Letter | &apos;_&apos;) (NCNameChar)*  [NS 4] NCNameChar ::= Letter | Digit | &apos;.&apos; | &apos;-&apos; | &apos;_&apos; | CombiningChar | Extender</info>
       <return type='xmlChar *' info='the namespace name or NULL'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
     </function>
-    <function name='xmlXPathParseName' file='xpathInternals'>
+    <function name='xmlXPathParseName' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>parse an XML name  [4] NameChar ::= Letter | Digit | &apos;.&apos; | &apos;-&apos; | &apos;_&apos; | &apos;:&apos; | CombiningChar | Extender  [5] Name ::= (Letter | &apos;_&apos; | &apos;:&apos;) (NameChar)*</info>
       <return type='xmlChar *' info='the namespace name or NULL'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
     </function>
-    <function name='xmlXPathPopBoolean' file='xpathInternals'>
+    <function name='xmlXPathPopBoolean' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Pops a boolean from the stack, handling conversion if needed. Check error with #xmlXPathCheckError.</info>
       <return type='int' info='the boolean'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='an XPath parser context'/>
     </function>
-    <function name='xmlXPathPopExternal' file='xpathInternals'>
+    <function name='xmlXPathPopExternal' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Pops an external object from the stack, handling conversion if needed. Check error with #xmlXPathCheckError.</info>
       <return type='void *' info='the object'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='an XPath parser context'/>
     </function>
-    <function name='xmlXPathPopNodeSet' file='xpathInternals'>
+    <function name='xmlXPathPopNodeSet' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Pops a node-set from the stack, handling conversion if needed. Check error with #xmlXPathCheckError.</info>
       <return type='xmlNodeSetPtr' info='the node-set'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='an XPath parser context'/>
     </function>
-    <function name='xmlXPathPopNumber' file='xpathInternals'>
+    <function name='xmlXPathPopNumber' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Pops a number from the stack, handling conversion if needed. Check error with #xmlXPathCheckError.</info>
       <return type='double' info='the number'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='an XPath parser context'/>
     </function>
-    <function name='xmlXPathPopString' file='xpathInternals'>
+    <function name='xmlXPathPopString' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Pops a string from the stack, handling conversion if needed. Check error with #xmlXPathCheckError.</info>
       <return type='xmlChar *' info='the string'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='an XPath parser context'/>
     </function>
-    <function name='xmlXPathPositionFunction' file='xpathInternals'>
+    <function name='xmlXPathPositionFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the position() XPath function number position() The position function returns the position of the context node in the context node list. The first position is 1, and so the last position will be equal to last().</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathRegisterAllFunctions' file='xpathInternals'>
+    <function name='xmlXPathRegisterAllFunctions' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Registers all default XPath functions in this context</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
     </function>
-    <function name='xmlXPathRegisterFunc' file='xpathInternals'>
+    <function name='xmlXPathRegisterFunc' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Register a new function. If @f is NULL it unregisters the function</info>
       <return type='int' info='0 in case of success, -1 in case of error'/>
@@ -16796,7 +16844,7 @@
       <arg name='name' type='const xmlChar *' info='the function name'/>
       <arg name='f' type='xmlXPathFunction' info='the function implementation or NULL'/>
     </function>
-    <function name='xmlXPathRegisterFuncLookup' file='xpathInternals'>
+    <function name='xmlXPathRegisterFuncLookup' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Registers an external mechanism to do function lookup.</info>
       <return type='void'/>
@@ -16804,7 +16852,7 @@
       <arg name='f' type='xmlXPathFuncLookupFunc' info='the lookup function'/>
       <arg name='funcCtxt' type='void *' info='the lookup data'/>
     </function>
-    <function name='xmlXPathRegisterFuncNS' file='xpathInternals'>
+    <function name='xmlXPathRegisterFuncNS' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Register a new function. If @f is NULL it unregisters the function</info>
       <return type='int' info='0 in case of success, -1 in case of error'/>
@@ -16813,7 +16861,7 @@
       <arg name='ns_uri' type='const xmlChar *' info='the function namespace URI'/>
       <arg name='f' type='xmlXPathFunction' info='the function implementation or NULL'/>
     </function>
-    <function name='xmlXPathRegisterNs' file='xpathInternals'>
+    <function name='xmlXPathRegisterNs' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Register a new namespace. If @ns_uri is NULL it unregisters the namespace</info>
       <return type='int' info='0 in case of success, -1 in case of error'/>
@@ -16821,7 +16869,7 @@
       <arg name='prefix' type='const xmlChar *' info='the namespace prefix'/>
       <arg name='ns_uri' type='const xmlChar *' info='the namespace name'/>
     </function>
-    <function name='xmlXPathRegisterVariable' file='xpathInternals'>
+    <function name='xmlXPathRegisterVariable' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Register a new variable value. If @value is NULL it unregisters the variable</info>
       <return type='int' info='0 in case of success, -1 in case of error'/>
@@ -16829,7 +16877,7 @@
       <arg name='name' type='const xmlChar *' info='the variable name'/>
       <arg name='value' type='xmlXPathObjectPtr' info='the variable value or NULL'/>
     </function>
-    <function name='xmlXPathRegisterVariableLookup' file='xpathInternals'>
+    <function name='xmlXPathRegisterVariableLookup' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>register an external mechanism to do variable lookup</info>
       <return type='void'/>
@@ -16837,7 +16885,7 @@
       <arg name='f' type='xmlXPathVariableLookupFunc' info='the lookup function'/>
       <arg name='data' type='void *' info='the lookup data'/>
     </function>
-    <function name='xmlXPathRegisterVariableNS' file='xpathInternals'>
+    <function name='xmlXPathRegisterVariableNS' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Register a new variable value. If @value is NULL it unregisters the variable</info>
       <return type='int' info='0 in case of success, -1 in case of error'/>
@@ -16846,140 +16894,140 @@
       <arg name='ns_uri' type='const xmlChar *' info='the variable namespace URI'/>
       <arg name='value' type='xmlXPathObjectPtr' info='the variable value or NULL'/>
     </function>
-    <function name='xmlXPathRegisteredFuncsCleanup' file='xpathInternals'>
+    <function name='xmlXPathRegisteredFuncsCleanup' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Cleanup the XPath context data associated to registered functions</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
     </function>
-    <function name='xmlXPathRegisteredNsCleanup' file='xpathInternals'>
+    <function name='xmlXPathRegisteredNsCleanup' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Cleanup the XPath context data associated to registered variables</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
     </function>
-    <function name='xmlXPathRegisteredVariablesCleanup' file='xpathInternals'>
+    <function name='xmlXPathRegisteredVariablesCleanup' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Cleanup the XPath context data associated to registered variables</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
     </function>
-    <function name='xmlXPathRoot' file='xpathInternals'>
+    <function name='xmlXPathRoot' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Initialize the context to the root of the document</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
     </function>
-    <function name='xmlXPathRoundFunction' file='xpathInternals'>
+    <function name='xmlXPathRoundFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the round() XPath function number round(number) The round function returns the number that is closest to the argument and that is an integer. If there are two such numbers, then the one that is even is returned.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathStartsWithFunction' file='xpathInternals'>
+    <function name='xmlXPathStartsWithFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the starts-with() XPath function boolean starts-with(string, string) The starts-with function returns true if the first argument string starts with the second argument string, and otherwise returns false.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathStringEvalNumber' file='xpathInternals'>
+    <function name='xmlXPathStringEvalNumber' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>[30a]  Float  ::= Number (&apos;e&apos; Digits?)?  [30]   Number ::=   Digits (&apos;.&apos; Digits?)? | &apos;.&apos; Digits [31]   Digits ::=   [0-9]+  Compile a Number in the string In complement of the Number expression, this function also handles negative values : &apos;-&apos; Number.</info>
       <return type='double' info='the double value.'/>
       <arg name='str' type='const xmlChar *' info='A string to scan'/>
     </function>
-    <function name='xmlXPathStringFunction' file='xpathInternals'>
+    <function name='xmlXPathStringFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the string() XPath function string string(object?) The string function converts an object to a string as follows: - A node-set is converted to a string by returning the value of the node in the node-set that is first in document order. If the node-set is empty, an empty string is returned. - A number is converted to a string as follows + NaN is converted to the string NaN + positive zero is converted to the string 0 + negative zero is converted to the string 0 + positive infinity is converted to the string Infinity + negative infinity is converted to the string -Infinity + if the number is an integer, the number is represented in decimal form as a Number with no decimal point and no leading zeros, preceded by a minus sign (-) if the number is negative + otherwise, the number is represented in decimal form as a Number including a decimal point with at least one digit before the decimal point and at least one digit after the decimal point, preceded by a minus sign (-) if the number is negative; there must be no leading zeros before the decimal point apart possibly from the one required digit immediately before the decimal point; beyond the one required digit after the decimal point there must be as many, but only as many, more digits as are needed to uniquely distinguish the number from all other IEEE 754 numeric values. - The boolean false value is converted to the string false. The boolean true value is converted to the string true.  If the argument is omitted, it defaults to a node-set with the context node as its only member.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathStringLengthFunction' file='xpathInternals'>
+    <function name='xmlXPathStringLengthFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the string-length() XPath function number string-length(string?) The string-length returns the number of characters in the string (see [3.6 Strings]). If the argument is omitted, it defaults to the context node converted to a string, in other words the value of the context node.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathSubValues' file='xpathInternals'>
+    <function name='xmlXPathSubValues' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the subtraction operation on XPath objects: The numeric operators convert their operands to numbers as if by calling the number function.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
     </function>
-    <function name='xmlXPathSubstringAfterFunction' file='xpathInternals'>
+    <function name='xmlXPathSubstringAfterFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the substring-after() XPath function string substring-after(string, string) The substring-after function returns the substring of the first argument string that follows the first occurrence of the second argument string in the first argument string, or the empty stringi if the first argument string does not contain the second argument string. For example, substring-after(&quot;1999/04/01&quot;,&quot;/&quot;) returns 04/01, and substring-after(&quot;1999/04/01&quot;,&quot;19&quot;) returns 99/04/01.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathSubstringBeforeFunction' file='xpathInternals'>
+    <function name='xmlXPathSubstringBeforeFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the substring-before() XPath function string substring-before(string, string) The substring-before function returns the substring of the first argument string that precedes the first occurrence of the second argument string in the first argument string, or the empty string if the first argument string does not contain the second argument string. For example, substring-before(&quot;1999/04/01&quot;,&quot;/&quot;) returns 1999.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathSubstringFunction' file='xpathInternals'>
+    <function name='xmlXPathSubstringFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the substring() XPath function string substring(string, number, number?) The substring function returns the substring of the first argument starting at the position specified in the second argument with length specified in the third argument. For example, substring(&quot;12345&quot;,2,3) returns &quot;234&quot;. If the third argument is not specified, it returns the substring starting at the position specified in the second argument and continuing to the end of the string. For example, substring(&quot;12345&quot;,2) returns &quot;2345&quot;.  More precisely, each character in the string (see [3.6 Strings]) is considered to have a numeric position: the position of the first character is 1, the position of the second character is 2 and so on. The returned substring contains those characters for which the position of the character is greater than or equal to the second argument and, if the third argument is specified, less than the sum of the second and third arguments; the comparisons and addition used for the above follow the standard IEEE 754 rules. Thus: - substring(&quot;12345&quot;, 1.5, 2.6) returns &quot;234&quot; - substring(&quot;12345&quot;, 0, 3) returns &quot;12&quot; - substring(&quot;12345&quot;, 0 div 0, 3) returns &quot;&quot; - substring(&quot;12345&quot;, 1, 0 div 0) returns &quot;&quot; - substring(&quot;12345&quot;, -42, 1 div 0) returns &quot;12345&quot; - substring(&quot;12345&quot;, -1 div 0, 1 div 0) returns &quot;&quot;</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathSumFunction' file='xpathInternals'>
+    <function name='xmlXPathSumFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the sum() XPath function number sum(node-set) The sum function returns the sum of the values of the nodes in the argument node-set.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathTrailing' file='xpathInternals'>
+    <function name='xmlXPathTrailing' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implements the EXSLT - Sets trailing() function: node-set set:trailing (node-set, node-set) @nodes1 and @nodes2 are sorted by document order, then #xmlXPathTrailingSorted is called.</info>
       <return type='xmlNodeSetPtr' info='the nodes in @nodes1 that follow the first node in @nodes2 in document order, @nodes1 if @nodes2 is NULL or empty or an empty node-set if @nodes1 doesn&apos;t contain @nodes2'/>
       <arg name='nodes1' type='xmlNodeSetPtr' info='a node-set'/>
       <arg name='nodes2' type='xmlNodeSetPtr' info='a node-set'/>
     </function>
-    <function name='xmlXPathTrailingSorted' file='xpathInternals'>
+    <function name='xmlXPathTrailingSorted' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implements the EXSLT - Sets trailing() function: node-set set:trailing (node-set, node-set)</info>
       <return type='xmlNodeSetPtr' info='the nodes in @nodes1 that follow the first node in @nodes2 in document order, @nodes1 if @nodes2 is NULL or empty or an empty node-set if @nodes1 doesn&apos;t contain @nodes2'/>
       <arg name='nodes1' type='xmlNodeSetPtr' info='a node-set, sorted by document order'/>
       <arg name='nodes2' type='xmlNodeSetPtr' info='a node-set, sorted by document order'/>
     </function>
-    <function name='xmlXPathTranslateFunction' file='xpathInternals'>
+    <function name='xmlXPathTranslateFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the translate() XPath function string translate(string, string, string) The translate function returns the first argument string with occurrences of characters in the second argument string replaced by the character at the corresponding position in the third argument string. For example, translate(&quot;bar&quot;,&quot;abc&quot;,&quot;ABC&quot;) returns the string BAr. If there is a character in the second argument string with no character at a corresponding position in the third argument string (because the second argument string is longer than the third argument string), then occurrences of that character in the first argument string are removed. For example, translate(&quot;--aaa--&quot;,&quot;abc-&quot;,&quot;ABC&quot;)</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathTrueFunction' file='xpathInternals'>
+    <function name='xmlXPathTrueFunction' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the true() XPath function boolean true()</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
       <arg name='nargs' type='int' info='the number of arguments'/>
     </function>
-    <function name='xmlXPathValueFlipSign' file='xpathInternals'>
+    <function name='xmlXPathValueFlipSign' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Implement the unary - operation on an XPath object The numeric operators convert their operands to numbers as if by calling the number function.</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
     </function>
-    <function name='xmlXPathVariableLookup' file='xpathInternals'>
+    <function name='xmlXPathVariableLookup' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Search in the Variable array of the context for the given variable value.</info>
       <return type='xmlXPathObjectPtr' info='a copy of the value or NULL if not found'/>
       <arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
       <arg name='name' type='const xmlChar *' info='the variable name'/>
     </function>
-    <functype name='xmlXPathVariableLookupFunc' file='xpath'>
+    <functype name='xmlXPathVariableLookupFunc' file='xpath' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Prototype for callbacks used to plug variable lookup in the XPath engine.</info>
       <return type='xmlXPathObjectPtr' info='the XPath object value or NULL if not found.'/>
@@ -16987,7 +17035,7 @@
       <arg name='name' type='const xmlChar *' info='name of the variable'/>
       <arg name='ns_uri' type='const xmlChar *' info='the namespace name hosting this variable'/>
     </functype>
-    <function name='xmlXPathVariableLookupNS' file='xpathInternals'>
+    <function name='xmlXPathVariableLookupNS' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Search in the Variable array of the context for the given variable value.</info>
       <return type='xmlXPathObjectPtr' info='the a copy of the value or NULL if not found'/>
@@ -16995,31 +17043,31 @@
       <arg name='name' type='const xmlChar *' info='the variable name'/>
       <arg name='ns_uri' type='const xmlChar *' info='the variable namespace URI'/>
     </function>
-    <function name='xmlXPathWrapCString' file='xpathInternals'>
+    <function name='xmlXPathWrapCString' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Wraps a string into an XPath object.</info>
       <return type='xmlXPathObjectPtr' info='the newly created object.'/>
       <arg name='val' type='char *' info='the char * value'/>
     </function>
-    <function name='xmlXPathWrapExternal' file='xpathInternals'>
+    <function name='xmlXPathWrapExternal' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Wraps the @val data into an XPath object.</info>
       <return type='xmlXPathObjectPtr' info='the newly created object.'/>
       <arg name='val' type='void *' info='the user data'/>
     </function>
-    <function name='xmlXPathWrapNodeSet' file='xpathInternals'>
+    <function name='xmlXPathWrapNodeSet' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Wrap the Nodeset @val in a new xmlXPathObjectPtr</info>
       <return type='xmlXPathObjectPtr' info='the newly created object.'/>
       <arg name='val' type='xmlNodeSetPtr' info='the NodePtr value'/>
     </function>
-    <function name='xmlXPathWrapString' file='xpathInternals'>
+    <function name='xmlXPathWrapString' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Wraps the @val string into an XPath object.</info>
       <return type='xmlXPathObjectPtr' info='the newly created object.'/>
       <arg name='val' type='xmlChar *' info='the xmlChar * value'/>
     </function>
-    <function name='xmlXPatherror' file='xpathInternals'>
+    <function name='xmlXPatherror' file='xpathInternals' module='xpath'>
       <cond>defined(LIBXML_XPATH_ENABLED)</cond>
       <info>Formats an error message.</info>
       <return type='void'/>
@@ -17028,72 +17076,72 @@
       <arg name='line' type='int' info='the line number'/>
       <arg name='no' type='int' info='the error number'/>
     </function>
-    <function name='xmlXPtrBuildNodeList' file='xpointer'>
+    <function name='xmlXPtrBuildNodeList' file='xpointer' module='xpointer'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Build a node list tree copy of the XPointer result. This will drop Attributes and Namespace declarations.</info>
       <return type='xmlNodePtr' info='an xmlNodePtr list or NULL. the caller has to free the node tree.'/>
       <arg name='obj' type='xmlXPathObjectPtr' info='the XPointer result from the evaluation.'/>
     </function>
-    <function name='xmlXPtrEval' file='xpointer'>
+    <function name='xmlXPtrEval' file='xpointer' module='xpointer'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Evaluate the XPath Location Path in the given context.</info>
       <return type='xmlXPathObjectPtr' info='the xmlXPathObjectPtr resulting from the evaluation or NULL. the caller has to free the object.'/>
       <arg name='str' type='const xmlChar *' info='the XPointer expression'/>
       <arg name='ctx' type='xmlXPathContextPtr' info='the XPointer context'/>
     </function>
-    <function name='xmlXPtrEvalRangePredicate' file='xpointer'>
+    <function name='xmlXPtrEvalRangePredicate' file='xpointer' module='xpointer'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>[8]   Predicate ::=   &apos;[&apos; PredicateExpr &apos;]&apos; [9]   PredicateExpr ::=   Expr  Evaluate a predicate as in xmlXPathEvalPredicate() but for a Location Set instead of a node set</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPointer Parser context'/>
     </function>
-    <function name='xmlXPtrFreeLocationSet' file='xpointer'>
+    <function name='xmlXPtrFreeLocationSet' file='xpointer' module='xpointer'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Free the LocationSet compound (not the actual ranges !).</info>
       <return type='void'/>
       <arg name='obj' type='xmlLocationSetPtr' info='the xmlLocationSetPtr to free'/>
     </function>
-    <function name='xmlXPtrLocationSetAdd' file='xpointer'>
+    <function name='xmlXPtrLocationSetAdd' file='xpointer' module='xpointer'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>add a new xmlXPathObjectPtr to an existing LocationSet If the location already exist in the set @val is freed.</info>
       <return type='void'/>
       <arg name='cur' type='xmlLocationSetPtr' info='the initial range set'/>
       <arg name='val' type='xmlXPathObjectPtr' info='a new xmlXPathObjectPtr'/>
     </function>
-    <function name='xmlXPtrLocationSetCreate' file='xpointer'>
+    <function name='xmlXPtrLocationSetCreate' file='xpointer' module='xpointer'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Create a new xmlLocationSetPtr of type double and of value @val</info>
       <return type='xmlLocationSetPtr' info='the newly created object.'/>
       <arg name='val' type='xmlXPathObjectPtr' info='an initial xmlXPathObjectPtr, or NULL'/>
     </function>
-    <function name='xmlXPtrLocationSetDel' file='xpointer'>
+    <function name='xmlXPtrLocationSetDel' file='xpointer' module='xpointer'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Removes an xmlXPathObjectPtr from an existing LocationSet</info>
       <return type='void'/>
       <arg name='cur' type='xmlLocationSetPtr' info='the initial range set'/>
       <arg name='val' type='xmlXPathObjectPtr' info='an xmlXPathObjectPtr'/>
     </function>
-    <function name='xmlXPtrLocationSetMerge' file='xpointer'>
+    <function name='xmlXPtrLocationSetMerge' file='xpointer' module='xpointer'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Merges two rangesets, all ranges from @val2 are added to @val1</info>
       <return type='xmlLocationSetPtr' info='val1 once extended or NULL in case of error.'/>
       <arg name='val1' type='xmlLocationSetPtr' info='the first LocationSet'/>
       <arg name='val2' type='xmlLocationSetPtr' info='the second LocationSet'/>
     </function>
-    <function name='xmlXPtrLocationSetRemove' file='xpointer'>
+    <function name='xmlXPtrLocationSetRemove' file='xpointer' module='xpointer'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Removes an entry from an existing LocationSet list.</info>
       <return type='void'/>
       <arg name='cur' type='xmlLocationSetPtr' info='the initial range set'/>
       <arg name='val' type='int' info='the index to remove'/>
     </function>
-    <function name='xmlXPtrNewCollapsedRange' file='xpointer'>
+    <function name='xmlXPtrNewCollapsedRange' file='xpointer' module='xpointer'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Create a new xmlXPathObjectPtr of type range using a single nodes</info>
       <return type='xmlXPathObjectPtr' info='the newly created object.'/>
       <arg name='start' type='xmlNodePtr' info='the starting and ending node'/>
     </function>
-    <function name='xmlXPtrNewContext' file='xpointer'>
+    <function name='xmlXPtrNewContext' file='xpointer' module='xpointer'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Create a new XPointer context</info>
       <return type='xmlXPathContextPtr' info='the xmlXPathContext just allocated.'/>
@@ -17101,20 +17149,20 @@
       <arg name='here' type='xmlNodePtr' info='the node that directly contains the XPointer being evaluated or NULL'/>
       <arg name='origin' type='xmlNodePtr' info='the element from which a user or program initiated traversal of the link, or NULL.'/>
     </function>
-    <function name='xmlXPtrNewLocationSetNodeSet' file='xpointer'>
+    <function name='xmlXPtrNewLocationSetNodeSet' file='xpointer' module='xpointer'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Create a new xmlXPathObjectPtr of type LocationSet and initialize it with all the nodes from @set</info>
       <return type='xmlXPathObjectPtr' info='the newly created object.'/>
       <arg name='set' type='xmlNodeSetPtr' info='a node set'/>
     </function>
-    <function name='xmlXPtrNewLocationSetNodes' file='xpointer'>
+    <function name='xmlXPtrNewLocationSetNodes' file='xpointer' module='xpointer'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Create a new xmlXPathObjectPtr of type LocationSet and initialize it with the single range made of the two nodes @start and @end</info>
       <return type='xmlXPathObjectPtr' info='the newly created object.'/>
       <arg name='start' type='xmlNodePtr' info='the start NodePtr value'/>
       <arg name='end' type='xmlNodePtr' info='the end NodePtr value or NULL'/>
     </function>
-    <function name='xmlXPtrNewRange' file='xpointer'>
+    <function name='xmlXPtrNewRange' file='xpointer' module='xpointer'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Create a new xmlXPathObjectPtr of type range</info>
       <return type='xmlXPathObjectPtr' info='the newly created object.'/>
@@ -17123,49 +17171,49 @@
       <arg name='end' type='xmlNodePtr' info='the ending point'/>
       <arg name='endindex' type='int' info='the ending index'/>
     </function>
-    <function name='xmlXPtrNewRangeNodeObject' file='xpointer'>
+    <function name='xmlXPtrNewRangeNodeObject' file='xpointer' module='xpointer'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Create a new xmlXPathObjectPtr of type range from a not to an object</info>
       <return type='xmlXPathObjectPtr' info='the newly created object.'/>
       <arg name='start' type='xmlNodePtr' info='the starting node'/>
       <arg name='end' type='xmlXPathObjectPtr' info='the ending object'/>
     </function>
-    <function name='xmlXPtrNewRangeNodePoint' file='xpointer'>
+    <function name='xmlXPtrNewRangeNodePoint' file='xpointer' module='xpointer'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Create a new xmlXPathObjectPtr of type range from a node to a point</info>
       <return type='xmlXPathObjectPtr' info='the newly created object.'/>
       <arg name='start' type='xmlNodePtr' info='the starting node'/>
       <arg name='end' type='xmlXPathObjectPtr' info='the ending point'/>
     </function>
-    <function name='xmlXPtrNewRangeNodes' file='xpointer'>
+    <function name='xmlXPtrNewRangeNodes' file='xpointer' module='xpointer'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Create a new xmlXPathObjectPtr of type range using 2 nodes</info>
       <return type='xmlXPathObjectPtr' info='the newly created object.'/>
       <arg name='start' type='xmlNodePtr' info='the starting node'/>
       <arg name='end' type='xmlNodePtr' info='the ending node'/>
     </function>
-    <function name='xmlXPtrNewRangePointNode' file='xpointer'>
+    <function name='xmlXPtrNewRangePointNode' file='xpointer' module='xpointer'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Create a new xmlXPathObjectPtr of type range from a point to a node</info>
       <return type='xmlXPathObjectPtr' info='the newly created object.'/>
       <arg name='start' type='xmlXPathObjectPtr' info='the starting point'/>
       <arg name='end' type='xmlNodePtr' info='the ending node'/>
     </function>
-    <function name='xmlXPtrNewRangePoints' file='xpointer'>
+    <function name='xmlXPtrNewRangePoints' file='xpointer' module='xpointer'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Create a new xmlXPathObjectPtr of type range using 2 Points</info>
       <return type='xmlXPathObjectPtr' info='the newly created object.'/>
       <arg name='start' type='xmlXPathObjectPtr' info='the starting point'/>
       <arg name='end' type='xmlXPathObjectPtr' info='the ending point'/>
     </function>
-    <function name='xmlXPtrRangeToFunction' file='xpointer'>
+    <function name='xmlXPtrRangeToFunction' file='xpointer' module='xpointer'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Implement the range-to() XPointer function</info>
       <return type='void'/>
       <arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPointer Parser context'/>
       <arg name='nargs' type='int' info='the number of args'/>
     </function>
-    <function name='xmlXPtrWrapLocationSet' file='xpointer'>
+    <function name='xmlXPtrWrapLocationSet' file='xpointer' module='xpointer'>
       <cond>defined(LIBXML_XPTR_ENABLED)</cond>
       <info>Wrap the LocationSet @val in a new xmlXPathObjectPtr</info>
       <return type='xmlXPathObjectPtr' info='the newly created object.'/>

Modified: packages/libxml2/branches/upstream/current/doc/libxml2.xsa
===================================================================
--- packages/libxml2/branches/upstream/current/doc/libxml2.xsa	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/libxml2.xsa	2005-04-04 18:23:13 UTC (rev 398)
@@ -8,34 +8,34 @@
   </vendor>
   <product id="libxml2">
     <name>libxml2</name>
-    <version>2.6.17</version>
-    <last-release> Jan 16 2005</last-release>
+    <version>2.6.18</version>
+    <last-release> Mar 13 2005</last-release>
     <info-url>http://xmlsoft.org/</info-url>
-    <changes>   - build fixes: Windows, warnings removal (William Brack), 
-      maintainer-clean dependency(William), build in a different directory
-      (William), fixing --with-minimum configure build (William), BeOS
-      build (Marcin Konicki), Python-2.4 detection (William), compilation
-      on AIX (Dan McNichol)
-   - bug fixes: xmlTextReaderHasAttributes (Rob Richards), xmlCtxtReadFile()
-      to use the catalog(s), loop on output (William Brack), XPath memory leak,
-      ID deallocation problem (Steve Shepard), debugDumpNode crash (William),
-      warning not using error callback (William), xmlStopParser bug (William),
-      UTF-16 with BOM on DTDs (William), namespace bug on empty elements
-      in push mode (Rob Richards), line and col computations fixups (Aleksey
-      Sanin), xmlURIEscape fix (William), xmlXPathErr on bad range (William),
-      patterns with too many steps, bug in RNG choice optimization, line
-      number sometimes missing.
-      
-   - improvements: XSD Schemas (Kasimier Buchcik), python generator (William),
-      xmlUTF8Strpos speedup (William), unicode Python strings (William),
-      XSD error reports (Kasimier Buchcik), Python __str__ call serialize().
-      
-   - new APIs: added xmlDictExists(), GetLineNumber and GetColumnNumber
-      for the xmlReader (Aleksey Sanin), Dynamic Shared Libraries APIs
-      (mostly Joel Reed), error extraction API from regexps, new XMLSave
-      option for format (Phil Shafer)
-   - documentation: site improvement (John Fleck), FAQ entries (William).
+    <changes>   -  build fixes: warnings (Peter Breitenlohner), testapi.c generation, 
+       Bakefile support (Francesco Montorsi), Windows compilation (Joel Reed),
+       some gcc4 fixes, HP-UX portability fixes (Rick Jones).
+   -  bug fixes: xmlSchemaElementDump namespace (Kasimier Buchcik), push and
+       xmlreader stopping on non-fatal errors, thread support for dictionnaries
+       reference counting (Gary Coady), internal subset and push problem, 
+       URL saved in xmlCopyDoc, various schemas bug fixes (Kasimier), Python
+       paths fixup (Stephane Bidoul), xmlGetNodePath and namespaces, 
+       xmlSetNsProp fix (Mike Hommey), warning should not count as error
+       (William Brack), xmlCreatePushParser empty chunk, XInclude parser
+       flags (William), cleanup FTP and HTTP code to reuse the uri parsing
+       and IPv6 (William), xmlTextWriterStartAttributeNS fix (Rob Richards),
+       XMLLINT_INDENT being empty (William), xmlWriter bugs (Rob Richards),
+       multithreading on Windows (Rich Salz), xmlSearchNsByHref fix (Kasimier),
+       Python binding leak (Brent Hendricks), aliasing bug exposed by gcc4
+       on s390, xmlTextReaderNext bug (Rob Richards), Schemas decimal type
+       fixes (William Brack), xmlByteConsumed static buffer (Ben Maurer).
+   -  improvement: speedup parsing comments and DTDs, dictionnary support for
+       hash tables, Schemas Identity constraints (Kasimier), streaming XPath
+       subset, xmlTextReaderReadString added (Bjorn Reese), Schemas canonical
+       values handling (Kasimier), add xmlTextReaderByteConsumed (Aron
+       Stansvik), 
+   -  Documentation: Wiki support (Joel Reed)
 
+
 </changes>
   </product>
 </xsa>

Modified: packages/libxml2/branches/upstream/current/doc/news.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/news.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/news.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -12,7 +12,25 @@
   <li>Finishing up <a href="http://www.w3.org/TR/xmlschema-1/">XML
   Schemas</a></li>
 </ul><p>The <a href="ChangeLog.html">change log</a> describes the recents commits
-to the <a href="http://cvs.gnome.org/viewcvs/libxml2/">CVS</a> code base.</p><p>There is the list of public releases:</p><h3>2.6.18: Mar 13 2005</h3><ul><li> build fixes: warnings (Peter Breitenlohner), testapi.c generation, 
+to the <a href="http://cvs.gnome.org/viewcvs/libxml2/">CVS</a> code base.</p><p>There is the list of public releases:</p><h3>2.6.19: Apr 02 2005</h3><ul><li> build fixes: drop .la from RPMs, --with-minimum build fix (William
+       Brack), use XML_SOCKLEN_T instead of SOCKLEN_T because it breaks with
+       AIX 5.3 compiler, fixed elfgcchack.h generation and PLT reduction
+       code on Linux/ELF/gcc4</li>
+  <li> bug fixes: schemas type decimal fixups (William Brack), xmmlint return
+       code (Gerry Murphy), small schemas fixes (Matthew Burgess and
+       GUY Fabrice), workaround "DAV:" namespace brokeness in c14n (Aleksey
+       Sanin), segfault in Schemas (Kasimier Buchcik), Schemas attribute
+       validation (Kasimier), Prop related functions and xmlNewNodeEatName
+       (Rob Richards), HTML serialization of name attribute on a elements,
+       Python error handlers leaks and improvement (Brent Hendricks), 
+       uninitialized variable in encoding code, Relax-NG validation bug,
+       potential crash if gnorableWhitespace is NULL, xmlSAXParseDoc and
+       xmlParseDoc signatures, switched back to assuming UTF-8 in case 
+       no encoding is given at serialization time</li>
+  <li> improvements: lot of work on Schemas by Kasimier Buchcikii on facets
+       checking and also mixed handling.</li>
+  <li></li>
+</ul><h3>2.6.18: Mar 13 2005</h3><ul><li> build fixes: warnings (Peter Breitenlohner), testapi.c generation, 
        Bakefile support (Francesco Montorsi), Windows compilation (Joel Reed),
        some gcc4 fixes, HP-UX portability fixes (Rick Jones).</li>
   <li> bug fixes: xmlSchemaElementDump namespace (Kasimier Buchcik), push and

Modified: packages/libxml2/branches/upstream/current/doc/xml.html
===================================================================
--- packages/libxml2/branches/upstream/current/doc/xml.html	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/doc/xml.html	2005-04-04 18:23:13 UTC (rev 398)
@@ -715,6 +715,27 @@
 
 <p>There is the list of public releases:</p>
 
+<h3>2.6.19: Apr 02 2005</h3>
+<ul>
+  <li> build fixes: drop .la from RPMs, --with-minimum build fix (William
+       Brack), use XML_SOCKLEN_T instead of SOCKLEN_T because it breaks with
+       AIX 5.3 compiler, fixed elfgcchack.h generation and PLT reduction
+       code on Linux/ELF/gcc4</li>
+  <li> bug fixes: schemas type decimal fixups (William Brack), xmmlint return
+       code (Gerry Murphy), small schemas fixes (Matthew Burgess and
+       GUY Fabrice), workaround "DAV:" namespace brokeness in c14n (Aleksey
+       Sanin), segfault in Schemas (Kasimier Buchcik), Schemas attribute
+       validation (Kasimier), Prop related functions and xmlNewNodeEatName
+       (Rob Richards), HTML serialization of name attribute on a elements,
+       Python error handlers leaks and improvement (Brent Hendricks), 
+       uninitialized variable in encoding code, Relax-NG validation bug,
+       potential crash if gnorableWhitespace is NULL, xmlSAXParseDoc and
+       xmlParseDoc signatures, switched back to assuming UTF-8 in case 
+       no encoding is given at serialization time</li>
+  <li> improvements: lot of work on Schemas by Kasimier Buchcikii on facets
+       checking and also mixed handling.</li>
+  <li></li>
+</ul>
 <h3>2.6.18: Mar 13 2005</h3>
 <ul>
   <li> build fixes: warnings (Peter Breitenlohner), testapi.c generation, 

Modified: packages/libxml2/branches/upstream/current/elfgcchack.h
===================================================================
--- packages/libxml2/branches/upstream/current/elfgcchack.h	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/elfgcchack.h	2005-04-04 18:23:13 UTC (rev 398)
@@ -8,6 +8,12 @@
  * autogenerated with xsltproc doc/elfgcchack.xsl doc/libxml2-api.xml
  */
 
+#ifdef IN_LIBXML
+#ifdef __GNUC__
+#ifdef PIC
+#ifdef linux
+#if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || (__GNUC__ > 3)
+
 #include "libxml/c14n.h"
 #include "libxml/catalog.h"
 #include "libxml/chvalid.h"
@@ -57,7787 +63,16661 @@
 
 /* special hot spot not exported ones */
 
+#ifdef bottom_globals
+#undef __xmlGenericError
+extern __typeof (__xmlGenericError) __xmlGenericError __attribute((alias("__xmlGenericError__internal_alias")));
+#else
+#ifndef __xmlGenericError
 extern __typeof (__xmlGenericError) __xmlGenericError__internal_alias __attribute((visibility("hidden")));
-extern __typeof (__xmlGenericError) __xmlGenericError __attribute((alias("__xmlGenericError__internal_alias")));
 #define __xmlGenericError __xmlGenericError__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef __xmlGenericErrorContext
+extern __typeof (__xmlGenericErrorContext) __xmlGenericErrorContext __attribute((alias("__xmlGenericErrorContext__internal_alias")));
+#else
+#ifndef __xmlGenericErrorContext
 extern __typeof (__xmlGenericErrorContext) __xmlGenericErrorContext__internal_alias __attribute((visibility("hidden")));
-extern __typeof (__xmlGenericErrorContext) __xmlGenericErrorContext __attribute((alias("__xmlGenericErrorContext__internal_alias")));
 #define __xmlGenericErrorContext __xmlGenericErrorContext__internal_alias
+#endif
+#endif
 
 /* list generated from libxml2-api.xml */
-
 #if defined(LIBXML_DOCB_ENABLED)
+#ifdef bottom_DOCBparser
+#undef docbCreatePushParserCtxt
+extern __typeof (docbCreatePushParserCtxt) docbCreatePushParserCtxt __attribute((alias("docbCreatePushParserCtxt__internal_alias")));
+#else
+#ifndef docbCreatePushParserCtxt
 extern __typeof (docbCreatePushParserCtxt) docbCreatePushParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (docbCreatePushParserCtxt) docbCreatePushParserCtxt __attribute((alias("docbCreatePushParserCtxt__internal_alias")));
 #define docbCreatePushParserCtxt docbCreatePushParserCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlAttrAllowed
+extern __typeof (htmlAttrAllowed) htmlAttrAllowed __attribute((alias("htmlAttrAllowed__internal_alias")));
+#else
+#ifndef htmlAttrAllowed
 extern __typeof (htmlAttrAllowed) htmlAttrAllowed__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlAttrAllowed) htmlAttrAllowed __attribute((alias("htmlAttrAllowed__internal_alias")));
 #define htmlAttrAllowed htmlAttrAllowed__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlAutoCloseTag
+extern __typeof (htmlAutoCloseTag) htmlAutoCloseTag __attribute((alias("htmlAutoCloseTag__internal_alias")));
+#else
+#ifndef htmlAutoCloseTag
 extern __typeof (htmlAutoCloseTag) htmlAutoCloseTag__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlAutoCloseTag) htmlAutoCloseTag __attribute((alias("htmlAutoCloseTag__internal_alias")));
 #define htmlAutoCloseTag htmlAutoCloseTag__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlCreateFileParserCtxt
+extern __typeof (htmlCreateFileParserCtxt) htmlCreateFileParserCtxt __attribute((alias("htmlCreateFileParserCtxt__internal_alias")));
+#else
+#ifndef htmlCreateFileParserCtxt
 extern __typeof (htmlCreateFileParserCtxt) htmlCreateFileParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlCreateFileParserCtxt) htmlCreateFileParserCtxt __attribute((alias("htmlCreateFileParserCtxt__internal_alias")));
 #define htmlCreateFileParserCtxt htmlCreateFileParserCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlCreateMemoryParserCtxt
+extern __typeof (htmlCreateMemoryParserCtxt) htmlCreateMemoryParserCtxt __attribute((alias("htmlCreateMemoryParserCtxt__internal_alias")));
+#else
+#ifndef htmlCreateMemoryParserCtxt
 extern __typeof (htmlCreateMemoryParserCtxt) htmlCreateMemoryParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlCreateMemoryParserCtxt) htmlCreateMemoryParserCtxt __attribute((alias("htmlCreateMemoryParserCtxt__internal_alias")));
 #define htmlCreateMemoryParserCtxt htmlCreateMemoryParserCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_PUSH_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlCreatePushParserCtxt
+extern __typeof (htmlCreatePushParserCtxt) htmlCreatePushParserCtxt __attribute((alias("htmlCreatePushParserCtxt__internal_alias")));
+#else
+#ifndef htmlCreatePushParserCtxt
 extern __typeof (htmlCreatePushParserCtxt) htmlCreatePushParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlCreatePushParserCtxt) htmlCreatePushParserCtxt __attribute((alias("htmlCreatePushParserCtxt__internal_alias")));
 #define htmlCreatePushParserCtxt htmlCreatePushParserCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlCtxtReadDoc
+extern __typeof (htmlCtxtReadDoc) htmlCtxtReadDoc __attribute((alias("htmlCtxtReadDoc__internal_alias")));
+#else
+#ifndef htmlCtxtReadDoc
 extern __typeof (htmlCtxtReadDoc) htmlCtxtReadDoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlCtxtReadDoc) htmlCtxtReadDoc __attribute((alias("htmlCtxtReadDoc__internal_alias")));
 #define htmlCtxtReadDoc htmlCtxtReadDoc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlCtxtReadFd
+extern __typeof (htmlCtxtReadFd) htmlCtxtReadFd __attribute((alias("htmlCtxtReadFd__internal_alias")));
+#else
+#ifndef htmlCtxtReadFd
 extern __typeof (htmlCtxtReadFd) htmlCtxtReadFd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlCtxtReadFd) htmlCtxtReadFd __attribute((alias("htmlCtxtReadFd__internal_alias")));
 #define htmlCtxtReadFd htmlCtxtReadFd__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlCtxtReadFile
+extern __typeof (htmlCtxtReadFile) htmlCtxtReadFile __attribute((alias("htmlCtxtReadFile__internal_alias")));
+#else
+#ifndef htmlCtxtReadFile
 extern __typeof (htmlCtxtReadFile) htmlCtxtReadFile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlCtxtReadFile) htmlCtxtReadFile __attribute((alias("htmlCtxtReadFile__internal_alias")));
 #define htmlCtxtReadFile htmlCtxtReadFile__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlCtxtReadIO
+extern __typeof (htmlCtxtReadIO) htmlCtxtReadIO __attribute((alias("htmlCtxtReadIO__internal_alias")));
+#else
+#ifndef htmlCtxtReadIO
 extern __typeof (htmlCtxtReadIO) htmlCtxtReadIO__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlCtxtReadIO) htmlCtxtReadIO __attribute((alias("htmlCtxtReadIO__internal_alias")));
 #define htmlCtxtReadIO htmlCtxtReadIO__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlCtxtReadMemory
+extern __typeof (htmlCtxtReadMemory) htmlCtxtReadMemory __attribute((alias("htmlCtxtReadMemory__internal_alias")));
+#else
+#ifndef htmlCtxtReadMemory
 extern __typeof (htmlCtxtReadMemory) htmlCtxtReadMemory__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlCtxtReadMemory) htmlCtxtReadMemory __attribute((alias("htmlCtxtReadMemory__internal_alias")));
 #define htmlCtxtReadMemory htmlCtxtReadMemory__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlCtxtReset
+extern __typeof (htmlCtxtReset) htmlCtxtReset __attribute((alias("htmlCtxtReset__internal_alias")));
+#else
+#ifndef htmlCtxtReset
 extern __typeof (htmlCtxtReset) htmlCtxtReset__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlCtxtReset) htmlCtxtReset __attribute((alias("htmlCtxtReset__internal_alias")));
 #define htmlCtxtReset htmlCtxtReset__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlCtxtUseOptions
+extern __typeof (htmlCtxtUseOptions) htmlCtxtUseOptions __attribute((alias("htmlCtxtUseOptions__internal_alias")));
+#else
+#ifndef htmlCtxtUseOptions
 extern __typeof (htmlCtxtUseOptions) htmlCtxtUseOptions__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlCtxtUseOptions) htmlCtxtUseOptions __attribute((alias("htmlCtxtUseOptions__internal_alias")));
 #define htmlCtxtUseOptions htmlCtxtUseOptions__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_SAX2
+#undef htmlDefaultSAXHandlerInit
+extern __typeof (htmlDefaultSAXHandlerInit) htmlDefaultSAXHandlerInit __attribute((alias("htmlDefaultSAXHandlerInit__internal_alias")));
+#else
+#ifndef htmlDefaultSAXHandlerInit
 extern __typeof (htmlDefaultSAXHandlerInit) htmlDefaultSAXHandlerInit__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlDefaultSAXHandlerInit) htmlDefaultSAXHandlerInit __attribute((alias("htmlDefaultSAXHandlerInit__internal_alias")));
 #define htmlDefaultSAXHandlerInit htmlDefaultSAXHandlerInit__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_HTMLtree
+#undef htmlDocContentDumpFormatOutput
+extern __typeof (htmlDocContentDumpFormatOutput) htmlDocContentDumpFormatOutput __attribute((alias("htmlDocContentDumpFormatOutput__internal_alias")));
+#else
+#ifndef htmlDocContentDumpFormatOutput
 extern __typeof (htmlDocContentDumpFormatOutput) htmlDocContentDumpFormatOutput__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlDocContentDumpFormatOutput) htmlDocContentDumpFormatOutput __attribute((alias("htmlDocContentDumpFormatOutput__internal_alias")));
 #define htmlDocContentDumpFormatOutput htmlDocContentDumpFormatOutput__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_HTMLtree
+#undef htmlDocContentDumpOutput
+extern __typeof (htmlDocContentDumpOutput) htmlDocContentDumpOutput __attribute((alias("htmlDocContentDumpOutput__internal_alias")));
+#else
+#ifndef htmlDocContentDumpOutput
 extern __typeof (htmlDocContentDumpOutput) htmlDocContentDumpOutput__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlDocContentDumpOutput) htmlDocContentDumpOutput __attribute((alias("htmlDocContentDumpOutput__internal_alias")));
 #define htmlDocContentDumpOutput htmlDocContentDumpOutput__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_HTMLtree
+#undef htmlDocDump
+extern __typeof (htmlDocDump) htmlDocDump __attribute((alias("htmlDocDump__internal_alias")));
+#else
+#ifndef htmlDocDump
 extern __typeof (htmlDocDump) htmlDocDump__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlDocDump) htmlDocDump __attribute((alias("htmlDocDump__internal_alias")));
 #define htmlDocDump htmlDocDump__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_HTMLtree
+#undef htmlDocDumpMemory
+extern __typeof (htmlDocDumpMemory) htmlDocDumpMemory __attribute((alias("htmlDocDumpMemory__internal_alias")));
+#else
+#ifndef htmlDocDumpMemory
 extern __typeof (htmlDocDumpMemory) htmlDocDumpMemory__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlDocDumpMemory) htmlDocDumpMemory __attribute((alias("htmlDocDumpMemory__internal_alias")));
 #define htmlDocDumpMemory htmlDocDumpMemory__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlElementAllowedHere
+extern __typeof (htmlElementAllowedHere) htmlElementAllowedHere __attribute((alias("htmlElementAllowedHere__internal_alias")));
+#else
+#ifndef htmlElementAllowedHere
 extern __typeof (htmlElementAllowedHere) htmlElementAllowedHere__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlElementAllowedHere) htmlElementAllowedHere __attribute((alias("htmlElementAllowedHere__internal_alias")));
 #define htmlElementAllowedHere htmlElementAllowedHere__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlElementStatusHere
+extern __typeof (htmlElementStatusHere) htmlElementStatusHere __attribute((alias("htmlElementStatusHere__internal_alias")));
+#else
+#ifndef htmlElementStatusHere
 extern __typeof (htmlElementStatusHere) htmlElementStatusHere__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlElementStatusHere) htmlElementStatusHere __attribute((alias("htmlElementStatusHere__internal_alias")));
 #define htmlElementStatusHere htmlElementStatusHere__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlEncodeEntities
+extern __typeof (htmlEncodeEntities) htmlEncodeEntities __attribute((alias("htmlEncodeEntities__internal_alias")));
+#else
+#ifndef htmlEncodeEntities
 extern __typeof (htmlEncodeEntities) htmlEncodeEntities__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlEncodeEntities) htmlEncodeEntities __attribute((alias("htmlEncodeEntities__internal_alias")));
 #define htmlEncodeEntities htmlEncodeEntities__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlEntityLookup
+extern __typeof (htmlEntityLookup) htmlEntityLookup __attribute((alias("htmlEntityLookup__internal_alias")));
+#else
+#ifndef htmlEntityLookup
 extern __typeof (htmlEntityLookup) htmlEntityLookup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlEntityLookup) htmlEntityLookup __attribute((alias("htmlEntityLookup__internal_alias")));
 #define htmlEntityLookup htmlEntityLookup__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlEntityValueLookup
+extern __typeof (htmlEntityValueLookup) htmlEntityValueLookup __attribute((alias("htmlEntityValueLookup__internal_alias")));
+#else
+#ifndef htmlEntityValueLookup
 extern __typeof (htmlEntityValueLookup) htmlEntityValueLookup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlEntityValueLookup) htmlEntityValueLookup __attribute((alias("htmlEntityValueLookup__internal_alias")));
 #define htmlEntityValueLookup htmlEntityValueLookup__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlFreeParserCtxt
+extern __typeof (htmlFreeParserCtxt) htmlFreeParserCtxt __attribute((alias("htmlFreeParserCtxt__internal_alias")));
+#else
+#ifndef htmlFreeParserCtxt
 extern __typeof (htmlFreeParserCtxt) htmlFreeParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlFreeParserCtxt) htmlFreeParserCtxt __attribute((alias("htmlFreeParserCtxt__internal_alias")));
 #define htmlFreeParserCtxt htmlFreeParserCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLtree
+#undef htmlGetMetaEncoding
+extern __typeof (htmlGetMetaEncoding) htmlGetMetaEncoding __attribute((alias("htmlGetMetaEncoding__internal_alias")));
+#else
+#ifndef htmlGetMetaEncoding
 extern __typeof (htmlGetMetaEncoding) htmlGetMetaEncoding__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlGetMetaEncoding) htmlGetMetaEncoding __attribute((alias("htmlGetMetaEncoding__internal_alias")));
 #define htmlGetMetaEncoding htmlGetMetaEncoding__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlHandleOmittedElem
+extern __typeof (htmlHandleOmittedElem) htmlHandleOmittedElem __attribute((alias("htmlHandleOmittedElem__internal_alias")));
+#else
+#ifndef htmlHandleOmittedElem
 extern __typeof (htmlHandleOmittedElem) htmlHandleOmittedElem__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlHandleOmittedElem) htmlHandleOmittedElem __attribute((alias("htmlHandleOmittedElem__internal_alias")));
 #define htmlHandleOmittedElem htmlHandleOmittedElem__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlInitAutoClose
+extern __typeof (htmlInitAutoClose) htmlInitAutoClose __attribute((alias("htmlInitAutoClose__internal_alias")));
+#else
+#ifndef htmlInitAutoClose
 extern __typeof (htmlInitAutoClose) htmlInitAutoClose__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlInitAutoClose) htmlInitAutoClose __attribute((alias("htmlInitAutoClose__internal_alias")));
 #define htmlInitAutoClose htmlInitAutoClose__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlIsAutoClosed
+extern __typeof (htmlIsAutoClosed) htmlIsAutoClosed __attribute((alias("htmlIsAutoClosed__internal_alias")));
+#else
+#ifndef htmlIsAutoClosed
 extern __typeof (htmlIsAutoClosed) htmlIsAutoClosed__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlIsAutoClosed) htmlIsAutoClosed __attribute((alias("htmlIsAutoClosed__internal_alias")));
 #define htmlIsAutoClosed htmlIsAutoClosed__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLtree
+#undef htmlIsBooleanAttr
+extern __typeof (htmlIsBooleanAttr) htmlIsBooleanAttr __attribute((alias("htmlIsBooleanAttr__internal_alias")));
+#else
+#ifndef htmlIsBooleanAttr
 extern __typeof (htmlIsBooleanAttr) htmlIsBooleanAttr__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlIsBooleanAttr) htmlIsBooleanAttr __attribute((alias("htmlIsBooleanAttr__internal_alias")));
 #define htmlIsBooleanAttr htmlIsBooleanAttr__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlIsScriptAttribute
+extern __typeof (htmlIsScriptAttribute) htmlIsScriptAttribute __attribute((alias("htmlIsScriptAttribute__internal_alias")));
+#else
+#ifndef htmlIsScriptAttribute
 extern __typeof (htmlIsScriptAttribute) htmlIsScriptAttribute__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlIsScriptAttribute) htmlIsScriptAttribute __attribute((alias("htmlIsScriptAttribute__internal_alias")));
 #define htmlIsScriptAttribute htmlIsScriptAttribute__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlNewDoc
+extern __typeof (htmlNewDoc) htmlNewDoc __attribute((alias("htmlNewDoc__internal_alias")));
+#else
+#ifndef htmlNewDoc
 extern __typeof (htmlNewDoc) htmlNewDoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlNewDoc) htmlNewDoc __attribute((alias("htmlNewDoc__internal_alias")));
 #define htmlNewDoc htmlNewDoc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlNewDocNoDtD
+extern __typeof (htmlNewDocNoDtD) htmlNewDocNoDtD __attribute((alias("htmlNewDocNoDtD__internal_alias")));
+#else
+#ifndef htmlNewDocNoDtD
 extern __typeof (htmlNewDocNoDtD) htmlNewDocNoDtD__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlNewDocNoDtD) htmlNewDocNoDtD __attribute((alias("htmlNewDocNoDtD__internal_alias")));
 #define htmlNewDocNoDtD htmlNewDocNoDtD__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_HTMLtree
+#undef htmlNodeDump
+extern __typeof (htmlNodeDump) htmlNodeDump __attribute((alias("htmlNodeDump__internal_alias")));
+#else
+#ifndef htmlNodeDump
 extern __typeof (htmlNodeDump) htmlNodeDump__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlNodeDump) htmlNodeDump __attribute((alias("htmlNodeDump__internal_alias")));
 #define htmlNodeDump htmlNodeDump__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_HTMLtree
+#undef htmlNodeDumpFile
+extern __typeof (htmlNodeDumpFile) htmlNodeDumpFile __attribute((alias("htmlNodeDumpFile__internal_alias")));
+#else
+#ifndef htmlNodeDumpFile
 extern __typeof (htmlNodeDumpFile) htmlNodeDumpFile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlNodeDumpFile) htmlNodeDumpFile __attribute((alias("htmlNodeDumpFile__internal_alias")));
 #define htmlNodeDumpFile htmlNodeDumpFile__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_HTMLtree
+#undef htmlNodeDumpFileFormat
+extern __typeof (htmlNodeDumpFileFormat) htmlNodeDumpFileFormat __attribute((alias("htmlNodeDumpFileFormat__internal_alias")));
+#else
+#ifndef htmlNodeDumpFileFormat
 extern __typeof (htmlNodeDumpFileFormat) htmlNodeDumpFileFormat__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlNodeDumpFileFormat) htmlNodeDumpFileFormat __attribute((alias("htmlNodeDumpFileFormat__internal_alias")));
 #define htmlNodeDumpFileFormat htmlNodeDumpFileFormat__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_HTMLtree
+#undef htmlNodeDumpFormatOutput
+extern __typeof (htmlNodeDumpFormatOutput) htmlNodeDumpFormatOutput __attribute((alias("htmlNodeDumpFormatOutput__internal_alias")));
+#else
+#ifndef htmlNodeDumpFormatOutput
 extern __typeof (htmlNodeDumpFormatOutput) htmlNodeDumpFormatOutput__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlNodeDumpFormatOutput) htmlNodeDumpFormatOutput __attribute((alias("htmlNodeDumpFormatOutput__internal_alias")));
 #define htmlNodeDumpFormatOutput htmlNodeDumpFormatOutput__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_HTMLtree
+#undef htmlNodeDumpOutput
+extern __typeof (htmlNodeDumpOutput) htmlNodeDumpOutput __attribute((alias("htmlNodeDumpOutput__internal_alias")));
+#else
+#ifndef htmlNodeDumpOutput
 extern __typeof (htmlNodeDumpOutput) htmlNodeDumpOutput__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlNodeDumpOutput) htmlNodeDumpOutput __attribute((alias("htmlNodeDumpOutput__internal_alias")));
 #define htmlNodeDumpOutput htmlNodeDumpOutput__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlNodeStatus
+extern __typeof (htmlNodeStatus) htmlNodeStatus __attribute((alias("htmlNodeStatus__internal_alias")));
+#else
+#ifndef htmlNodeStatus
 extern __typeof (htmlNodeStatus) htmlNodeStatus__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlNodeStatus) htmlNodeStatus __attribute((alias("htmlNodeStatus__internal_alias")));
 #define htmlNodeStatus htmlNodeStatus__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlParseCharRef
+extern __typeof (htmlParseCharRef) htmlParseCharRef __attribute((alias("htmlParseCharRef__internal_alias")));
+#else
+#ifndef htmlParseCharRef
 extern __typeof (htmlParseCharRef) htmlParseCharRef__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlParseCharRef) htmlParseCharRef __attribute((alias("htmlParseCharRef__internal_alias")));
 #define htmlParseCharRef htmlParseCharRef__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_PUSH_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlParseChunk
+extern __typeof (htmlParseChunk) htmlParseChunk __attribute((alias("htmlParseChunk__internal_alias")));
+#else
+#ifndef htmlParseChunk
 extern __typeof (htmlParseChunk) htmlParseChunk__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlParseChunk) htmlParseChunk __attribute((alias("htmlParseChunk__internal_alias")));
 #define htmlParseChunk htmlParseChunk__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlParseDoc
+extern __typeof (htmlParseDoc) htmlParseDoc __attribute((alias("htmlParseDoc__internal_alias")));
+#else
+#ifndef htmlParseDoc
 extern __typeof (htmlParseDoc) htmlParseDoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlParseDoc) htmlParseDoc __attribute((alias("htmlParseDoc__internal_alias")));
 #define htmlParseDoc htmlParseDoc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlParseDocument
+extern __typeof (htmlParseDocument) htmlParseDocument __attribute((alias("htmlParseDocument__internal_alias")));
+#else
+#ifndef htmlParseDocument
 extern __typeof (htmlParseDocument) htmlParseDocument__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlParseDocument) htmlParseDocument __attribute((alias("htmlParseDocument__internal_alias")));
 #define htmlParseDocument htmlParseDocument__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlParseElement
+extern __typeof (htmlParseElement) htmlParseElement __attribute((alias("htmlParseElement__internal_alias")));
+#else
+#ifndef htmlParseElement
 extern __typeof (htmlParseElement) htmlParseElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlParseElement) htmlParseElement __attribute((alias("htmlParseElement__internal_alias")));
 #define htmlParseElement htmlParseElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlParseEntityRef
+extern __typeof (htmlParseEntityRef) htmlParseEntityRef __attribute((alias("htmlParseEntityRef__internal_alias")));
+#else
+#ifndef htmlParseEntityRef
 extern __typeof (htmlParseEntityRef) htmlParseEntityRef__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlParseEntityRef) htmlParseEntityRef __attribute((alias("htmlParseEntityRef__internal_alias")));
 #define htmlParseEntityRef htmlParseEntityRef__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlParseFile
+extern __typeof (htmlParseFile) htmlParseFile __attribute((alias("htmlParseFile__internal_alias")));
+#else
+#ifndef htmlParseFile
 extern __typeof (htmlParseFile) htmlParseFile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlParseFile) htmlParseFile __attribute((alias("htmlParseFile__internal_alias")));
 #define htmlParseFile htmlParseFile__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlReadDoc
+extern __typeof (htmlReadDoc) htmlReadDoc __attribute((alias("htmlReadDoc__internal_alias")));
+#else
+#ifndef htmlReadDoc
 extern __typeof (htmlReadDoc) htmlReadDoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlReadDoc) htmlReadDoc __attribute((alias("htmlReadDoc__internal_alias")));
 #define htmlReadDoc htmlReadDoc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlReadFd
+extern __typeof (htmlReadFd) htmlReadFd __attribute((alias("htmlReadFd__internal_alias")));
+#else
+#ifndef htmlReadFd
 extern __typeof (htmlReadFd) htmlReadFd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlReadFd) htmlReadFd __attribute((alias("htmlReadFd__internal_alias")));
 #define htmlReadFd htmlReadFd__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlReadFile
+extern __typeof (htmlReadFile) htmlReadFile __attribute((alias("htmlReadFile__internal_alias")));
+#else
+#ifndef htmlReadFile
 extern __typeof (htmlReadFile) htmlReadFile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlReadFile) htmlReadFile __attribute((alias("htmlReadFile__internal_alias")));
 #define htmlReadFile htmlReadFile__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlReadIO
+extern __typeof (htmlReadIO) htmlReadIO __attribute((alias("htmlReadIO__internal_alias")));
+#else
+#ifndef htmlReadIO
 extern __typeof (htmlReadIO) htmlReadIO__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlReadIO) htmlReadIO __attribute((alias("htmlReadIO__internal_alias")));
 #define htmlReadIO htmlReadIO__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlReadMemory
+extern __typeof (htmlReadMemory) htmlReadMemory __attribute((alias("htmlReadMemory__internal_alias")));
+#else
+#ifndef htmlReadMemory
 extern __typeof (htmlReadMemory) htmlReadMemory__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlReadMemory) htmlReadMemory __attribute((alias("htmlReadMemory__internal_alias")));
 #define htmlReadMemory htmlReadMemory__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlSAXParseDoc
+extern __typeof (htmlSAXParseDoc) htmlSAXParseDoc __attribute((alias("htmlSAXParseDoc__internal_alias")));
+#else
+#ifndef htmlSAXParseDoc
 extern __typeof (htmlSAXParseDoc) htmlSAXParseDoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlSAXParseDoc) htmlSAXParseDoc __attribute((alias("htmlSAXParseDoc__internal_alias")));
 #define htmlSAXParseDoc htmlSAXParseDoc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlSAXParseFile
+extern __typeof (htmlSAXParseFile) htmlSAXParseFile __attribute((alias("htmlSAXParseFile__internal_alias")));
+#else
+#ifndef htmlSAXParseFile
 extern __typeof (htmlSAXParseFile) htmlSAXParseFile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlSAXParseFile) htmlSAXParseFile __attribute((alias("htmlSAXParseFile__internal_alias")));
 #define htmlSAXParseFile htmlSAXParseFile__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_HTMLtree
+#undef htmlSaveFile
+extern __typeof (htmlSaveFile) htmlSaveFile __attribute((alias("htmlSaveFile__internal_alias")));
+#else
+#ifndef htmlSaveFile
 extern __typeof (htmlSaveFile) htmlSaveFile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlSaveFile) htmlSaveFile __attribute((alias("htmlSaveFile__internal_alias")));
 #define htmlSaveFile htmlSaveFile__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_HTMLtree
+#undef htmlSaveFileEnc
+extern __typeof (htmlSaveFileEnc) htmlSaveFileEnc __attribute((alias("htmlSaveFileEnc__internal_alias")));
+#else
+#ifndef htmlSaveFileEnc
 extern __typeof (htmlSaveFileEnc) htmlSaveFileEnc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlSaveFileEnc) htmlSaveFileEnc __attribute((alias("htmlSaveFileEnc__internal_alias")));
 #define htmlSaveFileEnc htmlSaveFileEnc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_HTMLtree
+#undef htmlSaveFileFormat
+extern __typeof (htmlSaveFileFormat) htmlSaveFileFormat __attribute((alias("htmlSaveFileFormat__internal_alias")));
+#else
+#ifndef htmlSaveFileFormat
 extern __typeof (htmlSaveFileFormat) htmlSaveFileFormat__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlSaveFileFormat) htmlSaveFileFormat __attribute((alias("htmlSaveFileFormat__internal_alias")));
 #define htmlSaveFileFormat htmlSaveFileFormat__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLtree
+#undef htmlSetMetaEncoding
+extern __typeof (htmlSetMetaEncoding) htmlSetMetaEncoding __attribute((alias("htmlSetMetaEncoding__internal_alias")));
+#else
+#ifndef htmlSetMetaEncoding
 extern __typeof (htmlSetMetaEncoding) htmlSetMetaEncoding__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlSetMetaEncoding) htmlSetMetaEncoding __attribute((alias("htmlSetMetaEncoding__internal_alias")));
 #define htmlSetMetaEncoding htmlSetMetaEncoding__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_HTMLparser
+#undef htmlTagLookup
+extern __typeof (htmlTagLookup) htmlTagLookup __attribute((alias("htmlTagLookup__internal_alias")));
+#else
+#ifndef htmlTagLookup
 extern __typeof (htmlTagLookup) htmlTagLookup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (htmlTagLookup) htmlTagLookup __attribute((alias("htmlTagLookup__internal_alias")));
 #define htmlTagLookup htmlTagLookup__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef inputPop
+extern __typeof (inputPop) inputPop __attribute((alias("inputPop__internal_alias")));
+#else
+#ifndef inputPop
 extern __typeof (inputPop) inputPop__internal_alias __attribute((visibility("hidden")));
-extern __typeof (inputPop) inputPop __attribute((alias("inputPop__internal_alias")));
 #define inputPop inputPop__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef inputPush
+extern __typeof (inputPush) inputPush __attribute((alias("inputPush__internal_alias")));
+#else
+#ifndef inputPush
 extern __typeof (inputPush) inputPush__internal_alias __attribute((visibility("hidden")));
-extern __typeof (inputPush) inputPush __attribute((alias("inputPush__internal_alias")));
 #define inputPush inputPush__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef namePop
+extern __typeof (namePop) namePop __attribute((alias("namePop__internal_alias")));
+#else
+#ifndef namePop
 extern __typeof (namePop) namePop__internal_alias __attribute((visibility("hidden")));
-extern __typeof (namePop) namePop __attribute((alias("namePop__internal_alias")));
 #define namePop namePop__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef namePush
+extern __typeof (namePush) namePush __attribute((alias("namePush__internal_alias")));
+#else
+#ifndef namePush
 extern __typeof (namePush) namePush__internal_alias __attribute((visibility("hidden")));
-extern __typeof (namePush) namePush __attribute((alias("namePush__internal_alias")));
 #define namePush namePush__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef nodePop
+extern __typeof (nodePop) nodePop __attribute((alias("nodePop__internal_alias")));
+#else
+#ifndef nodePop
 extern __typeof (nodePop) nodePop__internal_alias __attribute((visibility("hidden")));
-extern __typeof (nodePop) nodePop __attribute((alias("nodePop__internal_alias")));
 #define nodePop nodePop__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef nodePush
+extern __typeof (nodePush) nodePush __attribute((alias("nodePush__internal_alias")));
+#else
+#ifndef nodePush
 extern __typeof (nodePush) nodePush__internal_alias __attribute((visibility("hidden")));
-extern __typeof (nodePush) nodePush __attribute((alias("nodePush__internal_alias")));
 #define nodePush nodePush__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef valuePop
+extern __typeof (valuePop) valuePop __attribute((alias("valuePop__internal_alias")));
+#else
+#ifndef valuePop
 extern __typeof (valuePop) valuePop__internal_alias __attribute((visibility("hidden")));
-extern __typeof (valuePop) valuePop __attribute((alias("valuePop__internal_alias")));
 #define valuePop valuePop__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef valuePush
+extern __typeof (valuePush) valuePush __attribute((alias("valuePush__internal_alias")));
+#else
+#ifndef valuePush
 extern __typeof (valuePush) valuePush__internal_alias __attribute((visibility("hidden")));
-extern __typeof (valuePush) valuePush __attribute((alias("valuePush__internal_alias")));
 #define valuePush valuePush__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlACatalogAdd
+extern __typeof (xmlACatalogAdd) xmlACatalogAdd __attribute((alias("xmlACatalogAdd__internal_alias")));
+#else
+#ifndef xmlACatalogAdd
 extern __typeof (xmlACatalogAdd) xmlACatalogAdd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlACatalogAdd) xmlACatalogAdd __attribute((alias("xmlACatalogAdd__internal_alias")));
 #define xmlACatalogAdd xmlACatalogAdd__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_catalog
+#undef xmlACatalogDump
+extern __typeof (xmlACatalogDump) xmlACatalogDump __attribute((alias("xmlACatalogDump__internal_alias")));
+#else
+#ifndef xmlACatalogDump
 extern __typeof (xmlACatalogDump) xmlACatalogDump__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlACatalogDump) xmlACatalogDump __attribute((alias("xmlACatalogDump__internal_alias")));
 #define xmlACatalogDump xmlACatalogDump__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlACatalogRemove
+extern __typeof (xmlACatalogRemove) xmlACatalogRemove __attribute((alias("xmlACatalogRemove__internal_alias")));
+#else
+#ifndef xmlACatalogRemove
 extern __typeof (xmlACatalogRemove) xmlACatalogRemove__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlACatalogRemove) xmlACatalogRemove __attribute((alias("xmlACatalogRemove__internal_alias")));
 #define xmlACatalogRemove xmlACatalogRemove__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlACatalogResolve
+extern __typeof (xmlACatalogResolve) xmlACatalogResolve __attribute((alias("xmlACatalogResolve__internal_alias")));
+#else
+#ifndef xmlACatalogResolve
 extern __typeof (xmlACatalogResolve) xmlACatalogResolve__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlACatalogResolve) xmlACatalogResolve __attribute((alias("xmlACatalogResolve__internal_alias")));
 #define xmlACatalogResolve xmlACatalogResolve__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlACatalogResolvePublic
+extern __typeof (xmlACatalogResolvePublic) xmlACatalogResolvePublic __attribute((alias("xmlACatalogResolvePublic__internal_alias")));
+#else
+#ifndef xmlACatalogResolvePublic
 extern __typeof (xmlACatalogResolvePublic) xmlACatalogResolvePublic__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlACatalogResolvePublic) xmlACatalogResolvePublic __attribute((alias("xmlACatalogResolvePublic__internal_alias")));
 #define xmlACatalogResolvePublic xmlACatalogResolvePublic__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlACatalogResolveSystem
+extern __typeof (xmlACatalogResolveSystem) xmlACatalogResolveSystem __attribute((alias("xmlACatalogResolveSystem__internal_alias")));
+#else
+#ifndef xmlACatalogResolveSystem
 extern __typeof (xmlACatalogResolveSystem) xmlACatalogResolveSystem__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlACatalogResolveSystem) xmlACatalogResolveSystem __attribute((alias("xmlACatalogResolveSystem__internal_alias")));
 #define xmlACatalogResolveSystem xmlACatalogResolveSystem__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlACatalogResolveURI
+extern __typeof (xmlACatalogResolveURI) xmlACatalogResolveURI __attribute((alias("xmlACatalogResolveURI__internal_alias")));
+#else
+#ifndef xmlACatalogResolveURI
 extern __typeof (xmlACatalogResolveURI) xmlACatalogResolveURI__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlACatalogResolveURI) xmlACatalogResolveURI __attribute((alias("xmlACatalogResolveURI__internal_alias")));
 #define xmlACatalogResolveURI xmlACatalogResolveURI__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlAddAttributeDecl
+extern __typeof (xmlAddAttributeDecl) xmlAddAttributeDecl __attribute((alias("xmlAddAttributeDecl__internal_alias")));
+#else
+#ifndef xmlAddAttributeDecl
 extern __typeof (xmlAddAttributeDecl) xmlAddAttributeDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAddAttributeDecl) xmlAddAttributeDecl __attribute((alias("xmlAddAttributeDecl__internal_alias")));
 #define xmlAddAttributeDecl xmlAddAttributeDecl__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlAddChild
+extern __typeof (xmlAddChild) xmlAddChild __attribute((alias("xmlAddChild__internal_alias")));
+#else
+#ifndef xmlAddChild
 extern __typeof (xmlAddChild) xmlAddChild__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAddChild) xmlAddChild __attribute((alias("xmlAddChild__internal_alias")));
 #define xmlAddChild xmlAddChild__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlAddChildList
+extern __typeof (xmlAddChildList) xmlAddChildList __attribute((alias("xmlAddChildList__internal_alias")));
+#else
+#ifndef xmlAddChildList
 extern __typeof (xmlAddChildList) xmlAddChildList__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAddChildList) xmlAddChildList __attribute((alias("xmlAddChildList__internal_alias")));
 #define xmlAddChildList xmlAddChildList__internal_alias
+#endif
+#endif
 
+#ifdef bottom_entities
+#undef xmlAddDocEntity
+extern __typeof (xmlAddDocEntity) xmlAddDocEntity __attribute((alias("xmlAddDocEntity__internal_alias")));
+#else
+#ifndef xmlAddDocEntity
 extern __typeof (xmlAddDocEntity) xmlAddDocEntity__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAddDocEntity) xmlAddDocEntity __attribute((alias("xmlAddDocEntity__internal_alias")));
 #define xmlAddDocEntity xmlAddDocEntity__internal_alias
+#endif
+#endif
 
+#ifdef bottom_entities
+#undef xmlAddDtdEntity
+extern __typeof (xmlAddDtdEntity) xmlAddDtdEntity __attribute((alias("xmlAddDtdEntity__internal_alias")));
+#else
+#ifndef xmlAddDtdEntity
 extern __typeof (xmlAddDtdEntity) xmlAddDtdEntity__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAddDtdEntity) xmlAddDtdEntity __attribute((alias("xmlAddDtdEntity__internal_alias")));
 #define xmlAddDtdEntity xmlAddDtdEntity__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlAddElementDecl
+extern __typeof (xmlAddElementDecl) xmlAddElementDecl __attribute((alias("xmlAddElementDecl__internal_alias")));
+#else
+#ifndef xmlAddElementDecl
 extern __typeof (xmlAddElementDecl) xmlAddElementDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAddElementDecl) xmlAddElementDecl __attribute((alias("xmlAddElementDecl__internal_alias")));
 #define xmlAddElementDecl xmlAddElementDecl__internal_alias
+#endif
+#endif
 
+#ifdef bottom_encoding
+#undef xmlAddEncodingAlias
+extern __typeof (xmlAddEncodingAlias) xmlAddEncodingAlias __attribute((alias("xmlAddEncodingAlias__internal_alias")));
+#else
+#ifndef xmlAddEncodingAlias
 extern __typeof (xmlAddEncodingAlias) xmlAddEncodingAlias__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAddEncodingAlias) xmlAddEncodingAlias __attribute((alias("xmlAddEncodingAlias__internal_alias")));
 #define xmlAddEncodingAlias xmlAddEncodingAlias__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlAddID
+extern __typeof (xmlAddID) xmlAddID __attribute((alias("xmlAddID__internal_alias")));
+#else
+#ifndef xmlAddID
 extern __typeof (xmlAddID) xmlAddID__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAddID) xmlAddID __attribute((alias("xmlAddID__internal_alias")));
 #define xmlAddID xmlAddID__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlAddNextSibling
+extern __typeof (xmlAddNextSibling) xmlAddNextSibling __attribute((alias("xmlAddNextSibling__internal_alias")));
+#else
+#ifndef xmlAddNextSibling
 extern __typeof (xmlAddNextSibling) xmlAddNextSibling__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAddNextSibling) xmlAddNextSibling __attribute((alias("xmlAddNextSibling__internal_alias")));
 #define xmlAddNextSibling xmlAddNextSibling__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlAddNotationDecl
+extern __typeof (xmlAddNotationDecl) xmlAddNotationDecl __attribute((alias("xmlAddNotationDecl__internal_alias")));
+#else
+#ifndef xmlAddNotationDecl
 extern __typeof (xmlAddNotationDecl) xmlAddNotationDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAddNotationDecl) xmlAddNotationDecl __attribute((alias("xmlAddNotationDecl__internal_alias")));
 #define xmlAddNotationDecl xmlAddNotationDecl__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_tree
+#undef xmlAddPrevSibling
+extern __typeof (xmlAddPrevSibling) xmlAddPrevSibling __attribute((alias("xmlAddPrevSibling__internal_alias")));
+#else
+#ifndef xmlAddPrevSibling
 extern __typeof (xmlAddPrevSibling) xmlAddPrevSibling__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAddPrevSibling) xmlAddPrevSibling __attribute((alias("xmlAddPrevSibling__internal_alias")));
 #define xmlAddPrevSibling xmlAddPrevSibling__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlAddRef
+extern __typeof (xmlAddRef) xmlAddRef __attribute((alias("xmlAddRef__internal_alias")));
+#else
+#ifndef xmlAddRef
 extern __typeof (xmlAddRef) xmlAddRef__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAddRef) xmlAddRef __attribute((alias("xmlAddRef__internal_alias")));
 #define xmlAddRef xmlAddRef__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlAddSibling
+extern __typeof (xmlAddSibling) xmlAddSibling __attribute((alias("xmlAddSibling__internal_alias")));
+#else
+#ifndef xmlAddSibling
 extern __typeof (xmlAddSibling) xmlAddSibling__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAddSibling) xmlAddSibling __attribute((alias("xmlAddSibling__internal_alias")));
 #define xmlAddSibling xmlAddSibling__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlAllocOutputBuffer
+extern __typeof (xmlAllocOutputBuffer) xmlAllocOutputBuffer __attribute((alias("xmlAllocOutputBuffer__internal_alias")));
+#else
+#ifndef xmlAllocOutputBuffer
 extern __typeof (xmlAllocOutputBuffer) xmlAllocOutputBuffer__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAllocOutputBuffer) xmlAllocOutputBuffer __attribute((alias("xmlAllocOutputBuffer__internal_alias")));
 #define xmlAllocOutputBuffer xmlAllocOutputBuffer__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlAllocParserInputBuffer
+extern __typeof (xmlAllocParserInputBuffer) xmlAllocParserInputBuffer __attribute((alias("xmlAllocParserInputBuffer__internal_alias")));
+#else
+#ifndef xmlAllocParserInputBuffer
 extern __typeof (xmlAllocParserInputBuffer) xmlAllocParserInputBuffer__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAllocParserInputBuffer) xmlAllocParserInputBuffer __attribute((alias("xmlAllocParserInputBuffer__internal_alias")));
 #define xmlAllocParserInputBuffer xmlAllocParserInputBuffer__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlAttrSerializeTxtContent
+extern __typeof (xmlAttrSerializeTxtContent) xmlAttrSerializeTxtContent __attribute((alias("xmlAttrSerializeTxtContent__internal_alias")));
+#else
+#ifndef xmlAttrSerializeTxtContent
 extern __typeof (xmlAttrSerializeTxtContent) xmlAttrSerializeTxtContent__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAttrSerializeTxtContent) xmlAttrSerializeTxtContent __attribute((alias("xmlAttrSerializeTxtContent__internal_alias")));
 #define xmlAttrSerializeTxtContent xmlAttrSerializeTxtContent__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlAutomataCompile
+extern __typeof (xmlAutomataCompile) xmlAutomataCompile __attribute((alias("xmlAutomataCompile__internal_alias")));
+#else
+#ifndef xmlAutomataCompile
 extern __typeof (xmlAutomataCompile) xmlAutomataCompile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAutomataCompile) xmlAutomataCompile __attribute((alias("xmlAutomataCompile__internal_alias")));
 #define xmlAutomataCompile xmlAutomataCompile__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlAutomataGetInitState
+extern __typeof (xmlAutomataGetInitState) xmlAutomataGetInitState __attribute((alias("xmlAutomataGetInitState__internal_alias")));
+#else
+#ifndef xmlAutomataGetInitState
 extern __typeof (xmlAutomataGetInitState) xmlAutomataGetInitState__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAutomataGetInitState) xmlAutomataGetInitState __attribute((alias("xmlAutomataGetInitState__internal_alias")));
 #define xmlAutomataGetInitState xmlAutomataGetInitState__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlAutomataIsDeterminist
+extern __typeof (xmlAutomataIsDeterminist) xmlAutomataIsDeterminist __attribute((alias("xmlAutomataIsDeterminist__internal_alias")));
+#else
+#ifndef xmlAutomataIsDeterminist
 extern __typeof (xmlAutomataIsDeterminist) xmlAutomataIsDeterminist__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAutomataIsDeterminist) xmlAutomataIsDeterminist __attribute((alias("xmlAutomataIsDeterminist__internal_alias")));
 #define xmlAutomataIsDeterminist xmlAutomataIsDeterminist__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlAutomataNewAllTrans
+extern __typeof (xmlAutomataNewAllTrans) xmlAutomataNewAllTrans __attribute((alias("xmlAutomataNewAllTrans__internal_alias")));
+#else
+#ifndef xmlAutomataNewAllTrans
 extern __typeof (xmlAutomataNewAllTrans) xmlAutomataNewAllTrans__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAutomataNewAllTrans) xmlAutomataNewAllTrans __attribute((alias("xmlAutomataNewAllTrans__internal_alias")));
 #define xmlAutomataNewAllTrans xmlAutomataNewAllTrans__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlAutomataNewCountTrans
+extern __typeof (xmlAutomataNewCountTrans) xmlAutomataNewCountTrans __attribute((alias("xmlAutomataNewCountTrans__internal_alias")));
+#else
+#ifndef xmlAutomataNewCountTrans
 extern __typeof (xmlAutomataNewCountTrans) xmlAutomataNewCountTrans__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAutomataNewCountTrans) xmlAutomataNewCountTrans __attribute((alias("xmlAutomataNewCountTrans__internal_alias")));
 #define xmlAutomataNewCountTrans xmlAutomataNewCountTrans__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlAutomataNewCountTrans2
+extern __typeof (xmlAutomataNewCountTrans2) xmlAutomataNewCountTrans2 __attribute((alias("xmlAutomataNewCountTrans2__internal_alias")));
+#else
+#ifndef xmlAutomataNewCountTrans2
 extern __typeof (xmlAutomataNewCountTrans2) xmlAutomataNewCountTrans2__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAutomataNewCountTrans2) xmlAutomataNewCountTrans2 __attribute((alias("xmlAutomataNewCountTrans2__internal_alias")));
 #define xmlAutomataNewCountTrans2 xmlAutomataNewCountTrans2__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlAutomataNewCountedTrans
+extern __typeof (xmlAutomataNewCountedTrans) xmlAutomataNewCountedTrans __attribute((alias("xmlAutomataNewCountedTrans__internal_alias")));
+#else
+#ifndef xmlAutomataNewCountedTrans
 extern __typeof (xmlAutomataNewCountedTrans) xmlAutomataNewCountedTrans__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAutomataNewCountedTrans) xmlAutomataNewCountedTrans __attribute((alias("xmlAutomataNewCountedTrans__internal_alias")));
 #define xmlAutomataNewCountedTrans xmlAutomataNewCountedTrans__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlAutomataNewCounter
+extern __typeof (xmlAutomataNewCounter) xmlAutomataNewCounter __attribute((alias("xmlAutomataNewCounter__internal_alias")));
+#else
+#ifndef xmlAutomataNewCounter
 extern __typeof (xmlAutomataNewCounter) xmlAutomataNewCounter__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAutomataNewCounter) xmlAutomataNewCounter __attribute((alias("xmlAutomataNewCounter__internal_alias")));
 #define xmlAutomataNewCounter xmlAutomataNewCounter__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlAutomataNewCounterTrans
+extern __typeof (xmlAutomataNewCounterTrans) xmlAutomataNewCounterTrans __attribute((alias("xmlAutomataNewCounterTrans__internal_alias")));
+#else
+#ifndef xmlAutomataNewCounterTrans
 extern __typeof (xmlAutomataNewCounterTrans) xmlAutomataNewCounterTrans__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAutomataNewCounterTrans) xmlAutomataNewCounterTrans __attribute((alias("xmlAutomataNewCounterTrans__internal_alias")));
 #define xmlAutomataNewCounterTrans xmlAutomataNewCounterTrans__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlAutomataNewEpsilon
+extern __typeof (xmlAutomataNewEpsilon) xmlAutomataNewEpsilon __attribute((alias("xmlAutomataNewEpsilon__internal_alias")));
+#else
+#ifndef xmlAutomataNewEpsilon
 extern __typeof (xmlAutomataNewEpsilon) xmlAutomataNewEpsilon__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAutomataNewEpsilon) xmlAutomataNewEpsilon __attribute((alias("xmlAutomataNewEpsilon__internal_alias")));
 #define xmlAutomataNewEpsilon xmlAutomataNewEpsilon__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlAutomataNewOnceTrans
+extern __typeof (xmlAutomataNewOnceTrans) xmlAutomataNewOnceTrans __attribute((alias("xmlAutomataNewOnceTrans__internal_alias")));
+#else
+#ifndef xmlAutomataNewOnceTrans
 extern __typeof (xmlAutomataNewOnceTrans) xmlAutomataNewOnceTrans__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAutomataNewOnceTrans) xmlAutomataNewOnceTrans __attribute((alias("xmlAutomataNewOnceTrans__internal_alias")));
 #define xmlAutomataNewOnceTrans xmlAutomataNewOnceTrans__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlAutomataNewOnceTrans2
+extern __typeof (xmlAutomataNewOnceTrans2) xmlAutomataNewOnceTrans2 __attribute((alias("xmlAutomataNewOnceTrans2__internal_alias")));
+#else
+#ifndef xmlAutomataNewOnceTrans2
 extern __typeof (xmlAutomataNewOnceTrans2) xmlAutomataNewOnceTrans2__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAutomataNewOnceTrans2) xmlAutomataNewOnceTrans2 __attribute((alias("xmlAutomataNewOnceTrans2__internal_alias")));
 #define xmlAutomataNewOnceTrans2 xmlAutomataNewOnceTrans2__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlAutomataNewState
+extern __typeof (xmlAutomataNewState) xmlAutomataNewState __attribute((alias("xmlAutomataNewState__internal_alias")));
+#else
+#ifndef xmlAutomataNewState
 extern __typeof (xmlAutomataNewState) xmlAutomataNewState__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAutomataNewState) xmlAutomataNewState __attribute((alias("xmlAutomataNewState__internal_alias")));
 #define xmlAutomataNewState xmlAutomataNewState__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlAutomataNewTransition
+extern __typeof (xmlAutomataNewTransition) xmlAutomataNewTransition __attribute((alias("xmlAutomataNewTransition__internal_alias")));
+#else
+#ifndef xmlAutomataNewTransition
 extern __typeof (xmlAutomataNewTransition) xmlAutomataNewTransition__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAutomataNewTransition) xmlAutomataNewTransition __attribute((alias("xmlAutomataNewTransition__internal_alias")));
 #define xmlAutomataNewTransition xmlAutomataNewTransition__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlAutomataNewTransition2
+extern __typeof (xmlAutomataNewTransition2) xmlAutomataNewTransition2 __attribute((alias("xmlAutomataNewTransition2__internal_alias")));
+#else
+#ifndef xmlAutomataNewTransition2
 extern __typeof (xmlAutomataNewTransition2) xmlAutomataNewTransition2__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAutomataNewTransition2) xmlAutomataNewTransition2 __attribute((alias("xmlAutomataNewTransition2__internal_alias")));
 #define xmlAutomataNewTransition2 xmlAutomataNewTransition2__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlAutomataSetFinalState
+extern __typeof (xmlAutomataSetFinalState) xmlAutomataSetFinalState __attribute((alias("xmlAutomataSetFinalState__internal_alias")));
+#else
+#ifndef xmlAutomataSetFinalState
 extern __typeof (xmlAutomataSetFinalState) xmlAutomataSetFinalState__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlAutomataSetFinalState) xmlAutomataSetFinalState __attribute((alias("xmlAutomataSetFinalState__internal_alias")));
 #define xmlAutomataSetFinalState xmlAutomataSetFinalState__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlBoolToText
+extern __typeof (xmlBoolToText) xmlBoolToText __attribute((alias("xmlBoolToText__internal_alias")));
+#else
+#ifndef xmlBoolToText
 extern __typeof (xmlBoolToText) xmlBoolToText__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBoolToText) xmlBoolToText __attribute((alias("xmlBoolToText__internal_alias")));
 #define xmlBoolToText xmlBoolToText__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlBufferAdd
+extern __typeof (xmlBufferAdd) xmlBufferAdd __attribute((alias("xmlBufferAdd__internal_alias")));
+#else
+#ifndef xmlBufferAdd
 extern __typeof (xmlBufferAdd) xmlBufferAdd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBufferAdd) xmlBufferAdd __attribute((alias("xmlBufferAdd__internal_alias")));
 #define xmlBufferAdd xmlBufferAdd__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlBufferAddHead
+extern __typeof (xmlBufferAddHead) xmlBufferAddHead __attribute((alias("xmlBufferAddHead__internal_alias")));
+#else
+#ifndef xmlBufferAddHead
 extern __typeof (xmlBufferAddHead) xmlBufferAddHead__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBufferAddHead) xmlBufferAddHead __attribute((alias("xmlBufferAddHead__internal_alias")));
 #define xmlBufferAddHead xmlBufferAddHead__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlBufferCCat
+extern __typeof (xmlBufferCCat) xmlBufferCCat __attribute((alias("xmlBufferCCat__internal_alias")));
+#else
+#ifndef xmlBufferCCat
 extern __typeof (xmlBufferCCat) xmlBufferCCat__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBufferCCat) xmlBufferCCat __attribute((alias("xmlBufferCCat__internal_alias")));
 #define xmlBufferCCat xmlBufferCCat__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlBufferCat
+extern __typeof (xmlBufferCat) xmlBufferCat __attribute((alias("xmlBufferCat__internal_alias")));
+#else
+#ifndef xmlBufferCat
 extern __typeof (xmlBufferCat) xmlBufferCat__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBufferCat) xmlBufferCat __attribute((alias("xmlBufferCat__internal_alias")));
 #define xmlBufferCat xmlBufferCat__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlBufferContent
+extern __typeof (xmlBufferContent) xmlBufferContent __attribute((alias("xmlBufferContent__internal_alias")));
+#else
+#ifndef xmlBufferContent
 extern __typeof (xmlBufferContent) xmlBufferContent__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBufferContent) xmlBufferContent __attribute((alias("xmlBufferContent__internal_alias")));
 #define xmlBufferContent xmlBufferContent__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlBufferCreate
+extern __typeof (xmlBufferCreate) xmlBufferCreate __attribute((alias("xmlBufferCreate__internal_alias")));
+#else
+#ifndef xmlBufferCreate
 extern __typeof (xmlBufferCreate) xmlBufferCreate__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBufferCreate) xmlBufferCreate __attribute((alias("xmlBufferCreate__internal_alias")));
 #define xmlBufferCreate xmlBufferCreate__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlBufferCreateSize
+extern __typeof (xmlBufferCreateSize) xmlBufferCreateSize __attribute((alias("xmlBufferCreateSize__internal_alias")));
+#else
+#ifndef xmlBufferCreateSize
 extern __typeof (xmlBufferCreateSize) xmlBufferCreateSize__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBufferCreateSize) xmlBufferCreateSize __attribute((alias("xmlBufferCreateSize__internal_alias")));
 #define xmlBufferCreateSize xmlBufferCreateSize__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlBufferCreateStatic
+extern __typeof (xmlBufferCreateStatic) xmlBufferCreateStatic __attribute((alias("xmlBufferCreateStatic__internal_alias")));
+#else
+#ifndef xmlBufferCreateStatic
 extern __typeof (xmlBufferCreateStatic) xmlBufferCreateStatic__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBufferCreateStatic) xmlBufferCreateStatic __attribute((alias("xmlBufferCreateStatic__internal_alias")));
 #define xmlBufferCreateStatic xmlBufferCreateStatic__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlBufferDump
+extern __typeof (xmlBufferDump) xmlBufferDump __attribute((alias("xmlBufferDump__internal_alias")));
+#else
+#ifndef xmlBufferDump
 extern __typeof (xmlBufferDump) xmlBufferDump__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBufferDump) xmlBufferDump __attribute((alias("xmlBufferDump__internal_alias")));
 #define xmlBufferDump xmlBufferDump__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlBufferEmpty
+extern __typeof (xmlBufferEmpty) xmlBufferEmpty __attribute((alias("xmlBufferEmpty__internal_alias")));
+#else
+#ifndef xmlBufferEmpty
 extern __typeof (xmlBufferEmpty) xmlBufferEmpty__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBufferEmpty) xmlBufferEmpty __attribute((alias("xmlBufferEmpty__internal_alias")));
 #define xmlBufferEmpty xmlBufferEmpty__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlBufferFree
+extern __typeof (xmlBufferFree) xmlBufferFree __attribute((alias("xmlBufferFree__internal_alias")));
+#else
+#ifndef xmlBufferFree
 extern __typeof (xmlBufferFree) xmlBufferFree__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBufferFree) xmlBufferFree __attribute((alias("xmlBufferFree__internal_alias")));
 #define xmlBufferFree xmlBufferFree__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlBufferGrow
+extern __typeof (xmlBufferGrow) xmlBufferGrow __attribute((alias("xmlBufferGrow__internal_alias")));
+#else
+#ifndef xmlBufferGrow
 extern __typeof (xmlBufferGrow) xmlBufferGrow__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBufferGrow) xmlBufferGrow __attribute((alias("xmlBufferGrow__internal_alias")));
 #define xmlBufferGrow xmlBufferGrow__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlBufferLength
+extern __typeof (xmlBufferLength) xmlBufferLength __attribute((alias("xmlBufferLength__internal_alias")));
+#else
+#ifndef xmlBufferLength
 extern __typeof (xmlBufferLength) xmlBufferLength__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBufferLength) xmlBufferLength __attribute((alias("xmlBufferLength__internal_alias")));
 #define xmlBufferLength xmlBufferLength__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlBufferResize
+extern __typeof (xmlBufferResize) xmlBufferResize __attribute((alias("xmlBufferResize__internal_alias")));
+#else
+#ifndef xmlBufferResize
 extern __typeof (xmlBufferResize) xmlBufferResize__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBufferResize) xmlBufferResize __attribute((alias("xmlBufferResize__internal_alias")));
 #define xmlBufferResize xmlBufferResize__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlBufferSetAllocationScheme
+extern __typeof (xmlBufferSetAllocationScheme) xmlBufferSetAllocationScheme __attribute((alias("xmlBufferSetAllocationScheme__internal_alias")));
+#else
+#ifndef xmlBufferSetAllocationScheme
 extern __typeof (xmlBufferSetAllocationScheme) xmlBufferSetAllocationScheme__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBufferSetAllocationScheme) xmlBufferSetAllocationScheme __attribute((alias("xmlBufferSetAllocationScheme__internal_alias")));
 #define xmlBufferSetAllocationScheme xmlBufferSetAllocationScheme__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlBufferShrink
+extern __typeof (xmlBufferShrink) xmlBufferShrink __attribute((alias("xmlBufferShrink__internal_alias")));
+#else
+#ifndef xmlBufferShrink
 extern __typeof (xmlBufferShrink) xmlBufferShrink__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBufferShrink) xmlBufferShrink __attribute((alias("xmlBufferShrink__internal_alias")));
 #define xmlBufferShrink xmlBufferShrink__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlBufferWriteCHAR
+extern __typeof (xmlBufferWriteCHAR) xmlBufferWriteCHAR __attribute((alias("xmlBufferWriteCHAR__internal_alias")));
+#else
+#ifndef xmlBufferWriteCHAR
 extern __typeof (xmlBufferWriteCHAR) xmlBufferWriteCHAR__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBufferWriteCHAR) xmlBufferWriteCHAR __attribute((alias("xmlBufferWriteCHAR__internal_alias")));
 #define xmlBufferWriteCHAR xmlBufferWriteCHAR__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlBufferWriteChar
+extern __typeof (xmlBufferWriteChar) xmlBufferWriteChar __attribute((alias("xmlBufferWriteChar__internal_alias")));
+#else
+#ifndef xmlBufferWriteChar
 extern __typeof (xmlBufferWriteChar) xmlBufferWriteChar__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBufferWriteChar) xmlBufferWriteChar __attribute((alias("xmlBufferWriteChar__internal_alias")));
 #define xmlBufferWriteChar xmlBufferWriteChar__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlBufferWriteQuotedString
+extern __typeof (xmlBufferWriteQuotedString) xmlBufferWriteQuotedString __attribute((alias("xmlBufferWriteQuotedString__internal_alias")));
+#else
+#ifndef xmlBufferWriteQuotedString
 extern __typeof (xmlBufferWriteQuotedString) xmlBufferWriteQuotedString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBufferWriteQuotedString) xmlBufferWriteQuotedString __attribute((alias("xmlBufferWriteQuotedString__internal_alias")));
 #define xmlBufferWriteQuotedString xmlBufferWriteQuotedString__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlBuildQName
+extern __typeof (xmlBuildQName) xmlBuildQName __attribute((alias("xmlBuildQName__internal_alias")));
+#else
+#ifndef xmlBuildQName
 extern __typeof (xmlBuildQName) xmlBuildQName__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBuildQName) xmlBuildQName __attribute((alias("xmlBuildQName__internal_alias")));
 #define xmlBuildQName xmlBuildQName__internal_alias
+#endif
+#endif
 
+#ifdef bottom_uri
+#undef xmlBuildRelativeURI
+extern __typeof (xmlBuildRelativeURI) xmlBuildRelativeURI __attribute((alias("xmlBuildRelativeURI__internal_alias")));
+#else
+#ifndef xmlBuildRelativeURI
 extern __typeof (xmlBuildRelativeURI) xmlBuildRelativeURI__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBuildRelativeURI) xmlBuildRelativeURI __attribute((alias("xmlBuildRelativeURI__internal_alias")));
 #define xmlBuildRelativeURI xmlBuildRelativeURI__internal_alias
+#endif
+#endif
 
+#ifdef bottom_uri
+#undef xmlBuildURI
+extern __typeof (xmlBuildURI) xmlBuildURI __attribute((alias("xmlBuildURI__internal_alias")));
+#else
+#ifndef xmlBuildURI
 extern __typeof (xmlBuildURI) xmlBuildURI__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlBuildURI) xmlBuildURI __attribute((alias("xmlBuildURI__internal_alias")));
 #define xmlBuildURI xmlBuildURI__internal_alias
+#endif
+#endif
 
+#ifdef bottom_encoding
+#undef xmlByteConsumed
+extern __typeof (xmlByteConsumed) xmlByteConsumed __attribute((alias("xmlByteConsumed__internal_alias")));
+#else
+#ifndef xmlByteConsumed
 extern __typeof (xmlByteConsumed) xmlByteConsumed__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlByteConsumed) xmlByteConsumed __attribute((alias("xmlByteConsumed__internal_alias")));
 #define xmlByteConsumed xmlByteConsumed__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_C14N_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_c14n
+#undef xmlC14NDocDumpMemory
+extern __typeof (xmlC14NDocDumpMemory) xmlC14NDocDumpMemory __attribute((alias("xmlC14NDocDumpMemory__internal_alias")));
+#else
+#ifndef xmlC14NDocDumpMemory
 extern __typeof (xmlC14NDocDumpMemory) xmlC14NDocDumpMemory__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlC14NDocDumpMemory) xmlC14NDocDumpMemory __attribute((alias("xmlC14NDocDumpMemory__internal_alias")));
 #define xmlC14NDocDumpMemory xmlC14NDocDumpMemory__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_C14N_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_c14n
+#undef xmlC14NDocSave
+extern __typeof (xmlC14NDocSave) xmlC14NDocSave __attribute((alias("xmlC14NDocSave__internal_alias")));
+#else
+#ifndef xmlC14NDocSave
 extern __typeof (xmlC14NDocSave) xmlC14NDocSave__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlC14NDocSave) xmlC14NDocSave __attribute((alias("xmlC14NDocSave__internal_alias")));
 #define xmlC14NDocSave xmlC14NDocSave__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_C14N_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_c14n
+#undef xmlC14NDocSaveTo
+extern __typeof (xmlC14NDocSaveTo) xmlC14NDocSaveTo __attribute((alias("xmlC14NDocSaveTo__internal_alias")));
+#else
+#ifndef xmlC14NDocSaveTo
 extern __typeof (xmlC14NDocSaveTo) xmlC14NDocSaveTo__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlC14NDocSaveTo) xmlC14NDocSaveTo __attribute((alias("xmlC14NDocSaveTo__internal_alias")));
 #define xmlC14NDocSaveTo xmlC14NDocSaveTo__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_C14N_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_c14n
+#undef xmlC14NExecute
+extern __typeof (xmlC14NExecute) xmlC14NExecute __attribute((alias("xmlC14NExecute__internal_alias")));
+#else
+#ifndef xmlC14NExecute
 extern __typeof (xmlC14NExecute) xmlC14NExecute__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlC14NExecute) xmlC14NExecute __attribute((alias("xmlC14NExecute__internal_alias")));
 #define xmlC14NExecute xmlC14NExecute__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_uri
+#undef xmlCanonicPath
+extern __typeof (xmlCanonicPath) xmlCanonicPath __attribute((alias("xmlCanonicPath__internal_alias")));
+#else
+#ifndef xmlCanonicPath
 extern __typeof (xmlCanonicPath) xmlCanonicPath__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCanonicPath) xmlCanonicPath __attribute((alias("xmlCanonicPath__internal_alias")));
 #define xmlCanonicPath xmlCanonicPath__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlCatalogAdd
+extern __typeof (xmlCatalogAdd) xmlCatalogAdd __attribute((alias("xmlCatalogAdd__internal_alias")));
+#else
+#ifndef xmlCatalogAdd
 extern __typeof (xmlCatalogAdd) xmlCatalogAdd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCatalogAdd) xmlCatalogAdd __attribute((alias("xmlCatalogAdd__internal_alias")));
 #define xmlCatalogAdd xmlCatalogAdd__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlCatalogAddLocal
+extern __typeof (xmlCatalogAddLocal) xmlCatalogAddLocal __attribute((alias("xmlCatalogAddLocal__internal_alias")));
+#else
+#ifndef xmlCatalogAddLocal
 extern __typeof (xmlCatalogAddLocal) xmlCatalogAddLocal__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCatalogAddLocal) xmlCatalogAddLocal __attribute((alias("xmlCatalogAddLocal__internal_alias")));
 #define xmlCatalogAddLocal xmlCatalogAddLocal__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlCatalogCleanup
+extern __typeof (xmlCatalogCleanup) xmlCatalogCleanup __attribute((alias("xmlCatalogCleanup__internal_alias")));
+#else
+#ifndef xmlCatalogCleanup
 extern __typeof (xmlCatalogCleanup) xmlCatalogCleanup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCatalogCleanup) xmlCatalogCleanup __attribute((alias("xmlCatalogCleanup__internal_alias")));
 #define xmlCatalogCleanup xmlCatalogCleanup__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlCatalogConvert
+extern __typeof (xmlCatalogConvert) xmlCatalogConvert __attribute((alias("xmlCatalogConvert__internal_alias")));
+#else
+#ifndef xmlCatalogConvert
 extern __typeof (xmlCatalogConvert) xmlCatalogConvert__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCatalogConvert) xmlCatalogConvert __attribute((alias("xmlCatalogConvert__internal_alias")));
 #define xmlCatalogConvert xmlCatalogConvert__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_catalog
+#undef xmlCatalogDump
+extern __typeof (xmlCatalogDump) xmlCatalogDump __attribute((alias("xmlCatalogDump__internal_alias")));
+#else
+#ifndef xmlCatalogDump
 extern __typeof (xmlCatalogDump) xmlCatalogDump__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCatalogDump) xmlCatalogDump __attribute((alias("xmlCatalogDump__internal_alias")));
 #define xmlCatalogDump xmlCatalogDump__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlCatalogFreeLocal
+extern __typeof (xmlCatalogFreeLocal) xmlCatalogFreeLocal __attribute((alias("xmlCatalogFreeLocal__internal_alias")));
+#else
+#ifndef xmlCatalogFreeLocal
 extern __typeof (xmlCatalogFreeLocal) xmlCatalogFreeLocal__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCatalogFreeLocal) xmlCatalogFreeLocal __attribute((alias("xmlCatalogFreeLocal__internal_alias")));
 #define xmlCatalogFreeLocal xmlCatalogFreeLocal__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlCatalogGetDefaults
+extern __typeof (xmlCatalogGetDefaults) xmlCatalogGetDefaults __attribute((alias("xmlCatalogGetDefaults__internal_alias")));
+#else
+#ifndef xmlCatalogGetDefaults
 extern __typeof (xmlCatalogGetDefaults) xmlCatalogGetDefaults__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCatalogGetDefaults) xmlCatalogGetDefaults __attribute((alias("xmlCatalogGetDefaults__internal_alias")));
 #define xmlCatalogGetDefaults xmlCatalogGetDefaults__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlCatalogGetPublic
+extern __typeof (xmlCatalogGetPublic) xmlCatalogGetPublic __attribute((alias("xmlCatalogGetPublic__internal_alias")));
+#else
+#ifndef xmlCatalogGetPublic
 extern __typeof (xmlCatalogGetPublic) xmlCatalogGetPublic__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCatalogGetPublic) xmlCatalogGetPublic __attribute((alias("xmlCatalogGetPublic__internal_alias")));
 #define xmlCatalogGetPublic xmlCatalogGetPublic__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlCatalogGetSystem
+extern __typeof (xmlCatalogGetSystem) xmlCatalogGetSystem __attribute((alias("xmlCatalogGetSystem__internal_alias")));
+#else
+#ifndef xmlCatalogGetSystem
 extern __typeof (xmlCatalogGetSystem) xmlCatalogGetSystem__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCatalogGetSystem) xmlCatalogGetSystem __attribute((alias("xmlCatalogGetSystem__internal_alias")));
 #define xmlCatalogGetSystem xmlCatalogGetSystem__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlCatalogIsEmpty
+extern __typeof (xmlCatalogIsEmpty) xmlCatalogIsEmpty __attribute((alias("xmlCatalogIsEmpty__internal_alias")));
+#else
+#ifndef xmlCatalogIsEmpty
 extern __typeof (xmlCatalogIsEmpty) xmlCatalogIsEmpty__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCatalogIsEmpty) xmlCatalogIsEmpty __attribute((alias("xmlCatalogIsEmpty__internal_alias")));
 #define xmlCatalogIsEmpty xmlCatalogIsEmpty__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlCatalogLocalResolve
+extern __typeof (xmlCatalogLocalResolve) xmlCatalogLocalResolve __attribute((alias("xmlCatalogLocalResolve__internal_alias")));
+#else
+#ifndef xmlCatalogLocalResolve
 extern __typeof (xmlCatalogLocalResolve) xmlCatalogLocalResolve__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCatalogLocalResolve) xmlCatalogLocalResolve __attribute((alias("xmlCatalogLocalResolve__internal_alias")));
 #define xmlCatalogLocalResolve xmlCatalogLocalResolve__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlCatalogLocalResolveURI
+extern __typeof (xmlCatalogLocalResolveURI) xmlCatalogLocalResolveURI __attribute((alias("xmlCatalogLocalResolveURI__internal_alias")));
+#else
+#ifndef xmlCatalogLocalResolveURI
 extern __typeof (xmlCatalogLocalResolveURI) xmlCatalogLocalResolveURI__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCatalogLocalResolveURI) xmlCatalogLocalResolveURI __attribute((alias("xmlCatalogLocalResolveURI__internal_alias")));
 #define xmlCatalogLocalResolveURI xmlCatalogLocalResolveURI__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlCatalogRemove
+extern __typeof (xmlCatalogRemove) xmlCatalogRemove __attribute((alias("xmlCatalogRemove__internal_alias")));
+#else
+#ifndef xmlCatalogRemove
 extern __typeof (xmlCatalogRemove) xmlCatalogRemove__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCatalogRemove) xmlCatalogRemove __attribute((alias("xmlCatalogRemove__internal_alias")));
 #define xmlCatalogRemove xmlCatalogRemove__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlCatalogResolve
+extern __typeof (xmlCatalogResolve) xmlCatalogResolve __attribute((alias("xmlCatalogResolve__internal_alias")));
+#else
+#ifndef xmlCatalogResolve
 extern __typeof (xmlCatalogResolve) xmlCatalogResolve__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCatalogResolve) xmlCatalogResolve __attribute((alias("xmlCatalogResolve__internal_alias")));
 #define xmlCatalogResolve xmlCatalogResolve__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlCatalogResolvePublic
+extern __typeof (xmlCatalogResolvePublic) xmlCatalogResolvePublic __attribute((alias("xmlCatalogResolvePublic__internal_alias")));
+#else
+#ifndef xmlCatalogResolvePublic
 extern __typeof (xmlCatalogResolvePublic) xmlCatalogResolvePublic__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCatalogResolvePublic) xmlCatalogResolvePublic __attribute((alias("xmlCatalogResolvePublic__internal_alias")));
 #define xmlCatalogResolvePublic xmlCatalogResolvePublic__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlCatalogResolveSystem
+extern __typeof (xmlCatalogResolveSystem) xmlCatalogResolveSystem __attribute((alias("xmlCatalogResolveSystem__internal_alias")));
+#else
+#ifndef xmlCatalogResolveSystem
 extern __typeof (xmlCatalogResolveSystem) xmlCatalogResolveSystem__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCatalogResolveSystem) xmlCatalogResolveSystem __attribute((alias("xmlCatalogResolveSystem__internal_alias")));
 #define xmlCatalogResolveSystem xmlCatalogResolveSystem__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlCatalogResolveURI
+extern __typeof (xmlCatalogResolveURI) xmlCatalogResolveURI __attribute((alias("xmlCatalogResolveURI__internal_alias")));
+#else
+#ifndef xmlCatalogResolveURI
 extern __typeof (xmlCatalogResolveURI) xmlCatalogResolveURI__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCatalogResolveURI) xmlCatalogResolveURI __attribute((alias("xmlCatalogResolveURI__internal_alias")));
 #define xmlCatalogResolveURI xmlCatalogResolveURI__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlCatalogSetDebug
+extern __typeof (xmlCatalogSetDebug) xmlCatalogSetDebug __attribute((alias("xmlCatalogSetDebug__internal_alias")));
+#else
+#ifndef xmlCatalogSetDebug
 extern __typeof (xmlCatalogSetDebug) xmlCatalogSetDebug__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCatalogSetDebug) xmlCatalogSetDebug __attribute((alias("xmlCatalogSetDebug__internal_alias")));
 #define xmlCatalogSetDebug xmlCatalogSetDebug__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlCatalogSetDefaultPrefer
+extern __typeof (xmlCatalogSetDefaultPrefer) xmlCatalogSetDefaultPrefer __attribute((alias("xmlCatalogSetDefaultPrefer__internal_alias")));
+#else
+#ifndef xmlCatalogSetDefaultPrefer
 extern __typeof (xmlCatalogSetDefaultPrefer) xmlCatalogSetDefaultPrefer__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCatalogSetDefaultPrefer) xmlCatalogSetDefaultPrefer __attribute((alias("xmlCatalogSetDefaultPrefer__internal_alias")));
 #define xmlCatalogSetDefaultPrefer xmlCatalogSetDefaultPrefer__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlCatalogSetDefaults
+extern __typeof (xmlCatalogSetDefaults) xmlCatalogSetDefaults __attribute((alias("xmlCatalogSetDefaults__internal_alias")));
+#else
+#ifndef xmlCatalogSetDefaults
 extern __typeof (xmlCatalogSetDefaults) xmlCatalogSetDefaults__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCatalogSetDefaults) xmlCatalogSetDefaults __attribute((alias("xmlCatalogSetDefaults__internal_alias")));
 #define xmlCatalogSetDefaults xmlCatalogSetDefaults__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_encoding
+#undef xmlCharEncCloseFunc
+extern __typeof (xmlCharEncCloseFunc) xmlCharEncCloseFunc __attribute((alias("xmlCharEncCloseFunc__internal_alias")));
+#else
+#ifndef xmlCharEncCloseFunc
 extern __typeof (xmlCharEncCloseFunc) xmlCharEncCloseFunc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCharEncCloseFunc) xmlCharEncCloseFunc __attribute((alias("xmlCharEncCloseFunc__internal_alias")));
 #define xmlCharEncCloseFunc xmlCharEncCloseFunc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_encoding
+#undef xmlCharEncFirstLine
+extern __typeof (xmlCharEncFirstLine) xmlCharEncFirstLine __attribute((alias("xmlCharEncFirstLine__internal_alias")));
+#else
+#ifndef xmlCharEncFirstLine
 extern __typeof (xmlCharEncFirstLine) xmlCharEncFirstLine__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCharEncFirstLine) xmlCharEncFirstLine __attribute((alias("xmlCharEncFirstLine__internal_alias")));
 #define xmlCharEncFirstLine xmlCharEncFirstLine__internal_alias
+#endif
+#endif
 
+#ifdef bottom_encoding
+#undef xmlCharEncInFunc
+extern __typeof (xmlCharEncInFunc) xmlCharEncInFunc __attribute((alias("xmlCharEncInFunc__internal_alias")));
+#else
+#ifndef xmlCharEncInFunc
 extern __typeof (xmlCharEncInFunc) xmlCharEncInFunc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCharEncInFunc) xmlCharEncInFunc __attribute((alias("xmlCharEncInFunc__internal_alias")));
 #define xmlCharEncInFunc xmlCharEncInFunc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_encoding
+#undef xmlCharEncOutFunc
+extern __typeof (xmlCharEncOutFunc) xmlCharEncOutFunc __attribute((alias("xmlCharEncOutFunc__internal_alias")));
+#else
+#ifndef xmlCharEncOutFunc
 extern __typeof (xmlCharEncOutFunc) xmlCharEncOutFunc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCharEncOutFunc) xmlCharEncOutFunc __attribute((alias("xmlCharEncOutFunc__internal_alias")));
 #define xmlCharEncOutFunc xmlCharEncOutFunc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_chvalid
+#undef xmlCharInRange
+extern __typeof (xmlCharInRange) xmlCharInRange __attribute((alias("xmlCharInRange__internal_alias")));
+#else
+#ifndef xmlCharInRange
 extern __typeof (xmlCharInRange) xmlCharInRange__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCharInRange) xmlCharInRange __attribute((alias("xmlCharInRange__internal_alias")));
 #define xmlCharInRange xmlCharInRange__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlCharStrdup
+extern __typeof (xmlCharStrdup) xmlCharStrdup __attribute((alias("xmlCharStrdup__internal_alias")));
+#else
+#ifndef xmlCharStrdup
 extern __typeof (xmlCharStrdup) xmlCharStrdup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCharStrdup) xmlCharStrdup __attribute((alias("xmlCharStrdup__internal_alias")));
 #define xmlCharStrdup xmlCharStrdup__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlCharStrndup
+extern __typeof (xmlCharStrndup) xmlCharStrndup __attribute((alias("xmlCharStrndup__internal_alias")));
+#else
+#ifndef xmlCharStrndup
 extern __typeof (xmlCharStrndup) xmlCharStrndup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCharStrndup) xmlCharStrndup __attribute((alias("xmlCharStrndup__internal_alias")));
 #define xmlCharStrndup xmlCharStrndup__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlCheckFilename
+extern __typeof (xmlCheckFilename) xmlCheckFilename __attribute((alias("xmlCheckFilename__internal_alias")));
+#else
+#ifndef xmlCheckFilename
 extern __typeof (xmlCheckFilename) xmlCheckFilename__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCheckFilename) xmlCheckFilename __attribute((alias("xmlCheckFilename__internal_alias")));
 #define xmlCheckFilename xmlCheckFilename__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlCheckHTTPInput
+extern __typeof (xmlCheckHTTPInput) xmlCheckHTTPInput __attribute((alias("xmlCheckHTTPInput__internal_alias")));
+#else
+#ifndef xmlCheckHTTPInput
 extern __typeof (xmlCheckHTTPInput) xmlCheckHTTPInput__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCheckHTTPInput) xmlCheckHTTPInput __attribute((alias("xmlCheckHTTPInput__internal_alias")));
 #define xmlCheckHTTPInput xmlCheckHTTPInput__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlCheckLanguageID
+extern __typeof (xmlCheckLanguageID) xmlCheckLanguageID __attribute((alias("xmlCheckLanguageID__internal_alias")));
+#else
+#ifndef xmlCheckLanguageID
 extern __typeof (xmlCheckLanguageID) xmlCheckLanguageID__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCheckLanguageID) xmlCheckLanguageID __attribute((alias("xmlCheckLanguageID__internal_alias")));
 #define xmlCheckLanguageID xmlCheckLanguageID__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlCheckUTF8
+extern __typeof (xmlCheckUTF8) xmlCheckUTF8 __attribute((alias("xmlCheckUTF8__internal_alias")));
+#else
+#ifndef xmlCheckUTF8
 extern __typeof (xmlCheckUTF8) xmlCheckUTF8__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCheckUTF8) xmlCheckUTF8 __attribute((alias("xmlCheckUTF8__internal_alias")));
 #define xmlCheckUTF8 xmlCheckUTF8__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlCheckVersion
+extern __typeof (xmlCheckVersion) xmlCheckVersion __attribute((alias("xmlCheckVersion__internal_alias")));
+#else
+#ifndef xmlCheckVersion
 extern __typeof (xmlCheckVersion) xmlCheckVersion__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCheckVersion) xmlCheckVersion __attribute((alias("xmlCheckVersion__internal_alias")));
 #define xmlCheckVersion xmlCheckVersion__internal_alias
+#endif
+#endif
 
+#ifdef bottom_encoding
+#undef xmlCleanupCharEncodingHandlers
+extern __typeof (xmlCleanupCharEncodingHandlers) xmlCleanupCharEncodingHandlers __attribute((alias("xmlCleanupCharEncodingHandlers__internal_alias")));
+#else
+#ifndef xmlCleanupCharEncodingHandlers
 extern __typeof (xmlCleanupCharEncodingHandlers) xmlCleanupCharEncodingHandlers__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCleanupCharEncodingHandlers) xmlCleanupCharEncodingHandlers __attribute((alias("xmlCleanupCharEncodingHandlers__internal_alias")));
 #define xmlCleanupCharEncodingHandlers xmlCleanupCharEncodingHandlers__internal_alias
+#endif
+#endif
 
+#ifdef bottom_encoding
+#undef xmlCleanupEncodingAliases
+extern __typeof (xmlCleanupEncodingAliases) xmlCleanupEncodingAliases __attribute((alias("xmlCleanupEncodingAliases__internal_alias")));
+#else
+#ifndef xmlCleanupEncodingAliases
 extern __typeof (xmlCleanupEncodingAliases) xmlCleanupEncodingAliases__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCleanupEncodingAliases) xmlCleanupEncodingAliases __attribute((alias("xmlCleanupEncodingAliases__internal_alias")));
 #define xmlCleanupEncodingAliases xmlCleanupEncodingAliases__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlCleanupGlobals
+extern __typeof (xmlCleanupGlobals) xmlCleanupGlobals __attribute((alias("xmlCleanupGlobals__internal_alias")));
+#else
+#ifndef xmlCleanupGlobals
 extern __typeof (xmlCleanupGlobals) xmlCleanupGlobals__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCleanupGlobals) xmlCleanupGlobals __attribute((alias("xmlCleanupGlobals__internal_alias")));
 #define xmlCleanupGlobals xmlCleanupGlobals__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlCleanupInputCallbacks
+extern __typeof (xmlCleanupInputCallbacks) xmlCleanupInputCallbacks __attribute((alias("xmlCleanupInputCallbacks__internal_alias")));
+#else
+#ifndef xmlCleanupInputCallbacks
 extern __typeof (xmlCleanupInputCallbacks) xmlCleanupInputCallbacks__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCleanupInputCallbacks) xmlCleanupInputCallbacks __attribute((alias("xmlCleanupInputCallbacks__internal_alias")));
 #define xmlCleanupInputCallbacks xmlCleanupInputCallbacks__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlmemory
+#undef xmlCleanupMemory
+extern __typeof (xmlCleanupMemory) xmlCleanupMemory __attribute((alias("xmlCleanupMemory__internal_alias")));
+#else
+#ifndef xmlCleanupMemory
 extern __typeof (xmlCleanupMemory) xmlCleanupMemory__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCleanupMemory) xmlCleanupMemory __attribute((alias("xmlCleanupMemory__internal_alias")));
 #define xmlCleanupMemory xmlCleanupMemory__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlCleanupOutputCallbacks
+extern __typeof (xmlCleanupOutputCallbacks) xmlCleanupOutputCallbacks __attribute((alias("xmlCleanupOutputCallbacks__internal_alias")));
+#else
+#ifndef xmlCleanupOutputCallbacks
 extern __typeof (xmlCleanupOutputCallbacks) xmlCleanupOutputCallbacks__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCleanupOutputCallbacks) xmlCleanupOutputCallbacks __attribute((alias("xmlCleanupOutputCallbacks__internal_alias")));
 #define xmlCleanupOutputCallbacks xmlCleanupOutputCallbacks__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlCleanupParser
+extern __typeof (xmlCleanupParser) xmlCleanupParser __attribute((alias("xmlCleanupParser__internal_alias")));
+#else
+#ifndef xmlCleanupParser
 extern __typeof (xmlCleanupParser) xmlCleanupParser__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCleanupParser) xmlCleanupParser __attribute((alias("xmlCleanupParser__internal_alias")));
 #define xmlCleanupParser xmlCleanupParser__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_LEGACY_ENABLED)
+#ifdef bottom_legacy
+#undef xmlCleanupPredefinedEntities
+extern __typeof (xmlCleanupPredefinedEntities) xmlCleanupPredefinedEntities __attribute((alias("xmlCleanupPredefinedEntities__internal_alias")));
+#else
+#ifndef xmlCleanupPredefinedEntities
 extern __typeof (xmlCleanupPredefinedEntities) xmlCleanupPredefinedEntities__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCleanupPredefinedEntities) xmlCleanupPredefinedEntities __attribute((alias("xmlCleanupPredefinedEntities__internal_alias")));
 #define xmlCleanupPredefinedEntities xmlCleanupPredefinedEntities__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_threads
+#undef xmlCleanupThreads
+extern __typeof (xmlCleanupThreads) xmlCleanupThreads __attribute((alias("xmlCleanupThreads__internal_alias")));
+#else
+#ifndef xmlCleanupThreads
 extern __typeof (xmlCleanupThreads) xmlCleanupThreads__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCleanupThreads) xmlCleanupThreads __attribute((alias("xmlCleanupThreads__internal_alias")));
 #define xmlCleanupThreads xmlCleanupThreads__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlClearNodeInfoSeq
+extern __typeof (xmlClearNodeInfoSeq) xmlClearNodeInfoSeq __attribute((alias("xmlClearNodeInfoSeq__internal_alias")));
+#else
+#ifndef xmlClearNodeInfoSeq
 extern __typeof (xmlClearNodeInfoSeq) xmlClearNodeInfoSeq__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlClearNodeInfoSeq) xmlClearNodeInfoSeq __attribute((alias("xmlClearNodeInfoSeq__internal_alias")));
 #define xmlClearNodeInfoSeq xmlClearNodeInfoSeq__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlClearParserCtxt
+extern __typeof (xmlClearParserCtxt) xmlClearParserCtxt __attribute((alias("xmlClearParserCtxt__internal_alias")));
+#else
+#ifndef xmlClearParserCtxt
 extern __typeof (xmlClearParserCtxt) xmlClearParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlClearParserCtxt) xmlClearParserCtxt __attribute((alias("xmlClearParserCtxt__internal_alias")));
 #define xmlClearParserCtxt xmlClearParserCtxt__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlConvertSGMLCatalog
+extern __typeof (xmlConvertSGMLCatalog) xmlConvertSGMLCatalog __attribute((alias("xmlConvertSGMLCatalog__internal_alias")));
+#else
+#ifndef xmlConvertSGMLCatalog
 extern __typeof (xmlConvertSGMLCatalog) xmlConvertSGMLCatalog__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlConvertSGMLCatalog) xmlConvertSGMLCatalog __attribute((alias("xmlConvertSGMLCatalog__internal_alias")));
 #define xmlConvertSGMLCatalog xmlConvertSGMLCatalog__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_valid
+#undef xmlCopyAttributeTable
+extern __typeof (xmlCopyAttributeTable) xmlCopyAttributeTable __attribute((alias("xmlCopyAttributeTable__internal_alias")));
+#else
+#ifndef xmlCopyAttributeTable
 extern __typeof (xmlCopyAttributeTable) xmlCopyAttributeTable__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCopyAttributeTable) xmlCopyAttributeTable __attribute((alias("xmlCopyAttributeTable__internal_alias")));
 #define xmlCopyAttributeTable xmlCopyAttributeTable__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlCopyChar
+extern __typeof (xmlCopyChar) xmlCopyChar __attribute((alias("xmlCopyChar__internal_alias")));
+#else
+#ifndef xmlCopyChar
 extern __typeof (xmlCopyChar) xmlCopyChar__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCopyChar) xmlCopyChar __attribute((alias("xmlCopyChar__internal_alias")));
 #define xmlCopyChar xmlCopyChar__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlCopyCharMultiByte
+extern __typeof (xmlCopyCharMultiByte) xmlCopyCharMultiByte __attribute((alias("xmlCopyCharMultiByte__internal_alias")));
+#else
+#ifndef xmlCopyCharMultiByte
 extern __typeof (xmlCopyCharMultiByte) xmlCopyCharMultiByte__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCopyCharMultiByte) xmlCopyCharMultiByte __attribute((alias("xmlCopyCharMultiByte__internal_alias")));
 #define xmlCopyCharMultiByte xmlCopyCharMultiByte__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_tree
+#undef xmlCopyDoc
+extern __typeof (xmlCopyDoc) xmlCopyDoc __attribute((alias("xmlCopyDoc__internal_alias")));
+#else
+#ifndef xmlCopyDoc
 extern __typeof (xmlCopyDoc) xmlCopyDoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCopyDoc) xmlCopyDoc __attribute((alias("xmlCopyDoc__internal_alias")));
 #define xmlCopyDoc xmlCopyDoc__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlCopyDocElementContent
+extern __typeof (xmlCopyDocElementContent) xmlCopyDocElementContent __attribute((alias("xmlCopyDocElementContent__internal_alias")));
+#else
+#ifndef xmlCopyDocElementContent
 extern __typeof (xmlCopyDocElementContent) xmlCopyDocElementContent__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCopyDocElementContent) xmlCopyDocElementContent __attribute((alias("xmlCopyDocElementContent__internal_alias")));
 #define xmlCopyDocElementContent xmlCopyDocElementContent__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_tree
+#undef xmlCopyDtd
+extern __typeof (xmlCopyDtd) xmlCopyDtd __attribute((alias("xmlCopyDtd__internal_alias")));
+#else
+#ifndef xmlCopyDtd
 extern __typeof (xmlCopyDtd) xmlCopyDtd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCopyDtd) xmlCopyDtd __attribute((alias("xmlCopyDtd__internal_alias")));
 #define xmlCopyDtd xmlCopyDtd__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlCopyElementContent
+extern __typeof (xmlCopyElementContent) xmlCopyElementContent __attribute((alias("xmlCopyElementContent__internal_alias")));
+#else
+#ifndef xmlCopyElementContent
 extern __typeof (xmlCopyElementContent) xmlCopyElementContent__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCopyElementContent) xmlCopyElementContent __attribute((alias("xmlCopyElementContent__internal_alias")));
 #define xmlCopyElementContent xmlCopyElementContent__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_valid
+#undef xmlCopyElementTable
+extern __typeof (xmlCopyElementTable) xmlCopyElementTable __attribute((alias("xmlCopyElementTable__internal_alias")));
+#else
+#ifndef xmlCopyElementTable
 extern __typeof (xmlCopyElementTable) xmlCopyElementTable__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCopyElementTable) xmlCopyElementTable __attribute((alias("xmlCopyElementTable__internal_alias")));
 #define xmlCopyElementTable xmlCopyElementTable__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_entities
+#undef xmlCopyEntitiesTable
+extern __typeof (xmlCopyEntitiesTable) xmlCopyEntitiesTable __attribute((alias("xmlCopyEntitiesTable__internal_alias")));
+#else
+#ifndef xmlCopyEntitiesTable
 extern __typeof (xmlCopyEntitiesTable) xmlCopyEntitiesTable__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCopyEntitiesTable) xmlCopyEntitiesTable __attribute((alias("xmlCopyEntitiesTable__internal_alias")));
 #define xmlCopyEntitiesTable xmlCopyEntitiesTable__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_valid
+#undef xmlCopyEnumeration
+extern __typeof (xmlCopyEnumeration) xmlCopyEnumeration __attribute((alias("xmlCopyEnumeration__internal_alias")));
+#else
+#ifndef xmlCopyEnumeration
 extern __typeof (xmlCopyEnumeration) xmlCopyEnumeration__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCopyEnumeration) xmlCopyEnumeration __attribute((alias("xmlCopyEnumeration__internal_alias")));
 #define xmlCopyEnumeration xmlCopyEnumeration__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_error
+#undef xmlCopyError
+extern __typeof (xmlCopyError) xmlCopyError __attribute((alias("xmlCopyError__internal_alias")));
+#else
+#ifndef xmlCopyError
 extern __typeof (xmlCopyError) xmlCopyError__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCopyError) xmlCopyError __attribute((alias("xmlCopyError__internal_alias")));
 #define xmlCopyError xmlCopyError__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlCopyNamespace
+extern __typeof (xmlCopyNamespace) xmlCopyNamespace __attribute((alias("xmlCopyNamespace__internal_alias")));
+#else
+#ifndef xmlCopyNamespace
 extern __typeof (xmlCopyNamespace) xmlCopyNamespace__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCopyNamespace) xmlCopyNamespace __attribute((alias("xmlCopyNamespace__internal_alias")));
 #define xmlCopyNamespace xmlCopyNamespace__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlCopyNamespaceList
+extern __typeof (xmlCopyNamespaceList) xmlCopyNamespaceList __attribute((alias("xmlCopyNamespaceList__internal_alias")));
+#else
+#ifndef xmlCopyNamespaceList
 extern __typeof (xmlCopyNamespaceList) xmlCopyNamespaceList__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCopyNamespaceList) xmlCopyNamespaceList __attribute((alias("xmlCopyNamespaceList__internal_alias")));
 #define xmlCopyNamespaceList xmlCopyNamespaceList__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlCopyNode
+extern __typeof (xmlCopyNode) xmlCopyNode __attribute((alias("xmlCopyNode__internal_alias")));
+#else
+#ifndef xmlCopyNode
 extern __typeof (xmlCopyNode) xmlCopyNode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCopyNode) xmlCopyNode __attribute((alias("xmlCopyNode__internal_alias")));
 #define xmlCopyNode xmlCopyNode__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlCopyNodeList
+extern __typeof (xmlCopyNodeList) xmlCopyNodeList __attribute((alias("xmlCopyNodeList__internal_alias")));
+#else
+#ifndef xmlCopyNodeList
 extern __typeof (xmlCopyNodeList) xmlCopyNodeList__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCopyNodeList) xmlCopyNodeList __attribute((alias("xmlCopyNodeList__internal_alias")));
 #define xmlCopyNodeList xmlCopyNodeList__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_valid
+#undef xmlCopyNotationTable
+extern __typeof (xmlCopyNotationTable) xmlCopyNotationTable __attribute((alias("xmlCopyNotationTable__internal_alias")));
+#else
+#ifndef xmlCopyNotationTable
 extern __typeof (xmlCopyNotationTable) xmlCopyNotationTable__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCopyNotationTable) xmlCopyNotationTable __attribute((alias("xmlCopyNotationTable__internal_alias")));
 #define xmlCopyNotationTable xmlCopyNotationTable__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlCopyProp
+extern __typeof (xmlCopyProp) xmlCopyProp __attribute((alias("xmlCopyProp__internal_alias")));
+#else
+#ifndef xmlCopyProp
 extern __typeof (xmlCopyProp) xmlCopyProp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCopyProp) xmlCopyProp __attribute((alias("xmlCopyProp__internal_alias")));
 #define xmlCopyProp xmlCopyProp__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlCopyPropList
+extern __typeof (xmlCopyPropList) xmlCopyPropList __attribute((alias("xmlCopyPropList__internal_alias")));
+#else
+#ifndef xmlCopyPropList
 extern __typeof (xmlCopyPropList) xmlCopyPropList__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCopyPropList) xmlCopyPropList __attribute((alias("xmlCopyPropList__internal_alias")));
 #define xmlCopyPropList xmlCopyPropList__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlCreateDocParserCtxt
+extern __typeof (xmlCreateDocParserCtxt) xmlCreateDocParserCtxt __attribute((alias("xmlCreateDocParserCtxt__internal_alias")));
+#else
+#ifndef xmlCreateDocParserCtxt
 extern __typeof (xmlCreateDocParserCtxt) xmlCreateDocParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCreateDocParserCtxt) xmlCreateDocParserCtxt __attribute((alias("xmlCreateDocParserCtxt__internal_alias")));
 #define xmlCreateDocParserCtxt xmlCreateDocParserCtxt__internal_alias
+#endif
+#endif
 
+#ifdef bottom_entities
+#undef xmlCreateEntitiesTable
+extern __typeof (xmlCreateEntitiesTable) xmlCreateEntitiesTable __attribute((alias("xmlCreateEntitiesTable__internal_alias")));
+#else
+#ifndef xmlCreateEntitiesTable
 extern __typeof (xmlCreateEntitiesTable) xmlCreateEntitiesTable__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCreateEntitiesTable) xmlCreateEntitiesTable __attribute((alias("xmlCreateEntitiesTable__internal_alias")));
 #define xmlCreateEntitiesTable xmlCreateEntitiesTable__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlCreateEntityParserCtxt
+extern __typeof (xmlCreateEntityParserCtxt) xmlCreateEntityParserCtxt __attribute((alias("xmlCreateEntityParserCtxt__internal_alias")));
+#else
+#ifndef xmlCreateEntityParserCtxt
 extern __typeof (xmlCreateEntityParserCtxt) xmlCreateEntityParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCreateEntityParserCtxt) xmlCreateEntityParserCtxt __attribute((alias("xmlCreateEntityParserCtxt__internal_alias")));
 #define xmlCreateEntityParserCtxt xmlCreateEntityParserCtxt__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlCreateEnumeration
+extern __typeof (xmlCreateEnumeration) xmlCreateEnumeration __attribute((alias("xmlCreateEnumeration__internal_alias")));
+#else
+#ifndef xmlCreateEnumeration
 extern __typeof (xmlCreateEnumeration) xmlCreateEnumeration__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCreateEnumeration) xmlCreateEnumeration __attribute((alias("xmlCreateEnumeration__internal_alias")));
 #define xmlCreateEnumeration xmlCreateEnumeration__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlCreateFileParserCtxt
+extern __typeof (xmlCreateFileParserCtxt) xmlCreateFileParserCtxt __attribute((alias("xmlCreateFileParserCtxt__internal_alias")));
+#else
+#ifndef xmlCreateFileParserCtxt
 extern __typeof (xmlCreateFileParserCtxt) xmlCreateFileParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCreateFileParserCtxt) xmlCreateFileParserCtxt __attribute((alias("xmlCreateFileParserCtxt__internal_alias")));
 #define xmlCreateFileParserCtxt xmlCreateFileParserCtxt__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlCreateIOParserCtxt
+extern __typeof (xmlCreateIOParserCtxt) xmlCreateIOParserCtxt __attribute((alias("xmlCreateIOParserCtxt__internal_alias")));
+#else
+#ifndef xmlCreateIOParserCtxt
 extern __typeof (xmlCreateIOParserCtxt) xmlCreateIOParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCreateIOParserCtxt) xmlCreateIOParserCtxt __attribute((alias("xmlCreateIOParserCtxt__internal_alias")));
 #define xmlCreateIOParserCtxt xmlCreateIOParserCtxt__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlCreateIntSubset
+extern __typeof (xmlCreateIntSubset) xmlCreateIntSubset __attribute((alias("xmlCreateIntSubset__internal_alias")));
+#else
+#ifndef xmlCreateIntSubset
 extern __typeof (xmlCreateIntSubset) xmlCreateIntSubset__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCreateIntSubset) xmlCreateIntSubset __attribute((alias("xmlCreateIntSubset__internal_alias")));
 #define xmlCreateIntSubset xmlCreateIntSubset__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlCreateMemoryParserCtxt
+extern __typeof (xmlCreateMemoryParserCtxt) xmlCreateMemoryParserCtxt __attribute((alias("xmlCreateMemoryParserCtxt__internal_alias")));
+#else
+#ifndef xmlCreateMemoryParserCtxt
 extern __typeof (xmlCreateMemoryParserCtxt) xmlCreateMemoryParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCreateMemoryParserCtxt) xmlCreateMemoryParserCtxt __attribute((alias("xmlCreateMemoryParserCtxt__internal_alias")));
 #define xmlCreateMemoryParserCtxt xmlCreateMemoryParserCtxt__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_PUSH_ENABLED)
+#ifdef bottom_parser
+#undef xmlCreatePushParserCtxt
+extern __typeof (xmlCreatePushParserCtxt) xmlCreatePushParserCtxt __attribute((alias("xmlCreatePushParserCtxt__internal_alias")));
+#else
+#ifndef xmlCreatePushParserCtxt
 extern __typeof (xmlCreatePushParserCtxt) xmlCreatePushParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCreatePushParserCtxt) xmlCreatePushParserCtxt __attribute((alias("xmlCreatePushParserCtxt__internal_alias")));
 #define xmlCreatePushParserCtxt xmlCreatePushParserCtxt__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_uri
+#undef xmlCreateURI
+extern __typeof (xmlCreateURI) xmlCreateURI __attribute((alias("xmlCreateURI__internal_alias")));
+#else
+#ifndef xmlCreateURI
 extern __typeof (xmlCreateURI) xmlCreateURI__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCreateURI) xmlCreateURI __attribute((alias("xmlCreateURI__internal_alias")));
 #define xmlCreateURI xmlCreateURI__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlCreateURLParserCtxt
+extern __typeof (xmlCreateURLParserCtxt) xmlCreateURLParserCtxt __attribute((alias("xmlCreateURLParserCtxt__internal_alias")));
+#else
+#ifndef xmlCreateURLParserCtxt
 extern __typeof (xmlCreateURLParserCtxt) xmlCreateURLParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCreateURLParserCtxt) xmlCreateURLParserCtxt __attribute((alias("xmlCreateURLParserCtxt__internal_alias")));
 #define xmlCreateURLParserCtxt xmlCreateURLParserCtxt__internal_alias
+#endif
+#endif
 
+#ifdef bottom_error
+#undef xmlCtxtGetLastError
+extern __typeof (xmlCtxtGetLastError) xmlCtxtGetLastError __attribute((alias("xmlCtxtGetLastError__internal_alias")));
+#else
+#ifndef xmlCtxtGetLastError
 extern __typeof (xmlCtxtGetLastError) xmlCtxtGetLastError__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCtxtGetLastError) xmlCtxtGetLastError __attribute((alias("xmlCtxtGetLastError__internal_alias")));
 #define xmlCtxtGetLastError xmlCtxtGetLastError__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlCtxtReadDoc
+extern __typeof (xmlCtxtReadDoc) xmlCtxtReadDoc __attribute((alias("xmlCtxtReadDoc__internal_alias")));
+#else
+#ifndef xmlCtxtReadDoc
 extern __typeof (xmlCtxtReadDoc) xmlCtxtReadDoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCtxtReadDoc) xmlCtxtReadDoc __attribute((alias("xmlCtxtReadDoc__internal_alias")));
 #define xmlCtxtReadDoc xmlCtxtReadDoc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlCtxtReadFd
+extern __typeof (xmlCtxtReadFd) xmlCtxtReadFd __attribute((alias("xmlCtxtReadFd__internal_alias")));
+#else
+#ifndef xmlCtxtReadFd
 extern __typeof (xmlCtxtReadFd) xmlCtxtReadFd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCtxtReadFd) xmlCtxtReadFd __attribute((alias("xmlCtxtReadFd__internal_alias")));
 #define xmlCtxtReadFd xmlCtxtReadFd__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlCtxtReadFile
+extern __typeof (xmlCtxtReadFile) xmlCtxtReadFile __attribute((alias("xmlCtxtReadFile__internal_alias")));
+#else
+#ifndef xmlCtxtReadFile
 extern __typeof (xmlCtxtReadFile) xmlCtxtReadFile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCtxtReadFile) xmlCtxtReadFile __attribute((alias("xmlCtxtReadFile__internal_alias")));
 #define xmlCtxtReadFile xmlCtxtReadFile__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlCtxtReadIO
+extern __typeof (xmlCtxtReadIO) xmlCtxtReadIO __attribute((alias("xmlCtxtReadIO__internal_alias")));
+#else
+#ifndef xmlCtxtReadIO
 extern __typeof (xmlCtxtReadIO) xmlCtxtReadIO__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCtxtReadIO) xmlCtxtReadIO __attribute((alias("xmlCtxtReadIO__internal_alias")));
 #define xmlCtxtReadIO xmlCtxtReadIO__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlCtxtReadMemory
+extern __typeof (xmlCtxtReadMemory) xmlCtxtReadMemory __attribute((alias("xmlCtxtReadMemory__internal_alias")));
+#else
+#ifndef xmlCtxtReadMemory
 extern __typeof (xmlCtxtReadMemory) xmlCtxtReadMemory__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCtxtReadMemory) xmlCtxtReadMemory __attribute((alias("xmlCtxtReadMemory__internal_alias")));
 #define xmlCtxtReadMemory xmlCtxtReadMemory__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlCtxtReset
+extern __typeof (xmlCtxtReset) xmlCtxtReset __attribute((alias("xmlCtxtReset__internal_alias")));
+#else
+#ifndef xmlCtxtReset
 extern __typeof (xmlCtxtReset) xmlCtxtReset__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCtxtReset) xmlCtxtReset __attribute((alias("xmlCtxtReset__internal_alias")));
 #define xmlCtxtReset xmlCtxtReset__internal_alias
+#endif
+#endif
 
+#ifdef bottom_error
+#undef xmlCtxtResetLastError
+extern __typeof (xmlCtxtResetLastError) xmlCtxtResetLastError __attribute((alias("xmlCtxtResetLastError__internal_alias")));
+#else
+#ifndef xmlCtxtResetLastError
 extern __typeof (xmlCtxtResetLastError) xmlCtxtResetLastError__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCtxtResetLastError) xmlCtxtResetLastError __attribute((alias("xmlCtxtResetLastError__internal_alias")));
 #define xmlCtxtResetLastError xmlCtxtResetLastError__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlCtxtResetPush
+extern __typeof (xmlCtxtResetPush) xmlCtxtResetPush __attribute((alias("xmlCtxtResetPush__internal_alias")));
+#else
+#ifndef xmlCtxtResetPush
 extern __typeof (xmlCtxtResetPush) xmlCtxtResetPush__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCtxtResetPush) xmlCtxtResetPush __attribute((alias("xmlCtxtResetPush__internal_alias")));
 #define xmlCtxtResetPush xmlCtxtResetPush__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlCtxtUseOptions
+extern __typeof (xmlCtxtUseOptions) xmlCtxtUseOptions __attribute((alias("xmlCtxtUseOptions__internal_alias")));
+#else
+#ifndef xmlCtxtUseOptions
 extern __typeof (xmlCtxtUseOptions) xmlCtxtUseOptions__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCtxtUseOptions) xmlCtxtUseOptions __attribute((alias("xmlCtxtUseOptions__internal_alias")));
 #define xmlCtxtUseOptions xmlCtxtUseOptions__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlCurrentChar
+extern __typeof (xmlCurrentChar) xmlCurrentChar __attribute((alias("xmlCurrentChar__internal_alias")));
+#else
+#ifndef xmlCurrentChar
 extern __typeof (xmlCurrentChar) xmlCurrentChar__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlCurrentChar) xmlCurrentChar __attribute((alias("xmlCurrentChar__internal_alias")));
 #define xmlCurrentChar xmlCurrentChar__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlDebugCheckDocument
+extern __typeof (xmlDebugCheckDocument) xmlDebugCheckDocument __attribute((alias("xmlDebugCheckDocument__internal_alias")));
+#else
+#ifndef xmlDebugCheckDocument
 extern __typeof (xmlDebugCheckDocument) xmlDebugCheckDocument__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDebugCheckDocument) xmlDebugCheckDocument __attribute((alias("xmlDebugCheckDocument__internal_alias")));
 #define xmlDebugCheckDocument xmlDebugCheckDocument__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlDebugDumpAttr
+extern __typeof (xmlDebugDumpAttr) xmlDebugDumpAttr __attribute((alias("xmlDebugDumpAttr__internal_alias")));
+#else
+#ifndef xmlDebugDumpAttr
 extern __typeof (xmlDebugDumpAttr) xmlDebugDumpAttr__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDebugDumpAttr) xmlDebugDumpAttr __attribute((alias("xmlDebugDumpAttr__internal_alias")));
 #define xmlDebugDumpAttr xmlDebugDumpAttr__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlDebugDumpAttrList
+extern __typeof (xmlDebugDumpAttrList) xmlDebugDumpAttrList __attribute((alias("xmlDebugDumpAttrList__internal_alias")));
+#else
+#ifndef xmlDebugDumpAttrList
 extern __typeof (xmlDebugDumpAttrList) xmlDebugDumpAttrList__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDebugDumpAttrList) xmlDebugDumpAttrList __attribute((alias("xmlDebugDumpAttrList__internal_alias")));
 #define xmlDebugDumpAttrList xmlDebugDumpAttrList__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlDebugDumpDTD
+extern __typeof (xmlDebugDumpDTD) xmlDebugDumpDTD __attribute((alias("xmlDebugDumpDTD__internal_alias")));
+#else
+#ifndef xmlDebugDumpDTD
 extern __typeof (xmlDebugDumpDTD) xmlDebugDumpDTD__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDebugDumpDTD) xmlDebugDumpDTD __attribute((alias("xmlDebugDumpDTD__internal_alias")));
 #define xmlDebugDumpDTD xmlDebugDumpDTD__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlDebugDumpDocument
+extern __typeof (xmlDebugDumpDocument) xmlDebugDumpDocument __attribute((alias("xmlDebugDumpDocument__internal_alias")));
+#else
+#ifndef xmlDebugDumpDocument
 extern __typeof (xmlDebugDumpDocument) xmlDebugDumpDocument__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDebugDumpDocument) xmlDebugDumpDocument __attribute((alias("xmlDebugDumpDocument__internal_alias")));
 #define xmlDebugDumpDocument xmlDebugDumpDocument__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlDebugDumpDocumentHead
+extern __typeof (xmlDebugDumpDocumentHead) xmlDebugDumpDocumentHead __attribute((alias("xmlDebugDumpDocumentHead__internal_alias")));
+#else
+#ifndef xmlDebugDumpDocumentHead
 extern __typeof (xmlDebugDumpDocumentHead) xmlDebugDumpDocumentHead__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDebugDumpDocumentHead) xmlDebugDumpDocumentHead __attribute((alias("xmlDebugDumpDocumentHead__internal_alias")));
 #define xmlDebugDumpDocumentHead xmlDebugDumpDocumentHead__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlDebugDumpEntities
+extern __typeof (xmlDebugDumpEntities) xmlDebugDumpEntities __attribute((alias("xmlDebugDumpEntities__internal_alias")));
+#else
+#ifndef xmlDebugDumpEntities
 extern __typeof (xmlDebugDumpEntities) xmlDebugDumpEntities__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDebugDumpEntities) xmlDebugDumpEntities __attribute((alias("xmlDebugDumpEntities__internal_alias")));
 #define xmlDebugDumpEntities xmlDebugDumpEntities__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlDebugDumpNode
+extern __typeof (xmlDebugDumpNode) xmlDebugDumpNode __attribute((alias("xmlDebugDumpNode__internal_alias")));
+#else
+#ifndef xmlDebugDumpNode
 extern __typeof (xmlDebugDumpNode) xmlDebugDumpNode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDebugDumpNode) xmlDebugDumpNode __attribute((alias("xmlDebugDumpNode__internal_alias")));
 #define xmlDebugDumpNode xmlDebugDumpNode__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlDebugDumpNodeList
+extern __typeof (xmlDebugDumpNodeList) xmlDebugDumpNodeList __attribute((alias("xmlDebugDumpNodeList__internal_alias")));
+#else
+#ifndef xmlDebugDumpNodeList
 extern __typeof (xmlDebugDumpNodeList) xmlDebugDumpNodeList__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDebugDumpNodeList) xmlDebugDumpNodeList __attribute((alias("xmlDebugDumpNodeList__internal_alias")));
 #define xmlDebugDumpNodeList xmlDebugDumpNodeList__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlDebugDumpOneNode
+extern __typeof (xmlDebugDumpOneNode) xmlDebugDumpOneNode __attribute((alias("xmlDebugDumpOneNode__internal_alias")));
+#else
+#ifndef xmlDebugDumpOneNode
 extern __typeof (xmlDebugDumpOneNode) xmlDebugDumpOneNode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDebugDumpOneNode) xmlDebugDumpOneNode __attribute((alias("xmlDebugDumpOneNode__internal_alias")));
 #define xmlDebugDumpOneNode xmlDebugDumpOneNode__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlDebugDumpString
+extern __typeof (xmlDebugDumpString) xmlDebugDumpString __attribute((alias("xmlDebugDumpString__internal_alias")));
+#else
+#ifndef xmlDebugDumpString
 extern __typeof (xmlDebugDumpString) xmlDebugDumpString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDebugDumpString) xmlDebugDumpString __attribute((alias("xmlDebugDumpString__internal_alias")));
 #define xmlDebugDumpString xmlDebugDumpString__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_LEGACY_ENABLED)
+#ifdef bottom_legacy
+#undef xmlDecodeEntities
+extern __typeof (xmlDecodeEntities) xmlDecodeEntities __attribute((alias("xmlDecodeEntities__internal_alias")));
+#else
+#ifndef xmlDecodeEntities
 extern __typeof (xmlDecodeEntities) xmlDecodeEntities__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDecodeEntities) xmlDecodeEntities __attribute((alias("xmlDecodeEntities__internal_alias")));
 #define xmlDecodeEntities xmlDecodeEntities__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlDefaultSAXHandlerInit
+extern __typeof (xmlDefaultSAXHandlerInit) xmlDefaultSAXHandlerInit __attribute((alias("xmlDefaultSAXHandlerInit__internal_alias")));
+#else
+#ifndef xmlDefaultSAXHandlerInit
 extern __typeof (xmlDefaultSAXHandlerInit) xmlDefaultSAXHandlerInit__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDefaultSAXHandlerInit) xmlDefaultSAXHandlerInit __attribute((alias("xmlDefaultSAXHandlerInit__internal_alias")));
 #define xmlDefaultSAXHandlerInit xmlDefaultSAXHandlerInit__internal_alias
+#endif
+#endif
 
+#ifdef bottom_encoding
+#undef xmlDelEncodingAlias
+extern __typeof (xmlDelEncodingAlias) xmlDelEncodingAlias __attribute((alias("xmlDelEncodingAlias__internal_alias")));
+#else
+#ifndef xmlDelEncodingAlias
 extern __typeof (xmlDelEncodingAlias) xmlDelEncodingAlias__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDelEncodingAlias) xmlDelEncodingAlias __attribute((alias("xmlDelEncodingAlias__internal_alias")));
 #define xmlDelEncodingAlias xmlDelEncodingAlias__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlDeregisterNodeDefault
+extern __typeof (xmlDeregisterNodeDefault) xmlDeregisterNodeDefault __attribute((alias("xmlDeregisterNodeDefault__internal_alias")));
+#else
+#ifndef xmlDeregisterNodeDefault
 extern __typeof (xmlDeregisterNodeDefault) xmlDeregisterNodeDefault__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDeregisterNodeDefault) xmlDeregisterNodeDefault __attribute((alias("xmlDeregisterNodeDefault__internal_alias")));
 #define xmlDeregisterNodeDefault xmlDeregisterNodeDefault__internal_alias
+#endif
+#endif
 
+#ifdef bottom_encoding
+#undef xmlDetectCharEncoding
+extern __typeof (xmlDetectCharEncoding) xmlDetectCharEncoding __attribute((alias("xmlDetectCharEncoding__internal_alias")));
+#else
+#ifndef xmlDetectCharEncoding
 extern __typeof (xmlDetectCharEncoding) xmlDetectCharEncoding__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDetectCharEncoding) xmlDetectCharEncoding __attribute((alias("xmlDetectCharEncoding__internal_alias")));
 #define xmlDetectCharEncoding xmlDetectCharEncoding__internal_alias
+#endif
+#endif
 
+#ifdef bottom_dict
+#undef xmlDictCleanup
+extern __typeof (xmlDictCleanup) xmlDictCleanup __attribute((alias("xmlDictCleanup__internal_alias")));
+#else
+#ifndef xmlDictCleanup
 extern __typeof (xmlDictCleanup) xmlDictCleanup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDictCleanup) xmlDictCleanup __attribute((alias("xmlDictCleanup__internal_alias")));
 #define xmlDictCleanup xmlDictCleanup__internal_alias
+#endif
+#endif
 
+#ifdef bottom_dict
+#undef xmlDictCreate
+extern __typeof (xmlDictCreate) xmlDictCreate __attribute((alias("xmlDictCreate__internal_alias")));
+#else
+#ifndef xmlDictCreate
 extern __typeof (xmlDictCreate) xmlDictCreate__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDictCreate) xmlDictCreate __attribute((alias("xmlDictCreate__internal_alias")));
 #define xmlDictCreate xmlDictCreate__internal_alias
+#endif
+#endif
 
+#ifdef bottom_dict
+#undef xmlDictCreateSub
+extern __typeof (xmlDictCreateSub) xmlDictCreateSub __attribute((alias("xmlDictCreateSub__internal_alias")));
+#else
+#ifndef xmlDictCreateSub
 extern __typeof (xmlDictCreateSub) xmlDictCreateSub__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDictCreateSub) xmlDictCreateSub __attribute((alias("xmlDictCreateSub__internal_alias")));
 #define xmlDictCreateSub xmlDictCreateSub__internal_alias
+#endif
+#endif
 
+#ifdef bottom_dict
+#undef xmlDictExists
+extern __typeof (xmlDictExists) xmlDictExists __attribute((alias("xmlDictExists__internal_alias")));
+#else
+#ifndef xmlDictExists
 extern __typeof (xmlDictExists) xmlDictExists__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDictExists) xmlDictExists __attribute((alias("xmlDictExists__internal_alias")));
 #define xmlDictExists xmlDictExists__internal_alias
+#endif
+#endif
 
+#ifdef bottom_dict
+#undef xmlDictFree
+extern __typeof (xmlDictFree) xmlDictFree __attribute((alias("xmlDictFree__internal_alias")));
+#else
+#ifndef xmlDictFree
 extern __typeof (xmlDictFree) xmlDictFree__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDictFree) xmlDictFree __attribute((alias("xmlDictFree__internal_alias")));
 #define xmlDictFree xmlDictFree__internal_alias
+#endif
+#endif
 
+#ifdef bottom_dict
+#undef xmlDictLookup
+extern __typeof (xmlDictLookup) xmlDictLookup __attribute((alias("xmlDictLookup__internal_alias")));
+#else
+#ifndef xmlDictLookup
 extern __typeof (xmlDictLookup) xmlDictLookup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDictLookup) xmlDictLookup __attribute((alias("xmlDictLookup__internal_alias")));
 #define xmlDictLookup xmlDictLookup__internal_alias
+#endif
+#endif
 
+#ifdef bottom_dict
+#undef xmlDictOwns
+extern __typeof (xmlDictOwns) xmlDictOwns __attribute((alias("xmlDictOwns__internal_alias")));
+#else
+#ifndef xmlDictOwns
 extern __typeof (xmlDictOwns) xmlDictOwns__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDictOwns) xmlDictOwns __attribute((alias("xmlDictOwns__internal_alias")));
 #define xmlDictOwns xmlDictOwns__internal_alias
+#endif
+#endif
 
+#ifdef bottom_dict
+#undef xmlDictQLookup
+extern __typeof (xmlDictQLookup) xmlDictQLookup __attribute((alias("xmlDictQLookup__internal_alias")));
+#else
+#ifndef xmlDictQLookup
 extern __typeof (xmlDictQLookup) xmlDictQLookup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDictQLookup) xmlDictQLookup __attribute((alias("xmlDictQLookup__internal_alias")));
 #define xmlDictQLookup xmlDictQLookup__internal_alias
+#endif
+#endif
 
+#ifdef bottom_dict
+#undef xmlDictReference
+extern __typeof (xmlDictReference) xmlDictReference __attribute((alias("xmlDictReference__internal_alias")));
+#else
+#ifndef xmlDictReference
 extern __typeof (xmlDictReference) xmlDictReference__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDictReference) xmlDictReference __attribute((alias("xmlDictReference__internal_alias")));
 #define xmlDictReference xmlDictReference__internal_alias
+#endif
+#endif
 
+#ifdef bottom_dict
+#undef xmlDictSize
+extern __typeof (xmlDictSize) xmlDictSize __attribute((alias("xmlDictSize__internal_alias")));
+#else
+#ifndef xmlDictSize
 extern __typeof (xmlDictSize) xmlDictSize__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDictSize) xmlDictSize __attribute((alias("xmlDictSize__internal_alias")));
 #define xmlDictSize xmlDictSize__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlDocCopyNode
+extern __typeof (xmlDocCopyNode) xmlDocCopyNode __attribute((alias("xmlDocCopyNode__internal_alias")));
+#else
+#ifndef xmlDocCopyNode
 extern __typeof (xmlDocCopyNode) xmlDocCopyNode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDocCopyNode) xmlDocCopyNode __attribute((alias("xmlDocCopyNode__internal_alias")));
 #define xmlDocCopyNode xmlDocCopyNode__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlDocCopyNodeList
+extern __typeof (xmlDocCopyNodeList) xmlDocCopyNodeList __attribute((alias("xmlDocCopyNodeList__internal_alias")));
+#else
+#ifndef xmlDocCopyNodeList
 extern __typeof (xmlDocCopyNodeList) xmlDocCopyNodeList__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDocCopyNodeList) xmlDocCopyNodeList __attribute((alias("xmlDocCopyNodeList__internal_alias")));
 #define xmlDocCopyNodeList xmlDocCopyNodeList__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlDocDump
+extern __typeof (xmlDocDump) xmlDocDump __attribute((alias("xmlDocDump__internal_alias")));
+#else
+#ifndef xmlDocDump
 extern __typeof (xmlDocDump) xmlDocDump__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDocDump) xmlDocDump __attribute((alias("xmlDocDump__internal_alias")));
 #define xmlDocDump xmlDocDump__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlDocDumpFormatMemory
+extern __typeof (xmlDocDumpFormatMemory) xmlDocDumpFormatMemory __attribute((alias("xmlDocDumpFormatMemory__internal_alias")));
+#else
+#ifndef xmlDocDumpFormatMemory
 extern __typeof (xmlDocDumpFormatMemory) xmlDocDumpFormatMemory__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDocDumpFormatMemory) xmlDocDumpFormatMemory __attribute((alias("xmlDocDumpFormatMemory__internal_alias")));
 #define xmlDocDumpFormatMemory xmlDocDumpFormatMemory__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlDocDumpFormatMemoryEnc
+extern __typeof (xmlDocDumpFormatMemoryEnc) xmlDocDumpFormatMemoryEnc __attribute((alias("xmlDocDumpFormatMemoryEnc__internal_alias")));
+#else
+#ifndef xmlDocDumpFormatMemoryEnc
 extern __typeof (xmlDocDumpFormatMemoryEnc) xmlDocDumpFormatMemoryEnc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDocDumpFormatMemoryEnc) xmlDocDumpFormatMemoryEnc __attribute((alias("xmlDocDumpFormatMemoryEnc__internal_alias")));
 #define xmlDocDumpFormatMemoryEnc xmlDocDumpFormatMemoryEnc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlDocDumpMemory
+extern __typeof (xmlDocDumpMemory) xmlDocDumpMemory __attribute((alias("xmlDocDumpMemory__internal_alias")));
+#else
+#ifndef xmlDocDumpMemory
 extern __typeof (xmlDocDumpMemory) xmlDocDumpMemory__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDocDumpMemory) xmlDocDumpMemory __attribute((alias("xmlDocDumpMemory__internal_alias")));
 #define xmlDocDumpMemory xmlDocDumpMemory__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlDocDumpMemoryEnc
+extern __typeof (xmlDocDumpMemoryEnc) xmlDocDumpMemoryEnc __attribute((alias("xmlDocDumpMemoryEnc__internal_alias")));
+#else
+#ifndef xmlDocDumpMemoryEnc
 extern __typeof (xmlDocDumpMemoryEnc) xmlDocDumpMemoryEnc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDocDumpMemoryEnc) xmlDocDumpMemoryEnc __attribute((alias("xmlDocDumpMemoryEnc__internal_alias")));
 #define xmlDocDumpMemoryEnc xmlDocDumpMemoryEnc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlDocFormatDump
+extern __typeof (xmlDocFormatDump) xmlDocFormatDump __attribute((alias("xmlDocFormatDump__internal_alias")));
+#else
+#ifndef xmlDocFormatDump
 extern __typeof (xmlDocFormatDump) xmlDocFormatDump__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDocFormatDump) xmlDocFormatDump __attribute((alias("xmlDocFormatDump__internal_alias")));
 #define xmlDocFormatDump xmlDocFormatDump__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlDocGetRootElement
+extern __typeof (xmlDocGetRootElement) xmlDocGetRootElement __attribute((alias("xmlDocGetRootElement__internal_alias")));
+#else
+#ifndef xmlDocGetRootElement
 extern __typeof (xmlDocGetRootElement) xmlDocGetRootElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDocGetRootElement) xmlDocGetRootElement __attribute((alias("xmlDocGetRootElement__internal_alias")));
 #define xmlDocGetRootElement xmlDocGetRootElement__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_tree
+#undef xmlDocSetRootElement
+extern __typeof (xmlDocSetRootElement) xmlDocSetRootElement __attribute((alias("xmlDocSetRootElement__internal_alias")));
+#else
+#ifndef xmlDocSetRootElement
 extern __typeof (xmlDocSetRootElement) xmlDocSetRootElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDocSetRootElement) xmlDocSetRootElement __attribute((alias("xmlDocSetRootElement__internal_alias")));
 #define xmlDocSetRootElement xmlDocSetRootElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_valid
+#undef xmlDumpAttributeDecl
+extern __typeof (xmlDumpAttributeDecl) xmlDumpAttributeDecl __attribute((alias("xmlDumpAttributeDecl__internal_alias")));
+#else
+#ifndef xmlDumpAttributeDecl
 extern __typeof (xmlDumpAttributeDecl) xmlDumpAttributeDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDumpAttributeDecl) xmlDumpAttributeDecl __attribute((alias("xmlDumpAttributeDecl__internal_alias")));
 #define xmlDumpAttributeDecl xmlDumpAttributeDecl__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_valid
+#undef xmlDumpAttributeTable
+extern __typeof (xmlDumpAttributeTable) xmlDumpAttributeTable __attribute((alias("xmlDumpAttributeTable__internal_alias")));
+#else
+#ifndef xmlDumpAttributeTable
 extern __typeof (xmlDumpAttributeTable) xmlDumpAttributeTable__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDumpAttributeTable) xmlDumpAttributeTable __attribute((alias("xmlDumpAttributeTable__internal_alias")));
 #define xmlDumpAttributeTable xmlDumpAttributeTable__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_valid
+#undef xmlDumpElementDecl
+extern __typeof (xmlDumpElementDecl) xmlDumpElementDecl __attribute((alias("xmlDumpElementDecl__internal_alias")));
+#else
+#ifndef xmlDumpElementDecl
 extern __typeof (xmlDumpElementDecl) xmlDumpElementDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDumpElementDecl) xmlDumpElementDecl __attribute((alias("xmlDumpElementDecl__internal_alias")));
 #define xmlDumpElementDecl xmlDumpElementDecl__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_valid
+#undef xmlDumpElementTable
+extern __typeof (xmlDumpElementTable) xmlDumpElementTable __attribute((alias("xmlDumpElementTable__internal_alias")));
+#else
+#ifndef xmlDumpElementTable
 extern __typeof (xmlDumpElementTable) xmlDumpElementTable__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDumpElementTable) xmlDumpElementTable __attribute((alias("xmlDumpElementTable__internal_alias")));
 #define xmlDumpElementTable xmlDumpElementTable__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_entities
+#undef xmlDumpEntitiesTable
+extern __typeof (xmlDumpEntitiesTable) xmlDumpEntitiesTable __attribute((alias("xmlDumpEntitiesTable__internal_alias")));
+#else
+#ifndef xmlDumpEntitiesTable
 extern __typeof (xmlDumpEntitiesTable) xmlDumpEntitiesTable__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDumpEntitiesTable) xmlDumpEntitiesTable __attribute((alias("xmlDumpEntitiesTable__internal_alias")));
 #define xmlDumpEntitiesTable xmlDumpEntitiesTable__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_entities
+#undef xmlDumpEntityDecl
+extern __typeof (xmlDumpEntityDecl) xmlDumpEntityDecl __attribute((alias("xmlDumpEntityDecl__internal_alias")));
+#else
+#ifndef xmlDumpEntityDecl
 extern __typeof (xmlDumpEntityDecl) xmlDumpEntityDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDumpEntityDecl) xmlDumpEntityDecl __attribute((alias("xmlDumpEntityDecl__internal_alias")));
 #define xmlDumpEntityDecl xmlDumpEntityDecl__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_valid
+#undef xmlDumpNotationDecl
+extern __typeof (xmlDumpNotationDecl) xmlDumpNotationDecl __attribute((alias("xmlDumpNotationDecl__internal_alias")));
+#else
+#ifndef xmlDumpNotationDecl
 extern __typeof (xmlDumpNotationDecl) xmlDumpNotationDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDumpNotationDecl) xmlDumpNotationDecl __attribute((alias("xmlDumpNotationDecl__internal_alias")));
 #define xmlDumpNotationDecl xmlDumpNotationDecl__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_valid
+#undef xmlDumpNotationTable
+extern __typeof (xmlDumpNotationTable) xmlDumpNotationTable __attribute((alias("xmlDumpNotationTable__internal_alias")));
+#else
+#ifndef xmlDumpNotationTable
 extern __typeof (xmlDumpNotationTable) xmlDumpNotationTable__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlDumpNotationTable) xmlDumpNotationTable __attribute((alias("xmlDumpNotationTable__internal_alias")));
 #define xmlDumpNotationTable xmlDumpNotationTable__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlElemDump
+extern __typeof (xmlElemDump) xmlElemDump __attribute((alias("xmlElemDump__internal_alias")));
+#else
+#ifndef xmlElemDump
 extern __typeof (xmlElemDump) xmlElemDump__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlElemDump) xmlElemDump __attribute((alias("xmlElemDump__internal_alias")));
 #define xmlElemDump xmlElemDump__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_LEGACY_ENABLED)
+#ifdef bottom_legacy
+#undef xmlEncodeEntities
+extern __typeof (xmlEncodeEntities) xmlEncodeEntities __attribute((alias("xmlEncodeEntities__internal_alias")));
+#else
+#ifndef xmlEncodeEntities
 extern __typeof (xmlEncodeEntities) xmlEncodeEntities__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlEncodeEntities) xmlEncodeEntities __attribute((alias("xmlEncodeEntities__internal_alias")));
 #define xmlEncodeEntities xmlEncodeEntities__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_entities
+#undef xmlEncodeEntitiesReentrant
+extern __typeof (xmlEncodeEntitiesReentrant) xmlEncodeEntitiesReentrant __attribute((alias("xmlEncodeEntitiesReentrant__internal_alias")));
+#else
+#ifndef xmlEncodeEntitiesReentrant
 extern __typeof (xmlEncodeEntitiesReentrant) xmlEncodeEntitiesReentrant__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlEncodeEntitiesReentrant) xmlEncodeEntitiesReentrant __attribute((alias("xmlEncodeEntitiesReentrant__internal_alias")));
 #define xmlEncodeEntitiesReentrant xmlEncodeEntitiesReentrant__internal_alias
+#endif
+#endif
 
+#ifdef bottom_entities
+#undef xmlEncodeSpecialChars
+extern __typeof (xmlEncodeSpecialChars) xmlEncodeSpecialChars __attribute((alias("xmlEncodeSpecialChars__internal_alias")));
+#else
+#ifndef xmlEncodeSpecialChars
 extern __typeof (xmlEncodeSpecialChars) xmlEncodeSpecialChars__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlEncodeSpecialChars) xmlEncodeSpecialChars __attribute((alias("xmlEncodeSpecialChars__internal_alias")));
 #define xmlEncodeSpecialChars xmlEncodeSpecialChars__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlErrMemory
+extern __typeof (xmlErrMemory) xmlErrMemory __attribute((alias("xmlErrMemory__internal_alias")));
+#else
+#ifndef xmlErrMemory
 extern __typeof (xmlErrMemory) xmlErrMemory__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlErrMemory) xmlErrMemory __attribute((alias("xmlErrMemory__internal_alias")));
 #define xmlErrMemory xmlErrMemory__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlFileClose
+extern __typeof (xmlFileClose) xmlFileClose __attribute((alias("xmlFileClose__internal_alias")));
+#else
+#ifndef xmlFileClose
 extern __typeof (xmlFileClose) xmlFileClose__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFileClose) xmlFileClose __attribute((alias("xmlFileClose__internal_alias")));
 #define xmlFileClose xmlFileClose__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlFileMatch
+extern __typeof (xmlFileMatch) xmlFileMatch __attribute((alias("xmlFileMatch__internal_alias")));
+#else
+#ifndef xmlFileMatch
 extern __typeof (xmlFileMatch) xmlFileMatch__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFileMatch) xmlFileMatch __attribute((alias("xmlFileMatch__internal_alias")));
 #define xmlFileMatch xmlFileMatch__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlFileOpen
+extern __typeof (xmlFileOpen) xmlFileOpen __attribute((alias("xmlFileOpen__internal_alias")));
+#else
+#ifndef xmlFileOpen
 extern __typeof (xmlFileOpen) xmlFileOpen__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFileOpen) xmlFileOpen __attribute((alias("xmlFileOpen__internal_alias")));
 #define xmlFileOpen xmlFileOpen__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlFileRead
+extern __typeof (xmlFileRead) xmlFileRead __attribute((alias("xmlFileRead__internal_alias")));
+#else
+#ifndef xmlFileRead
 extern __typeof (xmlFileRead) xmlFileRead__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFileRead) xmlFileRead __attribute((alias("xmlFileRead__internal_alias")));
 #define xmlFileRead xmlFileRead__internal_alias
+#endif
+#endif
 
+#ifdef bottom_encoding
+#undef xmlFindCharEncodingHandler
+extern __typeof (xmlFindCharEncodingHandler) xmlFindCharEncodingHandler __attribute((alias("xmlFindCharEncodingHandler__internal_alias")));
+#else
+#ifndef xmlFindCharEncodingHandler
 extern __typeof (xmlFindCharEncodingHandler) xmlFindCharEncodingHandler__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFindCharEncodingHandler) xmlFindCharEncodingHandler __attribute((alias("xmlFindCharEncodingHandler__internal_alias")));
 #define xmlFindCharEncodingHandler xmlFindCharEncodingHandler__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlFreeAttributeTable
+extern __typeof (xmlFreeAttributeTable) xmlFreeAttributeTable __attribute((alias("xmlFreeAttributeTable__internal_alias")));
+#else
+#ifndef xmlFreeAttributeTable
 extern __typeof (xmlFreeAttributeTable) xmlFreeAttributeTable__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeAttributeTable) xmlFreeAttributeTable __attribute((alias("xmlFreeAttributeTable__internal_alias")));
 #define xmlFreeAttributeTable xmlFreeAttributeTable__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlFreeAutomata
+extern __typeof (xmlFreeAutomata) xmlFreeAutomata __attribute((alias("xmlFreeAutomata__internal_alias")));
+#else
+#ifndef xmlFreeAutomata
 extern __typeof (xmlFreeAutomata) xmlFreeAutomata__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeAutomata) xmlFreeAutomata __attribute((alias("xmlFreeAutomata__internal_alias")));
 #define xmlFreeAutomata xmlFreeAutomata__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlFreeCatalog
+extern __typeof (xmlFreeCatalog) xmlFreeCatalog __attribute((alias("xmlFreeCatalog__internal_alias")));
+#else
+#ifndef xmlFreeCatalog
 extern __typeof (xmlFreeCatalog) xmlFreeCatalog__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeCatalog) xmlFreeCatalog __attribute((alias("xmlFreeCatalog__internal_alias")));
 #define xmlFreeCatalog xmlFreeCatalog__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlFreeDoc
+extern __typeof (xmlFreeDoc) xmlFreeDoc __attribute((alias("xmlFreeDoc__internal_alias")));
+#else
+#ifndef xmlFreeDoc
 extern __typeof (xmlFreeDoc) xmlFreeDoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeDoc) xmlFreeDoc __attribute((alias("xmlFreeDoc__internal_alias")));
 #define xmlFreeDoc xmlFreeDoc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlFreeDocElementContent
+extern __typeof (xmlFreeDocElementContent) xmlFreeDocElementContent __attribute((alias("xmlFreeDocElementContent__internal_alias")));
+#else
+#ifndef xmlFreeDocElementContent
 extern __typeof (xmlFreeDocElementContent) xmlFreeDocElementContent__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeDocElementContent) xmlFreeDocElementContent __attribute((alias("xmlFreeDocElementContent__internal_alias")));
 #define xmlFreeDocElementContent xmlFreeDocElementContent__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlFreeDtd
+extern __typeof (xmlFreeDtd) xmlFreeDtd __attribute((alias("xmlFreeDtd__internal_alias")));
+#else
+#ifndef xmlFreeDtd
 extern __typeof (xmlFreeDtd) xmlFreeDtd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeDtd) xmlFreeDtd __attribute((alias("xmlFreeDtd__internal_alias")));
 #define xmlFreeDtd xmlFreeDtd__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlFreeElementContent
+extern __typeof (xmlFreeElementContent) xmlFreeElementContent __attribute((alias("xmlFreeElementContent__internal_alias")));
+#else
+#ifndef xmlFreeElementContent
 extern __typeof (xmlFreeElementContent) xmlFreeElementContent__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeElementContent) xmlFreeElementContent __attribute((alias("xmlFreeElementContent__internal_alias")));
 #define xmlFreeElementContent xmlFreeElementContent__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlFreeElementTable
+extern __typeof (xmlFreeElementTable) xmlFreeElementTable __attribute((alias("xmlFreeElementTable__internal_alias")));
+#else
+#ifndef xmlFreeElementTable
 extern __typeof (xmlFreeElementTable) xmlFreeElementTable__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeElementTable) xmlFreeElementTable __attribute((alias("xmlFreeElementTable__internal_alias")));
 #define xmlFreeElementTable xmlFreeElementTable__internal_alias
+#endif
+#endif
 
+#ifdef bottom_entities
+#undef xmlFreeEntitiesTable
+extern __typeof (xmlFreeEntitiesTable) xmlFreeEntitiesTable __attribute((alias("xmlFreeEntitiesTable__internal_alias")));
+#else
+#ifndef xmlFreeEntitiesTable
 extern __typeof (xmlFreeEntitiesTable) xmlFreeEntitiesTable__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeEntitiesTable) xmlFreeEntitiesTable __attribute((alias("xmlFreeEntitiesTable__internal_alias")));
 #define xmlFreeEntitiesTable xmlFreeEntitiesTable__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlFreeEnumeration
+extern __typeof (xmlFreeEnumeration) xmlFreeEnumeration __attribute((alias("xmlFreeEnumeration__internal_alias")));
+#else
+#ifndef xmlFreeEnumeration
 extern __typeof (xmlFreeEnumeration) xmlFreeEnumeration__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeEnumeration) xmlFreeEnumeration __attribute((alias("xmlFreeEnumeration__internal_alias")));
 #define xmlFreeEnumeration xmlFreeEnumeration__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlFreeIDTable
+extern __typeof (xmlFreeIDTable) xmlFreeIDTable __attribute((alias("xmlFreeIDTable__internal_alias")));
+#else
+#ifndef xmlFreeIDTable
 extern __typeof (xmlFreeIDTable) xmlFreeIDTable__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeIDTable) xmlFreeIDTable __attribute((alias("xmlFreeIDTable__internal_alias")));
 #define xmlFreeIDTable xmlFreeIDTable__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlFreeInputStream
+extern __typeof (xmlFreeInputStream) xmlFreeInputStream __attribute((alias("xmlFreeInputStream__internal_alias")));
+#else
+#ifndef xmlFreeInputStream
 extern __typeof (xmlFreeInputStream) xmlFreeInputStream__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeInputStream) xmlFreeInputStream __attribute((alias("xmlFreeInputStream__internal_alias")));
 #define xmlFreeInputStream xmlFreeInputStream__internal_alias
+#endif
+#endif
 
+#ifdef bottom_threads
+#undef xmlFreeMutex
+extern __typeof (xmlFreeMutex) xmlFreeMutex __attribute((alias("xmlFreeMutex__internal_alias")));
+#else
+#ifndef xmlFreeMutex
 extern __typeof (xmlFreeMutex) xmlFreeMutex__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeMutex) xmlFreeMutex __attribute((alias("xmlFreeMutex__internal_alias")));
 #define xmlFreeMutex xmlFreeMutex__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlFreeNode
+extern __typeof (xmlFreeNode) xmlFreeNode __attribute((alias("xmlFreeNode__internal_alias")));
+#else
+#ifndef xmlFreeNode
 extern __typeof (xmlFreeNode) xmlFreeNode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeNode) xmlFreeNode __attribute((alias("xmlFreeNode__internal_alias")));
 #define xmlFreeNode xmlFreeNode__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlFreeNodeList
+extern __typeof (xmlFreeNodeList) xmlFreeNodeList __attribute((alias("xmlFreeNodeList__internal_alias")));
+#else
+#ifndef xmlFreeNodeList
 extern __typeof (xmlFreeNodeList) xmlFreeNodeList__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeNodeList) xmlFreeNodeList __attribute((alias("xmlFreeNodeList__internal_alias")));
 #define xmlFreeNodeList xmlFreeNodeList__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlFreeNotationTable
+extern __typeof (xmlFreeNotationTable) xmlFreeNotationTable __attribute((alias("xmlFreeNotationTable__internal_alias")));
+#else
+#ifndef xmlFreeNotationTable
 extern __typeof (xmlFreeNotationTable) xmlFreeNotationTable__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeNotationTable) xmlFreeNotationTable __attribute((alias("xmlFreeNotationTable__internal_alias")));
 #define xmlFreeNotationTable xmlFreeNotationTable__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlFreeNs
+extern __typeof (xmlFreeNs) xmlFreeNs __attribute((alias("xmlFreeNs__internal_alias")));
+#else
+#ifndef xmlFreeNs
 extern __typeof (xmlFreeNs) xmlFreeNs__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeNs) xmlFreeNs __attribute((alias("xmlFreeNs__internal_alias")));
 #define xmlFreeNs xmlFreeNs__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlFreeNsList
+extern __typeof (xmlFreeNsList) xmlFreeNsList __attribute((alias("xmlFreeNsList__internal_alias")));
+#else
+#ifndef xmlFreeNsList
 extern __typeof (xmlFreeNsList) xmlFreeNsList__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeNsList) xmlFreeNsList __attribute((alias("xmlFreeNsList__internal_alias")));
 #define xmlFreeNsList xmlFreeNsList__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlFreeParserCtxt
+extern __typeof (xmlFreeParserCtxt) xmlFreeParserCtxt __attribute((alias("xmlFreeParserCtxt__internal_alias")));
+#else
+#ifndef xmlFreeParserCtxt
 extern __typeof (xmlFreeParserCtxt) xmlFreeParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeParserCtxt) xmlFreeParserCtxt __attribute((alias("xmlFreeParserCtxt__internal_alias")));
 #define xmlFreeParserCtxt xmlFreeParserCtxt__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlFreeParserInputBuffer
+extern __typeof (xmlFreeParserInputBuffer) xmlFreeParserInputBuffer __attribute((alias("xmlFreeParserInputBuffer__internal_alias")));
+#else
+#ifndef xmlFreeParserInputBuffer
 extern __typeof (xmlFreeParserInputBuffer) xmlFreeParserInputBuffer__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeParserInputBuffer) xmlFreeParserInputBuffer __attribute((alias("xmlFreeParserInputBuffer__internal_alias")));
 #define xmlFreeParserInputBuffer xmlFreeParserInputBuffer__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_PATTERN_ENABLED)
+#ifdef bottom_pattern
+#undef xmlFreePattern
+extern __typeof (xmlFreePattern) xmlFreePattern __attribute((alias("xmlFreePattern__internal_alias")));
+#else
+#ifndef xmlFreePattern
 extern __typeof (xmlFreePattern) xmlFreePattern__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreePattern) xmlFreePattern __attribute((alias("xmlFreePattern__internal_alias")));
 #define xmlFreePattern xmlFreePattern__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_PATTERN_ENABLED)
+#ifdef bottom_pattern
+#undef xmlFreePatternList
+extern __typeof (xmlFreePatternList) xmlFreePatternList __attribute((alias("xmlFreePatternList__internal_alias")));
+#else
+#ifndef xmlFreePatternList
 extern __typeof (xmlFreePatternList) xmlFreePatternList__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreePatternList) xmlFreePatternList __attribute((alias("xmlFreePatternList__internal_alias")));
 #define xmlFreePatternList xmlFreePatternList__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlFreeProp
+extern __typeof (xmlFreeProp) xmlFreeProp __attribute((alias("xmlFreeProp__internal_alias")));
+#else
+#ifndef xmlFreeProp
 extern __typeof (xmlFreeProp) xmlFreeProp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeProp) xmlFreeProp __attribute((alias("xmlFreeProp__internal_alias")));
 #define xmlFreeProp xmlFreeProp__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlFreePropList
+extern __typeof (xmlFreePropList) xmlFreePropList __attribute((alias("xmlFreePropList__internal_alias")));
+#else
+#ifndef xmlFreePropList
 extern __typeof (xmlFreePropList) xmlFreePropList__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreePropList) xmlFreePropList __attribute((alias("xmlFreePropList__internal_alias")));
 #define xmlFreePropList xmlFreePropList__internal_alias
+#endif
+#endif
 
+#ifdef bottom_threads
+#undef xmlFreeRMutex
+extern __typeof (xmlFreeRMutex) xmlFreeRMutex __attribute((alias("xmlFreeRMutex__internal_alias")));
+#else
+#ifndef xmlFreeRMutex
 extern __typeof (xmlFreeRMutex) xmlFreeRMutex__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeRMutex) xmlFreeRMutex __attribute((alias("xmlFreeRMutex__internal_alias")));
 #define xmlFreeRMutex xmlFreeRMutex__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlFreeRefTable
+extern __typeof (xmlFreeRefTable) xmlFreeRefTable __attribute((alias("xmlFreeRefTable__internal_alias")));
+#else
+#ifndef xmlFreeRefTable
 extern __typeof (xmlFreeRefTable) xmlFreeRefTable__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeRefTable) xmlFreeRefTable __attribute((alias("xmlFreeRefTable__internal_alias")));
 #define xmlFreeRefTable xmlFreeRefTable__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_PATTERN_ENABLED)
+#ifdef bottom_pattern
+#undef xmlFreeStreamCtxt
+extern __typeof (xmlFreeStreamCtxt) xmlFreeStreamCtxt __attribute((alias("xmlFreeStreamCtxt__internal_alias")));
+#else
+#ifndef xmlFreeStreamCtxt
 extern __typeof (xmlFreeStreamCtxt) xmlFreeStreamCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeStreamCtxt) xmlFreeStreamCtxt __attribute((alias("xmlFreeStreamCtxt__internal_alias")));
 #define xmlFreeStreamCtxt xmlFreeStreamCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlFreeTextReader
+extern __typeof (xmlFreeTextReader) xmlFreeTextReader __attribute((alias("xmlFreeTextReader__internal_alias")));
+#else
+#ifndef xmlFreeTextReader
 extern __typeof (xmlFreeTextReader) xmlFreeTextReader__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeTextReader) xmlFreeTextReader __attribute((alias("xmlFreeTextReader__internal_alias")));
 #define xmlFreeTextReader xmlFreeTextReader__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlFreeTextWriter
+extern __typeof (xmlFreeTextWriter) xmlFreeTextWriter __attribute((alias("xmlFreeTextWriter__internal_alias")));
+#else
+#ifndef xmlFreeTextWriter
 extern __typeof (xmlFreeTextWriter) xmlFreeTextWriter__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeTextWriter) xmlFreeTextWriter __attribute((alias("xmlFreeTextWriter__internal_alias")));
 #define xmlFreeTextWriter xmlFreeTextWriter__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_uri
+#undef xmlFreeURI
+extern __typeof (xmlFreeURI) xmlFreeURI __attribute((alias("xmlFreeURI__internal_alias")));
+#else
+#ifndef xmlFreeURI
 extern __typeof (xmlFreeURI) xmlFreeURI__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeURI) xmlFreeURI __attribute((alias("xmlFreeURI__internal_alias")));
 #define xmlFreeURI xmlFreeURI__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlFreeValidCtxt
+extern __typeof (xmlFreeValidCtxt) xmlFreeValidCtxt __attribute((alias("xmlFreeValidCtxt__internal_alias")));
+#else
+#ifndef xmlFreeValidCtxt
 extern __typeof (xmlFreeValidCtxt) xmlFreeValidCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlFreeValidCtxt) xmlFreeValidCtxt __attribute((alias("xmlFreeValidCtxt__internal_alias")));
 #define xmlFreeValidCtxt xmlFreeValidCtxt__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_xmlmemory
+#undef xmlGcMemGet
+extern __typeof (xmlGcMemGet) xmlGcMemGet __attribute((alias("xmlGcMemGet__internal_alias")));
+#else
+#ifndef xmlGcMemGet
 extern __typeof (xmlGcMemGet) xmlGcMemGet__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGcMemGet) xmlGcMemGet __attribute((alias("xmlGcMemGet__internal_alias")));
 #define xmlGcMemGet xmlGcMemGet__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlmemory
+#undef xmlGcMemSetup
+extern __typeof (xmlGcMemSetup) xmlGcMemSetup __attribute((alias("xmlGcMemSetup__internal_alias")));
+#else
+#ifndef xmlGcMemSetup
 extern __typeof (xmlGcMemSetup) xmlGcMemSetup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGcMemSetup) xmlGcMemSetup __attribute((alias("xmlGcMemSetup__internal_alias")));
 #define xmlGcMemSetup xmlGcMemSetup__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlGetBufferAllocationScheme
+extern __typeof (xmlGetBufferAllocationScheme) xmlGetBufferAllocationScheme __attribute((alias("xmlGetBufferAllocationScheme__internal_alias")));
+#else
+#ifndef xmlGetBufferAllocationScheme
 extern __typeof (xmlGetBufferAllocationScheme) xmlGetBufferAllocationScheme__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetBufferAllocationScheme) xmlGetBufferAllocationScheme __attribute((alias("xmlGetBufferAllocationScheme__internal_alias")));
 #define xmlGetBufferAllocationScheme xmlGetBufferAllocationScheme__internal_alias
+#endif
+#endif
 
+#ifdef bottom_encoding
+#undef xmlGetCharEncodingHandler
+extern __typeof (xmlGetCharEncodingHandler) xmlGetCharEncodingHandler __attribute((alias("xmlGetCharEncodingHandler__internal_alias")));
+#else
+#ifndef xmlGetCharEncodingHandler
 extern __typeof (xmlGetCharEncodingHandler) xmlGetCharEncodingHandler__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetCharEncodingHandler) xmlGetCharEncodingHandler __attribute((alias("xmlGetCharEncodingHandler__internal_alias")));
 #define xmlGetCharEncodingHandler xmlGetCharEncodingHandler__internal_alias
+#endif
+#endif
 
+#ifdef bottom_encoding
+#undef xmlGetCharEncodingName
+extern __typeof (xmlGetCharEncodingName) xmlGetCharEncodingName __attribute((alias("xmlGetCharEncodingName__internal_alias")));
+#else
+#ifndef xmlGetCharEncodingName
 extern __typeof (xmlGetCharEncodingName) xmlGetCharEncodingName__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetCharEncodingName) xmlGetCharEncodingName __attribute((alias("xmlGetCharEncodingName__internal_alias")));
 #define xmlGetCharEncodingName xmlGetCharEncodingName__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlGetCompressMode
+extern __typeof (xmlGetCompressMode) xmlGetCompressMode __attribute((alias("xmlGetCompressMode__internal_alias")));
+#else
+#ifndef xmlGetCompressMode
 extern __typeof (xmlGetCompressMode) xmlGetCompressMode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetCompressMode) xmlGetCompressMode __attribute((alias("xmlGetCompressMode__internal_alias")));
 #define xmlGetCompressMode xmlGetCompressMode__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlGetDocCompressMode
+extern __typeof (xmlGetDocCompressMode) xmlGetDocCompressMode __attribute((alias("xmlGetDocCompressMode__internal_alias")));
+#else
+#ifndef xmlGetDocCompressMode
 extern __typeof (xmlGetDocCompressMode) xmlGetDocCompressMode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetDocCompressMode) xmlGetDocCompressMode __attribute((alias("xmlGetDocCompressMode__internal_alias")));
 #define xmlGetDocCompressMode xmlGetDocCompressMode__internal_alias
+#endif
+#endif
 
+#ifdef bottom_entities
+#undef xmlGetDocEntity
+extern __typeof (xmlGetDocEntity) xmlGetDocEntity __attribute((alias("xmlGetDocEntity__internal_alias")));
+#else
+#ifndef xmlGetDocEntity
 extern __typeof (xmlGetDocEntity) xmlGetDocEntity__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetDocEntity) xmlGetDocEntity __attribute((alias("xmlGetDocEntity__internal_alias")));
 #define xmlGetDocEntity xmlGetDocEntity__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlGetDtdAttrDesc
+extern __typeof (xmlGetDtdAttrDesc) xmlGetDtdAttrDesc __attribute((alias("xmlGetDtdAttrDesc__internal_alias")));
+#else
+#ifndef xmlGetDtdAttrDesc
 extern __typeof (xmlGetDtdAttrDesc) xmlGetDtdAttrDesc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetDtdAttrDesc) xmlGetDtdAttrDesc __attribute((alias("xmlGetDtdAttrDesc__internal_alias")));
 #define xmlGetDtdAttrDesc xmlGetDtdAttrDesc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlGetDtdElementDesc
+extern __typeof (xmlGetDtdElementDesc) xmlGetDtdElementDesc __attribute((alias("xmlGetDtdElementDesc__internal_alias")));
+#else
+#ifndef xmlGetDtdElementDesc
 extern __typeof (xmlGetDtdElementDesc) xmlGetDtdElementDesc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetDtdElementDesc) xmlGetDtdElementDesc __attribute((alias("xmlGetDtdElementDesc__internal_alias")));
 #define xmlGetDtdElementDesc xmlGetDtdElementDesc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_entities
+#undef xmlGetDtdEntity
+extern __typeof (xmlGetDtdEntity) xmlGetDtdEntity __attribute((alias("xmlGetDtdEntity__internal_alias")));
+#else
+#ifndef xmlGetDtdEntity
 extern __typeof (xmlGetDtdEntity) xmlGetDtdEntity__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetDtdEntity) xmlGetDtdEntity __attribute((alias("xmlGetDtdEntity__internal_alias")));
 #define xmlGetDtdEntity xmlGetDtdEntity__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlGetDtdNotationDesc
+extern __typeof (xmlGetDtdNotationDesc) xmlGetDtdNotationDesc __attribute((alias("xmlGetDtdNotationDesc__internal_alias")));
+#else
+#ifndef xmlGetDtdNotationDesc
 extern __typeof (xmlGetDtdNotationDesc) xmlGetDtdNotationDesc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetDtdNotationDesc) xmlGetDtdNotationDesc __attribute((alias("xmlGetDtdNotationDesc__internal_alias")));
 #define xmlGetDtdNotationDesc xmlGetDtdNotationDesc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlGetDtdQAttrDesc
+extern __typeof (xmlGetDtdQAttrDesc) xmlGetDtdQAttrDesc __attribute((alias("xmlGetDtdQAttrDesc__internal_alias")));
+#else
+#ifndef xmlGetDtdQAttrDesc
 extern __typeof (xmlGetDtdQAttrDesc) xmlGetDtdQAttrDesc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetDtdQAttrDesc) xmlGetDtdQAttrDesc __attribute((alias("xmlGetDtdQAttrDesc__internal_alias")));
 #define xmlGetDtdQAttrDesc xmlGetDtdQAttrDesc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlGetDtdQElementDesc
+extern __typeof (xmlGetDtdQElementDesc) xmlGetDtdQElementDesc __attribute((alias("xmlGetDtdQElementDesc__internal_alias")));
+#else
+#ifndef xmlGetDtdQElementDesc
 extern __typeof (xmlGetDtdQElementDesc) xmlGetDtdQElementDesc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetDtdQElementDesc) xmlGetDtdQElementDesc __attribute((alias("xmlGetDtdQElementDesc__internal_alias")));
 #define xmlGetDtdQElementDesc xmlGetDtdQElementDesc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_encoding
+#undef xmlGetEncodingAlias
+extern __typeof (xmlGetEncodingAlias) xmlGetEncodingAlias __attribute((alias("xmlGetEncodingAlias__internal_alias")));
+#else
+#ifndef xmlGetEncodingAlias
 extern __typeof (xmlGetEncodingAlias) xmlGetEncodingAlias__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetEncodingAlias) xmlGetEncodingAlias __attribute((alias("xmlGetEncodingAlias__internal_alias")));
 #define xmlGetEncodingAlias xmlGetEncodingAlias__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlGetExternalEntityLoader
+extern __typeof (xmlGetExternalEntityLoader) xmlGetExternalEntityLoader __attribute((alias("xmlGetExternalEntityLoader__internal_alias")));
+#else
+#ifndef xmlGetExternalEntityLoader
 extern __typeof (xmlGetExternalEntityLoader) xmlGetExternalEntityLoader__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetExternalEntityLoader) xmlGetExternalEntityLoader __attribute((alias("xmlGetExternalEntityLoader__internal_alias")));
 #define xmlGetExternalEntityLoader xmlGetExternalEntityLoader__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_LEGACY_ENABLED)
+#ifdef bottom_legacy
+#undef xmlGetFeature
+extern __typeof (xmlGetFeature) xmlGetFeature __attribute((alias("xmlGetFeature__internal_alias")));
+#else
+#ifndef xmlGetFeature
 extern __typeof (xmlGetFeature) xmlGetFeature__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetFeature) xmlGetFeature __attribute((alias("xmlGetFeature__internal_alias")));
 #define xmlGetFeature xmlGetFeature__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_LEGACY_ENABLED)
+#ifdef bottom_legacy
+#undef xmlGetFeaturesList
+extern __typeof (xmlGetFeaturesList) xmlGetFeaturesList __attribute((alias("xmlGetFeaturesList__internal_alias")));
+#else
+#ifndef xmlGetFeaturesList
 extern __typeof (xmlGetFeaturesList) xmlGetFeaturesList__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetFeaturesList) xmlGetFeaturesList __attribute((alias("xmlGetFeaturesList__internal_alias")));
 #define xmlGetFeaturesList xmlGetFeaturesList__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_threads
+#undef xmlGetGlobalState
+extern __typeof (xmlGetGlobalState) xmlGetGlobalState __attribute((alias("xmlGetGlobalState__internal_alias")));
+#else
+#ifndef xmlGetGlobalState
 extern __typeof (xmlGetGlobalState) xmlGetGlobalState__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetGlobalState) xmlGetGlobalState __attribute((alias("xmlGetGlobalState__internal_alias")));
 #define xmlGetGlobalState xmlGetGlobalState__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlGetID
+extern __typeof (xmlGetID) xmlGetID __attribute((alias("xmlGetID__internal_alias")));
+#else
+#ifndef xmlGetID
 extern __typeof (xmlGetID) xmlGetID__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetID) xmlGetID __attribute((alias("xmlGetID__internal_alias")));
 #define xmlGetID xmlGetID__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlGetIntSubset
+extern __typeof (xmlGetIntSubset) xmlGetIntSubset __attribute((alias("xmlGetIntSubset__internal_alias")));
+#else
+#ifndef xmlGetIntSubset
 extern __typeof (xmlGetIntSubset) xmlGetIntSubset__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetIntSubset) xmlGetIntSubset __attribute((alias("xmlGetIntSubset__internal_alias")));
 #define xmlGetIntSubset xmlGetIntSubset__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlGetLastChild
+extern __typeof (xmlGetLastChild) xmlGetLastChild __attribute((alias("xmlGetLastChild__internal_alias")));
+#else
+#ifndef xmlGetLastChild
 extern __typeof (xmlGetLastChild) xmlGetLastChild__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetLastChild) xmlGetLastChild __attribute((alias("xmlGetLastChild__internal_alias")));
 #define xmlGetLastChild xmlGetLastChild__internal_alias
+#endif
+#endif
 
+#ifdef bottom_error
+#undef xmlGetLastError
+extern __typeof (xmlGetLastError) xmlGetLastError __attribute((alias("xmlGetLastError__internal_alias")));
+#else
+#ifndef xmlGetLastError
 extern __typeof (xmlGetLastError) xmlGetLastError__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetLastError) xmlGetLastError __attribute((alias("xmlGetLastError__internal_alias")));
 #define xmlGetLastError xmlGetLastError__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlGetLineNo
+extern __typeof (xmlGetLineNo) xmlGetLineNo __attribute((alias("xmlGetLineNo__internal_alias")));
+#else
+#ifndef xmlGetLineNo
 extern __typeof (xmlGetLineNo) xmlGetLineNo__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetLineNo) xmlGetLineNo __attribute((alias("xmlGetLineNo__internal_alias")));
 #define xmlGetLineNo xmlGetLineNo__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlGetNoNsProp
+extern __typeof (xmlGetNoNsProp) xmlGetNoNsProp __attribute((alias("xmlGetNoNsProp__internal_alias")));
+#else
+#ifndef xmlGetNoNsProp
 extern __typeof (xmlGetNoNsProp) xmlGetNoNsProp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetNoNsProp) xmlGetNoNsProp __attribute((alias("xmlGetNoNsProp__internal_alias")));
 #define xmlGetNoNsProp xmlGetNoNsProp__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED)
+#ifdef bottom_tree
+#undef xmlGetNodePath
+extern __typeof (xmlGetNodePath) xmlGetNodePath __attribute((alias("xmlGetNodePath__internal_alias")));
+#else
+#ifndef xmlGetNodePath
 extern __typeof (xmlGetNodePath) xmlGetNodePath__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetNodePath) xmlGetNodePath __attribute((alias("xmlGetNodePath__internal_alias")));
 #define xmlGetNodePath xmlGetNodePath__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_tree
+#undef xmlGetNsList
+extern __typeof (xmlGetNsList) xmlGetNsList __attribute((alias("xmlGetNsList__internal_alias")));
+#else
+#ifndef xmlGetNsList
 extern __typeof (xmlGetNsList) xmlGetNsList__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetNsList) xmlGetNsList __attribute((alias("xmlGetNsList__internal_alias")));
 #define xmlGetNsList xmlGetNsList__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlGetNsProp
+extern __typeof (xmlGetNsProp) xmlGetNsProp __attribute((alias("xmlGetNsProp__internal_alias")));
+#else
+#ifndef xmlGetNsProp
 extern __typeof (xmlGetNsProp) xmlGetNsProp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetNsProp) xmlGetNsProp __attribute((alias("xmlGetNsProp__internal_alias")));
 #define xmlGetNsProp xmlGetNsProp__internal_alias
+#endif
+#endif
 
+#ifdef bottom_entities
+#undef xmlGetParameterEntity
+extern __typeof (xmlGetParameterEntity) xmlGetParameterEntity __attribute((alias("xmlGetParameterEntity__internal_alias")));
+#else
+#ifndef xmlGetParameterEntity
 extern __typeof (xmlGetParameterEntity) xmlGetParameterEntity__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetParameterEntity) xmlGetParameterEntity __attribute((alias("xmlGetParameterEntity__internal_alias")));
 #define xmlGetParameterEntity xmlGetParameterEntity__internal_alias
+#endif
+#endif
 
+#ifdef bottom_entities
+#undef xmlGetPredefinedEntity
+extern __typeof (xmlGetPredefinedEntity) xmlGetPredefinedEntity __attribute((alias("xmlGetPredefinedEntity__internal_alias")));
+#else
+#ifndef xmlGetPredefinedEntity
 extern __typeof (xmlGetPredefinedEntity) xmlGetPredefinedEntity__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetPredefinedEntity) xmlGetPredefinedEntity __attribute((alias("xmlGetPredefinedEntity__internal_alias")));
 #define xmlGetPredefinedEntity xmlGetPredefinedEntity__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlGetProp
+extern __typeof (xmlGetProp) xmlGetProp __attribute((alias("xmlGetProp__internal_alias")));
+#else
+#ifndef xmlGetProp
 extern __typeof (xmlGetProp) xmlGetProp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetProp) xmlGetProp __attribute((alias("xmlGetProp__internal_alias")));
 #define xmlGetProp xmlGetProp__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlGetRefs
+extern __typeof (xmlGetRefs) xmlGetRefs __attribute((alias("xmlGetRefs__internal_alias")));
+#else
+#ifndef xmlGetRefs
 extern __typeof (xmlGetRefs) xmlGetRefs__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetRefs) xmlGetRefs __attribute((alias("xmlGetRefs__internal_alias")));
 #define xmlGetRefs xmlGetRefs__internal_alias
+#endif
+#endif
 
+#ifdef bottom_threads
+#undef xmlGetThreadId
+extern __typeof (xmlGetThreadId) xmlGetThreadId __attribute((alias("xmlGetThreadId__internal_alias")));
+#else
+#ifndef xmlGetThreadId
 extern __typeof (xmlGetThreadId) xmlGetThreadId__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetThreadId) xmlGetThreadId __attribute((alias("xmlGetThreadId__internal_alias")));
 #define xmlGetThreadId xmlGetThreadId__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlGetUTF8Char
+extern __typeof (xmlGetUTF8Char) xmlGetUTF8Char __attribute((alias("xmlGetUTF8Char__internal_alias")));
+#else
+#ifndef xmlGetUTF8Char
 extern __typeof (xmlGetUTF8Char) xmlGetUTF8Char__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlGetUTF8Char) xmlGetUTF8Char __attribute((alias("xmlGetUTF8Char__internal_alias")));
 #define xmlGetUTF8Char xmlGetUTF8Char__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_LEGACY_ENABLED)
+#ifdef bottom_legacy
+#undef xmlHandleEntity
+extern __typeof (xmlHandleEntity) xmlHandleEntity __attribute((alias("xmlHandleEntity__internal_alias")));
+#else
+#ifndef xmlHandleEntity
 extern __typeof (xmlHandleEntity) xmlHandleEntity__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHandleEntity) xmlHandleEntity __attribute((alias("xmlHandleEntity__internal_alias")));
 #define xmlHandleEntity xmlHandleEntity__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlHasNsProp
+extern __typeof (xmlHasNsProp) xmlHasNsProp __attribute((alias("xmlHasNsProp__internal_alias")));
+#else
+#ifndef xmlHasNsProp
 extern __typeof (xmlHasNsProp) xmlHasNsProp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHasNsProp) xmlHasNsProp __attribute((alias("xmlHasNsProp__internal_alias")));
 #define xmlHasNsProp xmlHasNsProp__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlHasProp
+extern __typeof (xmlHasProp) xmlHasProp __attribute((alias("xmlHasProp__internal_alias")));
+#else
+#ifndef xmlHasProp
 extern __typeof (xmlHasProp) xmlHasProp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHasProp) xmlHasProp __attribute((alias("xmlHasProp__internal_alias")));
 #define xmlHasProp xmlHasProp__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashAddEntry
+extern __typeof (xmlHashAddEntry) xmlHashAddEntry __attribute((alias("xmlHashAddEntry__internal_alias")));
+#else
+#ifndef xmlHashAddEntry
 extern __typeof (xmlHashAddEntry) xmlHashAddEntry__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashAddEntry) xmlHashAddEntry __attribute((alias("xmlHashAddEntry__internal_alias")));
 #define xmlHashAddEntry xmlHashAddEntry__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashAddEntry2
+extern __typeof (xmlHashAddEntry2) xmlHashAddEntry2 __attribute((alias("xmlHashAddEntry2__internal_alias")));
+#else
+#ifndef xmlHashAddEntry2
 extern __typeof (xmlHashAddEntry2) xmlHashAddEntry2__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashAddEntry2) xmlHashAddEntry2 __attribute((alias("xmlHashAddEntry2__internal_alias")));
 #define xmlHashAddEntry2 xmlHashAddEntry2__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashAddEntry3
+extern __typeof (xmlHashAddEntry3) xmlHashAddEntry3 __attribute((alias("xmlHashAddEntry3__internal_alias")));
+#else
+#ifndef xmlHashAddEntry3
 extern __typeof (xmlHashAddEntry3) xmlHashAddEntry3__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashAddEntry3) xmlHashAddEntry3 __attribute((alias("xmlHashAddEntry3__internal_alias")));
 #define xmlHashAddEntry3 xmlHashAddEntry3__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashCopy
+extern __typeof (xmlHashCopy) xmlHashCopy __attribute((alias("xmlHashCopy__internal_alias")));
+#else
+#ifndef xmlHashCopy
 extern __typeof (xmlHashCopy) xmlHashCopy__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashCopy) xmlHashCopy __attribute((alias("xmlHashCopy__internal_alias")));
 #define xmlHashCopy xmlHashCopy__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashCreate
+extern __typeof (xmlHashCreate) xmlHashCreate __attribute((alias("xmlHashCreate__internal_alias")));
+#else
+#ifndef xmlHashCreate
 extern __typeof (xmlHashCreate) xmlHashCreate__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashCreate) xmlHashCreate __attribute((alias("xmlHashCreate__internal_alias")));
 #define xmlHashCreate xmlHashCreate__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashCreateDict
+extern __typeof (xmlHashCreateDict) xmlHashCreateDict __attribute((alias("xmlHashCreateDict__internal_alias")));
+#else
+#ifndef xmlHashCreateDict
 extern __typeof (xmlHashCreateDict) xmlHashCreateDict__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashCreateDict) xmlHashCreateDict __attribute((alias("xmlHashCreateDict__internal_alias")));
 #define xmlHashCreateDict xmlHashCreateDict__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashFree
+extern __typeof (xmlHashFree) xmlHashFree __attribute((alias("xmlHashFree__internal_alias")));
+#else
+#ifndef xmlHashFree
 extern __typeof (xmlHashFree) xmlHashFree__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashFree) xmlHashFree __attribute((alias("xmlHashFree__internal_alias")));
 #define xmlHashFree xmlHashFree__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashLookup
+extern __typeof (xmlHashLookup) xmlHashLookup __attribute((alias("xmlHashLookup__internal_alias")));
+#else
+#ifndef xmlHashLookup
 extern __typeof (xmlHashLookup) xmlHashLookup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashLookup) xmlHashLookup __attribute((alias("xmlHashLookup__internal_alias")));
 #define xmlHashLookup xmlHashLookup__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashLookup2
+extern __typeof (xmlHashLookup2) xmlHashLookup2 __attribute((alias("xmlHashLookup2__internal_alias")));
+#else
+#ifndef xmlHashLookup2
 extern __typeof (xmlHashLookup2) xmlHashLookup2__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashLookup2) xmlHashLookup2 __attribute((alias("xmlHashLookup2__internal_alias")));
 #define xmlHashLookup2 xmlHashLookup2__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashLookup3
+extern __typeof (xmlHashLookup3) xmlHashLookup3 __attribute((alias("xmlHashLookup3__internal_alias")));
+#else
+#ifndef xmlHashLookup3
 extern __typeof (xmlHashLookup3) xmlHashLookup3__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashLookup3) xmlHashLookup3 __attribute((alias("xmlHashLookup3__internal_alias")));
 #define xmlHashLookup3 xmlHashLookup3__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashQLookup
+extern __typeof (xmlHashQLookup) xmlHashQLookup __attribute((alias("xmlHashQLookup__internal_alias")));
+#else
+#ifndef xmlHashQLookup
 extern __typeof (xmlHashQLookup) xmlHashQLookup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashQLookup) xmlHashQLookup __attribute((alias("xmlHashQLookup__internal_alias")));
 #define xmlHashQLookup xmlHashQLookup__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashQLookup2
+extern __typeof (xmlHashQLookup2) xmlHashQLookup2 __attribute((alias("xmlHashQLookup2__internal_alias")));
+#else
+#ifndef xmlHashQLookup2
 extern __typeof (xmlHashQLookup2) xmlHashQLookup2__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashQLookup2) xmlHashQLookup2 __attribute((alias("xmlHashQLookup2__internal_alias")));
 #define xmlHashQLookup2 xmlHashQLookup2__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashQLookup3
+extern __typeof (xmlHashQLookup3) xmlHashQLookup3 __attribute((alias("xmlHashQLookup3__internal_alias")));
+#else
+#ifndef xmlHashQLookup3
 extern __typeof (xmlHashQLookup3) xmlHashQLookup3__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashQLookup3) xmlHashQLookup3 __attribute((alias("xmlHashQLookup3__internal_alias")));
 #define xmlHashQLookup3 xmlHashQLookup3__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashRemoveEntry
+extern __typeof (xmlHashRemoveEntry) xmlHashRemoveEntry __attribute((alias("xmlHashRemoveEntry__internal_alias")));
+#else
+#ifndef xmlHashRemoveEntry
 extern __typeof (xmlHashRemoveEntry) xmlHashRemoveEntry__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashRemoveEntry) xmlHashRemoveEntry __attribute((alias("xmlHashRemoveEntry__internal_alias")));
 #define xmlHashRemoveEntry xmlHashRemoveEntry__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashRemoveEntry2
+extern __typeof (xmlHashRemoveEntry2) xmlHashRemoveEntry2 __attribute((alias("xmlHashRemoveEntry2__internal_alias")));
+#else
+#ifndef xmlHashRemoveEntry2
 extern __typeof (xmlHashRemoveEntry2) xmlHashRemoveEntry2__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashRemoveEntry2) xmlHashRemoveEntry2 __attribute((alias("xmlHashRemoveEntry2__internal_alias")));
 #define xmlHashRemoveEntry2 xmlHashRemoveEntry2__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashRemoveEntry3
+extern __typeof (xmlHashRemoveEntry3) xmlHashRemoveEntry3 __attribute((alias("xmlHashRemoveEntry3__internal_alias")));
+#else
+#ifndef xmlHashRemoveEntry3
 extern __typeof (xmlHashRemoveEntry3) xmlHashRemoveEntry3__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashRemoveEntry3) xmlHashRemoveEntry3 __attribute((alias("xmlHashRemoveEntry3__internal_alias")));
 #define xmlHashRemoveEntry3 xmlHashRemoveEntry3__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashScan
+extern __typeof (xmlHashScan) xmlHashScan __attribute((alias("xmlHashScan__internal_alias")));
+#else
+#ifndef xmlHashScan
 extern __typeof (xmlHashScan) xmlHashScan__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashScan) xmlHashScan __attribute((alias("xmlHashScan__internal_alias")));
 #define xmlHashScan xmlHashScan__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashScan3
+extern __typeof (xmlHashScan3) xmlHashScan3 __attribute((alias("xmlHashScan3__internal_alias")));
+#else
+#ifndef xmlHashScan3
 extern __typeof (xmlHashScan3) xmlHashScan3__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashScan3) xmlHashScan3 __attribute((alias("xmlHashScan3__internal_alias")));
 #define xmlHashScan3 xmlHashScan3__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashScanFull
+extern __typeof (xmlHashScanFull) xmlHashScanFull __attribute((alias("xmlHashScanFull__internal_alias")));
+#else
+#ifndef xmlHashScanFull
 extern __typeof (xmlHashScanFull) xmlHashScanFull__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashScanFull) xmlHashScanFull __attribute((alias("xmlHashScanFull__internal_alias")));
 #define xmlHashScanFull xmlHashScanFull__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashScanFull3
+extern __typeof (xmlHashScanFull3) xmlHashScanFull3 __attribute((alias("xmlHashScanFull3__internal_alias")));
+#else
+#ifndef xmlHashScanFull3
 extern __typeof (xmlHashScanFull3) xmlHashScanFull3__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashScanFull3) xmlHashScanFull3 __attribute((alias("xmlHashScanFull3__internal_alias")));
 #define xmlHashScanFull3 xmlHashScanFull3__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashSize
+extern __typeof (xmlHashSize) xmlHashSize __attribute((alias("xmlHashSize__internal_alias")));
+#else
+#ifndef xmlHashSize
 extern __typeof (xmlHashSize) xmlHashSize__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashSize) xmlHashSize __attribute((alias("xmlHashSize__internal_alias")));
 #define xmlHashSize xmlHashSize__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashUpdateEntry
+extern __typeof (xmlHashUpdateEntry) xmlHashUpdateEntry __attribute((alias("xmlHashUpdateEntry__internal_alias")));
+#else
+#ifndef xmlHashUpdateEntry
 extern __typeof (xmlHashUpdateEntry) xmlHashUpdateEntry__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashUpdateEntry) xmlHashUpdateEntry __attribute((alias("xmlHashUpdateEntry__internal_alias")));
 #define xmlHashUpdateEntry xmlHashUpdateEntry__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashUpdateEntry2
+extern __typeof (xmlHashUpdateEntry2) xmlHashUpdateEntry2 __attribute((alias("xmlHashUpdateEntry2__internal_alias")));
+#else
+#ifndef xmlHashUpdateEntry2
 extern __typeof (xmlHashUpdateEntry2) xmlHashUpdateEntry2__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashUpdateEntry2) xmlHashUpdateEntry2 __attribute((alias("xmlHashUpdateEntry2__internal_alias")));
 #define xmlHashUpdateEntry2 xmlHashUpdateEntry2__internal_alias
+#endif
+#endif
 
+#ifdef bottom_hash
+#undef xmlHashUpdateEntry3
+extern __typeof (xmlHashUpdateEntry3) xmlHashUpdateEntry3 __attribute((alias("xmlHashUpdateEntry3__internal_alias")));
+#else
+#ifndef xmlHashUpdateEntry3
 extern __typeof (xmlHashUpdateEntry3) xmlHashUpdateEntry3__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlHashUpdateEntry3) xmlHashUpdateEntry3 __attribute((alias("xmlHashUpdateEntry3__internal_alias")));
 #define xmlHashUpdateEntry3 xmlHashUpdateEntry3__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlIOFTPClose
+extern __typeof (xmlIOFTPClose) xmlIOFTPClose __attribute((alias("xmlIOFTPClose__internal_alias")));
+#else
+#ifndef xmlIOFTPClose
 extern __typeof (xmlIOFTPClose) xmlIOFTPClose__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIOFTPClose) xmlIOFTPClose __attribute((alias("xmlIOFTPClose__internal_alias")));
 #define xmlIOFTPClose xmlIOFTPClose__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlIOFTPMatch
+extern __typeof (xmlIOFTPMatch) xmlIOFTPMatch __attribute((alias("xmlIOFTPMatch__internal_alias")));
+#else
+#ifndef xmlIOFTPMatch
 extern __typeof (xmlIOFTPMatch) xmlIOFTPMatch__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIOFTPMatch) xmlIOFTPMatch __attribute((alias("xmlIOFTPMatch__internal_alias")));
 #define xmlIOFTPMatch xmlIOFTPMatch__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlIOFTPOpen
+extern __typeof (xmlIOFTPOpen) xmlIOFTPOpen __attribute((alias("xmlIOFTPOpen__internal_alias")));
+#else
+#ifndef xmlIOFTPOpen
 extern __typeof (xmlIOFTPOpen) xmlIOFTPOpen__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIOFTPOpen) xmlIOFTPOpen __attribute((alias("xmlIOFTPOpen__internal_alias")));
 #define xmlIOFTPOpen xmlIOFTPOpen__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlIOFTPRead
+extern __typeof (xmlIOFTPRead) xmlIOFTPRead __attribute((alias("xmlIOFTPRead__internal_alias")));
+#else
+#ifndef xmlIOFTPRead
 extern __typeof (xmlIOFTPRead) xmlIOFTPRead__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIOFTPRead) xmlIOFTPRead __attribute((alias("xmlIOFTPRead__internal_alias")));
 #define xmlIOFTPRead xmlIOFTPRead__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTTP_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlIOHTTPClose
+extern __typeof (xmlIOHTTPClose) xmlIOHTTPClose __attribute((alias("xmlIOHTTPClose__internal_alias")));
+#else
+#ifndef xmlIOHTTPClose
 extern __typeof (xmlIOHTTPClose) xmlIOHTTPClose__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIOHTTPClose) xmlIOHTTPClose __attribute((alias("xmlIOHTTPClose__internal_alias")));
 #define xmlIOHTTPClose xmlIOHTTPClose__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTTP_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlIOHTTPMatch
+extern __typeof (xmlIOHTTPMatch) xmlIOHTTPMatch __attribute((alias("xmlIOHTTPMatch__internal_alias")));
+#else
+#ifndef xmlIOHTTPMatch
 extern __typeof (xmlIOHTTPMatch) xmlIOHTTPMatch__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIOHTTPMatch) xmlIOHTTPMatch __attribute((alias("xmlIOHTTPMatch__internal_alias")));
 #define xmlIOHTTPMatch xmlIOHTTPMatch__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTTP_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlIOHTTPOpen
+extern __typeof (xmlIOHTTPOpen) xmlIOHTTPOpen __attribute((alias("xmlIOHTTPOpen__internal_alias")));
+#else
+#ifndef xmlIOHTTPOpen
 extern __typeof (xmlIOHTTPOpen) xmlIOHTTPOpen__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIOHTTPOpen) xmlIOHTTPOpen __attribute((alias("xmlIOHTTPOpen__internal_alias")));
 #define xmlIOHTTPOpen xmlIOHTTPOpen__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTTP_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlIOHTTPOpenW
+extern __typeof (xmlIOHTTPOpenW) xmlIOHTTPOpenW __attribute((alias("xmlIOHTTPOpenW__internal_alias")));
+#else
+#ifndef xmlIOHTTPOpenW
 extern __typeof (xmlIOHTTPOpenW) xmlIOHTTPOpenW__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIOHTTPOpenW) xmlIOHTTPOpenW __attribute((alias("xmlIOHTTPOpenW__internal_alias")));
 #define xmlIOHTTPOpenW xmlIOHTTPOpenW__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTTP_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlIOHTTPRead
+extern __typeof (xmlIOHTTPRead) xmlIOHTTPRead __attribute((alias("xmlIOHTTPRead__internal_alias")));
+#else
+#ifndef xmlIOHTTPRead
 extern __typeof (xmlIOHTTPRead) xmlIOHTTPRead__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIOHTTPRead) xmlIOHTTPRead __attribute((alias("xmlIOHTTPRead__internal_alias")));
 #define xmlIOHTTPRead xmlIOHTTPRead__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_parser
+#undef xmlIOParseDTD
+extern __typeof (xmlIOParseDTD) xmlIOParseDTD __attribute((alias("xmlIOParseDTD__internal_alias")));
+#else
+#ifndef xmlIOParseDTD
 extern __typeof (xmlIOParseDTD) xmlIOParseDTD__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIOParseDTD) xmlIOParseDTD __attribute((alias("xmlIOParseDTD__internal_alias")));
 #define xmlIOParseDTD xmlIOParseDTD__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_encoding
+#undef xmlInitCharEncodingHandlers
+extern __typeof (xmlInitCharEncodingHandlers) xmlInitCharEncodingHandlers __attribute((alias("xmlInitCharEncodingHandlers__internal_alias")));
+#else
+#ifndef xmlInitCharEncodingHandlers
 extern __typeof (xmlInitCharEncodingHandlers) xmlInitCharEncodingHandlers__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlInitCharEncodingHandlers) xmlInitCharEncodingHandlers __attribute((alias("xmlInitCharEncodingHandlers__internal_alias")));
 #define xmlInitCharEncodingHandlers xmlInitCharEncodingHandlers__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlInitGlobals
+extern __typeof (xmlInitGlobals) xmlInitGlobals __attribute((alias("xmlInitGlobals__internal_alias")));
+#else
+#ifndef xmlInitGlobals
 extern __typeof (xmlInitGlobals) xmlInitGlobals__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlInitGlobals) xmlInitGlobals __attribute((alias("xmlInitGlobals__internal_alias")));
 #define xmlInitGlobals xmlInitGlobals__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlmemory
+#undef xmlInitMemory
+extern __typeof (xmlInitMemory) xmlInitMemory __attribute((alias("xmlInitMemory__internal_alias")));
+#else
+#ifndef xmlInitMemory
 extern __typeof (xmlInitMemory) xmlInitMemory__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlInitMemory) xmlInitMemory __attribute((alias("xmlInitMemory__internal_alias")));
 #define xmlInitMemory xmlInitMemory__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlInitNodeInfoSeq
+extern __typeof (xmlInitNodeInfoSeq) xmlInitNodeInfoSeq __attribute((alias("xmlInitNodeInfoSeq__internal_alias")));
+#else
+#ifndef xmlInitNodeInfoSeq
 extern __typeof (xmlInitNodeInfoSeq) xmlInitNodeInfoSeq__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlInitNodeInfoSeq) xmlInitNodeInfoSeq __attribute((alias("xmlInitNodeInfoSeq__internal_alias")));
 #define xmlInitNodeInfoSeq xmlInitNodeInfoSeq__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlInitParser
+extern __typeof (xmlInitParser) xmlInitParser __attribute((alias("xmlInitParser__internal_alias")));
+#else
+#ifndef xmlInitParser
 extern __typeof (xmlInitParser) xmlInitParser__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlInitParser) xmlInitParser __attribute((alias("xmlInitParser__internal_alias")));
 #define xmlInitParser xmlInitParser__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlInitParserCtxt
+extern __typeof (xmlInitParserCtxt) xmlInitParserCtxt __attribute((alias("xmlInitParserCtxt__internal_alias")));
+#else
+#ifndef xmlInitParserCtxt
 extern __typeof (xmlInitParserCtxt) xmlInitParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlInitParserCtxt) xmlInitParserCtxt __attribute((alias("xmlInitParserCtxt__internal_alias")));
 #define xmlInitParserCtxt xmlInitParserCtxt__internal_alias
+#endif
+#endif
 
+#ifdef bottom_threads
+#undef xmlInitThreads
+extern __typeof (xmlInitThreads) xmlInitThreads __attribute((alias("xmlInitThreads__internal_alias")));
+#else
+#ifndef xmlInitThreads
 extern __typeof (xmlInitThreads) xmlInitThreads__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlInitThreads) xmlInitThreads __attribute((alias("xmlInitThreads__internal_alias")));
 #define xmlInitThreads xmlInitThreads__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlInitializeCatalog
+extern __typeof (xmlInitializeCatalog) xmlInitializeCatalog __attribute((alias("xmlInitializeCatalog__internal_alias")));
+#else
+#ifndef xmlInitializeCatalog
 extern __typeof (xmlInitializeCatalog) xmlInitializeCatalog__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlInitializeCatalog) xmlInitializeCatalog __attribute((alias("xmlInitializeCatalog__internal_alias")));
 #define xmlInitializeCatalog xmlInitializeCatalog__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlInitializeGlobalState
+extern __typeof (xmlInitializeGlobalState) xmlInitializeGlobalState __attribute((alias("xmlInitializeGlobalState__internal_alias")));
+#else
+#ifndef xmlInitializeGlobalState
 extern __typeof (xmlInitializeGlobalState) xmlInitializeGlobalState__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlInitializeGlobalState) xmlInitializeGlobalState __attribute((alias("xmlInitializeGlobalState__internal_alias")));
 #define xmlInitializeGlobalState xmlInitializeGlobalState__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_LEGACY_ENABLED)
+#ifdef bottom_legacy
+#undef xmlInitializePredefinedEntities
+extern __typeof (xmlInitializePredefinedEntities) xmlInitializePredefinedEntities __attribute((alias("xmlInitializePredefinedEntities__internal_alias")));
+#else
+#ifndef xmlInitializePredefinedEntities
 extern __typeof (xmlInitializePredefinedEntities) xmlInitializePredefinedEntities__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlInitializePredefinedEntities) xmlInitializePredefinedEntities __attribute((alias("xmlInitializePredefinedEntities__internal_alias")));
 #define xmlInitializePredefinedEntities xmlInitializePredefinedEntities__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_chvalid
+#undef xmlIsBaseChar
+extern __typeof (xmlIsBaseChar) xmlIsBaseChar __attribute((alias("xmlIsBaseChar__internal_alias")));
+#else
+#ifndef xmlIsBaseChar
 extern __typeof (xmlIsBaseChar) xmlIsBaseChar__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIsBaseChar) xmlIsBaseChar __attribute((alias("xmlIsBaseChar__internal_alias")));
 #define xmlIsBaseChar xmlIsBaseChar__internal_alias
+#endif
+#endif
 
+#ifdef bottom_chvalid
+#undef xmlIsBlank
+extern __typeof (xmlIsBlank) xmlIsBlank __attribute((alias("xmlIsBlank__internal_alias")));
+#else
+#ifndef xmlIsBlank
 extern __typeof (xmlIsBlank) xmlIsBlank__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIsBlank) xmlIsBlank __attribute((alias("xmlIsBlank__internal_alias")));
 #define xmlIsBlank xmlIsBlank__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlIsBlankNode
+extern __typeof (xmlIsBlankNode) xmlIsBlankNode __attribute((alias("xmlIsBlankNode__internal_alias")));
+#else
+#ifndef xmlIsBlankNode
 extern __typeof (xmlIsBlankNode) xmlIsBlankNode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIsBlankNode) xmlIsBlankNode __attribute((alias("xmlIsBlankNode__internal_alias")));
 #define xmlIsBlankNode xmlIsBlankNode__internal_alias
+#endif
+#endif
 
+#ifdef bottom_chvalid
+#undef xmlIsChar
+extern __typeof (xmlIsChar) xmlIsChar __attribute((alias("xmlIsChar__internal_alias")));
+#else
+#ifndef xmlIsChar
 extern __typeof (xmlIsChar) xmlIsChar__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIsChar) xmlIsChar __attribute((alias("xmlIsChar__internal_alias")));
 #define xmlIsChar xmlIsChar__internal_alias
+#endif
+#endif
 
+#ifdef bottom_chvalid
+#undef xmlIsCombining
+extern __typeof (xmlIsCombining) xmlIsCombining __attribute((alias("xmlIsCombining__internal_alias")));
+#else
+#ifndef xmlIsCombining
 extern __typeof (xmlIsCombining) xmlIsCombining__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIsCombining) xmlIsCombining __attribute((alias("xmlIsCombining__internal_alias")));
 #define xmlIsCombining xmlIsCombining__internal_alias
+#endif
+#endif
 
+#ifdef bottom_chvalid
+#undef xmlIsDigit
+extern __typeof (xmlIsDigit) xmlIsDigit __attribute((alias("xmlIsDigit__internal_alias")));
+#else
+#ifndef xmlIsDigit
 extern __typeof (xmlIsDigit) xmlIsDigit__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIsDigit) xmlIsDigit __attribute((alias("xmlIsDigit__internal_alias")));
 #define xmlIsDigit xmlIsDigit__internal_alias
+#endif
+#endif
 
+#ifdef bottom_chvalid
+#undef xmlIsExtender
+extern __typeof (xmlIsExtender) xmlIsExtender __attribute((alias("xmlIsExtender__internal_alias")));
+#else
+#ifndef xmlIsExtender
 extern __typeof (xmlIsExtender) xmlIsExtender__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIsExtender) xmlIsExtender __attribute((alias("xmlIsExtender__internal_alias")));
 #define xmlIsExtender xmlIsExtender__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlIsID
+extern __typeof (xmlIsID) xmlIsID __attribute((alias("xmlIsID__internal_alias")));
+#else
+#ifndef xmlIsID
 extern __typeof (xmlIsID) xmlIsID__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIsID) xmlIsID __attribute((alias("xmlIsID__internal_alias")));
 #define xmlIsID xmlIsID__internal_alias
+#endif
+#endif
 
+#ifdef bottom_chvalid
+#undef xmlIsIdeographic
+extern __typeof (xmlIsIdeographic) xmlIsIdeographic __attribute((alias("xmlIsIdeographic__internal_alias")));
+#else
+#ifndef xmlIsIdeographic
 extern __typeof (xmlIsIdeographic) xmlIsIdeographic__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIsIdeographic) xmlIsIdeographic __attribute((alias("xmlIsIdeographic__internal_alias")));
 #define xmlIsIdeographic xmlIsIdeographic__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlIsLetter
+extern __typeof (xmlIsLetter) xmlIsLetter __attribute((alias("xmlIsLetter__internal_alias")));
+#else
+#ifndef xmlIsLetter
 extern __typeof (xmlIsLetter) xmlIsLetter__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIsLetter) xmlIsLetter __attribute((alias("xmlIsLetter__internal_alias")));
 #define xmlIsLetter xmlIsLetter__internal_alias
+#endif
+#endif
 
+#ifdef bottom_threads
+#undef xmlIsMainThread
+extern __typeof (xmlIsMainThread) xmlIsMainThread __attribute((alias("xmlIsMainThread__internal_alias")));
+#else
+#ifndef xmlIsMainThread
 extern __typeof (xmlIsMainThread) xmlIsMainThread__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIsMainThread) xmlIsMainThread __attribute((alias("xmlIsMainThread__internal_alias")));
 #define xmlIsMainThread xmlIsMainThread__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlIsMixedElement
+extern __typeof (xmlIsMixedElement) xmlIsMixedElement __attribute((alias("xmlIsMixedElement__internal_alias")));
+#else
+#ifndef xmlIsMixedElement
 extern __typeof (xmlIsMixedElement) xmlIsMixedElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIsMixedElement) xmlIsMixedElement __attribute((alias("xmlIsMixedElement__internal_alias")));
 #define xmlIsMixedElement xmlIsMixedElement__internal_alias
+#endif
+#endif
 
+#ifdef bottom_chvalid
+#undef xmlIsPubidChar
+extern __typeof (xmlIsPubidChar) xmlIsPubidChar __attribute((alias("xmlIsPubidChar__internal_alias")));
+#else
+#ifndef xmlIsPubidChar
 extern __typeof (xmlIsPubidChar) xmlIsPubidChar__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIsPubidChar) xmlIsPubidChar __attribute((alias("xmlIsPubidChar__internal_alias")));
 #define xmlIsPubidChar xmlIsPubidChar__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlIsRef
+extern __typeof (xmlIsRef) xmlIsRef __attribute((alias("xmlIsRef__internal_alias")));
+#else
+#ifndef xmlIsRef
 extern __typeof (xmlIsRef) xmlIsRef__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIsRef) xmlIsRef __attribute((alias("xmlIsRef__internal_alias")));
 #define xmlIsRef xmlIsRef__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlsave
+#undef xmlIsXHTML
+extern __typeof (xmlIsXHTML) xmlIsXHTML __attribute((alias("xmlIsXHTML__internal_alias")));
+#else
+#ifndef xmlIsXHTML
 extern __typeof (xmlIsXHTML) xmlIsXHTML__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlIsXHTML) xmlIsXHTML __attribute((alias("xmlIsXHTML__internal_alias")));
 #define xmlIsXHTML xmlIsXHTML__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlKeepBlanksDefault
+extern __typeof (xmlKeepBlanksDefault) xmlKeepBlanksDefault __attribute((alias("xmlKeepBlanksDefault__internal_alias")));
+#else
+#ifndef xmlKeepBlanksDefault
 extern __typeof (xmlKeepBlanksDefault) xmlKeepBlanksDefault__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlKeepBlanksDefault) xmlKeepBlanksDefault __attribute((alias("xmlKeepBlanksDefault__internal_alias")));
 #define xmlKeepBlanksDefault xmlKeepBlanksDefault__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlLineNumbersDefault
+extern __typeof (xmlLineNumbersDefault) xmlLineNumbersDefault __attribute((alias("xmlLineNumbersDefault__internal_alias")));
+#else
+#ifndef xmlLineNumbersDefault
 extern __typeof (xmlLineNumbersDefault) xmlLineNumbersDefault__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlLineNumbersDefault) xmlLineNumbersDefault __attribute((alias("xmlLineNumbersDefault__internal_alias")));
 #define xmlLineNumbersDefault xmlLineNumbersDefault__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlLinkGetData
+extern __typeof (xmlLinkGetData) xmlLinkGetData __attribute((alias("xmlLinkGetData__internal_alias")));
+#else
+#ifndef xmlLinkGetData
 extern __typeof (xmlLinkGetData) xmlLinkGetData__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlLinkGetData) xmlLinkGetData __attribute((alias("xmlLinkGetData__internal_alias")));
 #define xmlLinkGetData xmlLinkGetData__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListAppend
+extern __typeof (xmlListAppend) xmlListAppend __attribute((alias("xmlListAppend__internal_alias")));
+#else
+#ifndef xmlListAppend
 extern __typeof (xmlListAppend) xmlListAppend__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListAppend) xmlListAppend __attribute((alias("xmlListAppend__internal_alias")));
 #define xmlListAppend xmlListAppend__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListClear
+extern __typeof (xmlListClear) xmlListClear __attribute((alias("xmlListClear__internal_alias")));
+#else
+#ifndef xmlListClear
 extern __typeof (xmlListClear) xmlListClear__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListClear) xmlListClear __attribute((alias("xmlListClear__internal_alias")));
 #define xmlListClear xmlListClear__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListCopy
+extern __typeof (xmlListCopy) xmlListCopy __attribute((alias("xmlListCopy__internal_alias")));
+#else
+#ifndef xmlListCopy
 extern __typeof (xmlListCopy) xmlListCopy__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListCopy) xmlListCopy __attribute((alias("xmlListCopy__internal_alias")));
 #define xmlListCopy xmlListCopy__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListCreate
+extern __typeof (xmlListCreate) xmlListCreate __attribute((alias("xmlListCreate__internal_alias")));
+#else
+#ifndef xmlListCreate
 extern __typeof (xmlListCreate) xmlListCreate__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListCreate) xmlListCreate __attribute((alias("xmlListCreate__internal_alias")));
 #define xmlListCreate xmlListCreate__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListDelete
+extern __typeof (xmlListDelete) xmlListDelete __attribute((alias("xmlListDelete__internal_alias")));
+#else
+#ifndef xmlListDelete
 extern __typeof (xmlListDelete) xmlListDelete__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListDelete) xmlListDelete __attribute((alias("xmlListDelete__internal_alias")));
 #define xmlListDelete xmlListDelete__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListDup
+extern __typeof (xmlListDup) xmlListDup __attribute((alias("xmlListDup__internal_alias")));
+#else
+#ifndef xmlListDup
 extern __typeof (xmlListDup) xmlListDup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListDup) xmlListDup __attribute((alias("xmlListDup__internal_alias")));
 #define xmlListDup xmlListDup__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListEmpty
+extern __typeof (xmlListEmpty) xmlListEmpty __attribute((alias("xmlListEmpty__internal_alias")));
+#else
+#ifndef xmlListEmpty
 extern __typeof (xmlListEmpty) xmlListEmpty__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListEmpty) xmlListEmpty __attribute((alias("xmlListEmpty__internal_alias")));
 #define xmlListEmpty xmlListEmpty__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListEnd
+extern __typeof (xmlListEnd) xmlListEnd __attribute((alias("xmlListEnd__internal_alias")));
+#else
+#ifndef xmlListEnd
 extern __typeof (xmlListEnd) xmlListEnd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListEnd) xmlListEnd __attribute((alias("xmlListEnd__internal_alias")));
 #define xmlListEnd xmlListEnd__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListFront
+extern __typeof (xmlListFront) xmlListFront __attribute((alias("xmlListFront__internal_alias")));
+#else
+#ifndef xmlListFront
 extern __typeof (xmlListFront) xmlListFront__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListFront) xmlListFront __attribute((alias("xmlListFront__internal_alias")));
 #define xmlListFront xmlListFront__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListInsert
+extern __typeof (xmlListInsert) xmlListInsert __attribute((alias("xmlListInsert__internal_alias")));
+#else
+#ifndef xmlListInsert
 extern __typeof (xmlListInsert) xmlListInsert__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListInsert) xmlListInsert __attribute((alias("xmlListInsert__internal_alias")));
 #define xmlListInsert xmlListInsert__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListMerge
+extern __typeof (xmlListMerge) xmlListMerge __attribute((alias("xmlListMerge__internal_alias")));
+#else
+#ifndef xmlListMerge
 extern __typeof (xmlListMerge) xmlListMerge__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListMerge) xmlListMerge __attribute((alias("xmlListMerge__internal_alias")));
 #define xmlListMerge xmlListMerge__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListPopBack
+extern __typeof (xmlListPopBack) xmlListPopBack __attribute((alias("xmlListPopBack__internal_alias")));
+#else
+#ifndef xmlListPopBack
 extern __typeof (xmlListPopBack) xmlListPopBack__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListPopBack) xmlListPopBack __attribute((alias("xmlListPopBack__internal_alias")));
 #define xmlListPopBack xmlListPopBack__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListPopFront
+extern __typeof (xmlListPopFront) xmlListPopFront __attribute((alias("xmlListPopFront__internal_alias")));
+#else
+#ifndef xmlListPopFront
 extern __typeof (xmlListPopFront) xmlListPopFront__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListPopFront) xmlListPopFront __attribute((alias("xmlListPopFront__internal_alias")));
 #define xmlListPopFront xmlListPopFront__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListPushBack
+extern __typeof (xmlListPushBack) xmlListPushBack __attribute((alias("xmlListPushBack__internal_alias")));
+#else
+#ifndef xmlListPushBack
 extern __typeof (xmlListPushBack) xmlListPushBack__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListPushBack) xmlListPushBack __attribute((alias("xmlListPushBack__internal_alias")));
 #define xmlListPushBack xmlListPushBack__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListPushFront
+extern __typeof (xmlListPushFront) xmlListPushFront __attribute((alias("xmlListPushFront__internal_alias")));
+#else
+#ifndef xmlListPushFront
 extern __typeof (xmlListPushFront) xmlListPushFront__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListPushFront) xmlListPushFront __attribute((alias("xmlListPushFront__internal_alias")));
 #define xmlListPushFront xmlListPushFront__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListRemoveAll
+extern __typeof (xmlListRemoveAll) xmlListRemoveAll __attribute((alias("xmlListRemoveAll__internal_alias")));
+#else
+#ifndef xmlListRemoveAll
 extern __typeof (xmlListRemoveAll) xmlListRemoveAll__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListRemoveAll) xmlListRemoveAll __attribute((alias("xmlListRemoveAll__internal_alias")));
 #define xmlListRemoveAll xmlListRemoveAll__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListRemoveFirst
+extern __typeof (xmlListRemoveFirst) xmlListRemoveFirst __attribute((alias("xmlListRemoveFirst__internal_alias")));
+#else
+#ifndef xmlListRemoveFirst
 extern __typeof (xmlListRemoveFirst) xmlListRemoveFirst__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListRemoveFirst) xmlListRemoveFirst __attribute((alias("xmlListRemoveFirst__internal_alias")));
 #define xmlListRemoveFirst xmlListRemoveFirst__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListRemoveLast
+extern __typeof (xmlListRemoveLast) xmlListRemoveLast __attribute((alias("xmlListRemoveLast__internal_alias")));
+#else
+#ifndef xmlListRemoveLast
 extern __typeof (xmlListRemoveLast) xmlListRemoveLast__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListRemoveLast) xmlListRemoveLast __attribute((alias("xmlListRemoveLast__internal_alias")));
 #define xmlListRemoveLast xmlListRemoveLast__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListReverse
+extern __typeof (xmlListReverse) xmlListReverse __attribute((alias("xmlListReverse__internal_alias")));
+#else
+#ifndef xmlListReverse
 extern __typeof (xmlListReverse) xmlListReverse__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListReverse) xmlListReverse __attribute((alias("xmlListReverse__internal_alias")));
 #define xmlListReverse xmlListReverse__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListReverseSearch
+extern __typeof (xmlListReverseSearch) xmlListReverseSearch __attribute((alias("xmlListReverseSearch__internal_alias")));
+#else
+#ifndef xmlListReverseSearch
 extern __typeof (xmlListReverseSearch) xmlListReverseSearch__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListReverseSearch) xmlListReverseSearch __attribute((alias("xmlListReverseSearch__internal_alias")));
 #define xmlListReverseSearch xmlListReverseSearch__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListReverseWalk
+extern __typeof (xmlListReverseWalk) xmlListReverseWalk __attribute((alias("xmlListReverseWalk__internal_alias")));
+#else
+#ifndef xmlListReverseWalk
 extern __typeof (xmlListReverseWalk) xmlListReverseWalk__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListReverseWalk) xmlListReverseWalk __attribute((alias("xmlListReverseWalk__internal_alias")));
 #define xmlListReverseWalk xmlListReverseWalk__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListSearch
+extern __typeof (xmlListSearch) xmlListSearch __attribute((alias("xmlListSearch__internal_alias")));
+#else
+#ifndef xmlListSearch
 extern __typeof (xmlListSearch) xmlListSearch__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListSearch) xmlListSearch __attribute((alias("xmlListSearch__internal_alias")));
 #define xmlListSearch xmlListSearch__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListSize
+extern __typeof (xmlListSize) xmlListSize __attribute((alias("xmlListSize__internal_alias")));
+#else
+#ifndef xmlListSize
 extern __typeof (xmlListSize) xmlListSize__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListSize) xmlListSize __attribute((alias("xmlListSize__internal_alias")));
 #define xmlListSize xmlListSize__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListSort
+extern __typeof (xmlListSort) xmlListSort __attribute((alias("xmlListSort__internal_alias")));
+#else
+#ifndef xmlListSort
 extern __typeof (xmlListSort) xmlListSort__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListSort) xmlListSort __attribute((alias("xmlListSort__internal_alias")));
 #define xmlListSort xmlListSort__internal_alias
+#endif
+#endif
 
+#ifdef bottom_list
+#undef xmlListWalk
+extern __typeof (xmlListWalk) xmlListWalk __attribute((alias("xmlListWalk__internal_alias")));
+#else
+#ifndef xmlListWalk
 extern __typeof (xmlListWalk) xmlListWalk__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlListWalk) xmlListWalk __attribute((alias("xmlListWalk__internal_alias")));
 #define xmlListWalk xmlListWalk__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlLoadACatalog
+extern __typeof (xmlLoadACatalog) xmlLoadACatalog __attribute((alias("xmlLoadACatalog__internal_alias")));
+#else
+#ifndef xmlLoadACatalog
 extern __typeof (xmlLoadACatalog) xmlLoadACatalog__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlLoadACatalog) xmlLoadACatalog __attribute((alias("xmlLoadACatalog__internal_alias")));
 #define xmlLoadACatalog xmlLoadACatalog__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlLoadCatalog
+extern __typeof (xmlLoadCatalog) xmlLoadCatalog __attribute((alias("xmlLoadCatalog__internal_alias")));
+#else
+#ifndef xmlLoadCatalog
 extern __typeof (xmlLoadCatalog) xmlLoadCatalog__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlLoadCatalog) xmlLoadCatalog __attribute((alias("xmlLoadCatalog__internal_alias")));
 #define xmlLoadCatalog xmlLoadCatalog__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlLoadCatalogs
+extern __typeof (xmlLoadCatalogs) xmlLoadCatalogs __attribute((alias("xmlLoadCatalogs__internal_alias")));
+#else
+#ifndef xmlLoadCatalogs
 extern __typeof (xmlLoadCatalogs) xmlLoadCatalogs__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlLoadCatalogs) xmlLoadCatalogs __attribute((alias("xmlLoadCatalogs__internal_alias")));
 #define xmlLoadCatalogs xmlLoadCatalogs__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlLoadExternalEntity
+extern __typeof (xmlLoadExternalEntity) xmlLoadExternalEntity __attribute((alias("xmlLoadExternalEntity__internal_alias")));
+#else
+#ifndef xmlLoadExternalEntity
 extern __typeof (xmlLoadExternalEntity) xmlLoadExternalEntity__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlLoadExternalEntity) xmlLoadExternalEntity __attribute((alias("xmlLoadExternalEntity__internal_alias")));
 #define xmlLoadExternalEntity xmlLoadExternalEntity__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlLoadSGMLSuperCatalog
+extern __typeof (xmlLoadSGMLSuperCatalog) xmlLoadSGMLSuperCatalog __attribute((alias("xmlLoadSGMLSuperCatalog__internal_alias")));
+#else
+#ifndef xmlLoadSGMLSuperCatalog
 extern __typeof (xmlLoadSGMLSuperCatalog) xmlLoadSGMLSuperCatalog__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlLoadSGMLSuperCatalog) xmlLoadSGMLSuperCatalog __attribute((alias("xmlLoadSGMLSuperCatalog__internal_alias")));
 #define xmlLoadSGMLSuperCatalog xmlLoadSGMLSuperCatalog__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_threads
+#undef xmlLockLibrary
+extern __typeof (xmlLockLibrary) xmlLockLibrary __attribute((alias("xmlLockLibrary__internal_alias")));
+#else
+#ifndef xmlLockLibrary
 extern __typeof (xmlLockLibrary) xmlLockLibrary__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlLockLibrary) xmlLockLibrary __attribute((alias("xmlLockLibrary__internal_alias")));
 #define xmlLockLibrary xmlLockLibrary__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlLsCountNode
+extern __typeof (xmlLsCountNode) xmlLsCountNode __attribute((alias("xmlLsCountNode__internal_alias")));
+#else
+#ifndef xmlLsCountNode
 extern __typeof (xmlLsCountNode) xmlLsCountNode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlLsCountNode) xmlLsCountNode __attribute((alias("xmlLsCountNode__internal_alias")));
 #define xmlLsCountNode xmlLsCountNode__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlLsOneNode
+extern __typeof (xmlLsOneNode) xmlLsOneNode __attribute((alias("xmlLsOneNode__internal_alias")));
+#else
+#ifndef xmlLsOneNode
 extern __typeof (xmlLsOneNode) xmlLsOneNode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlLsOneNode) xmlLsOneNode __attribute((alias("xmlLsOneNode__internal_alias")));
 #define xmlLsOneNode xmlLsOneNode__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_xmlmemory
+#undef xmlMallocAtomicLoc
+extern __typeof (xmlMallocAtomicLoc) xmlMallocAtomicLoc __attribute((alias("xmlMallocAtomicLoc__internal_alias")));
+#else
+#ifndef xmlMallocAtomicLoc
 extern __typeof (xmlMallocAtomicLoc) xmlMallocAtomicLoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlMallocAtomicLoc) xmlMallocAtomicLoc __attribute((alias("xmlMallocAtomicLoc__internal_alias")));
 #define xmlMallocAtomicLoc xmlMallocAtomicLoc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlmemory
+#undef xmlMallocLoc
+extern __typeof (xmlMallocLoc) xmlMallocLoc __attribute((alias("xmlMallocLoc__internal_alias")));
+#else
+#ifndef xmlMallocLoc
 extern __typeof (xmlMallocLoc) xmlMallocLoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlMallocLoc) xmlMallocLoc __attribute((alias("xmlMallocLoc__internal_alias")));
 #define xmlMallocLoc xmlMallocLoc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlmemory
+#undef xmlMemBlocks
+extern __typeof (xmlMemBlocks) xmlMemBlocks __attribute((alias("xmlMemBlocks__internal_alias")));
+#else
+#ifndef xmlMemBlocks
 extern __typeof (xmlMemBlocks) xmlMemBlocks__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlMemBlocks) xmlMemBlocks __attribute((alias("xmlMemBlocks__internal_alias")));
 #define xmlMemBlocks xmlMemBlocks__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlmemory
+#undef xmlMemDisplay
+extern __typeof (xmlMemDisplay) xmlMemDisplay __attribute((alias("xmlMemDisplay__internal_alias")));
+#else
+#ifndef xmlMemDisplay
 extern __typeof (xmlMemDisplay) xmlMemDisplay__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlMemDisplay) xmlMemDisplay __attribute((alias("xmlMemDisplay__internal_alias")));
 #define xmlMemDisplay xmlMemDisplay__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlmemory
+#undef xmlMemFree
+extern __typeof (xmlMemFree) xmlMemFree __attribute((alias("xmlMemFree__internal_alias")));
+#else
+#ifndef xmlMemFree
 extern __typeof (xmlMemFree) xmlMemFree__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlMemFree) xmlMemFree __attribute((alias("xmlMemFree__internal_alias")));
 #define xmlMemFree xmlMemFree__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlmemory
+#undef xmlMemGet
+extern __typeof (xmlMemGet) xmlMemGet __attribute((alias("xmlMemGet__internal_alias")));
+#else
+#ifndef xmlMemGet
 extern __typeof (xmlMemGet) xmlMemGet__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlMemGet) xmlMemGet __attribute((alias("xmlMemGet__internal_alias")));
 #define xmlMemGet xmlMemGet__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlmemory
+#undef xmlMemMalloc
+extern __typeof (xmlMemMalloc) xmlMemMalloc __attribute((alias("xmlMemMalloc__internal_alias")));
+#else
+#ifndef xmlMemMalloc
 extern __typeof (xmlMemMalloc) xmlMemMalloc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlMemMalloc) xmlMemMalloc __attribute((alias("xmlMemMalloc__internal_alias")));
 #define xmlMemMalloc xmlMemMalloc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlmemory
+#undef xmlMemRealloc
+extern __typeof (xmlMemRealloc) xmlMemRealloc __attribute((alias("xmlMemRealloc__internal_alias")));
+#else
+#ifndef xmlMemRealloc
 extern __typeof (xmlMemRealloc) xmlMemRealloc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlMemRealloc) xmlMemRealloc __attribute((alias("xmlMemRealloc__internal_alias")));
 #define xmlMemRealloc xmlMemRealloc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlmemory
+#undef xmlMemSetup
+extern __typeof (xmlMemSetup) xmlMemSetup __attribute((alias("xmlMemSetup__internal_alias")));
+#else
+#ifndef xmlMemSetup
 extern __typeof (xmlMemSetup) xmlMemSetup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlMemSetup) xmlMemSetup __attribute((alias("xmlMemSetup__internal_alias")));
 #define xmlMemSetup xmlMemSetup__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlmemory
+#undef xmlMemShow
+extern __typeof (xmlMemShow) xmlMemShow __attribute((alias("xmlMemShow__internal_alias")));
+#else
+#ifndef xmlMemShow
 extern __typeof (xmlMemShow) xmlMemShow__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlMemShow) xmlMemShow __attribute((alias("xmlMemShow__internal_alias")));
 #define xmlMemShow xmlMemShow__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlmemory
+#undef xmlMemStrdupLoc
+extern __typeof (xmlMemStrdupLoc) xmlMemStrdupLoc __attribute((alias("xmlMemStrdupLoc__internal_alias")));
+#else
+#ifndef xmlMemStrdupLoc
 extern __typeof (xmlMemStrdupLoc) xmlMemStrdupLoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlMemStrdupLoc) xmlMemStrdupLoc __attribute((alias("xmlMemStrdupLoc__internal_alias")));
 #define xmlMemStrdupLoc xmlMemStrdupLoc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlmemory
+#undef xmlMemUsed
+extern __typeof (xmlMemUsed) xmlMemUsed __attribute((alias("xmlMemUsed__internal_alias")));
+#else
+#ifndef xmlMemUsed
 extern __typeof (xmlMemUsed) xmlMemUsed__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlMemUsed) xmlMemUsed __attribute((alias("xmlMemUsed__internal_alias")));
 #define xmlMemUsed xmlMemUsed__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlmemory
+#undef xmlMemoryDump
+extern __typeof (xmlMemoryDump) xmlMemoryDump __attribute((alias("xmlMemoryDump__internal_alias")));
+#else
+#ifndef xmlMemoryDump
 extern __typeof (xmlMemoryDump) xmlMemoryDump__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlMemoryDump) xmlMemoryDump __attribute((alias("xmlMemoryDump__internal_alias")));
 #define xmlMemoryDump xmlMemoryDump__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlmemory
+#undef xmlMemoryStrdup
+extern __typeof (xmlMemoryStrdup) xmlMemoryStrdup __attribute((alias("xmlMemoryStrdup__internal_alias")));
+#else
+#ifndef xmlMemoryStrdup
 extern __typeof (xmlMemoryStrdup) xmlMemoryStrdup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlMemoryStrdup) xmlMemoryStrdup __attribute((alias("xmlMemoryStrdup__internal_alias")));
 #define xmlMemoryStrdup xmlMemoryStrdup__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_MODULES_ENABLED)
+#ifdef bottom_xmlmodule
+#undef xmlModuleClose
+extern __typeof (xmlModuleClose) xmlModuleClose __attribute((alias("xmlModuleClose__internal_alias")));
+#else
+#ifndef xmlModuleClose
 extern __typeof (xmlModuleClose) xmlModuleClose__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlModuleClose) xmlModuleClose __attribute((alias("xmlModuleClose__internal_alias")));
 #define xmlModuleClose xmlModuleClose__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_MODULES_ENABLED)
+#ifdef bottom_xmlmodule
+#undef xmlModuleFree
+extern __typeof (xmlModuleFree) xmlModuleFree __attribute((alias("xmlModuleFree__internal_alias")));
+#else
+#ifndef xmlModuleFree
 extern __typeof (xmlModuleFree) xmlModuleFree__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlModuleFree) xmlModuleFree __attribute((alias("xmlModuleFree__internal_alias")));
 #define xmlModuleFree xmlModuleFree__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_MODULES_ENABLED)
+#ifdef bottom_xmlmodule
+#undef xmlModuleOpen
+extern __typeof (xmlModuleOpen) xmlModuleOpen __attribute((alias("xmlModuleOpen__internal_alias")));
+#else
+#ifndef xmlModuleOpen
 extern __typeof (xmlModuleOpen) xmlModuleOpen__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlModuleOpen) xmlModuleOpen __attribute((alias("xmlModuleOpen__internal_alias")));
 #define xmlModuleOpen xmlModuleOpen__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_MODULES_ENABLED)
+#ifdef bottom_xmlmodule
+#undef xmlModuleSymbol
+extern __typeof (xmlModuleSymbol) xmlModuleSymbol __attribute((alias("xmlModuleSymbol__internal_alias")));
+#else
+#ifndef xmlModuleSymbol
 extern __typeof (xmlModuleSymbol) xmlModuleSymbol__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlModuleSymbol) xmlModuleSymbol __attribute((alias("xmlModuleSymbol__internal_alias")));
 #define xmlModuleSymbol xmlModuleSymbol__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_threads
+#undef xmlMutexLock
+extern __typeof (xmlMutexLock) xmlMutexLock __attribute((alias("xmlMutexLock__internal_alias")));
+#else
+#ifndef xmlMutexLock
 extern __typeof (xmlMutexLock) xmlMutexLock__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlMutexLock) xmlMutexLock __attribute((alias("xmlMutexLock__internal_alias")));
 #define xmlMutexLock xmlMutexLock__internal_alias
+#endif
+#endif
 
+#ifdef bottom_threads
+#undef xmlMutexUnlock
+extern __typeof (xmlMutexUnlock) xmlMutexUnlock __attribute((alias("xmlMutexUnlock__internal_alias")));
+#else
+#ifndef xmlMutexUnlock
 extern __typeof (xmlMutexUnlock) xmlMutexUnlock__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlMutexUnlock) xmlMutexUnlock __attribute((alias("xmlMutexUnlock__internal_alias")));
 #define xmlMutexUnlock xmlMutexUnlock__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_LEGACY_ENABLED)
+#ifdef bottom_legacy
+#undef xmlNamespaceParseNCName
+extern __typeof (xmlNamespaceParseNCName) xmlNamespaceParseNCName __attribute((alias("xmlNamespaceParseNCName__internal_alias")));
+#else
+#ifndef xmlNamespaceParseNCName
 extern __typeof (xmlNamespaceParseNCName) xmlNamespaceParseNCName__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNamespaceParseNCName) xmlNamespaceParseNCName __attribute((alias("xmlNamespaceParseNCName__internal_alias")));
 #define xmlNamespaceParseNCName xmlNamespaceParseNCName__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_LEGACY_ENABLED)
+#ifdef bottom_legacy
+#undef xmlNamespaceParseNSDef
+extern __typeof (xmlNamespaceParseNSDef) xmlNamespaceParseNSDef __attribute((alias("xmlNamespaceParseNSDef__internal_alias")));
+#else
+#ifndef xmlNamespaceParseNSDef
 extern __typeof (xmlNamespaceParseNSDef) xmlNamespaceParseNSDef__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNamespaceParseNSDef) xmlNamespaceParseNSDef __attribute((alias("xmlNamespaceParseNSDef__internal_alias")));
 #define xmlNamespaceParseNSDef xmlNamespaceParseNSDef__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_LEGACY_ENABLED)
+#ifdef bottom_legacy
+#undef xmlNamespaceParseQName
+extern __typeof (xmlNamespaceParseQName) xmlNamespaceParseQName __attribute((alias("xmlNamespaceParseQName__internal_alias")));
+#else
+#ifndef xmlNamespaceParseQName
 extern __typeof (xmlNamespaceParseQName) xmlNamespaceParseQName__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNamespaceParseQName) xmlNamespaceParseQName __attribute((alias("xmlNamespaceParseQName__internal_alias")));
 #define xmlNamespaceParseQName xmlNamespaceParseQName__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_nanoftp
+#undef xmlNanoFTPCheckResponse
+extern __typeof (xmlNanoFTPCheckResponse) xmlNanoFTPCheckResponse __attribute((alias("xmlNanoFTPCheckResponse__internal_alias")));
+#else
+#ifndef xmlNanoFTPCheckResponse
 extern __typeof (xmlNanoFTPCheckResponse) xmlNanoFTPCheckResponse__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoFTPCheckResponse) xmlNanoFTPCheckResponse __attribute((alias("xmlNanoFTPCheckResponse__internal_alias")));
 #define xmlNanoFTPCheckResponse xmlNanoFTPCheckResponse__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_nanoftp
+#undef xmlNanoFTPCleanup
+extern __typeof (xmlNanoFTPCleanup) xmlNanoFTPCleanup __attribute((alias("xmlNanoFTPCleanup__internal_alias")));
+#else
+#ifndef xmlNanoFTPCleanup
 extern __typeof (xmlNanoFTPCleanup) xmlNanoFTPCleanup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoFTPCleanup) xmlNanoFTPCleanup __attribute((alias("xmlNanoFTPCleanup__internal_alias")));
 #define xmlNanoFTPCleanup xmlNanoFTPCleanup__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_nanoftp
+#undef xmlNanoFTPClose
+extern __typeof (xmlNanoFTPClose) xmlNanoFTPClose __attribute((alias("xmlNanoFTPClose__internal_alias")));
+#else
+#ifndef xmlNanoFTPClose
 extern __typeof (xmlNanoFTPClose) xmlNanoFTPClose__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoFTPClose) xmlNanoFTPClose __attribute((alias("xmlNanoFTPClose__internal_alias")));
 #define xmlNanoFTPClose xmlNanoFTPClose__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_nanoftp
+#undef xmlNanoFTPCloseConnection
+extern __typeof (xmlNanoFTPCloseConnection) xmlNanoFTPCloseConnection __attribute((alias("xmlNanoFTPCloseConnection__internal_alias")));
+#else
+#ifndef xmlNanoFTPCloseConnection
 extern __typeof (xmlNanoFTPCloseConnection) xmlNanoFTPCloseConnection__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoFTPCloseConnection) xmlNanoFTPCloseConnection __attribute((alias("xmlNanoFTPCloseConnection__internal_alias")));
 #define xmlNanoFTPCloseConnection xmlNanoFTPCloseConnection__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_nanoftp
+#undef xmlNanoFTPConnect
+extern __typeof (xmlNanoFTPConnect) xmlNanoFTPConnect __attribute((alias("xmlNanoFTPConnect__internal_alias")));
+#else
+#ifndef xmlNanoFTPConnect
 extern __typeof (xmlNanoFTPConnect) xmlNanoFTPConnect__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoFTPConnect) xmlNanoFTPConnect __attribute((alias("xmlNanoFTPConnect__internal_alias")));
 #define xmlNanoFTPConnect xmlNanoFTPConnect__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_nanoftp
+#undef xmlNanoFTPConnectTo
+extern __typeof (xmlNanoFTPConnectTo) xmlNanoFTPConnectTo __attribute((alias("xmlNanoFTPConnectTo__internal_alias")));
+#else
+#ifndef xmlNanoFTPConnectTo
 extern __typeof (xmlNanoFTPConnectTo) xmlNanoFTPConnectTo__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoFTPConnectTo) xmlNanoFTPConnectTo __attribute((alias("xmlNanoFTPConnectTo__internal_alias")));
 #define xmlNanoFTPConnectTo xmlNanoFTPConnectTo__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_nanoftp
+#undef xmlNanoFTPCwd
+extern __typeof (xmlNanoFTPCwd) xmlNanoFTPCwd __attribute((alias("xmlNanoFTPCwd__internal_alias")));
+#else
+#ifndef xmlNanoFTPCwd
 extern __typeof (xmlNanoFTPCwd) xmlNanoFTPCwd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoFTPCwd) xmlNanoFTPCwd __attribute((alias("xmlNanoFTPCwd__internal_alias")));
 #define xmlNanoFTPCwd xmlNanoFTPCwd__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_nanoftp
+#undef xmlNanoFTPDele
+extern __typeof (xmlNanoFTPDele) xmlNanoFTPDele __attribute((alias("xmlNanoFTPDele__internal_alias")));
+#else
+#ifndef xmlNanoFTPDele
 extern __typeof (xmlNanoFTPDele) xmlNanoFTPDele__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoFTPDele) xmlNanoFTPDele __attribute((alias("xmlNanoFTPDele__internal_alias")));
 #define xmlNanoFTPDele xmlNanoFTPDele__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_nanoftp
+#undef xmlNanoFTPFreeCtxt
+extern __typeof (xmlNanoFTPFreeCtxt) xmlNanoFTPFreeCtxt __attribute((alias("xmlNanoFTPFreeCtxt__internal_alias")));
+#else
+#ifndef xmlNanoFTPFreeCtxt
 extern __typeof (xmlNanoFTPFreeCtxt) xmlNanoFTPFreeCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoFTPFreeCtxt) xmlNanoFTPFreeCtxt __attribute((alias("xmlNanoFTPFreeCtxt__internal_alias")));
 #define xmlNanoFTPFreeCtxt xmlNanoFTPFreeCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_nanoftp
+#undef xmlNanoFTPGet
+extern __typeof (xmlNanoFTPGet) xmlNanoFTPGet __attribute((alias("xmlNanoFTPGet__internal_alias")));
+#else
+#ifndef xmlNanoFTPGet
 extern __typeof (xmlNanoFTPGet) xmlNanoFTPGet__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoFTPGet) xmlNanoFTPGet __attribute((alias("xmlNanoFTPGet__internal_alias")));
 #define xmlNanoFTPGet xmlNanoFTPGet__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_nanoftp
+#undef xmlNanoFTPGetConnection
+extern __typeof (xmlNanoFTPGetConnection) xmlNanoFTPGetConnection __attribute((alias("xmlNanoFTPGetConnection__internal_alias")));
+#else
+#ifndef xmlNanoFTPGetConnection
 extern __typeof (xmlNanoFTPGetConnection) xmlNanoFTPGetConnection__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoFTPGetConnection) xmlNanoFTPGetConnection __attribute((alias("xmlNanoFTPGetConnection__internal_alias")));
 #define xmlNanoFTPGetConnection xmlNanoFTPGetConnection__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_nanoftp
+#undef xmlNanoFTPGetResponse
+extern __typeof (xmlNanoFTPGetResponse) xmlNanoFTPGetResponse __attribute((alias("xmlNanoFTPGetResponse__internal_alias")));
+#else
+#ifndef xmlNanoFTPGetResponse
 extern __typeof (xmlNanoFTPGetResponse) xmlNanoFTPGetResponse__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoFTPGetResponse) xmlNanoFTPGetResponse __attribute((alias("xmlNanoFTPGetResponse__internal_alias")));
 #define xmlNanoFTPGetResponse xmlNanoFTPGetResponse__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_nanoftp
+#undef xmlNanoFTPGetSocket
+extern __typeof (xmlNanoFTPGetSocket) xmlNanoFTPGetSocket __attribute((alias("xmlNanoFTPGetSocket__internal_alias")));
+#else
+#ifndef xmlNanoFTPGetSocket
 extern __typeof (xmlNanoFTPGetSocket) xmlNanoFTPGetSocket__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoFTPGetSocket) xmlNanoFTPGetSocket __attribute((alias("xmlNanoFTPGetSocket__internal_alias")));
 #define xmlNanoFTPGetSocket xmlNanoFTPGetSocket__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_nanoftp
+#undef xmlNanoFTPInit
+extern __typeof (xmlNanoFTPInit) xmlNanoFTPInit __attribute((alias("xmlNanoFTPInit__internal_alias")));
+#else
+#ifndef xmlNanoFTPInit
 extern __typeof (xmlNanoFTPInit) xmlNanoFTPInit__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoFTPInit) xmlNanoFTPInit __attribute((alias("xmlNanoFTPInit__internal_alias")));
 #define xmlNanoFTPInit xmlNanoFTPInit__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_nanoftp
+#undef xmlNanoFTPList
+extern __typeof (xmlNanoFTPList) xmlNanoFTPList __attribute((alias("xmlNanoFTPList__internal_alias")));
+#else
+#ifndef xmlNanoFTPList
 extern __typeof (xmlNanoFTPList) xmlNanoFTPList__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoFTPList) xmlNanoFTPList __attribute((alias("xmlNanoFTPList__internal_alias")));
 #define xmlNanoFTPList xmlNanoFTPList__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_nanoftp
+#undef xmlNanoFTPNewCtxt
+extern __typeof (xmlNanoFTPNewCtxt) xmlNanoFTPNewCtxt __attribute((alias("xmlNanoFTPNewCtxt__internal_alias")));
+#else
+#ifndef xmlNanoFTPNewCtxt
 extern __typeof (xmlNanoFTPNewCtxt) xmlNanoFTPNewCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoFTPNewCtxt) xmlNanoFTPNewCtxt __attribute((alias("xmlNanoFTPNewCtxt__internal_alias")));
 #define xmlNanoFTPNewCtxt xmlNanoFTPNewCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_nanoftp
+#undef xmlNanoFTPOpen
+extern __typeof (xmlNanoFTPOpen) xmlNanoFTPOpen __attribute((alias("xmlNanoFTPOpen__internal_alias")));
+#else
+#ifndef xmlNanoFTPOpen
 extern __typeof (xmlNanoFTPOpen) xmlNanoFTPOpen__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoFTPOpen) xmlNanoFTPOpen __attribute((alias("xmlNanoFTPOpen__internal_alias")));
 #define xmlNanoFTPOpen xmlNanoFTPOpen__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_nanoftp
+#undef xmlNanoFTPProxy
+extern __typeof (xmlNanoFTPProxy) xmlNanoFTPProxy __attribute((alias("xmlNanoFTPProxy__internal_alias")));
+#else
+#ifndef xmlNanoFTPProxy
 extern __typeof (xmlNanoFTPProxy) xmlNanoFTPProxy__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoFTPProxy) xmlNanoFTPProxy __attribute((alias("xmlNanoFTPProxy__internal_alias")));
 #define xmlNanoFTPProxy xmlNanoFTPProxy__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_nanoftp
+#undef xmlNanoFTPQuit
+extern __typeof (xmlNanoFTPQuit) xmlNanoFTPQuit __attribute((alias("xmlNanoFTPQuit__internal_alias")));
+#else
+#ifndef xmlNanoFTPQuit
 extern __typeof (xmlNanoFTPQuit) xmlNanoFTPQuit__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoFTPQuit) xmlNanoFTPQuit __attribute((alias("xmlNanoFTPQuit__internal_alias")));
 #define xmlNanoFTPQuit xmlNanoFTPQuit__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_nanoftp
+#undef xmlNanoFTPRead
+extern __typeof (xmlNanoFTPRead) xmlNanoFTPRead __attribute((alias("xmlNanoFTPRead__internal_alias")));
+#else
+#ifndef xmlNanoFTPRead
 extern __typeof (xmlNanoFTPRead) xmlNanoFTPRead__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoFTPRead) xmlNanoFTPRead __attribute((alias("xmlNanoFTPRead__internal_alias")));
 #define xmlNanoFTPRead xmlNanoFTPRead__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_nanoftp
+#undef xmlNanoFTPScanProxy
+extern __typeof (xmlNanoFTPScanProxy) xmlNanoFTPScanProxy __attribute((alias("xmlNanoFTPScanProxy__internal_alias")));
+#else
+#ifndef xmlNanoFTPScanProxy
 extern __typeof (xmlNanoFTPScanProxy) xmlNanoFTPScanProxy__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoFTPScanProxy) xmlNanoFTPScanProxy __attribute((alias("xmlNanoFTPScanProxy__internal_alias")));
 #define xmlNanoFTPScanProxy xmlNanoFTPScanProxy__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_FTP_ENABLED)
+#ifdef bottom_nanoftp
+#undef xmlNanoFTPUpdateURL
+extern __typeof (xmlNanoFTPUpdateURL) xmlNanoFTPUpdateURL __attribute((alias("xmlNanoFTPUpdateURL__internal_alias")));
+#else
+#ifndef xmlNanoFTPUpdateURL
 extern __typeof (xmlNanoFTPUpdateURL) xmlNanoFTPUpdateURL__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoFTPUpdateURL) xmlNanoFTPUpdateURL __attribute((alias("xmlNanoFTPUpdateURL__internal_alias")));
 #define xmlNanoFTPUpdateURL xmlNanoFTPUpdateURL__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTTP_ENABLED)
+#ifdef bottom_nanohttp
+#undef xmlNanoHTTPAuthHeader
+extern __typeof (xmlNanoHTTPAuthHeader) xmlNanoHTTPAuthHeader __attribute((alias("xmlNanoHTTPAuthHeader__internal_alias")));
+#else
+#ifndef xmlNanoHTTPAuthHeader
 extern __typeof (xmlNanoHTTPAuthHeader) xmlNanoHTTPAuthHeader__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoHTTPAuthHeader) xmlNanoHTTPAuthHeader __attribute((alias("xmlNanoHTTPAuthHeader__internal_alias")));
 #define xmlNanoHTTPAuthHeader xmlNanoHTTPAuthHeader__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTTP_ENABLED)
+#ifdef bottom_nanohttp
+#undef xmlNanoHTTPCleanup
+extern __typeof (xmlNanoHTTPCleanup) xmlNanoHTTPCleanup __attribute((alias("xmlNanoHTTPCleanup__internal_alias")));
+#else
+#ifndef xmlNanoHTTPCleanup
 extern __typeof (xmlNanoHTTPCleanup) xmlNanoHTTPCleanup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoHTTPCleanup) xmlNanoHTTPCleanup __attribute((alias("xmlNanoHTTPCleanup__internal_alias")));
 #define xmlNanoHTTPCleanup xmlNanoHTTPCleanup__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTTP_ENABLED)
+#ifdef bottom_nanohttp
+#undef xmlNanoHTTPClose
+extern __typeof (xmlNanoHTTPClose) xmlNanoHTTPClose __attribute((alias("xmlNanoHTTPClose__internal_alias")));
+#else
+#ifndef xmlNanoHTTPClose
 extern __typeof (xmlNanoHTTPClose) xmlNanoHTTPClose__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoHTTPClose) xmlNanoHTTPClose __attribute((alias("xmlNanoHTTPClose__internal_alias")));
 #define xmlNanoHTTPClose xmlNanoHTTPClose__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTTP_ENABLED)
+#ifdef bottom_nanohttp
+#undef xmlNanoHTTPContentLength
+extern __typeof (xmlNanoHTTPContentLength) xmlNanoHTTPContentLength __attribute((alias("xmlNanoHTTPContentLength__internal_alias")));
+#else
+#ifndef xmlNanoHTTPContentLength
 extern __typeof (xmlNanoHTTPContentLength) xmlNanoHTTPContentLength__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoHTTPContentLength) xmlNanoHTTPContentLength __attribute((alias("xmlNanoHTTPContentLength__internal_alias")));
 #define xmlNanoHTTPContentLength xmlNanoHTTPContentLength__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTTP_ENABLED)
+#ifdef bottom_nanohttp
+#undef xmlNanoHTTPEncoding
+extern __typeof (xmlNanoHTTPEncoding) xmlNanoHTTPEncoding __attribute((alias("xmlNanoHTTPEncoding__internal_alias")));
+#else
+#ifndef xmlNanoHTTPEncoding
 extern __typeof (xmlNanoHTTPEncoding) xmlNanoHTTPEncoding__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoHTTPEncoding) xmlNanoHTTPEncoding __attribute((alias("xmlNanoHTTPEncoding__internal_alias")));
 #define xmlNanoHTTPEncoding xmlNanoHTTPEncoding__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTTP_ENABLED)
+#ifdef bottom_nanohttp
+#undef xmlNanoHTTPFetch
+extern __typeof (xmlNanoHTTPFetch) xmlNanoHTTPFetch __attribute((alias("xmlNanoHTTPFetch__internal_alias")));
+#else
+#ifndef xmlNanoHTTPFetch
 extern __typeof (xmlNanoHTTPFetch) xmlNanoHTTPFetch__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoHTTPFetch) xmlNanoHTTPFetch __attribute((alias("xmlNanoHTTPFetch__internal_alias")));
 #define xmlNanoHTTPFetch xmlNanoHTTPFetch__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTTP_ENABLED)
+#ifdef bottom_nanohttp
+#undef xmlNanoHTTPInit
+extern __typeof (xmlNanoHTTPInit) xmlNanoHTTPInit __attribute((alias("xmlNanoHTTPInit__internal_alias")));
+#else
+#ifndef xmlNanoHTTPInit
 extern __typeof (xmlNanoHTTPInit) xmlNanoHTTPInit__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoHTTPInit) xmlNanoHTTPInit __attribute((alias("xmlNanoHTTPInit__internal_alias")));
 #define xmlNanoHTTPInit xmlNanoHTTPInit__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTTP_ENABLED)
+#ifdef bottom_nanohttp
+#undef xmlNanoHTTPMethod
+extern __typeof (xmlNanoHTTPMethod) xmlNanoHTTPMethod __attribute((alias("xmlNanoHTTPMethod__internal_alias")));
+#else
+#ifndef xmlNanoHTTPMethod
 extern __typeof (xmlNanoHTTPMethod) xmlNanoHTTPMethod__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoHTTPMethod) xmlNanoHTTPMethod __attribute((alias("xmlNanoHTTPMethod__internal_alias")));
 #define xmlNanoHTTPMethod xmlNanoHTTPMethod__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTTP_ENABLED)
+#ifdef bottom_nanohttp
+#undef xmlNanoHTTPMethodRedir
+extern __typeof (xmlNanoHTTPMethodRedir) xmlNanoHTTPMethodRedir __attribute((alias("xmlNanoHTTPMethodRedir__internal_alias")));
+#else
+#ifndef xmlNanoHTTPMethodRedir
 extern __typeof (xmlNanoHTTPMethodRedir) xmlNanoHTTPMethodRedir__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoHTTPMethodRedir) xmlNanoHTTPMethodRedir __attribute((alias("xmlNanoHTTPMethodRedir__internal_alias")));
 #define xmlNanoHTTPMethodRedir xmlNanoHTTPMethodRedir__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTTP_ENABLED)
+#ifdef bottom_nanohttp
+#undef xmlNanoHTTPMimeType
+extern __typeof (xmlNanoHTTPMimeType) xmlNanoHTTPMimeType __attribute((alias("xmlNanoHTTPMimeType__internal_alias")));
+#else
+#ifndef xmlNanoHTTPMimeType
 extern __typeof (xmlNanoHTTPMimeType) xmlNanoHTTPMimeType__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoHTTPMimeType) xmlNanoHTTPMimeType __attribute((alias("xmlNanoHTTPMimeType__internal_alias")));
 #define xmlNanoHTTPMimeType xmlNanoHTTPMimeType__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTTP_ENABLED)
+#ifdef bottom_nanohttp
+#undef xmlNanoHTTPOpen
+extern __typeof (xmlNanoHTTPOpen) xmlNanoHTTPOpen __attribute((alias("xmlNanoHTTPOpen__internal_alias")));
+#else
+#ifndef xmlNanoHTTPOpen
 extern __typeof (xmlNanoHTTPOpen) xmlNanoHTTPOpen__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoHTTPOpen) xmlNanoHTTPOpen __attribute((alias("xmlNanoHTTPOpen__internal_alias")));
 #define xmlNanoHTTPOpen xmlNanoHTTPOpen__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTTP_ENABLED)
+#ifdef bottom_nanohttp
+#undef xmlNanoHTTPOpenRedir
+extern __typeof (xmlNanoHTTPOpenRedir) xmlNanoHTTPOpenRedir __attribute((alias("xmlNanoHTTPOpenRedir__internal_alias")));
+#else
+#ifndef xmlNanoHTTPOpenRedir
 extern __typeof (xmlNanoHTTPOpenRedir) xmlNanoHTTPOpenRedir__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoHTTPOpenRedir) xmlNanoHTTPOpenRedir __attribute((alias("xmlNanoHTTPOpenRedir__internal_alias")));
 #define xmlNanoHTTPOpenRedir xmlNanoHTTPOpenRedir__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTTP_ENABLED)
+#ifdef bottom_nanohttp
+#undef xmlNanoHTTPRead
+extern __typeof (xmlNanoHTTPRead) xmlNanoHTTPRead __attribute((alias("xmlNanoHTTPRead__internal_alias")));
+#else
+#ifndef xmlNanoHTTPRead
 extern __typeof (xmlNanoHTTPRead) xmlNanoHTTPRead__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoHTTPRead) xmlNanoHTTPRead __attribute((alias("xmlNanoHTTPRead__internal_alias")));
 #define xmlNanoHTTPRead xmlNanoHTTPRead__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTTP_ENABLED)
+#ifdef bottom_nanohttp
+#undef xmlNanoHTTPRedir
+extern __typeof (xmlNanoHTTPRedir) xmlNanoHTTPRedir __attribute((alias("xmlNanoHTTPRedir__internal_alias")));
+#else
+#ifndef xmlNanoHTTPRedir
 extern __typeof (xmlNanoHTTPRedir) xmlNanoHTTPRedir__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoHTTPRedir) xmlNanoHTTPRedir __attribute((alias("xmlNanoHTTPRedir__internal_alias")));
 #define xmlNanoHTTPRedir xmlNanoHTTPRedir__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTTP_ENABLED)
+#ifdef bottom_nanohttp
+#undef xmlNanoHTTPReturnCode
+extern __typeof (xmlNanoHTTPReturnCode) xmlNanoHTTPReturnCode __attribute((alias("xmlNanoHTTPReturnCode__internal_alias")));
+#else
+#ifndef xmlNanoHTTPReturnCode
 extern __typeof (xmlNanoHTTPReturnCode) xmlNanoHTTPReturnCode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoHTTPReturnCode) xmlNanoHTTPReturnCode __attribute((alias("xmlNanoHTTPReturnCode__internal_alias")));
 #define xmlNanoHTTPReturnCode xmlNanoHTTPReturnCode__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTTP_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_nanohttp
+#undef xmlNanoHTTPSave
+extern __typeof (xmlNanoHTTPSave) xmlNanoHTTPSave __attribute((alias("xmlNanoHTTPSave__internal_alias")));
+#else
+#ifndef xmlNanoHTTPSave
 extern __typeof (xmlNanoHTTPSave) xmlNanoHTTPSave__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoHTTPSave) xmlNanoHTTPSave __attribute((alias("xmlNanoHTTPSave__internal_alias")));
 #define xmlNanoHTTPSave xmlNanoHTTPSave__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTTP_ENABLED)
+#ifdef bottom_nanohttp
+#undef xmlNanoHTTPScanProxy
+extern __typeof (xmlNanoHTTPScanProxy) xmlNanoHTTPScanProxy __attribute((alias("xmlNanoHTTPScanProxy__internal_alias")));
+#else
+#ifndef xmlNanoHTTPScanProxy
 extern __typeof (xmlNanoHTTPScanProxy) xmlNanoHTTPScanProxy__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNanoHTTPScanProxy) xmlNanoHTTPScanProxy __attribute((alias("xmlNanoHTTPScanProxy__internal_alias")));
 #define xmlNanoHTTPScanProxy xmlNanoHTTPScanProxy__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED) && defined(LIBXML_AUTOMATA_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlNewAutomata
+extern __typeof (xmlNewAutomata) xmlNewAutomata __attribute((alias("xmlNewAutomata__internal_alias")));
+#else
+#ifndef xmlNewAutomata
 extern __typeof (xmlNewAutomata) xmlNewAutomata__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewAutomata) xmlNewAutomata __attribute((alias("xmlNewAutomata__internal_alias")));
 #define xmlNewAutomata xmlNewAutomata__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNewCDataBlock
+extern __typeof (xmlNewCDataBlock) xmlNewCDataBlock __attribute((alias("xmlNewCDataBlock__internal_alias")));
+#else
+#ifndef xmlNewCDataBlock
 extern __typeof (xmlNewCDataBlock) xmlNewCDataBlock__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewCDataBlock) xmlNewCDataBlock __attribute((alias("xmlNewCDataBlock__internal_alias")));
 #define xmlNewCDataBlock xmlNewCDataBlock__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlNewCatalog
+extern __typeof (xmlNewCatalog) xmlNewCatalog __attribute((alias("xmlNewCatalog__internal_alias")));
+#else
+#ifndef xmlNewCatalog
 extern __typeof (xmlNewCatalog) xmlNewCatalog__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewCatalog) xmlNewCatalog __attribute((alias("xmlNewCatalog__internal_alias")));
 #define xmlNewCatalog xmlNewCatalog__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_encoding
+#undef xmlNewCharEncodingHandler
+extern __typeof (xmlNewCharEncodingHandler) xmlNewCharEncodingHandler __attribute((alias("xmlNewCharEncodingHandler__internal_alias")));
+#else
+#ifndef xmlNewCharEncodingHandler
 extern __typeof (xmlNewCharEncodingHandler) xmlNewCharEncodingHandler__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewCharEncodingHandler) xmlNewCharEncodingHandler __attribute((alias("xmlNewCharEncodingHandler__internal_alias")));
 #define xmlNewCharEncodingHandler xmlNewCharEncodingHandler__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNewCharRef
+extern __typeof (xmlNewCharRef) xmlNewCharRef __attribute((alias("xmlNewCharRef__internal_alias")));
+#else
+#ifndef xmlNewCharRef
 extern __typeof (xmlNewCharRef) xmlNewCharRef__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewCharRef) xmlNewCharRef __attribute((alias("xmlNewCharRef__internal_alias")));
 #define xmlNewCharRef xmlNewCharRef__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_tree
+#undef xmlNewChild
+extern __typeof (xmlNewChild) xmlNewChild __attribute((alias("xmlNewChild__internal_alias")));
+#else
+#ifndef xmlNewChild
 extern __typeof (xmlNewChild) xmlNewChild__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewChild) xmlNewChild __attribute((alias("xmlNewChild__internal_alias")));
 #define xmlNewChild xmlNewChild__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNewComment
+extern __typeof (xmlNewComment) xmlNewComment __attribute((alias("xmlNewComment__internal_alias")));
+#else
+#ifndef xmlNewComment
 extern __typeof (xmlNewComment) xmlNewComment__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewComment) xmlNewComment __attribute((alias("xmlNewComment__internal_alias")));
 #define xmlNewComment xmlNewComment__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNewDoc
+extern __typeof (xmlNewDoc) xmlNewDoc __attribute((alias("xmlNewDoc__internal_alias")));
+#else
+#ifndef xmlNewDoc
 extern __typeof (xmlNewDoc) xmlNewDoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewDoc) xmlNewDoc __attribute((alias("xmlNewDoc__internal_alias")));
 #define xmlNewDoc xmlNewDoc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNewDocComment
+extern __typeof (xmlNewDocComment) xmlNewDocComment __attribute((alias("xmlNewDocComment__internal_alias")));
+#else
+#ifndef xmlNewDocComment
 extern __typeof (xmlNewDocComment) xmlNewDocComment__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewDocComment) xmlNewDocComment __attribute((alias("xmlNewDocComment__internal_alias")));
 #define xmlNewDocComment xmlNewDocComment__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlNewDocElementContent
+extern __typeof (xmlNewDocElementContent) xmlNewDocElementContent __attribute((alias("xmlNewDocElementContent__internal_alias")));
+#else
+#ifndef xmlNewDocElementContent
 extern __typeof (xmlNewDocElementContent) xmlNewDocElementContent__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewDocElementContent) xmlNewDocElementContent __attribute((alias("xmlNewDocElementContent__internal_alias")));
 #define xmlNewDocElementContent xmlNewDocElementContent__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_tree
+#undef xmlNewDocFragment
+extern __typeof (xmlNewDocFragment) xmlNewDocFragment __attribute((alias("xmlNewDocFragment__internal_alias")));
+#else
+#ifndef xmlNewDocFragment
 extern __typeof (xmlNewDocFragment) xmlNewDocFragment__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewDocFragment) xmlNewDocFragment __attribute((alias("xmlNewDocFragment__internal_alias")));
 #define xmlNewDocFragment xmlNewDocFragment__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNewDocNode
+extern __typeof (xmlNewDocNode) xmlNewDocNode __attribute((alias("xmlNewDocNode__internal_alias")));
+#else
+#ifndef xmlNewDocNode
 extern __typeof (xmlNewDocNode) xmlNewDocNode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewDocNode) xmlNewDocNode __attribute((alias("xmlNewDocNode__internal_alias")));
 #define xmlNewDocNode xmlNewDocNode__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNewDocNodeEatName
+extern __typeof (xmlNewDocNodeEatName) xmlNewDocNodeEatName __attribute((alias("xmlNewDocNodeEatName__internal_alias")));
+#else
+#ifndef xmlNewDocNodeEatName
 extern __typeof (xmlNewDocNodeEatName) xmlNewDocNodeEatName__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewDocNodeEatName) xmlNewDocNodeEatName __attribute((alias("xmlNewDocNodeEatName__internal_alias")));
 #define xmlNewDocNodeEatName xmlNewDocNodeEatName__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNewDocPI
+extern __typeof (xmlNewDocPI) xmlNewDocPI __attribute((alias("xmlNewDocPI__internal_alias")));
+#else
+#ifndef xmlNewDocPI
 extern __typeof (xmlNewDocPI) xmlNewDocPI__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewDocPI) xmlNewDocPI __attribute((alias("xmlNewDocPI__internal_alias")));
 #define xmlNewDocPI xmlNewDocPI__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNewDocProp
+extern __typeof (xmlNewDocProp) xmlNewDocProp __attribute((alias("xmlNewDocProp__internal_alias")));
+#else
+#ifndef xmlNewDocProp
 extern __typeof (xmlNewDocProp) xmlNewDocProp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewDocProp) xmlNewDocProp __attribute((alias("xmlNewDocProp__internal_alias")));
 #define xmlNewDocProp xmlNewDocProp__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_tree
+#undef xmlNewDocRawNode
+extern __typeof (xmlNewDocRawNode) xmlNewDocRawNode __attribute((alias("xmlNewDocRawNode__internal_alias")));
+#else
+#ifndef xmlNewDocRawNode
 extern __typeof (xmlNewDocRawNode) xmlNewDocRawNode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewDocRawNode) xmlNewDocRawNode __attribute((alias("xmlNewDocRawNode__internal_alias")));
 #define xmlNewDocRawNode xmlNewDocRawNode__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNewDocText
+extern __typeof (xmlNewDocText) xmlNewDocText __attribute((alias("xmlNewDocText__internal_alias")));
+#else
+#ifndef xmlNewDocText
 extern __typeof (xmlNewDocText) xmlNewDocText__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewDocText) xmlNewDocText __attribute((alias("xmlNewDocText__internal_alias")));
 #define xmlNewDocText xmlNewDocText__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNewDocTextLen
+extern __typeof (xmlNewDocTextLen) xmlNewDocTextLen __attribute((alias("xmlNewDocTextLen__internal_alias")));
+#else
+#ifndef xmlNewDocTextLen
 extern __typeof (xmlNewDocTextLen) xmlNewDocTextLen__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewDocTextLen) xmlNewDocTextLen __attribute((alias("xmlNewDocTextLen__internal_alias")));
 #define xmlNewDocTextLen xmlNewDocTextLen__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNewDtd
+extern __typeof (xmlNewDtd) xmlNewDtd __attribute((alias("xmlNewDtd__internal_alias")));
+#else
+#ifndef xmlNewDtd
 extern __typeof (xmlNewDtd) xmlNewDtd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewDtd) xmlNewDtd __attribute((alias("xmlNewDtd__internal_alias")));
 #define xmlNewDtd xmlNewDtd__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlNewElementContent
+extern __typeof (xmlNewElementContent) xmlNewElementContent __attribute((alias("xmlNewElementContent__internal_alias")));
+#else
+#ifndef xmlNewElementContent
 extern __typeof (xmlNewElementContent) xmlNewElementContent__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewElementContent) xmlNewElementContent __attribute((alias("xmlNewElementContent__internal_alias")));
 #define xmlNewElementContent xmlNewElementContent__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlNewEntityInputStream
+extern __typeof (xmlNewEntityInputStream) xmlNewEntityInputStream __attribute((alias("xmlNewEntityInputStream__internal_alias")));
+#else
+#ifndef xmlNewEntityInputStream
 extern __typeof (xmlNewEntityInputStream) xmlNewEntityInputStream__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewEntityInputStream) xmlNewEntityInputStream __attribute((alias("xmlNewEntityInputStream__internal_alias")));
 #define xmlNewEntityInputStream xmlNewEntityInputStream__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_LEGACY_ENABLED)
+#ifdef bottom_legacy
+#undef xmlNewGlobalNs
+extern __typeof (xmlNewGlobalNs) xmlNewGlobalNs __attribute((alias("xmlNewGlobalNs__internal_alias")));
+#else
+#ifndef xmlNewGlobalNs
 extern __typeof (xmlNewGlobalNs) xmlNewGlobalNs__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewGlobalNs) xmlNewGlobalNs __attribute((alias("xmlNewGlobalNs__internal_alias")));
 #define xmlNewGlobalNs xmlNewGlobalNs__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlNewIOInputStream
+extern __typeof (xmlNewIOInputStream) xmlNewIOInputStream __attribute((alias("xmlNewIOInputStream__internal_alias")));
+#else
+#ifndef xmlNewIOInputStream
 extern __typeof (xmlNewIOInputStream) xmlNewIOInputStream__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewIOInputStream) xmlNewIOInputStream __attribute((alias("xmlNewIOInputStream__internal_alias")));
 #define xmlNewIOInputStream xmlNewIOInputStream__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlNewInputFromFile
+extern __typeof (xmlNewInputFromFile) xmlNewInputFromFile __attribute((alias("xmlNewInputFromFile__internal_alias")));
+#else
+#ifndef xmlNewInputFromFile
 extern __typeof (xmlNewInputFromFile) xmlNewInputFromFile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewInputFromFile) xmlNewInputFromFile __attribute((alias("xmlNewInputFromFile__internal_alias")));
 #define xmlNewInputFromFile xmlNewInputFromFile__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlNewInputStream
+extern __typeof (xmlNewInputStream) xmlNewInputStream __attribute((alias("xmlNewInputStream__internal_alias")));
+#else
+#ifndef xmlNewInputStream
 extern __typeof (xmlNewInputStream) xmlNewInputStream__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewInputStream) xmlNewInputStream __attribute((alias("xmlNewInputStream__internal_alias")));
 #define xmlNewInputStream xmlNewInputStream__internal_alias
+#endif
+#endif
 
+#ifdef bottom_threads
+#undef xmlNewMutex
+extern __typeof (xmlNewMutex) xmlNewMutex __attribute((alias("xmlNewMutex__internal_alias")));
+#else
+#ifndef xmlNewMutex
 extern __typeof (xmlNewMutex) xmlNewMutex__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewMutex) xmlNewMutex __attribute((alias("xmlNewMutex__internal_alias")));
 #define xmlNewMutex xmlNewMutex__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNewNode
+extern __typeof (xmlNewNode) xmlNewNode __attribute((alias("xmlNewNode__internal_alias")));
+#else
+#ifndef xmlNewNode
 extern __typeof (xmlNewNode) xmlNewNode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewNode) xmlNewNode __attribute((alias("xmlNewNode__internal_alias")));
 #define xmlNewNode xmlNewNode__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNewNodeEatName
+extern __typeof (xmlNewNodeEatName) xmlNewNodeEatName __attribute((alias("xmlNewNodeEatName__internal_alias")));
+#else
+#ifndef xmlNewNodeEatName
 extern __typeof (xmlNewNodeEatName) xmlNewNodeEatName__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewNodeEatName) xmlNewNodeEatName __attribute((alias("xmlNewNodeEatName__internal_alias")));
 #define xmlNewNodeEatName xmlNewNodeEatName__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNewNs
+extern __typeof (xmlNewNs) xmlNewNs __attribute((alias("xmlNewNs__internal_alias")));
+#else
+#ifndef xmlNewNs
 extern __typeof (xmlNewNs) xmlNewNs__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewNs) xmlNewNs __attribute((alias("xmlNewNs__internal_alias")));
 #define xmlNewNs xmlNewNs__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNewNsProp
+extern __typeof (xmlNewNsProp) xmlNewNsProp __attribute((alias("xmlNewNsProp__internal_alias")));
+#else
+#ifndef xmlNewNsProp
 extern __typeof (xmlNewNsProp) xmlNewNsProp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewNsProp) xmlNewNsProp __attribute((alias("xmlNewNsProp__internal_alias")));
 #define xmlNewNsProp xmlNewNsProp__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNewNsPropEatName
+extern __typeof (xmlNewNsPropEatName) xmlNewNsPropEatName __attribute((alias("xmlNewNsPropEatName__internal_alias")));
+#else
+#ifndef xmlNewNsPropEatName
 extern __typeof (xmlNewNsPropEatName) xmlNewNsPropEatName__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewNsPropEatName) xmlNewNsPropEatName __attribute((alias("xmlNewNsPropEatName__internal_alias")));
 #define xmlNewNsPropEatName xmlNewNsPropEatName__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNewPI
+extern __typeof (xmlNewPI) xmlNewPI __attribute((alias("xmlNewPI__internal_alias")));
+#else
+#ifndef xmlNewPI
 extern __typeof (xmlNewPI) xmlNewPI__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewPI) xmlNewPI __attribute((alias("xmlNewPI__internal_alias")));
 #define xmlNewPI xmlNewPI__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlNewParserCtxt
+extern __typeof (xmlNewParserCtxt) xmlNewParserCtxt __attribute((alias("xmlNewParserCtxt__internal_alias")));
+#else
+#ifndef xmlNewParserCtxt
 extern __typeof (xmlNewParserCtxt) xmlNewParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewParserCtxt) xmlNewParserCtxt __attribute((alias("xmlNewParserCtxt__internal_alias")));
 #define xmlNewParserCtxt xmlNewParserCtxt__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_tree
+#undef xmlNewProp
+extern __typeof (xmlNewProp) xmlNewProp __attribute((alias("xmlNewProp__internal_alias")));
+#else
+#ifndef xmlNewProp
 extern __typeof (xmlNewProp) xmlNewProp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewProp) xmlNewProp __attribute((alias("xmlNewProp__internal_alias")));
 #define xmlNewProp xmlNewProp__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_threads
+#undef xmlNewRMutex
+extern __typeof (xmlNewRMutex) xmlNewRMutex __attribute((alias("xmlNewRMutex__internal_alias")));
+#else
+#ifndef xmlNewRMutex
 extern __typeof (xmlNewRMutex) xmlNewRMutex__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewRMutex) xmlNewRMutex __attribute((alias("xmlNewRMutex__internal_alias")));
 #define xmlNewRMutex xmlNewRMutex__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNewReference
+extern __typeof (xmlNewReference) xmlNewReference __attribute((alias("xmlNewReference__internal_alias")));
+#else
+#ifndef xmlNewReference
 extern __typeof (xmlNewReference) xmlNewReference__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewReference) xmlNewReference __attribute((alias("xmlNewReference__internal_alias")));
 #define xmlNewReference xmlNewReference__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlNewStringInputStream
+extern __typeof (xmlNewStringInputStream) xmlNewStringInputStream __attribute((alias("xmlNewStringInputStream__internal_alias")));
+#else
+#ifndef xmlNewStringInputStream
 extern __typeof (xmlNewStringInputStream) xmlNewStringInputStream__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewStringInputStream) xmlNewStringInputStream __attribute((alias("xmlNewStringInputStream__internal_alias")));
 #define xmlNewStringInputStream xmlNewStringInputStream__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNewText
+extern __typeof (xmlNewText) xmlNewText __attribute((alias("xmlNewText__internal_alias")));
+#else
+#ifndef xmlNewText
 extern __typeof (xmlNewText) xmlNewText__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewText) xmlNewText __attribute((alias("xmlNewText__internal_alias")));
 #define xmlNewText xmlNewText__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_tree
+#undef xmlNewTextChild
+extern __typeof (xmlNewTextChild) xmlNewTextChild __attribute((alias("xmlNewTextChild__internal_alias")));
+#else
+#ifndef xmlNewTextChild
 extern __typeof (xmlNewTextChild) xmlNewTextChild__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewTextChild) xmlNewTextChild __attribute((alias("xmlNewTextChild__internal_alias")));
 #define xmlNewTextChild xmlNewTextChild__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNewTextLen
+extern __typeof (xmlNewTextLen) xmlNewTextLen __attribute((alias("xmlNewTextLen__internal_alias")));
+#else
+#ifndef xmlNewTextLen
 extern __typeof (xmlNewTextLen) xmlNewTextLen__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewTextLen) xmlNewTextLen __attribute((alias("xmlNewTextLen__internal_alias")));
 #define xmlNewTextLen xmlNewTextLen__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlNewTextReader
+extern __typeof (xmlNewTextReader) xmlNewTextReader __attribute((alias("xmlNewTextReader__internal_alias")));
+#else
+#ifndef xmlNewTextReader
 extern __typeof (xmlNewTextReader) xmlNewTextReader__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewTextReader) xmlNewTextReader __attribute((alias("xmlNewTextReader__internal_alias")));
 #define xmlNewTextReader xmlNewTextReader__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlNewTextReaderFilename
+extern __typeof (xmlNewTextReaderFilename) xmlNewTextReaderFilename __attribute((alias("xmlNewTextReaderFilename__internal_alias")));
+#else
+#ifndef xmlNewTextReaderFilename
 extern __typeof (xmlNewTextReaderFilename) xmlNewTextReaderFilename__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewTextReaderFilename) xmlNewTextReaderFilename __attribute((alias("xmlNewTextReaderFilename__internal_alias")));
 #define xmlNewTextReaderFilename xmlNewTextReaderFilename__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlNewTextWriter
+extern __typeof (xmlNewTextWriter) xmlNewTextWriter __attribute((alias("xmlNewTextWriter__internal_alias")));
+#else
+#ifndef xmlNewTextWriter
 extern __typeof (xmlNewTextWriter) xmlNewTextWriter__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewTextWriter) xmlNewTextWriter __attribute((alias("xmlNewTextWriter__internal_alias")));
 #define xmlNewTextWriter xmlNewTextWriter__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlNewTextWriterDoc
+extern __typeof (xmlNewTextWriterDoc) xmlNewTextWriterDoc __attribute((alias("xmlNewTextWriterDoc__internal_alias")));
+#else
+#ifndef xmlNewTextWriterDoc
 extern __typeof (xmlNewTextWriterDoc) xmlNewTextWriterDoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewTextWriterDoc) xmlNewTextWriterDoc __attribute((alias("xmlNewTextWriterDoc__internal_alias")));
 #define xmlNewTextWriterDoc xmlNewTextWriterDoc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlNewTextWriterFilename
+extern __typeof (xmlNewTextWriterFilename) xmlNewTextWriterFilename __attribute((alias("xmlNewTextWriterFilename__internal_alias")));
+#else
+#ifndef xmlNewTextWriterFilename
 extern __typeof (xmlNewTextWriterFilename) xmlNewTextWriterFilename__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewTextWriterFilename) xmlNewTextWriterFilename __attribute((alias("xmlNewTextWriterFilename__internal_alias")));
 #define xmlNewTextWriterFilename xmlNewTextWriterFilename__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlNewTextWriterMemory
+extern __typeof (xmlNewTextWriterMemory) xmlNewTextWriterMemory __attribute((alias("xmlNewTextWriterMemory__internal_alias")));
+#else
+#ifndef xmlNewTextWriterMemory
 extern __typeof (xmlNewTextWriterMemory) xmlNewTextWriterMemory__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewTextWriterMemory) xmlNewTextWriterMemory __attribute((alias("xmlNewTextWriterMemory__internal_alias")));
 #define xmlNewTextWriterMemory xmlNewTextWriterMemory__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlNewTextWriterPushParser
+extern __typeof (xmlNewTextWriterPushParser) xmlNewTextWriterPushParser __attribute((alias("xmlNewTextWriterPushParser__internal_alias")));
+#else
+#ifndef xmlNewTextWriterPushParser
 extern __typeof (xmlNewTextWriterPushParser) xmlNewTextWriterPushParser__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewTextWriterPushParser) xmlNewTextWriterPushParser __attribute((alias("xmlNewTextWriterPushParser__internal_alias")));
 #define xmlNewTextWriterPushParser xmlNewTextWriterPushParser__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlNewTextWriterTree
+extern __typeof (xmlNewTextWriterTree) xmlNewTextWriterTree __attribute((alias("xmlNewTextWriterTree__internal_alias")));
+#else
+#ifndef xmlNewTextWriterTree
 extern __typeof (xmlNewTextWriterTree) xmlNewTextWriterTree__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewTextWriterTree) xmlNewTextWriterTree __attribute((alias("xmlNewTextWriterTree__internal_alias")));
 #define xmlNewTextWriterTree xmlNewTextWriterTree__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlNewValidCtxt
+extern __typeof (xmlNewValidCtxt) xmlNewValidCtxt __attribute((alias("xmlNewValidCtxt__internal_alias")));
+#else
+#ifndef xmlNewValidCtxt
 extern __typeof (xmlNewValidCtxt) xmlNewValidCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNewValidCtxt) xmlNewValidCtxt __attribute((alias("xmlNewValidCtxt__internal_alias")));
 #define xmlNewValidCtxt xmlNewValidCtxt__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlNextChar
+extern __typeof (xmlNextChar) xmlNextChar __attribute((alias("xmlNextChar__internal_alias")));
+#else
+#ifndef xmlNextChar
 extern __typeof (xmlNextChar) xmlNextChar__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNextChar) xmlNextChar __attribute((alias("xmlNextChar__internal_alias")));
 #define xmlNextChar xmlNextChar__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlNoNetExternalEntityLoader
+extern __typeof (xmlNoNetExternalEntityLoader) xmlNoNetExternalEntityLoader __attribute((alias("xmlNoNetExternalEntityLoader__internal_alias")));
+#else
+#ifndef xmlNoNetExternalEntityLoader
 extern __typeof (xmlNoNetExternalEntityLoader) xmlNoNetExternalEntityLoader__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNoNetExternalEntityLoader) xmlNoNetExternalEntityLoader __attribute((alias("xmlNoNetExternalEntityLoader__internal_alias")));
 #define xmlNoNetExternalEntityLoader xmlNoNetExternalEntityLoader__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNodeAddContent
+extern __typeof (xmlNodeAddContent) xmlNodeAddContent __attribute((alias("xmlNodeAddContent__internal_alias")));
+#else
+#ifndef xmlNodeAddContent
 extern __typeof (xmlNodeAddContent) xmlNodeAddContent__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNodeAddContent) xmlNodeAddContent __attribute((alias("xmlNodeAddContent__internal_alias")));
 #define xmlNodeAddContent xmlNodeAddContent__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNodeAddContentLen
+extern __typeof (xmlNodeAddContentLen) xmlNodeAddContentLen __attribute((alias("xmlNodeAddContentLen__internal_alias")));
+#else
+#ifndef xmlNodeAddContentLen
 extern __typeof (xmlNodeAddContentLen) xmlNodeAddContentLen__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNodeAddContentLen) xmlNodeAddContentLen __attribute((alias("xmlNodeAddContentLen__internal_alias")));
 #define xmlNodeAddContentLen xmlNodeAddContentLen__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNodeBufGetContent
+extern __typeof (xmlNodeBufGetContent) xmlNodeBufGetContent __attribute((alias("xmlNodeBufGetContent__internal_alias")));
+#else
+#ifndef xmlNodeBufGetContent
 extern __typeof (xmlNodeBufGetContent) xmlNodeBufGetContent__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNodeBufGetContent) xmlNodeBufGetContent __attribute((alias("xmlNodeBufGetContent__internal_alias")));
 #define xmlNodeBufGetContent xmlNodeBufGetContent__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlNodeDump
+extern __typeof (xmlNodeDump) xmlNodeDump __attribute((alias("xmlNodeDump__internal_alias")));
+#else
+#ifndef xmlNodeDump
 extern __typeof (xmlNodeDump) xmlNodeDump__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNodeDump) xmlNodeDump __attribute((alias("xmlNodeDump__internal_alias")));
 #define xmlNodeDump xmlNodeDump__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlNodeDumpOutput
+extern __typeof (xmlNodeDumpOutput) xmlNodeDumpOutput __attribute((alias("xmlNodeDumpOutput__internal_alias")));
+#else
+#ifndef xmlNodeDumpOutput
 extern __typeof (xmlNodeDumpOutput) xmlNodeDumpOutput__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNodeDumpOutput) xmlNodeDumpOutput __attribute((alias("xmlNodeDumpOutput__internal_alias")));
 #define xmlNodeDumpOutput xmlNodeDumpOutput__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNodeGetBase
+extern __typeof (xmlNodeGetBase) xmlNodeGetBase __attribute((alias("xmlNodeGetBase__internal_alias")));
+#else
+#ifndef xmlNodeGetBase
 extern __typeof (xmlNodeGetBase) xmlNodeGetBase__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNodeGetBase) xmlNodeGetBase __attribute((alias("xmlNodeGetBase__internal_alias")));
 #define xmlNodeGetBase xmlNodeGetBase__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNodeGetContent
+extern __typeof (xmlNodeGetContent) xmlNodeGetContent __attribute((alias("xmlNodeGetContent__internal_alias")));
+#else
+#ifndef xmlNodeGetContent
 extern __typeof (xmlNodeGetContent) xmlNodeGetContent__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNodeGetContent) xmlNodeGetContent __attribute((alias("xmlNodeGetContent__internal_alias")));
 #define xmlNodeGetContent xmlNodeGetContent__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNodeGetLang
+extern __typeof (xmlNodeGetLang) xmlNodeGetLang __attribute((alias("xmlNodeGetLang__internal_alias")));
+#else
+#ifndef xmlNodeGetLang
 extern __typeof (xmlNodeGetLang) xmlNodeGetLang__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNodeGetLang) xmlNodeGetLang __attribute((alias("xmlNodeGetLang__internal_alias")));
 #define xmlNodeGetLang xmlNodeGetLang__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNodeGetSpacePreserve
+extern __typeof (xmlNodeGetSpacePreserve) xmlNodeGetSpacePreserve __attribute((alias("xmlNodeGetSpacePreserve__internal_alias")));
+#else
+#ifndef xmlNodeGetSpacePreserve
 extern __typeof (xmlNodeGetSpacePreserve) xmlNodeGetSpacePreserve__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNodeGetSpacePreserve) xmlNodeGetSpacePreserve __attribute((alias("xmlNodeGetSpacePreserve__internal_alias")));
 #define xmlNodeGetSpacePreserve xmlNodeGetSpacePreserve__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNodeIsText
+extern __typeof (xmlNodeIsText) xmlNodeIsText __attribute((alias("xmlNodeIsText__internal_alias")));
+#else
+#ifndef xmlNodeIsText
 extern __typeof (xmlNodeIsText) xmlNodeIsText__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNodeIsText) xmlNodeIsText __attribute((alias("xmlNodeIsText__internal_alias")));
 #define xmlNodeIsText xmlNodeIsText__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_tree
+#undef xmlNodeListGetRawString
+extern __typeof (xmlNodeListGetRawString) xmlNodeListGetRawString __attribute((alias("xmlNodeListGetRawString__internal_alias")));
+#else
+#ifndef xmlNodeListGetRawString
 extern __typeof (xmlNodeListGetRawString) xmlNodeListGetRawString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNodeListGetRawString) xmlNodeListGetRawString __attribute((alias("xmlNodeListGetRawString__internal_alias")));
 #define xmlNodeListGetRawString xmlNodeListGetRawString__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNodeListGetString
+extern __typeof (xmlNodeListGetString) xmlNodeListGetString __attribute((alias("xmlNodeListGetString__internal_alias")));
+#else
+#ifndef xmlNodeListGetString
 extern __typeof (xmlNodeListGetString) xmlNodeListGetString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNodeListGetString) xmlNodeListGetString __attribute((alias("xmlNodeListGetString__internal_alias")));
 #define xmlNodeListGetString xmlNodeListGetString__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED)
+#ifdef bottom_tree
+#undef xmlNodeSetBase
+extern __typeof (xmlNodeSetBase) xmlNodeSetBase __attribute((alias("xmlNodeSetBase__internal_alias")));
+#else
+#ifndef xmlNodeSetBase
 extern __typeof (xmlNodeSetBase) xmlNodeSetBase__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNodeSetBase) xmlNodeSetBase __attribute((alias("xmlNodeSetBase__internal_alias")));
 #define xmlNodeSetBase xmlNodeSetBase__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlNodeSetContent
+extern __typeof (xmlNodeSetContent) xmlNodeSetContent __attribute((alias("xmlNodeSetContent__internal_alias")));
+#else
+#ifndef xmlNodeSetContent
 extern __typeof (xmlNodeSetContent) xmlNodeSetContent__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNodeSetContent) xmlNodeSetContent __attribute((alias("xmlNodeSetContent__internal_alias")));
 #define xmlNodeSetContent xmlNodeSetContent__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_tree
+#undef xmlNodeSetContentLen
+extern __typeof (xmlNodeSetContentLen) xmlNodeSetContentLen __attribute((alias("xmlNodeSetContentLen__internal_alias")));
+#else
+#ifndef xmlNodeSetContentLen
 extern __typeof (xmlNodeSetContentLen) xmlNodeSetContentLen__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNodeSetContentLen) xmlNodeSetContentLen __attribute((alias("xmlNodeSetContentLen__internal_alias")));
 #define xmlNodeSetContentLen xmlNodeSetContentLen__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_tree
+#undef xmlNodeSetLang
+extern __typeof (xmlNodeSetLang) xmlNodeSetLang __attribute((alias("xmlNodeSetLang__internal_alias")));
+#else
+#ifndef xmlNodeSetLang
 extern __typeof (xmlNodeSetLang) xmlNodeSetLang__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNodeSetLang) xmlNodeSetLang __attribute((alias("xmlNodeSetLang__internal_alias")));
 #define xmlNodeSetLang xmlNodeSetLang__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_tree
+#undef xmlNodeSetName
+extern __typeof (xmlNodeSetName) xmlNodeSetName __attribute((alias("xmlNodeSetName__internal_alias")));
+#else
+#ifndef xmlNodeSetName
 extern __typeof (xmlNodeSetName) xmlNodeSetName__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNodeSetName) xmlNodeSetName __attribute((alias("xmlNodeSetName__internal_alias")));
 #define xmlNodeSetName xmlNodeSetName__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_tree
+#undef xmlNodeSetSpacePreserve
+extern __typeof (xmlNodeSetSpacePreserve) xmlNodeSetSpacePreserve __attribute((alias("xmlNodeSetSpacePreserve__internal_alias")));
+#else
+#ifndef xmlNodeSetSpacePreserve
 extern __typeof (xmlNodeSetSpacePreserve) xmlNodeSetSpacePreserve__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNodeSetSpacePreserve) xmlNodeSetSpacePreserve __attribute((alias("xmlNodeSetSpacePreserve__internal_alias")));
 #define xmlNodeSetSpacePreserve xmlNodeSetSpacePreserve__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_uri
+#undef xmlNormalizeURIPath
+extern __typeof (xmlNormalizeURIPath) xmlNormalizeURIPath __attribute((alias("xmlNormalizeURIPath__internal_alias")));
+#else
+#ifndef xmlNormalizeURIPath
 extern __typeof (xmlNormalizeURIPath) xmlNormalizeURIPath__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNormalizeURIPath) xmlNormalizeURIPath __attribute((alias("xmlNormalizeURIPath__internal_alias")));
 #define xmlNormalizeURIPath xmlNormalizeURIPath__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlNormalizeWindowsPath
+extern __typeof (xmlNormalizeWindowsPath) xmlNormalizeWindowsPath __attribute((alias("xmlNormalizeWindowsPath__internal_alias")));
+#else
+#ifndef xmlNormalizeWindowsPath
 extern __typeof (xmlNormalizeWindowsPath) xmlNormalizeWindowsPath__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlNormalizeWindowsPath) xmlNormalizeWindowsPath __attribute((alias("xmlNormalizeWindowsPath__internal_alias")));
 #define xmlNormalizeWindowsPath xmlNormalizeWindowsPath__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlOutputBufferClose
+extern __typeof (xmlOutputBufferClose) xmlOutputBufferClose __attribute((alias("xmlOutputBufferClose__internal_alias")));
+#else
+#ifndef xmlOutputBufferClose
 extern __typeof (xmlOutputBufferClose) xmlOutputBufferClose__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlOutputBufferClose) xmlOutputBufferClose __attribute((alias("xmlOutputBufferClose__internal_alias")));
 #define xmlOutputBufferClose xmlOutputBufferClose__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlOutputBufferCreateFd
+extern __typeof (xmlOutputBufferCreateFd) xmlOutputBufferCreateFd __attribute((alias("xmlOutputBufferCreateFd__internal_alias")));
+#else
+#ifndef xmlOutputBufferCreateFd
 extern __typeof (xmlOutputBufferCreateFd) xmlOutputBufferCreateFd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlOutputBufferCreateFd) xmlOutputBufferCreateFd __attribute((alias("xmlOutputBufferCreateFd__internal_alias")));
 #define xmlOutputBufferCreateFd xmlOutputBufferCreateFd__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlOutputBufferCreateFile
+extern __typeof (xmlOutputBufferCreateFile) xmlOutputBufferCreateFile __attribute((alias("xmlOutputBufferCreateFile__internal_alias")));
+#else
+#ifndef xmlOutputBufferCreateFile
 extern __typeof (xmlOutputBufferCreateFile) xmlOutputBufferCreateFile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlOutputBufferCreateFile) xmlOutputBufferCreateFile __attribute((alias("xmlOutputBufferCreateFile__internal_alias")));
 #define xmlOutputBufferCreateFile xmlOutputBufferCreateFile__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlOutputBufferCreateFilename
+extern __typeof (xmlOutputBufferCreateFilename) xmlOutputBufferCreateFilename __attribute((alias("xmlOutputBufferCreateFilename__internal_alias")));
+#else
+#ifndef xmlOutputBufferCreateFilename
 extern __typeof (xmlOutputBufferCreateFilename) xmlOutputBufferCreateFilename__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlOutputBufferCreateFilename) xmlOutputBufferCreateFilename __attribute((alias("xmlOutputBufferCreateFilename__internal_alias")));
 #define xmlOutputBufferCreateFilename xmlOutputBufferCreateFilename__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlOutputBufferCreateFilenameDefault
+extern __typeof (xmlOutputBufferCreateFilenameDefault) xmlOutputBufferCreateFilenameDefault __attribute((alias("xmlOutputBufferCreateFilenameDefault__internal_alias")));
+#else
+#ifndef xmlOutputBufferCreateFilenameDefault
 extern __typeof (xmlOutputBufferCreateFilenameDefault) xmlOutputBufferCreateFilenameDefault__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlOutputBufferCreateFilenameDefault) xmlOutputBufferCreateFilenameDefault __attribute((alias("xmlOutputBufferCreateFilenameDefault__internal_alias")));
 #define xmlOutputBufferCreateFilenameDefault xmlOutputBufferCreateFilenameDefault__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlOutputBufferCreateIO
+extern __typeof (xmlOutputBufferCreateIO) xmlOutputBufferCreateIO __attribute((alias("xmlOutputBufferCreateIO__internal_alias")));
+#else
+#ifndef xmlOutputBufferCreateIO
 extern __typeof (xmlOutputBufferCreateIO) xmlOutputBufferCreateIO__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlOutputBufferCreateIO) xmlOutputBufferCreateIO __attribute((alias("xmlOutputBufferCreateIO__internal_alias")));
 #define xmlOutputBufferCreateIO xmlOutputBufferCreateIO__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlOutputBufferFlush
+extern __typeof (xmlOutputBufferFlush) xmlOutputBufferFlush __attribute((alias("xmlOutputBufferFlush__internal_alias")));
+#else
+#ifndef xmlOutputBufferFlush
 extern __typeof (xmlOutputBufferFlush) xmlOutputBufferFlush__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlOutputBufferFlush) xmlOutputBufferFlush __attribute((alias("xmlOutputBufferFlush__internal_alias")));
 #define xmlOutputBufferFlush xmlOutputBufferFlush__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlOutputBufferWrite
+extern __typeof (xmlOutputBufferWrite) xmlOutputBufferWrite __attribute((alias("xmlOutputBufferWrite__internal_alias")));
+#else
+#ifndef xmlOutputBufferWrite
 extern __typeof (xmlOutputBufferWrite) xmlOutputBufferWrite__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlOutputBufferWrite) xmlOutputBufferWrite __attribute((alias("xmlOutputBufferWrite__internal_alias")));
 #define xmlOutputBufferWrite xmlOutputBufferWrite__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlOutputBufferWriteEscape
+extern __typeof (xmlOutputBufferWriteEscape) xmlOutputBufferWriteEscape __attribute((alias("xmlOutputBufferWriteEscape__internal_alias")));
+#else
+#ifndef xmlOutputBufferWriteEscape
 extern __typeof (xmlOutputBufferWriteEscape) xmlOutputBufferWriteEscape__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlOutputBufferWriteEscape) xmlOutputBufferWriteEscape __attribute((alias("xmlOutputBufferWriteEscape__internal_alias")));
 #define xmlOutputBufferWriteEscape xmlOutputBufferWriteEscape__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlOutputBufferWriteString
+extern __typeof (xmlOutputBufferWriteString) xmlOutputBufferWriteString __attribute((alias("xmlOutputBufferWriteString__internal_alias")));
+#else
+#ifndef xmlOutputBufferWriteString
 extern __typeof (xmlOutputBufferWriteString) xmlOutputBufferWriteString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlOutputBufferWriteString) xmlOutputBufferWriteString __attribute((alias("xmlOutputBufferWriteString__internal_alias")));
 #define xmlOutputBufferWriteString xmlOutputBufferWriteString__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseAttValue
+extern __typeof (xmlParseAttValue) xmlParseAttValue __attribute((alias("xmlParseAttValue__internal_alias")));
+#else
+#ifndef xmlParseAttValue
 extern __typeof (xmlParseAttValue) xmlParseAttValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseAttValue) xmlParseAttValue __attribute((alias("xmlParseAttValue__internal_alias")));
 #define xmlParseAttValue xmlParseAttValue__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_parser
+#undef xmlParseAttribute
+extern __typeof (xmlParseAttribute) xmlParseAttribute __attribute((alias("xmlParseAttribute__internal_alias")));
+#else
+#ifndef xmlParseAttribute
 extern __typeof (xmlParseAttribute) xmlParseAttribute__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseAttribute) xmlParseAttribute __attribute((alias("xmlParseAttribute__internal_alias")));
 #define xmlParseAttribute xmlParseAttribute__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseAttributeListDecl
+extern __typeof (xmlParseAttributeListDecl) xmlParseAttributeListDecl __attribute((alias("xmlParseAttributeListDecl__internal_alias")));
+#else
+#ifndef xmlParseAttributeListDecl
 extern __typeof (xmlParseAttributeListDecl) xmlParseAttributeListDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseAttributeListDecl) xmlParseAttributeListDecl __attribute((alias("xmlParseAttributeListDecl__internal_alias")));
 #define xmlParseAttributeListDecl xmlParseAttributeListDecl__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseAttributeType
+extern __typeof (xmlParseAttributeType) xmlParseAttributeType __attribute((alias("xmlParseAttributeType__internal_alias")));
+#else
+#ifndef xmlParseAttributeType
 extern __typeof (xmlParseAttributeType) xmlParseAttributeType__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseAttributeType) xmlParseAttributeType __attribute((alias("xmlParseAttributeType__internal_alias")));
 #define xmlParseAttributeType xmlParseAttributeType__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_parser
+#undef xmlParseBalancedChunkMemory
+extern __typeof (xmlParseBalancedChunkMemory) xmlParseBalancedChunkMemory __attribute((alias("xmlParseBalancedChunkMemory__internal_alias")));
+#else
+#ifndef xmlParseBalancedChunkMemory
 extern __typeof (xmlParseBalancedChunkMemory) xmlParseBalancedChunkMemory__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseBalancedChunkMemory) xmlParseBalancedChunkMemory __attribute((alias("xmlParseBalancedChunkMemory__internal_alias")));
 #define xmlParseBalancedChunkMemory xmlParseBalancedChunkMemory__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_parser
+#undef xmlParseBalancedChunkMemoryRecover
+extern __typeof (xmlParseBalancedChunkMemoryRecover) xmlParseBalancedChunkMemoryRecover __attribute((alias("xmlParseBalancedChunkMemoryRecover__internal_alias")));
+#else
+#ifndef xmlParseBalancedChunkMemoryRecover
 extern __typeof (xmlParseBalancedChunkMemoryRecover) xmlParseBalancedChunkMemoryRecover__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseBalancedChunkMemoryRecover) xmlParseBalancedChunkMemoryRecover __attribute((alias("xmlParseBalancedChunkMemoryRecover__internal_alias")));
 #define xmlParseBalancedChunkMemoryRecover xmlParseBalancedChunkMemoryRecover__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseCDSect
+extern __typeof (xmlParseCDSect) xmlParseCDSect __attribute((alias("xmlParseCDSect__internal_alias")));
+#else
+#ifndef xmlParseCDSect
 extern __typeof (xmlParseCDSect) xmlParseCDSect__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseCDSect) xmlParseCDSect __attribute((alias("xmlParseCDSect__internal_alias")));
 #define xmlParseCDSect xmlParseCDSect__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_CATALOG_ENABLED)
+#ifdef bottom_catalog
+#undef xmlParseCatalogFile
+extern __typeof (xmlParseCatalogFile) xmlParseCatalogFile __attribute((alias("xmlParseCatalogFile__internal_alias")));
+#else
+#ifndef xmlParseCatalogFile
 extern __typeof (xmlParseCatalogFile) xmlParseCatalogFile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseCatalogFile) xmlParseCatalogFile __attribute((alias("xmlParseCatalogFile__internal_alias")));
 #define xmlParseCatalogFile xmlParseCatalogFile__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseCharData
+extern __typeof (xmlParseCharData) xmlParseCharData __attribute((alias("xmlParseCharData__internal_alias")));
+#else
+#ifndef xmlParseCharData
 extern __typeof (xmlParseCharData) xmlParseCharData__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseCharData) xmlParseCharData __attribute((alias("xmlParseCharData__internal_alias")));
 #define xmlParseCharData xmlParseCharData__internal_alias
+#endif
+#endif
 
+#ifdef bottom_encoding
+#undef xmlParseCharEncoding
+extern __typeof (xmlParseCharEncoding) xmlParseCharEncoding __attribute((alias("xmlParseCharEncoding__internal_alias")));
+#else
+#ifndef xmlParseCharEncoding
 extern __typeof (xmlParseCharEncoding) xmlParseCharEncoding__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseCharEncoding) xmlParseCharEncoding __attribute((alias("xmlParseCharEncoding__internal_alias")));
 #define xmlParseCharEncoding xmlParseCharEncoding__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseCharRef
+extern __typeof (xmlParseCharRef) xmlParseCharRef __attribute((alias("xmlParseCharRef__internal_alias")));
+#else
+#ifndef xmlParseCharRef
 extern __typeof (xmlParseCharRef) xmlParseCharRef__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseCharRef) xmlParseCharRef __attribute((alias("xmlParseCharRef__internal_alias")));
 #define xmlParseCharRef xmlParseCharRef__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_PUSH_ENABLED)
+#ifdef bottom_parser
+#undef xmlParseChunk
+extern __typeof (xmlParseChunk) xmlParseChunk __attribute((alias("xmlParseChunk__internal_alias")));
+#else
+#ifndef xmlParseChunk
 extern __typeof (xmlParseChunk) xmlParseChunk__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseChunk) xmlParseChunk __attribute((alias("xmlParseChunk__internal_alias")));
 #define xmlParseChunk xmlParseChunk__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseComment
+extern __typeof (xmlParseComment) xmlParseComment __attribute((alias("xmlParseComment__internal_alias")));
+#else
+#ifndef xmlParseComment
 extern __typeof (xmlParseComment) xmlParseComment__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseComment) xmlParseComment __attribute((alias("xmlParseComment__internal_alias")));
 #define xmlParseComment xmlParseComment__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseContent
+extern __typeof (xmlParseContent) xmlParseContent __attribute((alias("xmlParseContent__internal_alias")));
+#else
+#ifndef xmlParseContent
 extern __typeof (xmlParseContent) xmlParseContent__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseContent) xmlParseContent __attribute((alias("xmlParseContent__internal_alias")));
 #define xmlParseContent xmlParseContent__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseCtxtExternalEntity
+extern __typeof (xmlParseCtxtExternalEntity) xmlParseCtxtExternalEntity __attribute((alias("xmlParseCtxtExternalEntity__internal_alias")));
+#else
+#ifndef xmlParseCtxtExternalEntity
 extern __typeof (xmlParseCtxtExternalEntity) xmlParseCtxtExternalEntity__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseCtxtExternalEntity) xmlParseCtxtExternalEntity __attribute((alias("xmlParseCtxtExternalEntity__internal_alias")));
 #define xmlParseCtxtExternalEntity xmlParseCtxtExternalEntity__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_parser
+#undef xmlParseDTD
+extern __typeof (xmlParseDTD) xmlParseDTD __attribute((alias("xmlParseDTD__internal_alias")));
+#else
+#ifndef xmlParseDTD
 extern __typeof (xmlParseDTD) xmlParseDTD__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseDTD) xmlParseDTD __attribute((alias("xmlParseDTD__internal_alias")));
 #define xmlParseDTD xmlParseDTD__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseDefaultDecl
+extern __typeof (xmlParseDefaultDecl) xmlParseDefaultDecl __attribute((alias("xmlParseDefaultDecl__internal_alias")));
+#else
+#ifndef xmlParseDefaultDecl
 extern __typeof (xmlParseDefaultDecl) xmlParseDefaultDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseDefaultDecl) xmlParseDefaultDecl __attribute((alias("xmlParseDefaultDecl__internal_alias")));
 #define xmlParseDefaultDecl xmlParseDefaultDecl__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_parser
+#undef xmlParseDoc
+extern __typeof (xmlParseDoc) xmlParseDoc __attribute((alias("xmlParseDoc__internal_alias")));
+#else
+#ifndef xmlParseDoc
 extern __typeof (xmlParseDoc) xmlParseDoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseDoc) xmlParseDoc __attribute((alias("xmlParseDoc__internal_alias")));
 #define xmlParseDoc xmlParseDoc__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseDocTypeDecl
+extern __typeof (xmlParseDocTypeDecl) xmlParseDocTypeDecl __attribute((alias("xmlParseDocTypeDecl__internal_alias")));
+#else
+#ifndef xmlParseDocTypeDecl
 extern __typeof (xmlParseDocTypeDecl) xmlParseDocTypeDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseDocTypeDecl) xmlParseDocTypeDecl __attribute((alias("xmlParseDocTypeDecl__internal_alias")));
 #define xmlParseDocTypeDecl xmlParseDocTypeDecl__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseDocument
+extern __typeof (xmlParseDocument) xmlParseDocument __attribute((alias("xmlParseDocument__internal_alias")));
+#else
+#ifndef xmlParseDocument
 extern __typeof (xmlParseDocument) xmlParseDocument__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseDocument) xmlParseDocument __attribute((alias("xmlParseDocument__internal_alias")));
 #define xmlParseDocument xmlParseDocument__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseElement
+extern __typeof (xmlParseElement) xmlParseElement __attribute((alias("xmlParseElement__internal_alias")));
+#else
+#ifndef xmlParseElement
 extern __typeof (xmlParseElement) xmlParseElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseElement) xmlParseElement __attribute((alias("xmlParseElement__internal_alias")));
 #define xmlParseElement xmlParseElement__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseElementChildrenContentDecl
+extern __typeof (xmlParseElementChildrenContentDecl) xmlParseElementChildrenContentDecl __attribute((alias("xmlParseElementChildrenContentDecl__internal_alias")));
+#else
+#ifndef xmlParseElementChildrenContentDecl
 extern __typeof (xmlParseElementChildrenContentDecl) xmlParseElementChildrenContentDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseElementChildrenContentDecl) xmlParseElementChildrenContentDecl __attribute((alias("xmlParseElementChildrenContentDecl__internal_alias")));
 #define xmlParseElementChildrenContentDecl xmlParseElementChildrenContentDecl__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseElementContentDecl
+extern __typeof (xmlParseElementContentDecl) xmlParseElementContentDecl __attribute((alias("xmlParseElementContentDecl__internal_alias")));
+#else
+#ifndef xmlParseElementContentDecl
 extern __typeof (xmlParseElementContentDecl) xmlParseElementContentDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseElementContentDecl) xmlParseElementContentDecl __attribute((alias("xmlParseElementContentDecl__internal_alias")));
 #define xmlParseElementContentDecl xmlParseElementContentDecl__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseElementDecl
+extern __typeof (xmlParseElementDecl) xmlParseElementDecl __attribute((alias("xmlParseElementDecl__internal_alias")));
+#else
+#ifndef xmlParseElementDecl
 extern __typeof (xmlParseElementDecl) xmlParseElementDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseElementDecl) xmlParseElementDecl __attribute((alias("xmlParseElementDecl__internal_alias")));
 #define xmlParseElementDecl xmlParseElementDecl__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseElementMixedContentDecl
+extern __typeof (xmlParseElementMixedContentDecl) xmlParseElementMixedContentDecl __attribute((alias("xmlParseElementMixedContentDecl__internal_alias")));
+#else
+#ifndef xmlParseElementMixedContentDecl
 extern __typeof (xmlParseElementMixedContentDecl) xmlParseElementMixedContentDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseElementMixedContentDecl) xmlParseElementMixedContentDecl __attribute((alias("xmlParseElementMixedContentDecl__internal_alias")));
 #define xmlParseElementMixedContentDecl xmlParseElementMixedContentDecl__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseEncName
+extern __typeof (xmlParseEncName) xmlParseEncName __attribute((alias("xmlParseEncName__internal_alias")));
+#else
+#ifndef xmlParseEncName
 extern __typeof (xmlParseEncName) xmlParseEncName__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseEncName) xmlParseEncName __attribute((alias("xmlParseEncName__internal_alias")));
 #define xmlParseEncName xmlParseEncName__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseEncodingDecl
+extern __typeof (xmlParseEncodingDecl) xmlParseEncodingDecl __attribute((alias("xmlParseEncodingDecl__internal_alias")));
+#else
+#ifndef xmlParseEncodingDecl
 extern __typeof (xmlParseEncodingDecl) xmlParseEncodingDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseEncodingDecl) xmlParseEncodingDecl __attribute((alias("xmlParseEncodingDecl__internal_alias")));
 #define xmlParseEncodingDecl xmlParseEncodingDecl__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_parser
+#undef xmlParseEndTag
+extern __typeof (xmlParseEndTag) xmlParseEndTag __attribute((alias("xmlParseEndTag__internal_alias")));
+#else
+#ifndef xmlParseEndTag
 extern __typeof (xmlParseEndTag) xmlParseEndTag__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseEndTag) xmlParseEndTag __attribute((alias("xmlParseEndTag__internal_alias")));
 #define xmlParseEndTag xmlParseEndTag__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_parser
+#undef xmlParseEntity
+extern __typeof (xmlParseEntity) xmlParseEntity __attribute((alias("xmlParseEntity__internal_alias")));
+#else
+#ifndef xmlParseEntity
 extern __typeof (xmlParseEntity) xmlParseEntity__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseEntity) xmlParseEntity __attribute((alias("xmlParseEntity__internal_alias")));
 #define xmlParseEntity xmlParseEntity__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseEntityDecl
+extern __typeof (xmlParseEntityDecl) xmlParseEntityDecl __attribute((alias("xmlParseEntityDecl__internal_alias")));
+#else
+#ifndef xmlParseEntityDecl
 extern __typeof (xmlParseEntityDecl) xmlParseEntityDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseEntityDecl) xmlParseEntityDecl __attribute((alias("xmlParseEntityDecl__internal_alias")));
 #define xmlParseEntityDecl xmlParseEntityDecl__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseEntityRef
+extern __typeof (xmlParseEntityRef) xmlParseEntityRef __attribute((alias("xmlParseEntityRef__internal_alias")));
+#else
+#ifndef xmlParseEntityRef
 extern __typeof (xmlParseEntityRef) xmlParseEntityRef__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseEntityRef) xmlParseEntityRef __attribute((alias("xmlParseEntityRef__internal_alias")));
 #define xmlParseEntityRef xmlParseEntityRef__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseEntityValue
+extern __typeof (xmlParseEntityValue) xmlParseEntityValue __attribute((alias("xmlParseEntityValue__internal_alias")));
+#else
+#ifndef xmlParseEntityValue
 extern __typeof (xmlParseEntityValue) xmlParseEntityValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseEntityValue) xmlParseEntityValue __attribute((alias("xmlParseEntityValue__internal_alias")));
 #define xmlParseEntityValue xmlParseEntityValue__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseEnumeratedType
+extern __typeof (xmlParseEnumeratedType) xmlParseEnumeratedType __attribute((alias("xmlParseEnumeratedType__internal_alias")));
+#else
+#ifndef xmlParseEnumeratedType
 extern __typeof (xmlParseEnumeratedType) xmlParseEnumeratedType__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseEnumeratedType) xmlParseEnumeratedType __attribute((alias("xmlParseEnumeratedType__internal_alias")));
 #define xmlParseEnumeratedType xmlParseEnumeratedType__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseEnumerationType
+extern __typeof (xmlParseEnumerationType) xmlParseEnumerationType __attribute((alias("xmlParseEnumerationType__internal_alias")));
+#else
+#ifndef xmlParseEnumerationType
 extern __typeof (xmlParseEnumerationType) xmlParseEnumerationType__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseEnumerationType) xmlParseEnumerationType __attribute((alias("xmlParseEnumerationType__internal_alias")));
 #define xmlParseEnumerationType xmlParseEnumerationType__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseExtParsedEnt
+extern __typeof (xmlParseExtParsedEnt) xmlParseExtParsedEnt __attribute((alias("xmlParseExtParsedEnt__internal_alias")));
+#else
+#ifndef xmlParseExtParsedEnt
 extern __typeof (xmlParseExtParsedEnt) xmlParseExtParsedEnt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseExtParsedEnt) xmlParseExtParsedEnt __attribute((alias("xmlParseExtParsedEnt__internal_alias")));
 #define xmlParseExtParsedEnt xmlParseExtParsedEnt__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_parser
+#undef xmlParseExternalEntity
+extern __typeof (xmlParseExternalEntity) xmlParseExternalEntity __attribute((alias("xmlParseExternalEntity__internal_alias")));
+#else
+#ifndef xmlParseExternalEntity
 extern __typeof (xmlParseExternalEntity) xmlParseExternalEntity__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseExternalEntity) xmlParseExternalEntity __attribute((alias("xmlParseExternalEntity__internal_alias")));
 #define xmlParseExternalEntity xmlParseExternalEntity__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseExternalID
+extern __typeof (xmlParseExternalID) xmlParseExternalID __attribute((alias("xmlParseExternalID__internal_alias")));
+#else
+#ifndef xmlParseExternalID
 extern __typeof (xmlParseExternalID) xmlParseExternalID__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseExternalID) xmlParseExternalID __attribute((alias("xmlParseExternalID__internal_alias")));
 #define xmlParseExternalID xmlParseExternalID__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseExternalSubset
+extern __typeof (xmlParseExternalSubset) xmlParseExternalSubset __attribute((alias("xmlParseExternalSubset__internal_alias")));
+#else
+#ifndef xmlParseExternalSubset
 extern __typeof (xmlParseExternalSubset) xmlParseExternalSubset__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseExternalSubset) xmlParseExternalSubset __attribute((alias("xmlParseExternalSubset__internal_alias")));
 #define xmlParseExternalSubset xmlParseExternalSubset__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_parser
+#undef xmlParseFile
+extern __typeof (xmlParseFile) xmlParseFile __attribute((alias("xmlParseFile__internal_alias")));
+#else
+#ifndef xmlParseFile
 extern __typeof (xmlParseFile) xmlParseFile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseFile) xmlParseFile __attribute((alias("xmlParseFile__internal_alias")));
 #define xmlParseFile xmlParseFile__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseInNodeContext
+extern __typeof (xmlParseInNodeContext) xmlParseInNodeContext __attribute((alias("xmlParseInNodeContext__internal_alias")));
+#else
+#ifndef xmlParseInNodeContext
 extern __typeof (xmlParseInNodeContext) xmlParseInNodeContext__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseInNodeContext) xmlParseInNodeContext __attribute((alias("xmlParseInNodeContext__internal_alias")));
 #define xmlParseInNodeContext xmlParseInNodeContext__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseMarkupDecl
+extern __typeof (xmlParseMarkupDecl) xmlParseMarkupDecl __attribute((alias("xmlParseMarkupDecl__internal_alias")));
+#else
+#ifndef xmlParseMarkupDecl
 extern __typeof (xmlParseMarkupDecl) xmlParseMarkupDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseMarkupDecl) xmlParseMarkupDecl __attribute((alias("xmlParseMarkupDecl__internal_alias")));
 #define xmlParseMarkupDecl xmlParseMarkupDecl__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_parser
+#undef xmlParseMemory
+extern __typeof (xmlParseMemory) xmlParseMemory __attribute((alias("xmlParseMemory__internal_alias")));
+#else
+#ifndef xmlParseMemory
 extern __typeof (xmlParseMemory) xmlParseMemory__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseMemory) xmlParseMemory __attribute((alias("xmlParseMemory__internal_alias")));
 #define xmlParseMemory xmlParseMemory__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseMisc
+extern __typeof (xmlParseMisc) xmlParseMisc __attribute((alias("xmlParseMisc__internal_alias")));
+#else
+#ifndef xmlParseMisc
 extern __typeof (xmlParseMisc) xmlParseMisc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseMisc) xmlParseMisc __attribute((alias("xmlParseMisc__internal_alias")));
 #define xmlParseMisc xmlParseMisc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseName
+extern __typeof (xmlParseName) xmlParseName __attribute((alias("xmlParseName__internal_alias")));
+#else
+#ifndef xmlParseName
 extern __typeof (xmlParseName) xmlParseName__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseName) xmlParseName __attribute((alias("xmlParseName__internal_alias")));
 #define xmlParseName xmlParseName__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_LEGACY_ENABLED)
+#ifdef bottom_legacy
+#undef xmlParseNamespace
+extern __typeof (xmlParseNamespace) xmlParseNamespace __attribute((alias("xmlParseNamespace__internal_alias")));
+#else
+#ifndef xmlParseNamespace
 extern __typeof (xmlParseNamespace) xmlParseNamespace__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseNamespace) xmlParseNamespace __attribute((alias("xmlParseNamespace__internal_alias")));
 #define xmlParseNamespace xmlParseNamespace__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseNmtoken
+extern __typeof (xmlParseNmtoken) xmlParseNmtoken __attribute((alias("xmlParseNmtoken__internal_alias")));
+#else
+#ifndef xmlParseNmtoken
 extern __typeof (xmlParseNmtoken) xmlParseNmtoken__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseNmtoken) xmlParseNmtoken __attribute((alias("xmlParseNmtoken__internal_alias")));
 #define xmlParseNmtoken xmlParseNmtoken__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseNotationDecl
+extern __typeof (xmlParseNotationDecl) xmlParseNotationDecl __attribute((alias("xmlParseNotationDecl__internal_alias")));
+#else
+#ifndef xmlParseNotationDecl
 extern __typeof (xmlParseNotationDecl) xmlParseNotationDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseNotationDecl) xmlParseNotationDecl __attribute((alias("xmlParseNotationDecl__internal_alias")));
 #define xmlParseNotationDecl xmlParseNotationDecl__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseNotationType
+extern __typeof (xmlParseNotationType) xmlParseNotationType __attribute((alias("xmlParseNotationType__internal_alias")));
+#else
+#ifndef xmlParseNotationType
 extern __typeof (xmlParseNotationType) xmlParseNotationType__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseNotationType) xmlParseNotationType __attribute((alias("xmlParseNotationType__internal_alias")));
 #define xmlParseNotationType xmlParseNotationType__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParsePEReference
+extern __typeof (xmlParsePEReference) xmlParsePEReference __attribute((alias("xmlParsePEReference__internal_alias")));
+#else
+#ifndef xmlParsePEReference
 extern __typeof (xmlParsePEReference) xmlParsePEReference__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParsePEReference) xmlParsePEReference __attribute((alias("xmlParsePEReference__internal_alias")));
 #define xmlParsePEReference xmlParsePEReference__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParsePI
+extern __typeof (xmlParsePI) xmlParsePI __attribute((alias("xmlParsePI__internal_alias")));
+#else
+#ifndef xmlParsePI
 extern __typeof (xmlParsePI) xmlParsePI__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParsePI) xmlParsePI __attribute((alias("xmlParsePI__internal_alias")));
 #define xmlParsePI xmlParsePI__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParsePITarget
+extern __typeof (xmlParsePITarget) xmlParsePITarget __attribute((alias("xmlParsePITarget__internal_alias")));
+#else
+#ifndef xmlParsePITarget
 extern __typeof (xmlParsePITarget) xmlParsePITarget__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParsePITarget) xmlParsePITarget __attribute((alias("xmlParsePITarget__internal_alias")));
 #define xmlParsePITarget xmlParsePITarget__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParsePubidLiteral
+extern __typeof (xmlParsePubidLiteral) xmlParsePubidLiteral __attribute((alias("xmlParsePubidLiteral__internal_alias")));
+#else
+#ifndef xmlParsePubidLiteral
 extern __typeof (xmlParsePubidLiteral) xmlParsePubidLiteral__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParsePubidLiteral) xmlParsePubidLiteral __attribute((alias("xmlParsePubidLiteral__internal_alias")));
 #define xmlParsePubidLiteral xmlParsePubidLiteral__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_LEGACY_ENABLED)
+#ifdef bottom_legacy
+#undef xmlParseQuotedString
+extern __typeof (xmlParseQuotedString) xmlParseQuotedString __attribute((alias("xmlParseQuotedString__internal_alias")));
+#else
+#ifndef xmlParseQuotedString
 extern __typeof (xmlParseQuotedString) xmlParseQuotedString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseQuotedString) xmlParseQuotedString __attribute((alias("xmlParseQuotedString__internal_alias")));
 #define xmlParseQuotedString xmlParseQuotedString__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseReference
+extern __typeof (xmlParseReference) xmlParseReference __attribute((alias("xmlParseReference__internal_alias")));
+#else
+#ifndef xmlParseReference
 extern __typeof (xmlParseReference) xmlParseReference__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseReference) xmlParseReference __attribute((alias("xmlParseReference__internal_alias")));
 #define xmlParseReference xmlParseReference__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseSDDecl
+extern __typeof (xmlParseSDDecl) xmlParseSDDecl __attribute((alias("xmlParseSDDecl__internal_alias")));
+#else
+#ifndef xmlParseSDDecl
 extern __typeof (xmlParseSDDecl) xmlParseSDDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseSDDecl) xmlParseSDDecl __attribute((alias("xmlParseSDDecl__internal_alias")));
 #define xmlParseSDDecl xmlParseSDDecl__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_parser
+#undef xmlParseStartTag
+extern __typeof (xmlParseStartTag) xmlParseStartTag __attribute((alias("xmlParseStartTag__internal_alias")));
+#else
+#ifndef xmlParseStartTag
 extern __typeof (xmlParseStartTag) xmlParseStartTag__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseStartTag) xmlParseStartTag __attribute((alias("xmlParseStartTag__internal_alias")));
 #define xmlParseStartTag xmlParseStartTag__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseSystemLiteral
+extern __typeof (xmlParseSystemLiteral) xmlParseSystemLiteral __attribute((alias("xmlParseSystemLiteral__internal_alias")));
+#else
+#ifndef xmlParseSystemLiteral
 extern __typeof (xmlParseSystemLiteral) xmlParseSystemLiteral__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseSystemLiteral) xmlParseSystemLiteral __attribute((alias("xmlParseSystemLiteral__internal_alias")));
 #define xmlParseSystemLiteral xmlParseSystemLiteral__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseTextDecl
+extern __typeof (xmlParseTextDecl) xmlParseTextDecl __attribute((alias("xmlParseTextDecl__internal_alias")));
+#else
+#ifndef xmlParseTextDecl
 extern __typeof (xmlParseTextDecl) xmlParseTextDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseTextDecl) xmlParseTextDecl __attribute((alias("xmlParseTextDecl__internal_alias")));
 #define xmlParseTextDecl xmlParseTextDecl__internal_alias
+#endif
+#endif
 
+#ifdef bottom_uri
+#undef xmlParseURI
+extern __typeof (xmlParseURI) xmlParseURI __attribute((alias("xmlParseURI__internal_alias")));
+#else
+#ifndef xmlParseURI
 extern __typeof (xmlParseURI) xmlParseURI__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseURI) xmlParseURI __attribute((alias("xmlParseURI__internal_alias")));
 #define xmlParseURI xmlParseURI__internal_alias
+#endif
+#endif
 
+#ifdef bottom_uri
+#undef xmlParseURIReference
+extern __typeof (xmlParseURIReference) xmlParseURIReference __attribute((alias("xmlParseURIReference__internal_alias")));
+#else
+#ifndef xmlParseURIReference
 extern __typeof (xmlParseURIReference) xmlParseURIReference__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseURIReference) xmlParseURIReference __attribute((alias("xmlParseURIReference__internal_alias")));
 #define xmlParseURIReference xmlParseURIReference__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseVersionInfo
+extern __typeof (xmlParseVersionInfo) xmlParseVersionInfo __attribute((alias("xmlParseVersionInfo__internal_alias")));
+#else
+#ifndef xmlParseVersionInfo
 extern __typeof (xmlParseVersionInfo) xmlParseVersionInfo__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseVersionInfo) xmlParseVersionInfo __attribute((alias("xmlParseVersionInfo__internal_alias")));
 #define xmlParseVersionInfo xmlParseVersionInfo__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseVersionNum
+extern __typeof (xmlParseVersionNum) xmlParseVersionNum __attribute((alias("xmlParseVersionNum__internal_alias")));
+#else
+#ifndef xmlParseVersionNum
 extern __typeof (xmlParseVersionNum) xmlParseVersionNum__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseVersionNum) xmlParseVersionNum __attribute((alias("xmlParseVersionNum__internal_alias")));
 #define xmlParseVersionNum xmlParseVersionNum__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParseXMLDecl
+extern __typeof (xmlParseXMLDecl) xmlParseXMLDecl __attribute((alias("xmlParseXMLDecl__internal_alias")));
+#else
+#ifndef xmlParseXMLDecl
 extern __typeof (xmlParseXMLDecl) xmlParseXMLDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParseXMLDecl) xmlParseXMLDecl __attribute((alias("xmlParseXMLDecl__internal_alias")));
 #define xmlParseXMLDecl xmlParseXMLDecl__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlParserAddNodeInfo
+extern __typeof (xmlParserAddNodeInfo) xmlParserAddNodeInfo __attribute((alias("xmlParserAddNodeInfo__internal_alias")));
+#else
+#ifndef xmlParserAddNodeInfo
 extern __typeof (xmlParserAddNodeInfo) xmlParserAddNodeInfo__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserAddNodeInfo) xmlParserAddNodeInfo __attribute((alias("xmlParserAddNodeInfo__internal_alias")));
 #define xmlParserAddNodeInfo xmlParserAddNodeInfo__internal_alias
+#endif
+#endif
 
+#ifdef bottom_error
+#undef xmlParserError
+extern __typeof (xmlParserError) xmlParserError __attribute((alias("xmlParserError__internal_alias")));
+#else
+#ifndef xmlParserError
 extern __typeof (xmlParserError) xmlParserError__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserError) xmlParserError __attribute((alias("xmlParserError__internal_alias")));
 #define xmlParserError xmlParserError__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlParserFindNodeInfo
+extern __typeof (xmlParserFindNodeInfo) xmlParserFindNodeInfo __attribute((alias("xmlParserFindNodeInfo__internal_alias")));
+#else
+#ifndef xmlParserFindNodeInfo
 extern __typeof (xmlParserFindNodeInfo) xmlParserFindNodeInfo__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserFindNodeInfo) xmlParserFindNodeInfo __attribute((alias("xmlParserFindNodeInfo__internal_alias")));
 #define xmlParserFindNodeInfo xmlParserFindNodeInfo__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlParserFindNodeInfoIndex
+extern __typeof (xmlParserFindNodeInfoIndex) xmlParserFindNodeInfoIndex __attribute((alias("xmlParserFindNodeInfoIndex__internal_alias")));
+#else
+#ifndef xmlParserFindNodeInfoIndex
 extern __typeof (xmlParserFindNodeInfoIndex) xmlParserFindNodeInfoIndex__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserFindNodeInfoIndex) xmlParserFindNodeInfoIndex __attribute((alias("xmlParserFindNodeInfoIndex__internal_alias")));
 #define xmlParserFindNodeInfoIndex xmlParserFindNodeInfoIndex__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlParserGetDirectory
+extern __typeof (xmlParserGetDirectory) xmlParserGetDirectory __attribute((alias("xmlParserGetDirectory__internal_alias")));
+#else
+#ifndef xmlParserGetDirectory
 extern __typeof (xmlParserGetDirectory) xmlParserGetDirectory__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserGetDirectory) xmlParserGetDirectory __attribute((alias("xmlParserGetDirectory__internal_alias")));
 #define xmlParserGetDirectory xmlParserGetDirectory__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlParserHandlePEReference
+extern __typeof (xmlParserHandlePEReference) xmlParserHandlePEReference __attribute((alias("xmlParserHandlePEReference__internal_alias")));
+#else
+#ifndef xmlParserHandlePEReference
 extern __typeof (xmlParserHandlePEReference) xmlParserHandlePEReference__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserHandlePEReference) xmlParserHandlePEReference __attribute((alias("xmlParserHandlePEReference__internal_alias")));
 #define xmlParserHandlePEReference xmlParserHandlePEReference__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_LEGACY_ENABLED)
+#ifdef bottom_legacy
+#undef xmlParserHandleReference
+extern __typeof (xmlParserHandleReference) xmlParserHandleReference __attribute((alias("xmlParserHandleReference__internal_alias")));
+#else
+#ifndef xmlParserHandleReference
 extern __typeof (xmlParserHandleReference) xmlParserHandleReference__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserHandleReference) xmlParserHandleReference __attribute((alias("xmlParserHandleReference__internal_alias")));
 #define xmlParserHandleReference xmlParserHandleReference__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlParserInputBufferCreateFd
+extern __typeof (xmlParserInputBufferCreateFd) xmlParserInputBufferCreateFd __attribute((alias("xmlParserInputBufferCreateFd__internal_alias")));
+#else
+#ifndef xmlParserInputBufferCreateFd
 extern __typeof (xmlParserInputBufferCreateFd) xmlParserInputBufferCreateFd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserInputBufferCreateFd) xmlParserInputBufferCreateFd __attribute((alias("xmlParserInputBufferCreateFd__internal_alias")));
 #define xmlParserInputBufferCreateFd xmlParserInputBufferCreateFd__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlParserInputBufferCreateFile
+extern __typeof (xmlParserInputBufferCreateFile) xmlParserInputBufferCreateFile __attribute((alias("xmlParserInputBufferCreateFile__internal_alias")));
+#else
+#ifndef xmlParserInputBufferCreateFile
 extern __typeof (xmlParserInputBufferCreateFile) xmlParserInputBufferCreateFile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserInputBufferCreateFile) xmlParserInputBufferCreateFile __attribute((alias("xmlParserInputBufferCreateFile__internal_alias")));
 #define xmlParserInputBufferCreateFile xmlParserInputBufferCreateFile__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlParserInputBufferCreateFilename
+extern __typeof (xmlParserInputBufferCreateFilename) xmlParserInputBufferCreateFilename __attribute((alias("xmlParserInputBufferCreateFilename__internal_alias")));
+#else
+#ifndef xmlParserInputBufferCreateFilename
 extern __typeof (xmlParserInputBufferCreateFilename) xmlParserInputBufferCreateFilename__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserInputBufferCreateFilename) xmlParserInputBufferCreateFilename __attribute((alias("xmlParserInputBufferCreateFilename__internal_alias")));
 #define xmlParserInputBufferCreateFilename xmlParserInputBufferCreateFilename__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlParserInputBufferCreateFilenameDefault
+extern __typeof (xmlParserInputBufferCreateFilenameDefault) xmlParserInputBufferCreateFilenameDefault __attribute((alias("xmlParserInputBufferCreateFilenameDefault__internal_alias")));
+#else
+#ifndef xmlParserInputBufferCreateFilenameDefault
 extern __typeof (xmlParserInputBufferCreateFilenameDefault) xmlParserInputBufferCreateFilenameDefault__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserInputBufferCreateFilenameDefault) xmlParserInputBufferCreateFilenameDefault __attribute((alias("xmlParserInputBufferCreateFilenameDefault__internal_alias")));
 #define xmlParserInputBufferCreateFilenameDefault xmlParserInputBufferCreateFilenameDefault__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlParserInputBufferCreateIO
+extern __typeof (xmlParserInputBufferCreateIO) xmlParserInputBufferCreateIO __attribute((alias("xmlParserInputBufferCreateIO__internal_alias")));
+#else
+#ifndef xmlParserInputBufferCreateIO
 extern __typeof (xmlParserInputBufferCreateIO) xmlParserInputBufferCreateIO__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserInputBufferCreateIO) xmlParserInputBufferCreateIO __attribute((alias("xmlParserInputBufferCreateIO__internal_alias")));
 #define xmlParserInputBufferCreateIO xmlParserInputBufferCreateIO__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlParserInputBufferCreateMem
+extern __typeof (xmlParserInputBufferCreateMem) xmlParserInputBufferCreateMem __attribute((alias("xmlParserInputBufferCreateMem__internal_alias")));
+#else
+#ifndef xmlParserInputBufferCreateMem
 extern __typeof (xmlParserInputBufferCreateMem) xmlParserInputBufferCreateMem__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserInputBufferCreateMem) xmlParserInputBufferCreateMem __attribute((alias("xmlParserInputBufferCreateMem__internal_alias")));
 #define xmlParserInputBufferCreateMem xmlParserInputBufferCreateMem__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlParserInputBufferCreateStatic
+extern __typeof (xmlParserInputBufferCreateStatic) xmlParserInputBufferCreateStatic __attribute((alias("xmlParserInputBufferCreateStatic__internal_alias")));
+#else
+#ifndef xmlParserInputBufferCreateStatic
 extern __typeof (xmlParserInputBufferCreateStatic) xmlParserInputBufferCreateStatic__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserInputBufferCreateStatic) xmlParserInputBufferCreateStatic __attribute((alias("xmlParserInputBufferCreateStatic__internal_alias")));
 #define xmlParserInputBufferCreateStatic xmlParserInputBufferCreateStatic__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlParserInputBufferGrow
+extern __typeof (xmlParserInputBufferGrow) xmlParserInputBufferGrow __attribute((alias("xmlParserInputBufferGrow__internal_alias")));
+#else
+#ifndef xmlParserInputBufferGrow
 extern __typeof (xmlParserInputBufferGrow) xmlParserInputBufferGrow__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserInputBufferGrow) xmlParserInputBufferGrow __attribute((alias("xmlParserInputBufferGrow__internal_alias")));
 #define xmlParserInputBufferGrow xmlParserInputBufferGrow__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlParserInputBufferPush
+extern __typeof (xmlParserInputBufferPush) xmlParserInputBufferPush __attribute((alias("xmlParserInputBufferPush__internal_alias")));
+#else
+#ifndef xmlParserInputBufferPush
 extern __typeof (xmlParserInputBufferPush) xmlParserInputBufferPush__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserInputBufferPush) xmlParserInputBufferPush __attribute((alias("xmlParserInputBufferPush__internal_alias")));
 #define xmlParserInputBufferPush xmlParserInputBufferPush__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlParserInputBufferRead
+extern __typeof (xmlParserInputBufferRead) xmlParserInputBufferRead __attribute((alias("xmlParserInputBufferRead__internal_alias")));
+#else
+#ifndef xmlParserInputBufferRead
 extern __typeof (xmlParserInputBufferRead) xmlParserInputBufferRead__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserInputBufferRead) xmlParserInputBufferRead __attribute((alias("xmlParserInputBufferRead__internal_alias")));
 #define xmlParserInputBufferRead xmlParserInputBufferRead__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlParserInputGrow
+extern __typeof (xmlParserInputGrow) xmlParserInputGrow __attribute((alias("xmlParserInputGrow__internal_alias")));
+#else
+#ifndef xmlParserInputGrow
 extern __typeof (xmlParserInputGrow) xmlParserInputGrow__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserInputGrow) xmlParserInputGrow __attribute((alias("xmlParserInputGrow__internal_alias")));
 #define xmlParserInputGrow xmlParserInputGrow__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlParserInputRead
+extern __typeof (xmlParserInputRead) xmlParserInputRead __attribute((alias("xmlParserInputRead__internal_alias")));
+#else
+#ifndef xmlParserInputRead
 extern __typeof (xmlParserInputRead) xmlParserInputRead__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserInputRead) xmlParserInputRead __attribute((alias("xmlParserInputRead__internal_alias")));
 #define xmlParserInputRead xmlParserInputRead__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlParserInputShrink
+extern __typeof (xmlParserInputShrink) xmlParserInputShrink __attribute((alias("xmlParserInputShrink__internal_alias")));
+#else
+#ifndef xmlParserInputShrink
 extern __typeof (xmlParserInputShrink) xmlParserInputShrink__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserInputShrink) xmlParserInputShrink __attribute((alias("xmlParserInputShrink__internal_alias")));
 #define xmlParserInputShrink xmlParserInputShrink__internal_alias
+#endif
+#endif
 
+#ifdef bottom_error
+#undef xmlParserPrintFileContext
+extern __typeof (xmlParserPrintFileContext) xmlParserPrintFileContext __attribute((alias("xmlParserPrintFileContext__internal_alias")));
+#else
+#ifndef xmlParserPrintFileContext
 extern __typeof (xmlParserPrintFileContext) xmlParserPrintFileContext__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserPrintFileContext) xmlParserPrintFileContext __attribute((alias("xmlParserPrintFileContext__internal_alias")));
 #define xmlParserPrintFileContext xmlParserPrintFileContext__internal_alias
+#endif
+#endif
 
+#ifdef bottom_error
+#undef xmlParserPrintFileInfo
+extern __typeof (xmlParserPrintFileInfo) xmlParserPrintFileInfo __attribute((alias("xmlParserPrintFileInfo__internal_alias")));
+#else
+#ifndef xmlParserPrintFileInfo
 extern __typeof (xmlParserPrintFileInfo) xmlParserPrintFileInfo__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserPrintFileInfo) xmlParserPrintFileInfo __attribute((alias("xmlParserPrintFileInfo__internal_alias")));
 #define xmlParserPrintFileInfo xmlParserPrintFileInfo__internal_alias
+#endif
+#endif
 
+#ifdef bottom_error
+#undef xmlParserValidityError
+extern __typeof (xmlParserValidityError) xmlParserValidityError __attribute((alias("xmlParserValidityError__internal_alias")));
+#else
+#ifndef xmlParserValidityError
 extern __typeof (xmlParserValidityError) xmlParserValidityError__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserValidityError) xmlParserValidityError __attribute((alias("xmlParserValidityError__internal_alias")));
 #define xmlParserValidityError xmlParserValidityError__internal_alias
+#endif
+#endif
 
+#ifdef bottom_error
+#undef xmlParserValidityWarning
+extern __typeof (xmlParserValidityWarning) xmlParserValidityWarning __attribute((alias("xmlParserValidityWarning__internal_alias")));
+#else
+#ifndef xmlParserValidityWarning
 extern __typeof (xmlParserValidityWarning) xmlParserValidityWarning__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserValidityWarning) xmlParserValidityWarning __attribute((alias("xmlParserValidityWarning__internal_alias")));
 #define xmlParserValidityWarning xmlParserValidityWarning__internal_alias
+#endif
+#endif
 
+#ifdef bottom_error
+#undef xmlParserWarning
+extern __typeof (xmlParserWarning) xmlParserWarning __attribute((alias("xmlParserWarning__internal_alias")));
+#else
+#ifndef xmlParserWarning
 extern __typeof (xmlParserWarning) xmlParserWarning__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlParserWarning) xmlParserWarning __attribute((alias("xmlParserWarning__internal_alias")));
 #define xmlParserWarning xmlParserWarning__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_PATTERN_ENABLED)
+#ifdef bottom_pattern
+#undef xmlPatternFromRoot
+extern __typeof (xmlPatternFromRoot) xmlPatternFromRoot __attribute((alias("xmlPatternFromRoot__internal_alias")));
+#else
+#ifndef xmlPatternFromRoot
 extern __typeof (xmlPatternFromRoot) xmlPatternFromRoot__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlPatternFromRoot) xmlPatternFromRoot __attribute((alias("xmlPatternFromRoot__internal_alias")));
 #define xmlPatternFromRoot xmlPatternFromRoot__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_PATTERN_ENABLED)
+#ifdef bottom_pattern
+#undef xmlPatternGetStreamCtxt
+extern __typeof (xmlPatternGetStreamCtxt) xmlPatternGetStreamCtxt __attribute((alias("xmlPatternGetStreamCtxt__internal_alias")));
+#else
+#ifndef xmlPatternGetStreamCtxt
 extern __typeof (xmlPatternGetStreamCtxt) xmlPatternGetStreamCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlPatternGetStreamCtxt) xmlPatternGetStreamCtxt __attribute((alias("xmlPatternGetStreamCtxt__internal_alias")));
 #define xmlPatternGetStreamCtxt xmlPatternGetStreamCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_PATTERN_ENABLED)
+#ifdef bottom_pattern
+#undef xmlPatternMatch
+extern __typeof (xmlPatternMatch) xmlPatternMatch __attribute((alias("xmlPatternMatch__internal_alias")));
+#else
+#ifndef xmlPatternMatch
 extern __typeof (xmlPatternMatch) xmlPatternMatch__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlPatternMatch) xmlPatternMatch __attribute((alias("xmlPatternMatch__internal_alias")));
 #define xmlPatternMatch xmlPatternMatch__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_PATTERN_ENABLED)
+#ifdef bottom_pattern
+#undef xmlPatternMaxDepth
+extern __typeof (xmlPatternMaxDepth) xmlPatternMaxDepth __attribute((alias("xmlPatternMaxDepth__internal_alias")));
+#else
+#ifndef xmlPatternMaxDepth
 extern __typeof (xmlPatternMaxDepth) xmlPatternMaxDepth__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlPatternMaxDepth) xmlPatternMaxDepth __attribute((alias("xmlPatternMaxDepth__internal_alias")));
 #define xmlPatternMaxDepth xmlPatternMaxDepth__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_PATTERN_ENABLED)
+#ifdef bottom_pattern
+#undef xmlPatternStreamable
+extern __typeof (xmlPatternStreamable) xmlPatternStreamable __attribute((alias("xmlPatternStreamable__internal_alias")));
+#else
+#ifndef xmlPatternStreamable
 extern __typeof (xmlPatternStreamable) xmlPatternStreamable__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlPatternStreamable) xmlPatternStreamable __attribute((alias("xmlPatternStreamable__internal_alias")));
 #define xmlPatternStreamable xmlPatternStreamable__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_PATTERN_ENABLED)
+#ifdef bottom_pattern
+#undef xmlPatterncompile
+extern __typeof (xmlPatterncompile) xmlPatterncompile __attribute((alias("xmlPatterncompile__internal_alias")));
+#else
+#ifndef xmlPatterncompile
 extern __typeof (xmlPatterncompile) xmlPatterncompile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlPatterncompile) xmlPatterncompile __attribute((alias("xmlPatterncompile__internal_alias")));
 #define xmlPatterncompile xmlPatterncompile__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlPedanticParserDefault
+extern __typeof (xmlPedanticParserDefault) xmlPedanticParserDefault __attribute((alias("xmlPedanticParserDefault__internal_alias")));
+#else
+#ifndef xmlPedanticParserDefault
 extern __typeof (xmlPedanticParserDefault) xmlPedanticParserDefault__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlPedanticParserDefault) xmlPedanticParserDefault __attribute((alias("xmlPedanticParserDefault__internal_alias")));
 #define xmlPedanticParserDefault xmlPedanticParserDefault__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlPopInput
+extern __typeof (xmlPopInput) xmlPopInput __attribute((alias("xmlPopInput__internal_alias")));
+#else
+#ifndef xmlPopInput
 extern __typeof (xmlPopInput) xmlPopInput__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlPopInput) xmlPopInput __attribute((alias("xmlPopInput__internal_alias")));
 #define xmlPopInput xmlPopInput__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlPopInputCallbacks
+extern __typeof (xmlPopInputCallbacks) xmlPopInputCallbacks __attribute((alias("xmlPopInputCallbacks__internal_alias")));
+#else
+#ifndef xmlPopInputCallbacks
 extern __typeof (xmlPopInputCallbacks) xmlPopInputCallbacks__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlPopInputCallbacks) xmlPopInputCallbacks __attribute((alias("xmlPopInputCallbacks__internal_alias")));
 #define xmlPopInputCallbacks xmlPopInputCallbacks__internal_alias
+#endif
+#endif
 
+#ifdef bottom_uri
+#undef xmlPrintURI
+extern __typeof (xmlPrintURI) xmlPrintURI __attribute((alias("xmlPrintURI__internal_alias")));
+#else
+#ifndef xmlPrintURI
 extern __typeof (xmlPrintURI) xmlPrintURI__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlPrintURI) xmlPrintURI __attribute((alias("xmlPrintURI__internal_alias")));
 #define xmlPrintURI xmlPrintURI__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlPushInput
+extern __typeof (xmlPushInput) xmlPushInput __attribute((alias("xmlPushInput__internal_alias")));
+#else
+#ifndef xmlPushInput
 extern __typeof (xmlPushInput) xmlPushInput__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlPushInput) xmlPushInput __attribute((alias("xmlPushInput__internal_alias")));
 #define xmlPushInput xmlPushInput__internal_alias
+#endif
+#endif
 
+#ifdef bottom_threads
+#undef xmlRMutexLock
+extern __typeof (xmlRMutexLock) xmlRMutexLock __attribute((alias("xmlRMutexLock__internal_alias")));
+#else
+#ifndef xmlRMutexLock
 extern __typeof (xmlRMutexLock) xmlRMutexLock__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRMutexLock) xmlRMutexLock __attribute((alias("xmlRMutexLock__internal_alias")));
 #define xmlRMutexLock xmlRMutexLock__internal_alias
+#endif
+#endif
 
+#ifdef bottom_threads
+#undef xmlRMutexUnlock
+extern __typeof (xmlRMutexUnlock) xmlRMutexUnlock __attribute((alias("xmlRMutexUnlock__internal_alias")));
+#else
+#ifndef xmlRMutexUnlock
 extern __typeof (xmlRMutexUnlock) xmlRMutexUnlock__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRMutexUnlock) xmlRMutexUnlock __attribute((alias("xmlRMutexUnlock__internal_alias")));
 #define xmlRMutexUnlock xmlRMutexUnlock__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlReadDoc
+extern __typeof (xmlReadDoc) xmlReadDoc __attribute((alias("xmlReadDoc__internal_alias")));
+#else
+#ifndef xmlReadDoc
 extern __typeof (xmlReadDoc) xmlReadDoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlReadDoc) xmlReadDoc __attribute((alias("xmlReadDoc__internal_alias")));
 #define xmlReadDoc xmlReadDoc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlReadFd
+extern __typeof (xmlReadFd) xmlReadFd __attribute((alias("xmlReadFd__internal_alias")));
+#else
+#ifndef xmlReadFd
 extern __typeof (xmlReadFd) xmlReadFd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlReadFd) xmlReadFd __attribute((alias("xmlReadFd__internal_alias")));
 #define xmlReadFd xmlReadFd__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlReadFile
+extern __typeof (xmlReadFile) xmlReadFile __attribute((alias("xmlReadFile__internal_alias")));
+#else
+#ifndef xmlReadFile
 extern __typeof (xmlReadFile) xmlReadFile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlReadFile) xmlReadFile __attribute((alias("xmlReadFile__internal_alias")));
 #define xmlReadFile xmlReadFile__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlReadIO
+extern __typeof (xmlReadIO) xmlReadIO __attribute((alias("xmlReadIO__internal_alias")));
+#else
+#ifndef xmlReadIO
 extern __typeof (xmlReadIO) xmlReadIO__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlReadIO) xmlReadIO __attribute((alias("xmlReadIO__internal_alias")));
 #define xmlReadIO xmlReadIO__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlReadMemory
+extern __typeof (xmlReadMemory) xmlReadMemory __attribute((alias("xmlReadMemory__internal_alias")));
+#else
+#ifndef xmlReadMemory
 extern __typeof (xmlReadMemory) xmlReadMemory__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlReadMemory) xmlReadMemory __attribute((alias("xmlReadMemory__internal_alias")));
 #define xmlReadMemory xmlReadMemory__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlReaderForDoc
+extern __typeof (xmlReaderForDoc) xmlReaderForDoc __attribute((alias("xmlReaderForDoc__internal_alias")));
+#else
+#ifndef xmlReaderForDoc
 extern __typeof (xmlReaderForDoc) xmlReaderForDoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlReaderForDoc) xmlReaderForDoc __attribute((alias("xmlReaderForDoc__internal_alias")));
 #define xmlReaderForDoc xmlReaderForDoc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlReaderForFd
+extern __typeof (xmlReaderForFd) xmlReaderForFd __attribute((alias("xmlReaderForFd__internal_alias")));
+#else
+#ifndef xmlReaderForFd
 extern __typeof (xmlReaderForFd) xmlReaderForFd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlReaderForFd) xmlReaderForFd __attribute((alias("xmlReaderForFd__internal_alias")));
 #define xmlReaderForFd xmlReaderForFd__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlReaderForFile
+extern __typeof (xmlReaderForFile) xmlReaderForFile __attribute((alias("xmlReaderForFile__internal_alias")));
+#else
+#ifndef xmlReaderForFile
 extern __typeof (xmlReaderForFile) xmlReaderForFile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlReaderForFile) xmlReaderForFile __attribute((alias("xmlReaderForFile__internal_alias")));
 #define xmlReaderForFile xmlReaderForFile__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlReaderForIO
+extern __typeof (xmlReaderForIO) xmlReaderForIO __attribute((alias("xmlReaderForIO__internal_alias")));
+#else
+#ifndef xmlReaderForIO
 extern __typeof (xmlReaderForIO) xmlReaderForIO__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlReaderForIO) xmlReaderForIO __attribute((alias("xmlReaderForIO__internal_alias")));
 #define xmlReaderForIO xmlReaderForIO__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlReaderForMemory
+extern __typeof (xmlReaderForMemory) xmlReaderForMemory __attribute((alias("xmlReaderForMemory__internal_alias")));
+#else
+#ifndef xmlReaderForMemory
 extern __typeof (xmlReaderForMemory) xmlReaderForMemory__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlReaderForMemory) xmlReaderForMemory __attribute((alias("xmlReaderForMemory__internal_alias")));
 #define xmlReaderForMemory xmlReaderForMemory__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlReaderNewDoc
+extern __typeof (xmlReaderNewDoc) xmlReaderNewDoc __attribute((alias("xmlReaderNewDoc__internal_alias")));
+#else
+#ifndef xmlReaderNewDoc
 extern __typeof (xmlReaderNewDoc) xmlReaderNewDoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlReaderNewDoc) xmlReaderNewDoc __attribute((alias("xmlReaderNewDoc__internal_alias")));
 #define xmlReaderNewDoc xmlReaderNewDoc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlReaderNewFd
+extern __typeof (xmlReaderNewFd) xmlReaderNewFd __attribute((alias("xmlReaderNewFd__internal_alias")));
+#else
+#ifndef xmlReaderNewFd
 extern __typeof (xmlReaderNewFd) xmlReaderNewFd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlReaderNewFd) xmlReaderNewFd __attribute((alias("xmlReaderNewFd__internal_alias")));
 #define xmlReaderNewFd xmlReaderNewFd__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlReaderNewFile
+extern __typeof (xmlReaderNewFile) xmlReaderNewFile __attribute((alias("xmlReaderNewFile__internal_alias")));
+#else
+#ifndef xmlReaderNewFile
 extern __typeof (xmlReaderNewFile) xmlReaderNewFile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlReaderNewFile) xmlReaderNewFile __attribute((alias("xmlReaderNewFile__internal_alias")));
 #define xmlReaderNewFile xmlReaderNewFile__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlReaderNewIO
+extern __typeof (xmlReaderNewIO) xmlReaderNewIO __attribute((alias("xmlReaderNewIO__internal_alias")));
+#else
+#ifndef xmlReaderNewIO
 extern __typeof (xmlReaderNewIO) xmlReaderNewIO__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlReaderNewIO) xmlReaderNewIO __attribute((alias("xmlReaderNewIO__internal_alias")));
 #define xmlReaderNewIO xmlReaderNewIO__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlReaderNewMemory
+extern __typeof (xmlReaderNewMemory) xmlReaderNewMemory __attribute((alias("xmlReaderNewMemory__internal_alias")));
+#else
+#ifndef xmlReaderNewMemory
 extern __typeof (xmlReaderNewMemory) xmlReaderNewMemory__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlReaderNewMemory) xmlReaderNewMemory __attribute((alias("xmlReaderNewMemory__internal_alias")));
 #define xmlReaderNewMemory xmlReaderNewMemory__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlReaderNewWalker
+extern __typeof (xmlReaderNewWalker) xmlReaderNewWalker __attribute((alias("xmlReaderNewWalker__internal_alias")));
+#else
+#ifndef xmlReaderNewWalker
 extern __typeof (xmlReaderNewWalker) xmlReaderNewWalker__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlReaderNewWalker) xmlReaderNewWalker __attribute((alias("xmlReaderNewWalker__internal_alias")));
 #define xmlReaderNewWalker xmlReaderNewWalker__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlReaderWalker
+extern __typeof (xmlReaderWalker) xmlReaderWalker __attribute((alias("xmlReaderWalker__internal_alias")));
+#else
+#ifndef xmlReaderWalker
 extern __typeof (xmlReaderWalker) xmlReaderWalker__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlReaderWalker) xmlReaderWalker __attribute((alias("xmlReaderWalker__internal_alias")));
 #define xmlReaderWalker xmlReaderWalker__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_xmlmemory
+#undef xmlReallocLoc
+extern __typeof (xmlReallocLoc) xmlReallocLoc __attribute((alias("xmlReallocLoc__internal_alias")));
+#else
+#ifndef xmlReallocLoc
 extern __typeof (xmlReallocLoc) xmlReallocLoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlReallocLoc) xmlReallocLoc __attribute((alias("xmlReallocLoc__internal_alias")));
 #define xmlReallocLoc xmlReallocLoc__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_tree
+#undef xmlReconciliateNs
+extern __typeof (xmlReconciliateNs) xmlReconciliateNs __attribute((alias("xmlReconciliateNs__internal_alias")));
+#else
+#ifndef xmlReconciliateNs
 extern __typeof (xmlReconciliateNs) xmlReconciliateNs__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlReconciliateNs) xmlReconciliateNs __attribute((alias("xmlReconciliateNs__internal_alias")));
 #define xmlReconciliateNs xmlReconciliateNs__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_parser
+#undef xmlRecoverDoc
+extern __typeof (xmlRecoverDoc) xmlRecoverDoc __attribute((alias("xmlRecoverDoc__internal_alias")));
+#else
+#ifndef xmlRecoverDoc
 extern __typeof (xmlRecoverDoc) xmlRecoverDoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRecoverDoc) xmlRecoverDoc __attribute((alias("xmlRecoverDoc__internal_alias")));
 #define xmlRecoverDoc xmlRecoverDoc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_parser
+#undef xmlRecoverFile
+extern __typeof (xmlRecoverFile) xmlRecoverFile __attribute((alias("xmlRecoverFile__internal_alias")));
+#else
+#ifndef xmlRecoverFile
 extern __typeof (xmlRecoverFile) xmlRecoverFile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRecoverFile) xmlRecoverFile __attribute((alias("xmlRecoverFile__internal_alias")));
 #define xmlRecoverFile xmlRecoverFile__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_parser
+#undef xmlRecoverMemory
+extern __typeof (xmlRecoverMemory) xmlRecoverMemory __attribute((alias("xmlRecoverMemory__internal_alias")));
+#else
+#ifndef xmlRecoverMemory
 extern __typeof (xmlRecoverMemory) xmlRecoverMemory__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRecoverMemory) xmlRecoverMemory __attribute((alias("xmlRecoverMemory__internal_alias")));
 #define xmlRecoverMemory xmlRecoverMemory__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlRegExecErrInfo
+extern __typeof (xmlRegExecErrInfo) xmlRegExecErrInfo __attribute((alias("xmlRegExecErrInfo__internal_alias")));
+#else
+#ifndef xmlRegExecErrInfo
 extern __typeof (xmlRegExecErrInfo) xmlRegExecErrInfo__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRegExecErrInfo) xmlRegExecErrInfo __attribute((alias("xmlRegExecErrInfo__internal_alias")));
 #define xmlRegExecErrInfo xmlRegExecErrInfo__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlRegExecNextValues
+extern __typeof (xmlRegExecNextValues) xmlRegExecNextValues __attribute((alias("xmlRegExecNextValues__internal_alias")));
+#else
+#ifndef xmlRegExecNextValues
 extern __typeof (xmlRegExecNextValues) xmlRegExecNextValues__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRegExecNextValues) xmlRegExecNextValues __attribute((alias("xmlRegExecNextValues__internal_alias")));
 #define xmlRegExecNextValues xmlRegExecNextValues__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlRegExecPushString
+extern __typeof (xmlRegExecPushString) xmlRegExecPushString __attribute((alias("xmlRegExecPushString__internal_alias")));
+#else
+#ifndef xmlRegExecPushString
 extern __typeof (xmlRegExecPushString) xmlRegExecPushString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRegExecPushString) xmlRegExecPushString __attribute((alias("xmlRegExecPushString__internal_alias")));
 #define xmlRegExecPushString xmlRegExecPushString__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlRegExecPushString2
+extern __typeof (xmlRegExecPushString2) xmlRegExecPushString2 __attribute((alias("xmlRegExecPushString2__internal_alias")));
+#else
+#ifndef xmlRegExecPushString2
 extern __typeof (xmlRegExecPushString2) xmlRegExecPushString2__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRegExecPushString2) xmlRegExecPushString2 __attribute((alias("xmlRegExecPushString2__internal_alias")));
 #define xmlRegExecPushString2 xmlRegExecPushString2__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlRegFreeExecCtxt
+extern __typeof (xmlRegFreeExecCtxt) xmlRegFreeExecCtxt __attribute((alias("xmlRegFreeExecCtxt__internal_alias")));
+#else
+#ifndef xmlRegFreeExecCtxt
 extern __typeof (xmlRegFreeExecCtxt) xmlRegFreeExecCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRegFreeExecCtxt) xmlRegFreeExecCtxt __attribute((alias("xmlRegFreeExecCtxt__internal_alias")));
 #define xmlRegFreeExecCtxt xmlRegFreeExecCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlRegFreeRegexp
+extern __typeof (xmlRegFreeRegexp) xmlRegFreeRegexp __attribute((alias("xmlRegFreeRegexp__internal_alias")));
+#else
+#ifndef xmlRegFreeRegexp
 extern __typeof (xmlRegFreeRegexp) xmlRegFreeRegexp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRegFreeRegexp) xmlRegFreeRegexp __attribute((alias("xmlRegFreeRegexp__internal_alias")));
 #define xmlRegFreeRegexp xmlRegFreeRegexp__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlRegNewExecCtxt
+extern __typeof (xmlRegNewExecCtxt) xmlRegNewExecCtxt __attribute((alias("xmlRegNewExecCtxt__internal_alias")));
+#else
+#ifndef xmlRegNewExecCtxt
 extern __typeof (xmlRegNewExecCtxt) xmlRegNewExecCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRegNewExecCtxt) xmlRegNewExecCtxt __attribute((alias("xmlRegNewExecCtxt__internal_alias")));
 #define xmlRegNewExecCtxt xmlRegNewExecCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlRegexpCompile
+extern __typeof (xmlRegexpCompile) xmlRegexpCompile __attribute((alias("xmlRegexpCompile__internal_alias")));
+#else
+#ifndef xmlRegexpCompile
 extern __typeof (xmlRegexpCompile) xmlRegexpCompile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRegexpCompile) xmlRegexpCompile __attribute((alias("xmlRegexpCompile__internal_alias")));
 #define xmlRegexpCompile xmlRegexpCompile__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlRegexpExec
+extern __typeof (xmlRegexpExec) xmlRegexpExec __attribute((alias("xmlRegexpExec__internal_alias")));
+#else
+#ifndef xmlRegexpExec
 extern __typeof (xmlRegexpExec) xmlRegexpExec__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRegexpExec) xmlRegexpExec __attribute((alias("xmlRegexpExec__internal_alias")));
 #define xmlRegexpExec xmlRegexpExec__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlRegexpIsDeterminist
+extern __typeof (xmlRegexpIsDeterminist) xmlRegexpIsDeterminist __attribute((alias("xmlRegexpIsDeterminist__internal_alias")));
+#else
+#ifndef xmlRegexpIsDeterminist
 extern __typeof (xmlRegexpIsDeterminist) xmlRegexpIsDeterminist__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRegexpIsDeterminist) xmlRegexpIsDeterminist __attribute((alias("xmlRegexpIsDeterminist__internal_alias")));
 #define xmlRegexpIsDeterminist xmlRegexpIsDeterminist__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_REGEXP_ENABLED)
+#ifdef bottom_xmlregexp
+#undef xmlRegexpPrint
+extern __typeof (xmlRegexpPrint) xmlRegexpPrint __attribute((alias("xmlRegexpPrint__internal_alias")));
+#else
+#ifndef xmlRegexpPrint
 extern __typeof (xmlRegexpPrint) xmlRegexpPrint__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRegexpPrint) xmlRegexpPrint __attribute((alias("xmlRegexpPrint__internal_alias")));
 #define xmlRegexpPrint xmlRegexpPrint__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_encoding
+#undef xmlRegisterCharEncodingHandler
+extern __typeof (xmlRegisterCharEncodingHandler) xmlRegisterCharEncodingHandler __attribute((alias("xmlRegisterCharEncodingHandler__internal_alias")));
+#else
+#ifndef xmlRegisterCharEncodingHandler
 extern __typeof (xmlRegisterCharEncodingHandler) xmlRegisterCharEncodingHandler__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRegisterCharEncodingHandler) xmlRegisterCharEncodingHandler __attribute((alias("xmlRegisterCharEncodingHandler__internal_alias")));
 #define xmlRegisterCharEncodingHandler xmlRegisterCharEncodingHandler__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlRegisterDefaultInputCallbacks
+extern __typeof (xmlRegisterDefaultInputCallbacks) xmlRegisterDefaultInputCallbacks __attribute((alias("xmlRegisterDefaultInputCallbacks__internal_alias")));
+#else
+#ifndef xmlRegisterDefaultInputCallbacks
 extern __typeof (xmlRegisterDefaultInputCallbacks) xmlRegisterDefaultInputCallbacks__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRegisterDefaultInputCallbacks) xmlRegisterDefaultInputCallbacks __attribute((alias("xmlRegisterDefaultInputCallbacks__internal_alias")));
 #define xmlRegisterDefaultInputCallbacks xmlRegisterDefaultInputCallbacks__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlRegisterDefaultOutputCallbacks
+extern __typeof (xmlRegisterDefaultOutputCallbacks) xmlRegisterDefaultOutputCallbacks __attribute((alias("xmlRegisterDefaultOutputCallbacks__internal_alias")));
+#else
+#ifndef xmlRegisterDefaultOutputCallbacks
 extern __typeof (xmlRegisterDefaultOutputCallbacks) xmlRegisterDefaultOutputCallbacks__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRegisterDefaultOutputCallbacks) xmlRegisterDefaultOutputCallbacks __attribute((alias("xmlRegisterDefaultOutputCallbacks__internal_alias")));
 #define xmlRegisterDefaultOutputCallbacks xmlRegisterDefaultOutputCallbacks__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED) && defined(LIBXML_HTTP_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlRegisterHTTPPostCallbacks
+extern __typeof (xmlRegisterHTTPPostCallbacks) xmlRegisterHTTPPostCallbacks __attribute((alias("xmlRegisterHTTPPostCallbacks__internal_alias")));
+#else
+#ifndef xmlRegisterHTTPPostCallbacks
 extern __typeof (xmlRegisterHTTPPostCallbacks) xmlRegisterHTTPPostCallbacks__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRegisterHTTPPostCallbacks) xmlRegisterHTTPPostCallbacks __attribute((alias("xmlRegisterHTTPPostCallbacks__internal_alias")));
 #define xmlRegisterHTTPPostCallbacks xmlRegisterHTTPPostCallbacks__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlRegisterInputCallbacks
+extern __typeof (xmlRegisterInputCallbacks) xmlRegisterInputCallbacks __attribute((alias("xmlRegisterInputCallbacks__internal_alias")));
+#else
+#ifndef xmlRegisterInputCallbacks
 extern __typeof (xmlRegisterInputCallbacks) xmlRegisterInputCallbacks__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRegisterInputCallbacks) xmlRegisterInputCallbacks __attribute((alias("xmlRegisterInputCallbacks__internal_alias")));
 #define xmlRegisterInputCallbacks xmlRegisterInputCallbacks__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlRegisterNodeDefault
+extern __typeof (xmlRegisterNodeDefault) xmlRegisterNodeDefault __attribute((alias("xmlRegisterNodeDefault__internal_alias")));
+#else
+#ifndef xmlRegisterNodeDefault
 extern __typeof (xmlRegisterNodeDefault) xmlRegisterNodeDefault__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRegisterNodeDefault) xmlRegisterNodeDefault __attribute((alias("xmlRegisterNodeDefault__internal_alias")));
 #define xmlRegisterNodeDefault xmlRegisterNodeDefault__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlIO
+#undef xmlRegisterOutputCallbacks
+extern __typeof (xmlRegisterOutputCallbacks) xmlRegisterOutputCallbacks __attribute((alias("xmlRegisterOutputCallbacks__internal_alias")));
+#else
+#ifndef xmlRegisterOutputCallbacks
 extern __typeof (xmlRegisterOutputCallbacks) xmlRegisterOutputCallbacks__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRegisterOutputCallbacks) xmlRegisterOutputCallbacks __attribute((alias("xmlRegisterOutputCallbacks__internal_alias")));
 #define xmlRegisterOutputCallbacks xmlRegisterOutputCallbacks__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_relaxng
+#undef xmlRelaxNGCleanupTypes
+extern __typeof (xmlRelaxNGCleanupTypes) xmlRelaxNGCleanupTypes __attribute((alias("xmlRelaxNGCleanupTypes__internal_alias")));
+#else
+#ifndef xmlRelaxNGCleanupTypes
 extern __typeof (xmlRelaxNGCleanupTypes) xmlRelaxNGCleanupTypes__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRelaxNGCleanupTypes) xmlRelaxNGCleanupTypes __attribute((alias("xmlRelaxNGCleanupTypes__internal_alias")));
 #define xmlRelaxNGCleanupTypes xmlRelaxNGCleanupTypes__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_relaxng
+#undef xmlRelaxNGDump
+extern __typeof (xmlRelaxNGDump) xmlRelaxNGDump __attribute((alias("xmlRelaxNGDump__internal_alias")));
+#else
+#ifndef xmlRelaxNGDump
 extern __typeof (xmlRelaxNGDump) xmlRelaxNGDump__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRelaxNGDump) xmlRelaxNGDump __attribute((alias("xmlRelaxNGDump__internal_alias")));
 #define xmlRelaxNGDump xmlRelaxNGDump__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_relaxng
+#undef xmlRelaxNGDumpTree
+extern __typeof (xmlRelaxNGDumpTree) xmlRelaxNGDumpTree __attribute((alias("xmlRelaxNGDumpTree__internal_alias")));
+#else
+#ifndef xmlRelaxNGDumpTree
 extern __typeof (xmlRelaxNGDumpTree) xmlRelaxNGDumpTree__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRelaxNGDumpTree) xmlRelaxNGDumpTree __attribute((alias("xmlRelaxNGDumpTree__internal_alias")));
 #define xmlRelaxNGDumpTree xmlRelaxNGDumpTree__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_relaxng
+#undef xmlRelaxNGFree
+extern __typeof (xmlRelaxNGFree) xmlRelaxNGFree __attribute((alias("xmlRelaxNGFree__internal_alias")));
+#else
+#ifndef xmlRelaxNGFree
 extern __typeof (xmlRelaxNGFree) xmlRelaxNGFree__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRelaxNGFree) xmlRelaxNGFree __attribute((alias("xmlRelaxNGFree__internal_alias")));
 #define xmlRelaxNGFree xmlRelaxNGFree__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_relaxng
+#undef xmlRelaxNGFreeParserCtxt
+extern __typeof (xmlRelaxNGFreeParserCtxt) xmlRelaxNGFreeParserCtxt __attribute((alias("xmlRelaxNGFreeParserCtxt__internal_alias")));
+#else
+#ifndef xmlRelaxNGFreeParserCtxt
 extern __typeof (xmlRelaxNGFreeParserCtxt) xmlRelaxNGFreeParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRelaxNGFreeParserCtxt) xmlRelaxNGFreeParserCtxt __attribute((alias("xmlRelaxNGFreeParserCtxt__internal_alias")));
 #define xmlRelaxNGFreeParserCtxt xmlRelaxNGFreeParserCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_relaxng
+#undef xmlRelaxNGFreeValidCtxt
+extern __typeof (xmlRelaxNGFreeValidCtxt) xmlRelaxNGFreeValidCtxt __attribute((alias("xmlRelaxNGFreeValidCtxt__internal_alias")));
+#else
+#ifndef xmlRelaxNGFreeValidCtxt
 extern __typeof (xmlRelaxNGFreeValidCtxt) xmlRelaxNGFreeValidCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRelaxNGFreeValidCtxt) xmlRelaxNGFreeValidCtxt __attribute((alias("xmlRelaxNGFreeValidCtxt__internal_alias")));
 #define xmlRelaxNGFreeValidCtxt xmlRelaxNGFreeValidCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_relaxng
+#undef xmlRelaxNGGetParserErrors
+extern __typeof (xmlRelaxNGGetParserErrors) xmlRelaxNGGetParserErrors __attribute((alias("xmlRelaxNGGetParserErrors__internal_alias")));
+#else
+#ifndef xmlRelaxNGGetParserErrors
 extern __typeof (xmlRelaxNGGetParserErrors) xmlRelaxNGGetParserErrors__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRelaxNGGetParserErrors) xmlRelaxNGGetParserErrors __attribute((alias("xmlRelaxNGGetParserErrors__internal_alias")));
 #define xmlRelaxNGGetParserErrors xmlRelaxNGGetParserErrors__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_relaxng
+#undef xmlRelaxNGGetValidErrors
+extern __typeof (xmlRelaxNGGetValidErrors) xmlRelaxNGGetValidErrors __attribute((alias("xmlRelaxNGGetValidErrors__internal_alias")));
+#else
+#ifndef xmlRelaxNGGetValidErrors
 extern __typeof (xmlRelaxNGGetValidErrors) xmlRelaxNGGetValidErrors__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRelaxNGGetValidErrors) xmlRelaxNGGetValidErrors __attribute((alias("xmlRelaxNGGetValidErrors__internal_alias")));
 #define xmlRelaxNGGetValidErrors xmlRelaxNGGetValidErrors__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_relaxng
+#undef xmlRelaxNGInitTypes
+extern __typeof (xmlRelaxNGInitTypes) xmlRelaxNGInitTypes __attribute((alias("xmlRelaxNGInitTypes__internal_alias")));
+#else
+#ifndef xmlRelaxNGInitTypes
 extern __typeof (xmlRelaxNGInitTypes) xmlRelaxNGInitTypes__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRelaxNGInitTypes) xmlRelaxNGInitTypes __attribute((alias("xmlRelaxNGInitTypes__internal_alias")));
 #define xmlRelaxNGInitTypes xmlRelaxNGInitTypes__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_relaxng
+#undef xmlRelaxNGNewDocParserCtxt
+extern __typeof (xmlRelaxNGNewDocParserCtxt) xmlRelaxNGNewDocParserCtxt __attribute((alias("xmlRelaxNGNewDocParserCtxt__internal_alias")));
+#else
+#ifndef xmlRelaxNGNewDocParserCtxt
 extern __typeof (xmlRelaxNGNewDocParserCtxt) xmlRelaxNGNewDocParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRelaxNGNewDocParserCtxt) xmlRelaxNGNewDocParserCtxt __attribute((alias("xmlRelaxNGNewDocParserCtxt__internal_alias")));
 #define xmlRelaxNGNewDocParserCtxt xmlRelaxNGNewDocParserCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_relaxng
+#undef xmlRelaxNGNewMemParserCtxt
+extern __typeof (xmlRelaxNGNewMemParserCtxt) xmlRelaxNGNewMemParserCtxt __attribute((alias("xmlRelaxNGNewMemParserCtxt__internal_alias")));
+#else
+#ifndef xmlRelaxNGNewMemParserCtxt
 extern __typeof (xmlRelaxNGNewMemParserCtxt) xmlRelaxNGNewMemParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRelaxNGNewMemParserCtxt) xmlRelaxNGNewMemParserCtxt __attribute((alias("xmlRelaxNGNewMemParserCtxt__internal_alias")));
 #define xmlRelaxNGNewMemParserCtxt xmlRelaxNGNewMemParserCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_relaxng
+#undef xmlRelaxNGNewParserCtxt
+extern __typeof (xmlRelaxNGNewParserCtxt) xmlRelaxNGNewParserCtxt __attribute((alias("xmlRelaxNGNewParserCtxt__internal_alias")));
+#else
+#ifndef xmlRelaxNGNewParserCtxt
 extern __typeof (xmlRelaxNGNewParserCtxt) xmlRelaxNGNewParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRelaxNGNewParserCtxt) xmlRelaxNGNewParserCtxt __attribute((alias("xmlRelaxNGNewParserCtxt__internal_alias")));
 #define xmlRelaxNGNewParserCtxt xmlRelaxNGNewParserCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_relaxng
+#undef xmlRelaxNGNewValidCtxt
+extern __typeof (xmlRelaxNGNewValidCtxt) xmlRelaxNGNewValidCtxt __attribute((alias("xmlRelaxNGNewValidCtxt__internal_alias")));
+#else
+#ifndef xmlRelaxNGNewValidCtxt
 extern __typeof (xmlRelaxNGNewValidCtxt) xmlRelaxNGNewValidCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRelaxNGNewValidCtxt) xmlRelaxNGNewValidCtxt __attribute((alias("xmlRelaxNGNewValidCtxt__internal_alias")));
 #define xmlRelaxNGNewValidCtxt xmlRelaxNGNewValidCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_relaxng
+#undef xmlRelaxNGParse
+extern __typeof (xmlRelaxNGParse) xmlRelaxNGParse __attribute((alias("xmlRelaxNGParse__internal_alias")));
+#else
+#ifndef xmlRelaxNGParse
 extern __typeof (xmlRelaxNGParse) xmlRelaxNGParse__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRelaxNGParse) xmlRelaxNGParse __attribute((alias("xmlRelaxNGParse__internal_alias")));
 #define xmlRelaxNGParse xmlRelaxNGParse__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_relaxng
+#undef xmlRelaxNGSetParserErrors
+extern __typeof (xmlRelaxNGSetParserErrors) xmlRelaxNGSetParserErrors __attribute((alias("xmlRelaxNGSetParserErrors__internal_alias")));
+#else
+#ifndef xmlRelaxNGSetParserErrors
 extern __typeof (xmlRelaxNGSetParserErrors) xmlRelaxNGSetParserErrors__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRelaxNGSetParserErrors) xmlRelaxNGSetParserErrors __attribute((alias("xmlRelaxNGSetParserErrors__internal_alias")));
 #define xmlRelaxNGSetParserErrors xmlRelaxNGSetParserErrors__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_relaxng
+#undef xmlRelaxNGSetValidErrors
+extern __typeof (xmlRelaxNGSetValidErrors) xmlRelaxNGSetValidErrors __attribute((alias("xmlRelaxNGSetValidErrors__internal_alias")));
+#else
+#ifndef xmlRelaxNGSetValidErrors
 extern __typeof (xmlRelaxNGSetValidErrors) xmlRelaxNGSetValidErrors__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRelaxNGSetValidErrors) xmlRelaxNGSetValidErrors __attribute((alias("xmlRelaxNGSetValidErrors__internal_alias")));
 #define xmlRelaxNGSetValidErrors xmlRelaxNGSetValidErrors__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_relaxng
+#undef xmlRelaxNGValidateDoc
+extern __typeof (xmlRelaxNGValidateDoc) xmlRelaxNGValidateDoc __attribute((alias("xmlRelaxNGValidateDoc__internal_alias")));
+#else
+#ifndef xmlRelaxNGValidateDoc
 extern __typeof (xmlRelaxNGValidateDoc) xmlRelaxNGValidateDoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRelaxNGValidateDoc) xmlRelaxNGValidateDoc __attribute((alias("xmlRelaxNGValidateDoc__internal_alias")));
 #define xmlRelaxNGValidateDoc xmlRelaxNGValidateDoc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_relaxng
+#undef xmlRelaxNGValidateFullElement
+extern __typeof (xmlRelaxNGValidateFullElement) xmlRelaxNGValidateFullElement __attribute((alias("xmlRelaxNGValidateFullElement__internal_alias")));
+#else
+#ifndef xmlRelaxNGValidateFullElement
 extern __typeof (xmlRelaxNGValidateFullElement) xmlRelaxNGValidateFullElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRelaxNGValidateFullElement) xmlRelaxNGValidateFullElement __attribute((alias("xmlRelaxNGValidateFullElement__internal_alias")));
 #define xmlRelaxNGValidateFullElement xmlRelaxNGValidateFullElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_relaxng
+#undef xmlRelaxNGValidatePopElement
+extern __typeof (xmlRelaxNGValidatePopElement) xmlRelaxNGValidatePopElement __attribute((alias("xmlRelaxNGValidatePopElement__internal_alias")));
+#else
+#ifndef xmlRelaxNGValidatePopElement
 extern __typeof (xmlRelaxNGValidatePopElement) xmlRelaxNGValidatePopElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRelaxNGValidatePopElement) xmlRelaxNGValidatePopElement __attribute((alias("xmlRelaxNGValidatePopElement__internal_alias")));
 #define xmlRelaxNGValidatePopElement xmlRelaxNGValidatePopElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_relaxng
+#undef xmlRelaxNGValidatePushCData
+extern __typeof (xmlRelaxNGValidatePushCData) xmlRelaxNGValidatePushCData __attribute((alias("xmlRelaxNGValidatePushCData__internal_alias")));
+#else
+#ifndef xmlRelaxNGValidatePushCData
 extern __typeof (xmlRelaxNGValidatePushCData) xmlRelaxNGValidatePushCData__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRelaxNGValidatePushCData) xmlRelaxNGValidatePushCData __attribute((alias("xmlRelaxNGValidatePushCData__internal_alias")));
 #define xmlRelaxNGValidatePushCData xmlRelaxNGValidatePushCData__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_relaxng
+#undef xmlRelaxNGValidatePushElement
+extern __typeof (xmlRelaxNGValidatePushElement) xmlRelaxNGValidatePushElement __attribute((alias("xmlRelaxNGValidatePushElement__internal_alias")));
+#else
+#ifndef xmlRelaxNGValidatePushElement
 extern __typeof (xmlRelaxNGValidatePushElement) xmlRelaxNGValidatePushElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRelaxNGValidatePushElement) xmlRelaxNGValidatePushElement __attribute((alias("xmlRelaxNGValidatePushElement__internal_alias")));
 #define xmlRelaxNGValidatePushElement xmlRelaxNGValidatePushElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_relaxng
+#undef xmlRelaxParserSetFlag
+extern __typeof (xmlRelaxParserSetFlag) xmlRelaxParserSetFlag __attribute((alias("xmlRelaxParserSetFlag__internal_alias")));
+#else
+#ifndef xmlRelaxParserSetFlag
 extern __typeof (xmlRelaxParserSetFlag) xmlRelaxParserSetFlag__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRelaxParserSetFlag) xmlRelaxParserSetFlag __attribute((alias("xmlRelaxParserSetFlag__internal_alias")));
 #define xmlRelaxParserSetFlag xmlRelaxParserSetFlag__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlRemoveID
+extern __typeof (xmlRemoveID) xmlRemoveID __attribute((alias("xmlRemoveID__internal_alias")));
+#else
+#ifndef xmlRemoveID
 extern __typeof (xmlRemoveID) xmlRemoveID__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRemoveID) xmlRemoveID __attribute((alias("xmlRemoveID__internal_alias")));
 #define xmlRemoveID xmlRemoveID__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED)
+#ifdef bottom_tree
+#undef xmlRemoveProp
+extern __typeof (xmlRemoveProp) xmlRemoveProp __attribute((alias("xmlRemoveProp__internal_alias")));
+#else
+#ifndef xmlRemoveProp
 extern __typeof (xmlRemoveProp) xmlRemoveProp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRemoveProp) xmlRemoveProp __attribute((alias("xmlRemoveProp__internal_alias")));
 #define xmlRemoveProp xmlRemoveProp__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlRemoveRef
+extern __typeof (xmlRemoveRef) xmlRemoveRef __attribute((alias("xmlRemoveRef__internal_alias")));
+#else
+#ifndef xmlRemoveRef
 extern __typeof (xmlRemoveRef) xmlRemoveRef__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlRemoveRef) xmlRemoveRef __attribute((alias("xmlRemoveRef__internal_alias")));
 #define xmlRemoveRef xmlRemoveRef__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_tree
+#undef xmlReplaceNode
+extern __typeof (xmlReplaceNode) xmlReplaceNode __attribute((alias("xmlReplaceNode__internal_alias")));
+#else
+#ifndef xmlReplaceNode
 extern __typeof (xmlReplaceNode) xmlReplaceNode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlReplaceNode) xmlReplaceNode __attribute((alias("xmlReplaceNode__internal_alias")));
 #define xmlReplaceNode xmlReplaceNode__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_error
+#undef xmlResetError
+extern __typeof (xmlResetError) xmlResetError __attribute((alias("xmlResetError__internal_alias")));
+#else
+#ifndef xmlResetError
 extern __typeof (xmlResetError) xmlResetError__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlResetError) xmlResetError __attribute((alias("xmlResetError__internal_alias")));
 #define xmlResetError xmlResetError__internal_alias
+#endif
+#endif
 
+#ifdef bottom_error
+#undef xmlResetLastError
+extern __typeof (xmlResetLastError) xmlResetLastError __attribute((alias("xmlResetLastError__internal_alias")));
+#else
+#ifndef xmlResetLastError
 extern __typeof (xmlResetLastError) xmlResetLastError__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlResetLastError) xmlResetLastError __attribute((alias("xmlResetLastError__internal_alias")));
 #define xmlResetLastError xmlResetLastError__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2AttributeDecl
+extern __typeof (xmlSAX2AttributeDecl) xmlSAX2AttributeDecl __attribute((alias("xmlSAX2AttributeDecl__internal_alias")));
+#else
+#ifndef xmlSAX2AttributeDecl
 extern __typeof (xmlSAX2AttributeDecl) xmlSAX2AttributeDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2AttributeDecl) xmlSAX2AttributeDecl __attribute((alias("xmlSAX2AttributeDecl__internal_alias")));
 #define xmlSAX2AttributeDecl xmlSAX2AttributeDecl__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2CDataBlock
+extern __typeof (xmlSAX2CDataBlock) xmlSAX2CDataBlock __attribute((alias("xmlSAX2CDataBlock__internal_alias")));
+#else
+#ifndef xmlSAX2CDataBlock
 extern __typeof (xmlSAX2CDataBlock) xmlSAX2CDataBlock__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2CDataBlock) xmlSAX2CDataBlock __attribute((alias("xmlSAX2CDataBlock__internal_alias")));
 #define xmlSAX2CDataBlock xmlSAX2CDataBlock__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2Characters
+extern __typeof (xmlSAX2Characters) xmlSAX2Characters __attribute((alias("xmlSAX2Characters__internal_alias")));
+#else
+#ifndef xmlSAX2Characters
 extern __typeof (xmlSAX2Characters) xmlSAX2Characters__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2Characters) xmlSAX2Characters __attribute((alias("xmlSAX2Characters__internal_alias")));
 #define xmlSAX2Characters xmlSAX2Characters__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2Comment
+extern __typeof (xmlSAX2Comment) xmlSAX2Comment __attribute((alias("xmlSAX2Comment__internal_alias")));
+#else
+#ifndef xmlSAX2Comment
 extern __typeof (xmlSAX2Comment) xmlSAX2Comment__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2Comment) xmlSAX2Comment __attribute((alias("xmlSAX2Comment__internal_alias")));
 #define xmlSAX2Comment xmlSAX2Comment__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2ElementDecl
+extern __typeof (xmlSAX2ElementDecl) xmlSAX2ElementDecl __attribute((alias("xmlSAX2ElementDecl__internal_alias")));
+#else
+#ifndef xmlSAX2ElementDecl
 extern __typeof (xmlSAX2ElementDecl) xmlSAX2ElementDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2ElementDecl) xmlSAX2ElementDecl __attribute((alias("xmlSAX2ElementDecl__internal_alias")));
 #define xmlSAX2ElementDecl xmlSAX2ElementDecl__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2EndDocument
+extern __typeof (xmlSAX2EndDocument) xmlSAX2EndDocument __attribute((alias("xmlSAX2EndDocument__internal_alias")));
+#else
+#ifndef xmlSAX2EndDocument
 extern __typeof (xmlSAX2EndDocument) xmlSAX2EndDocument__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2EndDocument) xmlSAX2EndDocument __attribute((alias("xmlSAX2EndDocument__internal_alias")));
 #define xmlSAX2EndDocument xmlSAX2EndDocument__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_SAX2
+#undef xmlSAX2EndElement
+extern __typeof (xmlSAX2EndElement) xmlSAX2EndElement __attribute((alias("xmlSAX2EndElement__internal_alias")));
+#else
+#ifndef xmlSAX2EndElement
 extern __typeof (xmlSAX2EndElement) xmlSAX2EndElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2EndElement) xmlSAX2EndElement __attribute((alias("xmlSAX2EndElement__internal_alias")));
 #define xmlSAX2EndElement xmlSAX2EndElement__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2EndElementNs
+extern __typeof (xmlSAX2EndElementNs) xmlSAX2EndElementNs __attribute((alias("xmlSAX2EndElementNs__internal_alias")));
+#else
+#ifndef xmlSAX2EndElementNs
 extern __typeof (xmlSAX2EndElementNs) xmlSAX2EndElementNs__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2EndElementNs) xmlSAX2EndElementNs __attribute((alias("xmlSAX2EndElementNs__internal_alias")));
 #define xmlSAX2EndElementNs xmlSAX2EndElementNs__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2EntityDecl
+extern __typeof (xmlSAX2EntityDecl) xmlSAX2EntityDecl __attribute((alias("xmlSAX2EntityDecl__internal_alias")));
+#else
+#ifndef xmlSAX2EntityDecl
 extern __typeof (xmlSAX2EntityDecl) xmlSAX2EntityDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2EntityDecl) xmlSAX2EntityDecl __attribute((alias("xmlSAX2EntityDecl__internal_alias")));
 #define xmlSAX2EntityDecl xmlSAX2EntityDecl__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2ExternalSubset
+extern __typeof (xmlSAX2ExternalSubset) xmlSAX2ExternalSubset __attribute((alias("xmlSAX2ExternalSubset__internal_alias")));
+#else
+#ifndef xmlSAX2ExternalSubset
 extern __typeof (xmlSAX2ExternalSubset) xmlSAX2ExternalSubset__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2ExternalSubset) xmlSAX2ExternalSubset __attribute((alias("xmlSAX2ExternalSubset__internal_alias")));
 #define xmlSAX2ExternalSubset xmlSAX2ExternalSubset__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2GetColumnNumber
+extern __typeof (xmlSAX2GetColumnNumber) xmlSAX2GetColumnNumber __attribute((alias("xmlSAX2GetColumnNumber__internal_alias")));
+#else
+#ifndef xmlSAX2GetColumnNumber
 extern __typeof (xmlSAX2GetColumnNumber) xmlSAX2GetColumnNumber__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2GetColumnNumber) xmlSAX2GetColumnNumber __attribute((alias("xmlSAX2GetColumnNumber__internal_alias")));
 #define xmlSAX2GetColumnNumber xmlSAX2GetColumnNumber__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2GetEntity
+extern __typeof (xmlSAX2GetEntity) xmlSAX2GetEntity __attribute((alias("xmlSAX2GetEntity__internal_alias")));
+#else
+#ifndef xmlSAX2GetEntity
 extern __typeof (xmlSAX2GetEntity) xmlSAX2GetEntity__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2GetEntity) xmlSAX2GetEntity __attribute((alias("xmlSAX2GetEntity__internal_alias")));
 #define xmlSAX2GetEntity xmlSAX2GetEntity__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2GetLineNumber
+extern __typeof (xmlSAX2GetLineNumber) xmlSAX2GetLineNumber __attribute((alias("xmlSAX2GetLineNumber__internal_alias")));
+#else
+#ifndef xmlSAX2GetLineNumber
 extern __typeof (xmlSAX2GetLineNumber) xmlSAX2GetLineNumber__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2GetLineNumber) xmlSAX2GetLineNumber __attribute((alias("xmlSAX2GetLineNumber__internal_alias")));
 #define xmlSAX2GetLineNumber xmlSAX2GetLineNumber__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2GetParameterEntity
+extern __typeof (xmlSAX2GetParameterEntity) xmlSAX2GetParameterEntity __attribute((alias("xmlSAX2GetParameterEntity__internal_alias")));
+#else
+#ifndef xmlSAX2GetParameterEntity
 extern __typeof (xmlSAX2GetParameterEntity) xmlSAX2GetParameterEntity__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2GetParameterEntity) xmlSAX2GetParameterEntity __attribute((alias("xmlSAX2GetParameterEntity__internal_alias")));
 #define xmlSAX2GetParameterEntity xmlSAX2GetParameterEntity__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2GetPublicId
+extern __typeof (xmlSAX2GetPublicId) xmlSAX2GetPublicId __attribute((alias("xmlSAX2GetPublicId__internal_alias")));
+#else
+#ifndef xmlSAX2GetPublicId
 extern __typeof (xmlSAX2GetPublicId) xmlSAX2GetPublicId__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2GetPublicId) xmlSAX2GetPublicId __attribute((alias("xmlSAX2GetPublicId__internal_alias")));
 #define xmlSAX2GetPublicId xmlSAX2GetPublicId__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2GetSystemId
+extern __typeof (xmlSAX2GetSystemId) xmlSAX2GetSystemId __attribute((alias("xmlSAX2GetSystemId__internal_alias")));
+#else
+#ifndef xmlSAX2GetSystemId
 extern __typeof (xmlSAX2GetSystemId) xmlSAX2GetSystemId__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2GetSystemId) xmlSAX2GetSystemId __attribute((alias("xmlSAX2GetSystemId__internal_alias")));
 #define xmlSAX2GetSystemId xmlSAX2GetSystemId__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2HasExternalSubset
+extern __typeof (xmlSAX2HasExternalSubset) xmlSAX2HasExternalSubset __attribute((alias("xmlSAX2HasExternalSubset__internal_alias")));
+#else
+#ifndef xmlSAX2HasExternalSubset
 extern __typeof (xmlSAX2HasExternalSubset) xmlSAX2HasExternalSubset__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2HasExternalSubset) xmlSAX2HasExternalSubset __attribute((alias("xmlSAX2HasExternalSubset__internal_alias")));
 #define xmlSAX2HasExternalSubset xmlSAX2HasExternalSubset__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2HasInternalSubset
+extern __typeof (xmlSAX2HasInternalSubset) xmlSAX2HasInternalSubset __attribute((alias("xmlSAX2HasInternalSubset__internal_alias")));
+#else
+#ifndef xmlSAX2HasInternalSubset
 extern __typeof (xmlSAX2HasInternalSubset) xmlSAX2HasInternalSubset__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2HasInternalSubset) xmlSAX2HasInternalSubset __attribute((alias("xmlSAX2HasInternalSubset__internal_alias")));
 #define xmlSAX2HasInternalSubset xmlSAX2HasInternalSubset__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2IgnorableWhitespace
+extern __typeof (xmlSAX2IgnorableWhitespace) xmlSAX2IgnorableWhitespace __attribute((alias("xmlSAX2IgnorableWhitespace__internal_alias")));
+#else
+#ifndef xmlSAX2IgnorableWhitespace
 extern __typeof (xmlSAX2IgnorableWhitespace) xmlSAX2IgnorableWhitespace__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2IgnorableWhitespace) xmlSAX2IgnorableWhitespace __attribute((alias("xmlSAX2IgnorableWhitespace__internal_alias")));
 #define xmlSAX2IgnorableWhitespace xmlSAX2IgnorableWhitespace__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2InitDefaultSAXHandler
+extern __typeof (xmlSAX2InitDefaultSAXHandler) xmlSAX2InitDefaultSAXHandler __attribute((alias("xmlSAX2InitDefaultSAXHandler__internal_alias")));
+#else
+#ifndef xmlSAX2InitDefaultSAXHandler
 extern __typeof (xmlSAX2InitDefaultSAXHandler) xmlSAX2InitDefaultSAXHandler__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2InitDefaultSAXHandler) xmlSAX2InitDefaultSAXHandler __attribute((alias("xmlSAX2InitDefaultSAXHandler__internal_alias")));
 #define xmlSAX2InitDefaultSAXHandler xmlSAX2InitDefaultSAXHandler__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_DOCB_ENABLED)
+#ifdef bottom_SAX2
+#undef xmlSAX2InitDocbDefaultSAXHandler
+extern __typeof (xmlSAX2InitDocbDefaultSAXHandler) xmlSAX2InitDocbDefaultSAXHandler __attribute((alias("xmlSAX2InitDocbDefaultSAXHandler__internal_alias")));
+#else
+#ifndef xmlSAX2InitDocbDefaultSAXHandler
 extern __typeof (xmlSAX2InitDocbDefaultSAXHandler) xmlSAX2InitDocbDefaultSAXHandler__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2InitDocbDefaultSAXHandler) xmlSAX2InitDocbDefaultSAXHandler __attribute((alias("xmlSAX2InitDocbDefaultSAXHandler__internal_alias")));
 #define xmlSAX2InitDocbDefaultSAXHandler xmlSAX2InitDocbDefaultSAXHandler__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_SAX2
+#undef xmlSAX2InitHtmlDefaultSAXHandler
+extern __typeof (xmlSAX2InitHtmlDefaultSAXHandler) xmlSAX2InitHtmlDefaultSAXHandler __attribute((alias("xmlSAX2InitHtmlDefaultSAXHandler__internal_alias")));
+#else
+#ifndef xmlSAX2InitHtmlDefaultSAXHandler
 extern __typeof (xmlSAX2InitHtmlDefaultSAXHandler) xmlSAX2InitHtmlDefaultSAXHandler__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2InitHtmlDefaultSAXHandler) xmlSAX2InitHtmlDefaultSAXHandler __attribute((alias("xmlSAX2InitHtmlDefaultSAXHandler__internal_alias")));
 #define xmlSAX2InitHtmlDefaultSAXHandler xmlSAX2InitHtmlDefaultSAXHandler__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2InternalSubset
+extern __typeof (xmlSAX2InternalSubset) xmlSAX2InternalSubset __attribute((alias("xmlSAX2InternalSubset__internal_alias")));
+#else
+#ifndef xmlSAX2InternalSubset
 extern __typeof (xmlSAX2InternalSubset) xmlSAX2InternalSubset__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2InternalSubset) xmlSAX2InternalSubset __attribute((alias("xmlSAX2InternalSubset__internal_alias")));
 #define xmlSAX2InternalSubset xmlSAX2InternalSubset__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2IsStandalone
+extern __typeof (xmlSAX2IsStandalone) xmlSAX2IsStandalone __attribute((alias("xmlSAX2IsStandalone__internal_alias")));
+#else
+#ifndef xmlSAX2IsStandalone
 extern __typeof (xmlSAX2IsStandalone) xmlSAX2IsStandalone__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2IsStandalone) xmlSAX2IsStandalone __attribute((alias("xmlSAX2IsStandalone__internal_alias")));
 #define xmlSAX2IsStandalone xmlSAX2IsStandalone__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2NotationDecl
+extern __typeof (xmlSAX2NotationDecl) xmlSAX2NotationDecl __attribute((alias("xmlSAX2NotationDecl__internal_alias")));
+#else
+#ifndef xmlSAX2NotationDecl
 extern __typeof (xmlSAX2NotationDecl) xmlSAX2NotationDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2NotationDecl) xmlSAX2NotationDecl __attribute((alias("xmlSAX2NotationDecl__internal_alias")));
 #define xmlSAX2NotationDecl xmlSAX2NotationDecl__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2ProcessingInstruction
+extern __typeof (xmlSAX2ProcessingInstruction) xmlSAX2ProcessingInstruction __attribute((alias("xmlSAX2ProcessingInstruction__internal_alias")));
+#else
+#ifndef xmlSAX2ProcessingInstruction
 extern __typeof (xmlSAX2ProcessingInstruction) xmlSAX2ProcessingInstruction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2ProcessingInstruction) xmlSAX2ProcessingInstruction __attribute((alias("xmlSAX2ProcessingInstruction__internal_alias")));
 #define xmlSAX2ProcessingInstruction xmlSAX2ProcessingInstruction__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2Reference
+extern __typeof (xmlSAX2Reference) xmlSAX2Reference __attribute((alias("xmlSAX2Reference__internal_alias")));
+#else
+#ifndef xmlSAX2Reference
 extern __typeof (xmlSAX2Reference) xmlSAX2Reference__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2Reference) xmlSAX2Reference __attribute((alias("xmlSAX2Reference__internal_alias")));
 #define xmlSAX2Reference xmlSAX2Reference__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2ResolveEntity
+extern __typeof (xmlSAX2ResolveEntity) xmlSAX2ResolveEntity __attribute((alias("xmlSAX2ResolveEntity__internal_alias")));
+#else
+#ifndef xmlSAX2ResolveEntity
 extern __typeof (xmlSAX2ResolveEntity) xmlSAX2ResolveEntity__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2ResolveEntity) xmlSAX2ResolveEntity __attribute((alias("xmlSAX2ResolveEntity__internal_alias")));
 #define xmlSAX2ResolveEntity xmlSAX2ResolveEntity__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2SetDocumentLocator
+extern __typeof (xmlSAX2SetDocumentLocator) xmlSAX2SetDocumentLocator __attribute((alias("xmlSAX2SetDocumentLocator__internal_alias")));
+#else
+#ifndef xmlSAX2SetDocumentLocator
 extern __typeof (xmlSAX2SetDocumentLocator) xmlSAX2SetDocumentLocator__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2SetDocumentLocator) xmlSAX2SetDocumentLocator __attribute((alias("xmlSAX2SetDocumentLocator__internal_alias")));
 #define xmlSAX2SetDocumentLocator xmlSAX2SetDocumentLocator__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2StartDocument
+extern __typeof (xmlSAX2StartDocument) xmlSAX2StartDocument __attribute((alias("xmlSAX2StartDocument__internal_alias")));
+#else
+#ifndef xmlSAX2StartDocument
 extern __typeof (xmlSAX2StartDocument) xmlSAX2StartDocument__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2StartDocument) xmlSAX2StartDocument __attribute((alias("xmlSAX2StartDocument__internal_alias")));
 #define xmlSAX2StartDocument xmlSAX2StartDocument__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_SAX2
+#undef xmlSAX2StartElement
+extern __typeof (xmlSAX2StartElement) xmlSAX2StartElement __attribute((alias("xmlSAX2StartElement__internal_alias")));
+#else
+#ifndef xmlSAX2StartElement
 extern __typeof (xmlSAX2StartElement) xmlSAX2StartElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2StartElement) xmlSAX2StartElement __attribute((alias("xmlSAX2StartElement__internal_alias")));
 #define xmlSAX2StartElement xmlSAX2StartElement__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2StartElementNs
+extern __typeof (xmlSAX2StartElementNs) xmlSAX2StartElementNs __attribute((alias("xmlSAX2StartElementNs__internal_alias")));
+#else
+#ifndef xmlSAX2StartElementNs
 extern __typeof (xmlSAX2StartElementNs) xmlSAX2StartElementNs__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2StartElementNs) xmlSAX2StartElementNs __attribute((alias("xmlSAX2StartElementNs__internal_alias")));
 #define xmlSAX2StartElementNs xmlSAX2StartElementNs__internal_alias
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAX2UnparsedEntityDecl
+extern __typeof (xmlSAX2UnparsedEntityDecl) xmlSAX2UnparsedEntityDecl __attribute((alias("xmlSAX2UnparsedEntityDecl__internal_alias")));
+#else
+#ifndef xmlSAX2UnparsedEntityDecl
 extern __typeof (xmlSAX2UnparsedEntityDecl) xmlSAX2UnparsedEntityDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAX2UnparsedEntityDecl) xmlSAX2UnparsedEntityDecl __attribute((alias("xmlSAX2UnparsedEntityDecl__internal_alias")));
 #define xmlSAX2UnparsedEntityDecl xmlSAX2UnparsedEntityDecl__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_SAX2
+#undef xmlSAXDefaultVersion
+extern __typeof (xmlSAXDefaultVersion) xmlSAXDefaultVersion __attribute((alias("xmlSAXDefaultVersion__internal_alias")));
+#else
+#ifndef xmlSAXDefaultVersion
 extern __typeof (xmlSAXDefaultVersion) xmlSAXDefaultVersion__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAXDefaultVersion) xmlSAXDefaultVersion __attribute((alias("xmlSAXDefaultVersion__internal_alias")));
 #define xmlSAXDefaultVersion xmlSAXDefaultVersion__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_parser
+#undef xmlSAXParseDTD
+extern __typeof (xmlSAXParseDTD) xmlSAXParseDTD __attribute((alias("xmlSAXParseDTD__internal_alias")));
+#else
+#ifndef xmlSAXParseDTD
 extern __typeof (xmlSAXParseDTD) xmlSAXParseDTD__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAXParseDTD) xmlSAXParseDTD __attribute((alias("xmlSAXParseDTD__internal_alias")));
 #define xmlSAXParseDTD xmlSAXParseDTD__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_parser
+#undef xmlSAXParseDoc
+extern __typeof (xmlSAXParseDoc) xmlSAXParseDoc __attribute((alias("xmlSAXParseDoc__internal_alias")));
+#else
+#ifndef xmlSAXParseDoc
 extern __typeof (xmlSAXParseDoc) xmlSAXParseDoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAXParseDoc) xmlSAXParseDoc __attribute((alias("xmlSAXParseDoc__internal_alias")));
 #define xmlSAXParseDoc xmlSAXParseDoc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_parser
+#undef xmlSAXParseEntity
+extern __typeof (xmlSAXParseEntity) xmlSAXParseEntity __attribute((alias("xmlSAXParseEntity__internal_alias")));
+#else
+#ifndef xmlSAXParseEntity
 extern __typeof (xmlSAXParseEntity) xmlSAXParseEntity__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAXParseEntity) xmlSAXParseEntity __attribute((alias("xmlSAXParseEntity__internal_alias")));
 #define xmlSAXParseEntity xmlSAXParseEntity__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_parser
+#undef xmlSAXParseFile
+extern __typeof (xmlSAXParseFile) xmlSAXParseFile __attribute((alias("xmlSAXParseFile__internal_alias")));
+#else
+#ifndef xmlSAXParseFile
 extern __typeof (xmlSAXParseFile) xmlSAXParseFile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAXParseFile) xmlSAXParseFile __attribute((alias("xmlSAXParseFile__internal_alias")));
 #define xmlSAXParseFile xmlSAXParseFile__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_parser
+#undef xmlSAXParseFileWithData
+extern __typeof (xmlSAXParseFileWithData) xmlSAXParseFileWithData __attribute((alias("xmlSAXParseFileWithData__internal_alias")));
+#else
+#ifndef xmlSAXParseFileWithData
 extern __typeof (xmlSAXParseFileWithData) xmlSAXParseFileWithData__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAXParseFileWithData) xmlSAXParseFileWithData __attribute((alias("xmlSAXParseFileWithData__internal_alias")));
 #define xmlSAXParseFileWithData xmlSAXParseFileWithData__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_parser
+#undef xmlSAXParseMemory
+extern __typeof (xmlSAXParseMemory) xmlSAXParseMemory __attribute((alias("xmlSAXParseMemory__internal_alias")));
+#else
+#ifndef xmlSAXParseMemory
 extern __typeof (xmlSAXParseMemory) xmlSAXParseMemory__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAXParseMemory) xmlSAXParseMemory __attribute((alias("xmlSAXParseMemory__internal_alias")));
 #define xmlSAXParseMemory xmlSAXParseMemory__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_parser
+#undef xmlSAXParseMemoryWithData
+extern __typeof (xmlSAXParseMemoryWithData) xmlSAXParseMemoryWithData __attribute((alias("xmlSAXParseMemoryWithData__internal_alias")));
+#else
+#ifndef xmlSAXParseMemoryWithData
 extern __typeof (xmlSAXParseMemoryWithData) xmlSAXParseMemoryWithData__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAXParseMemoryWithData) xmlSAXParseMemoryWithData __attribute((alias("xmlSAXParseMemoryWithData__internal_alias")));
 #define xmlSAXParseMemoryWithData xmlSAXParseMemoryWithData__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_parser
+#undef xmlSAXUserParseFile
+extern __typeof (xmlSAXUserParseFile) xmlSAXUserParseFile __attribute((alias("xmlSAXUserParseFile__internal_alias")));
+#else
+#ifndef xmlSAXUserParseFile
 extern __typeof (xmlSAXUserParseFile) xmlSAXUserParseFile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAXUserParseFile) xmlSAXUserParseFile __attribute((alias("xmlSAXUserParseFile__internal_alias")));
 #define xmlSAXUserParseFile xmlSAXUserParseFile__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_parser
+#undef xmlSAXUserParseMemory
+extern __typeof (xmlSAXUserParseMemory) xmlSAXUserParseMemory __attribute((alias("xmlSAXUserParseMemory__internal_alias")));
+#else
+#ifndef xmlSAXUserParseMemory
 extern __typeof (xmlSAXUserParseMemory) xmlSAXUserParseMemory__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAXUserParseMemory) xmlSAXUserParseMemory __attribute((alias("xmlSAXUserParseMemory__internal_alias")));
 #define xmlSAXUserParseMemory xmlSAXUserParseMemory__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_SAX2
+#undef xmlSAXVersion
+extern __typeof (xmlSAXVersion) xmlSAXVersion __attribute((alias("xmlSAXVersion__internal_alias")));
+#else
+#ifndef xmlSAXVersion
 extern __typeof (xmlSAXVersion) xmlSAXVersion__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSAXVersion) xmlSAXVersion __attribute((alias("xmlSAXVersion__internal_alias")));
 #define xmlSAXVersion xmlSAXVersion__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlSaveClose
+extern __typeof (xmlSaveClose) xmlSaveClose __attribute((alias("xmlSaveClose__internal_alias")));
+#else
+#ifndef xmlSaveClose
 extern __typeof (xmlSaveClose) xmlSaveClose__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSaveClose) xmlSaveClose __attribute((alias("xmlSaveClose__internal_alias")));
 #define xmlSaveClose xmlSaveClose__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlSaveDoc
+extern __typeof (xmlSaveDoc) xmlSaveDoc __attribute((alias("xmlSaveDoc__internal_alias")));
+#else
+#ifndef xmlSaveDoc
 extern __typeof (xmlSaveDoc) xmlSaveDoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSaveDoc) xmlSaveDoc __attribute((alias("xmlSaveDoc__internal_alias")));
 #define xmlSaveDoc xmlSaveDoc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlSaveFile
+extern __typeof (xmlSaveFile) xmlSaveFile __attribute((alias("xmlSaveFile__internal_alias")));
+#else
+#ifndef xmlSaveFile
 extern __typeof (xmlSaveFile) xmlSaveFile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSaveFile) xmlSaveFile __attribute((alias("xmlSaveFile__internal_alias")));
 #define xmlSaveFile xmlSaveFile__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlSaveFileEnc
+extern __typeof (xmlSaveFileEnc) xmlSaveFileEnc __attribute((alias("xmlSaveFileEnc__internal_alias")));
+#else
+#ifndef xmlSaveFileEnc
 extern __typeof (xmlSaveFileEnc) xmlSaveFileEnc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSaveFileEnc) xmlSaveFileEnc __attribute((alias("xmlSaveFileEnc__internal_alias")));
 #define xmlSaveFileEnc xmlSaveFileEnc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlSaveFileTo
+extern __typeof (xmlSaveFileTo) xmlSaveFileTo __attribute((alias("xmlSaveFileTo__internal_alias")));
+#else
+#ifndef xmlSaveFileTo
 extern __typeof (xmlSaveFileTo) xmlSaveFileTo__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSaveFileTo) xmlSaveFileTo __attribute((alias("xmlSaveFileTo__internal_alias")));
 #define xmlSaveFileTo xmlSaveFileTo__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlSaveFlush
+extern __typeof (xmlSaveFlush) xmlSaveFlush __attribute((alias("xmlSaveFlush__internal_alias")));
+#else
+#ifndef xmlSaveFlush
 extern __typeof (xmlSaveFlush) xmlSaveFlush__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSaveFlush) xmlSaveFlush __attribute((alias("xmlSaveFlush__internal_alias")));
 #define xmlSaveFlush xmlSaveFlush__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlSaveFormatFile
+extern __typeof (xmlSaveFormatFile) xmlSaveFormatFile __attribute((alias("xmlSaveFormatFile__internal_alias")));
+#else
+#ifndef xmlSaveFormatFile
 extern __typeof (xmlSaveFormatFile) xmlSaveFormatFile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSaveFormatFile) xmlSaveFormatFile __attribute((alias("xmlSaveFormatFile__internal_alias")));
 #define xmlSaveFormatFile xmlSaveFormatFile__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlSaveFormatFileEnc
+extern __typeof (xmlSaveFormatFileEnc) xmlSaveFormatFileEnc __attribute((alias("xmlSaveFormatFileEnc__internal_alias")));
+#else
+#ifndef xmlSaveFormatFileEnc
 extern __typeof (xmlSaveFormatFileEnc) xmlSaveFormatFileEnc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSaveFormatFileEnc) xmlSaveFormatFileEnc __attribute((alias("xmlSaveFormatFileEnc__internal_alias")));
 #define xmlSaveFormatFileEnc xmlSaveFormatFileEnc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlSaveFormatFileTo
+extern __typeof (xmlSaveFormatFileTo) xmlSaveFormatFileTo __attribute((alias("xmlSaveFormatFileTo__internal_alias")));
+#else
+#ifndef xmlSaveFormatFileTo
 extern __typeof (xmlSaveFormatFileTo) xmlSaveFormatFileTo__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSaveFormatFileTo) xmlSaveFormatFileTo __attribute((alias("xmlSaveFormatFileTo__internal_alias")));
 #define xmlSaveFormatFileTo xmlSaveFormatFileTo__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlSaveSetAttrEscape
+extern __typeof (xmlSaveSetAttrEscape) xmlSaveSetAttrEscape __attribute((alias("xmlSaveSetAttrEscape__internal_alias")));
+#else
+#ifndef xmlSaveSetAttrEscape
 extern __typeof (xmlSaveSetAttrEscape) xmlSaveSetAttrEscape__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSaveSetAttrEscape) xmlSaveSetAttrEscape __attribute((alias("xmlSaveSetAttrEscape__internal_alias")));
 #define xmlSaveSetAttrEscape xmlSaveSetAttrEscape__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlSaveSetEscape
+extern __typeof (xmlSaveSetEscape) xmlSaveSetEscape __attribute((alias("xmlSaveSetEscape__internal_alias")));
+#else
+#ifndef xmlSaveSetEscape
 extern __typeof (xmlSaveSetEscape) xmlSaveSetEscape__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSaveSetEscape) xmlSaveSetEscape __attribute((alias("xmlSaveSetEscape__internal_alias")));
 #define xmlSaveSetEscape xmlSaveSetEscape__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlSaveToFd
+extern __typeof (xmlSaveToFd) xmlSaveToFd __attribute((alias("xmlSaveToFd__internal_alias")));
+#else
+#ifndef xmlSaveToFd
 extern __typeof (xmlSaveToFd) xmlSaveToFd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSaveToFd) xmlSaveToFd __attribute((alias("xmlSaveToFd__internal_alias")));
 #define xmlSaveToFd xmlSaveToFd__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlSaveToFilename
+extern __typeof (xmlSaveToFilename) xmlSaveToFilename __attribute((alias("xmlSaveToFilename__internal_alias")));
+#else
+#ifndef xmlSaveToFilename
 extern __typeof (xmlSaveToFilename) xmlSaveToFilename__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSaveToFilename) xmlSaveToFilename __attribute((alias("xmlSaveToFilename__internal_alias")));
 #define xmlSaveToFilename xmlSaveToFilename__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlSaveToIO
+extern __typeof (xmlSaveToIO) xmlSaveToIO __attribute((alias("xmlSaveToIO__internal_alias")));
+#else
+#ifndef xmlSaveToIO
 extern __typeof (xmlSaveToIO) xmlSaveToIO__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSaveToIO) xmlSaveToIO __attribute((alias("xmlSaveToIO__internal_alias")));
 #define xmlSaveToIO xmlSaveToIO__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlsave
+#undef xmlSaveTree
+extern __typeof (xmlSaveTree) xmlSaveTree __attribute((alias("xmlSaveTree__internal_alias")));
+#else
+#ifndef xmlSaveTree
 extern __typeof (xmlSaveTree) xmlSaveTree__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSaveTree) xmlSaveTree __attribute((alias("xmlSaveTree__internal_alias")));
 #define xmlSaveTree xmlSaveTree__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_uri
+#undef xmlSaveUri
+extern __typeof (xmlSaveUri) xmlSaveUri __attribute((alias("xmlSaveUri__internal_alias")));
+#else
+#ifndef xmlSaveUri
 extern __typeof (xmlSaveUri) xmlSaveUri__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSaveUri) xmlSaveUri __attribute((alias("xmlSaveUri__internal_alias")));
 #define xmlSaveUri xmlSaveUri__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_LEGACY_ENABLED)
+#ifdef bottom_legacy
+#undef xmlScanName
+extern __typeof (xmlScanName) xmlScanName __attribute((alias("xmlScanName__internal_alias")));
+#else
+#ifndef xmlScanName
 extern __typeof (xmlScanName) xmlScanName__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlScanName) xmlScanName __attribute((alias("xmlScanName__internal_alias")));
 #define xmlScanName xmlScanName__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaCheckFacet
+extern __typeof (xmlSchemaCheckFacet) xmlSchemaCheckFacet __attribute((alias("xmlSchemaCheckFacet__internal_alias")));
+#else
+#ifndef xmlSchemaCheckFacet
 extern __typeof (xmlSchemaCheckFacet) xmlSchemaCheckFacet__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaCheckFacet) xmlSchemaCheckFacet __attribute((alias("xmlSchemaCheckFacet__internal_alias")));
 #define xmlSchemaCheckFacet xmlSchemaCheckFacet__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaCleanupTypes
+extern __typeof (xmlSchemaCleanupTypes) xmlSchemaCleanupTypes __attribute((alias("xmlSchemaCleanupTypes__internal_alias")));
+#else
+#ifndef xmlSchemaCleanupTypes
 extern __typeof (xmlSchemaCleanupTypes) xmlSchemaCleanupTypes__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaCleanupTypes) xmlSchemaCleanupTypes __attribute((alias("xmlSchemaCleanupTypes__internal_alias")));
 #define xmlSchemaCleanupTypes xmlSchemaCleanupTypes__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaCollapseString
+extern __typeof (xmlSchemaCollapseString) xmlSchemaCollapseString __attribute((alias("xmlSchemaCollapseString__internal_alias")));
+#else
+#ifndef xmlSchemaCollapseString
 extern __typeof (xmlSchemaCollapseString) xmlSchemaCollapseString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaCollapseString) xmlSchemaCollapseString __attribute((alias("xmlSchemaCollapseString__internal_alias")));
 #define xmlSchemaCollapseString xmlSchemaCollapseString__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaCompareValues
+extern __typeof (xmlSchemaCompareValues) xmlSchemaCompareValues __attribute((alias("xmlSchemaCompareValues__internal_alias")));
+#else
+#ifndef xmlSchemaCompareValues
 extern __typeof (xmlSchemaCompareValues) xmlSchemaCompareValues__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaCompareValues) xmlSchemaCompareValues __attribute((alias("xmlSchemaCompareValues__internal_alias")));
 #define xmlSchemaCompareValues xmlSchemaCompareValues__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaCompareValuesWhtsp
+extern __typeof (xmlSchemaCompareValuesWhtsp) xmlSchemaCompareValuesWhtsp __attribute((alias("xmlSchemaCompareValuesWhtsp__internal_alias")));
+#else
+#ifndef xmlSchemaCompareValuesWhtsp
 extern __typeof (xmlSchemaCompareValuesWhtsp) xmlSchemaCompareValuesWhtsp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaCompareValuesWhtsp) xmlSchemaCompareValuesWhtsp __attribute((alias("xmlSchemaCompareValuesWhtsp__internal_alias")));
 #define xmlSchemaCompareValuesWhtsp xmlSchemaCompareValuesWhtsp__internal_alias
 #endif
+#endif
+#endif
 
+#if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaCopyValue
+extern __typeof (xmlSchemaCopyValue) xmlSchemaCopyValue __attribute((alias("xmlSchemaCopyValue__internal_alias")));
+#else
+#ifndef xmlSchemaCopyValue
+extern __typeof (xmlSchemaCopyValue) xmlSchemaCopyValue__internal_alias __attribute((visibility("hidden")));
+#define xmlSchemaCopyValue xmlSchemaCopyValue__internal_alias
+#endif
+#endif
+#endif
+
 #if defined(LIBXML_SCHEMAS_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaDump
+extern __typeof (xmlSchemaDump) xmlSchemaDump __attribute((alias("xmlSchemaDump__internal_alias")));
+#else
+#ifndef xmlSchemaDump
 extern __typeof (xmlSchemaDump) xmlSchemaDump__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaDump) xmlSchemaDump __attribute((alias("xmlSchemaDump__internal_alias")));
 #define xmlSchemaDump xmlSchemaDump__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaFree
+extern __typeof (xmlSchemaFree) xmlSchemaFree __attribute((alias("xmlSchemaFree__internal_alias")));
+#else
+#ifndef xmlSchemaFree
 extern __typeof (xmlSchemaFree) xmlSchemaFree__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaFree) xmlSchemaFree __attribute((alias("xmlSchemaFree__internal_alias")));
 #define xmlSchemaFree xmlSchemaFree__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaFreeFacet
+extern __typeof (xmlSchemaFreeFacet) xmlSchemaFreeFacet __attribute((alias("xmlSchemaFreeFacet__internal_alias")));
+#else
+#ifndef xmlSchemaFreeFacet
 extern __typeof (xmlSchemaFreeFacet) xmlSchemaFreeFacet__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaFreeFacet) xmlSchemaFreeFacet __attribute((alias("xmlSchemaFreeFacet__internal_alias")));
 #define xmlSchemaFreeFacet xmlSchemaFreeFacet__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaFreeParserCtxt
+extern __typeof (xmlSchemaFreeParserCtxt) xmlSchemaFreeParserCtxt __attribute((alias("xmlSchemaFreeParserCtxt__internal_alias")));
+#else
+#ifndef xmlSchemaFreeParserCtxt
 extern __typeof (xmlSchemaFreeParserCtxt) xmlSchemaFreeParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaFreeParserCtxt) xmlSchemaFreeParserCtxt __attribute((alias("xmlSchemaFreeParserCtxt__internal_alias")));
 #define xmlSchemaFreeParserCtxt xmlSchemaFreeParserCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaFreeType
+extern __typeof (xmlSchemaFreeType) xmlSchemaFreeType __attribute((alias("xmlSchemaFreeType__internal_alias")));
+#else
+#ifndef xmlSchemaFreeType
 extern __typeof (xmlSchemaFreeType) xmlSchemaFreeType__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaFreeType) xmlSchemaFreeType __attribute((alias("xmlSchemaFreeType__internal_alias")));
 #define xmlSchemaFreeType xmlSchemaFreeType__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaFreeValidCtxt
+extern __typeof (xmlSchemaFreeValidCtxt) xmlSchemaFreeValidCtxt __attribute((alias("xmlSchemaFreeValidCtxt__internal_alias")));
+#else
+#ifndef xmlSchemaFreeValidCtxt
 extern __typeof (xmlSchemaFreeValidCtxt) xmlSchemaFreeValidCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaFreeValidCtxt) xmlSchemaFreeValidCtxt __attribute((alias("xmlSchemaFreeValidCtxt__internal_alias")));
 #define xmlSchemaFreeValidCtxt xmlSchemaFreeValidCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaFreeValue
+extern __typeof (xmlSchemaFreeValue) xmlSchemaFreeValue __attribute((alias("xmlSchemaFreeValue__internal_alias")));
+#else
+#ifndef xmlSchemaFreeValue
 extern __typeof (xmlSchemaFreeValue) xmlSchemaFreeValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaFreeValue) xmlSchemaFreeValue __attribute((alias("xmlSchemaFreeValue__internal_alias")));
 #define xmlSchemaFreeValue xmlSchemaFreeValue__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaFreeWildcard
+extern __typeof (xmlSchemaFreeWildcard) xmlSchemaFreeWildcard __attribute((alias("xmlSchemaFreeWildcard__internal_alias")));
+#else
+#ifndef xmlSchemaFreeWildcard
 extern __typeof (xmlSchemaFreeWildcard) xmlSchemaFreeWildcard__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaFreeWildcard) xmlSchemaFreeWildcard __attribute((alias("xmlSchemaFreeWildcard__internal_alias")));
 #define xmlSchemaFreeWildcard xmlSchemaFreeWildcard__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaGetBuiltInListSimpleTypeItemType
+extern __typeof (xmlSchemaGetBuiltInListSimpleTypeItemType) xmlSchemaGetBuiltInListSimpleTypeItemType __attribute((alias("xmlSchemaGetBuiltInListSimpleTypeItemType__internal_alias")));
+#else
+#ifndef xmlSchemaGetBuiltInListSimpleTypeItemType
 extern __typeof (xmlSchemaGetBuiltInListSimpleTypeItemType) xmlSchemaGetBuiltInListSimpleTypeItemType__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaGetBuiltInListSimpleTypeItemType) xmlSchemaGetBuiltInListSimpleTypeItemType __attribute((alias("xmlSchemaGetBuiltInListSimpleTypeItemType__internal_alias")));
 #define xmlSchemaGetBuiltInListSimpleTypeItemType xmlSchemaGetBuiltInListSimpleTypeItemType__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaGetBuiltInType
+extern __typeof (xmlSchemaGetBuiltInType) xmlSchemaGetBuiltInType __attribute((alias("xmlSchemaGetBuiltInType__internal_alias")));
+#else
+#ifndef xmlSchemaGetBuiltInType
 extern __typeof (xmlSchemaGetBuiltInType) xmlSchemaGetBuiltInType__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaGetBuiltInType) xmlSchemaGetBuiltInType __attribute((alias("xmlSchemaGetBuiltInType__internal_alias")));
 #define xmlSchemaGetBuiltInType xmlSchemaGetBuiltInType__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaGetCanonValue
+extern __typeof (xmlSchemaGetCanonValue) xmlSchemaGetCanonValue __attribute((alias("xmlSchemaGetCanonValue__internal_alias")));
+#else
+#ifndef xmlSchemaGetCanonValue
 extern __typeof (xmlSchemaGetCanonValue) xmlSchemaGetCanonValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaGetCanonValue) xmlSchemaGetCanonValue __attribute((alias("xmlSchemaGetCanonValue__internal_alias")));
 #define xmlSchemaGetCanonValue xmlSchemaGetCanonValue__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaGetFacetValueAsULong
+extern __typeof (xmlSchemaGetFacetValueAsULong) xmlSchemaGetFacetValueAsULong __attribute((alias("xmlSchemaGetFacetValueAsULong__internal_alias")));
+#else
+#ifndef xmlSchemaGetFacetValueAsULong
 extern __typeof (xmlSchemaGetFacetValueAsULong) xmlSchemaGetFacetValueAsULong__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaGetFacetValueAsULong) xmlSchemaGetFacetValueAsULong __attribute((alias("xmlSchemaGetFacetValueAsULong__internal_alias")));
 #define xmlSchemaGetFacetValueAsULong xmlSchemaGetFacetValueAsULong__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaGetParserErrors
+extern __typeof (xmlSchemaGetParserErrors) xmlSchemaGetParserErrors __attribute((alias("xmlSchemaGetParserErrors__internal_alias")));
+#else
+#ifndef xmlSchemaGetParserErrors
 extern __typeof (xmlSchemaGetParserErrors) xmlSchemaGetParserErrors__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaGetParserErrors) xmlSchemaGetParserErrors __attribute((alias("xmlSchemaGetParserErrors__internal_alias")));
 #define xmlSchemaGetParserErrors xmlSchemaGetParserErrors__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaGetPredefinedType
+extern __typeof (xmlSchemaGetPredefinedType) xmlSchemaGetPredefinedType __attribute((alias("xmlSchemaGetPredefinedType__internal_alias")));
+#else
+#ifndef xmlSchemaGetPredefinedType
 extern __typeof (xmlSchemaGetPredefinedType) xmlSchemaGetPredefinedType__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaGetPredefinedType) xmlSchemaGetPredefinedType __attribute((alias("xmlSchemaGetPredefinedType__internal_alias")));
 #define xmlSchemaGetPredefinedType xmlSchemaGetPredefinedType__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaGetValType
+extern __typeof (xmlSchemaGetValType) xmlSchemaGetValType __attribute((alias("xmlSchemaGetValType__internal_alias")));
+#else
+#ifndef xmlSchemaGetValType
+extern __typeof (xmlSchemaGetValType) xmlSchemaGetValType__internal_alias __attribute((visibility("hidden")));
+#define xmlSchemaGetValType xmlSchemaGetValType__internal_alias
+#endif
+#endif
+#endif
+
+#if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaGetValidErrors
+extern __typeof (xmlSchemaGetValidErrors) xmlSchemaGetValidErrors __attribute((alias("xmlSchemaGetValidErrors__internal_alias")));
+#else
+#ifndef xmlSchemaGetValidErrors
 extern __typeof (xmlSchemaGetValidErrors) xmlSchemaGetValidErrors__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaGetValidErrors) xmlSchemaGetValidErrors __attribute((alias("xmlSchemaGetValidErrors__internal_alias")));
 #define xmlSchemaGetValidErrors xmlSchemaGetValidErrors__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaInitTypes
+extern __typeof (xmlSchemaInitTypes) xmlSchemaInitTypes __attribute((alias("xmlSchemaInitTypes__internal_alias")));
+#else
+#ifndef xmlSchemaInitTypes
 extern __typeof (xmlSchemaInitTypes) xmlSchemaInitTypes__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaInitTypes) xmlSchemaInitTypes __attribute((alias("xmlSchemaInitTypes__internal_alias")));
 #define xmlSchemaInitTypes xmlSchemaInitTypes__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaIsBuiltInTypeFacet
+extern __typeof (xmlSchemaIsBuiltInTypeFacet) xmlSchemaIsBuiltInTypeFacet __attribute((alias("xmlSchemaIsBuiltInTypeFacet__internal_alias")));
+#else
+#ifndef xmlSchemaIsBuiltInTypeFacet
 extern __typeof (xmlSchemaIsBuiltInTypeFacet) xmlSchemaIsBuiltInTypeFacet__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaIsBuiltInTypeFacet) xmlSchemaIsBuiltInTypeFacet __attribute((alias("xmlSchemaIsBuiltInTypeFacet__internal_alias")));
 #define xmlSchemaIsBuiltInTypeFacet xmlSchemaIsBuiltInTypeFacet__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaNewDocParserCtxt
+extern __typeof (xmlSchemaNewDocParserCtxt) xmlSchemaNewDocParserCtxt __attribute((alias("xmlSchemaNewDocParserCtxt__internal_alias")));
+#else
+#ifndef xmlSchemaNewDocParserCtxt
 extern __typeof (xmlSchemaNewDocParserCtxt) xmlSchemaNewDocParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaNewDocParserCtxt) xmlSchemaNewDocParserCtxt __attribute((alias("xmlSchemaNewDocParserCtxt__internal_alias")));
 #define xmlSchemaNewDocParserCtxt xmlSchemaNewDocParserCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaNewFacet
+extern __typeof (xmlSchemaNewFacet) xmlSchemaNewFacet __attribute((alias("xmlSchemaNewFacet__internal_alias")));
+#else
+#ifndef xmlSchemaNewFacet
 extern __typeof (xmlSchemaNewFacet) xmlSchemaNewFacet__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaNewFacet) xmlSchemaNewFacet __attribute((alias("xmlSchemaNewFacet__internal_alias")));
 #define xmlSchemaNewFacet xmlSchemaNewFacet__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaNewMemParserCtxt
+extern __typeof (xmlSchemaNewMemParserCtxt) xmlSchemaNewMemParserCtxt __attribute((alias("xmlSchemaNewMemParserCtxt__internal_alias")));
+#else
+#ifndef xmlSchemaNewMemParserCtxt
 extern __typeof (xmlSchemaNewMemParserCtxt) xmlSchemaNewMemParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaNewMemParserCtxt) xmlSchemaNewMemParserCtxt __attribute((alias("xmlSchemaNewMemParserCtxt__internal_alias")));
 #define xmlSchemaNewMemParserCtxt xmlSchemaNewMemParserCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaNewNOTATIONValue
+extern __typeof (xmlSchemaNewNOTATIONValue) xmlSchemaNewNOTATIONValue __attribute((alias("xmlSchemaNewNOTATIONValue__internal_alias")));
+#else
+#ifndef xmlSchemaNewNOTATIONValue
 extern __typeof (xmlSchemaNewNOTATIONValue) xmlSchemaNewNOTATIONValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaNewNOTATIONValue) xmlSchemaNewNOTATIONValue __attribute((alias("xmlSchemaNewNOTATIONValue__internal_alias")));
 #define xmlSchemaNewNOTATIONValue xmlSchemaNewNOTATIONValue__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaNewParserCtxt
+extern __typeof (xmlSchemaNewParserCtxt) xmlSchemaNewParserCtxt __attribute((alias("xmlSchemaNewParserCtxt__internal_alias")));
+#else
+#ifndef xmlSchemaNewParserCtxt
 extern __typeof (xmlSchemaNewParserCtxt) xmlSchemaNewParserCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaNewParserCtxt) xmlSchemaNewParserCtxt __attribute((alias("xmlSchemaNewParserCtxt__internal_alias")));
 #define xmlSchemaNewParserCtxt xmlSchemaNewParserCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaNewStringValue
+extern __typeof (xmlSchemaNewStringValue) xmlSchemaNewStringValue __attribute((alias("xmlSchemaNewStringValue__internal_alias")));
+#else
+#ifndef xmlSchemaNewStringValue
 extern __typeof (xmlSchemaNewStringValue) xmlSchemaNewStringValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaNewStringValue) xmlSchemaNewStringValue __attribute((alias("xmlSchemaNewStringValue__internal_alias")));
 #define xmlSchemaNewStringValue xmlSchemaNewStringValue__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaNewValidCtxt
+extern __typeof (xmlSchemaNewValidCtxt) xmlSchemaNewValidCtxt __attribute((alias("xmlSchemaNewValidCtxt__internal_alias")));
+#else
+#ifndef xmlSchemaNewValidCtxt
 extern __typeof (xmlSchemaNewValidCtxt) xmlSchemaNewValidCtxt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaNewValidCtxt) xmlSchemaNewValidCtxt __attribute((alias("xmlSchemaNewValidCtxt__internal_alias")));
 #define xmlSchemaNewValidCtxt xmlSchemaNewValidCtxt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaParse
+extern __typeof (xmlSchemaParse) xmlSchemaParse __attribute((alias("xmlSchemaParse__internal_alias")));
+#else
+#ifndef xmlSchemaParse
 extern __typeof (xmlSchemaParse) xmlSchemaParse__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaParse) xmlSchemaParse __attribute((alias("xmlSchemaParse__internal_alias")));
 #define xmlSchemaParse xmlSchemaParse__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaSetParserErrors
+extern __typeof (xmlSchemaSetParserErrors) xmlSchemaSetParserErrors __attribute((alias("xmlSchemaSetParserErrors__internal_alias")));
+#else
+#ifndef xmlSchemaSetParserErrors
 extern __typeof (xmlSchemaSetParserErrors) xmlSchemaSetParserErrors__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaSetParserErrors) xmlSchemaSetParserErrors __attribute((alias("xmlSchemaSetParserErrors__internal_alias")));
 #define xmlSchemaSetParserErrors xmlSchemaSetParserErrors__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaSetValidErrors
+extern __typeof (xmlSchemaSetValidErrors) xmlSchemaSetValidErrors __attribute((alias("xmlSchemaSetValidErrors__internal_alias")));
+#else
+#ifndef xmlSchemaSetValidErrors
 extern __typeof (xmlSchemaSetValidErrors) xmlSchemaSetValidErrors__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaSetValidErrors) xmlSchemaSetValidErrors __attribute((alias("xmlSchemaSetValidErrors__internal_alias")));
 #define xmlSchemaSetValidErrors xmlSchemaSetValidErrors__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaSetValidOptions
+extern __typeof (xmlSchemaSetValidOptions) xmlSchemaSetValidOptions __attribute((alias("xmlSchemaSetValidOptions__internal_alias")));
+#else
+#ifndef xmlSchemaSetValidOptions
 extern __typeof (xmlSchemaSetValidOptions) xmlSchemaSetValidOptions__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaSetValidOptions) xmlSchemaSetValidOptions __attribute((alias("xmlSchemaSetValidOptions__internal_alias")));
 #define xmlSchemaSetValidOptions xmlSchemaSetValidOptions__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaValPredefTypeNode
+extern __typeof (xmlSchemaValPredefTypeNode) xmlSchemaValPredefTypeNode __attribute((alias("xmlSchemaValPredefTypeNode__internal_alias")));
+#else
+#ifndef xmlSchemaValPredefTypeNode
 extern __typeof (xmlSchemaValPredefTypeNode) xmlSchemaValPredefTypeNode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaValPredefTypeNode) xmlSchemaValPredefTypeNode __attribute((alias("xmlSchemaValPredefTypeNode__internal_alias")));
 #define xmlSchemaValPredefTypeNode xmlSchemaValPredefTypeNode__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaValPredefTypeNodeNoNorm
+extern __typeof (xmlSchemaValPredefTypeNodeNoNorm) xmlSchemaValPredefTypeNodeNoNorm __attribute((alias("xmlSchemaValPredefTypeNodeNoNorm__internal_alias")));
+#else
+#ifndef xmlSchemaValPredefTypeNodeNoNorm
 extern __typeof (xmlSchemaValPredefTypeNodeNoNorm) xmlSchemaValPredefTypeNodeNoNorm__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaValPredefTypeNodeNoNorm) xmlSchemaValPredefTypeNodeNoNorm __attribute((alias("xmlSchemaValPredefTypeNodeNoNorm__internal_alias")));
 #define xmlSchemaValPredefTypeNodeNoNorm xmlSchemaValPredefTypeNodeNoNorm__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaValidCtxtGetOptions
+extern __typeof (xmlSchemaValidCtxtGetOptions) xmlSchemaValidCtxtGetOptions __attribute((alias("xmlSchemaValidCtxtGetOptions__internal_alias")));
+#else
+#ifndef xmlSchemaValidCtxtGetOptions
 extern __typeof (xmlSchemaValidCtxtGetOptions) xmlSchemaValidCtxtGetOptions__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaValidCtxtGetOptions) xmlSchemaValidCtxtGetOptions __attribute((alias("xmlSchemaValidCtxtGetOptions__internal_alias")));
 #define xmlSchemaValidCtxtGetOptions xmlSchemaValidCtxtGetOptions__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaValidateDoc
+extern __typeof (xmlSchemaValidateDoc) xmlSchemaValidateDoc __attribute((alias("xmlSchemaValidateDoc__internal_alias")));
+#else
+#ifndef xmlSchemaValidateDoc
 extern __typeof (xmlSchemaValidateDoc) xmlSchemaValidateDoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaValidateDoc) xmlSchemaValidateDoc __attribute((alias("xmlSchemaValidateDoc__internal_alias")));
 #define xmlSchemaValidateDoc xmlSchemaValidateDoc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaValidateFacet
+extern __typeof (xmlSchemaValidateFacet) xmlSchemaValidateFacet __attribute((alias("xmlSchemaValidateFacet__internal_alias")));
+#else
+#ifndef xmlSchemaValidateFacet
 extern __typeof (xmlSchemaValidateFacet) xmlSchemaValidateFacet__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaValidateFacet) xmlSchemaValidateFacet __attribute((alias("xmlSchemaValidateFacet__internal_alias")));
 #define xmlSchemaValidateFacet xmlSchemaValidateFacet__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaValidateFacetWhtsp
+extern __typeof (xmlSchemaValidateFacetWhtsp) xmlSchemaValidateFacetWhtsp __attribute((alias("xmlSchemaValidateFacetWhtsp__internal_alias")));
+#else
+#ifndef xmlSchemaValidateFacetWhtsp
+extern __typeof (xmlSchemaValidateFacetWhtsp) xmlSchemaValidateFacetWhtsp__internal_alias __attribute((visibility("hidden")));
+#define xmlSchemaValidateFacetWhtsp xmlSchemaValidateFacetWhtsp__internal_alias
+#endif
+#endif
+#endif
+
+#if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaValidateLengthFacet
+extern __typeof (xmlSchemaValidateLengthFacet) xmlSchemaValidateLengthFacet __attribute((alias("xmlSchemaValidateLengthFacet__internal_alias")));
+#else
+#ifndef xmlSchemaValidateLengthFacet
 extern __typeof (xmlSchemaValidateLengthFacet) xmlSchemaValidateLengthFacet__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaValidateLengthFacet) xmlSchemaValidateLengthFacet __attribute((alias("xmlSchemaValidateLengthFacet__internal_alias")));
 #define xmlSchemaValidateLengthFacet xmlSchemaValidateLengthFacet__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaValidateLengthFacetWhtsp
+extern __typeof (xmlSchemaValidateLengthFacetWhtsp) xmlSchemaValidateLengthFacetWhtsp __attribute((alias("xmlSchemaValidateLengthFacetWhtsp__internal_alias")));
+#else
+#ifndef xmlSchemaValidateLengthFacetWhtsp
+extern __typeof (xmlSchemaValidateLengthFacetWhtsp) xmlSchemaValidateLengthFacetWhtsp__internal_alias __attribute((visibility("hidden")));
+#define xmlSchemaValidateLengthFacetWhtsp xmlSchemaValidateLengthFacetWhtsp__internal_alias
+#endif
+#endif
+#endif
+
+#if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaValidateListSimpleTypeFacet
+extern __typeof (xmlSchemaValidateListSimpleTypeFacet) xmlSchemaValidateListSimpleTypeFacet __attribute((alias("xmlSchemaValidateListSimpleTypeFacet__internal_alias")));
+#else
+#ifndef xmlSchemaValidateListSimpleTypeFacet
 extern __typeof (xmlSchemaValidateListSimpleTypeFacet) xmlSchemaValidateListSimpleTypeFacet__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaValidateListSimpleTypeFacet) xmlSchemaValidateListSimpleTypeFacet __attribute((alias("xmlSchemaValidateListSimpleTypeFacet__internal_alias")));
 #define xmlSchemaValidateListSimpleTypeFacet xmlSchemaValidateListSimpleTypeFacet__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaValidateOneElement
+extern __typeof (xmlSchemaValidateOneElement) xmlSchemaValidateOneElement __attribute((alias("xmlSchemaValidateOneElement__internal_alias")));
+#else
+#ifndef xmlSchemaValidateOneElement
 extern __typeof (xmlSchemaValidateOneElement) xmlSchemaValidateOneElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaValidateOneElement) xmlSchemaValidateOneElement __attribute((alias("xmlSchemaValidateOneElement__internal_alias")));
 #define xmlSchemaValidateOneElement xmlSchemaValidateOneElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaValidatePredefinedType
+extern __typeof (xmlSchemaValidatePredefinedType) xmlSchemaValidatePredefinedType __attribute((alias("xmlSchemaValidatePredefinedType__internal_alias")));
+#else
+#ifndef xmlSchemaValidatePredefinedType
 extern __typeof (xmlSchemaValidatePredefinedType) xmlSchemaValidatePredefinedType__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaValidatePredefinedType) xmlSchemaValidatePredefinedType __attribute((alias("xmlSchemaValidatePredefinedType__internal_alias")));
 #define xmlSchemaValidatePredefinedType xmlSchemaValidatePredefinedType__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemas
+#undef xmlSchemaValidateStream
+extern __typeof (xmlSchemaValidateStream) xmlSchemaValidateStream __attribute((alias("xmlSchemaValidateStream__internal_alias")));
+#else
+#ifndef xmlSchemaValidateStream
 extern __typeof (xmlSchemaValidateStream) xmlSchemaValidateStream__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaValidateStream) xmlSchemaValidateStream __attribute((alias("xmlSchemaValidateStream__internal_alias")));
 #define xmlSchemaValidateStream xmlSchemaValidateStream__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlschemastypes
+#undef xmlSchemaWhiteSpaceReplace
+extern __typeof (xmlSchemaWhiteSpaceReplace) xmlSchemaWhiteSpaceReplace __attribute((alias("xmlSchemaWhiteSpaceReplace__internal_alias")));
+#else
+#ifndef xmlSchemaWhiteSpaceReplace
 extern __typeof (xmlSchemaWhiteSpaceReplace) xmlSchemaWhiteSpaceReplace__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSchemaWhiteSpaceReplace) xmlSchemaWhiteSpaceReplace __attribute((alias("xmlSchemaWhiteSpaceReplace__internal_alias")));
 #define xmlSchemaWhiteSpaceReplace xmlSchemaWhiteSpaceReplace__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlSearchNs
+extern __typeof (xmlSearchNs) xmlSearchNs __attribute((alias("xmlSearchNs__internal_alias")));
+#else
+#ifndef xmlSearchNs
 extern __typeof (xmlSearchNs) xmlSearchNs__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSearchNs) xmlSearchNs __attribute((alias("xmlSearchNs__internal_alias")));
 #define xmlSearchNs xmlSearchNs__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlSearchNsByHref
+extern __typeof (xmlSearchNsByHref) xmlSearchNsByHref __attribute((alias("xmlSearchNsByHref__internal_alias")));
+#else
+#ifndef xmlSearchNsByHref
 extern __typeof (xmlSearchNsByHref) xmlSearchNsByHref__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSearchNsByHref) xmlSearchNsByHref __attribute((alias("xmlSearchNsByHref__internal_alias")));
 #define xmlSearchNsByHref xmlSearchNsByHref__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlSetBufferAllocationScheme
+extern __typeof (xmlSetBufferAllocationScheme) xmlSetBufferAllocationScheme __attribute((alias("xmlSetBufferAllocationScheme__internal_alias")));
+#else
+#ifndef xmlSetBufferAllocationScheme
 extern __typeof (xmlSetBufferAllocationScheme) xmlSetBufferAllocationScheme__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSetBufferAllocationScheme) xmlSetBufferAllocationScheme __attribute((alias("xmlSetBufferAllocationScheme__internal_alias")));
 #define xmlSetBufferAllocationScheme xmlSetBufferAllocationScheme__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlSetCompressMode
+extern __typeof (xmlSetCompressMode) xmlSetCompressMode __attribute((alias("xmlSetCompressMode__internal_alias")));
+#else
+#ifndef xmlSetCompressMode
 extern __typeof (xmlSetCompressMode) xmlSetCompressMode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSetCompressMode) xmlSetCompressMode __attribute((alias("xmlSetCompressMode__internal_alias")));
 #define xmlSetCompressMode xmlSetCompressMode__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlSetDocCompressMode
+extern __typeof (xmlSetDocCompressMode) xmlSetDocCompressMode __attribute((alias("xmlSetDocCompressMode__internal_alias")));
+#else
+#ifndef xmlSetDocCompressMode
 extern __typeof (xmlSetDocCompressMode) xmlSetDocCompressMode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSetDocCompressMode) xmlSetDocCompressMode __attribute((alias("xmlSetDocCompressMode__internal_alias")));
 #define xmlSetDocCompressMode xmlSetDocCompressMode__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_LEGACY_ENABLED)
+#ifdef bottom_parser
+#undef xmlSetEntityReferenceFunc
+extern __typeof (xmlSetEntityReferenceFunc) xmlSetEntityReferenceFunc __attribute((alias("xmlSetEntityReferenceFunc__internal_alias")));
+#else
+#ifndef xmlSetEntityReferenceFunc
 extern __typeof (xmlSetEntityReferenceFunc) xmlSetEntityReferenceFunc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSetEntityReferenceFunc) xmlSetEntityReferenceFunc __attribute((alias("xmlSetEntityReferenceFunc__internal_alias")));
 #define xmlSetEntityReferenceFunc xmlSetEntityReferenceFunc__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_xmlIO
+#undef xmlSetExternalEntityLoader
+extern __typeof (xmlSetExternalEntityLoader) xmlSetExternalEntityLoader __attribute((alias("xmlSetExternalEntityLoader__internal_alias")));
+#else
+#ifndef xmlSetExternalEntityLoader
 extern __typeof (xmlSetExternalEntityLoader) xmlSetExternalEntityLoader__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSetExternalEntityLoader) xmlSetExternalEntityLoader __attribute((alias("xmlSetExternalEntityLoader__internal_alias")));
 #define xmlSetExternalEntityLoader xmlSetExternalEntityLoader__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_LEGACY_ENABLED)
+#ifdef bottom_legacy
+#undef xmlSetFeature
+extern __typeof (xmlSetFeature) xmlSetFeature __attribute((alias("xmlSetFeature__internal_alias")));
+#else
+#ifndef xmlSetFeature
 extern __typeof (xmlSetFeature) xmlSetFeature__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSetFeature) xmlSetFeature __attribute((alias("xmlSetFeature__internal_alias")));
 #define xmlSetFeature xmlSetFeature__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_error
+#undef xmlSetGenericErrorFunc
+extern __typeof (xmlSetGenericErrorFunc) xmlSetGenericErrorFunc __attribute((alias("xmlSetGenericErrorFunc__internal_alias")));
+#else
+#ifndef xmlSetGenericErrorFunc
 extern __typeof (xmlSetGenericErrorFunc) xmlSetGenericErrorFunc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSetGenericErrorFunc) xmlSetGenericErrorFunc __attribute((alias("xmlSetGenericErrorFunc__internal_alias")));
 #define xmlSetGenericErrorFunc xmlSetGenericErrorFunc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlSetListDoc
+extern __typeof (xmlSetListDoc) xmlSetListDoc __attribute((alias("xmlSetListDoc__internal_alias")));
+#else
+#ifndef xmlSetListDoc
 extern __typeof (xmlSetListDoc) xmlSetListDoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSetListDoc) xmlSetListDoc __attribute((alias("xmlSetListDoc__internal_alias")));
 #define xmlSetListDoc xmlSetListDoc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlSetNs
+extern __typeof (xmlSetNs) xmlSetNs __attribute((alias("xmlSetNs__internal_alias")));
+#else
+#ifndef xmlSetNs
 extern __typeof (xmlSetNs) xmlSetNs__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSetNs) xmlSetNs __attribute((alias("xmlSetNs__internal_alias")));
 #define xmlSetNs xmlSetNs__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_tree
+#undef xmlSetNsProp
+extern __typeof (xmlSetNsProp) xmlSetNsProp __attribute((alias("xmlSetNsProp__internal_alias")));
+#else
+#ifndef xmlSetNsProp
 extern __typeof (xmlSetNsProp) xmlSetNsProp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSetNsProp) xmlSetNsProp __attribute((alias("xmlSetNsProp__internal_alias")));
 #define xmlSetNsProp xmlSetNsProp__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED)
+#ifdef bottom_tree
+#undef xmlSetProp
+extern __typeof (xmlSetProp) xmlSetProp __attribute((alias("xmlSetProp__internal_alias")));
+#else
+#ifndef xmlSetProp
 extern __typeof (xmlSetProp) xmlSetProp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSetProp) xmlSetProp __attribute((alias("xmlSetProp__internal_alias")));
 #define xmlSetProp xmlSetProp__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_error
+#undef xmlSetStructuredErrorFunc
+extern __typeof (xmlSetStructuredErrorFunc) xmlSetStructuredErrorFunc __attribute((alias("xmlSetStructuredErrorFunc__internal_alias")));
+#else
+#ifndef xmlSetStructuredErrorFunc
 extern __typeof (xmlSetStructuredErrorFunc) xmlSetStructuredErrorFunc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSetStructuredErrorFunc) xmlSetStructuredErrorFunc __attribute((alias("xmlSetStructuredErrorFunc__internal_alias")));
 #define xmlSetStructuredErrorFunc xmlSetStructuredErrorFunc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlSetTreeDoc
+extern __typeof (xmlSetTreeDoc) xmlSetTreeDoc __attribute((alias("xmlSetTreeDoc__internal_alias")));
+#else
+#ifndef xmlSetTreeDoc
 extern __typeof (xmlSetTreeDoc) xmlSetTreeDoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSetTreeDoc) xmlSetTreeDoc __attribute((alias("xmlSetTreeDoc__internal_alias")));
 #define xmlSetTreeDoc xmlSetTreeDoc__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_SAX1_ENABLED)
+#ifdef bottom_parser
+#undef xmlSetupParserForBuffer
+extern __typeof (xmlSetupParserForBuffer) xmlSetupParserForBuffer __attribute((alias("xmlSetupParserForBuffer__internal_alias")));
+#else
+#ifndef xmlSetupParserForBuffer
 extern __typeof (xmlSetupParserForBuffer) xmlSetupParserForBuffer__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSetupParserForBuffer) xmlSetupParserForBuffer __attribute((alias("xmlSetupParserForBuffer__internal_alias")));
 #define xmlSetupParserForBuffer xmlSetupParserForBuffer__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlShell
+extern __typeof (xmlShell) xmlShell __attribute((alias("xmlShell__internal_alias")));
+#else
+#ifndef xmlShell
 extern __typeof (xmlShell) xmlShell__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlShell) xmlShell __attribute((alias("xmlShell__internal_alias")));
 #define xmlShell xmlShell__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlShellBase
+extern __typeof (xmlShellBase) xmlShellBase __attribute((alias("xmlShellBase__internal_alias")));
+#else
+#ifndef xmlShellBase
 extern __typeof (xmlShellBase) xmlShellBase__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlShellBase) xmlShellBase __attribute((alias("xmlShellBase__internal_alias")));
 #define xmlShellBase xmlShellBase__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlShellCat
+extern __typeof (xmlShellCat) xmlShellCat __attribute((alias("xmlShellCat__internal_alias")));
+#else
+#ifndef xmlShellCat
 extern __typeof (xmlShellCat) xmlShellCat__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlShellCat) xmlShellCat __attribute((alias("xmlShellCat__internal_alias")));
 #define xmlShellCat xmlShellCat__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlShellDir
+extern __typeof (xmlShellDir) xmlShellDir __attribute((alias("xmlShellDir__internal_alias")));
+#else
+#ifndef xmlShellDir
 extern __typeof (xmlShellDir) xmlShellDir__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlShellDir) xmlShellDir __attribute((alias("xmlShellDir__internal_alias")));
 #define xmlShellDir xmlShellDir__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlShellDu
+extern __typeof (xmlShellDu) xmlShellDu __attribute((alias("xmlShellDu__internal_alias")));
+#else
+#ifndef xmlShellDu
 extern __typeof (xmlShellDu) xmlShellDu__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlShellDu) xmlShellDu __attribute((alias("xmlShellDu__internal_alias")));
 #define xmlShellDu xmlShellDu__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlShellList
+extern __typeof (xmlShellList) xmlShellList __attribute((alias("xmlShellList__internal_alias")));
+#else
+#ifndef xmlShellList
 extern __typeof (xmlShellList) xmlShellList__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlShellList) xmlShellList __attribute((alias("xmlShellList__internal_alias")));
 #define xmlShellList xmlShellList__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlShellLoad
+extern __typeof (xmlShellLoad) xmlShellLoad __attribute((alias("xmlShellLoad__internal_alias")));
+#else
+#ifndef xmlShellLoad
 extern __typeof (xmlShellLoad) xmlShellLoad__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlShellLoad) xmlShellLoad __attribute((alias("xmlShellLoad__internal_alias")));
 #define xmlShellLoad xmlShellLoad__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlShellPrintNode
+extern __typeof (xmlShellPrintNode) xmlShellPrintNode __attribute((alias("xmlShellPrintNode__internal_alias")));
+#else
+#ifndef xmlShellPrintNode
 extern __typeof (xmlShellPrintNode) xmlShellPrintNode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlShellPrintNode) xmlShellPrintNode __attribute((alias("xmlShellPrintNode__internal_alias")));
 #define xmlShellPrintNode xmlShellPrintNode__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlShellPrintXPathError
+extern __typeof (xmlShellPrintXPathError) xmlShellPrintXPathError __attribute((alias("xmlShellPrintXPathError__internal_alias")));
+#else
+#ifndef xmlShellPrintXPathError
 extern __typeof (xmlShellPrintXPathError) xmlShellPrintXPathError__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlShellPrintXPathError) xmlShellPrintXPathError __attribute((alias("xmlShellPrintXPathError__internal_alias")));
 #define xmlShellPrintXPathError xmlShellPrintXPathError__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlShellPrintXPathResult
+extern __typeof (xmlShellPrintXPathResult) xmlShellPrintXPathResult __attribute((alias("xmlShellPrintXPathResult__internal_alias")));
+#else
+#ifndef xmlShellPrintXPathResult
 extern __typeof (xmlShellPrintXPathResult) xmlShellPrintXPathResult__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlShellPrintXPathResult) xmlShellPrintXPathResult __attribute((alias("xmlShellPrintXPathResult__internal_alias")));
 #define xmlShellPrintXPathResult xmlShellPrintXPathResult__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlShellPwd
+extern __typeof (xmlShellPwd) xmlShellPwd __attribute((alias("xmlShellPwd__internal_alias")));
+#else
+#ifndef xmlShellPwd
 extern __typeof (xmlShellPwd) xmlShellPwd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlShellPwd) xmlShellPwd __attribute((alias("xmlShellPwd__internal_alias")));
 #define xmlShellPwd xmlShellPwd__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlShellSave
+extern __typeof (xmlShellSave) xmlShellSave __attribute((alias("xmlShellSave__internal_alias")));
+#else
+#ifndef xmlShellSave
 extern __typeof (xmlShellSave) xmlShellSave__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlShellSave) xmlShellSave __attribute((alias("xmlShellSave__internal_alias")));
 #define xmlShellSave xmlShellSave__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlShellValidate
+extern __typeof (xmlShellValidate) xmlShellValidate __attribute((alias("xmlShellValidate__internal_alias")));
+#else
+#ifndef xmlShellValidate
 extern __typeof (xmlShellValidate) xmlShellValidate__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlShellValidate) xmlShellValidate __attribute((alias("xmlShellValidate__internal_alias")));
 #define xmlShellValidate xmlShellValidate__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_DEBUG_ENABLED) && defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_debugXML
+#undef xmlShellWrite
+extern __typeof (xmlShellWrite) xmlShellWrite __attribute((alias("xmlShellWrite__internal_alias")));
+#else
+#ifndef xmlShellWrite
 extern __typeof (xmlShellWrite) xmlShellWrite__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlShellWrite) xmlShellWrite __attribute((alias("xmlShellWrite__internal_alias")));
 #define xmlShellWrite xmlShellWrite__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlSkipBlankChars
+extern __typeof (xmlSkipBlankChars) xmlSkipBlankChars __attribute((alias("xmlSkipBlankChars__internal_alias")));
+#else
+#ifndef xmlSkipBlankChars
 extern __typeof (xmlSkipBlankChars) xmlSkipBlankChars__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSkipBlankChars) xmlSkipBlankChars __attribute((alias("xmlSkipBlankChars__internal_alias")));
 #define xmlSkipBlankChars xmlSkipBlankChars__internal_alias
+#endif
+#endif
 
+#ifdef bottom_valid
+#undef xmlSnprintfElementContent
+extern __typeof (xmlSnprintfElementContent) xmlSnprintfElementContent __attribute((alias("xmlSnprintfElementContent__internal_alias")));
+#else
+#ifndef xmlSnprintfElementContent
 extern __typeof (xmlSnprintfElementContent) xmlSnprintfElementContent__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSnprintfElementContent) xmlSnprintfElementContent __attribute((alias("xmlSnprintfElementContent__internal_alias")));
 #define xmlSnprintfElementContent xmlSnprintfElementContent__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlSplitQName
+extern __typeof (xmlSplitQName) xmlSplitQName __attribute((alias("xmlSplitQName__internal_alias")));
+#else
+#ifndef xmlSplitQName
 extern __typeof (xmlSplitQName) xmlSplitQName__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSplitQName) xmlSplitQName __attribute((alias("xmlSplitQName__internal_alias")));
 #define xmlSplitQName xmlSplitQName__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlSplitQName2
+extern __typeof (xmlSplitQName2) xmlSplitQName2 __attribute((alias("xmlSplitQName2__internal_alias")));
+#else
+#ifndef xmlSplitQName2
 extern __typeof (xmlSplitQName2) xmlSplitQName2__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSplitQName2) xmlSplitQName2 __attribute((alias("xmlSplitQName2__internal_alias")));
 #define xmlSplitQName2 xmlSplitQName2__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlSplitQName3
+extern __typeof (xmlSplitQName3) xmlSplitQName3 __attribute((alias("xmlSplitQName3__internal_alias")));
+#else
+#ifndef xmlSplitQName3
 extern __typeof (xmlSplitQName3) xmlSplitQName3__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSplitQName3) xmlSplitQName3 __attribute((alias("xmlSplitQName3__internal_alias")));
 #define xmlSplitQName3 xmlSplitQName3__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_OUTPUT_ENABLED)
+#ifdef bottom_valid
+#undef xmlSprintfElementContent
+extern __typeof (xmlSprintfElementContent) xmlSprintfElementContent __attribute((alias("xmlSprintfElementContent__internal_alias")));
+#else
+#ifndef xmlSprintfElementContent
 extern __typeof (xmlSprintfElementContent) xmlSprintfElementContent__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSprintfElementContent) xmlSprintfElementContent __attribute((alias("xmlSprintfElementContent__internal_alias")));
 #define xmlSprintfElementContent xmlSprintfElementContent__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_PUSH_ENABLED)
+#ifdef bottom_parser
+#undef xmlStopParser
+extern __typeof (xmlStopParser) xmlStopParser __attribute((alias("xmlStopParser__internal_alias")));
+#else
+#ifndef xmlStopParser
 extern __typeof (xmlStopParser) xmlStopParser__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStopParser) xmlStopParser __attribute((alias("xmlStopParser__internal_alias")));
 #define xmlStopParser xmlStopParser__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlStrEqual
+extern __typeof (xmlStrEqual) xmlStrEqual __attribute((alias("xmlStrEqual__internal_alias")));
+#else
+#ifndef xmlStrEqual
 extern __typeof (xmlStrEqual) xmlStrEqual__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStrEqual) xmlStrEqual __attribute((alias("xmlStrEqual__internal_alias")));
 #define xmlStrEqual xmlStrEqual__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlStrPrintf
+extern __typeof (xmlStrPrintf) xmlStrPrintf __attribute((alias("xmlStrPrintf__internal_alias")));
+#else
+#ifndef xmlStrPrintf
 extern __typeof (xmlStrPrintf) xmlStrPrintf__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStrPrintf) xmlStrPrintf __attribute((alias("xmlStrPrintf__internal_alias")));
 #define xmlStrPrintf xmlStrPrintf__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlStrQEqual
+extern __typeof (xmlStrQEqual) xmlStrQEqual __attribute((alias("xmlStrQEqual__internal_alias")));
+#else
+#ifndef xmlStrQEqual
 extern __typeof (xmlStrQEqual) xmlStrQEqual__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStrQEqual) xmlStrQEqual __attribute((alias("xmlStrQEqual__internal_alias")));
 #define xmlStrQEqual xmlStrQEqual__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlStrVPrintf
+extern __typeof (xmlStrVPrintf) xmlStrVPrintf __attribute((alias("xmlStrVPrintf__internal_alias")));
+#else
+#ifndef xmlStrVPrintf
 extern __typeof (xmlStrVPrintf) xmlStrVPrintf__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStrVPrintf) xmlStrVPrintf __attribute((alias("xmlStrVPrintf__internal_alias")));
 #define xmlStrVPrintf xmlStrVPrintf__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlStrcasecmp
+extern __typeof (xmlStrcasecmp) xmlStrcasecmp __attribute((alias("xmlStrcasecmp__internal_alias")));
+#else
+#ifndef xmlStrcasecmp
 extern __typeof (xmlStrcasecmp) xmlStrcasecmp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStrcasecmp) xmlStrcasecmp __attribute((alias("xmlStrcasecmp__internal_alias")));
 #define xmlStrcasecmp xmlStrcasecmp__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlStrcasestr
+extern __typeof (xmlStrcasestr) xmlStrcasestr __attribute((alias("xmlStrcasestr__internal_alias")));
+#else
+#ifndef xmlStrcasestr
 extern __typeof (xmlStrcasestr) xmlStrcasestr__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStrcasestr) xmlStrcasestr __attribute((alias("xmlStrcasestr__internal_alias")));
 #define xmlStrcasestr xmlStrcasestr__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlStrcat
+extern __typeof (xmlStrcat) xmlStrcat __attribute((alias("xmlStrcat__internal_alias")));
+#else
+#ifndef xmlStrcat
 extern __typeof (xmlStrcat) xmlStrcat__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStrcat) xmlStrcat __attribute((alias("xmlStrcat__internal_alias")));
 #define xmlStrcat xmlStrcat__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlStrchr
+extern __typeof (xmlStrchr) xmlStrchr __attribute((alias("xmlStrchr__internal_alias")));
+#else
+#ifndef xmlStrchr
 extern __typeof (xmlStrchr) xmlStrchr__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStrchr) xmlStrchr __attribute((alias("xmlStrchr__internal_alias")));
 #define xmlStrchr xmlStrchr__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlStrcmp
+extern __typeof (xmlStrcmp) xmlStrcmp __attribute((alias("xmlStrcmp__internal_alias")));
+#else
+#ifndef xmlStrcmp
 extern __typeof (xmlStrcmp) xmlStrcmp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStrcmp) xmlStrcmp __attribute((alias("xmlStrcmp__internal_alias")));
 #define xmlStrcmp xmlStrcmp__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlStrdup
+extern __typeof (xmlStrdup) xmlStrdup __attribute((alias("xmlStrdup__internal_alias")));
+#else
+#ifndef xmlStrdup
 extern __typeof (xmlStrdup) xmlStrdup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStrdup) xmlStrdup __attribute((alias("xmlStrdup__internal_alias")));
 #define xmlStrdup xmlStrdup__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_PATTERN_ENABLED)
+#ifdef bottom_pattern
+#undef xmlStreamPop
+extern __typeof (xmlStreamPop) xmlStreamPop __attribute((alias("xmlStreamPop__internal_alias")));
+#else
+#ifndef xmlStreamPop
 extern __typeof (xmlStreamPop) xmlStreamPop__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStreamPop) xmlStreamPop __attribute((alias("xmlStreamPop__internal_alias")));
 #define xmlStreamPop xmlStreamPop__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_PATTERN_ENABLED)
+#ifdef bottom_pattern
+#undef xmlStreamPush
+extern __typeof (xmlStreamPush) xmlStreamPush __attribute((alias("xmlStreamPush__internal_alias")));
+#else
+#ifndef xmlStreamPush
 extern __typeof (xmlStreamPush) xmlStreamPush__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStreamPush) xmlStreamPush __attribute((alias("xmlStreamPush__internal_alias")));
 #define xmlStreamPush xmlStreamPush__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_PATTERN_ENABLED)
+#ifdef bottom_pattern
+#undef xmlStreamPushAttr
+extern __typeof (xmlStreamPushAttr) xmlStreamPushAttr __attribute((alias("xmlStreamPushAttr__internal_alias")));
+#else
+#ifndef xmlStreamPushAttr
 extern __typeof (xmlStreamPushAttr) xmlStreamPushAttr__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStreamPushAttr) xmlStreamPushAttr __attribute((alias("xmlStreamPushAttr__internal_alias")));
 #define xmlStreamPushAttr xmlStreamPushAttr__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlStringCurrentChar
+extern __typeof (xmlStringCurrentChar) xmlStringCurrentChar __attribute((alias("xmlStringCurrentChar__internal_alias")));
+#else
+#ifndef xmlStringCurrentChar
 extern __typeof (xmlStringCurrentChar) xmlStringCurrentChar__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStringCurrentChar) xmlStringCurrentChar __attribute((alias("xmlStringCurrentChar__internal_alias")));
 #define xmlStringCurrentChar xmlStringCurrentChar__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlStringDecodeEntities
+extern __typeof (xmlStringDecodeEntities) xmlStringDecodeEntities __attribute((alias("xmlStringDecodeEntities__internal_alias")));
+#else
+#ifndef xmlStringDecodeEntities
 extern __typeof (xmlStringDecodeEntities) xmlStringDecodeEntities__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStringDecodeEntities) xmlStringDecodeEntities __attribute((alias("xmlStringDecodeEntities__internal_alias")));
 #define xmlStringDecodeEntities xmlStringDecodeEntities__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlStringGetNodeList
+extern __typeof (xmlStringGetNodeList) xmlStringGetNodeList __attribute((alias("xmlStringGetNodeList__internal_alias")));
+#else
+#ifndef xmlStringGetNodeList
 extern __typeof (xmlStringGetNodeList) xmlStringGetNodeList__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStringGetNodeList) xmlStringGetNodeList __attribute((alias("xmlStringGetNodeList__internal_alias")));
 #define xmlStringGetNodeList xmlStringGetNodeList__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parser
+#undef xmlStringLenDecodeEntities
+extern __typeof (xmlStringLenDecodeEntities) xmlStringLenDecodeEntities __attribute((alias("xmlStringLenDecodeEntities__internal_alias")));
+#else
+#ifndef xmlStringLenDecodeEntities
 extern __typeof (xmlStringLenDecodeEntities) xmlStringLenDecodeEntities__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStringLenDecodeEntities) xmlStringLenDecodeEntities __attribute((alias("xmlStringLenDecodeEntities__internal_alias")));
 #define xmlStringLenDecodeEntities xmlStringLenDecodeEntities__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlStringLenGetNodeList
+extern __typeof (xmlStringLenGetNodeList) xmlStringLenGetNodeList __attribute((alias("xmlStringLenGetNodeList__internal_alias")));
+#else
+#ifndef xmlStringLenGetNodeList
 extern __typeof (xmlStringLenGetNodeList) xmlStringLenGetNodeList__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStringLenGetNodeList) xmlStringLenGetNodeList __attribute((alias("xmlStringLenGetNodeList__internal_alias")));
 #define xmlStringLenGetNodeList xmlStringLenGetNodeList__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlStrlen
+extern __typeof (xmlStrlen) xmlStrlen __attribute((alias("xmlStrlen__internal_alias")));
+#else
+#ifndef xmlStrlen
 extern __typeof (xmlStrlen) xmlStrlen__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStrlen) xmlStrlen __attribute((alias("xmlStrlen__internal_alias")));
 #define xmlStrlen xmlStrlen__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlStrncasecmp
+extern __typeof (xmlStrncasecmp) xmlStrncasecmp __attribute((alias("xmlStrncasecmp__internal_alias")));
+#else
+#ifndef xmlStrncasecmp
 extern __typeof (xmlStrncasecmp) xmlStrncasecmp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStrncasecmp) xmlStrncasecmp __attribute((alias("xmlStrncasecmp__internal_alias")));
 #define xmlStrncasecmp xmlStrncasecmp__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlStrncat
+extern __typeof (xmlStrncat) xmlStrncat __attribute((alias("xmlStrncat__internal_alias")));
+#else
+#ifndef xmlStrncat
 extern __typeof (xmlStrncat) xmlStrncat__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStrncat) xmlStrncat __attribute((alias("xmlStrncat__internal_alias")));
 #define xmlStrncat xmlStrncat__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlStrncatNew
+extern __typeof (xmlStrncatNew) xmlStrncatNew __attribute((alias("xmlStrncatNew__internal_alias")));
+#else
+#ifndef xmlStrncatNew
 extern __typeof (xmlStrncatNew) xmlStrncatNew__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStrncatNew) xmlStrncatNew __attribute((alias("xmlStrncatNew__internal_alias")));
 #define xmlStrncatNew xmlStrncatNew__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlStrncmp
+extern __typeof (xmlStrncmp) xmlStrncmp __attribute((alias("xmlStrncmp__internal_alias")));
+#else
+#ifndef xmlStrncmp
 extern __typeof (xmlStrncmp) xmlStrncmp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStrncmp) xmlStrncmp __attribute((alias("xmlStrncmp__internal_alias")));
 #define xmlStrncmp xmlStrncmp__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlStrndup
+extern __typeof (xmlStrndup) xmlStrndup __attribute((alias("xmlStrndup__internal_alias")));
+#else
+#ifndef xmlStrndup
 extern __typeof (xmlStrndup) xmlStrndup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStrndup) xmlStrndup __attribute((alias("xmlStrndup__internal_alias")));
 #define xmlStrndup xmlStrndup__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlStrstr
+extern __typeof (xmlStrstr) xmlStrstr __attribute((alias("xmlStrstr__internal_alias")));
+#else
+#ifndef xmlStrstr
 extern __typeof (xmlStrstr) xmlStrstr__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStrstr) xmlStrstr __attribute((alias("xmlStrstr__internal_alias")));
 #define xmlStrstr xmlStrstr__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlStrsub
+extern __typeof (xmlStrsub) xmlStrsub __attribute((alias("xmlStrsub__internal_alias")));
+#else
+#ifndef xmlStrsub
 extern __typeof (xmlStrsub) xmlStrsub__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlStrsub) xmlStrsub __attribute((alias("xmlStrsub__internal_alias")));
 #define xmlStrsub xmlStrsub__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlSubstituteEntitiesDefault
+extern __typeof (xmlSubstituteEntitiesDefault) xmlSubstituteEntitiesDefault __attribute((alias("xmlSubstituteEntitiesDefault__internal_alias")));
+#else
+#ifndef xmlSubstituteEntitiesDefault
 extern __typeof (xmlSubstituteEntitiesDefault) xmlSubstituteEntitiesDefault__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSubstituteEntitiesDefault) xmlSubstituteEntitiesDefault __attribute((alias("xmlSubstituteEntitiesDefault__internal_alias")));
 #define xmlSubstituteEntitiesDefault xmlSubstituteEntitiesDefault__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlSwitchEncoding
+extern __typeof (xmlSwitchEncoding) xmlSwitchEncoding __attribute((alias("xmlSwitchEncoding__internal_alias")));
+#else
+#ifndef xmlSwitchEncoding
 extern __typeof (xmlSwitchEncoding) xmlSwitchEncoding__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSwitchEncoding) xmlSwitchEncoding __attribute((alias("xmlSwitchEncoding__internal_alias")));
 #define xmlSwitchEncoding xmlSwitchEncoding__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlSwitchInputEncoding
+extern __typeof (xmlSwitchInputEncoding) xmlSwitchInputEncoding __attribute((alias("xmlSwitchInputEncoding__internal_alias")));
+#else
+#ifndef xmlSwitchInputEncoding
 extern __typeof (xmlSwitchInputEncoding) xmlSwitchInputEncoding__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSwitchInputEncoding) xmlSwitchInputEncoding __attribute((alias("xmlSwitchInputEncoding__internal_alias")));
 #define xmlSwitchInputEncoding xmlSwitchInputEncoding__internal_alias
+#endif
+#endif
 
+#ifdef bottom_parserInternals
+#undef xmlSwitchToEncoding
+extern __typeof (xmlSwitchToEncoding) xmlSwitchToEncoding __attribute((alias("xmlSwitchToEncoding__internal_alias")));
+#else
+#ifndef xmlSwitchToEncoding
 extern __typeof (xmlSwitchToEncoding) xmlSwitchToEncoding__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlSwitchToEncoding) xmlSwitchToEncoding __attribute((alias("xmlSwitchToEncoding__internal_alias")));
 #define xmlSwitchToEncoding xmlSwitchToEncoding__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlTextConcat
+extern __typeof (xmlTextConcat) xmlTextConcat __attribute((alias("xmlTextConcat__internal_alias")));
+#else
+#ifndef xmlTextConcat
 extern __typeof (xmlTextConcat) xmlTextConcat__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextConcat) xmlTextConcat __attribute((alias("xmlTextConcat__internal_alias")));
 #define xmlTextConcat xmlTextConcat__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlTextMerge
+extern __typeof (xmlTextMerge) xmlTextMerge __attribute((alias("xmlTextMerge__internal_alias")));
+#else
+#ifndef xmlTextMerge
 extern __typeof (xmlTextMerge) xmlTextMerge__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextMerge) xmlTextMerge __attribute((alias("xmlTextMerge__internal_alias")));
 #define xmlTextMerge xmlTextMerge__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderAttributeCount
+extern __typeof (xmlTextReaderAttributeCount) xmlTextReaderAttributeCount __attribute((alias("xmlTextReaderAttributeCount__internal_alias")));
+#else
+#ifndef xmlTextReaderAttributeCount
 extern __typeof (xmlTextReaderAttributeCount) xmlTextReaderAttributeCount__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderAttributeCount) xmlTextReaderAttributeCount __attribute((alias("xmlTextReaderAttributeCount__internal_alias")));
 #define xmlTextReaderAttributeCount xmlTextReaderAttributeCount__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderBaseUri
+extern __typeof (xmlTextReaderBaseUri) xmlTextReaderBaseUri __attribute((alias("xmlTextReaderBaseUri__internal_alias")));
+#else
+#ifndef xmlTextReaderBaseUri
 extern __typeof (xmlTextReaderBaseUri) xmlTextReaderBaseUri__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderBaseUri) xmlTextReaderBaseUri __attribute((alias("xmlTextReaderBaseUri__internal_alias")));
 #define xmlTextReaderBaseUri xmlTextReaderBaseUri__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderByteConsumed
+extern __typeof (xmlTextReaderByteConsumed) xmlTextReaderByteConsumed __attribute((alias("xmlTextReaderByteConsumed__internal_alias")));
+#else
+#ifndef xmlTextReaderByteConsumed
 extern __typeof (xmlTextReaderByteConsumed) xmlTextReaderByteConsumed__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderByteConsumed) xmlTextReaderByteConsumed __attribute((alias("xmlTextReaderByteConsumed__internal_alias")));
 #define xmlTextReaderByteConsumed xmlTextReaderByteConsumed__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderClose
+extern __typeof (xmlTextReaderClose) xmlTextReaderClose __attribute((alias("xmlTextReaderClose__internal_alias")));
+#else
+#ifndef xmlTextReaderClose
 extern __typeof (xmlTextReaderClose) xmlTextReaderClose__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderClose) xmlTextReaderClose __attribute((alias("xmlTextReaderClose__internal_alias")));
 #define xmlTextReaderClose xmlTextReaderClose__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderConstBaseUri
+extern __typeof (xmlTextReaderConstBaseUri) xmlTextReaderConstBaseUri __attribute((alias("xmlTextReaderConstBaseUri__internal_alias")));
+#else
+#ifndef xmlTextReaderConstBaseUri
 extern __typeof (xmlTextReaderConstBaseUri) xmlTextReaderConstBaseUri__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderConstBaseUri) xmlTextReaderConstBaseUri __attribute((alias("xmlTextReaderConstBaseUri__internal_alias")));
 #define xmlTextReaderConstBaseUri xmlTextReaderConstBaseUri__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderConstEncoding
+extern __typeof (xmlTextReaderConstEncoding) xmlTextReaderConstEncoding __attribute((alias("xmlTextReaderConstEncoding__internal_alias")));
+#else
+#ifndef xmlTextReaderConstEncoding
 extern __typeof (xmlTextReaderConstEncoding) xmlTextReaderConstEncoding__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderConstEncoding) xmlTextReaderConstEncoding __attribute((alias("xmlTextReaderConstEncoding__internal_alias")));
 #define xmlTextReaderConstEncoding xmlTextReaderConstEncoding__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderConstLocalName
+extern __typeof (xmlTextReaderConstLocalName) xmlTextReaderConstLocalName __attribute((alias("xmlTextReaderConstLocalName__internal_alias")));
+#else
+#ifndef xmlTextReaderConstLocalName
 extern __typeof (xmlTextReaderConstLocalName) xmlTextReaderConstLocalName__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderConstLocalName) xmlTextReaderConstLocalName __attribute((alias("xmlTextReaderConstLocalName__internal_alias")));
 #define xmlTextReaderConstLocalName xmlTextReaderConstLocalName__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderConstName
+extern __typeof (xmlTextReaderConstName) xmlTextReaderConstName __attribute((alias("xmlTextReaderConstName__internal_alias")));
+#else
+#ifndef xmlTextReaderConstName
 extern __typeof (xmlTextReaderConstName) xmlTextReaderConstName__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderConstName) xmlTextReaderConstName __attribute((alias("xmlTextReaderConstName__internal_alias")));
 #define xmlTextReaderConstName xmlTextReaderConstName__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderConstNamespaceUri
+extern __typeof (xmlTextReaderConstNamespaceUri) xmlTextReaderConstNamespaceUri __attribute((alias("xmlTextReaderConstNamespaceUri__internal_alias")));
+#else
+#ifndef xmlTextReaderConstNamespaceUri
 extern __typeof (xmlTextReaderConstNamespaceUri) xmlTextReaderConstNamespaceUri__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderConstNamespaceUri) xmlTextReaderConstNamespaceUri __attribute((alias("xmlTextReaderConstNamespaceUri__internal_alias")));
 #define xmlTextReaderConstNamespaceUri xmlTextReaderConstNamespaceUri__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderConstPrefix
+extern __typeof (xmlTextReaderConstPrefix) xmlTextReaderConstPrefix __attribute((alias("xmlTextReaderConstPrefix__internal_alias")));
+#else
+#ifndef xmlTextReaderConstPrefix
 extern __typeof (xmlTextReaderConstPrefix) xmlTextReaderConstPrefix__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderConstPrefix) xmlTextReaderConstPrefix __attribute((alias("xmlTextReaderConstPrefix__internal_alias")));
 #define xmlTextReaderConstPrefix xmlTextReaderConstPrefix__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderConstString
+extern __typeof (xmlTextReaderConstString) xmlTextReaderConstString __attribute((alias("xmlTextReaderConstString__internal_alias")));
+#else
+#ifndef xmlTextReaderConstString
 extern __typeof (xmlTextReaderConstString) xmlTextReaderConstString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderConstString) xmlTextReaderConstString __attribute((alias("xmlTextReaderConstString__internal_alias")));
 #define xmlTextReaderConstString xmlTextReaderConstString__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderConstValue
+extern __typeof (xmlTextReaderConstValue) xmlTextReaderConstValue __attribute((alias("xmlTextReaderConstValue__internal_alias")));
+#else
+#ifndef xmlTextReaderConstValue
 extern __typeof (xmlTextReaderConstValue) xmlTextReaderConstValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderConstValue) xmlTextReaderConstValue __attribute((alias("xmlTextReaderConstValue__internal_alias")));
 #define xmlTextReaderConstValue xmlTextReaderConstValue__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderConstXmlLang
+extern __typeof (xmlTextReaderConstXmlLang) xmlTextReaderConstXmlLang __attribute((alias("xmlTextReaderConstXmlLang__internal_alias")));
+#else
+#ifndef xmlTextReaderConstXmlLang
 extern __typeof (xmlTextReaderConstXmlLang) xmlTextReaderConstXmlLang__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderConstXmlLang) xmlTextReaderConstXmlLang __attribute((alias("xmlTextReaderConstXmlLang__internal_alias")));
 #define xmlTextReaderConstXmlLang xmlTextReaderConstXmlLang__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderConstXmlVersion
+extern __typeof (xmlTextReaderConstXmlVersion) xmlTextReaderConstXmlVersion __attribute((alias("xmlTextReaderConstXmlVersion__internal_alias")));
+#else
+#ifndef xmlTextReaderConstXmlVersion
 extern __typeof (xmlTextReaderConstXmlVersion) xmlTextReaderConstXmlVersion__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderConstXmlVersion) xmlTextReaderConstXmlVersion __attribute((alias("xmlTextReaderConstXmlVersion__internal_alias")));
 #define xmlTextReaderConstXmlVersion xmlTextReaderConstXmlVersion__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderCurrentDoc
+extern __typeof (xmlTextReaderCurrentDoc) xmlTextReaderCurrentDoc __attribute((alias("xmlTextReaderCurrentDoc__internal_alias")));
+#else
+#ifndef xmlTextReaderCurrentDoc
 extern __typeof (xmlTextReaderCurrentDoc) xmlTextReaderCurrentDoc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderCurrentDoc) xmlTextReaderCurrentDoc __attribute((alias("xmlTextReaderCurrentDoc__internal_alias")));
 #define xmlTextReaderCurrentDoc xmlTextReaderCurrentDoc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderCurrentNode
+extern __typeof (xmlTextReaderCurrentNode) xmlTextReaderCurrentNode __attribute((alias("xmlTextReaderCurrentNode__internal_alias")));
+#else
+#ifndef xmlTextReaderCurrentNode
 extern __typeof (xmlTextReaderCurrentNode) xmlTextReaderCurrentNode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderCurrentNode) xmlTextReaderCurrentNode __attribute((alias("xmlTextReaderCurrentNode__internal_alias")));
 #define xmlTextReaderCurrentNode xmlTextReaderCurrentNode__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderDepth
+extern __typeof (xmlTextReaderDepth) xmlTextReaderDepth __attribute((alias("xmlTextReaderDepth__internal_alias")));
+#else
+#ifndef xmlTextReaderDepth
 extern __typeof (xmlTextReaderDepth) xmlTextReaderDepth__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderDepth) xmlTextReaderDepth __attribute((alias("xmlTextReaderDepth__internal_alias")));
 #define xmlTextReaderDepth xmlTextReaderDepth__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderExpand
+extern __typeof (xmlTextReaderExpand) xmlTextReaderExpand __attribute((alias("xmlTextReaderExpand__internal_alias")));
+#else
+#ifndef xmlTextReaderExpand
 extern __typeof (xmlTextReaderExpand) xmlTextReaderExpand__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderExpand) xmlTextReaderExpand __attribute((alias("xmlTextReaderExpand__internal_alias")));
 #define xmlTextReaderExpand xmlTextReaderExpand__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderGetAttribute
+extern __typeof (xmlTextReaderGetAttribute) xmlTextReaderGetAttribute __attribute((alias("xmlTextReaderGetAttribute__internal_alias")));
+#else
+#ifndef xmlTextReaderGetAttribute
 extern __typeof (xmlTextReaderGetAttribute) xmlTextReaderGetAttribute__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderGetAttribute) xmlTextReaderGetAttribute __attribute((alias("xmlTextReaderGetAttribute__internal_alias")));
 #define xmlTextReaderGetAttribute xmlTextReaderGetAttribute__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderGetAttributeNo
+extern __typeof (xmlTextReaderGetAttributeNo) xmlTextReaderGetAttributeNo __attribute((alias("xmlTextReaderGetAttributeNo__internal_alias")));
+#else
+#ifndef xmlTextReaderGetAttributeNo
 extern __typeof (xmlTextReaderGetAttributeNo) xmlTextReaderGetAttributeNo__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderGetAttributeNo) xmlTextReaderGetAttributeNo __attribute((alias("xmlTextReaderGetAttributeNo__internal_alias")));
 #define xmlTextReaderGetAttributeNo xmlTextReaderGetAttributeNo__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderGetAttributeNs
+extern __typeof (xmlTextReaderGetAttributeNs) xmlTextReaderGetAttributeNs __attribute((alias("xmlTextReaderGetAttributeNs__internal_alias")));
+#else
+#ifndef xmlTextReaderGetAttributeNs
 extern __typeof (xmlTextReaderGetAttributeNs) xmlTextReaderGetAttributeNs__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderGetAttributeNs) xmlTextReaderGetAttributeNs __attribute((alias("xmlTextReaderGetAttributeNs__internal_alias")));
 #define xmlTextReaderGetAttributeNs xmlTextReaderGetAttributeNs__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderGetErrorHandler
+extern __typeof (xmlTextReaderGetErrorHandler) xmlTextReaderGetErrorHandler __attribute((alias("xmlTextReaderGetErrorHandler__internal_alias")));
+#else
+#ifndef xmlTextReaderGetErrorHandler
 extern __typeof (xmlTextReaderGetErrorHandler) xmlTextReaderGetErrorHandler__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderGetErrorHandler) xmlTextReaderGetErrorHandler __attribute((alias("xmlTextReaderGetErrorHandler__internal_alias")));
 #define xmlTextReaderGetErrorHandler xmlTextReaderGetErrorHandler__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderGetParserColumnNumber
+extern __typeof (xmlTextReaderGetParserColumnNumber) xmlTextReaderGetParserColumnNumber __attribute((alias("xmlTextReaderGetParserColumnNumber__internal_alias")));
+#else
+#ifndef xmlTextReaderGetParserColumnNumber
 extern __typeof (xmlTextReaderGetParserColumnNumber) xmlTextReaderGetParserColumnNumber__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderGetParserColumnNumber) xmlTextReaderGetParserColumnNumber __attribute((alias("xmlTextReaderGetParserColumnNumber__internal_alias")));
 #define xmlTextReaderGetParserColumnNumber xmlTextReaderGetParserColumnNumber__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderGetParserLineNumber
+extern __typeof (xmlTextReaderGetParserLineNumber) xmlTextReaderGetParserLineNumber __attribute((alias("xmlTextReaderGetParserLineNumber__internal_alias")));
+#else
+#ifndef xmlTextReaderGetParserLineNumber
 extern __typeof (xmlTextReaderGetParserLineNumber) xmlTextReaderGetParserLineNumber__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderGetParserLineNumber) xmlTextReaderGetParserLineNumber __attribute((alias("xmlTextReaderGetParserLineNumber__internal_alias")));
 #define xmlTextReaderGetParserLineNumber xmlTextReaderGetParserLineNumber__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderGetParserProp
+extern __typeof (xmlTextReaderGetParserProp) xmlTextReaderGetParserProp __attribute((alias("xmlTextReaderGetParserProp__internal_alias")));
+#else
+#ifndef xmlTextReaderGetParserProp
 extern __typeof (xmlTextReaderGetParserProp) xmlTextReaderGetParserProp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderGetParserProp) xmlTextReaderGetParserProp __attribute((alias("xmlTextReaderGetParserProp__internal_alias")));
 #define xmlTextReaderGetParserProp xmlTextReaderGetParserProp__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderGetRemainder
+extern __typeof (xmlTextReaderGetRemainder) xmlTextReaderGetRemainder __attribute((alias("xmlTextReaderGetRemainder__internal_alias")));
+#else
+#ifndef xmlTextReaderGetRemainder
 extern __typeof (xmlTextReaderGetRemainder) xmlTextReaderGetRemainder__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderGetRemainder) xmlTextReaderGetRemainder __attribute((alias("xmlTextReaderGetRemainder__internal_alias")));
 #define xmlTextReaderGetRemainder xmlTextReaderGetRemainder__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderHasAttributes
+extern __typeof (xmlTextReaderHasAttributes) xmlTextReaderHasAttributes __attribute((alias("xmlTextReaderHasAttributes__internal_alias")));
+#else
+#ifndef xmlTextReaderHasAttributes
 extern __typeof (xmlTextReaderHasAttributes) xmlTextReaderHasAttributes__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderHasAttributes) xmlTextReaderHasAttributes __attribute((alias("xmlTextReaderHasAttributes__internal_alias")));
 #define xmlTextReaderHasAttributes xmlTextReaderHasAttributes__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderHasValue
+extern __typeof (xmlTextReaderHasValue) xmlTextReaderHasValue __attribute((alias("xmlTextReaderHasValue__internal_alias")));
+#else
+#ifndef xmlTextReaderHasValue
 extern __typeof (xmlTextReaderHasValue) xmlTextReaderHasValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderHasValue) xmlTextReaderHasValue __attribute((alias("xmlTextReaderHasValue__internal_alias")));
 #define xmlTextReaderHasValue xmlTextReaderHasValue__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderIsDefault
+extern __typeof (xmlTextReaderIsDefault) xmlTextReaderIsDefault __attribute((alias("xmlTextReaderIsDefault__internal_alias")));
+#else
+#ifndef xmlTextReaderIsDefault
 extern __typeof (xmlTextReaderIsDefault) xmlTextReaderIsDefault__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderIsDefault) xmlTextReaderIsDefault __attribute((alias("xmlTextReaderIsDefault__internal_alias")));
 #define xmlTextReaderIsDefault xmlTextReaderIsDefault__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderIsEmptyElement
+extern __typeof (xmlTextReaderIsEmptyElement) xmlTextReaderIsEmptyElement __attribute((alias("xmlTextReaderIsEmptyElement__internal_alias")));
+#else
+#ifndef xmlTextReaderIsEmptyElement
 extern __typeof (xmlTextReaderIsEmptyElement) xmlTextReaderIsEmptyElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderIsEmptyElement) xmlTextReaderIsEmptyElement __attribute((alias("xmlTextReaderIsEmptyElement__internal_alias")));
 #define xmlTextReaderIsEmptyElement xmlTextReaderIsEmptyElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderIsNamespaceDecl
+extern __typeof (xmlTextReaderIsNamespaceDecl) xmlTextReaderIsNamespaceDecl __attribute((alias("xmlTextReaderIsNamespaceDecl__internal_alias")));
+#else
+#ifndef xmlTextReaderIsNamespaceDecl
 extern __typeof (xmlTextReaderIsNamespaceDecl) xmlTextReaderIsNamespaceDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderIsNamespaceDecl) xmlTextReaderIsNamespaceDecl __attribute((alias("xmlTextReaderIsNamespaceDecl__internal_alias")));
 #define xmlTextReaderIsNamespaceDecl xmlTextReaderIsNamespaceDecl__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderIsValid
+extern __typeof (xmlTextReaderIsValid) xmlTextReaderIsValid __attribute((alias("xmlTextReaderIsValid__internal_alias")));
+#else
+#ifndef xmlTextReaderIsValid
 extern __typeof (xmlTextReaderIsValid) xmlTextReaderIsValid__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderIsValid) xmlTextReaderIsValid __attribute((alias("xmlTextReaderIsValid__internal_alias")));
 #define xmlTextReaderIsValid xmlTextReaderIsValid__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderLocalName
+extern __typeof (xmlTextReaderLocalName) xmlTextReaderLocalName __attribute((alias("xmlTextReaderLocalName__internal_alias")));
+#else
+#ifndef xmlTextReaderLocalName
 extern __typeof (xmlTextReaderLocalName) xmlTextReaderLocalName__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderLocalName) xmlTextReaderLocalName __attribute((alias("xmlTextReaderLocalName__internal_alias")));
 #define xmlTextReaderLocalName xmlTextReaderLocalName__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderLocatorBaseURI
+extern __typeof (xmlTextReaderLocatorBaseURI) xmlTextReaderLocatorBaseURI __attribute((alias("xmlTextReaderLocatorBaseURI__internal_alias")));
+#else
+#ifndef xmlTextReaderLocatorBaseURI
 extern __typeof (xmlTextReaderLocatorBaseURI) xmlTextReaderLocatorBaseURI__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderLocatorBaseURI) xmlTextReaderLocatorBaseURI __attribute((alias("xmlTextReaderLocatorBaseURI__internal_alias")));
 #define xmlTextReaderLocatorBaseURI xmlTextReaderLocatorBaseURI__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderLocatorLineNumber
+extern __typeof (xmlTextReaderLocatorLineNumber) xmlTextReaderLocatorLineNumber __attribute((alias("xmlTextReaderLocatorLineNumber__internal_alias")));
+#else
+#ifndef xmlTextReaderLocatorLineNumber
 extern __typeof (xmlTextReaderLocatorLineNumber) xmlTextReaderLocatorLineNumber__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderLocatorLineNumber) xmlTextReaderLocatorLineNumber __attribute((alias("xmlTextReaderLocatorLineNumber__internal_alias")));
 #define xmlTextReaderLocatorLineNumber xmlTextReaderLocatorLineNumber__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderLookupNamespace
+extern __typeof (xmlTextReaderLookupNamespace) xmlTextReaderLookupNamespace __attribute((alias("xmlTextReaderLookupNamespace__internal_alias")));
+#else
+#ifndef xmlTextReaderLookupNamespace
 extern __typeof (xmlTextReaderLookupNamespace) xmlTextReaderLookupNamespace__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderLookupNamespace) xmlTextReaderLookupNamespace __attribute((alias("xmlTextReaderLookupNamespace__internal_alias")));
 #define xmlTextReaderLookupNamespace xmlTextReaderLookupNamespace__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderMoveToAttribute
+extern __typeof (xmlTextReaderMoveToAttribute) xmlTextReaderMoveToAttribute __attribute((alias("xmlTextReaderMoveToAttribute__internal_alias")));
+#else
+#ifndef xmlTextReaderMoveToAttribute
 extern __typeof (xmlTextReaderMoveToAttribute) xmlTextReaderMoveToAttribute__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderMoveToAttribute) xmlTextReaderMoveToAttribute __attribute((alias("xmlTextReaderMoveToAttribute__internal_alias")));
 #define xmlTextReaderMoveToAttribute xmlTextReaderMoveToAttribute__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderMoveToAttributeNo
+extern __typeof (xmlTextReaderMoveToAttributeNo) xmlTextReaderMoveToAttributeNo __attribute((alias("xmlTextReaderMoveToAttributeNo__internal_alias")));
+#else
+#ifndef xmlTextReaderMoveToAttributeNo
 extern __typeof (xmlTextReaderMoveToAttributeNo) xmlTextReaderMoveToAttributeNo__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderMoveToAttributeNo) xmlTextReaderMoveToAttributeNo __attribute((alias("xmlTextReaderMoveToAttributeNo__internal_alias")));
 #define xmlTextReaderMoveToAttributeNo xmlTextReaderMoveToAttributeNo__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderMoveToAttributeNs
+extern __typeof (xmlTextReaderMoveToAttributeNs) xmlTextReaderMoveToAttributeNs __attribute((alias("xmlTextReaderMoveToAttributeNs__internal_alias")));
+#else
+#ifndef xmlTextReaderMoveToAttributeNs
 extern __typeof (xmlTextReaderMoveToAttributeNs) xmlTextReaderMoveToAttributeNs__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderMoveToAttributeNs) xmlTextReaderMoveToAttributeNs __attribute((alias("xmlTextReaderMoveToAttributeNs__internal_alias")));
 #define xmlTextReaderMoveToAttributeNs xmlTextReaderMoveToAttributeNs__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderMoveToElement
+extern __typeof (xmlTextReaderMoveToElement) xmlTextReaderMoveToElement __attribute((alias("xmlTextReaderMoveToElement__internal_alias")));
+#else
+#ifndef xmlTextReaderMoveToElement
 extern __typeof (xmlTextReaderMoveToElement) xmlTextReaderMoveToElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderMoveToElement) xmlTextReaderMoveToElement __attribute((alias("xmlTextReaderMoveToElement__internal_alias")));
 #define xmlTextReaderMoveToElement xmlTextReaderMoveToElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderMoveToFirstAttribute
+extern __typeof (xmlTextReaderMoveToFirstAttribute) xmlTextReaderMoveToFirstAttribute __attribute((alias("xmlTextReaderMoveToFirstAttribute__internal_alias")));
+#else
+#ifndef xmlTextReaderMoveToFirstAttribute
 extern __typeof (xmlTextReaderMoveToFirstAttribute) xmlTextReaderMoveToFirstAttribute__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderMoveToFirstAttribute) xmlTextReaderMoveToFirstAttribute __attribute((alias("xmlTextReaderMoveToFirstAttribute__internal_alias")));
 #define xmlTextReaderMoveToFirstAttribute xmlTextReaderMoveToFirstAttribute__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderMoveToNextAttribute
+extern __typeof (xmlTextReaderMoveToNextAttribute) xmlTextReaderMoveToNextAttribute __attribute((alias("xmlTextReaderMoveToNextAttribute__internal_alias")));
+#else
+#ifndef xmlTextReaderMoveToNextAttribute
 extern __typeof (xmlTextReaderMoveToNextAttribute) xmlTextReaderMoveToNextAttribute__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderMoveToNextAttribute) xmlTextReaderMoveToNextAttribute __attribute((alias("xmlTextReaderMoveToNextAttribute__internal_alias")));
 #define xmlTextReaderMoveToNextAttribute xmlTextReaderMoveToNextAttribute__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderName
+extern __typeof (xmlTextReaderName) xmlTextReaderName __attribute((alias("xmlTextReaderName__internal_alias")));
+#else
+#ifndef xmlTextReaderName
 extern __typeof (xmlTextReaderName) xmlTextReaderName__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderName) xmlTextReaderName __attribute((alias("xmlTextReaderName__internal_alias")));
 #define xmlTextReaderName xmlTextReaderName__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderNamespaceUri
+extern __typeof (xmlTextReaderNamespaceUri) xmlTextReaderNamespaceUri __attribute((alias("xmlTextReaderNamespaceUri__internal_alias")));
+#else
+#ifndef xmlTextReaderNamespaceUri
 extern __typeof (xmlTextReaderNamespaceUri) xmlTextReaderNamespaceUri__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderNamespaceUri) xmlTextReaderNamespaceUri __attribute((alias("xmlTextReaderNamespaceUri__internal_alias")));
 #define xmlTextReaderNamespaceUri xmlTextReaderNamespaceUri__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderNext
+extern __typeof (xmlTextReaderNext) xmlTextReaderNext __attribute((alias("xmlTextReaderNext__internal_alias")));
+#else
+#ifndef xmlTextReaderNext
 extern __typeof (xmlTextReaderNext) xmlTextReaderNext__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderNext) xmlTextReaderNext __attribute((alias("xmlTextReaderNext__internal_alias")));
 #define xmlTextReaderNext xmlTextReaderNext__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderNextSibling
+extern __typeof (xmlTextReaderNextSibling) xmlTextReaderNextSibling __attribute((alias("xmlTextReaderNextSibling__internal_alias")));
+#else
+#ifndef xmlTextReaderNextSibling
 extern __typeof (xmlTextReaderNextSibling) xmlTextReaderNextSibling__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderNextSibling) xmlTextReaderNextSibling __attribute((alias("xmlTextReaderNextSibling__internal_alias")));
 #define xmlTextReaderNextSibling xmlTextReaderNextSibling__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderNodeType
+extern __typeof (xmlTextReaderNodeType) xmlTextReaderNodeType __attribute((alias("xmlTextReaderNodeType__internal_alias")));
+#else
+#ifndef xmlTextReaderNodeType
 extern __typeof (xmlTextReaderNodeType) xmlTextReaderNodeType__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderNodeType) xmlTextReaderNodeType __attribute((alias("xmlTextReaderNodeType__internal_alias")));
 #define xmlTextReaderNodeType xmlTextReaderNodeType__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderNormalization
+extern __typeof (xmlTextReaderNormalization) xmlTextReaderNormalization __attribute((alias("xmlTextReaderNormalization__internal_alias")));
+#else
+#ifndef xmlTextReaderNormalization
 extern __typeof (xmlTextReaderNormalization) xmlTextReaderNormalization__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderNormalization) xmlTextReaderNormalization __attribute((alias("xmlTextReaderNormalization__internal_alias")));
 #define xmlTextReaderNormalization xmlTextReaderNormalization__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderPrefix
+extern __typeof (xmlTextReaderPrefix) xmlTextReaderPrefix __attribute((alias("xmlTextReaderPrefix__internal_alias")));
+#else
+#ifndef xmlTextReaderPrefix
 extern __typeof (xmlTextReaderPrefix) xmlTextReaderPrefix__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderPrefix) xmlTextReaderPrefix __attribute((alias("xmlTextReaderPrefix__internal_alias")));
 #define xmlTextReaderPrefix xmlTextReaderPrefix__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderPreserve
+extern __typeof (xmlTextReaderPreserve) xmlTextReaderPreserve __attribute((alias("xmlTextReaderPreserve__internal_alias")));
+#else
+#ifndef xmlTextReaderPreserve
 extern __typeof (xmlTextReaderPreserve) xmlTextReaderPreserve__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderPreserve) xmlTextReaderPreserve __attribute((alias("xmlTextReaderPreserve__internal_alias")));
 #define xmlTextReaderPreserve xmlTextReaderPreserve__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED) && defined(LIBXML_PATTERN_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderPreservePattern
+extern __typeof (xmlTextReaderPreservePattern) xmlTextReaderPreservePattern __attribute((alias("xmlTextReaderPreservePattern__internal_alias")));
+#else
+#ifndef xmlTextReaderPreservePattern
 extern __typeof (xmlTextReaderPreservePattern) xmlTextReaderPreservePattern__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderPreservePattern) xmlTextReaderPreservePattern __attribute((alias("xmlTextReaderPreservePattern__internal_alias")));
 #define xmlTextReaderPreservePattern xmlTextReaderPreservePattern__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderQuoteChar
+extern __typeof (xmlTextReaderQuoteChar) xmlTextReaderQuoteChar __attribute((alias("xmlTextReaderQuoteChar__internal_alias")));
+#else
+#ifndef xmlTextReaderQuoteChar
 extern __typeof (xmlTextReaderQuoteChar) xmlTextReaderQuoteChar__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderQuoteChar) xmlTextReaderQuoteChar __attribute((alias("xmlTextReaderQuoteChar__internal_alias")));
 #define xmlTextReaderQuoteChar xmlTextReaderQuoteChar__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderRead
+extern __typeof (xmlTextReaderRead) xmlTextReaderRead __attribute((alias("xmlTextReaderRead__internal_alias")));
+#else
+#ifndef xmlTextReaderRead
 extern __typeof (xmlTextReaderRead) xmlTextReaderRead__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderRead) xmlTextReaderRead __attribute((alias("xmlTextReaderRead__internal_alias")));
 #define xmlTextReaderRead xmlTextReaderRead__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderReadAttributeValue
+extern __typeof (xmlTextReaderReadAttributeValue) xmlTextReaderReadAttributeValue __attribute((alias("xmlTextReaderReadAttributeValue__internal_alias")));
+#else
+#ifndef xmlTextReaderReadAttributeValue
 extern __typeof (xmlTextReaderReadAttributeValue) xmlTextReaderReadAttributeValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderReadAttributeValue) xmlTextReaderReadAttributeValue __attribute((alias("xmlTextReaderReadAttributeValue__internal_alias")));
 #define xmlTextReaderReadAttributeValue xmlTextReaderReadAttributeValue__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderReadInnerXml
+extern __typeof (xmlTextReaderReadInnerXml) xmlTextReaderReadInnerXml __attribute((alias("xmlTextReaderReadInnerXml__internal_alias")));
+#else
+#ifndef xmlTextReaderReadInnerXml
 extern __typeof (xmlTextReaderReadInnerXml) xmlTextReaderReadInnerXml__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderReadInnerXml) xmlTextReaderReadInnerXml __attribute((alias("xmlTextReaderReadInnerXml__internal_alias")));
 #define xmlTextReaderReadInnerXml xmlTextReaderReadInnerXml__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderReadOuterXml
+extern __typeof (xmlTextReaderReadOuterXml) xmlTextReaderReadOuterXml __attribute((alias("xmlTextReaderReadOuterXml__internal_alias")));
+#else
+#ifndef xmlTextReaderReadOuterXml
 extern __typeof (xmlTextReaderReadOuterXml) xmlTextReaderReadOuterXml__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderReadOuterXml) xmlTextReaderReadOuterXml __attribute((alias("xmlTextReaderReadOuterXml__internal_alias")));
 #define xmlTextReaderReadOuterXml xmlTextReaderReadOuterXml__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderReadState
+extern __typeof (xmlTextReaderReadState) xmlTextReaderReadState __attribute((alias("xmlTextReaderReadState__internal_alias")));
+#else
+#ifndef xmlTextReaderReadState
 extern __typeof (xmlTextReaderReadState) xmlTextReaderReadState__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderReadState) xmlTextReaderReadState __attribute((alias("xmlTextReaderReadState__internal_alias")));
 #define xmlTextReaderReadState xmlTextReaderReadState__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderReadString
+extern __typeof (xmlTextReaderReadString) xmlTextReaderReadString __attribute((alias("xmlTextReaderReadString__internal_alias")));
+#else
+#ifndef xmlTextReaderReadString
 extern __typeof (xmlTextReaderReadString) xmlTextReaderReadString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderReadString) xmlTextReaderReadString __attribute((alias("xmlTextReaderReadString__internal_alias")));
 #define xmlTextReaderReadString xmlTextReaderReadString__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderRelaxNGSetSchema
+extern __typeof (xmlTextReaderRelaxNGSetSchema) xmlTextReaderRelaxNGSetSchema __attribute((alias("xmlTextReaderRelaxNGSetSchema__internal_alias")));
+#else
+#ifndef xmlTextReaderRelaxNGSetSchema
 extern __typeof (xmlTextReaderRelaxNGSetSchema) xmlTextReaderRelaxNGSetSchema__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderRelaxNGSetSchema) xmlTextReaderRelaxNGSetSchema __attribute((alias("xmlTextReaderRelaxNGSetSchema__internal_alias")));
 #define xmlTextReaderRelaxNGSetSchema xmlTextReaderRelaxNGSetSchema__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderRelaxNGValidate
+extern __typeof (xmlTextReaderRelaxNGValidate) xmlTextReaderRelaxNGValidate __attribute((alias("xmlTextReaderRelaxNGValidate__internal_alias")));
+#else
+#ifndef xmlTextReaderRelaxNGValidate
 extern __typeof (xmlTextReaderRelaxNGValidate) xmlTextReaderRelaxNGValidate__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderRelaxNGValidate) xmlTextReaderRelaxNGValidate __attribute((alias("xmlTextReaderRelaxNGValidate__internal_alias")));
 #define xmlTextReaderRelaxNGValidate xmlTextReaderRelaxNGValidate__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderSetErrorHandler
+extern __typeof (xmlTextReaderSetErrorHandler) xmlTextReaderSetErrorHandler __attribute((alias("xmlTextReaderSetErrorHandler__internal_alias")));
+#else
+#ifndef xmlTextReaderSetErrorHandler
 extern __typeof (xmlTextReaderSetErrorHandler) xmlTextReaderSetErrorHandler__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderSetErrorHandler) xmlTextReaderSetErrorHandler __attribute((alias("xmlTextReaderSetErrorHandler__internal_alias")));
 #define xmlTextReaderSetErrorHandler xmlTextReaderSetErrorHandler__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderSetParserProp
+extern __typeof (xmlTextReaderSetParserProp) xmlTextReaderSetParserProp __attribute((alias("xmlTextReaderSetParserProp__internal_alias")));
+#else
+#ifndef xmlTextReaderSetParserProp
 extern __typeof (xmlTextReaderSetParserProp) xmlTextReaderSetParserProp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderSetParserProp) xmlTextReaderSetParserProp __attribute((alias("xmlTextReaderSetParserProp__internal_alias")));
 #define xmlTextReaderSetParserProp xmlTextReaderSetParserProp__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderSetStructuredErrorHandler
+extern __typeof (xmlTextReaderSetStructuredErrorHandler) xmlTextReaderSetStructuredErrorHandler __attribute((alias("xmlTextReaderSetStructuredErrorHandler__internal_alias")));
+#else
+#ifndef xmlTextReaderSetStructuredErrorHandler
 extern __typeof (xmlTextReaderSetStructuredErrorHandler) xmlTextReaderSetStructuredErrorHandler__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderSetStructuredErrorHandler) xmlTextReaderSetStructuredErrorHandler __attribute((alias("xmlTextReaderSetStructuredErrorHandler__internal_alias")));
 #define xmlTextReaderSetStructuredErrorHandler xmlTextReaderSetStructuredErrorHandler__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderStandalone
+extern __typeof (xmlTextReaderStandalone) xmlTextReaderStandalone __attribute((alias("xmlTextReaderStandalone__internal_alias")));
+#else
+#ifndef xmlTextReaderStandalone
 extern __typeof (xmlTextReaderStandalone) xmlTextReaderStandalone__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderStandalone) xmlTextReaderStandalone __attribute((alias("xmlTextReaderStandalone__internal_alias")));
 #define xmlTextReaderStandalone xmlTextReaderStandalone__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderValue
+extern __typeof (xmlTextReaderValue) xmlTextReaderValue __attribute((alias("xmlTextReaderValue__internal_alias")));
+#else
+#ifndef xmlTextReaderValue
 extern __typeof (xmlTextReaderValue) xmlTextReaderValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderValue) xmlTextReaderValue __attribute((alias("xmlTextReaderValue__internal_alias")));
 #define xmlTextReaderValue xmlTextReaderValue__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_READER_ENABLED)
+#ifdef bottom_xmlreader
+#undef xmlTextReaderXmlLang
+extern __typeof (xmlTextReaderXmlLang) xmlTextReaderXmlLang __attribute((alias("xmlTextReaderXmlLang__internal_alias")));
+#else
+#ifndef xmlTextReaderXmlLang
 extern __typeof (xmlTextReaderXmlLang) xmlTextReaderXmlLang__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextReaderXmlLang) xmlTextReaderXmlLang __attribute((alias("xmlTextReaderXmlLang__internal_alias")));
 #define xmlTextReaderXmlLang xmlTextReaderXmlLang__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterEndAttribute
+extern __typeof (xmlTextWriterEndAttribute) xmlTextWriterEndAttribute __attribute((alias("xmlTextWriterEndAttribute__internal_alias")));
+#else
+#ifndef xmlTextWriterEndAttribute
 extern __typeof (xmlTextWriterEndAttribute) xmlTextWriterEndAttribute__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterEndAttribute) xmlTextWriterEndAttribute __attribute((alias("xmlTextWriterEndAttribute__internal_alias")));
 #define xmlTextWriterEndAttribute xmlTextWriterEndAttribute__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterEndCDATA
+extern __typeof (xmlTextWriterEndCDATA) xmlTextWriterEndCDATA __attribute((alias("xmlTextWriterEndCDATA__internal_alias")));
+#else
+#ifndef xmlTextWriterEndCDATA
 extern __typeof (xmlTextWriterEndCDATA) xmlTextWriterEndCDATA__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterEndCDATA) xmlTextWriterEndCDATA __attribute((alias("xmlTextWriterEndCDATA__internal_alias")));
 #define xmlTextWriterEndCDATA xmlTextWriterEndCDATA__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterEndComment
+extern __typeof (xmlTextWriterEndComment) xmlTextWriterEndComment __attribute((alias("xmlTextWriterEndComment__internal_alias")));
+#else
+#ifndef xmlTextWriterEndComment
 extern __typeof (xmlTextWriterEndComment) xmlTextWriterEndComment__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterEndComment) xmlTextWriterEndComment __attribute((alias("xmlTextWriterEndComment__internal_alias")));
 #define xmlTextWriterEndComment xmlTextWriterEndComment__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterEndDTD
+extern __typeof (xmlTextWriterEndDTD) xmlTextWriterEndDTD __attribute((alias("xmlTextWriterEndDTD__internal_alias")));
+#else
+#ifndef xmlTextWriterEndDTD
 extern __typeof (xmlTextWriterEndDTD) xmlTextWriterEndDTD__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterEndDTD) xmlTextWriterEndDTD __attribute((alias("xmlTextWriterEndDTD__internal_alias")));
 #define xmlTextWriterEndDTD xmlTextWriterEndDTD__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterEndDTDAttlist
+extern __typeof (xmlTextWriterEndDTDAttlist) xmlTextWriterEndDTDAttlist __attribute((alias("xmlTextWriterEndDTDAttlist__internal_alias")));
+#else
+#ifndef xmlTextWriterEndDTDAttlist
 extern __typeof (xmlTextWriterEndDTDAttlist) xmlTextWriterEndDTDAttlist__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterEndDTDAttlist) xmlTextWriterEndDTDAttlist __attribute((alias("xmlTextWriterEndDTDAttlist__internal_alias")));
 #define xmlTextWriterEndDTDAttlist xmlTextWriterEndDTDAttlist__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterEndDTDElement
+extern __typeof (xmlTextWriterEndDTDElement) xmlTextWriterEndDTDElement __attribute((alias("xmlTextWriterEndDTDElement__internal_alias")));
+#else
+#ifndef xmlTextWriterEndDTDElement
 extern __typeof (xmlTextWriterEndDTDElement) xmlTextWriterEndDTDElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterEndDTDElement) xmlTextWriterEndDTDElement __attribute((alias("xmlTextWriterEndDTDElement__internal_alias")));
 #define xmlTextWriterEndDTDElement xmlTextWriterEndDTDElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterEndDTDEntity
+extern __typeof (xmlTextWriterEndDTDEntity) xmlTextWriterEndDTDEntity __attribute((alias("xmlTextWriterEndDTDEntity__internal_alias")));
+#else
+#ifndef xmlTextWriterEndDTDEntity
 extern __typeof (xmlTextWriterEndDTDEntity) xmlTextWriterEndDTDEntity__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterEndDTDEntity) xmlTextWriterEndDTDEntity __attribute((alias("xmlTextWriterEndDTDEntity__internal_alias")));
 #define xmlTextWriterEndDTDEntity xmlTextWriterEndDTDEntity__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterEndDocument
+extern __typeof (xmlTextWriterEndDocument) xmlTextWriterEndDocument __attribute((alias("xmlTextWriterEndDocument__internal_alias")));
+#else
+#ifndef xmlTextWriterEndDocument
 extern __typeof (xmlTextWriterEndDocument) xmlTextWriterEndDocument__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterEndDocument) xmlTextWriterEndDocument __attribute((alias("xmlTextWriterEndDocument__internal_alias")));
 #define xmlTextWriterEndDocument xmlTextWriterEndDocument__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterEndElement
+extern __typeof (xmlTextWriterEndElement) xmlTextWriterEndElement __attribute((alias("xmlTextWriterEndElement__internal_alias")));
+#else
+#ifndef xmlTextWriterEndElement
 extern __typeof (xmlTextWriterEndElement) xmlTextWriterEndElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterEndElement) xmlTextWriterEndElement __attribute((alias("xmlTextWriterEndElement__internal_alias")));
 #define xmlTextWriterEndElement xmlTextWriterEndElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterEndPI
+extern __typeof (xmlTextWriterEndPI) xmlTextWriterEndPI __attribute((alias("xmlTextWriterEndPI__internal_alias")));
+#else
+#ifndef xmlTextWriterEndPI
 extern __typeof (xmlTextWriterEndPI) xmlTextWriterEndPI__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterEndPI) xmlTextWriterEndPI __attribute((alias("xmlTextWriterEndPI__internal_alias")));
 #define xmlTextWriterEndPI xmlTextWriterEndPI__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterFlush
+extern __typeof (xmlTextWriterFlush) xmlTextWriterFlush __attribute((alias("xmlTextWriterFlush__internal_alias")));
+#else
+#ifndef xmlTextWriterFlush
 extern __typeof (xmlTextWriterFlush) xmlTextWriterFlush__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterFlush) xmlTextWriterFlush __attribute((alias("xmlTextWriterFlush__internal_alias")));
 #define xmlTextWriterFlush xmlTextWriterFlush__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterFullEndElement
+extern __typeof (xmlTextWriterFullEndElement) xmlTextWriterFullEndElement __attribute((alias("xmlTextWriterFullEndElement__internal_alias")));
+#else
+#ifndef xmlTextWriterFullEndElement
 extern __typeof (xmlTextWriterFullEndElement) xmlTextWriterFullEndElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterFullEndElement) xmlTextWriterFullEndElement __attribute((alias("xmlTextWriterFullEndElement__internal_alias")));
 #define xmlTextWriterFullEndElement xmlTextWriterFullEndElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterSetIndent
+extern __typeof (xmlTextWriterSetIndent) xmlTextWriterSetIndent __attribute((alias("xmlTextWriterSetIndent__internal_alias")));
+#else
+#ifndef xmlTextWriterSetIndent
 extern __typeof (xmlTextWriterSetIndent) xmlTextWriterSetIndent__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterSetIndent) xmlTextWriterSetIndent __attribute((alias("xmlTextWriterSetIndent__internal_alias")));
 #define xmlTextWriterSetIndent xmlTextWriterSetIndent__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterSetIndentString
+extern __typeof (xmlTextWriterSetIndentString) xmlTextWriterSetIndentString __attribute((alias("xmlTextWriterSetIndentString__internal_alias")));
+#else
+#ifndef xmlTextWriterSetIndentString
 extern __typeof (xmlTextWriterSetIndentString) xmlTextWriterSetIndentString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterSetIndentString) xmlTextWriterSetIndentString __attribute((alias("xmlTextWriterSetIndentString__internal_alias")));
 #define xmlTextWriterSetIndentString xmlTextWriterSetIndentString__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterStartAttribute
+extern __typeof (xmlTextWriterStartAttribute) xmlTextWriterStartAttribute __attribute((alias("xmlTextWriterStartAttribute__internal_alias")));
+#else
+#ifndef xmlTextWriterStartAttribute
 extern __typeof (xmlTextWriterStartAttribute) xmlTextWriterStartAttribute__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterStartAttribute) xmlTextWriterStartAttribute __attribute((alias("xmlTextWriterStartAttribute__internal_alias")));
 #define xmlTextWriterStartAttribute xmlTextWriterStartAttribute__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterStartAttributeNS
+extern __typeof (xmlTextWriterStartAttributeNS) xmlTextWriterStartAttributeNS __attribute((alias("xmlTextWriterStartAttributeNS__internal_alias")));
+#else
+#ifndef xmlTextWriterStartAttributeNS
 extern __typeof (xmlTextWriterStartAttributeNS) xmlTextWriterStartAttributeNS__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterStartAttributeNS) xmlTextWriterStartAttributeNS __attribute((alias("xmlTextWriterStartAttributeNS__internal_alias")));
 #define xmlTextWriterStartAttributeNS xmlTextWriterStartAttributeNS__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterStartCDATA
+extern __typeof (xmlTextWriterStartCDATA) xmlTextWriterStartCDATA __attribute((alias("xmlTextWriterStartCDATA__internal_alias")));
+#else
+#ifndef xmlTextWriterStartCDATA
 extern __typeof (xmlTextWriterStartCDATA) xmlTextWriterStartCDATA__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterStartCDATA) xmlTextWriterStartCDATA __attribute((alias("xmlTextWriterStartCDATA__internal_alias")));
 #define xmlTextWriterStartCDATA xmlTextWriterStartCDATA__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterStartComment
+extern __typeof (xmlTextWriterStartComment) xmlTextWriterStartComment __attribute((alias("xmlTextWriterStartComment__internal_alias")));
+#else
+#ifndef xmlTextWriterStartComment
 extern __typeof (xmlTextWriterStartComment) xmlTextWriterStartComment__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterStartComment) xmlTextWriterStartComment __attribute((alias("xmlTextWriterStartComment__internal_alias")));
 #define xmlTextWriterStartComment xmlTextWriterStartComment__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterStartDTD
+extern __typeof (xmlTextWriterStartDTD) xmlTextWriterStartDTD __attribute((alias("xmlTextWriterStartDTD__internal_alias")));
+#else
+#ifndef xmlTextWriterStartDTD
 extern __typeof (xmlTextWriterStartDTD) xmlTextWriterStartDTD__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterStartDTD) xmlTextWriterStartDTD __attribute((alias("xmlTextWriterStartDTD__internal_alias")));
 #define xmlTextWriterStartDTD xmlTextWriterStartDTD__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterStartDTDAttlist
+extern __typeof (xmlTextWriterStartDTDAttlist) xmlTextWriterStartDTDAttlist __attribute((alias("xmlTextWriterStartDTDAttlist__internal_alias")));
+#else
+#ifndef xmlTextWriterStartDTDAttlist
 extern __typeof (xmlTextWriterStartDTDAttlist) xmlTextWriterStartDTDAttlist__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterStartDTDAttlist) xmlTextWriterStartDTDAttlist __attribute((alias("xmlTextWriterStartDTDAttlist__internal_alias")));
 #define xmlTextWriterStartDTDAttlist xmlTextWriterStartDTDAttlist__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterStartDTDElement
+extern __typeof (xmlTextWriterStartDTDElement) xmlTextWriterStartDTDElement __attribute((alias("xmlTextWriterStartDTDElement__internal_alias")));
+#else
+#ifndef xmlTextWriterStartDTDElement
 extern __typeof (xmlTextWriterStartDTDElement) xmlTextWriterStartDTDElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterStartDTDElement) xmlTextWriterStartDTDElement __attribute((alias("xmlTextWriterStartDTDElement__internal_alias")));
 #define xmlTextWriterStartDTDElement xmlTextWriterStartDTDElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterStartDTDEntity
+extern __typeof (xmlTextWriterStartDTDEntity) xmlTextWriterStartDTDEntity __attribute((alias("xmlTextWriterStartDTDEntity__internal_alias")));
+#else
+#ifndef xmlTextWriterStartDTDEntity
 extern __typeof (xmlTextWriterStartDTDEntity) xmlTextWriterStartDTDEntity__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterStartDTDEntity) xmlTextWriterStartDTDEntity __attribute((alias("xmlTextWriterStartDTDEntity__internal_alias")));
 #define xmlTextWriterStartDTDEntity xmlTextWriterStartDTDEntity__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterStartDocument
+extern __typeof (xmlTextWriterStartDocument) xmlTextWriterStartDocument __attribute((alias("xmlTextWriterStartDocument__internal_alias")));
+#else
+#ifndef xmlTextWriterStartDocument
 extern __typeof (xmlTextWriterStartDocument) xmlTextWriterStartDocument__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterStartDocument) xmlTextWriterStartDocument __attribute((alias("xmlTextWriterStartDocument__internal_alias")));
 #define xmlTextWriterStartDocument xmlTextWriterStartDocument__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterStartElement
+extern __typeof (xmlTextWriterStartElement) xmlTextWriterStartElement __attribute((alias("xmlTextWriterStartElement__internal_alias")));
+#else
+#ifndef xmlTextWriterStartElement
 extern __typeof (xmlTextWriterStartElement) xmlTextWriterStartElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterStartElement) xmlTextWriterStartElement __attribute((alias("xmlTextWriterStartElement__internal_alias")));
 #define xmlTextWriterStartElement xmlTextWriterStartElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterStartElementNS
+extern __typeof (xmlTextWriterStartElementNS) xmlTextWriterStartElementNS __attribute((alias("xmlTextWriterStartElementNS__internal_alias")));
+#else
+#ifndef xmlTextWriterStartElementNS
 extern __typeof (xmlTextWriterStartElementNS) xmlTextWriterStartElementNS__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterStartElementNS) xmlTextWriterStartElementNS __attribute((alias("xmlTextWriterStartElementNS__internal_alias")));
 #define xmlTextWriterStartElementNS xmlTextWriterStartElementNS__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterStartPI
+extern __typeof (xmlTextWriterStartPI) xmlTextWriterStartPI __attribute((alias("xmlTextWriterStartPI__internal_alias")));
+#else
+#ifndef xmlTextWriterStartPI
 extern __typeof (xmlTextWriterStartPI) xmlTextWriterStartPI__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterStartPI) xmlTextWriterStartPI __attribute((alias("xmlTextWriterStartPI__internal_alias")));
 #define xmlTextWriterStartPI xmlTextWriterStartPI__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteAttribute
+extern __typeof (xmlTextWriterWriteAttribute) xmlTextWriterWriteAttribute __attribute((alias("xmlTextWriterWriteAttribute__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteAttribute
 extern __typeof (xmlTextWriterWriteAttribute) xmlTextWriterWriteAttribute__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteAttribute) xmlTextWriterWriteAttribute __attribute((alias("xmlTextWriterWriteAttribute__internal_alias")));
 #define xmlTextWriterWriteAttribute xmlTextWriterWriteAttribute__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteAttributeNS
+extern __typeof (xmlTextWriterWriteAttributeNS) xmlTextWriterWriteAttributeNS __attribute((alias("xmlTextWriterWriteAttributeNS__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteAttributeNS
 extern __typeof (xmlTextWriterWriteAttributeNS) xmlTextWriterWriteAttributeNS__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteAttributeNS) xmlTextWriterWriteAttributeNS __attribute((alias("xmlTextWriterWriteAttributeNS__internal_alias")));
 #define xmlTextWriterWriteAttributeNS xmlTextWriterWriteAttributeNS__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteBase64
+extern __typeof (xmlTextWriterWriteBase64) xmlTextWriterWriteBase64 __attribute((alias("xmlTextWriterWriteBase64__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteBase64
 extern __typeof (xmlTextWriterWriteBase64) xmlTextWriterWriteBase64__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteBase64) xmlTextWriterWriteBase64 __attribute((alias("xmlTextWriterWriteBase64__internal_alias")));
 #define xmlTextWriterWriteBase64 xmlTextWriterWriteBase64__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteBinHex
+extern __typeof (xmlTextWriterWriteBinHex) xmlTextWriterWriteBinHex __attribute((alias("xmlTextWriterWriteBinHex__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteBinHex
 extern __typeof (xmlTextWriterWriteBinHex) xmlTextWriterWriteBinHex__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteBinHex) xmlTextWriterWriteBinHex __attribute((alias("xmlTextWriterWriteBinHex__internal_alias")));
 #define xmlTextWriterWriteBinHex xmlTextWriterWriteBinHex__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteCDATA
+extern __typeof (xmlTextWriterWriteCDATA) xmlTextWriterWriteCDATA __attribute((alias("xmlTextWriterWriteCDATA__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteCDATA
 extern __typeof (xmlTextWriterWriteCDATA) xmlTextWriterWriteCDATA__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteCDATA) xmlTextWriterWriteCDATA __attribute((alias("xmlTextWriterWriteCDATA__internal_alias")));
 #define xmlTextWriterWriteCDATA xmlTextWriterWriteCDATA__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteComment
+extern __typeof (xmlTextWriterWriteComment) xmlTextWriterWriteComment __attribute((alias("xmlTextWriterWriteComment__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteComment
 extern __typeof (xmlTextWriterWriteComment) xmlTextWriterWriteComment__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteComment) xmlTextWriterWriteComment __attribute((alias("xmlTextWriterWriteComment__internal_alias")));
 #define xmlTextWriterWriteComment xmlTextWriterWriteComment__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteDTD
+extern __typeof (xmlTextWriterWriteDTD) xmlTextWriterWriteDTD __attribute((alias("xmlTextWriterWriteDTD__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteDTD
 extern __typeof (xmlTextWriterWriteDTD) xmlTextWriterWriteDTD__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteDTD) xmlTextWriterWriteDTD __attribute((alias("xmlTextWriterWriteDTD__internal_alias")));
 #define xmlTextWriterWriteDTD xmlTextWriterWriteDTD__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteDTDAttlist
+extern __typeof (xmlTextWriterWriteDTDAttlist) xmlTextWriterWriteDTDAttlist __attribute((alias("xmlTextWriterWriteDTDAttlist__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteDTDAttlist
 extern __typeof (xmlTextWriterWriteDTDAttlist) xmlTextWriterWriteDTDAttlist__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteDTDAttlist) xmlTextWriterWriteDTDAttlist __attribute((alias("xmlTextWriterWriteDTDAttlist__internal_alias")));
 #define xmlTextWriterWriteDTDAttlist xmlTextWriterWriteDTDAttlist__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteDTDElement
+extern __typeof (xmlTextWriterWriteDTDElement) xmlTextWriterWriteDTDElement __attribute((alias("xmlTextWriterWriteDTDElement__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteDTDElement
 extern __typeof (xmlTextWriterWriteDTDElement) xmlTextWriterWriteDTDElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteDTDElement) xmlTextWriterWriteDTDElement __attribute((alias("xmlTextWriterWriteDTDElement__internal_alias")));
 #define xmlTextWriterWriteDTDElement xmlTextWriterWriteDTDElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteDTDEntity
+extern __typeof (xmlTextWriterWriteDTDEntity) xmlTextWriterWriteDTDEntity __attribute((alias("xmlTextWriterWriteDTDEntity__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteDTDEntity
 extern __typeof (xmlTextWriterWriteDTDEntity) xmlTextWriterWriteDTDEntity__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteDTDEntity) xmlTextWriterWriteDTDEntity __attribute((alias("xmlTextWriterWriteDTDEntity__internal_alias")));
 #define xmlTextWriterWriteDTDEntity xmlTextWriterWriteDTDEntity__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteDTDExternalEntity
+extern __typeof (xmlTextWriterWriteDTDExternalEntity) xmlTextWriterWriteDTDExternalEntity __attribute((alias("xmlTextWriterWriteDTDExternalEntity__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteDTDExternalEntity
 extern __typeof (xmlTextWriterWriteDTDExternalEntity) xmlTextWriterWriteDTDExternalEntity__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteDTDExternalEntity) xmlTextWriterWriteDTDExternalEntity __attribute((alias("xmlTextWriterWriteDTDExternalEntity__internal_alias")));
 #define xmlTextWriterWriteDTDExternalEntity xmlTextWriterWriteDTDExternalEntity__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteDTDExternalEntityContents
+extern __typeof (xmlTextWriterWriteDTDExternalEntityContents) xmlTextWriterWriteDTDExternalEntityContents __attribute((alias("xmlTextWriterWriteDTDExternalEntityContents__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteDTDExternalEntityContents
 extern __typeof (xmlTextWriterWriteDTDExternalEntityContents) xmlTextWriterWriteDTDExternalEntityContents__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteDTDExternalEntityContents) xmlTextWriterWriteDTDExternalEntityContents __attribute((alias("xmlTextWriterWriteDTDExternalEntityContents__internal_alias")));
 #define xmlTextWriterWriteDTDExternalEntityContents xmlTextWriterWriteDTDExternalEntityContents__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteDTDInternalEntity
+extern __typeof (xmlTextWriterWriteDTDInternalEntity) xmlTextWriterWriteDTDInternalEntity __attribute((alias("xmlTextWriterWriteDTDInternalEntity__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteDTDInternalEntity
 extern __typeof (xmlTextWriterWriteDTDInternalEntity) xmlTextWriterWriteDTDInternalEntity__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteDTDInternalEntity) xmlTextWriterWriteDTDInternalEntity __attribute((alias("xmlTextWriterWriteDTDInternalEntity__internal_alias")));
 #define xmlTextWriterWriteDTDInternalEntity xmlTextWriterWriteDTDInternalEntity__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteDTDNotation
+extern __typeof (xmlTextWriterWriteDTDNotation) xmlTextWriterWriteDTDNotation __attribute((alias("xmlTextWriterWriteDTDNotation__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteDTDNotation
 extern __typeof (xmlTextWriterWriteDTDNotation) xmlTextWriterWriteDTDNotation__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteDTDNotation) xmlTextWriterWriteDTDNotation __attribute((alias("xmlTextWriterWriteDTDNotation__internal_alias")));
 #define xmlTextWriterWriteDTDNotation xmlTextWriterWriteDTDNotation__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteElement
+extern __typeof (xmlTextWriterWriteElement) xmlTextWriterWriteElement __attribute((alias("xmlTextWriterWriteElement__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteElement
 extern __typeof (xmlTextWriterWriteElement) xmlTextWriterWriteElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteElement) xmlTextWriterWriteElement __attribute((alias("xmlTextWriterWriteElement__internal_alias")));
 #define xmlTextWriterWriteElement xmlTextWriterWriteElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteElementNS
+extern __typeof (xmlTextWriterWriteElementNS) xmlTextWriterWriteElementNS __attribute((alias("xmlTextWriterWriteElementNS__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteElementNS
 extern __typeof (xmlTextWriterWriteElementNS) xmlTextWriterWriteElementNS__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteElementNS) xmlTextWriterWriteElementNS __attribute((alias("xmlTextWriterWriteElementNS__internal_alias")));
 #define xmlTextWriterWriteElementNS xmlTextWriterWriteElementNS__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteFormatAttribute
+extern __typeof (xmlTextWriterWriteFormatAttribute) xmlTextWriterWriteFormatAttribute __attribute((alias("xmlTextWriterWriteFormatAttribute__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteFormatAttribute
 extern __typeof (xmlTextWriterWriteFormatAttribute) xmlTextWriterWriteFormatAttribute__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteFormatAttribute) xmlTextWriterWriteFormatAttribute __attribute((alias("xmlTextWriterWriteFormatAttribute__internal_alias")));
 #define xmlTextWriterWriteFormatAttribute xmlTextWriterWriteFormatAttribute__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteFormatAttributeNS
+extern __typeof (xmlTextWriterWriteFormatAttributeNS) xmlTextWriterWriteFormatAttributeNS __attribute((alias("xmlTextWriterWriteFormatAttributeNS__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteFormatAttributeNS
 extern __typeof (xmlTextWriterWriteFormatAttributeNS) xmlTextWriterWriteFormatAttributeNS__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteFormatAttributeNS) xmlTextWriterWriteFormatAttributeNS __attribute((alias("xmlTextWriterWriteFormatAttributeNS__internal_alias")));
 #define xmlTextWriterWriteFormatAttributeNS xmlTextWriterWriteFormatAttributeNS__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteFormatCDATA
+extern __typeof (xmlTextWriterWriteFormatCDATA) xmlTextWriterWriteFormatCDATA __attribute((alias("xmlTextWriterWriteFormatCDATA__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteFormatCDATA
 extern __typeof (xmlTextWriterWriteFormatCDATA) xmlTextWriterWriteFormatCDATA__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteFormatCDATA) xmlTextWriterWriteFormatCDATA __attribute((alias("xmlTextWriterWriteFormatCDATA__internal_alias")));
 #define xmlTextWriterWriteFormatCDATA xmlTextWriterWriteFormatCDATA__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteFormatComment
+extern __typeof (xmlTextWriterWriteFormatComment) xmlTextWriterWriteFormatComment __attribute((alias("xmlTextWriterWriteFormatComment__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteFormatComment
 extern __typeof (xmlTextWriterWriteFormatComment) xmlTextWriterWriteFormatComment__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteFormatComment) xmlTextWriterWriteFormatComment __attribute((alias("xmlTextWriterWriteFormatComment__internal_alias")));
 #define xmlTextWriterWriteFormatComment xmlTextWriterWriteFormatComment__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteFormatDTD
+extern __typeof (xmlTextWriterWriteFormatDTD) xmlTextWriterWriteFormatDTD __attribute((alias("xmlTextWriterWriteFormatDTD__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteFormatDTD
 extern __typeof (xmlTextWriterWriteFormatDTD) xmlTextWriterWriteFormatDTD__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteFormatDTD) xmlTextWriterWriteFormatDTD __attribute((alias("xmlTextWriterWriteFormatDTD__internal_alias")));
 #define xmlTextWriterWriteFormatDTD xmlTextWriterWriteFormatDTD__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteFormatDTDAttlist
+extern __typeof (xmlTextWriterWriteFormatDTDAttlist) xmlTextWriterWriteFormatDTDAttlist __attribute((alias("xmlTextWriterWriteFormatDTDAttlist__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteFormatDTDAttlist
 extern __typeof (xmlTextWriterWriteFormatDTDAttlist) xmlTextWriterWriteFormatDTDAttlist__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteFormatDTDAttlist) xmlTextWriterWriteFormatDTDAttlist __attribute((alias("xmlTextWriterWriteFormatDTDAttlist__internal_alias")));
 #define xmlTextWriterWriteFormatDTDAttlist xmlTextWriterWriteFormatDTDAttlist__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteFormatDTDElement
+extern __typeof (xmlTextWriterWriteFormatDTDElement) xmlTextWriterWriteFormatDTDElement __attribute((alias("xmlTextWriterWriteFormatDTDElement__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteFormatDTDElement
 extern __typeof (xmlTextWriterWriteFormatDTDElement) xmlTextWriterWriteFormatDTDElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteFormatDTDElement) xmlTextWriterWriteFormatDTDElement __attribute((alias("xmlTextWriterWriteFormatDTDElement__internal_alias")));
 #define xmlTextWriterWriteFormatDTDElement xmlTextWriterWriteFormatDTDElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteFormatDTDInternalEntity
+extern __typeof (xmlTextWriterWriteFormatDTDInternalEntity) xmlTextWriterWriteFormatDTDInternalEntity __attribute((alias("xmlTextWriterWriteFormatDTDInternalEntity__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteFormatDTDInternalEntity
 extern __typeof (xmlTextWriterWriteFormatDTDInternalEntity) xmlTextWriterWriteFormatDTDInternalEntity__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteFormatDTDInternalEntity) xmlTextWriterWriteFormatDTDInternalEntity __attribute((alias("xmlTextWriterWriteFormatDTDInternalEntity__internal_alias")));
 #define xmlTextWriterWriteFormatDTDInternalEntity xmlTextWriterWriteFormatDTDInternalEntity__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteFormatElement
+extern __typeof (xmlTextWriterWriteFormatElement) xmlTextWriterWriteFormatElement __attribute((alias("xmlTextWriterWriteFormatElement__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteFormatElement
 extern __typeof (xmlTextWriterWriteFormatElement) xmlTextWriterWriteFormatElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteFormatElement) xmlTextWriterWriteFormatElement __attribute((alias("xmlTextWriterWriteFormatElement__internal_alias")));
 #define xmlTextWriterWriteFormatElement xmlTextWriterWriteFormatElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteFormatElementNS
+extern __typeof (xmlTextWriterWriteFormatElementNS) xmlTextWriterWriteFormatElementNS __attribute((alias("xmlTextWriterWriteFormatElementNS__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteFormatElementNS
 extern __typeof (xmlTextWriterWriteFormatElementNS) xmlTextWriterWriteFormatElementNS__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteFormatElementNS) xmlTextWriterWriteFormatElementNS __attribute((alias("xmlTextWriterWriteFormatElementNS__internal_alias")));
 #define xmlTextWriterWriteFormatElementNS xmlTextWriterWriteFormatElementNS__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteFormatPI
+extern __typeof (xmlTextWriterWriteFormatPI) xmlTextWriterWriteFormatPI __attribute((alias("xmlTextWriterWriteFormatPI__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteFormatPI
 extern __typeof (xmlTextWriterWriteFormatPI) xmlTextWriterWriteFormatPI__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteFormatPI) xmlTextWriterWriteFormatPI __attribute((alias("xmlTextWriterWriteFormatPI__internal_alias")));
 #define xmlTextWriterWriteFormatPI xmlTextWriterWriteFormatPI__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteFormatRaw
+extern __typeof (xmlTextWriterWriteFormatRaw) xmlTextWriterWriteFormatRaw __attribute((alias("xmlTextWriterWriteFormatRaw__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteFormatRaw
 extern __typeof (xmlTextWriterWriteFormatRaw) xmlTextWriterWriteFormatRaw__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteFormatRaw) xmlTextWriterWriteFormatRaw __attribute((alias("xmlTextWriterWriteFormatRaw__internal_alias")));
 #define xmlTextWriterWriteFormatRaw xmlTextWriterWriteFormatRaw__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteFormatString
+extern __typeof (xmlTextWriterWriteFormatString) xmlTextWriterWriteFormatString __attribute((alias("xmlTextWriterWriteFormatString__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteFormatString
 extern __typeof (xmlTextWriterWriteFormatString) xmlTextWriterWriteFormatString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteFormatString) xmlTextWriterWriteFormatString __attribute((alias("xmlTextWriterWriteFormatString__internal_alias")));
 #define xmlTextWriterWriteFormatString xmlTextWriterWriteFormatString__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWritePI
+extern __typeof (xmlTextWriterWritePI) xmlTextWriterWritePI __attribute((alias("xmlTextWriterWritePI__internal_alias")));
+#else
+#ifndef xmlTextWriterWritePI
 extern __typeof (xmlTextWriterWritePI) xmlTextWriterWritePI__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWritePI) xmlTextWriterWritePI __attribute((alias("xmlTextWriterWritePI__internal_alias")));
 #define xmlTextWriterWritePI xmlTextWriterWritePI__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteRaw
+extern __typeof (xmlTextWriterWriteRaw) xmlTextWriterWriteRaw __attribute((alias("xmlTextWriterWriteRaw__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteRaw
 extern __typeof (xmlTextWriterWriteRaw) xmlTextWriterWriteRaw__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteRaw) xmlTextWriterWriteRaw __attribute((alias("xmlTextWriterWriteRaw__internal_alias")));
 #define xmlTextWriterWriteRaw xmlTextWriterWriteRaw__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteRawLen
+extern __typeof (xmlTextWriterWriteRawLen) xmlTextWriterWriteRawLen __attribute((alias("xmlTextWriterWriteRawLen__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteRawLen
 extern __typeof (xmlTextWriterWriteRawLen) xmlTextWriterWriteRawLen__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteRawLen) xmlTextWriterWriteRawLen __attribute((alias("xmlTextWriterWriteRawLen__internal_alias")));
 #define xmlTextWriterWriteRawLen xmlTextWriterWriteRawLen__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteString
+extern __typeof (xmlTextWriterWriteString) xmlTextWriterWriteString __attribute((alias("xmlTextWriterWriteString__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteString
 extern __typeof (xmlTextWriterWriteString) xmlTextWriterWriteString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteString) xmlTextWriterWriteString __attribute((alias("xmlTextWriterWriteString__internal_alias")));
 #define xmlTextWriterWriteString xmlTextWriterWriteString__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteVFormatAttribute
+extern __typeof (xmlTextWriterWriteVFormatAttribute) xmlTextWriterWriteVFormatAttribute __attribute((alias("xmlTextWriterWriteVFormatAttribute__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteVFormatAttribute
 extern __typeof (xmlTextWriterWriteVFormatAttribute) xmlTextWriterWriteVFormatAttribute__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteVFormatAttribute) xmlTextWriterWriteVFormatAttribute __attribute((alias("xmlTextWriterWriteVFormatAttribute__internal_alias")));
 #define xmlTextWriterWriteVFormatAttribute xmlTextWriterWriteVFormatAttribute__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteVFormatAttributeNS
+extern __typeof (xmlTextWriterWriteVFormatAttributeNS) xmlTextWriterWriteVFormatAttributeNS __attribute((alias("xmlTextWriterWriteVFormatAttributeNS__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteVFormatAttributeNS
 extern __typeof (xmlTextWriterWriteVFormatAttributeNS) xmlTextWriterWriteVFormatAttributeNS__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteVFormatAttributeNS) xmlTextWriterWriteVFormatAttributeNS __attribute((alias("xmlTextWriterWriteVFormatAttributeNS__internal_alias")));
 #define xmlTextWriterWriteVFormatAttributeNS xmlTextWriterWriteVFormatAttributeNS__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteVFormatCDATA
+extern __typeof (xmlTextWriterWriteVFormatCDATA) xmlTextWriterWriteVFormatCDATA __attribute((alias("xmlTextWriterWriteVFormatCDATA__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteVFormatCDATA
 extern __typeof (xmlTextWriterWriteVFormatCDATA) xmlTextWriterWriteVFormatCDATA__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteVFormatCDATA) xmlTextWriterWriteVFormatCDATA __attribute((alias("xmlTextWriterWriteVFormatCDATA__internal_alias")));
 #define xmlTextWriterWriteVFormatCDATA xmlTextWriterWriteVFormatCDATA__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteVFormatComment
+extern __typeof (xmlTextWriterWriteVFormatComment) xmlTextWriterWriteVFormatComment __attribute((alias("xmlTextWriterWriteVFormatComment__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteVFormatComment
 extern __typeof (xmlTextWriterWriteVFormatComment) xmlTextWriterWriteVFormatComment__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteVFormatComment) xmlTextWriterWriteVFormatComment __attribute((alias("xmlTextWriterWriteVFormatComment__internal_alias")));
 #define xmlTextWriterWriteVFormatComment xmlTextWriterWriteVFormatComment__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteVFormatDTD
+extern __typeof (xmlTextWriterWriteVFormatDTD) xmlTextWriterWriteVFormatDTD __attribute((alias("xmlTextWriterWriteVFormatDTD__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteVFormatDTD
 extern __typeof (xmlTextWriterWriteVFormatDTD) xmlTextWriterWriteVFormatDTD__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteVFormatDTD) xmlTextWriterWriteVFormatDTD __attribute((alias("xmlTextWriterWriteVFormatDTD__internal_alias")));
 #define xmlTextWriterWriteVFormatDTD xmlTextWriterWriteVFormatDTD__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteVFormatDTDAttlist
+extern __typeof (xmlTextWriterWriteVFormatDTDAttlist) xmlTextWriterWriteVFormatDTDAttlist __attribute((alias("xmlTextWriterWriteVFormatDTDAttlist__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteVFormatDTDAttlist
 extern __typeof (xmlTextWriterWriteVFormatDTDAttlist) xmlTextWriterWriteVFormatDTDAttlist__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteVFormatDTDAttlist) xmlTextWriterWriteVFormatDTDAttlist __attribute((alias("xmlTextWriterWriteVFormatDTDAttlist__internal_alias")));
 #define xmlTextWriterWriteVFormatDTDAttlist xmlTextWriterWriteVFormatDTDAttlist__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteVFormatDTDElement
+extern __typeof (xmlTextWriterWriteVFormatDTDElement) xmlTextWriterWriteVFormatDTDElement __attribute((alias("xmlTextWriterWriteVFormatDTDElement__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteVFormatDTDElement
 extern __typeof (xmlTextWriterWriteVFormatDTDElement) xmlTextWriterWriteVFormatDTDElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteVFormatDTDElement) xmlTextWriterWriteVFormatDTDElement __attribute((alias("xmlTextWriterWriteVFormatDTDElement__internal_alias")));
 #define xmlTextWriterWriteVFormatDTDElement xmlTextWriterWriteVFormatDTDElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteVFormatDTDInternalEntity
+extern __typeof (xmlTextWriterWriteVFormatDTDInternalEntity) xmlTextWriterWriteVFormatDTDInternalEntity __attribute((alias("xmlTextWriterWriteVFormatDTDInternalEntity__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteVFormatDTDInternalEntity
 extern __typeof (xmlTextWriterWriteVFormatDTDInternalEntity) xmlTextWriterWriteVFormatDTDInternalEntity__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteVFormatDTDInternalEntity) xmlTextWriterWriteVFormatDTDInternalEntity __attribute((alias("xmlTextWriterWriteVFormatDTDInternalEntity__internal_alias")));
 #define xmlTextWriterWriteVFormatDTDInternalEntity xmlTextWriterWriteVFormatDTDInternalEntity__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteVFormatElement
+extern __typeof (xmlTextWriterWriteVFormatElement) xmlTextWriterWriteVFormatElement __attribute((alias("xmlTextWriterWriteVFormatElement__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteVFormatElement
 extern __typeof (xmlTextWriterWriteVFormatElement) xmlTextWriterWriteVFormatElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteVFormatElement) xmlTextWriterWriteVFormatElement __attribute((alias("xmlTextWriterWriteVFormatElement__internal_alias")));
 #define xmlTextWriterWriteVFormatElement xmlTextWriterWriteVFormatElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteVFormatElementNS
+extern __typeof (xmlTextWriterWriteVFormatElementNS) xmlTextWriterWriteVFormatElementNS __attribute((alias("xmlTextWriterWriteVFormatElementNS__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteVFormatElementNS
 extern __typeof (xmlTextWriterWriteVFormatElementNS) xmlTextWriterWriteVFormatElementNS__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteVFormatElementNS) xmlTextWriterWriteVFormatElementNS __attribute((alias("xmlTextWriterWriteVFormatElementNS__internal_alias")));
 #define xmlTextWriterWriteVFormatElementNS xmlTextWriterWriteVFormatElementNS__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteVFormatPI
+extern __typeof (xmlTextWriterWriteVFormatPI) xmlTextWriterWriteVFormatPI __attribute((alias("xmlTextWriterWriteVFormatPI__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteVFormatPI
 extern __typeof (xmlTextWriterWriteVFormatPI) xmlTextWriterWriteVFormatPI__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteVFormatPI) xmlTextWriterWriteVFormatPI __attribute((alias("xmlTextWriterWriteVFormatPI__internal_alias")));
 #define xmlTextWriterWriteVFormatPI xmlTextWriterWriteVFormatPI__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteVFormatRaw
+extern __typeof (xmlTextWriterWriteVFormatRaw) xmlTextWriterWriteVFormatRaw __attribute((alias("xmlTextWriterWriteVFormatRaw__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteVFormatRaw
 extern __typeof (xmlTextWriterWriteVFormatRaw) xmlTextWriterWriteVFormatRaw__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteVFormatRaw) xmlTextWriterWriteVFormatRaw __attribute((alias("xmlTextWriterWriteVFormatRaw__internal_alias")));
 #define xmlTextWriterWriteVFormatRaw xmlTextWriterWriteVFormatRaw__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_WRITER_ENABLED)
+#ifdef bottom_xmlwriter
+#undef xmlTextWriterWriteVFormatString
+extern __typeof (xmlTextWriterWriteVFormatString) xmlTextWriterWriteVFormatString __attribute((alias("xmlTextWriterWriteVFormatString__internal_alias")));
+#else
+#ifndef xmlTextWriterWriteVFormatString
 extern __typeof (xmlTextWriterWriteVFormatString) xmlTextWriterWriteVFormatString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlTextWriterWriteVFormatString) xmlTextWriterWriteVFormatString __attribute((alias("xmlTextWriterWriteVFormatString__internal_alias")));
 #define xmlTextWriterWriteVFormatString xmlTextWriterWriteVFormatString__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlThrDefBufferAllocScheme
+extern __typeof (xmlThrDefBufferAllocScheme) xmlThrDefBufferAllocScheme __attribute((alias("xmlThrDefBufferAllocScheme__internal_alias")));
+#else
+#ifndef xmlThrDefBufferAllocScheme
 extern __typeof (xmlThrDefBufferAllocScheme) xmlThrDefBufferAllocScheme__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlThrDefBufferAllocScheme) xmlThrDefBufferAllocScheme __attribute((alias("xmlThrDefBufferAllocScheme__internal_alias")));
 #define xmlThrDefBufferAllocScheme xmlThrDefBufferAllocScheme__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlThrDefDefaultBufferSize
+extern __typeof (xmlThrDefDefaultBufferSize) xmlThrDefDefaultBufferSize __attribute((alias("xmlThrDefDefaultBufferSize__internal_alias")));
+#else
+#ifndef xmlThrDefDefaultBufferSize
 extern __typeof (xmlThrDefDefaultBufferSize) xmlThrDefDefaultBufferSize__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlThrDefDefaultBufferSize) xmlThrDefDefaultBufferSize __attribute((alias("xmlThrDefDefaultBufferSize__internal_alias")));
 #define xmlThrDefDefaultBufferSize xmlThrDefDefaultBufferSize__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlThrDefDeregisterNodeDefault
+extern __typeof (xmlThrDefDeregisterNodeDefault) xmlThrDefDeregisterNodeDefault __attribute((alias("xmlThrDefDeregisterNodeDefault__internal_alias")));
+#else
+#ifndef xmlThrDefDeregisterNodeDefault
 extern __typeof (xmlThrDefDeregisterNodeDefault) xmlThrDefDeregisterNodeDefault__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlThrDefDeregisterNodeDefault) xmlThrDefDeregisterNodeDefault __attribute((alias("xmlThrDefDeregisterNodeDefault__internal_alias")));
 #define xmlThrDefDeregisterNodeDefault xmlThrDefDeregisterNodeDefault__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlThrDefDoValidityCheckingDefaultValue
+extern __typeof (xmlThrDefDoValidityCheckingDefaultValue) xmlThrDefDoValidityCheckingDefaultValue __attribute((alias("xmlThrDefDoValidityCheckingDefaultValue__internal_alias")));
+#else
+#ifndef xmlThrDefDoValidityCheckingDefaultValue
 extern __typeof (xmlThrDefDoValidityCheckingDefaultValue) xmlThrDefDoValidityCheckingDefaultValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlThrDefDoValidityCheckingDefaultValue) xmlThrDefDoValidityCheckingDefaultValue __attribute((alias("xmlThrDefDoValidityCheckingDefaultValue__internal_alias")));
 #define xmlThrDefDoValidityCheckingDefaultValue xmlThrDefDoValidityCheckingDefaultValue__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlThrDefGetWarningsDefaultValue
+extern __typeof (xmlThrDefGetWarningsDefaultValue) xmlThrDefGetWarningsDefaultValue __attribute((alias("xmlThrDefGetWarningsDefaultValue__internal_alias")));
+#else
+#ifndef xmlThrDefGetWarningsDefaultValue
 extern __typeof (xmlThrDefGetWarningsDefaultValue) xmlThrDefGetWarningsDefaultValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlThrDefGetWarningsDefaultValue) xmlThrDefGetWarningsDefaultValue __attribute((alias("xmlThrDefGetWarningsDefaultValue__internal_alias")));
 #define xmlThrDefGetWarningsDefaultValue xmlThrDefGetWarningsDefaultValue__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlThrDefIndentTreeOutput
+extern __typeof (xmlThrDefIndentTreeOutput) xmlThrDefIndentTreeOutput __attribute((alias("xmlThrDefIndentTreeOutput__internal_alias")));
+#else
+#ifndef xmlThrDefIndentTreeOutput
 extern __typeof (xmlThrDefIndentTreeOutput) xmlThrDefIndentTreeOutput__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlThrDefIndentTreeOutput) xmlThrDefIndentTreeOutput __attribute((alias("xmlThrDefIndentTreeOutput__internal_alias")));
 #define xmlThrDefIndentTreeOutput xmlThrDefIndentTreeOutput__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlThrDefKeepBlanksDefaultValue
+extern __typeof (xmlThrDefKeepBlanksDefaultValue) xmlThrDefKeepBlanksDefaultValue __attribute((alias("xmlThrDefKeepBlanksDefaultValue__internal_alias")));
+#else
+#ifndef xmlThrDefKeepBlanksDefaultValue
 extern __typeof (xmlThrDefKeepBlanksDefaultValue) xmlThrDefKeepBlanksDefaultValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlThrDefKeepBlanksDefaultValue) xmlThrDefKeepBlanksDefaultValue __attribute((alias("xmlThrDefKeepBlanksDefaultValue__internal_alias")));
 #define xmlThrDefKeepBlanksDefaultValue xmlThrDefKeepBlanksDefaultValue__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlThrDefLineNumbersDefaultValue
+extern __typeof (xmlThrDefLineNumbersDefaultValue) xmlThrDefLineNumbersDefaultValue __attribute((alias("xmlThrDefLineNumbersDefaultValue__internal_alias")));
+#else
+#ifndef xmlThrDefLineNumbersDefaultValue
 extern __typeof (xmlThrDefLineNumbersDefaultValue) xmlThrDefLineNumbersDefaultValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlThrDefLineNumbersDefaultValue) xmlThrDefLineNumbersDefaultValue __attribute((alias("xmlThrDefLineNumbersDefaultValue__internal_alias")));
 #define xmlThrDefLineNumbersDefaultValue xmlThrDefLineNumbersDefaultValue__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlThrDefLoadExtDtdDefaultValue
+extern __typeof (xmlThrDefLoadExtDtdDefaultValue) xmlThrDefLoadExtDtdDefaultValue __attribute((alias("xmlThrDefLoadExtDtdDefaultValue__internal_alias")));
+#else
+#ifndef xmlThrDefLoadExtDtdDefaultValue
 extern __typeof (xmlThrDefLoadExtDtdDefaultValue) xmlThrDefLoadExtDtdDefaultValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlThrDefLoadExtDtdDefaultValue) xmlThrDefLoadExtDtdDefaultValue __attribute((alias("xmlThrDefLoadExtDtdDefaultValue__internal_alias")));
 #define xmlThrDefLoadExtDtdDefaultValue xmlThrDefLoadExtDtdDefaultValue__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlThrDefOutputBufferCreateFilenameDefault
+extern __typeof (xmlThrDefOutputBufferCreateFilenameDefault) xmlThrDefOutputBufferCreateFilenameDefault __attribute((alias("xmlThrDefOutputBufferCreateFilenameDefault__internal_alias")));
+#else
+#ifndef xmlThrDefOutputBufferCreateFilenameDefault
 extern __typeof (xmlThrDefOutputBufferCreateFilenameDefault) xmlThrDefOutputBufferCreateFilenameDefault__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlThrDefOutputBufferCreateFilenameDefault) xmlThrDefOutputBufferCreateFilenameDefault __attribute((alias("xmlThrDefOutputBufferCreateFilenameDefault__internal_alias")));
 #define xmlThrDefOutputBufferCreateFilenameDefault xmlThrDefOutputBufferCreateFilenameDefault__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlThrDefParserDebugEntities
+extern __typeof (xmlThrDefParserDebugEntities) xmlThrDefParserDebugEntities __attribute((alias("xmlThrDefParserDebugEntities__internal_alias")));
+#else
+#ifndef xmlThrDefParserDebugEntities
 extern __typeof (xmlThrDefParserDebugEntities) xmlThrDefParserDebugEntities__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlThrDefParserDebugEntities) xmlThrDefParserDebugEntities __attribute((alias("xmlThrDefParserDebugEntities__internal_alias")));
 #define xmlThrDefParserDebugEntities xmlThrDefParserDebugEntities__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlThrDefParserInputBufferCreateFilenameDefault
+extern __typeof (xmlThrDefParserInputBufferCreateFilenameDefault) xmlThrDefParserInputBufferCreateFilenameDefault __attribute((alias("xmlThrDefParserInputBufferCreateFilenameDefault__internal_alias")));
+#else
+#ifndef xmlThrDefParserInputBufferCreateFilenameDefault
 extern __typeof (xmlThrDefParserInputBufferCreateFilenameDefault) xmlThrDefParserInputBufferCreateFilenameDefault__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlThrDefParserInputBufferCreateFilenameDefault) xmlThrDefParserInputBufferCreateFilenameDefault __attribute((alias("xmlThrDefParserInputBufferCreateFilenameDefault__internal_alias")));
 #define xmlThrDefParserInputBufferCreateFilenameDefault xmlThrDefParserInputBufferCreateFilenameDefault__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlThrDefPedanticParserDefaultValue
+extern __typeof (xmlThrDefPedanticParserDefaultValue) xmlThrDefPedanticParserDefaultValue __attribute((alias("xmlThrDefPedanticParserDefaultValue__internal_alias")));
+#else
+#ifndef xmlThrDefPedanticParserDefaultValue
 extern __typeof (xmlThrDefPedanticParserDefaultValue) xmlThrDefPedanticParserDefaultValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlThrDefPedanticParserDefaultValue) xmlThrDefPedanticParserDefaultValue __attribute((alias("xmlThrDefPedanticParserDefaultValue__internal_alias")));
 #define xmlThrDefPedanticParserDefaultValue xmlThrDefPedanticParserDefaultValue__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlThrDefRegisterNodeDefault
+extern __typeof (xmlThrDefRegisterNodeDefault) xmlThrDefRegisterNodeDefault __attribute((alias("xmlThrDefRegisterNodeDefault__internal_alias")));
+#else
+#ifndef xmlThrDefRegisterNodeDefault
 extern __typeof (xmlThrDefRegisterNodeDefault) xmlThrDefRegisterNodeDefault__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlThrDefRegisterNodeDefault) xmlThrDefRegisterNodeDefault __attribute((alias("xmlThrDefRegisterNodeDefault__internal_alias")));
 #define xmlThrDefRegisterNodeDefault xmlThrDefRegisterNodeDefault__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlThrDefSaveNoEmptyTags
+extern __typeof (xmlThrDefSaveNoEmptyTags) xmlThrDefSaveNoEmptyTags __attribute((alias("xmlThrDefSaveNoEmptyTags__internal_alias")));
+#else
+#ifndef xmlThrDefSaveNoEmptyTags
 extern __typeof (xmlThrDefSaveNoEmptyTags) xmlThrDefSaveNoEmptyTags__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlThrDefSaveNoEmptyTags) xmlThrDefSaveNoEmptyTags __attribute((alias("xmlThrDefSaveNoEmptyTags__internal_alias")));
 #define xmlThrDefSaveNoEmptyTags xmlThrDefSaveNoEmptyTags__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlThrDefSetGenericErrorFunc
+extern __typeof (xmlThrDefSetGenericErrorFunc) xmlThrDefSetGenericErrorFunc __attribute((alias("xmlThrDefSetGenericErrorFunc__internal_alias")));
+#else
+#ifndef xmlThrDefSetGenericErrorFunc
 extern __typeof (xmlThrDefSetGenericErrorFunc) xmlThrDefSetGenericErrorFunc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlThrDefSetGenericErrorFunc) xmlThrDefSetGenericErrorFunc __attribute((alias("xmlThrDefSetGenericErrorFunc__internal_alias")));
 #define xmlThrDefSetGenericErrorFunc xmlThrDefSetGenericErrorFunc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlThrDefSetStructuredErrorFunc
+extern __typeof (xmlThrDefSetStructuredErrorFunc) xmlThrDefSetStructuredErrorFunc __attribute((alias("xmlThrDefSetStructuredErrorFunc__internal_alias")));
+#else
+#ifndef xmlThrDefSetStructuredErrorFunc
 extern __typeof (xmlThrDefSetStructuredErrorFunc) xmlThrDefSetStructuredErrorFunc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlThrDefSetStructuredErrorFunc) xmlThrDefSetStructuredErrorFunc __attribute((alias("xmlThrDefSetStructuredErrorFunc__internal_alias")));
 #define xmlThrDefSetStructuredErrorFunc xmlThrDefSetStructuredErrorFunc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlThrDefSubstituteEntitiesDefaultValue
+extern __typeof (xmlThrDefSubstituteEntitiesDefaultValue) xmlThrDefSubstituteEntitiesDefaultValue __attribute((alias("xmlThrDefSubstituteEntitiesDefaultValue__internal_alias")));
+#else
+#ifndef xmlThrDefSubstituteEntitiesDefaultValue
 extern __typeof (xmlThrDefSubstituteEntitiesDefaultValue) xmlThrDefSubstituteEntitiesDefaultValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlThrDefSubstituteEntitiesDefaultValue) xmlThrDefSubstituteEntitiesDefaultValue __attribute((alias("xmlThrDefSubstituteEntitiesDefaultValue__internal_alias")));
 #define xmlThrDefSubstituteEntitiesDefaultValue xmlThrDefSubstituteEntitiesDefaultValue__internal_alias
+#endif
+#endif
 
+#ifdef bottom_globals
+#undef xmlThrDefTreeIndentString
+extern __typeof (xmlThrDefTreeIndentString) xmlThrDefTreeIndentString __attribute((alias("xmlThrDefTreeIndentString__internal_alias")));
+#else
+#ifndef xmlThrDefTreeIndentString
 extern __typeof (xmlThrDefTreeIndentString) xmlThrDefTreeIndentString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlThrDefTreeIndentString) xmlThrDefTreeIndentString __attribute((alias("xmlThrDefTreeIndentString__internal_alias")));
 #define xmlThrDefTreeIndentString xmlThrDefTreeIndentString__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsAegeanNumbers
+extern __typeof (xmlUCSIsAegeanNumbers) xmlUCSIsAegeanNumbers __attribute((alias("xmlUCSIsAegeanNumbers__internal_alias")));
+#else
+#ifndef xmlUCSIsAegeanNumbers
 extern __typeof (xmlUCSIsAegeanNumbers) xmlUCSIsAegeanNumbers__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsAegeanNumbers) xmlUCSIsAegeanNumbers __attribute((alias("xmlUCSIsAegeanNumbers__internal_alias")));
 #define xmlUCSIsAegeanNumbers xmlUCSIsAegeanNumbers__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsAlphabeticPresentationForms
+extern __typeof (xmlUCSIsAlphabeticPresentationForms) xmlUCSIsAlphabeticPresentationForms __attribute((alias("xmlUCSIsAlphabeticPresentationForms__internal_alias")));
+#else
+#ifndef xmlUCSIsAlphabeticPresentationForms
 extern __typeof (xmlUCSIsAlphabeticPresentationForms) xmlUCSIsAlphabeticPresentationForms__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsAlphabeticPresentationForms) xmlUCSIsAlphabeticPresentationForms __attribute((alias("xmlUCSIsAlphabeticPresentationForms__internal_alias")));
 #define xmlUCSIsAlphabeticPresentationForms xmlUCSIsAlphabeticPresentationForms__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsArabic
+extern __typeof (xmlUCSIsArabic) xmlUCSIsArabic __attribute((alias("xmlUCSIsArabic__internal_alias")));
+#else
+#ifndef xmlUCSIsArabic
 extern __typeof (xmlUCSIsArabic) xmlUCSIsArabic__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsArabic) xmlUCSIsArabic __attribute((alias("xmlUCSIsArabic__internal_alias")));
 #define xmlUCSIsArabic xmlUCSIsArabic__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsArabicPresentationFormsA
+extern __typeof (xmlUCSIsArabicPresentationFormsA) xmlUCSIsArabicPresentationFormsA __attribute((alias("xmlUCSIsArabicPresentationFormsA__internal_alias")));
+#else
+#ifndef xmlUCSIsArabicPresentationFormsA
 extern __typeof (xmlUCSIsArabicPresentationFormsA) xmlUCSIsArabicPresentationFormsA__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsArabicPresentationFormsA) xmlUCSIsArabicPresentationFormsA __attribute((alias("xmlUCSIsArabicPresentationFormsA__internal_alias")));
 #define xmlUCSIsArabicPresentationFormsA xmlUCSIsArabicPresentationFormsA__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsArabicPresentationFormsB
+extern __typeof (xmlUCSIsArabicPresentationFormsB) xmlUCSIsArabicPresentationFormsB __attribute((alias("xmlUCSIsArabicPresentationFormsB__internal_alias")));
+#else
+#ifndef xmlUCSIsArabicPresentationFormsB
 extern __typeof (xmlUCSIsArabicPresentationFormsB) xmlUCSIsArabicPresentationFormsB__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsArabicPresentationFormsB) xmlUCSIsArabicPresentationFormsB __attribute((alias("xmlUCSIsArabicPresentationFormsB__internal_alias")));
 #define xmlUCSIsArabicPresentationFormsB xmlUCSIsArabicPresentationFormsB__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsArmenian
+extern __typeof (xmlUCSIsArmenian) xmlUCSIsArmenian __attribute((alias("xmlUCSIsArmenian__internal_alias")));
+#else
+#ifndef xmlUCSIsArmenian
 extern __typeof (xmlUCSIsArmenian) xmlUCSIsArmenian__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsArmenian) xmlUCSIsArmenian __attribute((alias("xmlUCSIsArmenian__internal_alias")));
 #define xmlUCSIsArmenian xmlUCSIsArmenian__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsArrows
+extern __typeof (xmlUCSIsArrows) xmlUCSIsArrows __attribute((alias("xmlUCSIsArrows__internal_alias")));
+#else
+#ifndef xmlUCSIsArrows
 extern __typeof (xmlUCSIsArrows) xmlUCSIsArrows__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsArrows) xmlUCSIsArrows __attribute((alias("xmlUCSIsArrows__internal_alias")));
 #define xmlUCSIsArrows xmlUCSIsArrows__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsBasicLatin
+extern __typeof (xmlUCSIsBasicLatin) xmlUCSIsBasicLatin __attribute((alias("xmlUCSIsBasicLatin__internal_alias")));
+#else
+#ifndef xmlUCSIsBasicLatin
 extern __typeof (xmlUCSIsBasicLatin) xmlUCSIsBasicLatin__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsBasicLatin) xmlUCSIsBasicLatin __attribute((alias("xmlUCSIsBasicLatin__internal_alias")));
 #define xmlUCSIsBasicLatin xmlUCSIsBasicLatin__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsBengali
+extern __typeof (xmlUCSIsBengali) xmlUCSIsBengali __attribute((alias("xmlUCSIsBengali__internal_alias")));
+#else
+#ifndef xmlUCSIsBengali
 extern __typeof (xmlUCSIsBengali) xmlUCSIsBengali__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsBengali) xmlUCSIsBengali __attribute((alias("xmlUCSIsBengali__internal_alias")));
 #define xmlUCSIsBengali xmlUCSIsBengali__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsBlock
+extern __typeof (xmlUCSIsBlock) xmlUCSIsBlock __attribute((alias("xmlUCSIsBlock__internal_alias")));
+#else
+#ifndef xmlUCSIsBlock
 extern __typeof (xmlUCSIsBlock) xmlUCSIsBlock__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsBlock) xmlUCSIsBlock __attribute((alias("xmlUCSIsBlock__internal_alias")));
 #define xmlUCSIsBlock xmlUCSIsBlock__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsBlockElements
+extern __typeof (xmlUCSIsBlockElements) xmlUCSIsBlockElements __attribute((alias("xmlUCSIsBlockElements__internal_alias")));
+#else
+#ifndef xmlUCSIsBlockElements
 extern __typeof (xmlUCSIsBlockElements) xmlUCSIsBlockElements__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsBlockElements) xmlUCSIsBlockElements __attribute((alias("xmlUCSIsBlockElements__internal_alias")));
 #define xmlUCSIsBlockElements xmlUCSIsBlockElements__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsBopomofo
+extern __typeof (xmlUCSIsBopomofo) xmlUCSIsBopomofo __attribute((alias("xmlUCSIsBopomofo__internal_alias")));
+#else
+#ifndef xmlUCSIsBopomofo
 extern __typeof (xmlUCSIsBopomofo) xmlUCSIsBopomofo__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsBopomofo) xmlUCSIsBopomofo __attribute((alias("xmlUCSIsBopomofo__internal_alias")));
 #define xmlUCSIsBopomofo xmlUCSIsBopomofo__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsBopomofoExtended
+extern __typeof (xmlUCSIsBopomofoExtended) xmlUCSIsBopomofoExtended __attribute((alias("xmlUCSIsBopomofoExtended__internal_alias")));
+#else
+#ifndef xmlUCSIsBopomofoExtended
 extern __typeof (xmlUCSIsBopomofoExtended) xmlUCSIsBopomofoExtended__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsBopomofoExtended) xmlUCSIsBopomofoExtended __attribute((alias("xmlUCSIsBopomofoExtended__internal_alias")));
 #define xmlUCSIsBopomofoExtended xmlUCSIsBopomofoExtended__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsBoxDrawing
+extern __typeof (xmlUCSIsBoxDrawing) xmlUCSIsBoxDrawing __attribute((alias("xmlUCSIsBoxDrawing__internal_alias")));
+#else
+#ifndef xmlUCSIsBoxDrawing
 extern __typeof (xmlUCSIsBoxDrawing) xmlUCSIsBoxDrawing__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsBoxDrawing) xmlUCSIsBoxDrawing __attribute((alias("xmlUCSIsBoxDrawing__internal_alias")));
 #define xmlUCSIsBoxDrawing xmlUCSIsBoxDrawing__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsBraillePatterns
+extern __typeof (xmlUCSIsBraillePatterns) xmlUCSIsBraillePatterns __attribute((alias("xmlUCSIsBraillePatterns__internal_alias")));
+#else
+#ifndef xmlUCSIsBraillePatterns
 extern __typeof (xmlUCSIsBraillePatterns) xmlUCSIsBraillePatterns__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsBraillePatterns) xmlUCSIsBraillePatterns __attribute((alias("xmlUCSIsBraillePatterns__internal_alias")));
 #define xmlUCSIsBraillePatterns xmlUCSIsBraillePatterns__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsBuhid
+extern __typeof (xmlUCSIsBuhid) xmlUCSIsBuhid __attribute((alias("xmlUCSIsBuhid__internal_alias")));
+#else
+#ifndef xmlUCSIsBuhid
 extern __typeof (xmlUCSIsBuhid) xmlUCSIsBuhid__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsBuhid) xmlUCSIsBuhid __attribute((alias("xmlUCSIsBuhid__internal_alias")));
 #define xmlUCSIsBuhid xmlUCSIsBuhid__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsByzantineMusicalSymbols
+extern __typeof (xmlUCSIsByzantineMusicalSymbols) xmlUCSIsByzantineMusicalSymbols __attribute((alias("xmlUCSIsByzantineMusicalSymbols__internal_alias")));
+#else
+#ifndef xmlUCSIsByzantineMusicalSymbols
 extern __typeof (xmlUCSIsByzantineMusicalSymbols) xmlUCSIsByzantineMusicalSymbols__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsByzantineMusicalSymbols) xmlUCSIsByzantineMusicalSymbols __attribute((alias("xmlUCSIsByzantineMusicalSymbols__internal_alias")));
 #define xmlUCSIsByzantineMusicalSymbols xmlUCSIsByzantineMusicalSymbols__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCJKCompatibility
+extern __typeof (xmlUCSIsCJKCompatibility) xmlUCSIsCJKCompatibility __attribute((alias("xmlUCSIsCJKCompatibility__internal_alias")));
+#else
+#ifndef xmlUCSIsCJKCompatibility
 extern __typeof (xmlUCSIsCJKCompatibility) xmlUCSIsCJKCompatibility__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCJKCompatibility) xmlUCSIsCJKCompatibility __attribute((alias("xmlUCSIsCJKCompatibility__internal_alias")));
 #define xmlUCSIsCJKCompatibility xmlUCSIsCJKCompatibility__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCJKCompatibilityForms
+extern __typeof (xmlUCSIsCJKCompatibilityForms) xmlUCSIsCJKCompatibilityForms __attribute((alias("xmlUCSIsCJKCompatibilityForms__internal_alias")));
+#else
+#ifndef xmlUCSIsCJKCompatibilityForms
 extern __typeof (xmlUCSIsCJKCompatibilityForms) xmlUCSIsCJKCompatibilityForms__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCJKCompatibilityForms) xmlUCSIsCJKCompatibilityForms __attribute((alias("xmlUCSIsCJKCompatibilityForms__internal_alias")));
 #define xmlUCSIsCJKCompatibilityForms xmlUCSIsCJKCompatibilityForms__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCJKCompatibilityIdeographs
+extern __typeof (xmlUCSIsCJKCompatibilityIdeographs) xmlUCSIsCJKCompatibilityIdeographs __attribute((alias("xmlUCSIsCJKCompatibilityIdeographs__internal_alias")));
+#else
+#ifndef xmlUCSIsCJKCompatibilityIdeographs
 extern __typeof (xmlUCSIsCJKCompatibilityIdeographs) xmlUCSIsCJKCompatibilityIdeographs__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCJKCompatibilityIdeographs) xmlUCSIsCJKCompatibilityIdeographs __attribute((alias("xmlUCSIsCJKCompatibilityIdeographs__internal_alias")));
 #define xmlUCSIsCJKCompatibilityIdeographs xmlUCSIsCJKCompatibilityIdeographs__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCJKCompatibilityIdeographsSupplement
+extern __typeof (xmlUCSIsCJKCompatibilityIdeographsSupplement) xmlUCSIsCJKCompatibilityIdeographsSupplement __attribute((alias("xmlUCSIsCJKCompatibilityIdeographsSupplement__internal_alias")));
+#else
+#ifndef xmlUCSIsCJKCompatibilityIdeographsSupplement
 extern __typeof (xmlUCSIsCJKCompatibilityIdeographsSupplement) xmlUCSIsCJKCompatibilityIdeographsSupplement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCJKCompatibilityIdeographsSupplement) xmlUCSIsCJKCompatibilityIdeographsSupplement __attribute((alias("xmlUCSIsCJKCompatibilityIdeographsSupplement__internal_alias")));
 #define xmlUCSIsCJKCompatibilityIdeographsSupplement xmlUCSIsCJKCompatibilityIdeographsSupplement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCJKRadicalsSupplement
+extern __typeof (xmlUCSIsCJKRadicalsSupplement) xmlUCSIsCJKRadicalsSupplement __attribute((alias("xmlUCSIsCJKRadicalsSupplement__internal_alias")));
+#else
+#ifndef xmlUCSIsCJKRadicalsSupplement
 extern __typeof (xmlUCSIsCJKRadicalsSupplement) xmlUCSIsCJKRadicalsSupplement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCJKRadicalsSupplement) xmlUCSIsCJKRadicalsSupplement __attribute((alias("xmlUCSIsCJKRadicalsSupplement__internal_alias")));
 #define xmlUCSIsCJKRadicalsSupplement xmlUCSIsCJKRadicalsSupplement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCJKSymbolsandPunctuation
+extern __typeof (xmlUCSIsCJKSymbolsandPunctuation) xmlUCSIsCJKSymbolsandPunctuation __attribute((alias("xmlUCSIsCJKSymbolsandPunctuation__internal_alias")));
+#else
+#ifndef xmlUCSIsCJKSymbolsandPunctuation
 extern __typeof (xmlUCSIsCJKSymbolsandPunctuation) xmlUCSIsCJKSymbolsandPunctuation__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCJKSymbolsandPunctuation) xmlUCSIsCJKSymbolsandPunctuation __attribute((alias("xmlUCSIsCJKSymbolsandPunctuation__internal_alias")));
 #define xmlUCSIsCJKSymbolsandPunctuation xmlUCSIsCJKSymbolsandPunctuation__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCJKUnifiedIdeographs
+extern __typeof (xmlUCSIsCJKUnifiedIdeographs) xmlUCSIsCJKUnifiedIdeographs __attribute((alias("xmlUCSIsCJKUnifiedIdeographs__internal_alias")));
+#else
+#ifndef xmlUCSIsCJKUnifiedIdeographs
 extern __typeof (xmlUCSIsCJKUnifiedIdeographs) xmlUCSIsCJKUnifiedIdeographs__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCJKUnifiedIdeographs) xmlUCSIsCJKUnifiedIdeographs __attribute((alias("xmlUCSIsCJKUnifiedIdeographs__internal_alias")));
 #define xmlUCSIsCJKUnifiedIdeographs xmlUCSIsCJKUnifiedIdeographs__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCJKUnifiedIdeographsExtensionA
+extern __typeof (xmlUCSIsCJKUnifiedIdeographsExtensionA) xmlUCSIsCJKUnifiedIdeographsExtensionA __attribute((alias("xmlUCSIsCJKUnifiedIdeographsExtensionA__internal_alias")));
+#else
+#ifndef xmlUCSIsCJKUnifiedIdeographsExtensionA
 extern __typeof (xmlUCSIsCJKUnifiedIdeographsExtensionA) xmlUCSIsCJKUnifiedIdeographsExtensionA__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCJKUnifiedIdeographsExtensionA) xmlUCSIsCJKUnifiedIdeographsExtensionA __attribute((alias("xmlUCSIsCJKUnifiedIdeographsExtensionA__internal_alias")));
 #define xmlUCSIsCJKUnifiedIdeographsExtensionA xmlUCSIsCJKUnifiedIdeographsExtensionA__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCJKUnifiedIdeographsExtensionB
+extern __typeof (xmlUCSIsCJKUnifiedIdeographsExtensionB) xmlUCSIsCJKUnifiedIdeographsExtensionB __attribute((alias("xmlUCSIsCJKUnifiedIdeographsExtensionB__internal_alias")));
+#else
+#ifndef xmlUCSIsCJKUnifiedIdeographsExtensionB
 extern __typeof (xmlUCSIsCJKUnifiedIdeographsExtensionB) xmlUCSIsCJKUnifiedIdeographsExtensionB__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCJKUnifiedIdeographsExtensionB) xmlUCSIsCJKUnifiedIdeographsExtensionB __attribute((alias("xmlUCSIsCJKUnifiedIdeographsExtensionB__internal_alias")));
 #define xmlUCSIsCJKUnifiedIdeographsExtensionB xmlUCSIsCJKUnifiedIdeographsExtensionB__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCat
+extern __typeof (xmlUCSIsCat) xmlUCSIsCat __attribute((alias("xmlUCSIsCat__internal_alias")));
+#else
+#ifndef xmlUCSIsCat
 extern __typeof (xmlUCSIsCat) xmlUCSIsCat__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCat) xmlUCSIsCat __attribute((alias("xmlUCSIsCat__internal_alias")));
 #define xmlUCSIsCat xmlUCSIsCat__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatC
+extern __typeof (xmlUCSIsCatC) xmlUCSIsCatC __attribute((alias("xmlUCSIsCatC__internal_alias")));
+#else
+#ifndef xmlUCSIsCatC
 extern __typeof (xmlUCSIsCatC) xmlUCSIsCatC__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatC) xmlUCSIsCatC __attribute((alias("xmlUCSIsCatC__internal_alias")));
 #define xmlUCSIsCatC xmlUCSIsCatC__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatCc
+extern __typeof (xmlUCSIsCatCc) xmlUCSIsCatCc __attribute((alias("xmlUCSIsCatCc__internal_alias")));
+#else
+#ifndef xmlUCSIsCatCc
 extern __typeof (xmlUCSIsCatCc) xmlUCSIsCatCc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatCc) xmlUCSIsCatCc __attribute((alias("xmlUCSIsCatCc__internal_alias")));
 #define xmlUCSIsCatCc xmlUCSIsCatCc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatCf
+extern __typeof (xmlUCSIsCatCf) xmlUCSIsCatCf __attribute((alias("xmlUCSIsCatCf__internal_alias")));
+#else
+#ifndef xmlUCSIsCatCf
 extern __typeof (xmlUCSIsCatCf) xmlUCSIsCatCf__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatCf) xmlUCSIsCatCf __attribute((alias("xmlUCSIsCatCf__internal_alias")));
 #define xmlUCSIsCatCf xmlUCSIsCatCf__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatCo
+extern __typeof (xmlUCSIsCatCo) xmlUCSIsCatCo __attribute((alias("xmlUCSIsCatCo__internal_alias")));
+#else
+#ifndef xmlUCSIsCatCo
 extern __typeof (xmlUCSIsCatCo) xmlUCSIsCatCo__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatCo) xmlUCSIsCatCo __attribute((alias("xmlUCSIsCatCo__internal_alias")));
 #define xmlUCSIsCatCo xmlUCSIsCatCo__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatCs
+extern __typeof (xmlUCSIsCatCs) xmlUCSIsCatCs __attribute((alias("xmlUCSIsCatCs__internal_alias")));
+#else
+#ifndef xmlUCSIsCatCs
 extern __typeof (xmlUCSIsCatCs) xmlUCSIsCatCs__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatCs) xmlUCSIsCatCs __attribute((alias("xmlUCSIsCatCs__internal_alias")));
 #define xmlUCSIsCatCs xmlUCSIsCatCs__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatL
+extern __typeof (xmlUCSIsCatL) xmlUCSIsCatL __attribute((alias("xmlUCSIsCatL__internal_alias")));
+#else
+#ifndef xmlUCSIsCatL
 extern __typeof (xmlUCSIsCatL) xmlUCSIsCatL__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatL) xmlUCSIsCatL __attribute((alias("xmlUCSIsCatL__internal_alias")));
 #define xmlUCSIsCatL xmlUCSIsCatL__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatLl
+extern __typeof (xmlUCSIsCatLl) xmlUCSIsCatLl __attribute((alias("xmlUCSIsCatLl__internal_alias")));
+#else
+#ifndef xmlUCSIsCatLl
 extern __typeof (xmlUCSIsCatLl) xmlUCSIsCatLl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatLl) xmlUCSIsCatLl __attribute((alias("xmlUCSIsCatLl__internal_alias")));
 #define xmlUCSIsCatLl xmlUCSIsCatLl__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatLm
+extern __typeof (xmlUCSIsCatLm) xmlUCSIsCatLm __attribute((alias("xmlUCSIsCatLm__internal_alias")));
+#else
+#ifndef xmlUCSIsCatLm
 extern __typeof (xmlUCSIsCatLm) xmlUCSIsCatLm__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatLm) xmlUCSIsCatLm __attribute((alias("xmlUCSIsCatLm__internal_alias")));
 #define xmlUCSIsCatLm xmlUCSIsCatLm__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatLo
+extern __typeof (xmlUCSIsCatLo) xmlUCSIsCatLo __attribute((alias("xmlUCSIsCatLo__internal_alias")));
+#else
+#ifndef xmlUCSIsCatLo
 extern __typeof (xmlUCSIsCatLo) xmlUCSIsCatLo__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatLo) xmlUCSIsCatLo __attribute((alias("xmlUCSIsCatLo__internal_alias")));
 #define xmlUCSIsCatLo xmlUCSIsCatLo__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatLt
+extern __typeof (xmlUCSIsCatLt) xmlUCSIsCatLt __attribute((alias("xmlUCSIsCatLt__internal_alias")));
+#else
+#ifndef xmlUCSIsCatLt
 extern __typeof (xmlUCSIsCatLt) xmlUCSIsCatLt__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatLt) xmlUCSIsCatLt __attribute((alias("xmlUCSIsCatLt__internal_alias")));
 #define xmlUCSIsCatLt xmlUCSIsCatLt__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatLu
+extern __typeof (xmlUCSIsCatLu) xmlUCSIsCatLu __attribute((alias("xmlUCSIsCatLu__internal_alias")));
+#else
+#ifndef xmlUCSIsCatLu
 extern __typeof (xmlUCSIsCatLu) xmlUCSIsCatLu__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatLu) xmlUCSIsCatLu __attribute((alias("xmlUCSIsCatLu__internal_alias")));
 #define xmlUCSIsCatLu xmlUCSIsCatLu__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatM
+extern __typeof (xmlUCSIsCatM) xmlUCSIsCatM __attribute((alias("xmlUCSIsCatM__internal_alias")));
+#else
+#ifndef xmlUCSIsCatM
 extern __typeof (xmlUCSIsCatM) xmlUCSIsCatM__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatM) xmlUCSIsCatM __attribute((alias("xmlUCSIsCatM__internal_alias")));
 #define xmlUCSIsCatM xmlUCSIsCatM__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatMc
+extern __typeof (xmlUCSIsCatMc) xmlUCSIsCatMc __attribute((alias("xmlUCSIsCatMc__internal_alias")));
+#else
+#ifndef xmlUCSIsCatMc
 extern __typeof (xmlUCSIsCatMc) xmlUCSIsCatMc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatMc) xmlUCSIsCatMc __attribute((alias("xmlUCSIsCatMc__internal_alias")));
 #define xmlUCSIsCatMc xmlUCSIsCatMc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatMe
+extern __typeof (xmlUCSIsCatMe) xmlUCSIsCatMe __attribute((alias("xmlUCSIsCatMe__internal_alias")));
+#else
+#ifndef xmlUCSIsCatMe
 extern __typeof (xmlUCSIsCatMe) xmlUCSIsCatMe__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatMe) xmlUCSIsCatMe __attribute((alias("xmlUCSIsCatMe__internal_alias")));
 #define xmlUCSIsCatMe xmlUCSIsCatMe__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatMn
+extern __typeof (xmlUCSIsCatMn) xmlUCSIsCatMn __attribute((alias("xmlUCSIsCatMn__internal_alias")));
+#else
+#ifndef xmlUCSIsCatMn
 extern __typeof (xmlUCSIsCatMn) xmlUCSIsCatMn__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatMn) xmlUCSIsCatMn __attribute((alias("xmlUCSIsCatMn__internal_alias")));
 #define xmlUCSIsCatMn xmlUCSIsCatMn__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatN
+extern __typeof (xmlUCSIsCatN) xmlUCSIsCatN __attribute((alias("xmlUCSIsCatN__internal_alias")));
+#else
+#ifndef xmlUCSIsCatN
 extern __typeof (xmlUCSIsCatN) xmlUCSIsCatN__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatN) xmlUCSIsCatN __attribute((alias("xmlUCSIsCatN__internal_alias")));
 #define xmlUCSIsCatN xmlUCSIsCatN__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatNd
+extern __typeof (xmlUCSIsCatNd) xmlUCSIsCatNd __attribute((alias("xmlUCSIsCatNd__internal_alias")));
+#else
+#ifndef xmlUCSIsCatNd
 extern __typeof (xmlUCSIsCatNd) xmlUCSIsCatNd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatNd) xmlUCSIsCatNd __attribute((alias("xmlUCSIsCatNd__internal_alias")));
 #define xmlUCSIsCatNd xmlUCSIsCatNd__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatNl
+extern __typeof (xmlUCSIsCatNl) xmlUCSIsCatNl __attribute((alias("xmlUCSIsCatNl__internal_alias")));
+#else
+#ifndef xmlUCSIsCatNl
 extern __typeof (xmlUCSIsCatNl) xmlUCSIsCatNl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatNl) xmlUCSIsCatNl __attribute((alias("xmlUCSIsCatNl__internal_alias")));
 #define xmlUCSIsCatNl xmlUCSIsCatNl__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatNo
+extern __typeof (xmlUCSIsCatNo) xmlUCSIsCatNo __attribute((alias("xmlUCSIsCatNo__internal_alias")));
+#else
+#ifndef xmlUCSIsCatNo
 extern __typeof (xmlUCSIsCatNo) xmlUCSIsCatNo__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatNo) xmlUCSIsCatNo __attribute((alias("xmlUCSIsCatNo__internal_alias")));
 #define xmlUCSIsCatNo xmlUCSIsCatNo__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatP
+extern __typeof (xmlUCSIsCatP) xmlUCSIsCatP __attribute((alias("xmlUCSIsCatP__internal_alias")));
+#else
+#ifndef xmlUCSIsCatP
 extern __typeof (xmlUCSIsCatP) xmlUCSIsCatP__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatP) xmlUCSIsCatP __attribute((alias("xmlUCSIsCatP__internal_alias")));
 #define xmlUCSIsCatP xmlUCSIsCatP__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatPc
+extern __typeof (xmlUCSIsCatPc) xmlUCSIsCatPc __attribute((alias("xmlUCSIsCatPc__internal_alias")));
+#else
+#ifndef xmlUCSIsCatPc
 extern __typeof (xmlUCSIsCatPc) xmlUCSIsCatPc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatPc) xmlUCSIsCatPc __attribute((alias("xmlUCSIsCatPc__internal_alias")));
 #define xmlUCSIsCatPc xmlUCSIsCatPc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatPd
+extern __typeof (xmlUCSIsCatPd) xmlUCSIsCatPd __attribute((alias("xmlUCSIsCatPd__internal_alias")));
+#else
+#ifndef xmlUCSIsCatPd
 extern __typeof (xmlUCSIsCatPd) xmlUCSIsCatPd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatPd) xmlUCSIsCatPd __attribute((alias("xmlUCSIsCatPd__internal_alias")));
 #define xmlUCSIsCatPd xmlUCSIsCatPd__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatPe
+extern __typeof (xmlUCSIsCatPe) xmlUCSIsCatPe __attribute((alias("xmlUCSIsCatPe__internal_alias")));
+#else
+#ifndef xmlUCSIsCatPe
 extern __typeof (xmlUCSIsCatPe) xmlUCSIsCatPe__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatPe) xmlUCSIsCatPe __attribute((alias("xmlUCSIsCatPe__internal_alias")));
 #define xmlUCSIsCatPe xmlUCSIsCatPe__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatPf
+extern __typeof (xmlUCSIsCatPf) xmlUCSIsCatPf __attribute((alias("xmlUCSIsCatPf__internal_alias")));
+#else
+#ifndef xmlUCSIsCatPf
 extern __typeof (xmlUCSIsCatPf) xmlUCSIsCatPf__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatPf) xmlUCSIsCatPf __attribute((alias("xmlUCSIsCatPf__internal_alias")));
 #define xmlUCSIsCatPf xmlUCSIsCatPf__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatPi
+extern __typeof (xmlUCSIsCatPi) xmlUCSIsCatPi __attribute((alias("xmlUCSIsCatPi__internal_alias")));
+#else
+#ifndef xmlUCSIsCatPi
 extern __typeof (xmlUCSIsCatPi) xmlUCSIsCatPi__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatPi) xmlUCSIsCatPi __attribute((alias("xmlUCSIsCatPi__internal_alias")));
 #define xmlUCSIsCatPi xmlUCSIsCatPi__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatPo
+extern __typeof (xmlUCSIsCatPo) xmlUCSIsCatPo __attribute((alias("xmlUCSIsCatPo__internal_alias")));
+#else
+#ifndef xmlUCSIsCatPo
 extern __typeof (xmlUCSIsCatPo) xmlUCSIsCatPo__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatPo) xmlUCSIsCatPo __attribute((alias("xmlUCSIsCatPo__internal_alias")));
 #define xmlUCSIsCatPo xmlUCSIsCatPo__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatPs
+extern __typeof (xmlUCSIsCatPs) xmlUCSIsCatPs __attribute((alias("xmlUCSIsCatPs__internal_alias")));
+#else
+#ifndef xmlUCSIsCatPs
 extern __typeof (xmlUCSIsCatPs) xmlUCSIsCatPs__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatPs) xmlUCSIsCatPs __attribute((alias("xmlUCSIsCatPs__internal_alias")));
 #define xmlUCSIsCatPs xmlUCSIsCatPs__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatS
+extern __typeof (xmlUCSIsCatS) xmlUCSIsCatS __attribute((alias("xmlUCSIsCatS__internal_alias")));
+#else
+#ifndef xmlUCSIsCatS
 extern __typeof (xmlUCSIsCatS) xmlUCSIsCatS__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatS) xmlUCSIsCatS __attribute((alias("xmlUCSIsCatS__internal_alias")));
 #define xmlUCSIsCatS xmlUCSIsCatS__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatSc
+extern __typeof (xmlUCSIsCatSc) xmlUCSIsCatSc __attribute((alias("xmlUCSIsCatSc__internal_alias")));
+#else
+#ifndef xmlUCSIsCatSc
 extern __typeof (xmlUCSIsCatSc) xmlUCSIsCatSc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatSc) xmlUCSIsCatSc __attribute((alias("xmlUCSIsCatSc__internal_alias")));
 #define xmlUCSIsCatSc xmlUCSIsCatSc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatSk
+extern __typeof (xmlUCSIsCatSk) xmlUCSIsCatSk __attribute((alias("xmlUCSIsCatSk__internal_alias")));
+#else
+#ifndef xmlUCSIsCatSk
 extern __typeof (xmlUCSIsCatSk) xmlUCSIsCatSk__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatSk) xmlUCSIsCatSk __attribute((alias("xmlUCSIsCatSk__internal_alias")));
 #define xmlUCSIsCatSk xmlUCSIsCatSk__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatSm
+extern __typeof (xmlUCSIsCatSm) xmlUCSIsCatSm __attribute((alias("xmlUCSIsCatSm__internal_alias")));
+#else
+#ifndef xmlUCSIsCatSm
 extern __typeof (xmlUCSIsCatSm) xmlUCSIsCatSm__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatSm) xmlUCSIsCatSm __attribute((alias("xmlUCSIsCatSm__internal_alias")));
 #define xmlUCSIsCatSm xmlUCSIsCatSm__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatSo
+extern __typeof (xmlUCSIsCatSo) xmlUCSIsCatSo __attribute((alias("xmlUCSIsCatSo__internal_alias")));
+#else
+#ifndef xmlUCSIsCatSo
 extern __typeof (xmlUCSIsCatSo) xmlUCSIsCatSo__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatSo) xmlUCSIsCatSo __attribute((alias("xmlUCSIsCatSo__internal_alias")));
 #define xmlUCSIsCatSo xmlUCSIsCatSo__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatZ
+extern __typeof (xmlUCSIsCatZ) xmlUCSIsCatZ __attribute((alias("xmlUCSIsCatZ__internal_alias")));
+#else
+#ifndef xmlUCSIsCatZ
 extern __typeof (xmlUCSIsCatZ) xmlUCSIsCatZ__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatZ) xmlUCSIsCatZ __attribute((alias("xmlUCSIsCatZ__internal_alias")));
 #define xmlUCSIsCatZ xmlUCSIsCatZ__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatZl
+extern __typeof (xmlUCSIsCatZl) xmlUCSIsCatZl __attribute((alias("xmlUCSIsCatZl__internal_alias")));
+#else
+#ifndef xmlUCSIsCatZl
 extern __typeof (xmlUCSIsCatZl) xmlUCSIsCatZl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatZl) xmlUCSIsCatZl __attribute((alias("xmlUCSIsCatZl__internal_alias")));
 #define xmlUCSIsCatZl xmlUCSIsCatZl__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatZp
+extern __typeof (xmlUCSIsCatZp) xmlUCSIsCatZp __attribute((alias("xmlUCSIsCatZp__internal_alias")));
+#else
+#ifndef xmlUCSIsCatZp
 extern __typeof (xmlUCSIsCatZp) xmlUCSIsCatZp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatZp) xmlUCSIsCatZp __attribute((alias("xmlUCSIsCatZp__internal_alias")));
 #define xmlUCSIsCatZp xmlUCSIsCatZp__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCatZs
+extern __typeof (xmlUCSIsCatZs) xmlUCSIsCatZs __attribute((alias("xmlUCSIsCatZs__internal_alias")));
+#else
+#ifndef xmlUCSIsCatZs
 extern __typeof (xmlUCSIsCatZs) xmlUCSIsCatZs__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCatZs) xmlUCSIsCatZs __attribute((alias("xmlUCSIsCatZs__internal_alias")));
 #define xmlUCSIsCatZs xmlUCSIsCatZs__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCherokee
+extern __typeof (xmlUCSIsCherokee) xmlUCSIsCherokee __attribute((alias("xmlUCSIsCherokee__internal_alias")));
+#else
+#ifndef xmlUCSIsCherokee
 extern __typeof (xmlUCSIsCherokee) xmlUCSIsCherokee__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCherokee) xmlUCSIsCherokee __attribute((alias("xmlUCSIsCherokee__internal_alias")));
 #define xmlUCSIsCherokee xmlUCSIsCherokee__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCombiningDiacriticalMarks
+extern __typeof (xmlUCSIsCombiningDiacriticalMarks) xmlUCSIsCombiningDiacriticalMarks __attribute((alias("xmlUCSIsCombiningDiacriticalMarks__internal_alias")));
+#else
+#ifndef xmlUCSIsCombiningDiacriticalMarks
 extern __typeof (xmlUCSIsCombiningDiacriticalMarks) xmlUCSIsCombiningDiacriticalMarks__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCombiningDiacriticalMarks) xmlUCSIsCombiningDiacriticalMarks __attribute((alias("xmlUCSIsCombiningDiacriticalMarks__internal_alias")));
 #define xmlUCSIsCombiningDiacriticalMarks xmlUCSIsCombiningDiacriticalMarks__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCombiningDiacriticalMarksforSymbols
+extern __typeof (xmlUCSIsCombiningDiacriticalMarksforSymbols) xmlUCSIsCombiningDiacriticalMarksforSymbols __attribute((alias("xmlUCSIsCombiningDiacriticalMarksforSymbols__internal_alias")));
+#else
+#ifndef xmlUCSIsCombiningDiacriticalMarksforSymbols
 extern __typeof (xmlUCSIsCombiningDiacriticalMarksforSymbols) xmlUCSIsCombiningDiacriticalMarksforSymbols__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCombiningDiacriticalMarksforSymbols) xmlUCSIsCombiningDiacriticalMarksforSymbols __attribute((alias("xmlUCSIsCombiningDiacriticalMarksforSymbols__internal_alias")));
 #define xmlUCSIsCombiningDiacriticalMarksforSymbols xmlUCSIsCombiningDiacriticalMarksforSymbols__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCombiningHalfMarks
+extern __typeof (xmlUCSIsCombiningHalfMarks) xmlUCSIsCombiningHalfMarks __attribute((alias("xmlUCSIsCombiningHalfMarks__internal_alias")));
+#else
+#ifndef xmlUCSIsCombiningHalfMarks
 extern __typeof (xmlUCSIsCombiningHalfMarks) xmlUCSIsCombiningHalfMarks__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCombiningHalfMarks) xmlUCSIsCombiningHalfMarks __attribute((alias("xmlUCSIsCombiningHalfMarks__internal_alias")));
 #define xmlUCSIsCombiningHalfMarks xmlUCSIsCombiningHalfMarks__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCombiningMarksforSymbols
+extern __typeof (xmlUCSIsCombiningMarksforSymbols) xmlUCSIsCombiningMarksforSymbols __attribute((alias("xmlUCSIsCombiningMarksforSymbols__internal_alias")));
+#else
+#ifndef xmlUCSIsCombiningMarksforSymbols
 extern __typeof (xmlUCSIsCombiningMarksforSymbols) xmlUCSIsCombiningMarksforSymbols__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCombiningMarksforSymbols) xmlUCSIsCombiningMarksforSymbols __attribute((alias("xmlUCSIsCombiningMarksforSymbols__internal_alias")));
 #define xmlUCSIsCombiningMarksforSymbols xmlUCSIsCombiningMarksforSymbols__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsControlPictures
+extern __typeof (xmlUCSIsControlPictures) xmlUCSIsControlPictures __attribute((alias("xmlUCSIsControlPictures__internal_alias")));
+#else
+#ifndef xmlUCSIsControlPictures
 extern __typeof (xmlUCSIsControlPictures) xmlUCSIsControlPictures__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsControlPictures) xmlUCSIsControlPictures __attribute((alias("xmlUCSIsControlPictures__internal_alias")));
 #define xmlUCSIsControlPictures xmlUCSIsControlPictures__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCurrencySymbols
+extern __typeof (xmlUCSIsCurrencySymbols) xmlUCSIsCurrencySymbols __attribute((alias("xmlUCSIsCurrencySymbols__internal_alias")));
+#else
+#ifndef xmlUCSIsCurrencySymbols
 extern __typeof (xmlUCSIsCurrencySymbols) xmlUCSIsCurrencySymbols__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCurrencySymbols) xmlUCSIsCurrencySymbols __attribute((alias("xmlUCSIsCurrencySymbols__internal_alias")));
 #define xmlUCSIsCurrencySymbols xmlUCSIsCurrencySymbols__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCypriotSyllabary
+extern __typeof (xmlUCSIsCypriotSyllabary) xmlUCSIsCypriotSyllabary __attribute((alias("xmlUCSIsCypriotSyllabary__internal_alias")));
+#else
+#ifndef xmlUCSIsCypriotSyllabary
 extern __typeof (xmlUCSIsCypriotSyllabary) xmlUCSIsCypriotSyllabary__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCypriotSyllabary) xmlUCSIsCypriotSyllabary __attribute((alias("xmlUCSIsCypriotSyllabary__internal_alias")));
 #define xmlUCSIsCypriotSyllabary xmlUCSIsCypriotSyllabary__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCyrillic
+extern __typeof (xmlUCSIsCyrillic) xmlUCSIsCyrillic __attribute((alias("xmlUCSIsCyrillic__internal_alias")));
+#else
+#ifndef xmlUCSIsCyrillic
 extern __typeof (xmlUCSIsCyrillic) xmlUCSIsCyrillic__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCyrillic) xmlUCSIsCyrillic __attribute((alias("xmlUCSIsCyrillic__internal_alias")));
 #define xmlUCSIsCyrillic xmlUCSIsCyrillic__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsCyrillicSupplement
+extern __typeof (xmlUCSIsCyrillicSupplement) xmlUCSIsCyrillicSupplement __attribute((alias("xmlUCSIsCyrillicSupplement__internal_alias")));
+#else
+#ifndef xmlUCSIsCyrillicSupplement
 extern __typeof (xmlUCSIsCyrillicSupplement) xmlUCSIsCyrillicSupplement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsCyrillicSupplement) xmlUCSIsCyrillicSupplement __attribute((alias("xmlUCSIsCyrillicSupplement__internal_alias")));
 #define xmlUCSIsCyrillicSupplement xmlUCSIsCyrillicSupplement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsDeseret
+extern __typeof (xmlUCSIsDeseret) xmlUCSIsDeseret __attribute((alias("xmlUCSIsDeseret__internal_alias")));
+#else
+#ifndef xmlUCSIsDeseret
 extern __typeof (xmlUCSIsDeseret) xmlUCSIsDeseret__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsDeseret) xmlUCSIsDeseret __attribute((alias("xmlUCSIsDeseret__internal_alias")));
 #define xmlUCSIsDeseret xmlUCSIsDeseret__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsDevanagari
+extern __typeof (xmlUCSIsDevanagari) xmlUCSIsDevanagari __attribute((alias("xmlUCSIsDevanagari__internal_alias")));
+#else
+#ifndef xmlUCSIsDevanagari
 extern __typeof (xmlUCSIsDevanagari) xmlUCSIsDevanagari__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsDevanagari) xmlUCSIsDevanagari __attribute((alias("xmlUCSIsDevanagari__internal_alias")));
 #define xmlUCSIsDevanagari xmlUCSIsDevanagari__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsDingbats
+extern __typeof (xmlUCSIsDingbats) xmlUCSIsDingbats __attribute((alias("xmlUCSIsDingbats__internal_alias")));
+#else
+#ifndef xmlUCSIsDingbats
 extern __typeof (xmlUCSIsDingbats) xmlUCSIsDingbats__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsDingbats) xmlUCSIsDingbats __attribute((alias("xmlUCSIsDingbats__internal_alias")));
 #define xmlUCSIsDingbats xmlUCSIsDingbats__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsEnclosedAlphanumerics
+extern __typeof (xmlUCSIsEnclosedAlphanumerics) xmlUCSIsEnclosedAlphanumerics __attribute((alias("xmlUCSIsEnclosedAlphanumerics__internal_alias")));
+#else
+#ifndef xmlUCSIsEnclosedAlphanumerics
 extern __typeof (xmlUCSIsEnclosedAlphanumerics) xmlUCSIsEnclosedAlphanumerics__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsEnclosedAlphanumerics) xmlUCSIsEnclosedAlphanumerics __attribute((alias("xmlUCSIsEnclosedAlphanumerics__internal_alias")));
 #define xmlUCSIsEnclosedAlphanumerics xmlUCSIsEnclosedAlphanumerics__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsEnclosedCJKLettersandMonths
+extern __typeof (xmlUCSIsEnclosedCJKLettersandMonths) xmlUCSIsEnclosedCJKLettersandMonths __attribute((alias("xmlUCSIsEnclosedCJKLettersandMonths__internal_alias")));
+#else
+#ifndef xmlUCSIsEnclosedCJKLettersandMonths
 extern __typeof (xmlUCSIsEnclosedCJKLettersandMonths) xmlUCSIsEnclosedCJKLettersandMonths__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsEnclosedCJKLettersandMonths) xmlUCSIsEnclosedCJKLettersandMonths __attribute((alias("xmlUCSIsEnclosedCJKLettersandMonths__internal_alias")));
 #define xmlUCSIsEnclosedCJKLettersandMonths xmlUCSIsEnclosedCJKLettersandMonths__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsEthiopic
+extern __typeof (xmlUCSIsEthiopic) xmlUCSIsEthiopic __attribute((alias("xmlUCSIsEthiopic__internal_alias")));
+#else
+#ifndef xmlUCSIsEthiopic
 extern __typeof (xmlUCSIsEthiopic) xmlUCSIsEthiopic__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsEthiopic) xmlUCSIsEthiopic __attribute((alias("xmlUCSIsEthiopic__internal_alias")));
 #define xmlUCSIsEthiopic xmlUCSIsEthiopic__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsGeneralPunctuation
+extern __typeof (xmlUCSIsGeneralPunctuation) xmlUCSIsGeneralPunctuation __attribute((alias("xmlUCSIsGeneralPunctuation__internal_alias")));
+#else
+#ifndef xmlUCSIsGeneralPunctuation
 extern __typeof (xmlUCSIsGeneralPunctuation) xmlUCSIsGeneralPunctuation__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsGeneralPunctuation) xmlUCSIsGeneralPunctuation __attribute((alias("xmlUCSIsGeneralPunctuation__internal_alias")));
 #define xmlUCSIsGeneralPunctuation xmlUCSIsGeneralPunctuation__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsGeometricShapes
+extern __typeof (xmlUCSIsGeometricShapes) xmlUCSIsGeometricShapes __attribute((alias("xmlUCSIsGeometricShapes__internal_alias")));
+#else
+#ifndef xmlUCSIsGeometricShapes
 extern __typeof (xmlUCSIsGeometricShapes) xmlUCSIsGeometricShapes__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsGeometricShapes) xmlUCSIsGeometricShapes __attribute((alias("xmlUCSIsGeometricShapes__internal_alias")));
 #define xmlUCSIsGeometricShapes xmlUCSIsGeometricShapes__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsGeorgian
+extern __typeof (xmlUCSIsGeorgian) xmlUCSIsGeorgian __attribute((alias("xmlUCSIsGeorgian__internal_alias")));
+#else
+#ifndef xmlUCSIsGeorgian
 extern __typeof (xmlUCSIsGeorgian) xmlUCSIsGeorgian__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsGeorgian) xmlUCSIsGeorgian __attribute((alias("xmlUCSIsGeorgian__internal_alias")));
 #define xmlUCSIsGeorgian xmlUCSIsGeorgian__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsGothic
+extern __typeof (xmlUCSIsGothic) xmlUCSIsGothic __attribute((alias("xmlUCSIsGothic__internal_alias")));
+#else
+#ifndef xmlUCSIsGothic
 extern __typeof (xmlUCSIsGothic) xmlUCSIsGothic__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsGothic) xmlUCSIsGothic __attribute((alias("xmlUCSIsGothic__internal_alias")));
 #define xmlUCSIsGothic xmlUCSIsGothic__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsGreek
+extern __typeof (xmlUCSIsGreek) xmlUCSIsGreek __attribute((alias("xmlUCSIsGreek__internal_alias")));
+#else
+#ifndef xmlUCSIsGreek
 extern __typeof (xmlUCSIsGreek) xmlUCSIsGreek__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsGreek) xmlUCSIsGreek __attribute((alias("xmlUCSIsGreek__internal_alias")));
 #define xmlUCSIsGreek xmlUCSIsGreek__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsGreekExtended
+extern __typeof (xmlUCSIsGreekExtended) xmlUCSIsGreekExtended __attribute((alias("xmlUCSIsGreekExtended__internal_alias")));
+#else
+#ifndef xmlUCSIsGreekExtended
 extern __typeof (xmlUCSIsGreekExtended) xmlUCSIsGreekExtended__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsGreekExtended) xmlUCSIsGreekExtended __attribute((alias("xmlUCSIsGreekExtended__internal_alias")));
 #define xmlUCSIsGreekExtended xmlUCSIsGreekExtended__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsGreekandCoptic
+extern __typeof (xmlUCSIsGreekandCoptic) xmlUCSIsGreekandCoptic __attribute((alias("xmlUCSIsGreekandCoptic__internal_alias")));
+#else
+#ifndef xmlUCSIsGreekandCoptic
 extern __typeof (xmlUCSIsGreekandCoptic) xmlUCSIsGreekandCoptic__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsGreekandCoptic) xmlUCSIsGreekandCoptic __attribute((alias("xmlUCSIsGreekandCoptic__internal_alias")));
 #define xmlUCSIsGreekandCoptic xmlUCSIsGreekandCoptic__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsGujarati
+extern __typeof (xmlUCSIsGujarati) xmlUCSIsGujarati __attribute((alias("xmlUCSIsGujarati__internal_alias")));
+#else
+#ifndef xmlUCSIsGujarati
 extern __typeof (xmlUCSIsGujarati) xmlUCSIsGujarati__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsGujarati) xmlUCSIsGujarati __attribute((alias("xmlUCSIsGujarati__internal_alias")));
 #define xmlUCSIsGujarati xmlUCSIsGujarati__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsGurmukhi
+extern __typeof (xmlUCSIsGurmukhi) xmlUCSIsGurmukhi __attribute((alias("xmlUCSIsGurmukhi__internal_alias")));
+#else
+#ifndef xmlUCSIsGurmukhi
 extern __typeof (xmlUCSIsGurmukhi) xmlUCSIsGurmukhi__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsGurmukhi) xmlUCSIsGurmukhi __attribute((alias("xmlUCSIsGurmukhi__internal_alias")));
 #define xmlUCSIsGurmukhi xmlUCSIsGurmukhi__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsHalfwidthandFullwidthForms
+extern __typeof (xmlUCSIsHalfwidthandFullwidthForms) xmlUCSIsHalfwidthandFullwidthForms __attribute((alias("xmlUCSIsHalfwidthandFullwidthForms__internal_alias")));
+#else
+#ifndef xmlUCSIsHalfwidthandFullwidthForms
 extern __typeof (xmlUCSIsHalfwidthandFullwidthForms) xmlUCSIsHalfwidthandFullwidthForms__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsHalfwidthandFullwidthForms) xmlUCSIsHalfwidthandFullwidthForms __attribute((alias("xmlUCSIsHalfwidthandFullwidthForms__internal_alias")));
 #define xmlUCSIsHalfwidthandFullwidthForms xmlUCSIsHalfwidthandFullwidthForms__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsHangulCompatibilityJamo
+extern __typeof (xmlUCSIsHangulCompatibilityJamo) xmlUCSIsHangulCompatibilityJamo __attribute((alias("xmlUCSIsHangulCompatibilityJamo__internal_alias")));
+#else
+#ifndef xmlUCSIsHangulCompatibilityJamo
 extern __typeof (xmlUCSIsHangulCompatibilityJamo) xmlUCSIsHangulCompatibilityJamo__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsHangulCompatibilityJamo) xmlUCSIsHangulCompatibilityJamo __attribute((alias("xmlUCSIsHangulCompatibilityJamo__internal_alias")));
 #define xmlUCSIsHangulCompatibilityJamo xmlUCSIsHangulCompatibilityJamo__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsHangulJamo
+extern __typeof (xmlUCSIsHangulJamo) xmlUCSIsHangulJamo __attribute((alias("xmlUCSIsHangulJamo__internal_alias")));
+#else
+#ifndef xmlUCSIsHangulJamo
 extern __typeof (xmlUCSIsHangulJamo) xmlUCSIsHangulJamo__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsHangulJamo) xmlUCSIsHangulJamo __attribute((alias("xmlUCSIsHangulJamo__internal_alias")));
 #define xmlUCSIsHangulJamo xmlUCSIsHangulJamo__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsHangulSyllables
+extern __typeof (xmlUCSIsHangulSyllables) xmlUCSIsHangulSyllables __attribute((alias("xmlUCSIsHangulSyllables__internal_alias")));
+#else
+#ifndef xmlUCSIsHangulSyllables
 extern __typeof (xmlUCSIsHangulSyllables) xmlUCSIsHangulSyllables__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsHangulSyllables) xmlUCSIsHangulSyllables __attribute((alias("xmlUCSIsHangulSyllables__internal_alias")));
 #define xmlUCSIsHangulSyllables xmlUCSIsHangulSyllables__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsHanunoo
+extern __typeof (xmlUCSIsHanunoo) xmlUCSIsHanunoo __attribute((alias("xmlUCSIsHanunoo__internal_alias")));
+#else
+#ifndef xmlUCSIsHanunoo
 extern __typeof (xmlUCSIsHanunoo) xmlUCSIsHanunoo__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsHanunoo) xmlUCSIsHanunoo __attribute((alias("xmlUCSIsHanunoo__internal_alias")));
 #define xmlUCSIsHanunoo xmlUCSIsHanunoo__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsHebrew
+extern __typeof (xmlUCSIsHebrew) xmlUCSIsHebrew __attribute((alias("xmlUCSIsHebrew__internal_alias")));
+#else
+#ifndef xmlUCSIsHebrew
 extern __typeof (xmlUCSIsHebrew) xmlUCSIsHebrew__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsHebrew) xmlUCSIsHebrew __attribute((alias("xmlUCSIsHebrew__internal_alias")));
 #define xmlUCSIsHebrew xmlUCSIsHebrew__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsHighPrivateUseSurrogates
+extern __typeof (xmlUCSIsHighPrivateUseSurrogates) xmlUCSIsHighPrivateUseSurrogates __attribute((alias("xmlUCSIsHighPrivateUseSurrogates__internal_alias")));
+#else
+#ifndef xmlUCSIsHighPrivateUseSurrogates
 extern __typeof (xmlUCSIsHighPrivateUseSurrogates) xmlUCSIsHighPrivateUseSurrogates__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsHighPrivateUseSurrogates) xmlUCSIsHighPrivateUseSurrogates __attribute((alias("xmlUCSIsHighPrivateUseSurrogates__internal_alias")));
 #define xmlUCSIsHighPrivateUseSurrogates xmlUCSIsHighPrivateUseSurrogates__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsHighSurrogates
+extern __typeof (xmlUCSIsHighSurrogates) xmlUCSIsHighSurrogates __attribute((alias("xmlUCSIsHighSurrogates__internal_alias")));
+#else
+#ifndef xmlUCSIsHighSurrogates
 extern __typeof (xmlUCSIsHighSurrogates) xmlUCSIsHighSurrogates__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsHighSurrogates) xmlUCSIsHighSurrogates __attribute((alias("xmlUCSIsHighSurrogates__internal_alias")));
 #define xmlUCSIsHighSurrogates xmlUCSIsHighSurrogates__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsHiragana
+extern __typeof (xmlUCSIsHiragana) xmlUCSIsHiragana __attribute((alias("xmlUCSIsHiragana__internal_alias")));
+#else
+#ifndef xmlUCSIsHiragana
 extern __typeof (xmlUCSIsHiragana) xmlUCSIsHiragana__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsHiragana) xmlUCSIsHiragana __attribute((alias("xmlUCSIsHiragana__internal_alias")));
 #define xmlUCSIsHiragana xmlUCSIsHiragana__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsIPAExtensions
+extern __typeof (xmlUCSIsIPAExtensions) xmlUCSIsIPAExtensions __attribute((alias("xmlUCSIsIPAExtensions__internal_alias")));
+#else
+#ifndef xmlUCSIsIPAExtensions
 extern __typeof (xmlUCSIsIPAExtensions) xmlUCSIsIPAExtensions__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsIPAExtensions) xmlUCSIsIPAExtensions __attribute((alias("xmlUCSIsIPAExtensions__internal_alias")));
 #define xmlUCSIsIPAExtensions xmlUCSIsIPAExtensions__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsIdeographicDescriptionCharacters
+extern __typeof (xmlUCSIsIdeographicDescriptionCharacters) xmlUCSIsIdeographicDescriptionCharacters __attribute((alias("xmlUCSIsIdeographicDescriptionCharacters__internal_alias")));
+#else
+#ifndef xmlUCSIsIdeographicDescriptionCharacters
 extern __typeof (xmlUCSIsIdeographicDescriptionCharacters) xmlUCSIsIdeographicDescriptionCharacters__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsIdeographicDescriptionCharacters) xmlUCSIsIdeographicDescriptionCharacters __attribute((alias("xmlUCSIsIdeographicDescriptionCharacters__internal_alias")));
 #define xmlUCSIsIdeographicDescriptionCharacters xmlUCSIsIdeographicDescriptionCharacters__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsKanbun
+extern __typeof (xmlUCSIsKanbun) xmlUCSIsKanbun __attribute((alias("xmlUCSIsKanbun__internal_alias")));
+#else
+#ifndef xmlUCSIsKanbun
 extern __typeof (xmlUCSIsKanbun) xmlUCSIsKanbun__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsKanbun) xmlUCSIsKanbun __attribute((alias("xmlUCSIsKanbun__internal_alias")));
 #define xmlUCSIsKanbun xmlUCSIsKanbun__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsKangxiRadicals
+extern __typeof (xmlUCSIsKangxiRadicals) xmlUCSIsKangxiRadicals __attribute((alias("xmlUCSIsKangxiRadicals__internal_alias")));
+#else
+#ifndef xmlUCSIsKangxiRadicals
 extern __typeof (xmlUCSIsKangxiRadicals) xmlUCSIsKangxiRadicals__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsKangxiRadicals) xmlUCSIsKangxiRadicals __attribute((alias("xmlUCSIsKangxiRadicals__internal_alias")));
 #define xmlUCSIsKangxiRadicals xmlUCSIsKangxiRadicals__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsKannada
+extern __typeof (xmlUCSIsKannada) xmlUCSIsKannada __attribute((alias("xmlUCSIsKannada__internal_alias")));
+#else
+#ifndef xmlUCSIsKannada
 extern __typeof (xmlUCSIsKannada) xmlUCSIsKannada__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsKannada) xmlUCSIsKannada __attribute((alias("xmlUCSIsKannada__internal_alias")));
 #define xmlUCSIsKannada xmlUCSIsKannada__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsKatakana
+extern __typeof (xmlUCSIsKatakana) xmlUCSIsKatakana __attribute((alias("xmlUCSIsKatakana__internal_alias")));
+#else
+#ifndef xmlUCSIsKatakana
 extern __typeof (xmlUCSIsKatakana) xmlUCSIsKatakana__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsKatakana) xmlUCSIsKatakana __attribute((alias("xmlUCSIsKatakana__internal_alias")));
 #define xmlUCSIsKatakana xmlUCSIsKatakana__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsKatakanaPhoneticExtensions
+extern __typeof (xmlUCSIsKatakanaPhoneticExtensions) xmlUCSIsKatakanaPhoneticExtensions __attribute((alias("xmlUCSIsKatakanaPhoneticExtensions__internal_alias")));
+#else
+#ifndef xmlUCSIsKatakanaPhoneticExtensions
 extern __typeof (xmlUCSIsKatakanaPhoneticExtensions) xmlUCSIsKatakanaPhoneticExtensions__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsKatakanaPhoneticExtensions) xmlUCSIsKatakanaPhoneticExtensions __attribute((alias("xmlUCSIsKatakanaPhoneticExtensions__internal_alias")));
 #define xmlUCSIsKatakanaPhoneticExtensions xmlUCSIsKatakanaPhoneticExtensions__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsKhmer
+extern __typeof (xmlUCSIsKhmer) xmlUCSIsKhmer __attribute((alias("xmlUCSIsKhmer__internal_alias")));
+#else
+#ifndef xmlUCSIsKhmer
 extern __typeof (xmlUCSIsKhmer) xmlUCSIsKhmer__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsKhmer) xmlUCSIsKhmer __attribute((alias("xmlUCSIsKhmer__internal_alias")));
 #define xmlUCSIsKhmer xmlUCSIsKhmer__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsKhmerSymbols
+extern __typeof (xmlUCSIsKhmerSymbols) xmlUCSIsKhmerSymbols __attribute((alias("xmlUCSIsKhmerSymbols__internal_alias")));
+#else
+#ifndef xmlUCSIsKhmerSymbols
 extern __typeof (xmlUCSIsKhmerSymbols) xmlUCSIsKhmerSymbols__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsKhmerSymbols) xmlUCSIsKhmerSymbols __attribute((alias("xmlUCSIsKhmerSymbols__internal_alias")));
 #define xmlUCSIsKhmerSymbols xmlUCSIsKhmerSymbols__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsLao
+extern __typeof (xmlUCSIsLao) xmlUCSIsLao __attribute((alias("xmlUCSIsLao__internal_alias")));
+#else
+#ifndef xmlUCSIsLao
 extern __typeof (xmlUCSIsLao) xmlUCSIsLao__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsLao) xmlUCSIsLao __attribute((alias("xmlUCSIsLao__internal_alias")));
 #define xmlUCSIsLao xmlUCSIsLao__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsLatin1Supplement
+extern __typeof (xmlUCSIsLatin1Supplement) xmlUCSIsLatin1Supplement __attribute((alias("xmlUCSIsLatin1Supplement__internal_alias")));
+#else
+#ifndef xmlUCSIsLatin1Supplement
 extern __typeof (xmlUCSIsLatin1Supplement) xmlUCSIsLatin1Supplement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsLatin1Supplement) xmlUCSIsLatin1Supplement __attribute((alias("xmlUCSIsLatin1Supplement__internal_alias")));
 #define xmlUCSIsLatin1Supplement xmlUCSIsLatin1Supplement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsLatinExtendedA
+extern __typeof (xmlUCSIsLatinExtendedA) xmlUCSIsLatinExtendedA __attribute((alias("xmlUCSIsLatinExtendedA__internal_alias")));
+#else
+#ifndef xmlUCSIsLatinExtendedA
 extern __typeof (xmlUCSIsLatinExtendedA) xmlUCSIsLatinExtendedA__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsLatinExtendedA) xmlUCSIsLatinExtendedA __attribute((alias("xmlUCSIsLatinExtendedA__internal_alias")));
 #define xmlUCSIsLatinExtendedA xmlUCSIsLatinExtendedA__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsLatinExtendedAdditional
+extern __typeof (xmlUCSIsLatinExtendedAdditional) xmlUCSIsLatinExtendedAdditional __attribute((alias("xmlUCSIsLatinExtendedAdditional__internal_alias")));
+#else
+#ifndef xmlUCSIsLatinExtendedAdditional
 extern __typeof (xmlUCSIsLatinExtendedAdditional) xmlUCSIsLatinExtendedAdditional__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsLatinExtendedAdditional) xmlUCSIsLatinExtendedAdditional __attribute((alias("xmlUCSIsLatinExtendedAdditional__internal_alias")));
 #define xmlUCSIsLatinExtendedAdditional xmlUCSIsLatinExtendedAdditional__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsLatinExtendedB
+extern __typeof (xmlUCSIsLatinExtendedB) xmlUCSIsLatinExtendedB __attribute((alias("xmlUCSIsLatinExtendedB__internal_alias")));
+#else
+#ifndef xmlUCSIsLatinExtendedB
 extern __typeof (xmlUCSIsLatinExtendedB) xmlUCSIsLatinExtendedB__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsLatinExtendedB) xmlUCSIsLatinExtendedB __attribute((alias("xmlUCSIsLatinExtendedB__internal_alias")));
 #define xmlUCSIsLatinExtendedB xmlUCSIsLatinExtendedB__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsLetterlikeSymbols
+extern __typeof (xmlUCSIsLetterlikeSymbols) xmlUCSIsLetterlikeSymbols __attribute((alias("xmlUCSIsLetterlikeSymbols__internal_alias")));
+#else
+#ifndef xmlUCSIsLetterlikeSymbols
 extern __typeof (xmlUCSIsLetterlikeSymbols) xmlUCSIsLetterlikeSymbols__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsLetterlikeSymbols) xmlUCSIsLetterlikeSymbols __attribute((alias("xmlUCSIsLetterlikeSymbols__internal_alias")));
 #define xmlUCSIsLetterlikeSymbols xmlUCSIsLetterlikeSymbols__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsLimbu
+extern __typeof (xmlUCSIsLimbu) xmlUCSIsLimbu __attribute((alias("xmlUCSIsLimbu__internal_alias")));
+#else
+#ifndef xmlUCSIsLimbu
 extern __typeof (xmlUCSIsLimbu) xmlUCSIsLimbu__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsLimbu) xmlUCSIsLimbu __attribute((alias("xmlUCSIsLimbu__internal_alias")));
 #define xmlUCSIsLimbu xmlUCSIsLimbu__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsLinearBIdeograms
+extern __typeof (xmlUCSIsLinearBIdeograms) xmlUCSIsLinearBIdeograms __attribute((alias("xmlUCSIsLinearBIdeograms__internal_alias")));
+#else
+#ifndef xmlUCSIsLinearBIdeograms
 extern __typeof (xmlUCSIsLinearBIdeograms) xmlUCSIsLinearBIdeograms__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsLinearBIdeograms) xmlUCSIsLinearBIdeograms __attribute((alias("xmlUCSIsLinearBIdeograms__internal_alias")));
 #define xmlUCSIsLinearBIdeograms xmlUCSIsLinearBIdeograms__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsLinearBSyllabary
+extern __typeof (xmlUCSIsLinearBSyllabary) xmlUCSIsLinearBSyllabary __attribute((alias("xmlUCSIsLinearBSyllabary__internal_alias")));
+#else
+#ifndef xmlUCSIsLinearBSyllabary
 extern __typeof (xmlUCSIsLinearBSyllabary) xmlUCSIsLinearBSyllabary__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsLinearBSyllabary) xmlUCSIsLinearBSyllabary __attribute((alias("xmlUCSIsLinearBSyllabary__internal_alias")));
 #define xmlUCSIsLinearBSyllabary xmlUCSIsLinearBSyllabary__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsLowSurrogates
+extern __typeof (xmlUCSIsLowSurrogates) xmlUCSIsLowSurrogates __attribute((alias("xmlUCSIsLowSurrogates__internal_alias")));
+#else
+#ifndef xmlUCSIsLowSurrogates
 extern __typeof (xmlUCSIsLowSurrogates) xmlUCSIsLowSurrogates__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsLowSurrogates) xmlUCSIsLowSurrogates __attribute((alias("xmlUCSIsLowSurrogates__internal_alias")));
 #define xmlUCSIsLowSurrogates xmlUCSIsLowSurrogates__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsMalayalam
+extern __typeof (xmlUCSIsMalayalam) xmlUCSIsMalayalam __attribute((alias("xmlUCSIsMalayalam__internal_alias")));
+#else
+#ifndef xmlUCSIsMalayalam
 extern __typeof (xmlUCSIsMalayalam) xmlUCSIsMalayalam__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsMalayalam) xmlUCSIsMalayalam __attribute((alias("xmlUCSIsMalayalam__internal_alias")));
 #define xmlUCSIsMalayalam xmlUCSIsMalayalam__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsMathematicalAlphanumericSymbols
+extern __typeof (xmlUCSIsMathematicalAlphanumericSymbols) xmlUCSIsMathematicalAlphanumericSymbols __attribute((alias("xmlUCSIsMathematicalAlphanumericSymbols__internal_alias")));
+#else
+#ifndef xmlUCSIsMathematicalAlphanumericSymbols
 extern __typeof (xmlUCSIsMathematicalAlphanumericSymbols) xmlUCSIsMathematicalAlphanumericSymbols__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsMathematicalAlphanumericSymbols) xmlUCSIsMathematicalAlphanumericSymbols __attribute((alias("xmlUCSIsMathematicalAlphanumericSymbols__internal_alias")));
 #define xmlUCSIsMathematicalAlphanumericSymbols xmlUCSIsMathematicalAlphanumericSymbols__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsMathematicalOperators
+extern __typeof (xmlUCSIsMathematicalOperators) xmlUCSIsMathematicalOperators __attribute((alias("xmlUCSIsMathematicalOperators__internal_alias")));
+#else
+#ifndef xmlUCSIsMathematicalOperators
 extern __typeof (xmlUCSIsMathematicalOperators) xmlUCSIsMathematicalOperators__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsMathematicalOperators) xmlUCSIsMathematicalOperators __attribute((alias("xmlUCSIsMathematicalOperators__internal_alias")));
 #define xmlUCSIsMathematicalOperators xmlUCSIsMathematicalOperators__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsMiscellaneousMathematicalSymbolsA
+extern __typeof (xmlUCSIsMiscellaneousMathematicalSymbolsA) xmlUCSIsMiscellaneousMathematicalSymbolsA __attribute((alias("xmlUCSIsMiscellaneousMathematicalSymbolsA__internal_alias")));
+#else
+#ifndef xmlUCSIsMiscellaneousMathematicalSymbolsA
 extern __typeof (xmlUCSIsMiscellaneousMathematicalSymbolsA) xmlUCSIsMiscellaneousMathematicalSymbolsA__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsMiscellaneousMathematicalSymbolsA) xmlUCSIsMiscellaneousMathematicalSymbolsA __attribute((alias("xmlUCSIsMiscellaneousMathematicalSymbolsA__internal_alias")));
 #define xmlUCSIsMiscellaneousMathematicalSymbolsA xmlUCSIsMiscellaneousMathematicalSymbolsA__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsMiscellaneousMathematicalSymbolsB
+extern __typeof (xmlUCSIsMiscellaneousMathematicalSymbolsB) xmlUCSIsMiscellaneousMathematicalSymbolsB __attribute((alias("xmlUCSIsMiscellaneousMathematicalSymbolsB__internal_alias")));
+#else
+#ifndef xmlUCSIsMiscellaneousMathematicalSymbolsB
 extern __typeof (xmlUCSIsMiscellaneousMathematicalSymbolsB) xmlUCSIsMiscellaneousMathematicalSymbolsB__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsMiscellaneousMathematicalSymbolsB) xmlUCSIsMiscellaneousMathematicalSymbolsB __attribute((alias("xmlUCSIsMiscellaneousMathematicalSymbolsB__internal_alias")));
 #define xmlUCSIsMiscellaneousMathematicalSymbolsB xmlUCSIsMiscellaneousMathematicalSymbolsB__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsMiscellaneousSymbols
+extern __typeof (xmlUCSIsMiscellaneousSymbols) xmlUCSIsMiscellaneousSymbols __attribute((alias("xmlUCSIsMiscellaneousSymbols__internal_alias")));
+#else
+#ifndef xmlUCSIsMiscellaneousSymbols
 extern __typeof (xmlUCSIsMiscellaneousSymbols) xmlUCSIsMiscellaneousSymbols__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsMiscellaneousSymbols) xmlUCSIsMiscellaneousSymbols __attribute((alias("xmlUCSIsMiscellaneousSymbols__internal_alias")));
 #define xmlUCSIsMiscellaneousSymbols xmlUCSIsMiscellaneousSymbols__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsMiscellaneousSymbolsandArrows
+extern __typeof (xmlUCSIsMiscellaneousSymbolsandArrows) xmlUCSIsMiscellaneousSymbolsandArrows __attribute((alias("xmlUCSIsMiscellaneousSymbolsandArrows__internal_alias")));
+#else
+#ifndef xmlUCSIsMiscellaneousSymbolsandArrows
 extern __typeof (xmlUCSIsMiscellaneousSymbolsandArrows) xmlUCSIsMiscellaneousSymbolsandArrows__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsMiscellaneousSymbolsandArrows) xmlUCSIsMiscellaneousSymbolsandArrows __attribute((alias("xmlUCSIsMiscellaneousSymbolsandArrows__internal_alias")));
 #define xmlUCSIsMiscellaneousSymbolsandArrows xmlUCSIsMiscellaneousSymbolsandArrows__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsMiscellaneousTechnical
+extern __typeof (xmlUCSIsMiscellaneousTechnical) xmlUCSIsMiscellaneousTechnical __attribute((alias("xmlUCSIsMiscellaneousTechnical__internal_alias")));
+#else
+#ifndef xmlUCSIsMiscellaneousTechnical
 extern __typeof (xmlUCSIsMiscellaneousTechnical) xmlUCSIsMiscellaneousTechnical__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsMiscellaneousTechnical) xmlUCSIsMiscellaneousTechnical __attribute((alias("xmlUCSIsMiscellaneousTechnical__internal_alias")));
 #define xmlUCSIsMiscellaneousTechnical xmlUCSIsMiscellaneousTechnical__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsMongolian
+extern __typeof (xmlUCSIsMongolian) xmlUCSIsMongolian __attribute((alias("xmlUCSIsMongolian__internal_alias")));
+#else
+#ifndef xmlUCSIsMongolian
 extern __typeof (xmlUCSIsMongolian) xmlUCSIsMongolian__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsMongolian) xmlUCSIsMongolian __attribute((alias("xmlUCSIsMongolian__internal_alias")));
 #define xmlUCSIsMongolian xmlUCSIsMongolian__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsMusicalSymbols
+extern __typeof (xmlUCSIsMusicalSymbols) xmlUCSIsMusicalSymbols __attribute((alias("xmlUCSIsMusicalSymbols__internal_alias")));
+#else
+#ifndef xmlUCSIsMusicalSymbols
 extern __typeof (xmlUCSIsMusicalSymbols) xmlUCSIsMusicalSymbols__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsMusicalSymbols) xmlUCSIsMusicalSymbols __attribute((alias("xmlUCSIsMusicalSymbols__internal_alias")));
 #define xmlUCSIsMusicalSymbols xmlUCSIsMusicalSymbols__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsMyanmar
+extern __typeof (xmlUCSIsMyanmar) xmlUCSIsMyanmar __attribute((alias("xmlUCSIsMyanmar__internal_alias")));
+#else
+#ifndef xmlUCSIsMyanmar
 extern __typeof (xmlUCSIsMyanmar) xmlUCSIsMyanmar__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsMyanmar) xmlUCSIsMyanmar __attribute((alias("xmlUCSIsMyanmar__internal_alias")));
 #define xmlUCSIsMyanmar xmlUCSIsMyanmar__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsNumberForms
+extern __typeof (xmlUCSIsNumberForms) xmlUCSIsNumberForms __attribute((alias("xmlUCSIsNumberForms__internal_alias")));
+#else
+#ifndef xmlUCSIsNumberForms
 extern __typeof (xmlUCSIsNumberForms) xmlUCSIsNumberForms__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsNumberForms) xmlUCSIsNumberForms __attribute((alias("xmlUCSIsNumberForms__internal_alias")));
 #define xmlUCSIsNumberForms xmlUCSIsNumberForms__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsOgham
+extern __typeof (xmlUCSIsOgham) xmlUCSIsOgham __attribute((alias("xmlUCSIsOgham__internal_alias")));
+#else
+#ifndef xmlUCSIsOgham
 extern __typeof (xmlUCSIsOgham) xmlUCSIsOgham__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsOgham) xmlUCSIsOgham __attribute((alias("xmlUCSIsOgham__internal_alias")));
 #define xmlUCSIsOgham xmlUCSIsOgham__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsOldItalic
+extern __typeof (xmlUCSIsOldItalic) xmlUCSIsOldItalic __attribute((alias("xmlUCSIsOldItalic__internal_alias")));
+#else
+#ifndef xmlUCSIsOldItalic
 extern __typeof (xmlUCSIsOldItalic) xmlUCSIsOldItalic__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsOldItalic) xmlUCSIsOldItalic __attribute((alias("xmlUCSIsOldItalic__internal_alias")));
 #define xmlUCSIsOldItalic xmlUCSIsOldItalic__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsOpticalCharacterRecognition
+extern __typeof (xmlUCSIsOpticalCharacterRecognition) xmlUCSIsOpticalCharacterRecognition __attribute((alias("xmlUCSIsOpticalCharacterRecognition__internal_alias")));
+#else
+#ifndef xmlUCSIsOpticalCharacterRecognition
 extern __typeof (xmlUCSIsOpticalCharacterRecognition) xmlUCSIsOpticalCharacterRecognition__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsOpticalCharacterRecognition) xmlUCSIsOpticalCharacterRecognition __attribute((alias("xmlUCSIsOpticalCharacterRecognition__internal_alias")));
 #define xmlUCSIsOpticalCharacterRecognition xmlUCSIsOpticalCharacterRecognition__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsOriya
+extern __typeof (xmlUCSIsOriya) xmlUCSIsOriya __attribute((alias("xmlUCSIsOriya__internal_alias")));
+#else
+#ifndef xmlUCSIsOriya
 extern __typeof (xmlUCSIsOriya) xmlUCSIsOriya__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsOriya) xmlUCSIsOriya __attribute((alias("xmlUCSIsOriya__internal_alias")));
 #define xmlUCSIsOriya xmlUCSIsOriya__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsOsmanya
+extern __typeof (xmlUCSIsOsmanya) xmlUCSIsOsmanya __attribute((alias("xmlUCSIsOsmanya__internal_alias")));
+#else
+#ifndef xmlUCSIsOsmanya
 extern __typeof (xmlUCSIsOsmanya) xmlUCSIsOsmanya__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsOsmanya) xmlUCSIsOsmanya __attribute((alias("xmlUCSIsOsmanya__internal_alias")));
 #define xmlUCSIsOsmanya xmlUCSIsOsmanya__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsPhoneticExtensions
+extern __typeof (xmlUCSIsPhoneticExtensions) xmlUCSIsPhoneticExtensions __attribute((alias("xmlUCSIsPhoneticExtensions__internal_alias")));
+#else
+#ifndef xmlUCSIsPhoneticExtensions
 extern __typeof (xmlUCSIsPhoneticExtensions) xmlUCSIsPhoneticExtensions__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsPhoneticExtensions) xmlUCSIsPhoneticExtensions __attribute((alias("xmlUCSIsPhoneticExtensions__internal_alias")));
 #define xmlUCSIsPhoneticExtensions xmlUCSIsPhoneticExtensions__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsPrivateUse
+extern __typeof (xmlUCSIsPrivateUse) xmlUCSIsPrivateUse __attribute((alias("xmlUCSIsPrivateUse__internal_alias")));
+#else
+#ifndef xmlUCSIsPrivateUse
 extern __typeof (xmlUCSIsPrivateUse) xmlUCSIsPrivateUse__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsPrivateUse) xmlUCSIsPrivateUse __attribute((alias("xmlUCSIsPrivateUse__internal_alias")));
 #define xmlUCSIsPrivateUse xmlUCSIsPrivateUse__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsPrivateUseArea
+extern __typeof (xmlUCSIsPrivateUseArea) xmlUCSIsPrivateUseArea __attribute((alias("xmlUCSIsPrivateUseArea__internal_alias")));
+#else
+#ifndef xmlUCSIsPrivateUseArea
 extern __typeof (xmlUCSIsPrivateUseArea) xmlUCSIsPrivateUseArea__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsPrivateUseArea) xmlUCSIsPrivateUseArea __attribute((alias("xmlUCSIsPrivateUseArea__internal_alias")));
 #define xmlUCSIsPrivateUseArea xmlUCSIsPrivateUseArea__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsRunic
+extern __typeof (xmlUCSIsRunic) xmlUCSIsRunic __attribute((alias("xmlUCSIsRunic__internal_alias")));
+#else
+#ifndef xmlUCSIsRunic
 extern __typeof (xmlUCSIsRunic) xmlUCSIsRunic__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsRunic) xmlUCSIsRunic __attribute((alias("xmlUCSIsRunic__internal_alias")));
 #define xmlUCSIsRunic xmlUCSIsRunic__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsShavian
+extern __typeof (xmlUCSIsShavian) xmlUCSIsShavian __attribute((alias("xmlUCSIsShavian__internal_alias")));
+#else
+#ifndef xmlUCSIsShavian
 extern __typeof (xmlUCSIsShavian) xmlUCSIsShavian__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsShavian) xmlUCSIsShavian __attribute((alias("xmlUCSIsShavian__internal_alias")));
 #define xmlUCSIsShavian xmlUCSIsShavian__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsSinhala
+extern __typeof (xmlUCSIsSinhala) xmlUCSIsSinhala __attribute((alias("xmlUCSIsSinhala__internal_alias")));
+#else
+#ifndef xmlUCSIsSinhala
 extern __typeof (xmlUCSIsSinhala) xmlUCSIsSinhala__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsSinhala) xmlUCSIsSinhala __attribute((alias("xmlUCSIsSinhala__internal_alias")));
 #define xmlUCSIsSinhala xmlUCSIsSinhala__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsSmallFormVariants
+extern __typeof (xmlUCSIsSmallFormVariants) xmlUCSIsSmallFormVariants __attribute((alias("xmlUCSIsSmallFormVariants__internal_alias")));
+#else
+#ifndef xmlUCSIsSmallFormVariants
 extern __typeof (xmlUCSIsSmallFormVariants) xmlUCSIsSmallFormVariants__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsSmallFormVariants) xmlUCSIsSmallFormVariants __attribute((alias("xmlUCSIsSmallFormVariants__internal_alias")));
 #define xmlUCSIsSmallFormVariants xmlUCSIsSmallFormVariants__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsSpacingModifierLetters
+extern __typeof (xmlUCSIsSpacingModifierLetters) xmlUCSIsSpacingModifierLetters __attribute((alias("xmlUCSIsSpacingModifierLetters__internal_alias")));
+#else
+#ifndef xmlUCSIsSpacingModifierLetters
 extern __typeof (xmlUCSIsSpacingModifierLetters) xmlUCSIsSpacingModifierLetters__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsSpacingModifierLetters) xmlUCSIsSpacingModifierLetters __attribute((alias("xmlUCSIsSpacingModifierLetters__internal_alias")));
 #define xmlUCSIsSpacingModifierLetters xmlUCSIsSpacingModifierLetters__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsSpecials
+extern __typeof (xmlUCSIsSpecials) xmlUCSIsSpecials __attribute((alias("xmlUCSIsSpecials__internal_alias")));
+#else
+#ifndef xmlUCSIsSpecials
 extern __typeof (xmlUCSIsSpecials) xmlUCSIsSpecials__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsSpecials) xmlUCSIsSpecials __attribute((alias("xmlUCSIsSpecials__internal_alias")));
 #define xmlUCSIsSpecials xmlUCSIsSpecials__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsSuperscriptsandSubscripts
+extern __typeof (xmlUCSIsSuperscriptsandSubscripts) xmlUCSIsSuperscriptsandSubscripts __attribute((alias("xmlUCSIsSuperscriptsandSubscripts__internal_alias")));
+#else
+#ifndef xmlUCSIsSuperscriptsandSubscripts
 extern __typeof (xmlUCSIsSuperscriptsandSubscripts) xmlUCSIsSuperscriptsandSubscripts__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsSuperscriptsandSubscripts) xmlUCSIsSuperscriptsandSubscripts __attribute((alias("xmlUCSIsSuperscriptsandSubscripts__internal_alias")));
 #define xmlUCSIsSuperscriptsandSubscripts xmlUCSIsSuperscriptsandSubscripts__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsSupplementalArrowsA
+extern __typeof (xmlUCSIsSupplementalArrowsA) xmlUCSIsSupplementalArrowsA __attribute((alias("xmlUCSIsSupplementalArrowsA__internal_alias")));
+#else
+#ifndef xmlUCSIsSupplementalArrowsA
 extern __typeof (xmlUCSIsSupplementalArrowsA) xmlUCSIsSupplementalArrowsA__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsSupplementalArrowsA) xmlUCSIsSupplementalArrowsA __attribute((alias("xmlUCSIsSupplementalArrowsA__internal_alias")));
 #define xmlUCSIsSupplementalArrowsA xmlUCSIsSupplementalArrowsA__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsSupplementalArrowsB
+extern __typeof (xmlUCSIsSupplementalArrowsB) xmlUCSIsSupplementalArrowsB __attribute((alias("xmlUCSIsSupplementalArrowsB__internal_alias")));
+#else
+#ifndef xmlUCSIsSupplementalArrowsB
 extern __typeof (xmlUCSIsSupplementalArrowsB) xmlUCSIsSupplementalArrowsB__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsSupplementalArrowsB) xmlUCSIsSupplementalArrowsB __attribute((alias("xmlUCSIsSupplementalArrowsB__internal_alias")));
 #define xmlUCSIsSupplementalArrowsB xmlUCSIsSupplementalArrowsB__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsSupplementalMathematicalOperators
+extern __typeof (xmlUCSIsSupplementalMathematicalOperators) xmlUCSIsSupplementalMathematicalOperators __attribute((alias("xmlUCSIsSupplementalMathematicalOperators__internal_alias")));
+#else
+#ifndef xmlUCSIsSupplementalMathematicalOperators
 extern __typeof (xmlUCSIsSupplementalMathematicalOperators) xmlUCSIsSupplementalMathematicalOperators__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsSupplementalMathematicalOperators) xmlUCSIsSupplementalMathematicalOperators __attribute((alias("xmlUCSIsSupplementalMathematicalOperators__internal_alias")));
 #define xmlUCSIsSupplementalMathematicalOperators xmlUCSIsSupplementalMathematicalOperators__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsSupplementaryPrivateUseAreaA
+extern __typeof (xmlUCSIsSupplementaryPrivateUseAreaA) xmlUCSIsSupplementaryPrivateUseAreaA __attribute((alias("xmlUCSIsSupplementaryPrivateUseAreaA__internal_alias")));
+#else
+#ifndef xmlUCSIsSupplementaryPrivateUseAreaA
 extern __typeof (xmlUCSIsSupplementaryPrivateUseAreaA) xmlUCSIsSupplementaryPrivateUseAreaA__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsSupplementaryPrivateUseAreaA) xmlUCSIsSupplementaryPrivateUseAreaA __attribute((alias("xmlUCSIsSupplementaryPrivateUseAreaA__internal_alias")));
 #define xmlUCSIsSupplementaryPrivateUseAreaA xmlUCSIsSupplementaryPrivateUseAreaA__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsSupplementaryPrivateUseAreaB
+extern __typeof (xmlUCSIsSupplementaryPrivateUseAreaB) xmlUCSIsSupplementaryPrivateUseAreaB __attribute((alias("xmlUCSIsSupplementaryPrivateUseAreaB__internal_alias")));
+#else
+#ifndef xmlUCSIsSupplementaryPrivateUseAreaB
 extern __typeof (xmlUCSIsSupplementaryPrivateUseAreaB) xmlUCSIsSupplementaryPrivateUseAreaB__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsSupplementaryPrivateUseAreaB) xmlUCSIsSupplementaryPrivateUseAreaB __attribute((alias("xmlUCSIsSupplementaryPrivateUseAreaB__internal_alias")));
 #define xmlUCSIsSupplementaryPrivateUseAreaB xmlUCSIsSupplementaryPrivateUseAreaB__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsSyriac
+extern __typeof (xmlUCSIsSyriac) xmlUCSIsSyriac __attribute((alias("xmlUCSIsSyriac__internal_alias")));
+#else
+#ifndef xmlUCSIsSyriac
 extern __typeof (xmlUCSIsSyriac) xmlUCSIsSyriac__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsSyriac) xmlUCSIsSyriac __attribute((alias("xmlUCSIsSyriac__internal_alias")));
 #define xmlUCSIsSyriac xmlUCSIsSyriac__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsTagalog
+extern __typeof (xmlUCSIsTagalog) xmlUCSIsTagalog __attribute((alias("xmlUCSIsTagalog__internal_alias")));
+#else
+#ifndef xmlUCSIsTagalog
 extern __typeof (xmlUCSIsTagalog) xmlUCSIsTagalog__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsTagalog) xmlUCSIsTagalog __attribute((alias("xmlUCSIsTagalog__internal_alias")));
 #define xmlUCSIsTagalog xmlUCSIsTagalog__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsTagbanwa
+extern __typeof (xmlUCSIsTagbanwa) xmlUCSIsTagbanwa __attribute((alias("xmlUCSIsTagbanwa__internal_alias")));
+#else
+#ifndef xmlUCSIsTagbanwa
 extern __typeof (xmlUCSIsTagbanwa) xmlUCSIsTagbanwa__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsTagbanwa) xmlUCSIsTagbanwa __attribute((alias("xmlUCSIsTagbanwa__internal_alias")));
 #define xmlUCSIsTagbanwa xmlUCSIsTagbanwa__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsTags
+extern __typeof (xmlUCSIsTags) xmlUCSIsTags __attribute((alias("xmlUCSIsTags__internal_alias")));
+#else
+#ifndef xmlUCSIsTags
 extern __typeof (xmlUCSIsTags) xmlUCSIsTags__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsTags) xmlUCSIsTags __attribute((alias("xmlUCSIsTags__internal_alias")));
 #define xmlUCSIsTags xmlUCSIsTags__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsTaiLe
+extern __typeof (xmlUCSIsTaiLe) xmlUCSIsTaiLe __attribute((alias("xmlUCSIsTaiLe__internal_alias")));
+#else
+#ifndef xmlUCSIsTaiLe
 extern __typeof (xmlUCSIsTaiLe) xmlUCSIsTaiLe__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsTaiLe) xmlUCSIsTaiLe __attribute((alias("xmlUCSIsTaiLe__internal_alias")));
 #define xmlUCSIsTaiLe xmlUCSIsTaiLe__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsTaiXuanJingSymbols
+extern __typeof (xmlUCSIsTaiXuanJingSymbols) xmlUCSIsTaiXuanJingSymbols __attribute((alias("xmlUCSIsTaiXuanJingSymbols__internal_alias")));
+#else
+#ifndef xmlUCSIsTaiXuanJingSymbols
 extern __typeof (xmlUCSIsTaiXuanJingSymbols) xmlUCSIsTaiXuanJingSymbols__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsTaiXuanJingSymbols) xmlUCSIsTaiXuanJingSymbols __attribute((alias("xmlUCSIsTaiXuanJingSymbols__internal_alias")));
 #define xmlUCSIsTaiXuanJingSymbols xmlUCSIsTaiXuanJingSymbols__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsTamil
+extern __typeof (xmlUCSIsTamil) xmlUCSIsTamil __attribute((alias("xmlUCSIsTamil__internal_alias")));
+#else
+#ifndef xmlUCSIsTamil
 extern __typeof (xmlUCSIsTamil) xmlUCSIsTamil__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsTamil) xmlUCSIsTamil __attribute((alias("xmlUCSIsTamil__internal_alias")));
 #define xmlUCSIsTamil xmlUCSIsTamil__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsTelugu
+extern __typeof (xmlUCSIsTelugu) xmlUCSIsTelugu __attribute((alias("xmlUCSIsTelugu__internal_alias")));
+#else
+#ifndef xmlUCSIsTelugu
 extern __typeof (xmlUCSIsTelugu) xmlUCSIsTelugu__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsTelugu) xmlUCSIsTelugu __attribute((alias("xmlUCSIsTelugu__internal_alias")));
 #define xmlUCSIsTelugu xmlUCSIsTelugu__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsThaana
+extern __typeof (xmlUCSIsThaana) xmlUCSIsThaana __attribute((alias("xmlUCSIsThaana__internal_alias")));
+#else
+#ifndef xmlUCSIsThaana
 extern __typeof (xmlUCSIsThaana) xmlUCSIsThaana__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsThaana) xmlUCSIsThaana __attribute((alias("xmlUCSIsThaana__internal_alias")));
 #define xmlUCSIsThaana xmlUCSIsThaana__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsThai
+extern __typeof (xmlUCSIsThai) xmlUCSIsThai __attribute((alias("xmlUCSIsThai__internal_alias")));
+#else
+#ifndef xmlUCSIsThai
 extern __typeof (xmlUCSIsThai) xmlUCSIsThai__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsThai) xmlUCSIsThai __attribute((alias("xmlUCSIsThai__internal_alias")));
 #define xmlUCSIsThai xmlUCSIsThai__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsTibetan
+extern __typeof (xmlUCSIsTibetan) xmlUCSIsTibetan __attribute((alias("xmlUCSIsTibetan__internal_alias")));
+#else
+#ifndef xmlUCSIsTibetan
 extern __typeof (xmlUCSIsTibetan) xmlUCSIsTibetan__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsTibetan) xmlUCSIsTibetan __attribute((alias("xmlUCSIsTibetan__internal_alias")));
 #define xmlUCSIsTibetan xmlUCSIsTibetan__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsUgaritic
+extern __typeof (xmlUCSIsUgaritic) xmlUCSIsUgaritic __attribute((alias("xmlUCSIsUgaritic__internal_alias")));
+#else
+#ifndef xmlUCSIsUgaritic
 extern __typeof (xmlUCSIsUgaritic) xmlUCSIsUgaritic__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsUgaritic) xmlUCSIsUgaritic __attribute((alias("xmlUCSIsUgaritic__internal_alias")));
 #define xmlUCSIsUgaritic xmlUCSIsUgaritic__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsUnifiedCanadianAboriginalSyllabics
+extern __typeof (xmlUCSIsUnifiedCanadianAboriginalSyllabics) xmlUCSIsUnifiedCanadianAboriginalSyllabics __attribute((alias("xmlUCSIsUnifiedCanadianAboriginalSyllabics__internal_alias")));
+#else
+#ifndef xmlUCSIsUnifiedCanadianAboriginalSyllabics
 extern __typeof (xmlUCSIsUnifiedCanadianAboriginalSyllabics) xmlUCSIsUnifiedCanadianAboriginalSyllabics__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsUnifiedCanadianAboriginalSyllabics) xmlUCSIsUnifiedCanadianAboriginalSyllabics __attribute((alias("xmlUCSIsUnifiedCanadianAboriginalSyllabics__internal_alias")));
 #define xmlUCSIsUnifiedCanadianAboriginalSyllabics xmlUCSIsUnifiedCanadianAboriginalSyllabics__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsVariationSelectors
+extern __typeof (xmlUCSIsVariationSelectors) xmlUCSIsVariationSelectors __attribute((alias("xmlUCSIsVariationSelectors__internal_alias")));
+#else
+#ifndef xmlUCSIsVariationSelectors
 extern __typeof (xmlUCSIsVariationSelectors) xmlUCSIsVariationSelectors__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsVariationSelectors) xmlUCSIsVariationSelectors __attribute((alias("xmlUCSIsVariationSelectors__internal_alias")));
 #define xmlUCSIsVariationSelectors xmlUCSIsVariationSelectors__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsVariationSelectorsSupplement
+extern __typeof (xmlUCSIsVariationSelectorsSupplement) xmlUCSIsVariationSelectorsSupplement __attribute((alias("xmlUCSIsVariationSelectorsSupplement__internal_alias")));
+#else
+#ifndef xmlUCSIsVariationSelectorsSupplement
 extern __typeof (xmlUCSIsVariationSelectorsSupplement) xmlUCSIsVariationSelectorsSupplement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsVariationSelectorsSupplement) xmlUCSIsVariationSelectorsSupplement __attribute((alias("xmlUCSIsVariationSelectorsSupplement__internal_alias")));
 #define xmlUCSIsVariationSelectorsSupplement xmlUCSIsVariationSelectorsSupplement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsYiRadicals
+extern __typeof (xmlUCSIsYiRadicals) xmlUCSIsYiRadicals __attribute((alias("xmlUCSIsYiRadicals__internal_alias")));
+#else
+#ifndef xmlUCSIsYiRadicals
 extern __typeof (xmlUCSIsYiRadicals) xmlUCSIsYiRadicals__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsYiRadicals) xmlUCSIsYiRadicals __attribute((alias("xmlUCSIsYiRadicals__internal_alias")));
 #define xmlUCSIsYiRadicals xmlUCSIsYiRadicals__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsYiSyllables
+extern __typeof (xmlUCSIsYiSyllables) xmlUCSIsYiSyllables __attribute((alias("xmlUCSIsYiSyllables__internal_alias")));
+#else
+#ifndef xmlUCSIsYiSyllables
 extern __typeof (xmlUCSIsYiSyllables) xmlUCSIsYiSyllables__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsYiSyllables) xmlUCSIsYiSyllables __attribute((alias("xmlUCSIsYiSyllables__internal_alias")));
 #define xmlUCSIsYiSyllables xmlUCSIsYiSyllables__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_UNICODE_ENABLED)
+#ifdef bottom_xmlunicode
+#undef xmlUCSIsYijingHexagramSymbols
+extern __typeof (xmlUCSIsYijingHexagramSymbols) xmlUCSIsYijingHexagramSymbols __attribute((alias("xmlUCSIsYijingHexagramSymbols__internal_alias")));
+#else
+#ifndef xmlUCSIsYijingHexagramSymbols
 extern __typeof (xmlUCSIsYijingHexagramSymbols) xmlUCSIsYijingHexagramSymbols__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUCSIsYijingHexagramSymbols) xmlUCSIsYijingHexagramSymbols __attribute((alias("xmlUCSIsYijingHexagramSymbols__internal_alias")));
 #define xmlUCSIsYijingHexagramSymbols xmlUCSIsYijingHexagramSymbols__internal_alias
 #endif
+#endif
+#endif
 
+#ifdef bottom_uri
+#undef xmlURIEscape
+extern __typeof (xmlURIEscape) xmlURIEscape __attribute((alias("xmlURIEscape__internal_alias")));
+#else
+#ifndef xmlURIEscape
 extern __typeof (xmlURIEscape) xmlURIEscape__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlURIEscape) xmlURIEscape __attribute((alias("xmlURIEscape__internal_alias")));
 #define xmlURIEscape xmlURIEscape__internal_alias
+#endif
+#endif
 
+#ifdef bottom_uri
+#undef xmlURIEscapeStr
+extern __typeof (xmlURIEscapeStr) xmlURIEscapeStr __attribute((alias("xmlURIEscapeStr__internal_alias")));
+#else
+#ifndef xmlURIEscapeStr
 extern __typeof (xmlURIEscapeStr) xmlURIEscapeStr__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlURIEscapeStr) xmlURIEscapeStr __attribute((alias("xmlURIEscapeStr__internal_alias")));
 #define xmlURIEscapeStr xmlURIEscapeStr__internal_alias
+#endif
+#endif
 
+#ifdef bottom_uri
+#undef xmlURIUnescapeString
+extern __typeof (xmlURIUnescapeString) xmlURIUnescapeString __attribute((alias("xmlURIUnescapeString__internal_alias")));
+#else
+#ifndef xmlURIUnescapeString
 extern __typeof (xmlURIUnescapeString) xmlURIUnescapeString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlURIUnescapeString) xmlURIUnescapeString __attribute((alias("xmlURIUnescapeString__internal_alias")));
 #define xmlURIUnescapeString xmlURIUnescapeString__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlUTF8Charcmp
+extern __typeof (xmlUTF8Charcmp) xmlUTF8Charcmp __attribute((alias("xmlUTF8Charcmp__internal_alias")));
+#else
+#ifndef xmlUTF8Charcmp
 extern __typeof (xmlUTF8Charcmp) xmlUTF8Charcmp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUTF8Charcmp) xmlUTF8Charcmp __attribute((alias("xmlUTF8Charcmp__internal_alias")));
 #define xmlUTF8Charcmp xmlUTF8Charcmp__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlUTF8Size
+extern __typeof (xmlUTF8Size) xmlUTF8Size __attribute((alias("xmlUTF8Size__internal_alias")));
+#else
+#ifndef xmlUTF8Size
 extern __typeof (xmlUTF8Size) xmlUTF8Size__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUTF8Size) xmlUTF8Size __attribute((alias("xmlUTF8Size__internal_alias")));
 #define xmlUTF8Size xmlUTF8Size__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlUTF8Strlen
+extern __typeof (xmlUTF8Strlen) xmlUTF8Strlen __attribute((alias("xmlUTF8Strlen__internal_alias")));
+#else
+#ifndef xmlUTF8Strlen
 extern __typeof (xmlUTF8Strlen) xmlUTF8Strlen__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUTF8Strlen) xmlUTF8Strlen __attribute((alias("xmlUTF8Strlen__internal_alias")));
 #define xmlUTF8Strlen xmlUTF8Strlen__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlUTF8Strloc
+extern __typeof (xmlUTF8Strloc) xmlUTF8Strloc __attribute((alias("xmlUTF8Strloc__internal_alias")));
+#else
+#ifndef xmlUTF8Strloc
 extern __typeof (xmlUTF8Strloc) xmlUTF8Strloc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUTF8Strloc) xmlUTF8Strloc __attribute((alias("xmlUTF8Strloc__internal_alias")));
 #define xmlUTF8Strloc xmlUTF8Strloc__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlUTF8Strndup
+extern __typeof (xmlUTF8Strndup) xmlUTF8Strndup __attribute((alias("xmlUTF8Strndup__internal_alias")));
+#else
+#ifndef xmlUTF8Strndup
 extern __typeof (xmlUTF8Strndup) xmlUTF8Strndup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUTF8Strndup) xmlUTF8Strndup __attribute((alias("xmlUTF8Strndup__internal_alias")));
 #define xmlUTF8Strndup xmlUTF8Strndup__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlUTF8Strpos
+extern __typeof (xmlUTF8Strpos) xmlUTF8Strpos __attribute((alias("xmlUTF8Strpos__internal_alias")));
+#else
+#ifndef xmlUTF8Strpos
 extern __typeof (xmlUTF8Strpos) xmlUTF8Strpos__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUTF8Strpos) xmlUTF8Strpos __attribute((alias("xmlUTF8Strpos__internal_alias")));
 #define xmlUTF8Strpos xmlUTF8Strpos__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlUTF8Strsize
+extern __typeof (xmlUTF8Strsize) xmlUTF8Strsize __attribute((alias("xmlUTF8Strsize__internal_alias")));
+#else
+#ifndef xmlUTF8Strsize
 extern __typeof (xmlUTF8Strsize) xmlUTF8Strsize__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUTF8Strsize) xmlUTF8Strsize __attribute((alias("xmlUTF8Strsize__internal_alias")));
 #define xmlUTF8Strsize xmlUTF8Strsize__internal_alias
+#endif
+#endif
 
+#ifdef bottom_xmlstring
+#undef xmlUTF8Strsub
+extern __typeof (xmlUTF8Strsub) xmlUTF8Strsub __attribute((alias("xmlUTF8Strsub__internal_alias")));
+#else
+#ifndef xmlUTF8Strsub
 extern __typeof (xmlUTF8Strsub) xmlUTF8Strsub__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUTF8Strsub) xmlUTF8Strsub __attribute((alias("xmlUTF8Strsub__internal_alias")));
 #define xmlUTF8Strsub xmlUTF8Strsub__internal_alias
+#endif
+#endif
 
+#ifdef bottom_tree
+#undef xmlUnlinkNode
+extern __typeof (xmlUnlinkNode) xmlUnlinkNode __attribute((alias("xmlUnlinkNode__internal_alias")));
+#else
+#ifndef xmlUnlinkNode
 extern __typeof (xmlUnlinkNode) xmlUnlinkNode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUnlinkNode) xmlUnlinkNode __attribute((alias("xmlUnlinkNode__internal_alias")));
 #define xmlUnlinkNode xmlUnlinkNode__internal_alias
+#endif
+#endif
 
+#ifdef bottom_threads
+#undef xmlUnlockLibrary
+extern __typeof (xmlUnlockLibrary) xmlUnlockLibrary __attribute((alias("xmlUnlockLibrary__internal_alias")));
+#else
+#ifndef xmlUnlockLibrary
 extern __typeof (xmlUnlockLibrary) xmlUnlockLibrary__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUnlockLibrary) xmlUnlockLibrary __attribute((alias("xmlUnlockLibrary__internal_alias")));
 #define xmlUnlockLibrary xmlUnlockLibrary__internal_alias
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_tree
+#undef xmlUnsetNsProp
+extern __typeof (xmlUnsetNsProp) xmlUnsetNsProp __attribute((alias("xmlUnsetNsProp__internal_alias")));
+#else
+#ifndef xmlUnsetNsProp
 extern __typeof (xmlUnsetNsProp) xmlUnsetNsProp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUnsetNsProp) xmlUnsetNsProp __attribute((alias("xmlUnsetNsProp__internal_alias")));
 #define xmlUnsetNsProp xmlUnsetNsProp__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_tree
+#undef xmlUnsetProp
+extern __typeof (xmlUnsetProp) xmlUnsetProp __attribute((alias("xmlUnsetProp__internal_alias")));
+#else
+#ifndef xmlUnsetProp
 extern __typeof (xmlUnsetProp) xmlUnsetProp__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlUnsetProp) xmlUnsetProp __attribute((alias("xmlUnsetProp__internal_alias")));
 #define xmlUnsetProp xmlUnsetProp__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidBuildContentModel
+extern __typeof (xmlValidBuildContentModel) xmlValidBuildContentModel __attribute((alias("xmlValidBuildContentModel__internal_alias")));
+#else
+#ifndef xmlValidBuildContentModel
 extern __typeof (xmlValidBuildContentModel) xmlValidBuildContentModel__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidBuildContentModel) xmlValidBuildContentModel __attribute((alias("xmlValidBuildContentModel__internal_alias")));
 #define xmlValidBuildContentModel xmlValidBuildContentModel__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidCtxtNormalizeAttributeValue
+extern __typeof (xmlValidCtxtNormalizeAttributeValue) xmlValidCtxtNormalizeAttributeValue __attribute((alias("xmlValidCtxtNormalizeAttributeValue__internal_alias")));
+#else
+#ifndef xmlValidCtxtNormalizeAttributeValue
 extern __typeof (xmlValidCtxtNormalizeAttributeValue) xmlValidCtxtNormalizeAttributeValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidCtxtNormalizeAttributeValue) xmlValidCtxtNormalizeAttributeValue __attribute((alias("xmlValidCtxtNormalizeAttributeValue__internal_alias")));
 #define xmlValidCtxtNormalizeAttributeValue xmlValidCtxtNormalizeAttributeValue__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidGetPotentialChildren
+extern __typeof (xmlValidGetPotentialChildren) xmlValidGetPotentialChildren __attribute((alias("xmlValidGetPotentialChildren__internal_alias")));
+#else
+#ifndef xmlValidGetPotentialChildren
 extern __typeof (xmlValidGetPotentialChildren) xmlValidGetPotentialChildren__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidGetPotentialChildren) xmlValidGetPotentialChildren __attribute((alias("xmlValidGetPotentialChildren__internal_alias")));
 #define xmlValidGetPotentialChildren xmlValidGetPotentialChildren__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidGetValidElements
+extern __typeof (xmlValidGetValidElements) xmlValidGetValidElements __attribute((alias("xmlValidGetValidElements__internal_alias")));
+#else
+#ifndef xmlValidGetValidElements
 extern __typeof (xmlValidGetValidElements) xmlValidGetValidElements__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidGetValidElements) xmlValidGetValidElements __attribute((alias("xmlValidGetValidElements__internal_alias")));
 #define xmlValidGetValidElements xmlValidGetValidElements__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidNormalizeAttributeValue
+extern __typeof (xmlValidNormalizeAttributeValue) xmlValidNormalizeAttributeValue __attribute((alias("xmlValidNormalizeAttributeValue__internal_alias")));
+#else
+#ifndef xmlValidNormalizeAttributeValue
 extern __typeof (xmlValidNormalizeAttributeValue) xmlValidNormalizeAttributeValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidNormalizeAttributeValue) xmlValidNormalizeAttributeValue __attribute((alias("xmlValidNormalizeAttributeValue__internal_alias")));
 #define xmlValidNormalizeAttributeValue xmlValidNormalizeAttributeValue__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidateAttributeDecl
+extern __typeof (xmlValidateAttributeDecl) xmlValidateAttributeDecl __attribute((alias("xmlValidateAttributeDecl__internal_alias")));
+#else
+#ifndef xmlValidateAttributeDecl
 extern __typeof (xmlValidateAttributeDecl) xmlValidateAttributeDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidateAttributeDecl) xmlValidateAttributeDecl __attribute((alias("xmlValidateAttributeDecl__internal_alias")));
 #define xmlValidateAttributeDecl xmlValidateAttributeDecl__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidateAttributeValue
+extern __typeof (xmlValidateAttributeValue) xmlValidateAttributeValue __attribute((alias("xmlValidateAttributeValue__internal_alias")));
+#else
+#ifndef xmlValidateAttributeValue
 extern __typeof (xmlValidateAttributeValue) xmlValidateAttributeValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidateAttributeValue) xmlValidateAttributeValue __attribute((alias("xmlValidateAttributeValue__internal_alias")));
 #define xmlValidateAttributeValue xmlValidateAttributeValue__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidateDocument
+extern __typeof (xmlValidateDocument) xmlValidateDocument __attribute((alias("xmlValidateDocument__internal_alias")));
+#else
+#ifndef xmlValidateDocument
 extern __typeof (xmlValidateDocument) xmlValidateDocument__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidateDocument) xmlValidateDocument __attribute((alias("xmlValidateDocument__internal_alias")));
 #define xmlValidateDocument xmlValidateDocument__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidateDocumentFinal
+extern __typeof (xmlValidateDocumentFinal) xmlValidateDocumentFinal __attribute((alias("xmlValidateDocumentFinal__internal_alias")));
+#else
+#ifndef xmlValidateDocumentFinal
 extern __typeof (xmlValidateDocumentFinal) xmlValidateDocumentFinal__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidateDocumentFinal) xmlValidateDocumentFinal __attribute((alias("xmlValidateDocumentFinal__internal_alias")));
 #define xmlValidateDocumentFinal xmlValidateDocumentFinal__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidateDtd
+extern __typeof (xmlValidateDtd) xmlValidateDtd __attribute((alias("xmlValidateDtd__internal_alias")));
+#else
+#ifndef xmlValidateDtd
 extern __typeof (xmlValidateDtd) xmlValidateDtd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidateDtd) xmlValidateDtd __attribute((alias("xmlValidateDtd__internal_alias")));
 #define xmlValidateDtd xmlValidateDtd__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidateDtdFinal
+extern __typeof (xmlValidateDtdFinal) xmlValidateDtdFinal __attribute((alias("xmlValidateDtdFinal__internal_alias")));
+#else
+#ifndef xmlValidateDtdFinal
 extern __typeof (xmlValidateDtdFinal) xmlValidateDtdFinal__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidateDtdFinal) xmlValidateDtdFinal __attribute((alias("xmlValidateDtdFinal__internal_alias")));
 #define xmlValidateDtdFinal xmlValidateDtdFinal__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidateElement
+extern __typeof (xmlValidateElement) xmlValidateElement __attribute((alias("xmlValidateElement__internal_alias")));
+#else
+#ifndef xmlValidateElement
 extern __typeof (xmlValidateElement) xmlValidateElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidateElement) xmlValidateElement __attribute((alias("xmlValidateElement__internal_alias")));
 #define xmlValidateElement xmlValidateElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidateElementDecl
+extern __typeof (xmlValidateElementDecl) xmlValidateElementDecl __attribute((alias("xmlValidateElementDecl__internal_alias")));
+#else
+#ifndef xmlValidateElementDecl
 extern __typeof (xmlValidateElementDecl) xmlValidateElementDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidateElementDecl) xmlValidateElementDecl __attribute((alias("xmlValidateElementDecl__internal_alias")));
 #define xmlValidateElementDecl xmlValidateElementDecl__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED)
+#ifdef bottom_tree
+#undef xmlValidateNCName
+extern __typeof (xmlValidateNCName) xmlValidateNCName __attribute((alias("xmlValidateNCName__internal_alias")));
+#else
+#ifndef xmlValidateNCName
 extern __typeof (xmlValidateNCName) xmlValidateNCName__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidateNCName) xmlValidateNCName __attribute((alias("xmlValidateNCName__internal_alias")));
 #define xmlValidateNCName xmlValidateNCName__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_tree
+#undef xmlValidateNMToken
+extern __typeof (xmlValidateNMToken) xmlValidateNMToken __attribute((alias("xmlValidateNMToken__internal_alias")));
+#else
+#ifndef xmlValidateNMToken
 extern __typeof (xmlValidateNMToken) xmlValidateNMToken__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidateNMToken) xmlValidateNMToken __attribute((alias("xmlValidateNMToken__internal_alias")));
 #define xmlValidateNMToken xmlValidateNMToken__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_tree
+#undef xmlValidateName
+extern __typeof (xmlValidateName) xmlValidateName __attribute((alias("xmlValidateName__internal_alias")));
+#else
+#ifndef xmlValidateName
 extern __typeof (xmlValidateName) xmlValidateName__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidateName) xmlValidateName __attribute((alias("xmlValidateName__internal_alias")));
 #define xmlValidateName xmlValidateName__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidateNameValue
+extern __typeof (xmlValidateNameValue) xmlValidateNameValue __attribute((alias("xmlValidateNameValue__internal_alias")));
+#else
+#ifndef xmlValidateNameValue
 extern __typeof (xmlValidateNameValue) xmlValidateNameValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidateNameValue) xmlValidateNameValue __attribute((alias("xmlValidateNameValue__internal_alias")));
 #define xmlValidateNameValue xmlValidateNameValue__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidateNamesValue
+extern __typeof (xmlValidateNamesValue) xmlValidateNamesValue __attribute((alias("xmlValidateNamesValue__internal_alias")));
+#else
+#ifndef xmlValidateNamesValue
 extern __typeof (xmlValidateNamesValue) xmlValidateNamesValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidateNamesValue) xmlValidateNamesValue __attribute((alias("xmlValidateNamesValue__internal_alias")));
 #define xmlValidateNamesValue xmlValidateNamesValue__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidateNmtokenValue
+extern __typeof (xmlValidateNmtokenValue) xmlValidateNmtokenValue __attribute((alias("xmlValidateNmtokenValue__internal_alias")));
+#else
+#ifndef xmlValidateNmtokenValue
 extern __typeof (xmlValidateNmtokenValue) xmlValidateNmtokenValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidateNmtokenValue) xmlValidateNmtokenValue __attribute((alias("xmlValidateNmtokenValue__internal_alias")));
 #define xmlValidateNmtokenValue xmlValidateNmtokenValue__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidateNmtokensValue
+extern __typeof (xmlValidateNmtokensValue) xmlValidateNmtokensValue __attribute((alias("xmlValidateNmtokensValue__internal_alias")));
+#else
+#ifndef xmlValidateNmtokensValue
 extern __typeof (xmlValidateNmtokensValue) xmlValidateNmtokensValue__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidateNmtokensValue) xmlValidateNmtokensValue __attribute((alias("xmlValidateNmtokensValue__internal_alias")));
 #define xmlValidateNmtokensValue xmlValidateNmtokensValue__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidateNotationDecl
+extern __typeof (xmlValidateNotationDecl) xmlValidateNotationDecl __attribute((alias("xmlValidateNotationDecl__internal_alias")));
+#else
+#ifndef xmlValidateNotationDecl
 extern __typeof (xmlValidateNotationDecl) xmlValidateNotationDecl__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidateNotationDecl) xmlValidateNotationDecl __attribute((alias("xmlValidateNotationDecl__internal_alias")));
 #define xmlValidateNotationDecl xmlValidateNotationDecl__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidateNotationUse
+extern __typeof (xmlValidateNotationUse) xmlValidateNotationUse __attribute((alias("xmlValidateNotationUse__internal_alias")));
+#else
+#ifndef xmlValidateNotationUse
 extern __typeof (xmlValidateNotationUse) xmlValidateNotationUse__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidateNotationUse) xmlValidateNotationUse __attribute((alias("xmlValidateNotationUse__internal_alias")));
 #define xmlValidateNotationUse xmlValidateNotationUse__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidateOneAttribute
+extern __typeof (xmlValidateOneAttribute) xmlValidateOneAttribute __attribute((alias("xmlValidateOneAttribute__internal_alias")));
+#else
+#ifndef xmlValidateOneAttribute
 extern __typeof (xmlValidateOneAttribute) xmlValidateOneAttribute__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidateOneAttribute) xmlValidateOneAttribute __attribute((alias("xmlValidateOneAttribute__internal_alias")));
 #define xmlValidateOneAttribute xmlValidateOneAttribute__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidateOneElement
+extern __typeof (xmlValidateOneElement) xmlValidateOneElement __attribute((alias("xmlValidateOneElement__internal_alias")));
+#else
+#ifndef xmlValidateOneElement
 extern __typeof (xmlValidateOneElement) xmlValidateOneElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidateOneElement) xmlValidateOneElement __attribute((alias("xmlValidateOneElement__internal_alias")));
 #define xmlValidateOneElement xmlValidateOneElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidateOneNamespace
+extern __typeof (xmlValidateOneNamespace) xmlValidateOneNamespace __attribute((alias("xmlValidateOneNamespace__internal_alias")));
+#else
+#ifndef xmlValidateOneNamespace
 extern __typeof (xmlValidateOneNamespace) xmlValidateOneNamespace__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidateOneNamespace) xmlValidateOneNamespace __attribute((alias("xmlValidateOneNamespace__internal_alias")));
 #define xmlValidateOneNamespace xmlValidateOneNamespace__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidatePopElement
+extern __typeof (xmlValidatePopElement) xmlValidatePopElement __attribute((alias("xmlValidatePopElement__internal_alias")));
+#else
+#ifndef xmlValidatePopElement
 extern __typeof (xmlValidatePopElement) xmlValidatePopElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidatePopElement) xmlValidatePopElement __attribute((alias("xmlValidatePopElement__internal_alias")));
 #define xmlValidatePopElement xmlValidatePopElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidatePushCData
+extern __typeof (xmlValidatePushCData) xmlValidatePushCData __attribute((alias("xmlValidatePushCData__internal_alias")));
+#else
+#ifndef xmlValidatePushCData
 extern __typeof (xmlValidatePushCData) xmlValidatePushCData__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidatePushCData) xmlValidatePushCData __attribute((alias("xmlValidatePushCData__internal_alias")));
 #define xmlValidatePushCData xmlValidatePushCData__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED) && defined(LIBXML_REGEXP_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidatePushElement
+extern __typeof (xmlValidatePushElement) xmlValidatePushElement __attribute((alias("xmlValidatePushElement__internal_alias")));
+#else
+#ifndef xmlValidatePushElement
 extern __typeof (xmlValidatePushElement) xmlValidatePushElement__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidatePushElement) xmlValidatePushElement __attribute((alias("xmlValidatePushElement__internal_alias")));
 #define xmlValidatePushElement xmlValidatePushElement__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_tree
+#undef xmlValidateQName
+extern __typeof (xmlValidateQName) xmlValidateQName __attribute((alias("xmlValidateQName__internal_alias")));
+#else
+#ifndef xmlValidateQName
 extern __typeof (xmlValidateQName) xmlValidateQName__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidateQName) xmlValidateQName __attribute((alias("xmlValidateQName__internal_alias")));
 #define xmlValidateQName xmlValidateQName__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_VALID_ENABLED)
+#ifdef bottom_valid
+#undef xmlValidateRoot
+extern __typeof (xmlValidateRoot) xmlValidateRoot __attribute((alias("xmlValidateRoot__internal_alias")));
+#else
+#ifndef xmlValidateRoot
 extern __typeof (xmlValidateRoot) xmlValidateRoot__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlValidateRoot) xmlValidateRoot __attribute((alias("xmlValidateRoot__internal_alias")));
 #define xmlValidateRoot xmlValidateRoot__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XINCLUDE_ENABLED)
+#ifdef bottom_xinclude
+#undef xmlXIncludeFreeContext
+extern __typeof (xmlXIncludeFreeContext) xmlXIncludeFreeContext __attribute((alias("xmlXIncludeFreeContext__internal_alias")));
+#else
+#ifndef xmlXIncludeFreeContext
 extern __typeof (xmlXIncludeFreeContext) xmlXIncludeFreeContext__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXIncludeFreeContext) xmlXIncludeFreeContext __attribute((alias("xmlXIncludeFreeContext__internal_alias")));
 #define xmlXIncludeFreeContext xmlXIncludeFreeContext__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XINCLUDE_ENABLED)
+#ifdef bottom_xinclude
+#undef xmlXIncludeNewContext
+extern __typeof (xmlXIncludeNewContext) xmlXIncludeNewContext __attribute((alias("xmlXIncludeNewContext__internal_alias")));
+#else
+#ifndef xmlXIncludeNewContext
 extern __typeof (xmlXIncludeNewContext) xmlXIncludeNewContext__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXIncludeNewContext) xmlXIncludeNewContext __attribute((alias("xmlXIncludeNewContext__internal_alias")));
 #define xmlXIncludeNewContext xmlXIncludeNewContext__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XINCLUDE_ENABLED)
+#ifdef bottom_xinclude
+#undef xmlXIncludeProcess
+extern __typeof (xmlXIncludeProcess) xmlXIncludeProcess __attribute((alias("xmlXIncludeProcess__internal_alias")));
+#else
+#ifndef xmlXIncludeProcess
 extern __typeof (xmlXIncludeProcess) xmlXIncludeProcess__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXIncludeProcess) xmlXIncludeProcess __attribute((alias("xmlXIncludeProcess__internal_alias")));
 #define xmlXIncludeProcess xmlXIncludeProcess__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XINCLUDE_ENABLED)
+#ifdef bottom_xinclude
+#undef xmlXIncludeProcessFlags
+extern __typeof (xmlXIncludeProcessFlags) xmlXIncludeProcessFlags __attribute((alias("xmlXIncludeProcessFlags__internal_alias")));
+#else
+#ifndef xmlXIncludeProcessFlags
 extern __typeof (xmlXIncludeProcessFlags) xmlXIncludeProcessFlags__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXIncludeProcessFlags) xmlXIncludeProcessFlags __attribute((alias("xmlXIncludeProcessFlags__internal_alias")));
 #define xmlXIncludeProcessFlags xmlXIncludeProcessFlags__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XINCLUDE_ENABLED)
+#ifdef bottom_xinclude
+#undef xmlXIncludeProcessNode
+extern __typeof (xmlXIncludeProcessNode) xmlXIncludeProcessNode __attribute((alias("xmlXIncludeProcessNode__internal_alias")));
+#else
+#ifndef xmlXIncludeProcessNode
 extern __typeof (xmlXIncludeProcessNode) xmlXIncludeProcessNode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXIncludeProcessNode) xmlXIncludeProcessNode __attribute((alias("xmlXIncludeProcessNode__internal_alias")));
 #define xmlXIncludeProcessNode xmlXIncludeProcessNode__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XINCLUDE_ENABLED)
+#ifdef bottom_xinclude
+#undef xmlXIncludeProcessTree
+extern __typeof (xmlXIncludeProcessTree) xmlXIncludeProcessTree __attribute((alias("xmlXIncludeProcessTree__internal_alias")));
+#else
+#ifndef xmlXIncludeProcessTree
 extern __typeof (xmlXIncludeProcessTree) xmlXIncludeProcessTree__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXIncludeProcessTree) xmlXIncludeProcessTree __attribute((alias("xmlXIncludeProcessTree__internal_alias")));
 #define xmlXIncludeProcessTree xmlXIncludeProcessTree__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XINCLUDE_ENABLED)
+#ifdef bottom_xinclude
+#undef xmlXIncludeProcessTreeFlags
+extern __typeof (xmlXIncludeProcessTreeFlags) xmlXIncludeProcessTreeFlags __attribute((alias("xmlXIncludeProcessTreeFlags__internal_alias")));
+#else
+#ifndef xmlXIncludeProcessTreeFlags
 extern __typeof (xmlXIncludeProcessTreeFlags) xmlXIncludeProcessTreeFlags__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXIncludeProcessTreeFlags) xmlXIncludeProcessTreeFlags __attribute((alias("xmlXIncludeProcessTreeFlags__internal_alias")));
 #define xmlXIncludeProcessTreeFlags xmlXIncludeProcessTreeFlags__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XINCLUDE_ENABLED)
+#ifdef bottom_xinclude
+#undef xmlXIncludeSetFlags
+extern __typeof (xmlXIncludeSetFlags) xmlXIncludeSetFlags __attribute((alias("xmlXIncludeSetFlags__internal_alias")));
+#else
+#ifndef xmlXIncludeSetFlags
 extern __typeof (xmlXIncludeSetFlags) xmlXIncludeSetFlags__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXIncludeSetFlags) xmlXIncludeSetFlags __attribute((alias("xmlXIncludeSetFlags__internal_alias")));
 #define xmlXIncludeSetFlags xmlXIncludeSetFlags__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathAddValues
+extern __typeof (xmlXPathAddValues) xmlXPathAddValues __attribute((alias("xmlXPathAddValues__internal_alias")));
+#else
+#ifndef xmlXPathAddValues
 extern __typeof (xmlXPathAddValues) xmlXPathAddValues__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathAddValues) xmlXPathAddValues __attribute((alias("xmlXPathAddValues__internal_alias")));
 #define xmlXPathAddValues xmlXPathAddValues__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathBooleanFunction
+extern __typeof (xmlXPathBooleanFunction) xmlXPathBooleanFunction __attribute((alias("xmlXPathBooleanFunction__internal_alias")));
+#else
+#ifndef xmlXPathBooleanFunction
 extern __typeof (xmlXPathBooleanFunction) xmlXPathBooleanFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathBooleanFunction) xmlXPathBooleanFunction __attribute((alias("xmlXPathBooleanFunction__internal_alias")));
 #define xmlXPathBooleanFunction xmlXPathBooleanFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathCastBooleanToNumber
+extern __typeof (xmlXPathCastBooleanToNumber) xmlXPathCastBooleanToNumber __attribute((alias("xmlXPathCastBooleanToNumber__internal_alias")));
+#else
+#ifndef xmlXPathCastBooleanToNumber
 extern __typeof (xmlXPathCastBooleanToNumber) xmlXPathCastBooleanToNumber__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathCastBooleanToNumber) xmlXPathCastBooleanToNumber __attribute((alias("xmlXPathCastBooleanToNumber__internal_alias")));
 #define xmlXPathCastBooleanToNumber xmlXPathCastBooleanToNumber__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathCastBooleanToString
+extern __typeof (xmlXPathCastBooleanToString) xmlXPathCastBooleanToString __attribute((alias("xmlXPathCastBooleanToString__internal_alias")));
+#else
+#ifndef xmlXPathCastBooleanToString
 extern __typeof (xmlXPathCastBooleanToString) xmlXPathCastBooleanToString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathCastBooleanToString) xmlXPathCastBooleanToString __attribute((alias("xmlXPathCastBooleanToString__internal_alias")));
 #define xmlXPathCastBooleanToString xmlXPathCastBooleanToString__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathCastNodeSetToBoolean
+extern __typeof (xmlXPathCastNodeSetToBoolean) xmlXPathCastNodeSetToBoolean __attribute((alias("xmlXPathCastNodeSetToBoolean__internal_alias")));
+#else
+#ifndef xmlXPathCastNodeSetToBoolean
 extern __typeof (xmlXPathCastNodeSetToBoolean) xmlXPathCastNodeSetToBoolean__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathCastNodeSetToBoolean) xmlXPathCastNodeSetToBoolean __attribute((alias("xmlXPathCastNodeSetToBoolean__internal_alias")));
 #define xmlXPathCastNodeSetToBoolean xmlXPathCastNodeSetToBoolean__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathCastNodeSetToNumber
+extern __typeof (xmlXPathCastNodeSetToNumber) xmlXPathCastNodeSetToNumber __attribute((alias("xmlXPathCastNodeSetToNumber__internal_alias")));
+#else
+#ifndef xmlXPathCastNodeSetToNumber
 extern __typeof (xmlXPathCastNodeSetToNumber) xmlXPathCastNodeSetToNumber__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathCastNodeSetToNumber) xmlXPathCastNodeSetToNumber __attribute((alias("xmlXPathCastNodeSetToNumber__internal_alias")));
 #define xmlXPathCastNodeSetToNumber xmlXPathCastNodeSetToNumber__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathCastNodeSetToString
+extern __typeof (xmlXPathCastNodeSetToString) xmlXPathCastNodeSetToString __attribute((alias("xmlXPathCastNodeSetToString__internal_alias")));
+#else
+#ifndef xmlXPathCastNodeSetToString
 extern __typeof (xmlXPathCastNodeSetToString) xmlXPathCastNodeSetToString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathCastNodeSetToString) xmlXPathCastNodeSetToString __attribute((alias("xmlXPathCastNodeSetToString__internal_alias")));
 #define xmlXPathCastNodeSetToString xmlXPathCastNodeSetToString__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathCastNodeToNumber
+extern __typeof (xmlXPathCastNodeToNumber) xmlXPathCastNodeToNumber __attribute((alias("xmlXPathCastNodeToNumber__internal_alias")));
+#else
+#ifndef xmlXPathCastNodeToNumber
 extern __typeof (xmlXPathCastNodeToNumber) xmlXPathCastNodeToNumber__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathCastNodeToNumber) xmlXPathCastNodeToNumber __attribute((alias("xmlXPathCastNodeToNumber__internal_alias")));
 #define xmlXPathCastNodeToNumber xmlXPathCastNodeToNumber__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathCastNodeToString
+extern __typeof (xmlXPathCastNodeToString) xmlXPathCastNodeToString __attribute((alias("xmlXPathCastNodeToString__internal_alias")));
+#else
+#ifndef xmlXPathCastNodeToString
 extern __typeof (xmlXPathCastNodeToString) xmlXPathCastNodeToString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathCastNodeToString) xmlXPathCastNodeToString __attribute((alias("xmlXPathCastNodeToString__internal_alias")));
 #define xmlXPathCastNodeToString xmlXPathCastNodeToString__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathCastNumberToBoolean
+extern __typeof (xmlXPathCastNumberToBoolean) xmlXPathCastNumberToBoolean __attribute((alias("xmlXPathCastNumberToBoolean__internal_alias")));
+#else
+#ifndef xmlXPathCastNumberToBoolean
 extern __typeof (xmlXPathCastNumberToBoolean) xmlXPathCastNumberToBoolean__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathCastNumberToBoolean) xmlXPathCastNumberToBoolean __attribute((alias("xmlXPathCastNumberToBoolean__internal_alias")));
 #define xmlXPathCastNumberToBoolean xmlXPathCastNumberToBoolean__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathCastNumberToString
+extern __typeof (xmlXPathCastNumberToString) xmlXPathCastNumberToString __attribute((alias("xmlXPathCastNumberToString__internal_alias")));
+#else
+#ifndef xmlXPathCastNumberToString
 extern __typeof (xmlXPathCastNumberToString) xmlXPathCastNumberToString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathCastNumberToString) xmlXPathCastNumberToString __attribute((alias("xmlXPathCastNumberToString__internal_alias")));
 #define xmlXPathCastNumberToString xmlXPathCastNumberToString__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathCastStringToBoolean
+extern __typeof (xmlXPathCastStringToBoolean) xmlXPathCastStringToBoolean __attribute((alias("xmlXPathCastStringToBoolean__internal_alias")));
+#else
+#ifndef xmlXPathCastStringToBoolean
 extern __typeof (xmlXPathCastStringToBoolean) xmlXPathCastStringToBoolean__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathCastStringToBoolean) xmlXPathCastStringToBoolean __attribute((alias("xmlXPathCastStringToBoolean__internal_alias")));
 #define xmlXPathCastStringToBoolean xmlXPathCastStringToBoolean__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathCastStringToNumber
+extern __typeof (xmlXPathCastStringToNumber) xmlXPathCastStringToNumber __attribute((alias("xmlXPathCastStringToNumber__internal_alias")));
+#else
+#ifndef xmlXPathCastStringToNumber
 extern __typeof (xmlXPathCastStringToNumber) xmlXPathCastStringToNumber__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathCastStringToNumber) xmlXPathCastStringToNumber __attribute((alias("xmlXPathCastStringToNumber__internal_alias")));
 #define xmlXPathCastStringToNumber xmlXPathCastStringToNumber__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathCastToBoolean
+extern __typeof (xmlXPathCastToBoolean) xmlXPathCastToBoolean __attribute((alias("xmlXPathCastToBoolean__internal_alias")));
+#else
+#ifndef xmlXPathCastToBoolean
 extern __typeof (xmlXPathCastToBoolean) xmlXPathCastToBoolean__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathCastToBoolean) xmlXPathCastToBoolean __attribute((alias("xmlXPathCastToBoolean__internal_alias")));
 #define xmlXPathCastToBoolean xmlXPathCastToBoolean__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathCastToNumber
+extern __typeof (xmlXPathCastToNumber) xmlXPathCastToNumber __attribute((alias("xmlXPathCastToNumber__internal_alias")));
+#else
+#ifndef xmlXPathCastToNumber
 extern __typeof (xmlXPathCastToNumber) xmlXPathCastToNumber__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathCastToNumber) xmlXPathCastToNumber __attribute((alias("xmlXPathCastToNumber__internal_alias")));
 #define xmlXPathCastToNumber xmlXPathCastToNumber__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathCastToString
+extern __typeof (xmlXPathCastToString) xmlXPathCastToString __attribute((alias("xmlXPathCastToString__internal_alias")));
+#else
+#ifndef xmlXPathCastToString
 extern __typeof (xmlXPathCastToString) xmlXPathCastToString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathCastToString) xmlXPathCastToString __attribute((alias("xmlXPathCastToString__internal_alias")));
 #define xmlXPathCastToString xmlXPathCastToString__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathCeilingFunction
+extern __typeof (xmlXPathCeilingFunction) xmlXPathCeilingFunction __attribute((alias("xmlXPathCeilingFunction__internal_alias")));
+#else
+#ifndef xmlXPathCeilingFunction
 extern __typeof (xmlXPathCeilingFunction) xmlXPathCeilingFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathCeilingFunction) xmlXPathCeilingFunction __attribute((alias("xmlXPathCeilingFunction__internal_alias")));
 #define xmlXPathCeilingFunction xmlXPathCeilingFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathCmpNodes
+extern __typeof (xmlXPathCmpNodes) xmlXPathCmpNodes __attribute((alias("xmlXPathCmpNodes__internal_alias")));
+#else
+#ifndef xmlXPathCmpNodes
 extern __typeof (xmlXPathCmpNodes) xmlXPathCmpNodes__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathCmpNodes) xmlXPathCmpNodes __attribute((alias("xmlXPathCmpNodes__internal_alias")));
 #define xmlXPathCmpNodes xmlXPathCmpNodes__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathCompareValues
+extern __typeof (xmlXPathCompareValues) xmlXPathCompareValues __attribute((alias("xmlXPathCompareValues__internal_alias")));
+#else
+#ifndef xmlXPathCompareValues
 extern __typeof (xmlXPathCompareValues) xmlXPathCompareValues__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathCompareValues) xmlXPathCompareValues __attribute((alias("xmlXPathCompareValues__internal_alias")));
 #define xmlXPathCompareValues xmlXPathCompareValues__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathCompile
+extern __typeof (xmlXPathCompile) xmlXPathCompile __attribute((alias("xmlXPathCompile__internal_alias")));
+#else
+#ifndef xmlXPathCompile
 extern __typeof (xmlXPathCompile) xmlXPathCompile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathCompile) xmlXPathCompile __attribute((alias("xmlXPathCompile__internal_alias")));
 #define xmlXPathCompile xmlXPathCompile__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathCompiledEval
+extern __typeof (xmlXPathCompiledEval) xmlXPathCompiledEval __attribute((alias("xmlXPathCompiledEval__internal_alias")));
+#else
+#ifndef xmlXPathCompiledEval
 extern __typeof (xmlXPathCompiledEval) xmlXPathCompiledEval__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathCompiledEval) xmlXPathCompiledEval __attribute((alias("xmlXPathCompiledEval__internal_alias")));
 #define xmlXPathCompiledEval xmlXPathCompiledEval__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathConcatFunction
+extern __typeof (xmlXPathConcatFunction) xmlXPathConcatFunction __attribute((alias("xmlXPathConcatFunction__internal_alias")));
+#else
+#ifndef xmlXPathConcatFunction
 extern __typeof (xmlXPathConcatFunction) xmlXPathConcatFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathConcatFunction) xmlXPathConcatFunction __attribute((alias("xmlXPathConcatFunction__internal_alias")));
 #define xmlXPathConcatFunction xmlXPathConcatFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathContainsFunction
+extern __typeof (xmlXPathContainsFunction) xmlXPathContainsFunction __attribute((alias("xmlXPathContainsFunction__internal_alias")));
+#else
+#ifndef xmlXPathContainsFunction
 extern __typeof (xmlXPathContainsFunction) xmlXPathContainsFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathContainsFunction) xmlXPathContainsFunction __attribute((alias("xmlXPathContainsFunction__internal_alias")));
 #define xmlXPathContainsFunction xmlXPathContainsFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathConvertBoolean
+extern __typeof (xmlXPathConvertBoolean) xmlXPathConvertBoolean __attribute((alias("xmlXPathConvertBoolean__internal_alias")));
+#else
+#ifndef xmlXPathConvertBoolean
 extern __typeof (xmlXPathConvertBoolean) xmlXPathConvertBoolean__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathConvertBoolean) xmlXPathConvertBoolean __attribute((alias("xmlXPathConvertBoolean__internal_alias")));
 #define xmlXPathConvertBoolean xmlXPathConvertBoolean__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathConvertNumber
+extern __typeof (xmlXPathConvertNumber) xmlXPathConvertNumber __attribute((alias("xmlXPathConvertNumber__internal_alias")));
+#else
+#ifndef xmlXPathConvertNumber
 extern __typeof (xmlXPathConvertNumber) xmlXPathConvertNumber__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathConvertNumber) xmlXPathConvertNumber __attribute((alias("xmlXPathConvertNumber__internal_alias")));
 #define xmlXPathConvertNumber xmlXPathConvertNumber__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathConvertString
+extern __typeof (xmlXPathConvertString) xmlXPathConvertString __attribute((alias("xmlXPathConvertString__internal_alias")));
+#else
+#ifndef xmlXPathConvertString
 extern __typeof (xmlXPathConvertString) xmlXPathConvertString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathConvertString) xmlXPathConvertString __attribute((alias("xmlXPathConvertString__internal_alias")));
 #define xmlXPathConvertString xmlXPathConvertString__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathCountFunction
+extern __typeof (xmlXPathCountFunction) xmlXPathCountFunction __attribute((alias("xmlXPathCountFunction__internal_alias")));
+#else
+#ifndef xmlXPathCountFunction
 extern __typeof (xmlXPathCountFunction) xmlXPathCountFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathCountFunction) xmlXPathCountFunction __attribute((alias("xmlXPathCountFunction__internal_alias")));
 #define xmlXPathCountFunction xmlXPathCountFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathCtxtCompile
+extern __typeof (xmlXPathCtxtCompile) xmlXPathCtxtCompile __attribute((alias("xmlXPathCtxtCompile__internal_alias")));
+#else
+#ifndef xmlXPathCtxtCompile
 extern __typeof (xmlXPathCtxtCompile) xmlXPathCtxtCompile__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathCtxtCompile) xmlXPathCtxtCompile __attribute((alias("xmlXPathCtxtCompile__internal_alias")));
 #define xmlXPathCtxtCompile xmlXPathCtxtCompile__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_DEBUG_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathDebugDumpCompExpr
+extern __typeof (xmlXPathDebugDumpCompExpr) xmlXPathDebugDumpCompExpr __attribute((alias("xmlXPathDebugDumpCompExpr__internal_alias")));
+#else
+#ifndef xmlXPathDebugDumpCompExpr
 extern __typeof (xmlXPathDebugDumpCompExpr) xmlXPathDebugDumpCompExpr__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathDebugDumpCompExpr) xmlXPathDebugDumpCompExpr __attribute((alias("xmlXPathDebugDumpCompExpr__internal_alias")));
 #define xmlXPathDebugDumpCompExpr xmlXPathDebugDumpCompExpr__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED) && defined(LIBXML_DEBUG_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathDebugDumpObject
+extern __typeof (xmlXPathDebugDumpObject) xmlXPathDebugDumpObject __attribute((alias("xmlXPathDebugDumpObject__internal_alias")));
+#else
+#ifndef xmlXPathDebugDumpObject
 extern __typeof (xmlXPathDebugDumpObject) xmlXPathDebugDumpObject__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathDebugDumpObject) xmlXPathDebugDumpObject __attribute((alias("xmlXPathDebugDumpObject__internal_alias")));
 #define xmlXPathDebugDumpObject xmlXPathDebugDumpObject__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathDifference
+extern __typeof (xmlXPathDifference) xmlXPathDifference __attribute((alias("xmlXPathDifference__internal_alias")));
+#else
+#ifndef xmlXPathDifference
 extern __typeof (xmlXPathDifference) xmlXPathDifference__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathDifference) xmlXPathDifference __attribute((alias("xmlXPathDifference__internal_alias")));
 #define xmlXPathDifference xmlXPathDifference__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathDistinct
+extern __typeof (xmlXPathDistinct) xmlXPathDistinct __attribute((alias("xmlXPathDistinct__internal_alias")));
+#else
+#ifndef xmlXPathDistinct
 extern __typeof (xmlXPathDistinct) xmlXPathDistinct__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathDistinct) xmlXPathDistinct __attribute((alias("xmlXPathDistinct__internal_alias")));
 #define xmlXPathDistinct xmlXPathDistinct__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathDistinctSorted
+extern __typeof (xmlXPathDistinctSorted) xmlXPathDistinctSorted __attribute((alias("xmlXPathDistinctSorted__internal_alias")));
+#else
+#ifndef xmlXPathDistinctSorted
 extern __typeof (xmlXPathDistinctSorted) xmlXPathDistinctSorted__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathDistinctSorted) xmlXPathDistinctSorted __attribute((alias("xmlXPathDistinctSorted__internal_alias")));
 #define xmlXPathDistinctSorted xmlXPathDistinctSorted__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathDivValues
+extern __typeof (xmlXPathDivValues) xmlXPathDivValues __attribute((alias("xmlXPathDivValues__internal_alias")));
+#else
+#ifndef xmlXPathDivValues
 extern __typeof (xmlXPathDivValues) xmlXPathDivValues__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathDivValues) xmlXPathDivValues __attribute((alias("xmlXPathDivValues__internal_alias")));
 #define xmlXPathDivValues xmlXPathDivValues__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathEqualValues
+extern __typeof (xmlXPathEqualValues) xmlXPathEqualValues __attribute((alias("xmlXPathEqualValues__internal_alias")));
+#else
+#ifndef xmlXPathEqualValues
 extern __typeof (xmlXPathEqualValues) xmlXPathEqualValues__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathEqualValues) xmlXPathEqualValues __attribute((alias("xmlXPathEqualValues__internal_alias")));
 #define xmlXPathEqualValues xmlXPathEqualValues__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathErr
+extern __typeof (xmlXPathErr) xmlXPathErr __attribute((alias("xmlXPathErr__internal_alias")));
+#else
+#ifndef xmlXPathErr
 extern __typeof (xmlXPathErr) xmlXPathErr__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathErr) xmlXPathErr __attribute((alias("xmlXPathErr__internal_alias")));
 #define xmlXPathErr xmlXPathErr__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathEval
+extern __typeof (xmlXPathEval) xmlXPathEval __attribute((alias("xmlXPathEval__internal_alias")));
+#else
+#ifndef xmlXPathEval
 extern __typeof (xmlXPathEval) xmlXPathEval__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathEval) xmlXPathEval __attribute((alias("xmlXPathEval__internal_alias")));
 #define xmlXPathEval xmlXPathEval__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathEvalExpr
+extern __typeof (xmlXPathEvalExpr) xmlXPathEvalExpr __attribute((alias("xmlXPathEvalExpr__internal_alias")));
+#else
+#ifndef xmlXPathEvalExpr
 extern __typeof (xmlXPathEvalExpr) xmlXPathEvalExpr__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathEvalExpr) xmlXPathEvalExpr __attribute((alias("xmlXPathEvalExpr__internal_alias")));
 #define xmlXPathEvalExpr xmlXPathEvalExpr__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathEvalExpression
+extern __typeof (xmlXPathEvalExpression) xmlXPathEvalExpression __attribute((alias("xmlXPathEvalExpression__internal_alias")));
+#else
+#ifndef xmlXPathEvalExpression
 extern __typeof (xmlXPathEvalExpression) xmlXPathEvalExpression__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathEvalExpression) xmlXPathEvalExpression __attribute((alias("xmlXPathEvalExpression__internal_alias")));
 #define xmlXPathEvalExpression xmlXPathEvalExpression__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathEvalPredicate
+extern __typeof (xmlXPathEvalPredicate) xmlXPathEvalPredicate __attribute((alias("xmlXPathEvalPredicate__internal_alias")));
+#else
+#ifndef xmlXPathEvalPredicate
 extern __typeof (xmlXPathEvalPredicate) xmlXPathEvalPredicate__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathEvalPredicate) xmlXPathEvalPredicate __attribute((alias("xmlXPathEvalPredicate__internal_alias")));
 #define xmlXPathEvalPredicate xmlXPathEvalPredicate__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathEvaluatePredicateResult
+extern __typeof (xmlXPathEvaluatePredicateResult) xmlXPathEvaluatePredicateResult __attribute((alias("xmlXPathEvaluatePredicateResult__internal_alias")));
+#else
+#ifndef xmlXPathEvaluatePredicateResult
 extern __typeof (xmlXPathEvaluatePredicateResult) xmlXPathEvaluatePredicateResult__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathEvaluatePredicateResult) xmlXPathEvaluatePredicateResult __attribute((alias("xmlXPathEvaluatePredicateResult__internal_alias")));
 #define xmlXPathEvaluatePredicateResult xmlXPathEvaluatePredicateResult__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathFalseFunction
+extern __typeof (xmlXPathFalseFunction) xmlXPathFalseFunction __attribute((alias("xmlXPathFalseFunction__internal_alias")));
+#else
+#ifndef xmlXPathFalseFunction
 extern __typeof (xmlXPathFalseFunction) xmlXPathFalseFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathFalseFunction) xmlXPathFalseFunction __attribute((alias("xmlXPathFalseFunction__internal_alias")));
 #define xmlXPathFalseFunction xmlXPathFalseFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathFloorFunction
+extern __typeof (xmlXPathFloorFunction) xmlXPathFloorFunction __attribute((alias("xmlXPathFloorFunction__internal_alias")));
+#else
+#ifndef xmlXPathFloorFunction
 extern __typeof (xmlXPathFloorFunction) xmlXPathFloorFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathFloorFunction) xmlXPathFloorFunction __attribute((alias("xmlXPathFloorFunction__internal_alias")));
 #define xmlXPathFloorFunction xmlXPathFloorFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathFreeCompExpr
+extern __typeof (xmlXPathFreeCompExpr) xmlXPathFreeCompExpr __attribute((alias("xmlXPathFreeCompExpr__internal_alias")));
+#else
+#ifndef xmlXPathFreeCompExpr
 extern __typeof (xmlXPathFreeCompExpr) xmlXPathFreeCompExpr__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathFreeCompExpr) xmlXPathFreeCompExpr __attribute((alias("xmlXPathFreeCompExpr__internal_alias")));
 #define xmlXPathFreeCompExpr xmlXPathFreeCompExpr__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathFreeContext
+extern __typeof (xmlXPathFreeContext) xmlXPathFreeContext __attribute((alias("xmlXPathFreeContext__internal_alias")));
+#else
+#ifndef xmlXPathFreeContext
 extern __typeof (xmlXPathFreeContext) xmlXPathFreeContext__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathFreeContext) xmlXPathFreeContext __attribute((alias("xmlXPathFreeContext__internal_alias")));
 #define xmlXPathFreeContext xmlXPathFreeContext__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathFreeNodeSet
+extern __typeof (xmlXPathFreeNodeSet) xmlXPathFreeNodeSet __attribute((alias("xmlXPathFreeNodeSet__internal_alias")));
+#else
+#ifndef xmlXPathFreeNodeSet
 extern __typeof (xmlXPathFreeNodeSet) xmlXPathFreeNodeSet__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathFreeNodeSet) xmlXPathFreeNodeSet __attribute((alias("xmlXPathFreeNodeSet__internal_alias")));
 #define xmlXPathFreeNodeSet xmlXPathFreeNodeSet__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathFreeNodeSetList
+extern __typeof (xmlXPathFreeNodeSetList) xmlXPathFreeNodeSetList __attribute((alias("xmlXPathFreeNodeSetList__internal_alias")));
+#else
+#ifndef xmlXPathFreeNodeSetList
 extern __typeof (xmlXPathFreeNodeSetList) xmlXPathFreeNodeSetList__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathFreeNodeSetList) xmlXPathFreeNodeSetList __attribute((alias("xmlXPathFreeNodeSetList__internal_alias")));
 #define xmlXPathFreeNodeSetList xmlXPathFreeNodeSetList__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathFreeObject
+extern __typeof (xmlXPathFreeObject) xmlXPathFreeObject __attribute((alias("xmlXPathFreeObject__internal_alias")));
+#else
+#ifndef xmlXPathFreeObject
 extern __typeof (xmlXPathFreeObject) xmlXPathFreeObject__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathFreeObject) xmlXPathFreeObject __attribute((alias("xmlXPathFreeObject__internal_alias")));
 #define xmlXPathFreeObject xmlXPathFreeObject__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathFreeParserContext
+extern __typeof (xmlXPathFreeParserContext) xmlXPathFreeParserContext __attribute((alias("xmlXPathFreeParserContext__internal_alias")));
+#else
+#ifndef xmlXPathFreeParserContext
 extern __typeof (xmlXPathFreeParserContext) xmlXPathFreeParserContext__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathFreeParserContext) xmlXPathFreeParserContext __attribute((alias("xmlXPathFreeParserContext__internal_alias")));
 #define xmlXPathFreeParserContext xmlXPathFreeParserContext__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathFunctionLookup
+extern __typeof (xmlXPathFunctionLookup) xmlXPathFunctionLookup __attribute((alias("xmlXPathFunctionLookup__internal_alias")));
+#else
+#ifndef xmlXPathFunctionLookup
 extern __typeof (xmlXPathFunctionLookup) xmlXPathFunctionLookup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathFunctionLookup) xmlXPathFunctionLookup __attribute((alias("xmlXPathFunctionLookup__internal_alias")));
 #define xmlXPathFunctionLookup xmlXPathFunctionLookup__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathFunctionLookupNS
+extern __typeof (xmlXPathFunctionLookupNS) xmlXPathFunctionLookupNS __attribute((alias("xmlXPathFunctionLookupNS__internal_alias")));
+#else
+#ifndef xmlXPathFunctionLookupNS
 extern __typeof (xmlXPathFunctionLookupNS) xmlXPathFunctionLookupNS__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathFunctionLookupNS) xmlXPathFunctionLookupNS __attribute((alias("xmlXPathFunctionLookupNS__internal_alias")));
 #define xmlXPathFunctionLookupNS xmlXPathFunctionLookupNS__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathHasSameNodes
+extern __typeof (xmlXPathHasSameNodes) xmlXPathHasSameNodes __attribute((alias("xmlXPathHasSameNodes__internal_alias")));
+#else
+#ifndef xmlXPathHasSameNodes
 extern __typeof (xmlXPathHasSameNodes) xmlXPathHasSameNodes__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathHasSameNodes) xmlXPathHasSameNodes __attribute((alias("xmlXPathHasSameNodes__internal_alias")));
 #define xmlXPathHasSameNodes xmlXPathHasSameNodes__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathIdFunction
+extern __typeof (xmlXPathIdFunction) xmlXPathIdFunction __attribute((alias("xmlXPathIdFunction__internal_alias")));
+#else
+#ifndef xmlXPathIdFunction
 extern __typeof (xmlXPathIdFunction) xmlXPathIdFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathIdFunction) xmlXPathIdFunction __attribute((alias("xmlXPathIdFunction__internal_alias")));
 #define xmlXPathIdFunction xmlXPathIdFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathInit
+extern __typeof (xmlXPathInit) xmlXPathInit __attribute((alias("xmlXPathInit__internal_alias")));
+#else
+#ifndef xmlXPathInit
 extern __typeof (xmlXPathInit) xmlXPathInit__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathInit) xmlXPathInit __attribute((alias("xmlXPathInit__internal_alias")));
 #define xmlXPathInit xmlXPathInit__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathIntersection
+extern __typeof (xmlXPathIntersection) xmlXPathIntersection __attribute((alias("xmlXPathIntersection__internal_alias")));
+#else
+#ifndef xmlXPathIntersection
 extern __typeof (xmlXPathIntersection) xmlXPathIntersection__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathIntersection) xmlXPathIntersection __attribute((alias("xmlXPathIntersection__internal_alias")));
 #define xmlXPathIntersection xmlXPathIntersection__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathIsInf
+extern __typeof (xmlXPathIsInf) xmlXPathIsInf __attribute((alias("xmlXPathIsInf__internal_alias")));
+#else
+#ifndef xmlXPathIsInf
 extern __typeof (xmlXPathIsInf) xmlXPathIsInf__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathIsInf) xmlXPathIsInf __attribute((alias("xmlXPathIsInf__internal_alias")));
 #define xmlXPathIsInf xmlXPathIsInf__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathIsNaN
+extern __typeof (xmlXPathIsNaN) xmlXPathIsNaN __attribute((alias("xmlXPathIsNaN__internal_alias")));
+#else
+#ifndef xmlXPathIsNaN
 extern __typeof (xmlXPathIsNaN) xmlXPathIsNaN__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathIsNaN) xmlXPathIsNaN __attribute((alias("xmlXPathIsNaN__internal_alias")));
 #define xmlXPathIsNaN xmlXPathIsNaN__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathIsNodeType
+extern __typeof (xmlXPathIsNodeType) xmlXPathIsNodeType __attribute((alias("xmlXPathIsNodeType__internal_alias")));
+#else
+#ifndef xmlXPathIsNodeType
 extern __typeof (xmlXPathIsNodeType) xmlXPathIsNodeType__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathIsNodeType) xmlXPathIsNodeType __attribute((alias("xmlXPathIsNodeType__internal_alias")));
 #define xmlXPathIsNodeType xmlXPathIsNodeType__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathLangFunction
+extern __typeof (xmlXPathLangFunction) xmlXPathLangFunction __attribute((alias("xmlXPathLangFunction__internal_alias")));
+#else
+#ifndef xmlXPathLangFunction
 extern __typeof (xmlXPathLangFunction) xmlXPathLangFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathLangFunction) xmlXPathLangFunction __attribute((alias("xmlXPathLangFunction__internal_alias")));
 #define xmlXPathLangFunction xmlXPathLangFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathLastFunction
+extern __typeof (xmlXPathLastFunction) xmlXPathLastFunction __attribute((alias("xmlXPathLastFunction__internal_alias")));
+#else
+#ifndef xmlXPathLastFunction
 extern __typeof (xmlXPathLastFunction) xmlXPathLastFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathLastFunction) xmlXPathLastFunction __attribute((alias("xmlXPathLastFunction__internal_alias")));
 #define xmlXPathLastFunction xmlXPathLastFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathLeading
+extern __typeof (xmlXPathLeading) xmlXPathLeading __attribute((alias("xmlXPathLeading__internal_alias")));
+#else
+#ifndef xmlXPathLeading
 extern __typeof (xmlXPathLeading) xmlXPathLeading__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathLeading) xmlXPathLeading __attribute((alias("xmlXPathLeading__internal_alias")));
 #define xmlXPathLeading xmlXPathLeading__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathLeadingSorted
+extern __typeof (xmlXPathLeadingSorted) xmlXPathLeadingSorted __attribute((alias("xmlXPathLeadingSorted__internal_alias")));
+#else
+#ifndef xmlXPathLeadingSorted
 extern __typeof (xmlXPathLeadingSorted) xmlXPathLeadingSorted__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathLeadingSorted) xmlXPathLeadingSorted __attribute((alias("xmlXPathLeadingSorted__internal_alias")));
 #define xmlXPathLeadingSorted xmlXPathLeadingSorted__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathLocalNameFunction
+extern __typeof (xmlXPathLocalNameFunction) xmlXPathLocalNameFunction __attribute((alias("xmlXPathLocalNameFunction__internal_alias")));
+#else
+#ifndef xmlXPathLocalNameFunction
 extern __typeof (xmlXPathLocalNameFunction) xmlXPathLocalNameFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathLocalNameFunction) xmlXPathLocalNameFunction __attribute((alias("xmlXPathLocalNameFunction__internal_alias")));
 #define xmlXPathLocalNameFunction xmlXPathLocalNameFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathModValues
+extern __typeof (xmlXPathModValues) xmlXPathModValues __attribute((alias("xmlXPathModValues__internal_alias")));
+#else
+#ifndef xmlXPathModValues
 extern __typeof (xmlXPathModValues) xmlXPathModValues__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathModValues) xmlXPathModValues __attribute((alias("xmlXPathModValues__internal_alias")));
 #define xmlXPathModValues xmlXPathModValues__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathMultValues
+extern __typeof (xmlXPathMultValues) xmlXPathMultValues __attribute((alias("xmlXPathMultValues__internal_alias")));
+#else
+#ifndef xmlXPathMultValues
 extern __typeof (xmlXPathMultValues) xmlXPathMultValues__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathMultValues) xmlXPathMultValues __attribute((alias("xmlXPathMultValues__internal_alias")));
 #define xmlXPathMultValues xmlXPathMultValues__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNamespaceURIFunction
+extern __typeof (xmlXPathNamespaceURIFunction) xmlXPathNamespaceURIFunction __attribute((alias("xmlXPathNamespaceURIFunction__internal_alias")));
+#else
+#ifndef xmlXPathNamespaceURIFunction
 extern __typeof (xmlXPathNamespaceURIFunction) xmlXPathNamespaceURIFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNamespaceURIFunction) xmlXPathNamespaceURIFunction __attribute((alias("xmlXPathNamespaceURIFunction__internal_alias")));
 #define xmlXPathNamespaceURIFunction xmlXPathNamespaceURIFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNewBoolean
+extern __typeof (xmlXPathNewBoolean) xmlXPathNewBoolean __attribute((alias("xmlXPathNewBoolean__internal_alias")));
+#else
+#ifndef xmlXPathNewBoolean
 extern __typeof (xmlXPathNewBoolean) xmlXPathNewBoolean__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNewBoolean) xmlXPathNewBoolean __attribute((alias("xmlXPathNewBoolean__internal_alias")));
 #define xmlXPathNewBoolean xmlXPathNewBoolean__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNewCString
+extern __typeof (xmlXPathNewCString) xmlXPathNewCString __attribute((alias("xmlXPathNewCString__internal_alias")));
+#else
+#ifndef xmlXPathNewCString
 extern __typeof (xmlXPathNewCString) xmlXPathNewCString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNewCString) xmlXPathNewCString __attribute((alias("xmlXPathNewCString__internal_alias")));
 #define xmlXPathNewCString xmlXPathNewCString__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNewContext
+extern __typeof (xmlXPathNewContext) xmlXPathNewContext __attribute((alias("xmlXPathNewContext__internal_alias")));
+#else
+#ifndef xmlXPathNewContext
 extern __typeof (xmlXPathNewContext) xmlXPathNewContext__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNewContext) xmlXPathNewContext __attribute((alias("xmlXPathNewContext__internal_alias")));
 #define xmlXPathNewContext xmlXPathNewContext__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNewFloat
+extern __typeof (xmlXPathNewFloat) xmlXPathNewFloat __attribute((alias("xmlXPathNewFloat__internal_alias")));
+#else
+#ifndef xmlXPathNewFloat
 extern __typeof (xmlXPathNewFloat) xmlXPathNewFloat__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNewFloat) xmlXPathNewFloat __attribute((alias("xmlXPathNewFloat__internal_alias")));
 #define xmlXPathNewFloat xmlXPathNewFloat__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNewNodeSet
+extern __typeof (xmlXPathNewNodeSet) xmlXPathNewNodeSet __attribute((alias("xmlXPathNewNodeSet__internal_alias")));
+#else
+#ifndef xmlXPathNewNodeSet
 extern __typeof (xmlXPathNewNodeSet) xmlXPathNewNodeSet__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNewNodeSet) xmlXPathNewNodeSet __attribute((alias("xmlXPathNewNodeSet__internal_alias")));
 #define xmlXPathNewNodeSet xmlXPathNewNodeSet__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNewNodeSetList
+extern __typeof (xmlXPathNewNodeSetList) xmlXPathNewNodeSetList __attribute((alias("xmlXPathNewNodeSetList__internal_alias")));
+#else
+#ifndef xmlXPathNewNodeSetList
 extern __typeof (xmlXPathNewNodeSetList) xmlXPathNewNodeSetList__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNewNodeSetList) xmlXPathNewNodeSetList __attribute((alias("xmlXPathNewNodeSetList__internal_alias")));
 #define xmlXPathNewNodeSetList xmlXPathNewNodeSetList__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNewParserContext
+extern __typeof (xmlXPathNewParserContext) xmlXPathNewParserContext __attribute((alias("xmlXPathNewParserContext__internal_alias")));
+#else
+#ifndef xmlXPathNewParserContext
 extern __typeof (xmlXPathNewParserContext) xmlXPathNewParserContext__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNewParserContext) xmlXPathNewParserContext __attribute((alias("xmlXPathNewParserContext__internal_alias")));
 #define xmlXPathNewParserContext xmlXPathNewParserContext__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNewString
+extern __typeof (xmlXPathNewString) xmlXPathNewString __attribute((alias("xmlXPathNewString__internal_alias")));
+#else
+#ifndef xmlXPathNewString
 extern __typeof (xmlXPathNewString) xmlXPathNewString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNewString) xmlXPathNewString __attribute((alias("xmlXPathNewString__internal_alias")));
 #define xmlXPathNewString xmlXPathNewString__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNewValueTree
+extern __typeof (xmlXPathNewValueTree) xmlXPathNewValueTree __attribute((alias("xmlXPathNewValueTree__internal_alias")));
+#else
+#ifndef xmlXPathNewValueTree
 extern __typeof (xmlXPathNewValueTree) xmlXPathNewValueTree__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNewValueTree) xmlXPathNewValueTree __attribute((alias("xmlXPathNewValueTree__internal_alias")));
 #define xmlXPathNewValueTree xmlXPathNewValueTree__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNextAncestor
+extern __typeof (xmlXPathNextAncestor) xmlXPathNextAncestor __attribute((alias("xmlXPathNextAncestor__internal_alias")));
+#else
+#ifndef xmlXPathNextAncestor
 extern __typeof (xmlXPathNextAncestor) xmlXPathNextAncestor__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNextAncestor) xmlXPathNextAncestor __attribute((alias("xmlXPathNextAncestor__internal_alias")));
 #define xmlXPathNextAncestor xmlXPathNextAncestor__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNextAncestorOrSelf
+extern __typeof (xmlXPathNextAncestorOrSelf) xmlXPathNextAncestorOrSelf __attribute((alias("xmlXPathNextAncestorOrSelf__internal_alias")));
+#else
+#ifndef xmlXPathNextAncestorOrSelf
 extern __typeof (xmlXPathNextAncestorOrSelf) xmlXPathNextAncestorOrSelf__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNextAncestorOrSelf) xmlXPathNextAncestorOrSelf __attribute((alias("xmlXPathNextAncestorOrSelf__internal_alias")));
 #define xmlXPathNextAncestorOrSelf xmlXPathNextAncestorOrSelf__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNextAttribute
+extern __typeof (xmlXPathNextAttribute) xmlXPathNextAttribute __attribute((alias("xmlXPathNextAttribute__internal_alias")));
+#else
+#ifndef xmlXPathNextAttribute
 extern __typeof (xmlXPathNextAttribute) xmlXPathNextAttribute__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNextAttribute) xmlXPathNextAttribute __attribute((alias("xmlXPathNextAttribute__internal_alias")));
 #define xmlXPathNextAttribute xmlXPathNextAttribute__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNextChild
+extern __typeof (xmlXPathNextChild) xmlXPathNextChild __attribute((alias("xmlXPathNextChild__internal_alias")));
+#else
+#ifndef xmlXPathNextChild
 extern __typeof (xmlXPathNextChild) xmlXPathNextChild__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNextChild) xmlXPathNextChild __attribute((alias("xmlXPathNextChild__internal_alias")));
 #define xmlXPathNextChild xmlXPathNextChild__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNextDescendant
+extern __typeof (xmlXPathNextDescendant) xmlXPathNextDescendant __attribute((alias("xmlXPathNextDescendant__internal_alias")));
+#else
+#ifndef xmlXPathNextDescendant
 extern __typeof (xmlXPathNextDescendant) xmlXPathNextDescendant__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNextDescendant) xmlXPathNextDescendant __attribute((alias("xmlXPathNextDescendant__internal_alias")));
 #define xmlXPathNextDescendant xmlXPathNextDescendant__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNextDescendantOrSelf
+extern __typeof (xmlXPathNextDescendantOrSelf) xmlXPathNextDescendantOrSelf __attribute((alias("xmlXPathNextDescendantOrSelf__internal_alias")));
+#else
+#ifndef xmlXPathNextDescendantOrSelf
 extern __typeof (xmlXPathNextDescendantOrSelf) xmlXPathNextDescendantOrSelf__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNextDescendantOrSelf) xmlXPathNextDescendantOrSelf __attribute((alias("xmlXPathNextDescendantOrSelf__internal_alias")));
 #define xmlXPathNextDescendantOrSelf xmlXPathNextDescendantOrSelf__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNextFollowing
+extern __typeof (xmlXPathNextFollowing) xmlXPathNextFollowing __attribute((alias("xmlXPathNextFollowing__internal_alias")));
+#else
+#ifndef xmlXPathNextFollowing
 extern __typeof (xmlXPathNextFollowing) xmlXPathNextFollowing__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNextFollowing) xmlXPathNextFollowing __attribute((alias("xmlXPathNextFollowing__internal_alias")));
 #define xmlXPathNextFollowing xmlXPathNextFollowing__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNextFollowingSibling
+extern __typeof (xmlXPathNextFollowingSibling) xmlXPathNextFollowingSibling __attribute((alias("xmlXPathNextFollowingSibling__internal_alias")));
+#else
+#ifndef xmlXPathNextFollowingSibling
 extern __typeof (xmlXPathNextFollowingSibling) xmlXPathNextFollowingSibling__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNextFollowingSibling) xmlXPathNextFollowingSibling __attribute((alias("xmlXPathNextFollowingSibling__internal_alias")));
 #define xmlXPathNextFollowingSibling xmlXPathNextFollowingSibling__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNextNamespace
+extern __typeof (xmlXPathNextNamespace) xmlXPathNextNamespace __attribute((alias("xmlXPathNextNamespace__internal_alias")));
+#else
+#ifndef xmlXPathNextNamespace
 extern __typeof (xmlXPathNextNamespace) xmlXPathNextNamespace__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNextNamespace) xmlXPathNextNamespace __attribute((alias("xmlXPathNextNamespace__internal_alias")));
 #define xmlXPathNextNamespace xmlXPathNextNamespace__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNextParent
+extern __typeof (xmlXPathNextParent) xmlXPathNextParent __attribute((alias("xmlXPathNextParent__internal_alias")));
+#else
+#ifndef xmlXPathNextParent
 extern __typeof (xmlXPathNextParent) xmlXPathNextParent__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNextParent) xmlXPathNextParent __attribute((alias("xmlXPathNextParent__internal_alias")));
 #define xmlXPathNextParent xmlXPathNextParent__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNextPreceding
+extern __typeof (xmlXPathNextPreceding) xmlXPathNextPreceding __attribute((alias("xmlXPathNextPreceding__internal_alias")));
+#else
+#ifndef xmlXPathNextPreceding
 extern __typeof (xmlXPathNextPreceding) xmlXPathNextPreceding__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNextPreceding) xmlXPathNextPreceding __attribute((alias("xmlXPathNextPreceding__internal_alias")));
 #define xmlXPathNextPreceding xmlXPathNextPreceding__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNextPrecedingSibling
+extern __typeof (xmlXPathNextPrecedingSibling) xmlXPathNextPrecedingSibling __attribute((alias("xmlXPathNextPrecedingSibling__internal_alias")));
+#else
+#ifndef xmlXPathNextPrecedingSibling
 extern __typeof (xmlXPathNextPrecedingSibling) xmlXPathNextPrecedingSibling__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNextPrecedingSibling) xmlXPathNextPrecedingSibling __attribute((alias("xmlXPathNextPrecedingSibling__internal_alias")));
 #define xmlXPathNextPrecedingSibling xmlXPathNextPrecedingSibling__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNextSelf
+extern __typeof (xmlXPathNextSelf) xmlXPathNextSelf __attribute((alias("xmlXPathNextSelf__internal_alias")));
+#else
+#ifndef xmlXPathNextSelf
 extern __typeof (xmlXPathNextSelf) xmlXPathNextSelf__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNextSelf) xmlXPathNextSelf __attribute((alias("xmlXPathNextSelf__internal_alias")));
 #define xmlXPathNextSelf xmlXPathNextSelf__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNodeLeading
+extern __typeof (xmlXPathNodeLeading) xmlXPathNodeLeading __attribute((alias("xmlXPathNodeLeading__internal_alias")));
+#else
+#ifndef xmlXPathNodeLeading
 extern __typeof (xmlXPathNodeLeading) xmlXPathNodeLeading__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNodeLeading) xmlXPathNodeLeading __attribute((alias("xmlXPathNodeLeading__internal_alias")));
 #define xmlXPathNodeLeading xmlXPathNodeLeading__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNodeLeadingSorted
+extern __typeof (xmlXPathNodeLeadingSorted) xmlXPathNodeLeadingSorted __attribute((alias("xmlXPathNodeLeadingSorted__internal_alias")));
+#else
+#ifndef xmlXPathNodeLeadingSorted
 extern __typeof (xmlXPathNodeLeadingSorted) xmlXPathNodeLeadingSorted__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNodeLeadingSorted) xmlXPathNodeLeadingSorted __attribute((alias("xmlXPathNodeLeadingSorted__internal_alias")));
 #define xmlXPathNodeLeadingSorted xmlXPathNodeLeadingSorted__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNodeSetAdd
+extern __typeof (xmlXPathNodeSetAdd) xmlXPathNodeSetAdd __attribute((alias("xmlXPathNodeSetAdd__internal_alias")));
+#else
+#ifndef xmlXPathNodeSetAdd
 extern __typeof (xmlXPathNodeSetAdd) xmlXPathNodeSetAdd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNodeSetAdd) xmlXPathNodeSetAdd __attribute((alias("xmlXPathNodeSetAdd__internal_alias")));
 #define xmlXPathNodeSetAdd xmlXPathNodeSetAdd__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNodeSetAddNs
+extern __typeof (xmlXPathNodeSetAddNs) xmlXPathNodeSetAddNs __attribute((alias("xmlXPathNodeSetAddNs__internal_alias")));
+#else
+#ifndef xmlXPathNodeSetAddNs
 extern __typeof (xmlXPathNodeSetAddNs) xmlXPathNodeSetAddNs__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNodeSetAddNs) xmlXPathNodeSetAddNs __attribute((alias("xmlXPathNodeSetAddNs__internal_alias")));
 #define xmlXPathNodeSetAddNs xmlXPathNodeSetAddNs__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNodeSetAddUnique
+extern __typeof (xmlXPathNodeSetAddUnique) xmlXPathNodeSetAddUnique __attribute((alias("xmlXPathNodeSetAddUnique__internal_alias")));
+#else
+#ifndef xmlXPathNodeSetAddUnique
 extern __typeof (xmlXPathNodeSetAddUnique) xmlXPathNodeSetAddUnique__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNodeSetAddUnique) xmlXPathNodeSetAddUnique __attribute((alias("xmlXPathNodeSetAddUnique__internal_alias")));
 #define xmlXPathNodeSetAddUnique xmlXPathNodeSetAddUnique__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNodeSetContains
+extern __typeof (xmlXPathNodeSetContains) xmlXPathNodeSetContains __attribute((alias("xmlXPathNodeSetContains__internal_alias")));
+#else
+#ifndef xmlXPathNodeSetContains
 extern __typeof (xmlXPathNodeSetContains) xmlXPathNodeSetContains__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNodeSetContains) xmlXPathNodeSetContains __attribute((alias("xmlXPathNodeSetContains__internal_alias")));
 #define xmlXPathNodeSetContains xmlXPathNodeSetContains__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNodeSetCreate
+extern __typeof (xmlXPathNodeSetCreate) xmlXPathNodeSetCreate __attribute((alias("xmlXPathNodeSetCreate__internal_alias")));
+#else
+#ifndef xmlXPathNodeSetCreate
 extern __typeof (xmlXPathNodeSetCreate) xmlXPathNodeSetCreate__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNodeSetCreate) xmlXPathNodeSetCreate __attribute((alias("xmlXPathNodeSetCreate__internal_alias")));
 #define xmlXPathNodeSetCreate xmlXPathNodeSetCreate__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNodeSetDel
+extern __typeof (xmlXPathNodeSetDel) xmlXPathNodeSetDel __attribute((alias("xmlXPathNodeSetDel__internal_alias")));
+#else
+#ifndef xmlXPathNodeSetDel
 extern __typeof (xmlXPathNodeSetDel) xmlXPathNodeSetDel__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNodeSetDel) xmlXPathNodeSetDel __attribute((alias("xmlXPathNodeSetDel__internal_alias")));
 #define xmlXPathNodeSetDel xmlXPathNodeSetDel__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNodeSetFreeNs
+extern __typeof (xmlXPathNodeSetFreeNs) xmlXPathNodeSetFreeNs __attribute((alias("xmlXPathNodeSetFreeNs__internal_alias")));
+#else
+#ifndef xmlXPathNodeSetFreeNs
 extern __typeof (xmlXPathNodeSetFreeNs) xmlXPathNodeSetFreeNs__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNodeSetFreeNs) xmlXPathNodeSetFreeNs __attribute((alias("xmlXPathNodeSetFreeNs__internal_alias")));
 #define xmlXPathNodeSetFreeNs xmlXPathNodeSetFreeNs__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNodeSetMerge
+extern __typeof (xmlXPathNodeSetMerge) xmlXPathNodeSetMerge __attribute((alias("xmlXPathNodeSetMerge__internal_alias")));
+#else
+#ifndef xmlXPathNodeSetMerge
 extern __typeof (xmlXPathNodeSetMerge) xmlXPathNodeSetMerge__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNodeSetMerge) xmlXPathNodeSetMerge __attribute((alias("xmlXPathNodeSetMerge__internal_alias")));
 #define xmlXPathNodeSetMerge xmlXPathNodeSetMerge__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNodeSetRemove
+extern __typeof (xmlXPathNodeSetRemove) xmlXPathNodeSetRemove __attribute((alias("xmlXPathNodeSetRemove__internal_alias")));
+#else
+#ifndef xmlXPathNodeSetRemove
 extern __typeof (xmlXPathNodeSetRemove) xmlXPathNodeSetRemove__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNodeSetRemove) xmlXPathNodeSetRemove __attribute((alias("xmlXPathNodeSetRemove__internal_alias")));
 #define xmlXPathNodeSetRemove xmlXPathNodeSetRemove__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNodeSetSort
+extern __typeof (xmlXPathNodeSetSort) xmlXPathNodeSetSort __attribute((alias("xmlXPathNodeSetSort__internal_alias")));
+#else
+#ifndef xmlXPathNodeSetSort
 extern __typeof (xmlXPathNodeSetSort) xmlXPathNodeSetSort__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNodeSetSort) xmlXPathNodeSetSort __attribute((alias("xmlXPathNodeSetSort__internal_alias")));
 #define xmlXPathNodeSetSort xmlXPathNodeSetSort__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNodeTrailing
+extern __typeof (xmlXPathNodeTrailing) xmlXPathNodeTrailing __attribute((alias("xmlXPathNodeTrailing__internal_alias")));
+#else
+#ifndef xmlXPathNodeTrailing
 extern __typeof (xmlXPathNodeTrailing) xmlXPathNodeTrailing__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNodeTrailing) xmlXPathNodeTrailing __attribute((alias("xmlXPathNodeTrailing__internal_alias")));
 #define xmlXPathNodeTrailing xmlXPathNodeTrailing__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNodeTrailingSorted
+extern __typeof (xmlXPathNodeTrailingSorted) xmlXPathNodeTrailingSorted __attribute((alias("xmlXPathNodeTrailingSorted__internal_alias")));
+#else
+#ifndef xmlXPathNodeTrailingSorted
 extern __typeof (xmlXPathNodeTrailingSorted) xmlXPathNodeTrailingSorted__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNodeTrailingSorted) xmlXPathNodeTrailingSorted __attribute((alias("xmlXPathNodeTrailingSorted__internal_alias")));
 #define xmlXPathNodeTrailingSorted xmlXPathNodeTrailingSorted__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNormalizeFunction
+extern __typeof (xmlXPathNormalizeFunction) xmlXPathNormalizeFunction __attribute((alias("xmlXPathNormalizeFunction__internal_alias")));
+#else
+#ifndef xmlXPathNormalizeFunction
 extern __typeof (xmlXPathNormalizeFunction) xmlXPathNormalizeFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNormalizeFunction) xmlXPathNormalizeFunction __attribute((alias("xmlXPathNormalizeFunction__internal_alias")));
 #define xmlXPathNormalizeFunction xmlXPathNormalizeFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNotEqualValues
+extern __typeof (xmlXPathNotEqualValues) xmlXPathNotEqualValues __attribute((alias("xmlXPathNotEqualValues__internal_alias")));
+#else
+#ifndef xmlXPathNotEqualValues
 extern __typeof (xmlXPathNotEqualValues) xmlXPathNotEqualValues__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNotEqualValues) xmlXPathNotEqualValues __attribute((alias("xmlXPathNotEqualValues__internal_alias")));
 #define xmlXPathNotEqualValues xmlXPathNotEqualValues__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNotFunction
+extern __typeof (xmlXPathNotFunction) xmlXPathNotFunction __attribute((alias("xmlXPathNotFunction__internal_alias")));
+#else
+#ifndef xmlXPathNotFunction
 extern __typeof (xmlXPathNotFunction) xmlXPathNotFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNotFunction) xmlXPathNotFunction __attribute((alias("xmlXPathNotFunction__internal_alias")));
 #define xmlXPathNotFunction xmlXPathNotFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNsLookup
+extern __typeof (xmlXPathNsLookup) xmlXPathNsLookup __attribute((alias("xmlXPathNsLookup__internal_alias")));
+#else
+#ifndef xmlXPathNsLookup
 extern __typeof (xmlXPathNsLookup) xmlXPathNsLookup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNsLookup) xmlXPathNsLookup __attribute((alias("xmlXPathNsLookup__internal_alias")));
 #define xmlXPathNsLookup xmlXPathNsLookup__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathNumberFunction
+extern __typeof (xmlXPathNumberFunction) xmlXPathNumberFunction __attribute((alias("xmlXPathNumberFunction__internal_alias")));
+#else
+#ifndef xmlXPathNumberFunction
 extern __typeof (xmlXPathNumberFunction) xmlXPathNumberFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathNumberFunction) xmlXPathNumberFunction __attribute((alias("xmlXPathNumberFunction__internal_alias")));
 #define xmlXPathNumberFunction xmlXPathNumberFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathObjectCopy
+extern __typeof (xmlXPathObjectCopy) xmlXPathObjectCopy __attribute((alias("xmlXPathObjectCopy__internal_alias")));
+#else
+#ifndef xmlXPathObjectCopy
 extern __typeof (xmlXPathObjectCopy) xmlXPathObjectCopy__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathObjectCopy) xmlXPathObjectCopy __attribute((alias("xmlXPathObjectCopy__internal_alias")));
 #define xmlXPathObjectCopy xmlXPathObjectCopy__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathOrderDocElems
+extern __typeof (xmlXPathOrderDocElems) xmlXPathOrderDocElems __attribute((alias("xmlXPathOrderDocElems__internal_alias")));
+#else
+#ifndef xmlXPathOrderDocElems
 extern __typeof (xmlXPathOrderDocElems) xmlXPathOrderDocElems__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathOrderDocElems) xmlXPathOrderDocElems __attribute((alias("xmlXPathOrderDocElems__internal_alias")));
 #define xmlXPathOrderDocElems xmlXPathOrderDocElems__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathParseNCName
+extern __typeof (xmlXPathParseNCName) xmlXPathParseNCName __attribute((alias("xmlXPathParseNCName__internal_alias")));
+#else
+#ifndef xmlXPathParseNCName
 extern __typeof (xmlXPathParseNCName) xmlXPathParseNCName__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathParseNCName) xmlXPathParseNCName __attribute((alias("xmlXPathParseNCName__internal_alias")));
 #define xmlXPathParseNCName xmlXPathParseNCName__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathParseName
+extern __typeof (xmlXPathParseName) xmlXPathParseName __attribute((alias("xmlXPathParseName__internal_alias")));
+#else
+#ifndef xmlXPathParseName
 extern __typeof (xmlXPathParseName) xmlXPathParseName__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathParseName) xmlXPathParseName __attribute((alias("xmlXPathParseName__internal_alias")));
 #define xmlXPathParseName xmlXPathParseName__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathPopBoolean
+extern __typeof (xmlXPathPopBoolean) xmlXPathPopBoolean __attribute((alias("xmlXPathPopBoolean__internal_alias")));
+#else
+#ifndef xmlXPathPopBoolean
 extern __typeof (xmlXPathPopBoolean) xmlXPathPopBoolean__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathPopBoolean) xmlXPathPopBoolean __attribute((alias("xmlXPathPopBoolean__internal_alias")));
 #define xmlXPathPopBoolean xmlXPathPopBoolean__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathPopExternal
+extern __typeof (xmlXPathPopExternal) xmlXPathPopExternal __attribute((alias("xmlXPathPopExternal__internal_alias")));
+#else
+#ifndef xmlXPathPopExternal
 extern __typeof (xmlXPathPopExternal) xmlXPathPopExternal__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathPopExternal) xmlXPathPopExternal __attribute((alias("xmlXPathPopExternal__internal_alias")));
 #define xmlXPathPopExternal xmlXPathPopExternal__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathPopNodeSet
+extern __typeof (xmlXPathPopNodeSet) xmlXPathPopNodeSet __attribute((alias("xmlXPathPopNodeSet__internal_alias")));
+#else
+#ifndef xmlXPathPopNodeSet
 extern __typeof (xmlXPathPopNodeSet) xmlXPathPopNodeSet__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathPopNodeSet) xmlXPathPopNodeSet __attribute((alias("xmlXPathPopNodeSet__internal_alias")));
 #define xmlXPathPopNodeSet xmlXPathPopNodeSet__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathPopNumber
+extern __typeof (xmlXPathPopNumber) xmlXPathPopNumber __attribute((alias("xmlXPathPopNumber__internal_alias")));
+#else
+#ifndef xmlXPathPopNumber
 extern __typeof (xmlXPathPopNumber) xmlXPathPopNumber__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathPopNumber) xmlXPathPopNumber __attribute((alias("xmlXPathPopNumber__internal_alias")));
 #define xmlXPathPopNumber xmlXPathPopNumber__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathPopString
+extern __typeof (xmlXPathPopString) xmlXPathPopString __attribute((alias("xmlXPathPopString__internal_alias")));
+#else
+#ifndef xmlXPathPopString
 extern __typeof (xmlXPathPopString) xmlXPathPopString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathPopString) xmlXPathPopString __attribute((alias("xmlXPathPopString__internal_alias")));
 #define xmlXPathPopString xmlXPathPopString__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathPositionFunction
+extern __typeof (xmlXPathPositionFunction) xmlXPathPositionFunction __attribute((alias("xmlXPathPositionFunction__internal_alias")));
+#else
+#ifndef xmlXPathPositionFunction
 extern __typeof (xmlXPathPositionFunction) xmlXPathPositionFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathPositionFunction) xmlXPathPositionFunction __attribute((alias("xmlXPathPositionFunction__internal_alias")));
 #define xmlXPathPositionFunction xmlXPathPositionFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathRegisterAllFunctions
+extern __typeof (xmlXPathRegisterAllFunctions) xmlXPathRegisterAllFunctions __attribute((alias("xmlXPathRegisterAllFunctions__internal_alias")));
+#else
+#ifndef xmlXPathRegisterAllFunctions
 extern __typeof (xmlXPathRegisterAllFunctions) xmlXPathRegisterAllFunctions__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathRegisterAllFunctions) xmlXPathRegisterAllFunctions __attribute((alias("xmlXPathRegisterAllFunctions__internal_alias")));
 #define xmlXPathRegisterAllFunctions xmlXPathRegisterAllFunctions__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathRegisterFunc
+extern __typeof (xmlXPathRegisterFunc) xmlXPathRegisterFunc __attribute((alias("xmlXPathRegisterFunc__internal_alias")));
+#else
+#ifndef xmlXPathRegisterFunc
 extern __typeof (xmlXPathRegisterFunc) xmlXPathRegisterFunc__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathRegisterFunc) xmlXPathRegisterFunc __attribute((alias("xmlXPathRegisterFunc__internal_alias")));
 #define xmlXPathRegisterFunc xmlXPathRegisterFunc__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathRegisterFuncLookup
+extern __typeof (xmlXPathRegisterFuncLookup) xmlXPathRegisterFuncLookup __attribute((alias("xmlXPathRegisterFuncLookup__internal_alias")));
+#else
+#ifndef xmlXPathRegisterFuncLookup
 extern __typeof (xmlXPathRegisterFuncLookup) xmlXPathRegisterFuncLookup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathRegisterFuncLookup) xmlXPathRegisterFuncLookup __attribute((alias("xmlXPathRegisterFuncLookup__internal_alias")));
 #define xmlXPathRegisterFuncLookup xmlXPathRegisterFuncLookup__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathRegisterFuncNS
+extern __typeof (xmlXPathRegisterFuncNS) xmlXPathRegisterFuncNS __attribute((alias("xmlXPathRegisterFuncNS__internal_alias")));
+#else
+#ifndef xmlXPathRegisterFuncNS
 extern __typeof (xmlXPathRegisterFuncNS) xmlXPathRegisterFuncNS__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathRegisterFuncNS) xmlXPathRegisterFuncNS __attribute((alias("xmlXPathRegisterFuncNS__internal_alias")));
 #define xmlXPathRegisterFuncNS xmlXPathRegisterFuncNS__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathRegisterNs
+extern __typeof (xmlXPathRegisterNs) xmlXPathRegisterNs __attribute((alias("xmlXPathRegisterNs__internal_alias")));
+#else
+#ifndef xmlXPathRegisterNs
 extern __typeof (xmlXPathRegisterNs) xmlXPathRegisterNs__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathRegisterNs) xmlXPathRegisterNs __attribute((alias("xmlXPathRegisterNs__internal_alias")));
 #define xmlXPathRegisterNs xmlXPathRegisterNs__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathRegisterVariable
+extern __typeof (xmlXPathRegisterVariable) xmlXPathRegisterVariable __attribute((alias("xmlXPathRegisterVariable__internal_alias")));
+#else
+#ifndef xmlXPathRegisterVariable
 extern __typeof (xmlXPathRegisterVariable) xmlXPathRegisterVariable__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathRegisterVariable) xmlXPathRegisterVariable __attribute((alias("xmlXPathRegisterVariable__internal_alias")));
 #define xmlXPathRegisterVariable xmlXPathRegisterVariable__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathRegisterVariableLookup
+extern __typeof (xmlXPathRegisterVariableLookup) xmlXPathRegisterVariableLookup __attribute((alias("xmlXPathRegisterVariableLookup__internal_alias")));
+#else
+#ifndef xmlXPathRegisterVariableLookup
 extern __typeof (xmlXPathRegisterVariableLookup) xmlXPathRegisterVariableLookup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathRegisterVariableLookup) xmlXPathRegisterVariableLookup __attribute((alias("xmlXPathRegisterVariableLookup__internal_alias")));
 #define xmlXPathRegisterVariableLookup xmlXPathRegisterVariableLookup__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathRegisterVariableNS
+extern __typeof (xmlXPathRegisterVariableNS) xmlXPathRegisterVariableNS __attribute((alias("xmlXPathRegisterVariableNS__internal_alias")));
+#else
+#ifndef xmlXPathRegisterVariableNS
 extern __typeof (xmlXPathRegisterVariableNS) xmlXPathRegisterVariableNS__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathRegisterVariableNS) xmlXPathRegisterVariableNS __attribute((alias("xmlXPathRegisterVariableNS__internal_alias")));
 #define xmlXPathRegisterVariableNS xmlXPathRegisterVariableNS__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathRegisteredFuncsCleanup
+extern __typeof (xmlXPathRegisteredFuncsCleanup) xmlXPathRegisteredFuncsCleanup __attribute((alias("xmlXPathRegisteredFuncsCleanup__internal_alias")));
+#else
+#ifndef xmlXPathRegisteredFuncsCleanup
 extern __typeof (xmlXPathRegisteredFuncsCleanup) xmlXPathRegisteredFuncsCleanup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathRegisteredFuncsCleanup) xmlXPathRegisteredFuncsCleanup __attribute((alias("xmlXPathRegisteredFuncsCleanup__internal_alias")));
 #define xmlXPathRegisteredFuncsCleanup xmlXPathRegisteredFuncsCleanup__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathRegisteredNsCleanup
+extern __typeof (xmlXPathRegisteredNsCleanup) xmlXPathRegisteredNsCleanup __attribute((alias("xmlXPathRegisteredNsCleanup__internal_alias")));
+#else
+#ifndef xmlXPathRegisteredNsCleanup
 extern __typeof (xmlXPathRegisteredNsCleanup) xmlXPathRegisteredNsCleanup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathRegisteredNsCleanup) xmlXPathRegisteredNsCleanup __attribute((alias("xmlXPathRegisteredNsCleanup__internal_alias")));
 #define xmlXPathRegisteredNsCleanup xmlXPathRegisteredNsCleanup__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathRegisteredVariablesCleanup
+extern __typeof (xmlXPathRegisteredVariablesCleanup) xmlXPathRegisteredVariablesCleanup __attribute((alias("xmlXPathRegisteredVariablesCleanup__internal_alias")));
+#else
+#ifndef xmlXPathRegisteredVariablesCleanup
 extern __typeof (xmlXPathRegisteredVariablesCleanup) xmlXPathRegisteredVariablesCleanup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathRegisteredVariablesCleanup) xmlXPathRegisteredVariablesCleanup __attribute((alias("xmlXPathRegisteredVariablesCleanup__internal_alias")));
 #define xmlXPathRegisteredVariablesCleanup xmlXPathRegisteredVariablesCleanup__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathRoot
+extern __typeof (xmlXPathRoot) xmlXPathRoot __attribute((alias("xmlXPathRoot__internal_alias")));
+#else
+#ifndef xmlXPathRoot
 extern __typeof (xmlXPathRoot) xmlXPathRoot__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathRoot) xmlXPathRoot __attribute((alias("xmlXPathRoot__internal_alias")));
 #define xmlXPathRoot xmlXPathRoot__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathRoundFunction
+extern __typeof (xmlXPathRoundFunction) xmlXPathRoundFunction __attribute((alias("xmlXPathRoundFunction__internal_alias")));
+#else
+#ifndef xmlXPathRoundFunction
 extern __typeof (xmlXPathRoundFunction) xmlXPathRoundFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathRoundFunction) xmlXPathRoundFunction __attribute((alias("xmlXPathRoundFunction__internal_alias")));
 #define xmlXPathRoundFunction xmlXPathRoundFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathStartsWithFunction
+extern __typeof (xmlXPathStartsWithFunction) xmlXPathStartsWithFunction __attribute((alias("xmlXPathStartsWithFunction__internal_alias")));
+#else
+#ifndef xmlXPathStartsWithFunction
 extern __typeof (xmlXPathStartsWithFunction) xmlXPathStartsWithFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathStartsWithFunction) xmlXPathStartsWithFunction __attribute((alias("xmlXPathStartsWithFunction__internal_alias")));
 #define xmlXPathStartsWithFunction xmlXPathStartsWithFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathStringEvalNumber
+extern __typeof (xmlXPathStringEvalNumber) xmlXPathStringEvalNumber __attribute((alias("xmlXPathStringEvalNumber__internal_alias")));
+#else
+#ifndef xmlXPathStringEvalNumber
 extern __typeof (xmlXPathStringEvalNumber) xmlXPathStringEvalNumber__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathStringEvalNumber) xmlXPathStringEvalNumber __attribute((alias("xmlXPathStringEvalNumber__internal_alias")));
 #define xmlXPathStringEvalNumber xmlXPathStringEvalNumber__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathStringFunction
+extern __typeof (xmlXPathStringFunction) xmlXPathStringFunction __attribute((alias("xmlXPathStringFunction__internal_alias")));
+#else
+#ifndef xmlXPathStringFunction
 extern __typeof (xmlXPathStringFunction) xmlXPathStringFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathStringFunction) xmlXPathStringFunction __attribute((alias("xmlXPathStringFunction__internal_alias")));
 #define xmlXPathStringFunction xmlXPathStringFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathStringLengthFunction
+extern __typeof (xmlXPathStringLengthFunction) xmlXPathStringLengthFunction __attribute((alias("xmlXPathStringLengthFunction__internal_alias")));
+#else
+#ifndef xmlXPathStringLengthFunction
 extern __typeof (xmlXPathStringLengthFunction) xmlXPathStringLengthFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathStringLengthFunction) xmlXPathStringLengthFunction __attribute((alias("xmlXPathStringLengthFunction__internal_alias")));
 #define xmlXPathStringLengthFunction xmlXPathStringLengthFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathSubValues
+extern __typeof (xmlXPathSubValues) xmlXPathSubValues __attribute((alias("xmlXPathSubValues__internal_alias")));
+#else
+#ifndef xmlXPathSubValues
 extern __typeof (xmlXPathSubValues) xmlXPathSubValues__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathSubValues) xmlXPathSubValues __attribute((alias("xmlXPathSubValues__internal_alias")));
 #define xmlXPathSubValues xmlXPathSubValues__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathSubstringAfterFunction
+extern __typeof (xmlXPathSubstringAfterFunction) xmlXPathSubstringAfterFunction __attribute((alias("xmlXPathSubstringAfterFunction__internal_alias")));
+#else
+#ifndef xmlXPathSubstringAfterFunction
 extern __typeof (xmlXPathSubstringAfterFunction) xmlXPathSubstringAfterFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathSubstringAfterFunction) xmlXPathSubstringAfterFunction __attribute((alias("xmlXPathSubstringAfterFunction__internal_alias")));
 #define xmlXPathSubstringAfterFunction xmlXPathSubstringAfterFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathSubstringBeforeFunction
+extern __typeof (xmlXPathSubstringBeforeFunction) xmlXPathSubstringBeforeFunction __attribute((alias("xmlXPathSubstringBeforeFunction__internal_alias")));
+#else
+#ifndef xmlXPathSubstringBeforeFunction
 extern __typeof (xmlXPathSubstringBeforeFunction) xmlXPathSubstringBeforeFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathSubstringBeforeFunction) xmlXPathSubstringBeforeFunction __attribute((alias("xmlXPathSubstringBeforeFunction__internal_alias")));
 #define xmlXPathSubstringBeforeFunction xmlXPathSubstringBeforeFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathSubstringFunction
+extern __typeof (xmlXPathSubstringFunction) xmlXPathSubstringFunction __attribute((alias("xmlXPathSubstringFunction__internal_alias")));
+#else
+#ifndef xmlXPathSubstringFunction
 extern __typeof (xmlXPathSubstringFunction) xmlXPathSubstringFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathSubstringFunction) xmlXPathSubstringFunction __attribute((alias("xmlXPathSubstringFunction__internal_alias")));
 #define xmlXPathSubstringFunction xmlXPathSubstringFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathSumFunction
+extern __typeof (xmlXPathSumFunction) xmlXPathSumFunction __attribute((alias("xmlXPathSumFunction__internal_alias")));
+#else
+#ifndef xmlXPathSumFunction
 extern __typeof (xmlXPathSumFunction) xmlXPathSumFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathSumFunction) xmlXPathSumFunction __attribute((alias("xmlXPathSumFunction__internal_alias")));
 #define xmlXPathSumFunction xmlXPathSumFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathTrailing
+extern __typeof (xmlXPathTrailing) xmlXPathTrailing __attribute((alias("xmlXPathTrailing__internal_alias")));
+#else
+#ifndef xmlXPathTrailing
 extern __typeof (xmlXPathTrailing) xmlXPathTrailing__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathTrailing) xmlXPathTrailing __attribute((alias("xmlXPathTrailing__internal_alias")));
 #define xmlXPathTrailing xmlXPathTrailing__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathTrailingSorted
+extern __typeof (xmlXPathTrailingSorted) xmlXPathTrailingSorted __attribute((alias("xmlXPathTrailingSorted__internal_alias")));
+#else
+#ifndef xmlXPathTrailingSorted
 extern __typeof (xmlXPathTrailingSorted) xmlXPathTrailingSorted__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathTrailingSorted) xmlXPathTrailingSorted __attribute((alias("xmlXPathTrailingSorted__internal_alias")));
 #define xmlXPathTrailingSorted xmlXPathTrailingSorted__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathTranslateFunction
+extern __typeof (xmlXPathTranslateFunction) xmlXPathTranslateFunction __attribute((alias("xmlXPathTranslateFunction__internal_alias")));
+#else
+#ifndef xmlXPathTranslateFunction
 extern __typeof (xmlXPathTranslateFunction) xmlXPathTranslateFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathTranslateFunction) xmlXPathTranslateFunction __attribute((alias("xmlXPathTranslateFunction__internal_alias")));
 #define xmlXPathTranslateFunction xmlXPathTranslateFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathTrueFunction
+extern __typeof (xmlXPathTrueFunction) xmlXPathTrueFunction __attribute((alias("xmlXPathTrueFunction__internal_alias")));
+#else
+#ifndef xmlXPathTrueFunction
 extern __typeof (xmlXPathTrueFunction) xmlXPathTrueFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathTrueFunction) xmlXPathTrueFunction __attribute((alias("xmlXPathTrueFunction__internal_alias")));
 #define xmlXPathTrueFunction xmlXPathTrueFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathValueFlipSign
+extern __typeof (xmlXPathValueFlipSign) xmlXPathValueFlipSign __attribute((alias("xmlXPathValueFlipSign__internal_alias")));
+#else
+#ifndef xmlXPathValueFlipSign
 extern __typeof (xmlXPathValueFlipSign) xmlXPathValueFlipSign__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathValueFlipSign) xmlXPathValueFlipSign __attribute((alias("xmlXPathValueFlipSign__internal_alias")));
 #define xmlXPathValueFlipSign xmlXPathValueFlipSign__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathVariableLookup
+extern __typeof (xmlXPathVariableLookup) xmlXPathVariableLookup __attribute((alias("xmlXPathVariableLookup__internal_alias")));
+#else
+#ifndef xmlXPathVariableLookup
 extern __typeof (xmlXPathVariableLookup) xmlXPathVariableLookup__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathVariableLookup) xmlXPathVariableLookup __attribute((alias("xmlXPathVariableLookup__internal_alias")));
 #define xmlXPathVariableLookup xmlXPathVariableLookup__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathVariableLookupNS
+extern __typeof (xmlXPathVariableLookupNS) xmlXPathVariableLookupNS __attribute((alias("xmlXPathVariableLookupNS__internal_alias")));
+#else
+#ifndef xmlXPathVariableLookupNS
 extern __typeof (xmlXPathVariableLookupNS) xmlXPathVariableLookupNS__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathVariableLookupNS) xmlXPathVariableLookupNS __attribute((alias("xmlXPathVariableLookupNS__internal_alias")));
 #define xmlXPathVariableLookupNS xmlXPathVariableLookupNS__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathWrapCString
+extern __typeof (xmlXPathWrapCString) xmlXPathWrapCString __attribute((alias("xmlXPathWrapCString__internal_alias")));
+#else
+#ifndef xmlXPathWrapCString
 extern __typeof (xmlXPathWrapCString) xmlXPathWrapCString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathWrapCString) xmlXPathWrapCString __attribute((alias("xmlXPathWrapCString__internal_alias")));
 #define xmlXPathWrapCString xmlXPathWrapCString__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathWrapExternal
+extern __typeof (xmlXPathWrapExternal) xmlXPathWrapExternal __attribute((alias("xmlXPathWrapExternal__internal_alias")));
+#else
+#ifndef xmlXPathWrapExternal
 extern __typeof (xmlXPathWrapExternal) xmlXPathWrapExternal__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathWrapExternal) xmlXPathWrapExternal __attribute((alias("xmlXPathWrapExternal__internal_alias")));
 #define xmlXPathWrapExternal xmlXPathWrapExternal__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathWrapNodeSet
+extern __typeof (xmlXPathWrapNodeSet) xmlXPathWrapNodeSet __attribute((alias("xmlXPathWrapNodeSet__internal_alias")));
+#else
+#ifndef xmlXPathWrapNodeSet
 extern __typeof (xmlXPathWrapNodeSet) xmlXPathWrapNodeSet__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathWrapNodeSet) xmlXPathWrapNodeSet __attribute((alias("xmlXPathWrapNodeSet__internal_alias")));
 #define xmlXPathWrapNodeSet xmlXPathWrapNodeSet__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPathWrapString
+extern __typeof (xmlXPathWrapString) xmlXPathWrapString __attribute((alias("xmlXPathWrapString__internal_alias")));
+#else
+#ifndef xmlXPathWrapString
 extern __typeof (xmlXPathWrapString) xmlXPathWrapString__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPathWrapString) xmlXPathWrapString __attribute((alias("xmlXPathWrapString__internal_alias")));
 #define xmlXPathWrapString xmlXPathWrapString__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPATH_ENABLED)
+#ifdef bottom_xpath
+#undef xmlXPatherror
+extern __typeof (xmlXPatherror) xmlXPatherror __attribute((alias("xmlXPatherror__internal_alias")));
+#else
+#ifndef xmlXPatherror
 extern __typeof (xmlXPatherror) xmlXPatherror__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPatherror) xmlXPatherror __attribute((alias("xmlXPatherror__internal_alias")));
 #define xmlXPatherror xmlXPatherror__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPTR_ENABLED)
+#ifdef bottom_xpointer
+#undef xmlXPtrBuildNodeList
+extern __typeof (xmlXPtrBuildNodeList) xmlXPtrBuildNodeList __attribute((alias("xmlXPtrBuildNodeList__internal_alias")));
+#else
+#ifndef xmlXPtrBuildNodeList
 extern __typeof (xmlXPtrBuildNodeList) xmlXPtrBuildNodeList__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPtrBuildNodeList) xmlXPtrBuildNodeList __attribute((alias("xmlXPtrBuildNodeList__internal_alias")));
 #define xmlXPtrBuildNodeList xmlXPtrBuildNodeList__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPTR_ENABLED)
+#ifdef bottom_xpointer
+#undef xmlXPtrEval
+extern __typeof (xmlXPtrEval) xmlXPtrEval __attribute((alias("xmlXPtrEval__internal_alias")));
+#else
+#ifndef xmlXPtrEval
 extern __typeof (xmlXPtrEval) xmlXPtrEval__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPtrEval) xmlXPtrEval __attribute((alias("xmlXPtrEval__internal_alias")));
 #define xmlXPtrEval xmlXPtrEval__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPTR_ENABLED)
+#ifdef bottom_xpointer
+#undef xmlXPtrEvalRangePredicate
+extern __typeof (xmlXPtrEvalRangePredicate) xmlXPtrEvalRangePredicate __attribute((alias("xmlXPtrEvalRangePredicate__internal_alias")));
+#else
+#ifndef xmlXPtrEvalRangePredicate
 extern __typeof (xmlXPtrEvalRangePredicate) xmlXPtrEvalRangePredicate__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPtrEvalRangePredicate) xmlXPtrEvalRangePredicate __attribute((alias("xmlXPtrEvalRangePredicate__internal_alias")));
 #define xmlXPtrEvalRangePredicate xmlXPtrEvalRangePredicate__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPTR_ENABLED)
+#ifdef bottom_xpointer
+#undef xmlXPtrFreeLocationSet
+extern __typeof (xmlXPtrFreeLocationSet) xmlXPtrFreeLocationSet __attribute((alias("xmlXPtrFreeLocationSet__internal_alias")));
+#else
+#ifndef xmlXPtrFreeLocationSet
 extern __typeof (xmlXPtrFreeLocationSet) xmlXPtrFreeLocationSet__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPtrFreeLocationSet) xmlXPtrFreeLocationSet __attribute((alias("xmlXPtrFreeLocationSet__internal_alias")));
 #define xmlXPtrFreeLocationSet xmlXPtrFreeLocationSet__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPTR_ENABLED)
+#ifdef bottom_xpointer
+#undef xmlXPtrLocationSetAdd
+extern __typeof (xmlXPtrLocationSetAdd) xmlXPtrLocationSetAdd __attribute((alias("xmlXPtrLocationSetAdd__internal_alias")));
+#else
+#ifndef xmlXPtrLocationSetAdd
 extern __typeof (xmlXPtrLocationSetAdd) xmlXPtrLocationSetAdd__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPtrLocationSetAdd) xmlXPtrLocationSetAdd __attribute((alias("xmlXPtrLocationSetAdd__internal_alias")));
 #define xmlXPtrLocationSetAdd xmlXPtrLocationSetAdd__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPTR_ENABLED)
+#ifdef bottom_xpointer
+#undef xmlXPtrLocationSetCreate
+extern __typeof (xmlXPtrLocationSetCreate) xmlXPtrLocationSetCreate __attribute((alias("xmlXPtrLocationSetCreate__internal_alias")));
+#else
+#ifndef xmlXPtrLocationSetCreate
 extern __typeof (xmlXPtrLocationSetCreate) xmlXPtrLocationSetCreate__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPtrLocationSetCreate) xmlXPtrLocationSetCreate __attribute((alias("xmlXPtrLocationSetCreate__internal_alias")));
 #define xmlXPtrLocationSetCreate xmlXPtrLocationSetCreate__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPTR_ENABLED)
+#ifdef bottom_xpointer
+#undef xmlXPtrLocationSetDel
+extern __typeof (xmlXPtrLocationSetDel) xmlXPtrLocationSetDel __attribute((alias("xmlXPtrLocationSetDel__internal_alias")));
+#else
+#ifndef xmlXPtrLocationSetDel
 extern __typeof (xmlXPtrLocationSetDel) xmlXPtrLocationSetDel__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPtrLocationSetDel) xmlXPtrLocationSetDel __attribute((alias("xmlXPtrLocationSetDel__internal_alias")));
 #define xmlXPtrLocationSetDel xmlXPtrLocationSetDel__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPTR_ENABLED)
+#ifdef bottom_xpointer
+#undef xmlXPtrLocationSetMerge
+extern __typeof (xmlXPtrLocationSetMerge) xmlXPtrLocationSetMerge __attribute((alias("xmlXPtrLocationSetMerge__internal_alias")));
+#else
+#ifndef xmlXPtrLocationSetMerge
 extern __typeof (xmlXPtrLocationSetMerge) xmlXPtrLocationSetMerge__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPtrLocationSetMerge) xmlXPtrLocationSetMerge __attribute((alias("xmlXPtrLocationSetMerge__internal_alias")));
 #define xmlXPtrLocationSetMerge xmlXPtrLocationSetMerge__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPTR_ENABLED)
+#ifdef bottom_xpointer
+#undef xmlXPtrLocationSetRemove
+extern __typeof (xmlXPtrLocationSetRemove) xmlXPtrLocationSetRemove __attribute((alias("xmlXPtrLocationSetRemove__internal_alias")));
+#else
+#ifndef xmlXPtrLocationSetRemove
 extern __typeof (xmlXPtrLocationSetRemove) xmlXPtrLocationSetRemove__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPtrLocationSetRemove) xmlXPtrLocationSetRemove __attribute((alias("xmlXPtrLocationSetRemove__internal_alias")));
 #define xmlXPtrLocationSetRemove xmlXPtrLocationSetRemove__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPTR_ENABLED)
+#ifdef bottom_xpointer
+#undef xmlXPtrNewCollapsedRange
+extern __typeof (xmlXPtrNewCollapsedRange) xmlXPtrNewCollapsedRange __attribute((alias("xmlXPtrNewCollapsedRange__internal_alias")));
+#else
+#ifndef xmlXPtrNewCollapsedRange
 extern __typeof (xmlXPtrNewCollapsedRange) xmlXPtrNewCollapsedRange__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPtrNewCollapsedRange) xmlXPtrNewCollapsedRange __attribute((alias("xmlXPtrNewCollapsedRange__internal_alias")));
 #define xmlXPtrNewCollapsedRange xmlXPtrNewCollapsedRange__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPTR_ENABLED)
+#ifdef bottom_xpointer
+#undef xmlXPtrNewContext
+extern __typeof (xmlXPtrNewContext) xmlXPtrNewContext __attribute((alias("xmlXPtrNewContext__internal_alias")));
+#else
+#ifndef xmlXPtrNewContext
 extern __typeof (xmlXPtrNewContext) xmlXPtrNewContext__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPtrNewContext) xmlXPtrNewContext __attribute((alias("xmlXPtrNewContext__internal_alias")));
 #define xmlXPtrNewContext xmlXPtrNewContext__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPTR_ENABLED)
+#ifdef bottom_xpointer
+#undef xmlXPtrNewLocationSetNodeSet
+extern __typeof (xmlXPtrNewLocationSetNodeSet) xmlXPtrNewLocationSetNodeSet __attribute((alias("xmlXPtrNewLocationSetNodeSet__internal_alias")));
+#else
+#ifndef xmlXPtrNewLocationSetNodeSet
 extern __typeof (xmlXPtrNewLocationSetNodeSet) xmlXPtrNewLocationSetNodeSet__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPtrNewLocationSetNodeSet) xmlXPtrNewLocationSetNodeSet __attribute((alias("xmlXPtrNewLocationSetNodeSet__internal_alias")));
 #define xmlXPtrNewLocationSetNodeSet xmlXPtrNewLocationSetNodeSet__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPTR_ENABLED)
+#ifdef bottom_xpointer
+#undef xmlXPtrNewLocationSetNodes
+extern __typeof (xmlXPtrNewLocationSetNodes) xmlXPtrNewLocationSetNodes __attribute((alias("xmlXPtrNewLocationSetNodes__internal_alias")));
+#else
+#ifndef xmlXPtrNewLocationSetNodes
 extern __typeof (xmlXPtrNewLocationSetNodes) xmlXPtrNewLocationSetNodes__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPtrNewLocationSetNodes) xmlXPtrNewLocationSetNodes __attribute((alias("xmlXPtrNewLocationSetNodes__internal_alias")));
 #define xmlXPtrNewLocationSetNodes xmlXPtrNewLocationSetNodes__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPTR_ENABLED)
+#ifdef bottom_xpointer
+#undef xmlXPtrNewRange
+extern __typeof (xmlXPtrNewRange) xmlXPtrNewRange __attribute((alias("xmlXPtrNewRange__internal_alias")));
+#else
+#ifndef xmlXPtrNewRange
 extern __typeof (xmlXPtrNewRange) xmlXPtrNewRange__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPtrNewRange) xmlXPtrNewRange __attribute((alias("xmlXPtrNewRange__internal_alias")));
 #define xmlXPtrNewRange xmlXPtrNewRange__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPTR_ENABLED)
+#ifdef bottom_xpointer
+#undef xmlXPtrNewRangeNodeObject
+extern __typeof (xmlXPtrNewRangeNodeObject) xmlXPtrNewRangeNodeObject __attribute((alias("xmlXPtrNewRangeNodeObject__internal_alias")));
+#else
+#ifndef xmlXPtrNewRangeNodeObject
 extern __typeof (xmlXPtrNewRangeNodeObject) xmlXPtrNewRangeNodeObject__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPtrNewRangeNodeObject) xmlXPtrNewRangeNodeObject __attribute((alias("xmlXPtrNewRangeNodeObject__internal_alias")));
 #define xmlXPtrNewRangeNodeObject xmlXPtrNewRangeNodeObject__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPTR_ENABLED)
+#ifdef bottom_xpointer
+#undef xmlXPtrNewRangeNodePoint
+extern __typeof (xmlXPtrNewRangeNodePoint) xmlXPtrNewRangeNodePoint __attribute((alias("xmlXPtrNewRangeNodePoint__internal_alias")));
+#else
+#ifndef xmlXPtrNewRangeNodePoint
 extern __typeof (xmlXPtrNewRangeNodePoint) xmlXPtrNewRangeNodePoint__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPtrNewRangeNodePoint) xmlXPtrNewRangeNodePoint __attribute((alias("xmlXPtrNewRangeNodePoint__internal_alias")));
 #define xmlXPtrNewRangeNodePoint xmlXPtrNewRangeNodePoint__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPTR_ENABLED)
+#ifdef bottom_xpointer
+#undef xmlXPtrNewRangeNodes
+extern __typeof (xmlXPtrNewRangeNodes) xmlXPtrNewRangeNodes __attribute((alias("xmlXPtrNewRangeNodes__internal_alias")));
+#else
+#ifndef xmlXPtrNewRangeNodes
 extern __typeof (xmlXPtrNewRangeNodes) xmlXPtrNewRangeNodes__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPtrNewRangeNodes) xmlXPtrNewRangeNodes __attribute((alias("xmlXPtrNewRangeNodes__internal_alias")));
 #define xmlXPtrNewRangeNodes xmlXPtrNewRangeNodes__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPTR_ENABLED)
+#ifdef bottom_xpointer
+#undef xmlXPtrNewRangePointNode
+extern __typeof (xmlXPtrNewRangePointNode) xmlXPtrNewRangePointNode __attribute((alias("xmlXPtrNewRangePointNode__internal_alias")));
+#else
+#ifndef xmlXPtrNewRangePointNode
 extern __typeof (xmlXPtrNewRangePointNode) xmlXPtrNewRangePointNode__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPtrNewRangePointNode) xmlXPtrNewRangePointNode __attribute((alias("xmlXPtrNewRangePointNode__internal_alias")));
 #define xmlXPtrNewRangePointNode xmlXPtrNewRangePointNode__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPTR_ENABLED)
+#ifdef bottom_xpointer
+#undef xmlXPtrNewRangePoints
+extern __typeof (xmlXPtrNewRangePoints) xmlXPtrNewRangePoints __attribute((alias("xmlXPtrNewRangePoints__internal_alias")));
+#else
+#ifndef xmlXPtrNewRangePoints
 extern __typeof (xmlXPtrNewRangePoints) xmlXPtrNewRangePoints__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPtrNewRangePoints) xmlXPtrNewRangePoints __attribute((alias("xmlXPtrNewRangePoints__internal_alias")));
 #define xmlXPtrNewRangePoints xmlXPtrNewRangePoints__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPTR_ENABLED)
+#ifdef bottom_xpointer
+#undef xmlXPtrRangeToFunction
+extern __typeof (xmlXPtrRangeToFunction) xmlXPtrRangeToFunction __attribute((alias("xmlXPtrRangeToFunction__internal_alias")));
+#else
+#ifndef xmlXPtrRangeToFunction
 extern __typeof (xmlXPtrRangeToFunction) xmlXPtrRangeToFunction__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPtrRangeToFunction) xmlXPtrRangeToFunction __attribute((alias("xmlXPtrRangeToFunction__internal_alias")));
 #define xmlXPtrRangeToFunction xmlXPtrRangeToFunction__internal_alias
 #endif
+#endif
+#endif
 
 #if defined(LIBXML_XPTR_ENABLED)
+#ifdef bottom_xpointer
+#undef xmlXPtrWrapLocationSet
+extern __typeof (xmlXPtrWrapLocationSet) xmlXPtrWrapLocationSet __attribute((alias("xmlXPtrWrapLocationSet__internal_alias")));
+#else
+#ifndef xmlXPtrWrapLocationSet
 extern __typeof (xmlXPtrWrapLocationSet) xmlXPtrWrapLocationSet__internal_alias __attribute((visibility("hidden")));
-extern __typeof (xmlXPtrWrapLocationSet) xmlXPtrWrapLocationSet __attribute((alias("xmlXPtrWrapLocationSet__internal_alias")));
 #define xmlXPtrWrapLocationSet xmlXPtrWrapLocationSet__internal_alias
 #endif
+#endif
+#endif
 
+
+#endif
+#endif
+#endif
+#endif
+#endif
+

Modified: packages/libxml2/branches/upstream/current/encoding.c
===================================================================
--- packages/libxml2/branches/upstream/current/encoding.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/encoding.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -2332,7 +2332,7 @@
     unsigned char* outend;
     const unsigned char* instart = in;
     const unsigned char* inend;
-    const unsigned char* instop = inend;
+    const unsigned char* instop;
     unsigned int c;
 
     if ((out == NULL) || (outlen == NULL) || (inlen == NULL) ||
@@ -2340,6 +2340,7 @@
 	return(-1);
     outend = out + *outlen;
     inend = in + *inlen;
+    instop = inend;
     c = *in;
     while (in < inend && out < outend - 1) {
         if (c >= 0x80) {
@@ -3260,4 +3261,6 @@
 #endif
 #endif
 
+#define bottom_encoding
+#include "elfgcchack.h"
 

Modified: packages/libxml2/branches/upstream/current/entities.c
===================================================================
--- packages/libxml2/branches/upstream/current/entities.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/entities.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -964,3 +964,5 @@
     xmlHashScan(table, (xmlHashScanner)xmlDumpEntityDeclScan, buf);
 }
 #endif /* LIBXML_OUTPUT_ENABLED */
+#define bottom_entities
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/error.c
===================================================================
--- packages/libxml2/branches/upstream/current/error.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/error.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -969,3 +969,5 @@
     return 0;
 }
 
+#define bottom_error
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/gentest.py
===================================================================
--- packages/libxml2/branches/upstream/current/gentest.py	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/gentest.py	2005-04-04 18:23:13 UTC (rev 398)
@@ -45,6 +45,7 @@
     "xmlsave" : "LIBXML_OUTPUT_ENABLED",
     "DOCBparser" : "LIBXML_DOCB_ENABLED",
     "xmlmodule" : "LIBXML_MODULES_ENABLED",
+    "pattern" : "LIBXML_PATTERN_ENABLED",
 }
 
 #

Modified: packages/libxml2/branches/upstream/current/globals.c
===================================================================
--- packages/libxml2/branches/upstream/current/globals.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/globals.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -78,13 +78,6 @@
 #undef	xmlRealloc
 
 #if defined(DEBUG_MEMORY_LOCATION) || defined(DEBUG_MEMORY)
-#ifndef __DEBUG_MEMORY_ALLOC__
-extern void xmlMemFree(void *ptr);
-extern void * xmlMemMalloc(size_t size);
-extern void * xmlMemRealloc(void *ptr,size_t size);
-extern char * xmlMemoryStrdup(const char *str);
-#endif
-
 xmlFreeFunc xmlFree = (xmlFreeFunc) xmlMemFree;
 xmlMallocFunc xmlMalloc = (xmlMallocFunc) xmlMemMalloc;
 xmlMallocFunc xmlMallocAtomic = (xmlMallocFunc) xmlMemMalloc;
@@ -1096,3 +1089,6 @@
     else
 	return (&xmlGetGlobalState()->xmlOutputBufferCreateFilenameValue);
 }
+
+#define bottom_globals
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/hash.c
===================================================================
--- packages/libxml2/branches/upstream/current/hash.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/hash.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -1075,3 +1075,5 @@
     }
 }
 
+#define bottom_hash
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/include/libxml/parser.h
===================================================================
--- packages/libxml2/branches/upstream/current/include/libxml/parser.h	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/include/libxml/parser.h	2005-04-04 18:23:13 UTC (rev 398)
@@ -825,7 +825,7 @@
  */
 #ifdef LIBXML_SAX1_ENABLED
 XMLPUBFUN xmlDocPtr XMLCALL	
-		xmlParseDoc		(xmlChar *cur);
+		xmlParseDoc		(const xmlChar *cur);
 XMLPUBFUN xmlDocPtr XMLCALL	
 		xmlParseFile		(const char *filename);
 XMLPUBFUN xmlDocPtr XMLCALL	
@@ -877,7 +877,7 @@
 					 int size);
 XMLPUBFUN xmlDocPtr XMLCALL	
 		xmlSAXParseDoc		(xmlSAXHandlerPtr sax,
-					 xmlChar *cur,
+					 const xmlChar *cur,
 					 int recovery);
 XMLPUBFUN xmlDocPtr XMLCALL	
 		xmlSAXParseMemory	(xmlSAXHandlerPtr sax,

Modified: packages/libxml2/branches/upstream/current/include/libxml/schemasInternals.h
===================================================================
--- packages/libxml2/branches/upstream/current/include/libxml/schemasInternals.h	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/include/libxml/schemasInternals.h	2005-04-04 18:23:13 UTC (rev 398)
@@ -102,6 +102,7 @@
     XML_SCHEMA_TYPE_IDC_UNIQUE,
     XML_SCHEMA_TYPE_IDC_KEY,
     XML_SCHEMA_TYPE_IDC_KEYREF,
+    XML_SCHEMA_TYPE_PARTICLE,
     XML_SCHEMA_FACET_MININCLUSIVE = 1000,
     XML_SCHEMA_FACET_MINEXCLUSIVE,
     XML_SCHEMA_FACET_MAXINCLUSIVE,
@@ -113,7 +114,8 @@
     XML_SCHEMA_FACET_WHITESPACE,
     XML_SCHEMA_FACET_LENGTH,
     XML_SCHEMA_FACET_MAXLENGTH,
-    XML_SCHEMA_FACET_MINLENGTH
+    XML_SCHEMA_FACET_MINLENGTH,
+    XML_SCHEMA_EXTRA_QNAMEREF = 2000
 } xmlSchemaTypeType;
 
 typedef enum {
@@ -409,7 +411,7 @@
  * the complexType owns an attribute wildcard, i.e.
  * it can be freed by the complexType
  */
-#define XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD    1 << 4
+#define XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD    1 << 4 /* Obsolete. */
 /**
  * XML_SCHEMAS_TYPE_VARIETY_ABSENT:
  *
@@ -507,7 +509,20 @@
  * indicates if the facets need a computed value
  */
 #define XML_SCHEMAS_TYPE_FACETSNEEDVALUE    1 << 21
+/**
+ * XML_SCHEMAS_TYPE_INTERNAL_RESOLVED:
+ *
+ * indicates that the type was typefixed
+ */
+#define XML_SCHEMAS_TYPE_INTERNAL_RESOLVED    1 << 22
+/**
+ * XML_SCHEMAS_TYPE_INTERNAL_INVALID:
+ *
+ * indicates that the type is invalid
+ */
+#define XML_SCHEMAS_TYPE_INTERNAL_INVALID    1 << 23
 
+
 /**
  * _xmlSchemaType:
  *
@@ -835,6 +850,7 @@
     int preserve;        /* whether to free the document */
     int counter; /* used to give ononymous components unique names */
     xmlHashTablePtr idcDef;
+    void *volatiles; /* Misc. helper items (e.g. reference items) */
 };
 
 XMLPUBFUN void XMLCALL         xmlSchemaFreeType        (xmlSchemaTypePtr type);

Modified: packages/libxml2/branches/upstream/current/include/libxml/xmlerror.h
===================================================================
--- packages/libxml2/branches/upstream/current/include/libxml/xmlerror.h	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/include/libxml/xmlerror.h	2005-04-04 18:23:13 UTC (rev 398)
@@ -663,6 +663,8 @@
     XML_C14N_REQUIRES_UTF8, /* 1951 */
     XML_C14N_CREATE_STACK, /* 1952 */
     XML_C14N_INVALID_NODE, /* 1953 */
+    XML_C14N_UNKNOW_NODE, /* 1954 */
+    XML_C14N_RELATIVE_NAMESPACE, /* 1955 */
     XML_FTP_PASV_ANSWER = 2000,
     XML_FTP_EPSV_ANSWER, /* 2001 */
     XML_FTP_ACCNT, /* 2002 */

Modified: packages/libxml2/branches/upstream/current/include/libxml/xmlschemastypes.h
===================================================================
--- packages/libxml2/branches/upstream/current/include/libxml/xmlschemastypes.h	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/include/libxml/xmlschemastypes.h	2005-04-04 18:23:13 UTC (rev 398)
@@ -50,7 +50,14 @@
 		xmlSchemaValidateFacet		(xmlSchemaTypePtr base,
 						 xmlSchemaFacetPtr facet,
 						 const xmlChar *value,
-						 xmlSchemaValPtr val);	
+						 xmlSchemaValPtr val);
+XMLPUBFUN int XMLCALL
+		xmlSchemaValidateFacetWhtsp	(xmlSchemaFacetPtr facet,
+						 xmlSchemaWhitespaceValueType fws,
+						 xmlSchemaValType valType,						 
+						 const xmlChar *value,
+						 xmlSchemaValPtr val,
+						 xmlSchemaWhitespaceValueType ws);
 XMLPUBFUN void XMLCALL		
 		xmlSchemaFreeValue		(xmlSchemaValPtr val);
 XMLPUBFUN xmlSchemaFacetPtr XMLCALL 
@@ -88,8 +95,15 @@
 						 xmlSchemaFacetPtr facet,
 						 const xmlChar *value,
 						 xmlSchemaValPtr val,
-						 unsigned long *length) ;
+						 unsigned long *length);
 XMLPUBFUN int XMLCALL
+		xmlSchemaValidateLengthFacetWhtsp(xmlSchemaFacetPtr facet,
+						  xmlSchemaValType valType,
+						  const xmlChar *value,
+						  xmlSchemaValPtr val,						  
+						  unsigned long *length,
+						  xmlSchemaWhitespaceValueType ws);
+XMLPUBFUN int XMLCALL
 		xmlSchemaValPredefTypeNodeNoNorm(xmlSchemaTypePtr type, 
 						 const xmlChar *value,
 						 xmlSchemaValPtr *val, 
@@ -110,7 +124,9 @@
 						 xmlSchemaValPtr y,
 						 xmlSchemaWhitespaceValueType yws);
 XMLPUBFUN xmlSchemaValPtr XMLCALL
-		xmlSchemaCopyValue		(xmlSchemaValPtr val); 
+		xmlSchemaCopyValue		(xmlSchemaValPtr val);
+XMLPUBFUN xmlSchemaValType XMLCALL
+		xmlSchemaGetValType		(xmlSchemaValPtr val);
 
 #ifdef __cplusplus
 }

Modified: packages/libxml2/branches/upstream/current/include/libxml/xmlversion.h
===================================================================
--- packages/libxml2/branches/upstream/current/include/libxml/xmlversion.h	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/include/libxml/xmlversion.h	2005-04-04 18:23:13 UTC (rev 398)
@@ -29,28 +29,28 @@
  *
  * the version string like "1.2.3"
  */
-#define LIBXML_DOTTED_VERSION "2.6.18"
+#define LIBXML_DOTTED_VERSION "2.6.19"
 
 /**
  * LIBXML_VERSION:
  *
  * the version number: 1.2.3 value is 1002003
  */
-#define LIBXML_VERSION 20618
+#define LIBXML_VERSION 20619
 
 /**
  * LIBXML_VERSION_STRING:
  *
  * the version number string, 1.2.3 value is "1002003"
  */
-#define LIBXML_VERSION_STRING "20618"
+#define LIBXML_VERSION_STRING "20619"
 
 /**
  * LIBXML_VERSION_EXTRA:
  *
  * extra version information, used to show a CVS compilation
  */
-#define LIBXML_VERSION_EXTRA "-CVS2374"
+#define LIBXML_VERSION_EXTRA "-CVS2405"
 
 /**
  * LIBXML_TEST_VERSION:
@@ -58,7 +58,7 @@
  * Macro to check that the libxml version in use is compatible with
  * the version the software has been compiled against
  */
-#define LIBXML_TEST_VERSION xmlCheckVersion(20618);
+#define LIBXML_TEST_VERSION xmlCheckVersion(20619);
 
 #ifndef VMS
 #if 0

Modified: packages/libxml2/branches/upstream/current/legacy.c
===================================================================
--- packages/libxml2/branches/upstream/current/legacy.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/legacy.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -1338,5 +1338,7 @@
     DEPRECATED("cdataBlock")
         xmlSAX2CDataBlock(ctx, value, len);
 }
+#define bottom_legacy
+#include "elfgcchack.h"
 #endif /* LIBXML_LEGACY_ENABLED */
 

Modified: packages/libxml2/branches/upstream/current/libxml.spec.in
===================================================================
--- packages/libxml2/branches/upstream/current/libxml.spec.in	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/libxml.spec.in	2005-04-04 18:23:13 UTC (rev 398)
@@ -89,13 +89,15 @@
     %configure
     make
 fi
-(cd doc/examples ; make clean)
 gzip -9 ChangeLog
 
 %install
 rm -fr %{buildroot}
 
 %makeinstall
+(cd doc/examples ; make clean ; rm -rf .deps)
+gzip -9 doc/libxml2-api.xml
+rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
 
 %clean
 rm -fr %{buildroot}
@@ -124,7 +126,7 @@
 %doc %{_mandir}/man1/xml2-config.1*
 %doc AUTHORS ChangeLog.gz NEWS README Copyright TODO
 %doc doc/*.html doc/html doc/*.gif doc/*.png
-%doc doc/tutorial doc/libxml2-api.xml
+%doc doc/tutorial doc/libxml2-api.xml.gz
 %doc doc/examples
 
 %{_libdir}/lib*.so

Modified: packages/libxml2/branches/upstream/current/libxml2.spec
===================================================================
--- packages/libxml2/branches/upstream/current/libxml2.spec	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/libxml2.spec	2005-04-04 18:23:13 UTC (rev 398)
@@ -1,6 +1,6 @@
 Summary: Library providing XML and HTML support
 Name: libxml2
-Version: 2.6.18
+Version: 2.6.19
 Release: 1
 License: MIT
 Group: Development/Libraries
@@ -89,13 +89,15 @@
     %configure
     make
 fi
-(cd doc/examples ; make clean)
 gzip -9 ChangeLog
 
 %install
 rm -fr %{buildroot}
 
 %makeinstall
+(cd doc/examples ; make clean ; rm -rf .deps)
+gzip -9 doc/libxml2-api.xml
+rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
 
 %clean
 rm -fr %{buildroot}
@@ -124,7 +126,7 @@
 %doc %{_mandir}/man1/xml2-config.1*
 %doc AUTHORS ChangeLog.gz NEWS README Copyright TODO
 %doc doc/*.html doc/html doc/*.gif doc/*.png
-%doc doc/tutorial doc/libxml2-api.xml
+%doc doc/tutorial doc/libxml2-api.xml.gz
 %doc doc/examples
 
 %{_libdir}/lib*.so
@@ -148,8 +150,8 @@
 %doc doc/python.html
 
 %changelog
-* Sun Mar 13 2005 Daniel Veillard <veillard at redhat.com>
-- upstream release 2.6.18 see http://xmlsoft.org/news.html
+* Sat Apr  2 2005 Daniel Veillard <veillard at redhat.com>
+- upstream release 2.6.19 see http://xmlsoft.org/news.html
 
 * Thu Jan  2 2003 Daniel Veillard <veillard at redhat.com>
 - integrated drv_libxml2 xml.sax driver from Stéphane Bidoul

Modified: packages/libxml2/branches/upstream/current/list.c
===================================================================
--- packages/libxml2/branches/upstream/current/list.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/list.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -775,3 +775,5 @@
 }
 /* xmlListUnique() */
 /* xmlListSwap */
+#define bottom_list
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/macos/src/config-mac.h
===================================================================
--- packages/libxml2/branches/upstream/current/macos/src/config-mac.h	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/macos/src/config-mac.h	2005-04-04 18:23:13 UTC (rev 398)
@@ -16,7 +16,7 @@
 #undef HAVE_LIBHISTORY
 #undef HAVE_LIBREADLINE
 
-#define SOCKLEN_T socklen_t
+#define XML_SOCKLEN_T socklen_t
 #define HAVE_LIBPTHREAD
 #define HAVE_PTHREAD_H
 #define LIBXML_THREAD_ENABLED

Modified: packages/libxml2/branches/upstream/current/nanoftp.c
===================================================================
--- packages/libxml2/branches/upstream/current/nanoftp.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/nanoftp.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -81,8 +81,8 @@
 #define _WINSOCKAPI_
 #include <wsockcompat.h>
 #include <winsock2.h>
-#undef SOCKLEN_T
-#define SOCKLEN_T unsigned int
+#undef XML_SOCKLEN_T
+#define XML_SOCKLEN_T unsigned int
 #endif
 
 /**
@@ -95,7 +95,7 @@
 #define SOCKET int
 #endif
 #if defined(VMS) || defined(__VMS)
-#define SOCKLEN_T unsigned int
+#define XML_SOCKLEN_T unsigned int
 #endif
 
 #ifdef __BEOS__
@@ -1372,7 +1372,7 @@
 #else
     struct sockaddr_in dataAddr;
 #endif
-    SOCKLEN_T dataAddrLen;
+    XML_SOCKLEN_T dataAddrLen;
 
     if (ctxt == NULL) return(-1);
 
@@ -2104,3 +2104,5 @@
 }
 #endif /* STANDALONE */
 #endif /* LIBXML_FTP_ENABLED */
+#define bottom_nanoftp
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/nanohttp.c
===================================================================
--- packages/libxml2/branches/upstream/current/nanohttp.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/nanohttp.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -69,7 +69,7 @@
 
 #ifdef VMS
 #include <stropts>
-#define SOCKLEN_T unsigned int
+#define XML_SOCKLEN_T unsigned int
 #define SOCKET int
 #endif
 
@@ -78,8 +78,8 @@
 #define _WINSOCKAPI_
 #include <wsockcompat.h>
 #include <winsock2.h>
-#undef SOCKLEN_T
-#define SOCKLEN_T unsigned int
+#undef XML_SOCKLEN_T
+#define XML_SOCKLEN_T unsigned int
 #endif
 
 
@@ -107,8 +107,8 @@
 #endif
 #endif
 
-#ifndef SOCKLEN_T
-#define SOCKLEN_T unsigned int
+#ifndef XML_SOCKLEN_T
+#define XML_SOCKLEN_T unsigned int
 #endif
 #ifndef SOCKET
 #define SOCKET int
@@ -861,7 +861,7 @@
                            || FD_ISSET(s, &xfd)
 #endif
                                                 ) {
-	SOCKLEN_T len;
+	XML_SOCKLEN_T len;
 	len = sizeof(status);
 #ifdef SO_ERROR
 	if (getsockopt(s, SOL_SOCKET, SO_ERROR, (char*)&status, &len) < 0 ) {
@@ -1673,3 +1673,5 @@
 }
 #endif /* STANDALONE */
 #endif /* LIBXML_HTTP_ENABLED */
+#define bottom_nanohttp
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/parser.c
===================================================================
--- packages/libxml2/branches/upstream/current/parser.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/parser.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -3220,8 +3220,9 @@
 		        (ctxt->sax->ignorableWhitespace !=
 		         ctxt->sax->characters)) {
 			if (areBlanks(ctxt, tmp, nbchar, 1)) {
-			    ctxt->sax->ignorableWhitespace(ctxt->userData,
-						   tmp, nbchar);
+			    if (ctxt->sax->ignorableWhitespace != NULL)
+				ctxt->sax->ignorableWhitespace(ctxt->userData,
+						       tmp, nbchar);
 			} else if (ctxt->sax->characters != NULL)
 			    ctxt->sax->characters(ctxt->userData,
 						  tmp, nbchar);
@@ -3274,8 +3275,9 @@
 		    ctxt->input->cur = in;
 
 		    if (areBlanks(ctxt, tmp, nbchar, 0)) {
-			ctxt->sax->ignorableWhitespace(ctxt->userData,
-					       tmp, nbchar);
+		        if (ctxt->sax->ignorableWhitespace != NULL)
+			    ctxt->sax->ignorableWhitespace(ctxt->userData,
+							   tmp, nbchar);
 		    } else if (ctxt->sax->characters != NULL)
 			ctxt->sax->characters(ctxt->userData,
 					      tmp, nbchar);
@@ -12210,7 +12212,7 @@
  */
 
 xmlDocPtr
-xmlSAXParseDoc(xmlSAXHandlerPtr sax, xmlChar *cur, int recovery) {
+xmlSAXParseDoc(xmlSAXHandlerPtr sax, const xmlChar *cur, int recovery) {
     xmlDocPtr ret;
     xmlParserCtxtPtr ctxt;
     xmlSAXHandlerPtr oldsax = NULL;
@@ -12251,7 +12253,7 @@
  */
 
 xmlDocPtr
-xmlParseDoc(xmlChar *cur) {
+xmlParseDoc(const xmlChar *cur) {
     return(xmlSAXParseDoc(NULL, cur, 0));
 }
 #endif /* LIBXML_SAX1_ENABLED */
@@ -13089,3 +13091,6 @@
     inputPush(ctxt, stream);
     return (xmlDoRead(ctxt, URL, encoding, options, 1));
 }
+
+#define bottom_parser
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/parserInternals.c
===================================================================
--- packages/libxml2/branches/upstream/current/parserInternals.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/parserInternals.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -2092,3 +2092,5 @@
     return(old);
 }
 
+#define bottom_parserInternals
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/pattern.c
===================================================================
--- packages/libxml2/branches/upstream/current/pattern.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/pattern.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -1082,7 +1082,7 @@
 		ctxt->error = 1;
 		goto error;
 	    }
-	    xmlFree(name);
+	    /* NOT REACHED xmlFree(name); */
 	}
     } else if (CUR == '*') {
         if (name != NULL) {
@@ -2075,4 +2075,6 @@
 
 }
 
+#define bottom_pattern
+#include "elfgcchack.h"
 #endif /* LIBXML_PATTERN_ENABLED */

Modified: packages/libxml2/branches/upstream/current/python/generator.py
===================================================================
--- packages/libxml2/branches/upstream/current/python/generator.py	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/python/generator.py	2005-04-04 18:23:13 UTC (rev 398)
@@ -346,6 +346,9 @@
         return 1
     if name == "xmlFreeValidCtxt":
         return 1
+    if name == "xmlSchemaFreeValidCtxt":
+        return 1
+
 #
 # Those are skipped because the Const version is used of the bindings
 # instead.
@@ -744,6 +747,9 @@
     "inputBuffer": "ioReadWrapper",
     "parserCtxt": "parserCtxtCore",
     "xmlTextReader": "xmlTextReaderCore",
+    "ValidCtxt": "ValidCtxtCore",
+    "SchemaValidCtxt": "SchemaValidCtxtCore",
+    "relaxNgValidCtxt": "relaxNgValidCtxtCore",
 }
 classes_destructors = {
     "parserCtxt": "xmlFreeParserCtxt",

Modified: packages/libxml2/branches/upstream/current/python/libxml.c
===================================================================
--- packages/libxml2/branches/upstream/current/python/libxml.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/python/libxml.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -1378,7 +1378,7 @@
     SAX = &pythonSaxHandler;
     Py_INCREF(pyobj_SAX);
     /* The reference is released in pythonEndDocument() */
-    xmlSAXParseFileWithData(SAX, URI, recover, pyobj_SAX);
+    xmlSAXUserParseFile(SAX, pyobj_SAX, URI);
     Py_INCREF(Py_None);
     return (Py_None);
 }
@@ -1859,7 +1859,7 @@
 }
 
 
-PyObject *
+static PyObject *
 libxml_xmlFreeValidCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
     xmlValidCtxtPtr cur;
     xmlValidCtxtPyCtxtPtr pyCtxt;
@@ -3289,8 +3289,7 @@
 	return(py_retval);
 }
 
-#if 0
-PyObject *
+static PyObject *
 libxml_xmlSchemaFreeValidCtxt(ATTRIBUTE_UNUSED PyObject * self, PyObject * args)
 {
 	xmlSchemaValidCtxtPtr ctxt;
@@ -3316,7 +3315,6 @@
 	Py_INCREF(Py_None);
 	return(Py_None);
 }
-#endif
 
 #endif
 
@@ -3668,6 +3666,7 @@
     {(char *)"xmlRelaxNGSetValidErrors", libxml_xmlRelaxNGSetValidErrors, METH_VARARGS, NULL},
     {(char *)"xmlRelaxNGFreeValidCtxt", libxml_xmlRelaxNGFreeValidCtxt, METH_VARARGS, NULL},
     {(char *)"xmlSchemaSetValidErrors", libxml_xmlSchemaSetValidErrors, METH_VARARGS, NULL},
+    {(char *)"xmlSchemaFreeValidCtxt", libxml_xmlSchemaFreeValidCtxt, METH_VARARGS, NULL},
 #endif
 #ifdef LIBXML_C14N_ENABLED
 #ifdef LIBXML_OUTPUT_ENABLED

Modified: packages/libxml2/branches/upstream/current/python/libxml.py
===================================================================
--- packages/libxml2/branches/upstream/current/python/libxml.py	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/python/libxml.py	2005-04-04 18:23:13 UTC (rev 398)
@@ -587,6 +587,45 @@
         return libxml2mod.addLocalCatalog(self._o, uri)
     
 
+class ValidCtxtCore:
+
+    def __init__(self, *args, **kw):
+        pass
+
+    def setValidityErrorHandler(self, err_func, warn_func, arg=None):
+        """
+        Register error and warning handlers for DTD validation.
+        These will be called back as f(msg,arg)
+        """
+        libxml2mod.xmlSetValidErrors(self._o, err_func, warn_func, arg)
+    
+
+class SchemaValidCtxtCore:
+
+    def __init__(self, *args, **kw):
+        pass
+
+    def setValidityErrorHandler(self, err_func, warn_func, arg=None):
+        """
+        Register error and warning handlers for Schema validation.
+        These will be called back as f(msg,arg)
+        """
+        libxml2mod.xmlSchemaSetValidErrors(self._o, err_func, warn_func, arg)
+
+
+class relaxNgValidCtxtCore:
+
+    def __init__(self, *args, **kw):
+        pass
+
+    def setValidityErrorHandler(self, err_func, warn_func, arg=None):
+        """
+        Register error and warning handlers for RelaxNG validation.
+        These will be called back as f(msg,arg)
+        """
+        libxml2mod.xmlRelaxNGSetValidErrors(self._o, err_func, warn_func, arg)
+
+    
 def _xmlTextReaderErrorFunc((f,arg),msg,severity,locator):
     """Intermediate callback to wrap the locator"""
     return f(arg,msg,severity,xmlTextReaderLocator(locator))

Modified: packages/libxml2/branches/upstream/current/python/libxml2-py.c
===================================================================
--- packages/libxml2/branches/upstream/current/python/libxml2-py.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/python/libxml2-py.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -7738,22 +7738,6 @@
 #endif /* LIBXML_XPATH_ENABLED */
 #ifdef LIBXML_SCHEMAS_ENABLED
 PyObject *
-libxml_xmlSchemaFreeValidCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
-    xmlSchemaValidCtxtPtr ctxt;
-    PyObject *pyobj_ctxt;
-
-    if (!PyArg_ParseTuple(args, (char *)"O:xmlSchemaFreeValidCtxt", &pyobj_ctxt))
-        return(NULL);
-    ctxt = (xmlSchemaValidCtxtPtr) PySchemaValidCtxt_Get(pyobj_ctxt);
-
-    xmlSchemaFreeValidCtxt(ctxt);
-    Py_INCREF(Py_None);
-    return(Py_None);
-}
-
-#endif /* LIBXML_SCHEMAS_ENABLED */
-#ifdef LIBXML_SCHEMAS_ENABLED
-PyObject *
 libxml_xmlSchemaNewParserCtxt(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
     PyObject *py_retval;
     xmlSchemaParserCtxtPtr c_retval;

Modified: packages/libxml2/branches/upstream/current/python/setup.py
===================================================================
--- packages/libxml2/branches/upstream/current/python/setup.py	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/python/setup.py	2005-04-04 18:23:13 UTC (rev 398)
@@ -226,7 +226,7 @@
 setup (name = "libxml2-python",
        # On *nix, the version number is created from setup.py.in
        # On windows, it is set by configure.js
-       version = "2.6.18",
+       version = "2.6.19",
        description = descr,
        author = "Daniel Veillard",
        author_email = "veillard at redhat.com",

Modified: packages/libxml2/branches/upstream/current/python/tests/Makefile.am
===================================================================
--- packages/libxml2/branches/upstream/current/python/tests/Makefile.am	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/python/tests/Makefile.am	2005-04-04 18:23:13 UTC (rev 398)
@@ -39,7 +39,10 @@
     tstLastError.py \
     indexes.py \
     dtdvalid.py \
-    tstmem.py
+    tstmem.py	\
+    validDTD.py	\
+    validSchemas.py \
+    validRNG.py
 
 XMLS=		\
     tst.xml	\

Modified: packages/libxml2/branches/upstream/current/python/tests/Makefile.in
===================================================================
--- packages/libxml2/branches/upstream/current/python/tests/Makefile.in	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/python/tests/Makefile.in	2005-04-04 18:23:13 UTC (rev 398)
@@ -295,7 +295,10 @@
     tstLastError.py \
     indexes.py \
     dtdvalid.py \
-    tstmem.py
+    tstmem.py	\
+    validDTD.py	\
+    validSchemas.py \
+    validRNG.py
 
 XMLS = \
     tst.xml	\

Added: packages/libxml2/branches/upstream/current/python/tests/validDTD.py
===================================================================
--- packages/libxml2/branches/upstream/current/python/tests/validDTD.py	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/python/tests/validDTD.py	2005-04-04 18:23:13 UTC (rev 398)
@@ -0,0 +1,59 @@
+#!/usr/bin/python -u
+import libxml2
+import sys
+
+ARG = 'test string'
+
+class ErrorHandler:
+
+    def __init__(self):
+        self.errors = []
+
+    def handler(self, msg, data):
+        if data != ARG:
+            raise Exception, "Error handler did not receive correct argument"
+        self.errors.append(msg)
+
+
+# Memory debug specific
+libxml2.debugMemory(1)
+
+dtd="""<!ELEMENT foo EMPTY>"""
+valid="""<?xml version="1.0"?>
+<foo></foo>"""
+
+invalid="""<?xml version="1.0"?>
+<foo><bar/></foo>"""
+
+dtd = libxml2.parseDTD(None, 'test.dtd')
+ctxt = libxml2.newValidCtxt()
+e = ErrorHandler()
+ctxt.setValidityErrorHandler(e.handler, e.handler, ARG)
+
+# Test valid document
+doc = libxml2.parseDoc(valid)
+ret = doc.validateDtd(ctxt, dtd)
+if ret != 1 or e.errors:
+    print "error doing DTD validation"
+    sys.exit(1)
+doc.freeDoc()
+
+# Test invalid document
+doc = libxml2.parseDoc(invalid)
+ret = doc.validateDtd(ctxt, dtd)
+if ret != 0 or not e.errors:
+    print "Error: document supposed to be invalid"
+doc.freeDoc()
+
+dtd.freeDtd()
+del dtd
+del ctxt
+
+# Memory debug specific
+libxml2.cleanupParser()
+if libxml2.debugMemory(1) == 0:
+    print "OK"
+else:
+    print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+    libxml2.dumpMemory()
+


Property changes on: packages/libxml2/branches/upstream/current/python/tests/validDTD.py
___________________________________________________________________
Name: svn:executable
   + *

Added: packages/libxml2/branches/upstream/current/python/tests/validRNG.py
===================================================================
--- packages/libxml2/branches/upstream/current/python/tests/validRNG.py	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/python/tests/validRNG.py	2005-04-04 18:23:13 UTC (rev 398)
@@ -0,0 +1,76 @@
+#!/usr/bin/python -u
+import libxml2
+import sys
+
+ARG = 'test string'
+
+class ErrorHandler:
+
+    def __init__(self):
+        self.errors = []
+
+    def handler(self, msg, data):
+        if data != ARG:
+            raise Exception, "Error handler did not receive correct argument"
+        self.errors.append(msg)
+
+# Memory debug specific
+libxml2.debugMemory(1)
+
+schema="""<?xml version="1.0"?>
+<element name="foo"
+         xmlns="http://relaxng.org/ns/structure/1.0"
+         xmlns:a="http://relaxng.org/ns/annotation/1.0"
+         xmlns:ex1="http://www.example.com/n1"
+         xmlns:ex2="http://www.example.com/n2">
+  <a:documentation>A foo element.</a:documentation>
+  <element name="ex1:bar1">
+    <empty/>
+  </element>
+  <element name="ex2:bar2">
+    <empty/>
+  </element>
+</element>
+"""
+
+valid="""<?xml version="1.0"?>
+<foo><pre1:bar1 xmlns:pre1="http://www.example.com/n1"/><pre2:bar2 xmlns:pre2="http://www.example.com/n2"/></foo>"""
+
+invalid="""<?xml version="1.0"?>
+<foo><pre1:bar1 xmlns:pre1="http://www.example.com/n1">bad</pre1:bar1><pre2:bar2 xmlns:pre2="http://www.example.com/n2"/></foo>"""
+
+rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema))
+rngs = rngp.relaxNGParse()
+ctxt = rngs.relaxNGNewValidCtxt()
+e = ErrorHandler()
+ctxt.setValidityErrorHandler(e.handler, e.handler, ARG)
+
+# Test valid document
+doc = libxml2.parseDoc(valid)
+ret = doc.relaxNGValidateDoc(ctxt)
+if ret != 0 or e.errors:
+    print "error doing RelaxNG validation"
+    sys.exit(1)
+doc.freeDoc()
+
+# Test invalid document
+doc = libxml2.parseDoc(invalid)
+ret = doc.relaxNGValidateDoc(ctxt)
+if ret == 0 or not e.errors:
+    print "Error: document supposed to be RelaxNG invalid"
+    sys.exit(1)
+doc.freeDoc()
+
+del rngp
+del rngs
+del ctxt
+libxml2.relaxNGCleanupTypes()
+
+# Memory debug specific
+libxml2.cleanupParser()
+if libxml2.debugMemory(1) == 0:
+    print "OK"
+else:
+    print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+    libxml2.dumpMemory()
+


Property changes on: packages/libxml2/branches/upstream/current/python/tests/validRNG.py
___________________________________________________________________
Name: svn:executable
   + *

Added: packages/libxml2/branches/upstream/current/python/tests/validSchemas.py
===================================================================
--- packages/libxml2/branches/upstream/current/python/tests/validSchemas.py	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/python/tests/validSchemas.py	2005-04-04 18:23:13 UTC (rev 398)
@@ -0,0 +1,83 @@
+#!/usr/bin/python -u
+import libxml2
+import sys
+
+ARG = 'test string'
+
+class ErrorHandler:
+
+    def __init__(self):
+        self.errors = []
+
+    def handler(self, msg, data):
+        if data != ARG:
+            raise Exception, "Error handler did not receive correct argument"
+        self.errors.append(msg)
+
+# Memory debug specific
+libxml2.debugMemory(1)
+
+schema="""<?xml version="1.0" encoding="iso-8859-1"?>
+<schema xmlns = "http://www.w3.org/2001/XMLSchema">
+	<element name = "Customer">
+		<complexType>
+			<sequence>
+				<element name = "FirstName" type = "string" />
+				<element name = "MiddleInitial" type = "string" />
+				<element name = "LastName" type = "string" />
+			</sequence>
+			<attribute name = "customerID" type = "integer" />
+		</complexType>
+	</element>
+</schema>"""
+
+valid="""<?xml version="1.0" encoding="iso-8859-1"?>
+<Customer customerID = "24332">
+	<FirstName>Raymond</FirstName>
+	<MiddleInitial>G</MiddleInitial>
+	<LastName>Bayliss</LastName>
+</Customer>	
+"""
+
+invalid="""<?xml version="1.0" encoding="iso-8859-1"?>
+<Customer customerID = "24332">
+	<MiddleInitial>G</MiddleInitial>
+	<LastName>Bayliss</LastName>
+</Customer>	
+"""
+
+e = ErrorHandler()
+ctxt_parser = libxml2.schemaNewMemParserCtxt(schema, len(schema))
+ctxt_schema = ctxt_parser.schemaParse()
+ctxt_valid  = ctxt_schema.schemaNewValidCtxt()
+ctxt_valid.setValidityErrorHandler(e.handler, e.handler, ARG)
+
+# Test valid document
+doc = libxml2.parseDoc(valid)
+ret = doc.schemaValidateDoc(ctxt_valid)
+if ret != 0 or e.errors:
+    print "error doing schema validation"
+    sys.exit(1)
+doc.freeDoc()
+
+# Test invalid document
+doc = libxml2.parseDoc(invalid)
+ret = doc.schemaValidateDoc(ctxt_valid)
+if ret == 0 or not e.errors:
+    print "Error: document supposer to be schema invalid"
+    sys.exit(1)
+doc.freeDoc()
+
+del ctxt_parser
+del ctxt_schema
+del ctxt_valid
+libxml2.schemaCleanupTypes()
+
+# Memory debug specific
+libxml2.cleanupParser()
+if libxml2.debugMemory(1) == 0:
+    print "OK"
+else:
+    print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+    libxml2.dumpMemory()
+


Property changes on: packages/libxml2/branches/upstream/current/python/tests/validSchemas.py
___________________________________________________________________
Name: svn:executable
   + *

Modified: packages/libxml2/branches/upstream/current/relaxng.c
===================================================================
--- packages/libxml2/branches/upstream/current/relaxng.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/relaxng.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -6129,11 +6129,18 @@
         ret = XML_RELAXNG_CONTENT_EMPTY;
         if ((cur->type == XML_RELAXNG_REF) ||
             (cur->type == XML_RELAXNG_PARENTREF)) {
+           /*
+            * This should actually be caught by list//element(ref) at the
+            * element boundaries, c.f. Bug #159968 local refs are dropped
+            * in step 4.19.
+            */
+#if 0
             if (flags & XML_RELAXNG_IN_LIST) {
                 xmlRngPErr(ctxt, cur->node, XML_RNGP_PAT_LIST_REF,
                            "Found forbidden pattern list//ref\n", NULL,
                            NULL);
             }
+#endif
             if (flags & XML_RELAXNG_IN_DATAEXCEPT) {
                 xmlRngPErr(ctxt, cur->node, XML_RNGP_PAT_DATA_EXCEPT_REF,
                            "Found forbidden pattern data/except//ref\n",
@@ -10701,4 +10708,6 @@
     return (ret);
 }
 
+#define bottom_relaxng
+#include "elfgcchack.h"
 #endif /* LIBXML_SCHEMAS_ENABLED */

Added: packages/libxml2/branches/upstream/current/result/relaxng/list_0
===================================================================

Added: packages/libxml2/branches/upstream/current/result/relaxng/list_0.err
===================================================================
--- packages/libxml2/branches/upstream/current/result/relaxng/list_0.err	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/result/relaxng/list_0.err	2005-04-04 18:23:13 UTC (rev 398)
@@ -0,0 +1 @@
+./test/relaxng/list_0.xml validates

Added: packages/libxml2/branches/upstream/current/result/relaxng/list_1
===================================================================

Added: packages/libxml2/branches/upstream/current/result/relaxng/list_1.err
===================================================================
--- packages/libxml2/branches/upstream/current/result/relaxng/list_1.err	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/result/relaxng/list_1.err	2005-04-04 18:23:13 UTC (rev 398)
@@ -0,0 +1,2 @@
+./test/relaxng/list_1.xml:1: element elem1: Relax-NG validity error : Element elem1 failed to validate attributes
+./test/relaxng/list_1.xml fails to validate

Added: packages/libxml2/branches/upstream/current/result/relaxng/list_err
===================================================================
--- packages/libxml2/branches/upstream/current/result/relaxng/list_err	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/result/relaxng/list_err	2005-04-04 18:23:13 UTC (rev 398)
@@ -0,0 +1 @@
+./test/relaxng/list.rng validates

Added: packages/libxml2/branches/upstream/current/result/relaxng/list_valid
===================================================================

Modified: packages/libxml2/branches/upstream/current/result/schemas/element-err_0_0.err
===================================================================
--- packages/libxml2/branches/upstream/current/result/schemas/element-err_0_0.err	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/result/schemas/element-err_0_0.err	2005-04-04 18:23:13 UTC (rev 398)
@@ -1,4 +1,4 @@
-./test/schemas/element-err_0.xsd:8: element element: Schemas parser error : Element decl.: The attribute 'name' is required but missing.
+./test/schemas/element-err_0.xsd:8: element element: Schemas parser error : Element 'element': The attribute 'name' is required but missing.
 ./test/schemas/element-err_0.xsd:14: element element: Schemas parser error : Element decl. 'foo': The attribute 'ref' is not allowed.
 ./test/schemas/element-err_0.xsd:14: element element: Schemas parser error : Element decl. 'foo': The attribute 'minOccurs' is not allowed.
 ./test/schemas/element-err_0.xsd:14: element element: Schemas parser error : Element decl. 'foo': The attribute 'maxOccurs' is not allowed.
@@ -6,15 +6,15 @@
 ./test/schemas/element-err_0.xsd:14: element element: Schemas parser error : Element decl. 'foo', attribute 'final' [(#all | List of (extension | restriction))]: The value 'fantasy' is not valid.
 ./test/schemas/element-err_0.xsd:14: element element: Schemas parser error : Element decl. 'foo', attribute 'block' [(#all | List of (extension | restriction | substitution))]: The value 'flute' is not valid.
 ./test/schemas/element-err_0.xsd:14: element element: Schemas parser error : Element decl. 'foo': The attributes 'default' and 'fixed' are mutually exclusive.
-./test/schemas/element-err_0.xsd:22: element element: Schemas parser error : Element ref. 'foo:bar': The attributes 'ref' and 'name' are mutually exclusive.
-./test/schemas/element-err_0.xsd:22: element element: Schemas parser error : Element ref. 'foo:bar', attribute 'abstract': Only the attributes 'minOccurs', 'maxOccurs' and 'id' are allowed in addition to 'ref'.
-./test/schemas/element-err_0.xsd:22: element element: Schemas parser error : Element ref. 'foo:bar', attribute 'minOccurs': The value must not be greater than the value of 'maxOccurs'.
-./test/schemas/element-err_0.xsd:23: element complexType: Schemas parser error : Element ref. 'foo:bar': The content is not valid. Expected is (annotation?).
+./test/schemas/element-err_0.xsd:22: element element: Schemas parser error : Element 'element', attribute 'minOccurs': The value must not be greater than the value of 'maxOccurs'.
+./test/schemas/element-err_0.xsd:22: element element: Schemas parser error : Element 'element': The attributes 'ref' and 'name' are mutually exclusive.
+./test/schemas/element-err_0.xsd:22: element element: Schemas parser error : Element 'element', attribute 'abstract': Only the attributes 'minOccurs', 'maxOccurs' and 'id' are allowed in addition to 'ref'.
+./test/schemas/element-err_0.xsd:23: element complexType: Schemas parser error : Element 'element': The content is not valid. Expected is (annotation?).
+./test/schemas/element-err_0.xsd:30: element element: Schemas parser error : Element 'element', attribute 'maxOccurs': The value must be greater than or equal to 1.
 ./test/schemas/element-err_0.xsd:30: element element: Schemas parser error : Element decl. 'myomy': The attribute 'abstract' is not allowed.
 ./test/schemas/element-err_0.xsd:30: element element: Schemas parser error : Element decl. 'myomy': The attribute 'substitutionGroup' is not allowed.
 ./test/schemas/element-err_0.xsd:30: element element: Schemas parser error : Element decl. 'myomy': The attribute 'final' is not allowed.
 ./test/schemas/element-err_0.xsd:30: element element: Schemas parser error : Element decl. 'myomy', attribute 'block' [(#all | List of (extension | restriction | substitution))]: The value 'flute' is not valid.
 ./test/schemas/element-err_0.xsd:30: element element: Schemas parser error : Element decl. 'myomy': The attributes 'default' and 'fixed' are mutually exclusive.
-./test/schemas/element-err_0.xsd:30: element element: Schemas parser error : Element decl. 'myomy', attribute 'maxOccurs': The value must be greater than or equal to 1.
 ./test/schemas/element-err_0.xsd:31: element complexType: Schemas parser error : Element decl. 'myomy': The attribute 'type' and the <complexType> child are mutually exclusive.
 ./test/schemas/element-err_0.xsd:32: element simpleType: Schemas parser error : Element decl. 'myomy': The content is not valid. Expected is (annotation?, ((simpleType | complexType)?, (unique | key | keyref)*)).

Modified: packages/libxml2/branches/upstream/current/result/schemas/element-minmax-err_0_0.err
===================================================================
--- packages/libxml2/branches/upstream/current/result/schemas/element-minmax-err_0_0.err	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/result/schemas/element-minmax-err_0_0.err	2005-04-04 18:23:13 UTC (rev 398)
@@ -1 +1 @@
-./test/schemas/element-minmax-err_0.xsd:6: element element: Schemas parser error : Element decl. 'bar', attribute 'maxOccurs': The value must be greater than or equal to 1.
+./test/schemas/element-minmax-err_0.xsd:6: element element: Schemas parser error : Element 'element', attribute 'maxOccurs': The value must be greater than or equal to 1.

Modified: packages/libxml2/branches/upstream/current/result/schemas/src-element2-1_0_0.err
===================================================================
--- packages/libxml2/branches/upstream/current/result/schemas/src-element2-1_0_0.err	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/result/schemas/src-element2-1_0_0.err	2005-04-04 18:23:13 UTC (rev 398)
@@ -1 +1 @@
-./test/schemas/src-element2-1_0.xsd:12: element element: Schemas parser error : Element ref. 'foo:bar': The attributes 'ref' and 'name' are mutually exclusive.
+./test/schemas/src-element2-1_0.xsd:12: element element: Schemas parser error : Element 'element': The attributes 'ref' and 'name' are mutually exclusive.

Modified: packages/libxml2/branches/upstream/current/result/schemas/src-element2-2_0_0.err
===================================================================
--- packages/libxml2/branches/upstream/current/result/schemas/src-element2-2_0_0.err	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/result/schemas/src-element2-2_0_0.err	2005-04-04 18:23:13 UTC (rev 398)
@@ -1,9 +1,9 @@
-./test/schemas/src-element2-2_0.xsd:18: element element: Schemas parser error : Element ref. 'foo:bar', attribute 'maxOccurs': The value must be greater than or equal to 1.
-./test/schemas/src-element2-2_0.xsd:23: element complexType: Schemas parser error : Element ref. 'foo:bar': The content is not valid. Expected is (annotation?).
-./test/schemas/src-element2-2_0.xsd:29: element simpleType: Schemas parser error : Element ref. 'foo:bar': The content is not valid. Expected is (annotation?).
-./test/schemas/src-element2-2_0.xsd:36: element element: Schemas parser error : Element ref. 'foo:bar', attribute 'type': Only the attributes 'minOccurs', 'maxOccurs' and 'id' are allowed in addition to 'ref'.
-./test/schemas/src-element2-2_0.xsd:37: element element: Schemas parser error : Element ref. 'foo:bar', attribute 'nillable': Only the attributes 'minOccurs', 'maxOccurs' and 'id' are allowed in addition to 'ref'.
-./test/schemas/src-element2-2_0.xsd:38: element element: Schemas parser error : Element ref. 'foo:bar', attribute 'default': Only the attributes 'minOccurs', 'maxOccurs' and 'id' are allowed in addition to 'ref'.
-./test/schemas/src-element2-2_0.xsd:39: element element: Schemas parser error : Element ref. 'foo:bar', attribute 'fixed': Only the attributes 'minOccurs', 'maxOccurs' and 'id' are allowed in addition to 'ref'.
-./test/schemas/src-element2-2_0.xsd:40: element element: Schemas parser error : Element ref. 'foo:bar', attribute 'form': Only the attributes 'minOccurs', 'maxOccurs' and 'id' are allowed in addition to 'ref'.
-./test/schemas/src-element2-2_0.xsd:41: element element: Schemas parser error : Element ref. 'foo:bar', attribute 'block': Only the attributes 'minOccurs', 'maxOccurs' and 'id' are allowed in addition to 'ref'.
+./test/schemas/src-element2-2_0.xsd:18: element element: Schemas parser error : Element 'element', attribute 'maxOccurs': The value must be greater than or equal to 1.
+./test/schemas/src-element2-2_0.xsd:23: element complexType: Schemas parser error : Element 'element': The content is not valid. Expected is (annotation?).
+./test/schemas/src-element2-2_0.xsd:29: element simpleType: Schemas parser error : Element 'element': The content is not valid. Expected is (annotation?).
+./test/schemas/src-element2-2_0.xsd:36: element element: Schemas parser error : Element 'element', attribute 'type': Only the attributes 'minOccurs', 'maxOccurs' and 'id' are allowed in addition to 'ref'.
+./test/schemas/src-element2-2_0.xsd:37: element element: Schemas parser error : Element 'element', attribute 'nillable': Only the attributes 'minOccurs', 'maxOccurs' and 'id' are allowed in addition to 'ref'.
+./test/schemas/src-element2-2_0.xsd:38: element element: Schemas parser error : Element 'element', attribute 'default': Only the attributes 'minOccurs', 'maxOccurs' and 'id' are allowed in addition to 'ref'.
+./test/schemas/src-element2-2_0.xsd:39: element element: Schemas parser error : Element 'element', attribute 'fixed': Only the attributes 'minOccurs', 'maxOccurs' and 'id' are allowed in addition to 'ref'.
+./test/schemas/src-element2-2_0.xsd:40: element element: Schemas parser error : Element 'element', attribute 'form': Only the attributes 'minOccurs', 'maxOccurs' and 'id' are allowed in addition to 'ref'.
+./test/schemas/src-element2-2_0.xsd:41: element element: Schemas parser error : Element 'element', attribute 'block': Only the attributes 'minOccurs', 'maxOccurs' and 'id' are allowed in addition to 'ref'.

Modified: packages/libxml2/branches/upstream/current/test/relaxng/.memdump
===================================================================
--- packages/libxml2/branches/upstream/current/test/relaxng/.memdump	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/test/relaxng/.memdump	2005-04-04 18:23:13 UTC (rev 398)
@@ -1,4 +1,4 @@
-      01:31:31 PM
+      03:32:41 PM
 
-      MEMORY ALLOCATED : 0, MAX was 36632
+      MEMORY ALLOCATED : 0, MAX was 28962
 BLOCK  NUMBER   SIZE  TYPE

Added: packages/libxml2/branches/upstream/current/test/relaxng/list.rng
===================================================================
--- packages/libxml2/branches/upstream/current/test/relaxng/list.rng	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/test/relaxng/list.rng	2005-04-04 18:23:13 UTC (rev 398)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar
+    xmlns="http://relaxng.org/ns/structure/1.0"
+    xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
+    datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+<define name="pattern1">
+    <data type="string">
+        <param name="pattern">-?([0-9]+(\.[0-9]*)?|\.[0-9]+)</param>
+    </data>
+</define>
+
+<start>
+    <element name="elem1">
+        <attribute name="attr1">
+            <list>
+                <ref name="pattern1"/>
+            </list>
+        </attribute>
+    </element>
+</start>
+
+</grammar>

Added: packages/libxml2/branches/upstream/current/test/relaxng/list_0.xml
===================================================================
--- packages/libxml2/branches/upstream/current/test/relaxng/list_0.xml	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/test/relaxng/list_0.xml	2005-04-04 18:23:13 UTC (rev 398)
@@ -0,0 +1 @@
+<elem1 attr1="0"/>

Added: packages/libxml2/branches/upstream/current/test/relaxng/list_1.xml
===================================================================
--- packages/libxml2/branches/upstream/current/test/relaxng/list_1.xml	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/test/relaxng/list_1.xml	2005-04-04 18:23:13 UTC (rev 398)
@@ -0,0 +1 @@
+<elem1 attr1="a"/>

Modified: packages/libxml2/branches/upstream/current/test/schemas/bug152470_1.xsd
===================================================================
--- packages/libxml2/branches/upstream/current/test/schemas/bug152470_1.xsd	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/test/schemas/bug152470_1.xsd	2005-04-04 18:23:13 UTC (rev 398)
@@ -13,7 +13,7 @@
 
 <complexType name="Identifier">
   <choice>
-    <element name="keyIdentifier" type="roap:KeyIdentifier"/>
+    <element name="keyIdentifier" type="roap:X509SPKIHash"/> <!-- was: type="roap:KeyIdentifier" -->
   </choice>
 </complexType>
 

Modified: packages/libxml2/branches/upstream/current/testapi.c
===================================================================
--- packages/libxml2/branches/upstream/current/testapi.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/testapi.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -1064,6 +1064,9 @@
 static void des_xmlSchemaValType(int no ATTRIBUTE_UNUSED, xmlSchemaValType val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
 }
 
+static void desret_xmlSchemaValType(xmlSchemaValType val ATTRIBUTE_UNUSED) {
+}
+
 #endif
 
 #ifdef LIBXML_SCHEMAS_ENABLED
@@ -13610,14 +13613,14 @@
     xmlChar * cur; /* a pointer to an array of xmlChar */
     int n_cur;
 
-    for (n_cur = 0;n_cur < gen_nb_xmlChar_ptr;n_cur++) {
+    for (n_cur = 0;n_cur < gen_nb_const_xmlChar_ptr;n_cur++) {
         mem_base = xmlMemBlocks();
-        cur = gen_xmlChar_ptr(n_cur, 0);
+        cur = gen_const_xmlChar_ptr(n_cur, 0);
 
-        ret_val = xmlParseDoc(cur);
+        ret_val = xmlParseDoc((const xmlChar *)cur);
         desret_xmlDocPtr(ret_val);
         call_tests++;
-        des_xmlChar_ptr(n_cur, cur, 0);
+        des_const_xmlChar_ptr(n_cur, (const xmlChar *)cur, 0);
         xmlResetLastError();
         if (mem_base != xmlMemBlocks()) {
             printf("Leak of %d blocks found in xmlParseDoc",
@@ -14554,18 +14557,18 @@
     int n_recovery;
 
     for (n_sax = 0;n_sax < gen_nb_xmlSAXHandlerPtr;n_sax++) {
-    for (n_cur = 0;n_cur < gen_nb_xmlChar_ptr;n_cur++) {
+    for (n_cur = 0;n_cur < gen_nb_const_xmlChar_ptr;n_cur++) {
     for (n_recovery = 0;n_recovery < gen_nb_int;n_recovery++) {
         mem_base = xmlMemBlocks();
         sax = gen_xmlSAXHandlerPtr(n_sax, 0);
-        cur = gen_xmlChar_ptr(n_cur, 1);
+        cur = gen_const_xmlChar_ptr(n_cur, 1);
         recovery = gen_int(n_recovery, 2);
 
-        ret_val = xmlSAXParseDoc(sax, cur, recovery);
+        ret_val = xmlSAXParseDoc(sax, (const xmlChar *)cur, recovery);
         desret_xmlDocPtr(ret_val);
         call_tests++;
         des_xmlSAXHandlerPtr(n_sax, sax, 0);
-        des_xmlChar_ptr(n_cur, cur, 1);
+        des_const_xmlChar_ptr(n_cur, (const xmlChar *)cur, 1);
         des_int(n_recovery, recovery, 2);
         xmlResetLastError();
         if (mem_base != xmlMemBlocks()) {
@@ -16733,6 +16736,7 @@
     return(test_ret);
 }
 
+#ifdef LIBXML_PATTERN_ENABLED
 
 #define gen_nb_xmlStreamCtxtPtr 1
 static xmlStreamCtxtPtr gen_xmlStreamCtxtPtr(int no ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
@@ -16740,7 +16744,9 @@
 }
 static void des_xmlStreamCtxtPtr(int no ATTRIBUTE_UNUSED, xmlStreamCtxtPtr val ATTRIBUTE_UNUSED, int nr ATTRIBUTE_UNUSED) {
 }
+#endif
 
+
 static int
 test_xmlStreamPop(void) {
     int test_ret = 0;
@@ -33055,6 +33061,40 @@
 
 
 static int
+test_xmlSchemaGetValType(void) {
+    int test_ret = 0;
+
+#if defined(LIBXML_SCHEMAS_ENABLED)
+    int mem_base;
+    xmlSchemaValType ret_val;
+    xmlSchemaValPtr val; /* a schemas value */
+    int n_val;
+
+    for (n_val = 0;n_val < gen_nb_xmlSchemaValPtr;n_val++) {
+        mem_base = xmlMemBlocks();
+        val = gen_xmlSchemaValPtr(n_val, 0);
+
+        ret_val = xmlSchemaGetValType(val);
+        desret_xmlSchemaValType(ret_val);
+        call_tests++;
+        des_xmlSchemaValPtr(n_val, val, 0);
+        xmlResetLastError();
+        if (mem_base != xmlMemBlocks()) {
+            printf("Leak of %d blocks found in xmlSchemaGetValType",
+	           xmlMemBlocks() - mem_base);
+	    test_ret++;
+            printf(" %d", n_val);
+            printf("\n");
+        }
+    }
+    function_tests++;
+#endif
+
+    return(test_ret);
+}
+
+
+static int
 test_xmlSchemaInitTypes(void) {
     int test_ret = 0;
 
@@ -33318,6 +33358,75 @@
 
 
 static int
+test_xmlSchemaValidateFacetWhtsp(void) {
+    int test_ret = 0;
+
+#if defined(LIBXML_SCHEMAS_ENABLED)
+    int mem_base;
+    int ret_val;
+    xmlSchemaFacetPtr facet; /* the facet to check */
+    int n_facet;
+    xmlSchemaWhitespaceValueType fws; /* the whitespace type of the facet's value */
+    int n_fws;
+    xmlSchemaValType valType; /* the built-in type of the value */
+    int n_valType;
+    xmlChar * value; /* the lexical (or normalized for pattern) repr of the value to validate */
+    int n_value;
+    xmlSchemaValPtr val; /* the precomputed value */
+    int n_val;
+    xmlSchemaWhitespaceValueType ws; /* the whitespace type of the value */
+    int n_ws;
+
+    for (n_facet = 0;n_facet < gen_nb_xmlSchemaFacetPtr;n_facet++) {
+    for (n_fws = 0;n_fws < gen_nb_xmlSchemaWhitespaceValueType;n_fws++) {
+    for (n_valType = 0;n_valType < gen_nb_xmlSchemaValType;n_valType++) {
+    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
+    for (n_val = 0;n_val < gen_nb_xmlSchemaValPtr;n_val++) {
+    for (n_ws = 0;n_ws < gen_nb_xmlSchemaWhitespaceValueType;n_ws++) {
+        mem_base = xmlMemBlocks();
+        facet = gen_xmlSchemaFacetPtr(n_facet, 0);
+        fws = gen_xmlSchemaWhitespaceValueType(n_fws, 1);
+        valType = gen_xmlSchemaValType(n_valType, 2);
+        value = gen_const_xmlChar_ptr(n_value, 3);
+        val = gen_xmlSchemaValPtr(n_val, 4);
+        ws = gen_xmlSchemaWhitespaceValueType(n_ws, 5);
+
+        ret_val = xmlSchemaValidateFacetWhtsp(facet, fws, valType, (const xmlChar *)value, val, ws);
+        desret_int(ret_val);
+        call_tests++;
+        des_xmlSchemaFacetPtr(n_facet, facet, 0);
+        des_xmlSchemaWhitespaceValueType(n_fws, fws, 1);
+        des_xmlSchemaValType(n_valType, valType, 2);
+        des_const_xmlChar_ptr(n_value, (const xmlChar *)value, 3);
+        des_xmlSchemaValPtr(n_val, val, 4);
+        des_xmlSchemaWhitespaceValueType(n_ws, ws, 5);
+        xmlResetLastError();
+        if (mem_base != xmlMemBlocks()) {
+            printf("Leak of %d blocks found in xmlSchemaValidateFacetWhtsp",
+	           xmlMemBlocks() - mem_base);
+	    test_ret++;
+            printf(" %d", n_facet);
+            printf(" %d", n_fws);
+            printf(" %d", n_valType);
+            printf(" %d", n_value);
+            printf(" %d", n_val);
+            printf(" %d", n_ws);
+            printf("\n");
+        }
+    }
+    }
+    }
+    }
+    }
+    }
+    function_tests++;
+#endif
+
+    return(test_ret);
+}
+
+
+static int
 test_xmlSchemaValidateLengthFacet(void) {
     int test_ret = 0;
 
@@ -33380,6 +33489,75 @@
 
 
 static int
+test_xmlSchemaValidateLengthFacetWhtsp(void) {
+    int test_ret = 0;
+
+#if defined(LIBXML_SCHEMAS_ENABLED)
+    int mem_base;
+    int ret_val;
+    xmlSchemaFacetPtr facet; /* the facet to check */
+    int n_facet;
+    xmlSchemaValType valType; /* the built-in type */
+    int n_valType;
+    xmlChar * value; /* the lexical repr. of the value to be validated */
+    int n_value;
+    xmlSchemaValPtr val; /* the precomputed value */
+    int n_val;
+    unsigned long * length; /* the actual length of the value */
+    int n_length;
+    xmlSchemaWhitespaceValueType ws; /* the whitespace type of the value */
+    int n_ws;
+
+    for (n_facet = 0;n_facet < gen_nb_xmlSchemaFacetPtr;n_facet++) {
+    for (n_valType = 0;n_valType < gen_nb_xmlSchemaValType;n_valType++) {
+    for (n_value = 0;n_value < gen_nb_const_xmlChar_ptr;n_value++) {
+    for (n_val = 0;n_val < gen_nb_xmlSchemaValPtr;n_val++) {
+    for (n_length = 0;n_length < gen_nb_unsigned_long_ptr;n_length++) {
+    for (n_ws = 0;n_ws < gen_nb_xmlSchemaWhitespaceValueType;n_ws++) {
+        mem_base = xmlMemBlocks();
+        facet = gen_xmlSchemaFacetPtr(n_facet, 0);
+        valType = gen_xmlSchemaValType(n_valType, 1);
+        value = gen_const_xmlChar_ptr(n_value, 2);
+        val = gen_xmlSchemaValPtr(n_val, 3);
+        length = gen_unsigned_long_ptr(n_length, 4);
+        ws = gen_xmlSchemaWhitespaceValueType(n_ws, 5);
+
+        ret_val = xmlSchemaValidateLengthFacetWhtsp(facet, valType, (const xmlChar *)value, val, length, ws);
+        desret_int(ret_val);
+        call_tests++;
+        des_xmlSchemaFacetPtr(n_facet, facet, 0);
+        des_xmlSchemaValType(n_valType, valType, 1);
+        des_const_xmlChar_ptr(n_value, (const xmlChar *)value, 2);
+        des_xmlSchemaValPtr(n_val, val, 3);
+        des_unsigned_long_ptr(n_length, length, 4);
+        des_xmlSchemaWhitespaceValueType(n_ws, ws, 5);
+        xmlResetLastError();
+        if (mem_base != xmlMemBlocks()) {
+            printf("Leak of %d blocks found in xmlSchemaValidateLengthFacetWhtsp",
+	           xmlMemBlocks() - mem_base);
+	    test_ret++;
+            printf(" %d", n_facet);
+            printf(" %d", n_valType);
+            printf(" %d", n_value);
+            printf(" %d", n_val);
+            printf(" %d", n_length);
+            printf(" %d", n_ws);
+            printf("\n");
+        }
+    }
+    }
+    }
+    }
+    }
+    }
+    function_tests++;
+#endif
+
+    return(test_ret);
+}
+
+
+static int
 test_xmlSchemaValidateListSimpleTypeFacet(void) {
     int test_ret = 0;
 
@@ -33519,7 +33697,7 @@
 test_xmlschemastypes(void) {
     int test_ret = 0;
 
-    if (quiet == 0) printf("Testing xmlschemastypes : 19 of 25 functions ...\n");
+    if (quiet == 0) printf("Testing xmlschemastypes : 22 of 28 functions ...\n");
     test_ret += test_xmlSchemaCheckFacet();
     test_ret += test_xmlSchemaCleanupTypes();
     test_ret += test_xmlSchemaCollapseString();
@@ -33531,6 +33709,7 @@
     test_ret += test_xmlSchemaGetCanonValue();
     test_ret += test_xmlSchemaGetFacetValueAsULong();
     test_ret += test_xmlSchemaGetPredefinedType();
+    test_ret += test_xmlSchemaGetValType();
     test_ret += test_xmlSchemaInitTypes();
     test_ret += test_xmlSchemaIsBuiltInTypeFacet();
     test_ret += test_xmlSchemaNewFacet();
@@ -33539,7 +33718,9 @@
     test_ret += test_xmlSchemaValPredefTypeNode();
     test_ret += test_xmlSchemaValPredefTypeNodeNoNorm();
     test_ret += test_xmlSchemaValidateFacet();
+    test_ret += test_xmlSchemaValidateFacetWhtsp();
     test_ret += test_xmlSchemaValidateLengthFacet();
+    test_ret += test_xmlSchemaValidateLengthFacetWhtsp();
     test_ret += test_xmlSchemaValidateListSimpleTypeFacet();
     test_ret += test_xmlSchemaValidatePredefinedType();
     test_ret += test_xmlSchemaWhiteSpaceReplace();

Modified: packages/libxml2/branches/upstream/current/threads.c
===================================================================
--- packages/libxml2/branches/upstream/current/threads.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/threads.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -774,3 +774,5 @@
     return TRUE;
 }
 #endif
+#define bottom_threads
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/tree.c
===================================================================
--- packages/libxml2/branches/upstream/current/tree.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/tree.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -1721,39 +1721,26 @@
 }
 #endif /* LIBXML_TREE_ENABLED */
 
-#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \
-    defined(LIBXML_SCHEMAS_ENABLED)
-/**
- * xmlNewProp:
- * @node:  the holding node
- * @name:  the name of the attribute
- * @value:  the value of the attribute
- *
- * Create a new property carried by a node.
- * Returns a pointer to the attribute
- */
-xmlAttrPtr
-xmlNewProp(xmlNodePtr node, const xmlChar *name, const xmlChar *value) {
+static xmlAttrPtr xmlNewPropInternal(xmlNodePtr node, xmlNsPtr ns, 
+           const xmlChar *name, const xmlChar *value, int eatname) {
     xmlAttrPtr cur;
     xmlDocPtr doc = NULL;
 
-    if (name == NULL) {
-#ifdef DEBUG_TREE
-        xmlGenericError(xmlGenericErrorContext,
-		"xmlNewProp : name == NULL\n");
-#endif
-	return(NULL);
-    }
-    if ((node != NULL) && (node->type != XML_ELEMENT_NODE))
-	return(NULL);
+    if ((node != NULL) && (node->type != XML_ELEMENT_NODE)) {
+		if (eatname == 1)
+			xmlFree((xmlChar *) name);
+		return(NULL);
+	}
 
     /*
      * Allocate a new property and fill the fields.
      */
     cur = (xmlAttrPtr) xmlMalloc(sizeof(xmlAttr));
     if (cur == NULL) {
-	xmlTreeErrMemory("building attribute");
-	return(NULL);
+		if (eatname == 1)
+			xmlFree((xmlChar *) name);
+		xmlTreeErrMemory("building attribute");
+		return(NULL);
     }
     memset(cur, 0, sizeof(xmlAttr));
     cur->type = XML_ATTRIBUTE_NODE;
@@ -1763,10 +1750,16 @@
 	doc = node->doc;
 	cur->doc = doc;
     }
-    if ((doc != NULL) && (doc->dict != NULL))
-        cur->name = (xmlChar *) xmlDictLookup(doc->dict, name, -1);
-    else
-	cur->name = xmlStrdup(name);
+	cur->ns = ns;
+
+	if (eatname == 0) {
+		if ((doc != NULL) && (doc->dict != NULL))
+			cur->name = (xmlChar *) xmlDictLookup(doc->dict, name, -1);
+		else
+			cur->name = xmlStrdup(name);
+	} else
+		cur->name = name;
+
     if (value != NULL) {
 	xmlChar *buffer;
 	xmlNodePtr tmp;
@@ -1777,7 +1770,6 @@
 	tmp = cur->children;
 	while (tmp != NULL) {
 	    tmp->parent = (xmlNodePtr) cur;
-	    tmp->doc = doc;
 	    if (tmp->next == NULL)
 		cur->last = tmp;
 	    tmp = tmp->next;
@@ -1804,6 +1796,31 @@
 	xmlRegisterNodeDefaultValue((xmlNodePtr)cur);
     return(cur);
 }
+
+#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \
+    defined(LIBXML_SCHEMAS_ENABLED)
+/**
+ * xmlNewProp:
+ * @node:  the holding node
+ * @name:  the name of the attribute
+ * @value:  the value of the attribute
+ *
+ * Create a new property carried by a node.
+ * Returns a pointer to the attribute
+ */
+xmlAttrPtr
+xmlNewProp(xmlNodePtr node, const xmlChar *name, const xmlChar *value) {
+
+    if (name == NULL) {
+#ifdef DEBUG_TREE
+        xmlGenericError(xmlGenericErrorContext,
+		"xmlNewProp : name == NULL\n");
+#endif
+	return(NULL);
+    }
+
+	return xmlNewPropInternal(node, NULL, name, value, 0);
+}
 #endif /* LIBXML_TREE_ENABLED */
 
 /**
@@ -1819,8 +1836,6 @@
 xmlAttrPtr
 xmlNewNsProp(xmlNodePtr node, xmlNsPtr ns, const xmlChar *name,
            const xmlChar *value) {
-    xmlAttrPtr cur;
-    xmlDocPtr doc = NULL;
 
     if (name == NULL) {
 #ifdef DEBUG_TREE
@@ -1830,62 +1845,7 @@
 	return(NULL);
     }
 
-    /*
-     * Allocate a new property and fill the fields.
-     */
-    cur = (xmlAttrPtr) xmlMalloc(sizeof(xmlAttr));
-    if (cur == NULL) {
-	xmlTreeErrMemory("building attribute");
-	return(NULL);
-    }
-    memset(cur, 0, sizeof(xmlAttr));
-    cur->type = XML_ATTRIBUTE_NODE;
-
-    cur->parent = node; 
-    if (node != NULL) {
-	doc = node->doc;
-	cur->doc = doc;
-    }
-    cur->ns = ns;
-    if ((doc != NULL) && (doc->dict != NULL))
-	cur->name = xmlDictLookup(doc->dict, name, -1);
-    else
-	cur->name = xmlStrdup(name);
-    if (value != NULL) {
-	xmlChar *buffer;
-	xmlNodePtr tmp;
-
-	buffer = xmlEncodeEntitiesReentrant(doc, value);
-	cur->children = xmlStringGetNodeList(doc, buffer);
-	cur->last = NULL;
-	tmp = cur->children;
-	while (tmp != NULL) {
-	    tmp->parent = (xmlNodePtr) cur;
-	    if (tmp->next == NULL)
-		cur->last = tmp;
-	    tmp = tmp->next;
-	}
-	xmlFree(buffer);
-    }
-
-    /*
-     * Add it at the end to preserve parsing order ...
-     */
-    if (node != NULL) {
-	if (node->properties == NULL) {
-	    node->properties = cur;
-	} else {
-	    xmlAttrPtr prev = node->properties;
-
-	    while (prev->next != NULL) prev = prev->next;
-	    prev->next = cur;
-	    cur->prev = prev;
-	}
-    }
-
-    if ((__xmlRegisterCallbacks) && (xmlRegisterNodeDefaultValue))
-	xmlRegisterNodeDefaultValue((xmlNodePtr)cur);
-    return(cur);
+    return xmlNewPropInternal(node, ns, name, value, 0);
 }
 
 /**
@@ -1901,8 +1861,6 @@
 xmlAttrPtr
 xmlNewNsPropEatName(xmlNodePtr node, xmlNsPtr ns, xmlChar *name,
            const xmlChar *value) {
-    xmlAttrPtr cur;
-    xmlDocPtr doc = NULL;
 
     if (name == NULL) {
 #ifdef DEBUG_TREE
@@ -1912,59 +1870,7 @@
 	return(NULL);
     }
 
-    /*
-     * Allocate a new property and fill the fields.
-     */
-    cur = (xmlAttrPtr) xmlMalloc(sizeof(xmlAttr));
-    if (cur == NULL) {
-	xmlTreeErrMemory("building attribute");
-	return(NULL);
-    }
-    memset(cur, 0, sizeof(xmlAttr));
-    cur->type = XML_ATTRIBUTE_NODE;
-
-    cur->parent = node; 
-    if (node != NULL) {
-	doc = node->doc;
-	cur->doc = doc;
-    }
-    cur->ns = ns;
-    cur->name = name;
-    if (value != NULL) {
-	xmlChar *buffer;
-	xmlNodePtr tmp;
-
-	buffer = xmlEncodeEntitiesReentrant(doc, value);
-	cur->children = xmlStringGetNodeList(doc, buffer);
-	cur->last = NULL;
-	tmp = cur->children;
-	while (tmp != NULL) {
-	    tmp->parent = (xmlNodePtr) cur;
-	    if (tmp->next == NULL)
-		cur->last = tmp;
-	    tmp = tmp->next;
-	}
-	xmlFree(buffer);
-    }
-
-    /*
-     * Add it at the end to preserve parsing order ...
-     */
-    if (node != NULL) {
-	if (node->properties == NULL) {
-	    node->properties = cur;
-	} else {
-	    xmlAttrPtr prev = node->properties;
-
-	    while (prev->next != NULL) prev = prev->next;
-	    prev->next = cur;
-	    cur->prev = prev;
-	}
-    }
-
-    if ((__xmlRegisterCallbacks) && (xmlRegisterNodeDefaultValue))
-	xmlRegisterNodeDefaultValue((xmlNodePtr)cur);
-    return(cur);
+	return xmlNewPropInternal(node, ns, name, value, 1);
 }
 
 /**
@@ -2250,6 +2156,7 @@
      */
     cur = (xmlNodePtr) xmlMalloc(sizeof(xmlNode));
     if (cur == NULL) {
+	xmlFree(name);
 	xmlTreeErrMemory("building node");
 	return(NULL);
     }
@@ -6311,17 +6218,7 @@
     while (prop != NULL) {
         if ((xmlStrEqual(prop->name, name)) &&
 	    (prop->ns == NULL)) {
-	    if (prev == NULL) {
-		node->properties = prop->next;
-		if (prop->next != NULL)
-		    prop->next->prev = NULL;
-	    } else {
-		prev->next = prop->next;
-		if (prop->next != NULL)
-		    prop->next->prev = NULL;
-	    }
-	    prop->next = NULL;
-	    prop->prev = NULL;
+		xmlUnlinkNode((xmlNodePtr) prop);
 	    xmlFreeProp(prop);
 	    return(0);
 	}
@@ -6354,17 +6251,7 @@
     while (prop != NULL) {
         if ((xmlStrEqual(prop->name, name)) &&
 	    (prop->ns != NULL) && (xmlStrEqual(prop->ns->href, ns->href))) {
-	    if (prev == NULL) {
-		node->properties = prop->next;
-		if (prop->next != NULL)
-		    prop->next->prev = NULL;
-	    } else {
-		prev->next = prop->next;
-		if (prop->next != NULL)
-		    prop->next->prev = NULL;
-	    }
-	    prop->next = NULL;
-	    prop->prev = NULL;
+	    xmlUnlinkNode((xmlNodePtr) prop);
 	    xmlFreeProp(prop);
 	    return(0);
 	}
@@ -7232,3 +7119,5 @@
     else xmlCompressMode = mode;
 }
 
+#define bottom_tree
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/uri.c
===================================================================
--- packages/libxml2/branches/upstream/current/uri.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/uri.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -2274,3 +2274,5 @@
     return(ret);
 }
 
+#define bottom_uri
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/valid.c
===================================================================
--- packages/libxml2/branches/upstream/current/valid.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/valid.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -6930,3 +6930,5 @@
 }
 #endif /* LIBXML_VALID_ENABLED */
 
+#define bottom_valid
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/win32/libxml2.def.src
===================================================================
--- packages/libxml2/branches/upstream/current/win32/libxml2.def.src	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/win32/libxml2.def.src	2005-04-04 18:23:13 UTC (rev 398)
@@ -1525,6 +1525,9 @@
 xmlSchemaCompareValuesWhtsp
 #endif
 #ifdef LIBXML_SCHEMAS_ENABLED
+xmlSchemaCopyValue
+#endif
+#ifdef LIBXML_SCHEMAS_ENABLED
 xmlSchemaDump
 #endif
 #ifdef LIBXML_SCHEMAS_ENABLED
@@ -1563,6 +1566,9 @@
 xmlSchemaGetPredefinedType
 #endif
 #ifdef LIBXML_SCHEMAS_ENABLED
+xmlSchemaGetValType
+#endif
+#ifdef LIBXML_SCHEMAS_ENABLED
 xmlSchemaGetValidErrors
 #endif
 #ifdef LIBXML_SCHEMAS_ENABLED
@@ -1620,9 +1626,15 @@
 xmlSchemaValidateFacet
 #endif
 #ifdef LIBXML_SCHEMAS_ENABLED
+xmlSchemaValidateFacetWhtsp
+#endif
+#ifdef LIBXML_SCHEMAS_ENABLED
 xmlSchemaValidateLengthFacet
 #endif
 #ifdef LIBXML_SCHEMAS_ENABLED
+xmlSchemaValidateLengthFacetWhtsp
+#endif
+#ifdef LIBXML_SCHEMAS_ENABLED
 xmlSchemaValidateListSimpleTypeFacet
 #endif
 #ifdef LIBXML_SCHEMAS_ENABLED

Modified: packages/libxml2/branches/upstream/current/xinclude.c
===================================================================
--- packages/libxml2/branches/upstream/current/xinclude.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/xinclude.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -2468,3 +2468,5 @@
 
 #else /* !LIBXML_XINCLUDE_ENABLED */
 #endif
+#define bottom_xinclude
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/xlink.c
===================================================================
--- packages/libxml2/branches/upstream/current/xlink.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/xlink.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -179,3 +179,5 @@
     return(ret);
 }
 #endif /* LIBXML_XPTR_ENABLED */
+#define bottom_xlink
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/xmlIO.c
===================================================================
--- packages/libxml2/branches/upstream/current/xmlIO.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/xmlIO.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -3688,3 +3688,5 @@
     return(input);
 }
 
+#define bottom_xmlIO
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/xmllint.c
===================================================================
--- packages/libxml2/branches/upstream/current/xmllint.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/xmllint.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -31,8 +31,8 @@
 #define _WINSOCKAPI_
 #include <wsockcompat.h>
 #include <winsock2.h>
-#undef SOCKLEN_T
-#define SOCKLEN_T unsigned int
+#undef XML_SOCKLEN_T
+#define XML_SOCKLEN_T unsigned int
 #endif
 
 #ifdef HAVE_SYS_TIMEB_H
@@ -695,6 +695,7 @@
 
     xmlHTMLPrintFileContext(input);
     xmlHTMLEncodeSend();
+    progresult = XMLLINT_ERR_VALID;
 }
 
 /**

Modified: packages/libxml2/branches/upstream/current/xmlmemory.c
===================================================================
--- packages/libxml2/branches/upstream/current/xmlmemory.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/xmlmemory.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -1021,3 +1021,5 @@
     return(0);
 }
 
+#define bottom_xmlmemory
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/xmlmodule.c
===================================================================
--- packages/libxml2/branches/upstream/current/xmlmodule.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/xmlmodule.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -439,4 +439,6 @@
 
 #endif /* HAVE_OS2 */
 
+#define bottom_xmlmodule
+#include "elfgcchack.h"
 #endif /* LIBXML_MODULES_ENABLED */

Modified: packages/libxml2/branches/upstream/current/xmlreader.c
===================================================================
--- packages/libxml2/branches/upstream/current/xmlreader.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/xmlreader.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -5125,4 +5125,6 @@
 }
 #endif
 #endif /* NOT_USED_YET */
+#define bottom_xmlreader
+#include "elfgcchack.h"
 #endif /* LIBXML_READER_ENABLED */

Modified: packages/libxml2/branches/upstream/current/xmlregexp.c
===================================================================
--- packages/libxml2/branches/upstream/current/xmlregexp.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/xmlregexp.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -5181,4 +5181,6 @@
     return(ret);
 }
 #endif /* LIBXML_AUTOMATA_ENABLED */
+#define bottom_xmlregexp
+#include "elfgcchack.h"
 #endif /* LIBXML_REGEXP_ENABLED */

Modified: packages/libxml2/branches/upstream/current/xmlsave.c
===================================================================
--- packages/libxml2/branches/upstream/current/xmlsave.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/xmlsave.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -1808,6 +1808,9 @@
 
     if ((buf == NULL) || (cur == NULL)) return;
 
+    if (encoding == NULL)
+        encoding = "UTF-8";
+
     memset(&ctxt, 0, sizeof(ctxt));
     ctxt.doc = doc;
     ctxt.buf = buf;
@@ -2227,3 +2230,5 @@
 
 #endif /* LIBXML_OUTPUT_ENABLED */
 
+#define bottom_xmlsave
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/xmlschemas.c
===================================================================
--- packages/libxml2/branches/upstream/current/xmlschemas.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/xmlschemas.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -15,6 +15,12 @@
  *   - if we don't intend to use the schema for schemas, we 
  *     need to validate all schema attributes (ref, type, name)
  *     against their types.
+ *   - Eliminate item creation for: ??
+ *
+ * NOTES:
+ *   - Elimated item creation for: <restriction>, <extension>, 
+ *     <simpleContent>, <complexContent>, <list>, <union>
+ *     
  */
 #define IN_LIBXML
 #include "libxml.h"
@@ -52,17 +58,13 @@
 
 /* #define DEBUG_UNION_VALIDATION 1 */
 
-#define ELEM_INFO_ENABLED 1 
+/* #define DEBUG_IDC 1 */
 
-#define IDC_ENABLED 1
+/* #define DEBUG_INCLUDES 1 */
 
-#define IDC_VALUE_SUPPORT 1
+#define DUMP_CONTENT_MODEL
 
-#define IDC_XPATH_SUPPORT 1
 
-/* #define DEBUG_IDC 1 */
-
-
 #define UNBOUNDED (1 << 30)
 #define TODO 								\
     xmlGenericError(xmlGenericErrorContext,				\
@@ -94,8 +96,10 @@
     "complex type";
 static const xmlChar *xmlSchemaElemModelGrDef = (const xmlChar *)
     "Model group";
+#if 0
 static const xmlChar *xmlSchemaElemModelGrRef = (const xmlChar *)
     "Model group ref.";
+#endif
 
 #define IS_SCHEMA(node, type)						\
    ((node != NULL) && (node->ns != NULL) &&				\
@@ -109,8 +113,8 @@
     }
 
 #define IS_ANYTYPE(item)                           \
-    ((item->type == XML_SCHEMA_TYPE_BASIC) &&      \
-     (item->builtInType == XML_SCHEMAS_ANYTYPE))   
+     ((item->type == XML_SCHEMA_TYPE_BASIC) &&     \
+      (item->builtInType == XML_SCHEMAS_ANYTYPE))
 
 #define IS_COMPLEX_TYPE(item)                      \
     ((item->type == XML_SCHEMA_TYPE_COMPLEX) ||    \
@@ -121,6 +125,30 @@
      ((item->type == XML_SCHEMA_TYPE_BASIC) &&     \
       (item->builtInType != XML_SCHEMAS_ANYTYPE))) 
 
+#define IS_ANY_SIMPLE_TYPE(item)                   \
+    ((item->type == XML_SCHEMA_TYPE_BASIC) &&      \
+      (item->builtInType == XML_SCHEMAS_ANYSIMPLETYPE)) 
+
+#define IS_NOT_TYPEFIXED(item)                      \
+    ((item->type != XML_SCHEMA_TYPE_BASIC) &&       \
+     ((item->flags & XML_SCHEMAS_TYPE_INTERNAL_RESOLVED) == 0))
+
+#define HAS_COMPLEX_CONTENT(item)			 \
+    ((item->contentType == XML_SCHEMA_CONTENT_MIXED) ||  \
+     (item->contentType == XML_SCHEMA_CONTENT_EMPTY) ||  \
+     (item->contentType == XML_SCHEMA_CONTENT_ELEMENTS))
+
+#define GET_NODE(item) xmlSchemaGetComponentNode((xmlSchemaBasicItemPtr) item)
+
+#define IS_MODEL_GROUP(item)                     \
+    ((item->type == XML_SCHEMA_TYPE_SEQUENCE) || \
+     (item->type == XML_SCHEMA_TYPE_CHOICE) ||   \
+     (item->type == XML_SCHEMA_TYPE_ALL))
+
+#if 0
+#define WXS_GET_NEXT(item) xmlSchemaGetNextComponent((xmlSchemaBasicItemPtr) item)
+#endif
+
 /*
 #define XML_SCHEMAS_VAL_WTSP_PRESERVE 0
 #define XML_SCHEMAS_VAL_WTSP_REPLACE  1
@@ -151,9 +179,13 @@
 } xmlSchemaParserOption;
 */
 
-typedef struct _xmlSchemaAssemble xmlSchemaAssemble;
+typedef struct _xmlSchemaItemList xmlSchemaAssemble;
 typedef xmlSchemaAssemble *xmlSchemaAssemblePtr;
-struct _xmlSchemaAssemble {
+
+typedef struct _xmlSchemaItemList xmlSchemaItemList;
+typedef xmlSchemaItemList *xmlSchemaItemListPtr;
+
+struct _xmlSchemaItemList {
     void **items;  /* used for dynamic addition of schemata */
     int nbItems; /* used for dynamic addition of schemata */
     int sizeItems; /* used for dynamic addition of schemata */
@@ -223,21 +255,113 @@
     const xmlChar *value;
 };
 
+/**
+ * xmlSchemaBasicItem:
+ *
+ * The abstract base type for schema components.
+ */
 typedef struct _xmlSchemaBasicItem xmlSchemaBasicItem;
 typedef xmlSchemaBasicItem *xmlSchemaBasicItemPtr;
 struct _xmlSchemaBasicItem {
     xmlSchemaTypeType type;
+};
+
+/**
+ * xmlSchemaAnnotItem:
+ *
+ * The abstract base type for annotated schema components.
+ * (Extends xmlSchemaBasicItem)
+ */
+typedef struct _xmlSchemaAnnotItem xmlSchemaAnnotItem;
+typedef xmlSchemaAnnotItem *xmlSchemaAnnotItemPtr;
+struct _xmlSchemaAnnotItem {
+    xmlSchemaTypeType type;
     xmlSchemaAnnotPtr annot;
 };
 
-typedef struct _xmlSchemaItemQNRef xmlSchemaItemQNRef;
-typedef xmlSchemaItemQNRef *xmlSchemaItemQNRefPtr;
-struct _xmlSchemaItemQNRef {
+/**
+ * xmlSchemaTreeItem:
+ *
+ * The abstract base type for tree-like structured schema components.
+ * (Extends xmlSchemaAnnotItem)
+ */
+typedef struct _xmlSchemaTreeItem xmlSchemaTreeItem;
+typedef xmlSchemaTreeItem *xmlSchemaTreeItemPtr;
+struct _xmlSchemaTreeItem {
+    xmlSchemaTypeType type;
+    xmlSchemaAnnotPtr annot;
+    xmlSchemaTreeItemPtr next;
+    xmlSchemaTreeItemPtr children;
+};
+    
+/**
+ * xmlSchemaQNameRef:
+ *
+ * A component reference item (not a schema component)
+ * (Extends xmlSchemaBasicItem)
+ */
+typedef struct _xmlSchemaQNameRef xmlSchemaQNameRef;
+typedef xmlSchemaQNameRef *xmlSchemaQNameRefPtr;
+struct _xmlSchemaQNameRef {
+    xmlSchemaTypeType type;
     xmlSchemaBasicItemPtr item;
+    xmlSchemaTypeType itemType;
     const xmlChar *name;
     const xmlChar *targetNamespace;
 };
 
+/**
+ * xmlSchemaParticle:
+ *
+ * A particle component.
+ * (Extends xmlSchemaTreeItem)
+ */
+typedef struct _xmlSchemaParticle xmlSchemaParticle;
+typedef xmlSchemaParticle *xmlSchemaParticlePtr;
+struct _xmlSchemaParticle {
+    xmlSchemaTypeType type;
+    xmlSchemaAnnotPtr annot;
+    xmlSchemaTreeItemPtr next; /* next particle (OR "element decl" OR "wildcard") */
+    xmlSchemaTreeItemPtr children; /* the "term" ("model group" OR "group definition") */
+    int minOccurs;
+    int maxOccurs;  
+    xmlNodePtr node;
+};
+
+/**
+ * xmlSchemaModelGroup:
+ *
+ * A model group component.
+ * (Extends xmlSchemaTreeItem)
+ */
+typedef struct _xmlSchemaModelGroup xmlSchemaModelGroup;
+typedef xmlSchemaModelGroup *xmlSchemaModelGroupPtr;
+struct _xmlSchemaModelGroup {
+    xmlSchemaTypeType type; /* XML_SCHEMA_TYPE_SEQUENCE, XML_SCHEMA_TYPE_CHOICE, XML_SCHEMA_TYPE_ALL */
+    xmlSchemaAnnotPtr annot;
+    xmlSchemaTreeItemPtr next; /* not used */
+    xmlSchemaTreeItemPtr children; /* first particle (OR "element decl" OR "wildcard") */
+    xmlNodePtr node;
+};
+
+/**
+ * xmlSchemaModelGroupDef:
+ *
+ * A model group definition component.
+ * (Extends xmlSchemaTreeItem)
+ */
+typedef struct _xmlSchemaModelGroupDef xmlSchemaModelGroupDef;
+typedef xmlSchemaModelGroupDef *xmlSchemaModelGroupDefPtr;
+struct _xmlSchemaModelGroupDef {
+    xmlSchemaTypeType type; /* XML_SCHEMA_TYPE_GROUP */
+    xmlSchemaAnnotPtr annot;
+    xmlSchemaTreeItemPtr next; /* not used */
+    xmlSchemaTreeItemPtr children; /* the "model group" */
+    const xmlChar *name;
+    const xmlChar *targetNamespace;
+    xmlNodePtr node;
+};
+
 typedef struct _xmlSchemaIDC xmlSchemaIDC;
 typedef xmlSchemaIDC *xmlSchemaIDCPtr;
 
@@ -261,6 +385,7 @@
  * xmlSchemaIDC:
  *
  * The identity-constraint definition component.
+ * (Extends xmlSchemaAnnotItem)
  */
 
 struct _xmlSchemaIDC {
@@ -273,7 +398,7 @@
     xmlSchemaIDCSelectPtr selector;
     xmlSchemaIDCSelectPtr fields;
     int nbFields;
-    xmlSchemaItemQNRefPtr ref;
+    xmlSchemaQNameRefPtr ref;
 };
 
 /**
@@ -286,7 +411,7 @@
 struct _xmlSchemaIDCAug {
     xmlSchemaIDCAugPtr next; /* next in a list */
     xmlSchemaIDCPtr def; /* the IDC definition */
-    int bubbleDepth; /* the lowest level to which IDC 
+    int bubbleDepth; /* the lowest tree level to which IDC 
                         tables need to be bubbled upwards */
 };
 
@@ -408,12 +533,13 @@
                                            element */
 };
 
+#define XML_SCHEMA_VALID_INVALID_NEG_WILDCARD 1<<0
+
 /**
  * xmlSchemaValidCtxt:
  *
  * A Schemas validation context
  */
-
 struct _xmlSchemaValidCtxt {
     void *userData;             /* user specific data block */
     xmlSchemaValidityErrorFunc error;   /* the callback in case of errors */
@@ -446,14 +572,13 @@
     xmlNodePtr validationRoot;    
     xmlSchemaParserCtxtPtr pctxt;
     int xsiAssemble;
-#ifdef ELEM_INFO_ENABLED
+
     int depth;
     xmlSchemaNodeInfoPtr *elemInfos; /* array of element informations */
     int sizeElemInfos;
     xmlSchemaNodeInfoPtr nodeInfo; /* the current element information */
     xmlSchemaNodeInfoPtr attrInfo; /* node infor for the current attribute */
-#endif
-#ifdef IDC_ENABLED
+
     xmlSchemaIDCAugPtr aidcs; /* a list of augmented IDC informations */
 
     xmlSchemaIDCStateObjPtr xpathStates; /* first active state object. */
@@ -466,7 +591,8 @@
     xmlSchemaPSVIIDCKeyPtr *idcKeys; /* list of all IDC node-table entries */
     int nbIdcKeys;
     int sizeIdcKeys;
-#endif
+
+    int flags;
 };
 
 /*
@@ -494,36 +620,6 @@
     const xmlChar *targetNamespace;
 };
 
-typedef struct _xmlSchemaParticle xmlSchemaParticle;
-typedef xmlSchemaParticle *xmlSchemaParticlePtr;
-struct _xmlSchemaParticle {
-    xmlSchemaTypeType type;
-    xmlSchemaParticlePtr next; /* the next particle if in a list */
-    int minOccurs;
-    int maxOccurs;
-    xmlSchemaTypePtr term;
-};
-
-
-typedef struct _xmlSchemaModelGroup xmlSchemaModelGroup;
-typedef xmlSchemaModelGroup *xmlSchemaModelGroupPtr;
-struct _xmlSchemaModelGroup {
-    xmlSchemaTypeType type;
-    int compositor; /* one of all, choice or sequence */
-    xmlSchemaParticlePtr particles; /* list of particles */
-    xmlSchemaAnnotPtr annot;
-};
-
-typedef struct _xmlSchemaModelGroupDef xmlSchemaModelGroupDef;
-typedef xmlSchemaModelGroupDef *xmlSchemaModelGroupDefPtr;
-struct _xmlSchemaModelGroupDef {
-    xmlSchemaTypeType type;
-    const xmlChar *name;
-    const xmlChar *targetNamespace;
-    xmlSchemaModelGroupPtr modelGroup;
-    xmlSchemaAnnotPtr annot;
-};
-
 /************************************************************************
  * 									*
  * 			Some predeclarations				*
@@ -551,17 +647,34 @@
 				      xmlSchemaElementPtr elemDecl); 
 static int
 xmlSchemaValidateElementByWildcard(xmlSchemaValidCtxtPtr ctxt,
-				   xmlSchemaTypePtr type);
+				   xmlSchemaWildcardPtr wild);
 static int
 xmlSchemaHasElemOrCharContent(xmlNodePtr node);
 static int
 xmlSchemaParseImport(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
                      xmlNodePtr node);
 static void
-xmlSchemaCheckDefaults(xmlSchemaTypePtr typeDecl,
-                       xmlSchemaParserCtxtPtr ctxt, const xmlChar * name);
+xmlSchemaCheckFacetValues(xmlSchemaTypePtr typeDecl,
+                       xmlSchemaParserCtxtPtr ctxt);
 static void
 xmlSchemaClearValidCtxt(xmlSchemaValidCtxtPtr vctxt);
+static int
+xmlSchemaPostCreateVal(xmlSchemaValidCtxtPtr vctxt,
+		       xmlSchemaTypePtr type,
+		       const xmlChar *value,
+		       xmlSchemaValPtr *val);
+static xmlSchemaTypePtr
+xmlSchemaGetSimpleContentType(xmlSchemaTypePtr complexType);
+static int
+xmlSchemaGetWhiteSpaceFacetValue(xmlSchemaTypePtr type);
+static xmlSchemaTreeItemPtr
+xmlSchemaParseModelGroup(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
+			 xmlNodePtr node, xmlSchemaTypeType type,
+			 int withParticle);
+static const xmlChar *
+xmlSchemaCompTypeToString(xmlSchemaTypeType type);
+static xmlSchemaTypeLinkPtr
+xmlSchemaGetUnionSimpleTypeMemberTypes(xmlSchemaTypePtr type);
 
 /************************************************************************
  *									*
@@ -824,6 +937,90 @@
 }
 
 /**
+ * xmlSchemaGetComponentNode:
+ * @item: a schema component
+ *
+ * Returns node associated with the schema component.
+ * NOTE that such a node need not be available; plus, a component's
+ * node need not to reflect the component directly, since there is no
+ * one-to-one relationship between the XML Schema representation and
+ * the component representation.
+ */
+static xmlNodePtr
+xmlSchemaGetComponentNode(xmlSchemaBasicItemPtr item)
+{
+    switch (item->type) {
+	case XML_SCHEMA_TYPE_ELEMENT:
+	    return (((xmlSchemaElementPtr) item)->node);
+	case XML_SCHEMA_TYPE_ATTRIBUTE:
+	    return (((xmlSchemaAttributePtr) item)->node);
+	case XML_SCHEMA_TYPE_COMPLEX:
+	case XML_SCHEMA_TYPE_SIMPLE:
+	    return (((xmlSchemaTypePtr) item)->node);
+	case XML_SCHEMA_TYPE_ANY:
+	case XML_SCHEMA_TYPE_ANY_ATTRIBUTE:
+	    return (((xmlSchemaWildcardPtr) item)->node);
+	case XML_SCHEMA_TYPE_PARTICLE:
+	    return (((xmlSchemaParticlePtr) item)->node);
+	case XML_SCHEMA_TYPE_SEQUENCE:
+	case XML_SCHEMA_TYPE_CHOICE:
+	case XML_SCHEMA_TYPE_ALL:
+	    return (((xmlSchemaModelGroupPtr) item)->node);
+	case XML_SCHEMA_TYPE_GROUP:
+	    return (((xmlSchemaModelGroupDefPtr) item)->node);
+	case XML_SCHEMA_TYPE_ATTRIBUTEGROUP:
+	    return (((xmlSchemaAttributeGroupPtr) item)->node);
+	case XML_SCHEMA_TYPE_IDC_UNIQUE:
+	case XML_SCHEMA_TYPE_IDC_KEY:
+	case XML_SCHEMA_TYPE_IDC_KEYREF:
+	    return (((xmlSchemaIDCPtr) item)->node);
+	default:
+	    return (NULL);
+    }     
+}
+
+#if 0
+/**
+ * xmlSchemaGetNextComponent:
+ * @item: a schema component
+ *
+ * Returns the next sibling of the schema component.
+ */
+static xmlSchemaBasicItemPtr
+xmlSchemaGetNextComponent(xmlSchemaBasicItemPtr item)
+{
+    switch (item->type) {
+	case XML_SCHEMA_TYPE_ELEMENT:
+	    return ((xmlSchemaBasicItemPtr) ((xmlSchemaElementPtr) item)->next);
+	case XML_SCHEMA_TYPE_ATTRIBUTE:
+	    return ((xmlSchemaBasicItemPtr) ((xmlSchemaAttributePtr) item)->next);
+	case XML_SCHEMA_TYPE_COMPLEX:
+	case XML_SCHEMA_TYPE_SIMPLE:
+	    return ((xmlSchemaBasicItemPtr) ((xmlSchemaTypePtr) item)->next);
+	case XML_SCHEMA_TYPE_ANY:
+	case XML_SCHEMA_TYPE_ANY_ATTRIBUTE:
+	    return (NULL);
+	case XML_SCHEMA_TYPE_PARTICLE:
+	    return ((xmlSchemaBasicItemPtr) ((xmlSchemaParticlePtr) item)->next);
+	case XML_SCHEMA_TYPE_SEQUENCE:
+	case XML_SCHEMA_TYPE_CHOICE:
+	case XML_SCHEMA_TYPE_ALL:
+	    return (NULL);
+	case XML_SCHEMA_TYPE_GROUP:
+	    return (NULL);
+	case XML_SCHEMA_TYPE_ATTRIBUTEGROUP:
+	    return ((xmlSchemaBasicItemPtr) ((xmlSchemaAttributeGroupPtr) item)->next);
+	case XML_SCHEMA_TYPE_IDC_UNIQUE:
+	case XML_SCHEMA_TYPE_IDC_KEY:
+	case XML_SCHEMA_TYPE_IDC_KEYREF:
+	    return ((xmlSchemaBasicItemPtr) ((xmlSchemaIDCPtr) item)->next);
+	default:
+	    return (NULL);
+    }     
+}
+#endif
+
+/**
  * xmlSchemaGetAttrName:
  * @attr:  the attribute declaration/use
  *
@@ -945,6 +1142,71 @@
     return ((const xmlChar *) *buf);
 }
 
+static const xmlChar *
+xmlSchemaGetComponentName(xmlSchemaBasicItemPtr item)
+{
+    switch (item->type) {
+	case XML_SCHEMA_TYPE_ELEMENT:
+	    return (((xmlSchemaElementPtr) item)->name);
+	case XML_SCHEMA_TYPE_ATTRIBUTE:
+	    return (((xmlSchemaAttributePtr) item)->name);
+	case XML_SCHEMA_TYPE_ATTRIBUTEGROUP:
+	    return (((xmlSchemaAttributeGroupPtr) item)->name);
+	case XML_SCHEMA_TYPE_SIMPLE:
+	case XML_SCHEMA_TYPE_COMPLEX:	
+	    return (((xmlSchemaTypePtr) item)->name);
+	case XML_SCHEMA_TYPE_GROUP:
+	    return (((xmlSchemaModelGroupDefPtr) item)->name);
+	case XML_SCHEMA_TYPE_IDC_KEY:
+	case XML_SCHEMA_TYPE_IDC_UNIQUE:
+	case XML_SCHEMA_TYPE_IDC_KEYREF:
+	    return (((xmlSchemaIDCPtr) item)->name);
+	default:
+	    /*
+	    * Other components cannot have names.
+	    */
+	    break;
+    }
+    return (NULL);
+}
+
+static const xmlChar *
+xmlSchemaGetComponentTargetNs(xmlSchemaBasicItemPtr item)
+{
+    switch (item->type) {
+	case XML_SCHEMA_TYPE_ELEMENT:
+	    return (((xmlSchemaElementPtr) item)->targetNamespace);
+	case XML_SCHEMA_TYPE_ATTRIBUTE:
+	    return (((xmlSchemaAttributePtr) item)->targetNamespace);
+	case XML_SCHEMA_TYPE_ATTRIBUTEGROUP:
+	    return (((xmlSchemaAttributeGroupPtr) item)->targetNamespace);
+	case XML_SCHEMA_TYPE_SIMPLE:
+	case XML_SCHEMA_TYPE_COMPLEX:	
+	    return (((xmlSchemaTypePtr) item)->targetNamespace);
+	case XML_SCHEMA_TYPE_GROUP:
+	    return (((xmlSchemaModelGroupDefPtr) item)->targetNamespace);
+	case XML_SCHEMA_TYPE_IDC_KEY:
+	case XML_SCHEMA_TYPE_IDC_UNIQUE:
+	case XML_SCHEMA_TYPE_IDC_KEYREF:
+	    return (((xmlSchemaIDCPtr) item)->targetNamespace);
+	default:
+	    /*
+	    * Other components cannot have names.
+	    */
+	    break;
+    }
+    return (NULL);
+}
+
+static const xmlChar*
+xmlSchemaGetComponentQName(xmlChar **buf, 
+			   void *item)
+{
+    return (xmlSchemaFormatQName(buf,
+	xmlSchemaGetComponentTargetNs((xmlSchemaBasicItemPtr) item),
+	xmlSchemaGetComponentName((xmlSchemaBasicItemPtr) item)));
+}
+
 /**
  * xmlSchemaWildcardPCToString:
  * @pc: the type of processContents
@@ -1097,6 +1359,7 @@
 	    *buf = xmlStrcat(*buf, ((xmlSchemaIDCPtr) item)->name);
 	    *buf = xmlStrcat(*buf, BAD_CAST "'");
 	    break;
+	case XML_SCHEMA_TYPE_ANY:
 	case XML_SCHEMA_TYPE_ANY_ATTRIBUTE:
 	    *buf = xmlStrdup(xmlSchemaWildcardPCToString(
 		    ((xmlSchemaWildcardPtr) item)->processContents));
@@ -1121,19 +1384,24 @@
 	case XML_SCHEMA_TYPE_NOTATION:
 	    *buf = xmlStrdup(BAD_CAST "notation");
 	    break;
-	case XML_SCHEMA_TYPE_GROUP:
-	    if (item->flags & XML_SCHEMAS_TYPE_GLOBAL) {
+	case XML_SCHEMA_TYPE_GROUP: {
+		xmlChar *s = NULL;
+
 		*buf = xmlStrdup(xmlSchemaElemModelGrDef);
 		*buf = xmlStrcat(*buf, BAD_CAST " '");
-		*buf = xmlStrcat(*buf, item->name);
+		*buf = xmlStrcat(*buf, xmlSchemaFormatQName(&s,
+		    ((xmlSchemaModelGroupDefPtr) item)->targetNamespace,
+		    ((xmlSchemaModelGroupDefPtr) item)->name));
 		*buf = xmlStrcat(*buf, BAD_CAST "'");
-	    } else {
-		*buf = xmlStrdup(xmlSchemaElemModelGrRef);
-		*buf = xmlStrcat(*buf, BAD_CAST " '");
-		*buf = xmlStrcat(*buf, item->ref);
-		*buf = xmlStrcat(*buf, BAD_CAST "'");
+		FREE_AND_NULL(s)
 	    }
 	    break;
+	case XML_SCHEMA_TYPE_SEQUENCE:
+	case XML_SCHEMA_TYPE_CHOICE:
+	case XML_SCHEMA_TYPE_ALL:
+	case XML_SCHEMA_TYPE_PARTICLE:
+	    *buf = xmlStrdup(xmlSchemaCompTypeToString(item->type));
+	    break;	
 	default:
 	    named = 0;
 	}
@@ -1192,6 +1460,59 @@
 }
 
 /**
+ * xmlSchemaGetCanonValueWhtsp:
+ * @val: the precomputed value
+ * @retValue: the returned value
+ * @ws: the whitespace type of the value
+ *
+ * Get a the cononical representation of the value.
+ * The caller has to free the returned retValue.
+ *
+ * Returns 0 if the value could be built and -1 in case of
+ *         API errors or if the value type is not supported yet.
+ */
+static int
+xmlSchemaGetCanonValueWhtsp(const xmlChar *value,
+			    xmlSchemaValPtr val,
+			    xmlSchemaWhitespaceValueType ws,
+			    const xmlChar **retValue)
+{
+    xmlSchemaValType valType;
+
+    if ((retValue == NULL) || (value == NULL) || (val == NULL))
+	return (-1);
+    *retValue = NULL;
+    valType = xmlSchemaGetValType(val);    
+    switch (valType) {
+	case XML_SCHEMAS_STRING:
+	    if (value == NULL)
+		*retValue = BAD_CAST xmlStrdup(BAD_CAST "");
+	    else if (ws == XML_SCHEMA_WHITESPACE_COLLAPSE)
+		*retValue = xmlSchemaCollapseString(value);
+	    else if (ws == XML_SCHEMA_WHITESPACE_REPLACE)
+		*retValue = xmlSchemaWhiteSpaceReplace(value);
+	    if ((*retValue) == NULL)
+		*retValue = BAD_CAST xmlStrdup(value);
+	    break;
+	case XML_SCHEMAS_NORMSTRING:
+	    if (value == NULL)
+		*retValue = BAD_CAST xmlStrdup(BAD_CAST "");
+	    else {
+		if (ws == XML_SCHEMA_WHITESPACE_COLLAPSE)
+		    *retValue = xmlSchemaCollapseString(value);
+		else
+		    *retValue = xmlSchemaWhiteSpaceReplace(value);
+		if ((*retValue) == NULL)
+		    *retValue = BAD_CAST xmlStrdup(value);
+	    }
+	    break;
+	default:
+	    return (xmlSchemaGetCanonValue(val, retValue));
+    }    
+    return (0);
+}
+
+/**
  * xmlSchemaFormatFacetEnumSet:
  * @buf: the string buffer
  * @type: the type holding the enumeration facets
@@ -1203,24 +1524,56 @@
 static const xmlChar *
 xmlSchemaFormatFacetEnumSet(xmlChar **buf, xmlSchemaTypePtr type)
 {
-    xmlSchemaFacetLinkPtr link;
+    xmlSchemaFacetPtr facet;
+    xmlSchemaWhitespaceValueType ws;
+    const xmlChar *value = NULL;
+    int res, found = 0;
 
     if (*buf != NULL)
 	xmlFree(*buf);    
     *buf = NULL;
-    for (link = type->facetSet; link != NULL; link = link->next) {
-	if (link->facet->type == XML_SCHEMA_FACET_ENUMERATION) {
+
+    do {
+	/*
+	* Use the whitespace type of the base type.
+	*/	
+	ws = (xmlSchemaWhitespaceValueType)
+	    xmlSchemaGetWhiteSpaceFacetValue(type->baseType);
+	for (facet = type->facets; facet != NULL; facet = facet->next) {
+	    if (facet->type != XML_SCHEMA_FACET_ENUMERATION)
+		continue;
+	    found = 1;
+	    res = xmlSchemaGetCanonValueWhtsp(facet->value, facet->val,
+		ws, &value);
+	    if (res == -1) {
+		xmlSchemaVErr(NULL, NULL,
+		    XML_SCHEMAV_INTERNAL,
+		    "Internal error: xmlSchemaFormatFacetEnumSet, failed to "
+		    "compute the canonical lexical representation.\n",
+		    NULL, NULL);
+		if (*buf != NULL)
+		    xmlFree(*buf);
+		*buf = NULL;
+		return (NULL);
+	    }
 	    if (*buf == NULL) {
 		*buf = xmlStrdup(BAD_CAST "'");
-		*buf = xmlStrcat(*buf, link->facet->value);
+		*buf = xmlStrcat(*buf, value);
 		*buf = xmlStrcat(*buf, BAD_CAST "'");
 	    } else {
 		*buf = xmlStrcat(*buf, BAD_CAST ", '");
-		*buf = xmlStrcat(*buf, link->facet->value);
+		*buf = xmlStrcat(*buf, value);
 		*buf = xmlStrcat(*buf, BAD_CAST "'");
 	    }
+	    if (value != NULL) {
+		xmlFree((xmlChar *)value);
+		value = NULL;
+	    }
 	}
-    }
+	type = type->baseType;
+    } while ((! found) && (type != NULL) &&
+	(type->type != XML_SCHEMA_TYPE_BASIC));
+
     return ((const xmlChar *) *buf);
 }
 
@@ -1320,7 +1673,29 @@
 	    msg = xmlStrcat(msg, BAD_CAST "The value '%s' is not accepted "
 		"by the pattern '%s'.\n");
 	    xmlSchemaVErr(ctxt, node, error, (const char *) msg, value, 
-		facet->value);	       
+		facet->value);
+	} else if (facetType == XML_SCHEMA_FACET_MININCLUSIVE) {
+	    msg = xmlStrcat(msg, BAD_CAST "The value '%s' is less than the "
+		"minimum value allowed ('%s').\n");
+	    xmlSchemaVErr(ctxt, node, error, (const char *) msg, value,
+		facet->value);
+	} else if (facetType == XML_SCHEMA_FACET_MAXINCLUSIVE) {
+	    msg = xmlStrcat(msg, BAD_CAST "The value '%s' is greater than the "
+		"maximum value allowed ('%s').\n");
+	    xmlSchemaVErr(ctxt, node, error, (const char *) msg, value,
+		facet->value);
+#if 0
+	} else if (facetType == XML_SCHEMA_FACET_MINEXCLUSIVE) {
+	    msg = xmlStrcat(msg, BAD_CAST "The value '%s' is less than the "
+		"minimum exclusive value allowed ('%s').\n");
+	    xmlSchemaVErr(ctxt, node, error, (const char *) msg, value,
+		facet->value);
+	} else if (facetType == XML_SCHEMA_FACET_MAXEXCLUSIVE) {
+	    msg = xmlStrcat(msg, BAD_CAST "The value '%s' is greater than the "
+		"maximum exclusive value allowed ('%s').\n");
+	    xmlSchemaVErr(ctxt, node, error, (const char *) msg, value,
+		facet->value);
+#endif
 	} else if (node->type == XML_ATTRIBUTE_NODE) {		
 	    msg = xmlStrcat(msg, BAD_CAST "The value '%s' is not facet-valid.\n");
 	    xmlSchemaVErr(ctxt, node, error, (const char *) msg, value, NULL);
@@ -1560,26 +1935,34 @@
  *
  * Returns the component name of a schema item.
  */
-static const char *
+static const xmlChar *
 xmlSchemaCompTypeToString(xmlSchemaTypeType type)
 {
     switch (type) {
 	case XML_SCHEMA_TYPE_SIMPLE:
-	    return("simple type definition");
+	    return(BAD_CAST "simple type definition");
 	case XML_SCHEMA_TYPE_COMPLEX:
-	    return("complex type definition");
+	    return(BAD_CAST "complex type definition");
 	case XML_SCHEMA_TYPE_ELEMENT:
-	    return("element declaration");
+	    return(BAD_CAST "element declaration");
 	case XML_SCHEMA_TYPE_ATTRIBUTE:
-	    return("attribute declaration");
+	    return(BAD_CAST "attribute declaration");
 	case XML_SCHEMA_TYPE_GROUP:
-	    return("model group definition");
+	    return(BAD_CAST "model group definition");
 	case XML_SCHEMA_TYPE_ATTRIBUTEGROUP:
-	    return("attribute group definition");
+	    return(BAD_CAST "attribute group definition");
 	case XML_SCHEMA_TYPE_NOTATION:
-	    return("notation declaration");
+	    return(BAD_CAST "notation declaration");
+	case XML_SCHEMA_TYPE_SEQUENCE:
+	    return(BAD_CAST "model group (sequence)");
+	case XML_SCHEMA_TYPE_CHOICE:
+	    return(BAD_CAST "model group (choice)");
+	case XML_SCHEMA_TYPE_ALL:
+	    return(BAD_CAST "model group (all)");
+	case XML_SCHEMA_TYPE_PARTICLE:
+	    return(BAD_CAST "particle");
 	default:
-	    return("Not a schema component");
+	    return(BAD_CAST "Not a schema component");
     }
 }
 /**
@@ -1619,7 +2002,7 @@
     } else
 	des = *ownerDes;
     if (refTypeStr == NULL)
-	refTypeStr = xmlSchemaCompTypeToString(refType);    
+	refTypeStr = (const char *) xmlSchemaCompTypeToString(refType);    
 	xmlSchemaPErrExt(ctxt, ownerElem, error, 
 	    NULL, NULL, NULL,
 	    "%s, attribute '%s': The QName value %s does not resolve to a(n) "
@@ -2087,11 +2470,12 @@
 {
     switch (item->type) {
 	case XML_SCHEMA_TYPE_COMPLEX:
-	case XML_SCHEMA_TYPE_SIMPLE:
-	case XML_SCHEMA_TYPE_GROUP:
+	case XML_SCHEMA_TYPE_SIMPLE:	
 	    if (item->flags & XML_SCHEMAS_TYPE_GLOBAL)
 		return(1);
 	    break;
+	case XML_SCHEMA_TYPE_GROUP:
+	    return (1);
 	case XML_SCHEMA_TYPE_ELEMENT:
 	    if ( ((xmlSchemaElementPtr) item)->flags & 
 		XML_SCHEMAS_ELEM_GLOBAL)
@@ -2510,10 +2894,6 @@
         return;
     if (attr->annot != NULL)
         xmlSchemaFreeAnnot(attr->annot);
-    if ((attr->flags & XML_SCHEMAS_ATTRGROUP_GLOBAL) && 
-	(attr->attributeWildcard != NULL))
-	xmlSchemaFreeWildcard(attr->attributeWildcard);
-
     xmlFree(attr);
 }
 
@@ -2536,6 +2916,59 @@
 }
 
 /**
+ * xmlSchemaFreeQNameRef:
+ * @item: a QName reference structure
+ *
+ * Deallocatea a QName reference structure.
+ */
+static void
+xmlSchemaFreeQNameRef(xmlSchemaQNameRefPtr item)
+{
+    xmlFree(item);
+}
+
+static int
+xmlSchemaAddVolatile(xmlSchemaPtr schema,
+		     xmlSchemaBasicItemPtr item)
+{
+    xmlSchemaItemListPtr list;
+    
+    if (schema->volatiles == NULL) {
+	schema->volatiles = (void *) xmlMalloc(sizeof(xmlSchemaItemList));
+	if (schema->volatiles == NULL) {
+	    xmlSchemaPErrMemory(NULL,
+		"allocating list of volatiles", NULL);
+	    return (-1);
+	}
+	memset(schema->volatiles, 0, sizeof(xmlSchemaItemList));
+	
+    }
+    list = (xmlSchemaItemListPtr) schema->volatiles;
+    if (list->items == NULL) {
+	list->items = (void **) xmlMalloc(
+	    20 * sizeof(xmlSchemaBasicItemPtr));
+	if (list->items == NULL) {
+	    xmlSchemaPErrMemory(NULL,
+		"allocating new volatile item buffer", NULL);
+	    return (-1);
+	}	
+	list->sizeItems = 20;
+    } else if (list->sizeItems <= list->nbItems) {
+	list->sizeItems *= 2;
+	list->items = (void **) xmlRealloc(list->items, 
+	    list->sizeItems * sizeof(xmlSchemaTypePtr));
+	if (list->items == NULL) {
+	    xmlSchemaPErrMemory(NULL,
+		"growing volatile item buffer", NULL);
+	    list->sizeItems = 0;
+	    return (-1);
+	}	
+    }
+    ((xmlSchemaBasicItemPtr *) list->items)[list->nbItems++] = (void *) item;
+    return (0);
+}
+
+/**
  * xmlSchemaFreeTypeLinkList:
  * @alink: a type link
  *
@@ -2553,7 +2986,6 @@
     }    
 }
 
-#ifdef IDC_ENABLED
 static void
 xmlSchemaFreeIDCStateObjList(xmlSchemaIDCStateObjPtr sto)
 {
@@ -2583,9 +3015,7 @@
     if (idcDef == NULL)
 	return;
     if (idcDef->annot != NULL)
-        xmlSchemaFreeAnnot(idcDef->annot);
-    if (idcDef->ref != NULL)
-	xmlFree(idcDef->ref);
+        xmlSchemaFreeAnnot(idcDef->annot);    
     /* Selector */
     if (idcDef->selector != NULL) {
 	if (idcDef->selector->xpathComp != NULL)
@@ -2605,7 +3035,6 @@
     }
     xmlFree(idcDef);
 }
-#endif /* IDC_ENABLED */
 
 /**
  * xmlSchemaFreeElement:
@@ -2672,17 +3101,7 @@
     }
     if (type->type != XML_SCHEMA_TYPE_BASIC) {
 	if (type->attributeUses != NULL)
-	    xmlSchemaFreeAttributeUseList(type->attributeUses);
-	if ((type->attributeWildcard != NULL) &&
-	    ((type->type != XML_SCHEMA_TYPE_COMPLEX) ||
-	    (type->flags & XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD))) {
-	    /*
-	    * NOTE: The only case where an attribute wildcard
-	    * is not owned, is if a complex type inherits it
-	    * from a base type.
-	    */
-	    xmlSchemaFreeWildcard(type->attributeWildcard);
-	}
+	    xmlSchemaFreeAttributeUseList(type->attributeUses);	
     }
     if (type->memberTypes != NULL)
 	xmlSchemaFreeTypeLinkList(type->memberTypes);
@@ -2702,6 +3121,106 @@
 }
 
 /**
+ * xmlSchemaFreeModelGroupDef:
+ * @item:  a schema model group definition
+ *
+ * Deallocates a schema model group definition.
+ */
+static void
+xmlSchemaFreeModelGroupDef(xmlSchemaModelGroupDefPtr item)
+{
+    if (item->annot != NULL)
+	xmlSchemaFreeAnnot(item->annot);
+    xmlFree(item);
+}
+
+/**
+ * xmlSchemaFreeModelGroup:
+ * @item:  a schema model group
+ *
+ * Deallocates a schema model group structure.
+ */
+static void
+xmlSchemaFreeModelGroup(xmlSchemaModelGroupPtr item)
+{
+    if (item->annot != NULL)
+	xmlSchemaFreeAnnot(item->annot);
+    xmlFree(item);
+}
+
+/**
+ * xmlSchemaFreeParticle:
+ * @type:  a schema type structure
+ *
+ * Deallocate a Schema Type structure.
+ */
+static void
+xmlSchemaFreeParticle(xmlSchemaParticlePtr item)
+{
+    if (item->annot != NULL)
+	xmlSchemaFreeAnnot(item->annot);
+    xmlFree(item);
+}
+
+/**
+ * xmlSchemaFreeMiscComponents:
+ * @item:  a schema component
+ *
+ * Deallocates misc. schema component structures.
+ */
+static void
+xmlSchemaFreeMiscComponents(xmlSchemaTreeItemPtr item)
+{
+    if (item == NULL)
+        return;
+    switch (item->type) {
+	case XML_SCHEMA_TYPE_PARTICLE:
+	    xmlSchemaFreeParticle((xmlSchemaParticlePtr) item);
+	    return;
+	case XML_SCHEMA_TYPE_SEQUENCE:
+	case XML_SCHEMA_TYPE_CHOICE:
+	case XML_SCHEMA_TYPE_ALL:
+	    xmlSchemaFreeModelGroup((xmlSchemaModelGroupPtr) item);
+	    return;
+	case XML_SCHEMA_TYPE_ANY:
+	case XML_SCHEMA_TYPE_ANY_ATTRIBUTE:
+	    xmlSchemaFreeWildcard((xmlSchemaWildcardPtr) item);
+	    break;
+	default:
+	    /* TODO: This should never be hit. */
+	    TODO
+	    return;
+    }	
+}
+
+static void
+xmlSchemaFreeVolatiles(xmlSchemaPtr schema)
+{
+    if (schema->volatiles == NULL)
+	return;
+    {
+	xmlSchemaItemListPtr list = (xmlSchemaItemListPtr) schema->volatiles;
+	xmlSchemaTreeItemPtr item;
+	int i;
+	
+	for (i = 0; i < list->nbItems; i++) {
+	    if (list->items[i] != NULL) {
+		item = (xmlSchemaTreeItemPtr) list->items[i];
+		switch (item->type) {
+		    case XML_SCHEMA_EXTRA_QNAMEREF:
+			xmlSchemaFreeQNameRef((xmlSchemaQNameRefPtr) item);
+			break;
+		    default:
+			xmlSchemaFreeMiscComponents(item);
+		}
+	    }
+	}
+	if (list->items != NULL)
+	    xmlFree(list->items);
+	xmlFree(list);
+    }
+}
+/**
  * xmlSchemaFreeTypeList:
  * @type:  a schema type structure
  *
@@ -2731,6 +3250,8 @@
     if (schema == NULL)
         return;
 
+    if (schema->volatiles != NULL)
+	xmlSchemaFreeVolatiles(schema);
     if (schema->notaDecl != NULL)
         xmlHashFree(schema->notaDecl,
                     (xmlHashDeallocator) xmlSchemaFreeNotation);
@@ -2748,12 +3269,10 @@
                     (xmlHashDeallocator) xmlSchemaFreeTypeList);
     if (schema->groupDecl != NULL)
         xmlHashFree(schema->groupDecl,
-                    (xmlHashDeallocator) xmlSchemaFreeType);
-#ifdef IDC_ENABLED
+                    (xmlHashDeallocator) xmlSchemaFreeModelGroupDef);
     if (schema->idcDef != NULL)
         xmlHashFree(schema->idcDef,
                     (xmlHashDeallocator) xmlSchemaFreeIDC);
-#endif
     if (schema->schemasImports != NULL)
 	xmlHashFree(schema->schemasImports,
 		    (xmlHashDeallocator) xmlSchemaFreeImport);
@@ -2894,6 +3413,72 @@
  * Dump a SchemaType structure
  */
 static void
+xmlSchemaContentModelDump(xmlSchemaParticlePtr particle, FILE * output, int depth)
+{
+    xmlChar *str = NULL;
+    xmlSchemaTreeItemPtr term;
+    char shift[100];
+    int i;
+    
+    if (particle == NULL)
+	return;
+    for (i = 0;((i < depth) && (i < 25));i++)
+        shift[2 * i] = shift[2 * i + 1] = ' ';
+    shift[2 * i] = shift[2 * i + 1] = 0;
+    fprintf(output, shift);
+    if (particle->children == NULL) {
+	fprintf(output, "MISSING particle term\n");
+	return;
+    }
+    term = particle->children;
+    switch (term->type) {
+	case XML_SCHEMA_TYPE_ELEMENT:
+	    fprintf(output, "ELEM '%s'", xmlSchemaFormatQName(&str, 
+		((xmlSchemaElementPtr)term)->targetNamespace,
+		((xmlSchemaElementPtr)term)->name));
+	    break;
+	case XML_SCHEMA_TYPE_SEQUENCE:
+	    fprintf(output, "SEQUENCE");
+	    break;
+	case XML_SCHEMA_TYPE_CHOICE:
+	    fprintf(output, "CHOICE");
+	    break;
+	case XML_SCHEMA_TYPE_ALL:
+	    fprintf(output, "ALL");
+	    break;
+	case XML_SCHEMA_TYPE_ANY:
+	    fprintf(output, "ANY");
+	    break;
+	default:
+	    fprintf(output, "UNKNOWN\n");
+	    return;
+    }
+    if (particle->minOccurs != 1)
+	fprintf(output, " min: %d", particle->minOccurs);
+    if (particle->maxOccurs >= UNBOUNDED)
+	fprintf(output, " max: unbounded");
+    else if (particle->maxOccurs != 1)
+	fprintf(output, " max: %d", particle->maxOccurs);
+    fprintf(output, "\n");
+    if (((term->type == XML_SCHEMA_TYPE_SEQUENCE) ||
+	(term->type == XML_SCHEMA_TYPE_CHOICE) ||
+	(term->type == XML_SCHEMA_TYPE_ALL)) &&
+	(term->children != NULL)) {
+	xmlSchemaContentModelDump((xmlSchemaParticlePtr) term->children,
+	    output, depth +1);
+    }
+    if (particle->next != NULL)
+	xmlSchemaContentModelDump((xmlSchemaParticlePtr) particle->next,
+		output, depth);
+}
+/**
+ * xmlSchemaTypeDump:
+ * @output:  the file output
+ * @type:  a type structure
+ *
+ * Dump a SchemaType structure
+ */
+static void
 xmlSchemaTypeDump(xmlSchemaTypePtr type, FILE * output)
 {
     if (type == NULL) {
@@ -2967,15 +3552,6 @@
             break;
     }
     fprintf(output, "\n");
-    if ((type->minOccurs != 1) || (type->maxOccurs != 1)) {
-        fprintf(output, "  min: %d ", type->minOccurs);
-        if (type->maxOccurs >= UNBOUNDED)
-            fprintf(output, "max: unbounded\n");
-        else if (type->maxOccurs != 1)
-            fprintf(output, "max: %d\n", type->maxOccurs);
-        else
-            fprintf(output, "\n");
-    }
     if (type->base != NULL) {
         fprintf(output, "  base type: %s", type->base);
 	if (type->baseNs != NULL)
@@ -2985,17 +3561,13 @@
     }
     if (type->annot != NULL)
         xmlSchemaAnnotDump(output, type->annot);
-    if (type->subtypes != NULL) {
-        xmlSchemaTypePtr sub = type->subtypes;
-
-        fprintf(output, "  subtypes: ");
-        while (sub != NULL) {
-            fprintf(output, "%s ", sub->name);
-            sub = sub->next;
-        }
-        fprintf(output, "\n");
+#ifdef DUMP_CONTENT_MODEL
+    if ((type->type == XML_SCHEMA_TYPE_COMPLEX) &&
+	(type->subtypes != NULL)) {
+	xmlSchemaContentModelDump((xmlSchemaParticlePtr) type->subtypes,
+	    output, 1);
     }
-
+#endif
 }
 
 /**
@@ -3033,7 +3605,6 @@
                     (xmlHashScannerFull) xmlSchemaElementDump, output);
 }
 
-#ifdef IDC_ENABLED
 #ifdef DEBUG_IDC
 /**
  * xmlSchemaDebugDumpIDCTable: 
@@ -3069,12 +3640,7 @@
 	    for (j = 0; j < bind->definition->nbFields; j++) {
 		key = tab->keys[j];		
 		if ((key != NULL) && (key->compValue != NULL)) {
-#ifdef IDC_VALUE_SUPPORT
 		    res = xmlSchemaGetCanonValue(key->compValue, &value);
-#else
-		    value = xmlStrdup(BAD_CAST "dummy-value");
-		    res = 0;
-#endif
 		    if (res >= 0)
 			fprintf(output, "\"%s\" ", value);
 		    else
@@ -3092,7 +3658,6 @@
     } while (bind != NULL);
 }
 #endif /* DEBUG_IDC */
-#endif /* IDC_ENABLED */
 #endif /* LIBXML_OUTPUT_ENABLED */
 
 /************************************************************************
@@ -3261,9 +3826,9 @@
 #ifdef DEBUG
     if (ret == NULL) {
         if (namespace == NULL)
-            fprintf(stderr, "Unable to lookup type %s", name);
+            fprintf(stderr, "Unable to lookup element decl. %s", name);
         else
-            fprintf(stderr, "Unable to lookup type %s:%s", name,
+            fprintf(stderr, "Unable to lookup element decl. %s:%s", name,
                     namespace);
     }
 #endif
@@ -3446,12 +4011,7 @@
     if ((name == NULL) || (schema == NULL))
         return (NULL);
     
-    
     ret = xmlHashLookup2(schema->groupDecl, name, namespace);
-    if ((ret != NULL) && (ret->flags & XML_SCHEMAS_TYPE_GLOBAL))
-	return (ret);  
-    else
-	ret = NULL;
     /*
     * Removed since imported components will be hold by the main schema only.
     *
@@ -3479,6 +4039,34 @@
     return (ret);
 }
 
+/**
+ * xmlSchemaGetNamedComponent:
+ * @schema:  the schema 
+ * @name:  the name of the group
+ * @ns:  the target namespace of the group 
+ *
+ * Lookup a group in the schema or imported schemas
+ *
+ * Returns the group definition or NULL if not found.
+ */
+static xmlSchemaTreeItemPtr
+xmlSchemaGetNamedComponent(xmlSchemaPtr schema,
+			   xmlSchemaTypeType itemType,
+			   const xmlChar *name,
+			   const xmlChar *targetNs)
+{
+    switch (itemType) {
+	case XML_SCHEMA_TYPE_GROUP:
+	    return ((xmlSchemaTreeItemPtr) xmlSchemaGetGroup(schema,
+		name, targetNs));
+	case XML_SCHEMA_TYPE_ELEMENT:
+	    return ((xmlSchemaTreeItemPtr) xmlSchemaGetElem(schema,
+		name, targetNs));
+	default:
+	    return (NULL);
+    }
+}
+
 /************************************************************************
  * 									*
  * 			Parsing functions				*
@@ -3889,6 +4477,7 @@
 	    prev->redef = ret;
 	}
     }
+    ret->node = node;
     ret->minOccurs = 1;
     ret->maxOccurs = 1;
     ret->attributeUses = NULL;
@@ -3898,7 +4487,143 @@
     return (ret);
 }
 
+static xmlSchemaQNameRefPtr
+xmlSchemaNewQNameRef(xmlSchemaPtr schema,
+		     xmlSchemaTypeType refType,
+		     const xmlChar *refName, 
+		     const xmlChar *refNs)
+{
+    xmlSchemaQNameRefPtr ret;
+
+    ret = (xmlSchemaQNameRefPtr)
+	xmlMalloc(sizeof(xmlSchemaQNameRef));
+    if (ret == NULL) {
+	xmlSchemaPErrMemory(NULL, "allocating QName reference item",
+	    NULL);
+	return (NULL);
+    }
+    ret->type = XML_SCHEMA_EXTRA_QNAMEREF;
+    ret->name = refName;
+    ret->targetNamespace = refNs;
+    ret->item = NULL;
+    ret->itemType = refType;
+    /*
+    * Store the reference item in the schema.
+    */
+    xmlSchemaAddVolatile(schema, (xmlSchemaBasicItemPtr) ret);
+    return (ret);
+}
+
 /**
+ * xmlSchemaAddModelGroup:
+ * @ctxt:  a schema parser context
+ * @schema:  the schema being built
+ * @type: the "compositor" type of the model group
+ * @container:  the internal component name
+ * @node: the node in the schema doc    
+ *
+ * Adds a schema model group
+ * *WARNING* this interface is highly subject to change
+ *
+ * Returns the new struture or NULL in case of error
+ */
+static xmlSchemaModelGroupPtr
+xmlSchemaAddModelGroup(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
+		 xmlSchemaTypeType type, const xmlChar **container,
+		 xmlNodePtr node)
+{
+    xmlSchemaModelGroupPtr ret = NULL;
+    xmlChar buf[30];
+
+    if ((ctxt == NULL) || (schema == NULL))
+        return (NULL);
+
+#ifdef DEBUG
+    fprintf(stderr, "Adding model group component\n");
+#endif    
+    ret = (xmlSchemaModelGroupPtr)
+	xmlMalloc(sizeof(xmlSchemaModelGroup));
+    if (ret == NULL) {
+	xmlSchemaPErrMemory(ctxt, "allocating model group component",
+	    NULL);
+	return (NULL);
+    }
+    ret->type = type;
+    ret->annot = NULL;
+    ret->node = node;
+    ret->children = NULL;
+    ret->next = NULL;
+    if (type == XML_SCHEMA_TYPE_SEQUENCE) {
+	if (container != NULL)
+	    snprintf((char *) buf, 29, "#seq%d", ctxt->counter++ + 1);
+    } else if (type == XML_SCHEMA_TYPE_CHOICE) {
+	if (container != NULL)	    
+	    snprintf((char *) buf, 29, "#cho%d", ctxt->counter++ + 1);
+    } else {
+	if (container != NULL)
+	    snprintf((char *) buf, 29, "#all%d", ctxt->counter++ + 1);
+    }
+    if (container != NULL)
+	*container = xmlDictLookup(ctxt->dict, BAD_CAST buf, -1);
+    /*
+    * Add to volatile items.
+    * TODO: this should be changed someday.
+    */
+    if (xmlSchemaAddVolatile(schema, (xmlSchemaBasicItemPtr) ret) != 0) {
+	xmlFree(ret);
+	return (NULL);
+    }
+    return (ret);
+}
+
+
+/**
+ * xmlSchemaAddParticle:
+ * @ctxt:  a schema parser context
+ * @schema:  the schema being built
+ * @node: the corresponding node in the schema doc
+ * @min: the minOccurs
+ * @max: the maxOccurs
+ *
+ * Adds an XML schema particle component.
+ * *WARNING* this interface is highly subject to change
+ *
+ * Returns the new struture or NULL in case of error
+ */
+static xmlSchemaParticlePtr
+xmlSchemaAddParticle(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
+		     xmlNodePtr node, int min, int max)
+{
+    xmlSchemaParticlePtr ret = NULL;
+    if ((ctxt == NULL) || (schema == NULL))
+        return (NULL);
+
+#ifdef DEBUG
+    fprintf(stderr, "Adding particle component\n");
+#endif
+    ret = (xmlSchemaParticlePtr)
+	xmlMalloc(sizeof(xmlSchemaParticle));
+    if (ret == NULL) {
+	xmlSchemaPErrMemory(ctxt, "allocating particle component",
+	    NULL);
+	return (NULL);
+    }
+    ret->type = XML_SCHEMA_TYPE_PARTICLE;
+    ret->annot = NULL;
+    ret->node = node;
+    ret->minOccurs = min;
+    ret->maxOccurs = max;
+    ret->next = NULL;
+    ret->children = NULL;
+
+    if (xmlSchemaAddVolatile(schema, (xmlSchemaBasicItemPtr) ret) != 0) {
+	xmlFree(ret);
+	return (NULL);
+    }
+    return (ret);
+}
+
+/**
  * xmlSchemaAddGroup:
  * @ctxt:  a schema validation context
  * @schema:  the schema being built
@@ -3908,12 +4633,12 @@
  *
  * Returns the new struture or NULL in case of error
  */
-static xmlSchemaTypePtr
+static xmlSchemaModelGroupDefPtr
 xmlSchemaAddGroup(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
                   const xmlChar *name, const xmlChar *namespaceName,
 		  xmlNodePtr node)
 {
-    xmlSchemaTypePtr ret = NULL;
+    xmlSchemaModelGroupDefPtr ret = NULL;
     int val;
 
     if ((ctxt == NULL) || (schema == NULL) || (name == NULL))
@@ -3924,16 +4649,17 @@
     if (schema->groupDecl == NULL)
         return (NULL);
 
-    ret = (xmlSchemaTypePtr) xmlMalloc(sizeof(xmlSchemaType));
+    ret = (xmlSchemaModelGroupDefPtr) xmlMalloc(sizeof(xmlSchemaModelGroupDef));
     if (ret == NULL) {
         xmlSchemaPErrMemory(ctxt, "adding group", NULL);
         return (NULL);
     }
-    memset(ret, 0, sizeof(xmlSchemaType));
+    memset(ret, 0, sizeof(xmlSchemaModelGroupDef));
     ret->name = xmlDictLookup(ctxt->dict, name, -1);
-    val =
-        xmlHashAddEntry2(schema->groupDecl, name, namespaceName,
-                         ret);
+    ret->type = XML_SCHEMA_TYPE_GROUP;    
+    ret->node = node;
+    ret->targetNamespace = namespaceName;
+    val = xmlHashAddEntry2(schema->groupDecl, ret->name, namespaceName, ret);
     if (val != 0) {
 	xmlSchemaPCustomErr(ctxt,
 	    XML_SCHEMAP_REDEFINED_GROUP,
@@ -3942,10 +4668,7 @@
 	    "exist", name);
         xmlFree(ret);
         return (NULL);
-    }
-    ret->targetNamespace = namespaceName;
-    ret->minOccurs = 1;
-    ret->maxOccurs = 1;
+    }    
     if (ctxt->assemble != NULL)	
 	xmlSchemaAddAssembledItem(ctxt, (xmlSchemaTypePtr) ret);
     return (ret);
@@ -3978,29 +4701,42 @@
 /**
  * xmlSchemaAddWildcard:
  * @ctxt:  a schema validation context
- * Adds a wildcard. It corresponds to a 
- * xsd:anyAttribute and is used as storage for namespace 
- * constraints on a xsd:any.
+ * @schema: a schema
  *
+ * Adds a wildcard. 
+ * It corresponds to a xsd:anyAttribute and xsd:any.
+ *
  * Returns the new struture or NULL in case of error
  */
 static xmlSchemaWildcardPtr
-xmlSchemaAddWildcard(xmlSchemaParserCtxtPtr ctxt)
+xmlSchemaAddWildcard(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
+		     xmlSchemaTypeType type, xmlNodePtr node)
 {
     xmlSchemaWildcardPtr ret = NULL;
 
-    if (ctxt == NULL)
+    if ((ctxt == NULL) || (schema == NULL))
         return (NULL);
 
+#ifdef DEBUG
+    fprintf(stderr, "Adding wildcard component\n");
+#endif
+
     ret = (xmlSchemaWildcardPtr) xmlMalloc(sizeof(xmlSchemaWildcard));
     if (ret == NULL) {
         xmlSchemaPErrMemory(ctxt, "adding wildcard", NULL);
         return (NULL);
     }
     memset(ret, 0, sizeof(xmlSchemaWildcard));
+    ret->type = type;
     ret->minOccurs = 1;
     ret->maxOccurs = 1;
 
+    if (xmlSchemaAddVolatile(schema, (xmlSchemaBasicItemPtr) ret) != 0) {
+	xmlSchemaPCustomErr(ctxt, XML_SCHEMAP_INTERNAL, NULL, NULL, node,
+	    "Failed to add a wildcard component to the list", NULL);
+	xmlFree(ret);
+	return (NULL);
+    }
     return (ret);
 }
 
@@ -4010,6 +4746,7 @@
  * 									*
  ************************************************************************/
 
+#if 0
 /**
  * xmlGetQNameProp:
  * @ctxt:  a schema validation context
@@ -4067,6 +4804,7 @@
     }
     return (ret);
 }
+#endif
 
 /**
  * xmlSchemaPValAttrNodeQNameValue:
@@ -4128,7 +4866,7 @@
 	    */
 	    *uri = schema->targetNamespace;
 	}	
-	*local = value;
+	*local = xmlDictLookup(ctxt->dict, value, -1);
 	return (0);
     }
     /*
@@ -4137,7 +4875,7 @@
     *local = xmlSplitQName3(value, &len);
     *local = xmlDictLookup(ctxt->dict, *local, -1);
     pref = xmlDictLookup(ctxt->dict, value, len);
-    if (prefix != 0)
+    if (prefix != 0)	
 	*prefix = pref;
     ns = xmlSearchNs(attr->doc, attr->parent, pref);
     if (ns == NULL) {
@@ -4220,6 +4958,8 @@
     attr = xmlSchemaGetPropNode(ownerElem, name);
     if (attr == NULL) {
 	*local = NULL;
+	if (prefix != NULL)
+	    *prefix = NULL;
 	*uri = NULL;
 	return (0);    
     }
@@ -4532,13 +5272,8 @@
 static xmlSchemaTypePtr xmlSchemaParseRestriction(xmlSchemaParserCtxtPtr
                                                   ctxt,
                                                   xmlSchemaPtr schema,
-                                                  xmlNodePtr node);
-static xmlSchemaTypePtr xmlSchemaParseSequence(xmlSchemaParserCtxtPtr ctxt,
-                                               xmlSchemaPtr schema,
-                                               xmlNodePtr node);
-static xmlSchemaTypePtr xmlSchemaParseAll(xmlSchemaParserCtxtPtr ctxt,
-                                          xmlSchemaPtr schema,
-                                          xmlNodePtr node);
+                                                  xmlNodePtr node,
+						  xmlSchemaTypeType parentType);
 static xmlSchemaAttributePtr xmlSchemaParseAttribute(xmlSchemaParserCtxtPtr
                                                      ctxt,
                                                      xmlSchemaPtr schema,
@@ -4548,9 +5283,6 @@
 xmlSchemaParseAttributeGroup(xmlSchemaParserCtxtPtr ctxt,
                              xmlSchemaPtr schema, xmlNodePtr node,
 			     int topLevel);
-static xmlSchemaTypePtr xmlSchemaParseChoice(xmlSchemaParserCtxtPtr ctxt,
-                                             xmlSchemaPtr schema,
-                                             xmlNodePtr node);
 static xmlSchemaTypePtr xmlSchemaParseList(xmlSchemaParserCtxtPtr ctxt,
                                            xmlSchemaPtr schema,
                                            xmlNodePtr node);
@@ -4793,7 +5525,7 @@
 xmlSchemaCheckReference(xmlSchemaParserCtxtPtr pctxt,
 		  xmlSchemaPtr schema,
 		  xmlNodePtr node,
-		  xmlSchemaTypePtr item,
+		  xmlSchemaBasicItemPtr item,
 		  const xmlChar *namespaceName)
 {
     if (xmlStrEqual(schema->targetNamespace, namespaceName))
@@ -4806,12 +5538,14 @@
     }
     if (namespaceName == NULL)
 	xmlSchemaPCustomErr(pctxt, XML_SCHEMAP_SRC_RESOLVE,
-	    NULL, item, node, "References from this schema to components in no "
+	    NULL, (xmlSchemaTypePtr) item, node,
+	    "References from this schema to components in no "
 	    "namespace are not valid, since not indicated by an import "
 	    "statement", NULL);
     else
 	xmlSchemaPCustomErr(pctxt, XML_SCHEMAP_SRC_RESOLVE,
-	    NULL, item, node, "References from this schema to components in the "
+	    NULL, (xmlSchemaTypePtr) item, node,
+	    "References from this schema to components in the "
 	    "namespace '%s' are not valid, since not indicated by an import "
 	    "statement", namespaceName);
     return (0);
@@ -4822,7 +5556,7 @@
  * @ctxt:  a schema validation context
  * @schema:  the schema being built
  * @node:  a subtree containing XML Schema informations
- * @type:  the hosting type
+ * @type:  the hosting type where the attributes will be anchored
  *
  * parse a XML schema attrDecls declaration corresponding to
  * <!ENTITY % attrDecls  
@@ -4832,9 +5566,8 @@
 xmlSchemaParseAttrDecls(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
                         xmlNodePtr child, xmlSchemaTypePtr type)
 {
-    xmlSchemaAttributePtr lastattr, attr;
+    xmlSchemaAttributePtr lastattr = NULL, attr;
 
-    lastattr = NULL;
     while ((IS_SCHEMA(child, "attribute")) ||
            (IS_SCHEMA(child, "attributeGroup"))) {
         attr = NULL;
@@ -4849,7 +5582,7 @@
 		if (type->type == XML_SCHEMA_TYPE_ATTRIBUTEGROUP)
 		    ((xmlSchemaAttributeGroupPtr) type)->attributes = attr;
 		else
-                type->attributes = attr;
+		    type->attributes = attr;
                 lastattr = attr;
             } else {
                 lastattr->next = attr;
@@ -5110,12 +5843,12 @@
         wildc->processContents = XML_SCHEMAS_ANY_LAX;
     } else {
         xmlSchemaPSimpleTypeErr(ctxt, 
-	    XML_SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD,
+	    XML_SCHEMAP_S4S_ATTR_INVALID_VALUE,
 	    NULL, NULL, node,
 	    NULL, "(strict | skip | lax)", pc, 
 	    NULL, NULL, NULL);
         wildc->processContents = XML_SCHEMAS_ANY_STRICT;
-	ret = XML_SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD;
+	ret = XML_SCHEMAP_S4S_ATTR_INVALID_VALUE;
     }
     /*
      * Build the namespace constraints.
@@ -5200,11 +5933,13 @@
 
 static int
 xmlSchemaPCheckParticleCorrect_2(xmlSchemaParserCtxtPtr ctxt, 
-				 xmlSchemaTypePtr item, 
+				 xmlSchemaParticlePtr item ATTRIBUTE_UNUSED, 
 				 xmlNodePtr node,
 				 int minOccurs,
 				 int maxOccurs) {
 
+    if ((maxOccurs == 0) && ( minOccurs == 0))
+	return (0);
     if (maxOccurs != UNBOUNDED) {
 	/*
 	* TODO: Maby we should better not create the particle, 
@@ -5221,7 +5956,8 @@
 	    */
 	    xmlSchemaPCustomAttrErr(ctxt,
 		XML_SCHEMAP_P_PROPS_CORRECT_2_2,
-		NULL, item, xmlSchemaGetPropNode(node, "maxOccurs"),
+		NULL, NULL,
+		xmlSchemaGetPropNode(node, "maxOccurs"),
 		"The value must be greater than or equal to 1");
 	    return (XML_SCHEMAP_P_PROPS_CORRECT_2_2);
 	} else if (minOccurs > maxOccurs) {
@@ -5230,7 +5966,8 @@
 	    */
 	    xmlSchemaPCustomAttrErr(ctxt,
 		XML_SCHEMAP_P_PROPS_CORRECT_2_1, 
-		NULL, item, xmlSchemaGetPropNode(node, "minOccurs"),
+		NULL, NULL,
+		xmlSchemaGetPropNode(node, "minOccurs"),
 		"The value must not be greater than the value of 'maxOccurs'");
 	    return (XML_SCHEMAP_P_PROPS_CORRECT_2_1);
 	}
@@ -5244,67 +5981,95 @@
  * @schema:  the schema being built
  * @node:  a subtree containing XML Schema informations
  *
- * parse a XML schema Any declaration
+ * Parsea a XML schema <any> element. A particle and wildcard
+ * will be created (except if minOccurs==maxOccurs==0, in this case
+ * nothing will be created).
  * *WARNING* this interface is highly subject to change
  *
- * Returns the new type structure or NULL in case of error
+ * Returns the particle or NULL in case of error or if minOccurs==maxOccurs==0
  */
-static xmlSchemaTypePtr
+static xmlSchemaParticlePtr
 xmlSchemaParseAny(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
                   xmlNodePtr node)
 {
-    xmlSchemaTypePtr type;
+    xmlSchemaParticlePtr particle;
     xmlNodePtr child = NULL;
-    xmlChar name[30];
-    xmlSchemaWildcardPtr wildc;
-    int minOccurs, maxOccurs;
+    xmlSchemaWildcardPtr wild;
+    int min, max;
+    xmlAttrPtr attr;
+    xmlSchemaAnnotPtr annot = NULL;
 
     if ((ctxt == NULL) || (schema == NULL) || (node == NULL))
         return (NULL);
-    maxOccurs = xmlGetMaxOccurs(ctxt, node, 0, UNBOUNDED, 1, 
-	"(nonNegativeInteger | unbounded)");
-    minOccurs = xmlGetMinOccurs(ctxt, node, 0, -1, 1, 
-	"nonNegativeInteger");
-    if ((minOccurs == 0) && (maxOccurs == 0))
-	return (NULL);
-
-    snprintf((char *) name, 30, "#any%d", ctxt->counter++ + 1);
-    type = xmlSchemaAddType(ctxt, schema, name, NULL, node);
-    if (type == NULL)
-        return (NULL);
-    type->node = node;
-    type->type = XML_SCHEMA_TYPE_ANY;    
-    
     /*
-    * TODO: Use a particle component here.
+    * Check for illegal attributes.
     */
-    wildc = xmlSchemaAddWildcard(ctxt);
+    attr = node->properties;
+    while (attr != NULL) {
+	if (attr->ns == NULL) {
+	    if ((!xmlStrEqual(attr->name, BAD_CAST "id")) &&
+		(!xmlStrEqual(attr->name, BAD_CAST "minOccurs")) &&
+		(!xmlStrEqual(attr->name, BAD_CAST "maxOccurs")) &&
+	        (!xmlStrEqual(attr->name, BAD_CAST "namespace")) &&
+		(!xmlStrEqual(attr->name, BAD_CAST "processContents"))) {
+		xmlSchemaPIllegalAttrErr(ctxt, 
+		    XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
+		    NULL, NULL, attr);		    
+	    }
+	} else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) {
+	    xmlSchemaPIllegalAttrErr(ctxt, 
+		XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
+		NULL, NULL, attr);	
+	}
+	attr = attr->next;
+    }
+    xmlSchemaPValAttrID(ctxt, NULL, NULL, node, BAD_CAST "id");
     /*
-    * Check min/max sanity.
+    * minOccurs/maxOccurs.
+    */  
+    max = xmlGetMaxOccurs(ctxt, node, 0, UNBOUNDED, 1, 
+	"(nonNegativeInteger | unbounded)");
+    min = xmlGetMinOccurs(ctxt, node, 0, -1, 1, 
+	"nonNegativeInteger");      
+    xmlSchemaPCheckParticleCorrect_2(ctxt, NULL, node, min, max);
+    /*
+    * Create & parse the wildcard.
     */
-    type->maxOccurs = maxOccurs;
-    type->minOccurs = minOccurs;
-    xmlSchemaPCheckParticleCorrect_2(ctxt, type, 
-	    node, type->minOccurs, type->maxOccurs);    
+    wild = xmlSchemaAddWildcard(ctxt, schema, XML_SCHEMA_TYPE_ANY, node);
+    if (wild == NULL)
+	return (NULL);
+    xmlSchemaParseWildcardNs(ctxt, schema, wild, node);
     /*
-    * This is not nice, since it is won't be used as a attribute wildcard,
-    * but better than adding a field to the structure.
+    * And now for the children...
     */
-    type->attributeWildcard = wildc;
-    xmlSchemaParseWildcardNs(ctxt, schema, wildc, node);    
     child = node->children;    
     if (IS_SCHEMA(child, "annotation")) {
-        type->annot = xmlSchemaParseAnnotation(ctxt, schema, child);
+        annot = xmlSchemaParseAnnotation(ctxt, schema, child);
         child = child->next;
     }
     if (child != NULL) {
-        xmlSchemaPErr2(ctxt, node, child,
-                       XML_SCHEMAP_UNKNOWN_SEQUENCE_CHILD,
-                       "Sequence %s has unexpected content\n", type->name,
-                       NULL);
+	xmlSchemaPContentErr(ctxt,
+	    XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED,
+	    NULL, NULL, node, child, 
+	    NULL, "(annotation?)");
     }
+    /*
+    * No component if minOccurs==maxOccurs==0.
+    */
+    if ((min == 0) && (max == 0)) {
+	/* Don't free the wildcard, since it's already on the list. */
+	return (NULL);
+    }
+    /*
+    * Create the particle.
+    */
+    particle = xmlSchemaAddParticle(ctxt, schema, node, min, max);
+    if (particle == NULL)
+        return (NULL);
+    particle->annot = annot;
+    particle->children = (xmlSchemaTreeItemPtr) wild;    
 
-    return (type);
+    return (particle);
 }
 
 /**
@@ -5353,9 +6118,10 @@
         child = child->next;
     }
     if (child != NULL) {
-        xmlSchemaPErr2(ctxt, node, child,
-                       XML_SCHEMAP_UNKNOWN_NOTATION_CHILD,
-                       "notation %s has unexpected content\n", name, NULL);
+	xmlSchemaPContentErr(ctxt,
+	    XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED,
+	    NULL, NULL, node, child, 
+	    NULL, "(annotation?)");
     }
 
     return (ret);
@@ -5383,11 +6149,11 @@
     if ((ctxt == NULL) || (schema == NULL) || (node == NULL))
         return (NULL);
 
-    ret = xmlSchemaAddWildcard(ctxt);
+    ret = xmlSchemaAddWildcard(ctxt, schema, XML_SCHEMA_TYPE_ANY_ATTRIBUTE,
+	node);
     if (ret == NULL) {
         return (NULL);
     }
-    ret->type = XML_SCHEMA_TYPE_ANY_ATTRIBUTE;
     /*
     * Check for illegal attributes.
     */
@@ -5413,10 +6179,8 @@
     /*
     * Parse the namespace list.
     */
-    if (xmlSchemaParseWildcardNs(ctxt, schema, ret, node) != 0) {
-	xmlSchemaFreeWildcard(ret);
+    if (xmlSchemaParseWildcardNs(ctxt, schema, ret, node) != 0) 	
 	return (NULL);
-    }  
     /*
     * And now for the children...
     */
@@ -5515,7 +6279,8 @@
 	ret->refNs = refNs;	
 	ret->refPrefix = refPrefix;
 	ret->ref = ref;
-	xmlSchemaCheckReference(ctxt, schema, node, (xmlSchemaTypePtr) ret, refNs);
+	xmlSchemaCheckReference(ctxt, schema, node, (xmlSchemaBasicItemPtr) ret,
+	    refNs);
 	/*
 	xmlSchemaFormatTypeRep(&repName, (xmlSchemaTypePtr) ret, NULL, NULL);
 	*/
@@ -5850,7 +6615,8 @@
 	/* TODO: Is @refPrefix currently used? */
 	ret->refPrefix = refPrefix;	
 	ret->node = node;
-	xmlSchemaCheckReference(ctxt, schema, node, (xmlSchemaTypePtr) ret, refNs);
+	xmlSchemaCheckReference(ctxt, schema, node,
+	    (xmlSchemaBasicItemPtr) ret, refNs);
     }    
     /*
     * Check for illegal attributes.
@@ -6026,7 +6792,6 @@
     return (ret);
 }
 
-#ifdef IDC_ENABLED
 static int
 xmlSchemaCheckCSelectorXPath(xmlSchemaParserCtxtPtr ctxt, 
 			     xmlSchemaIDCPtr idc,
@@ -6098,6 +6863,9 @@
 	    nsArray[count * 2] = NULL;
 	    xmlFree(nsList);
 	}
+	/*
+	* TODO: Differentiate between "selector" and "field".
+	*/
 	if (isField)
 	    selector->xpathComp = (void *) xmlPatterncompile(selector->xpath,
 		NULL, 1, nsArray);
@@ -6107,7 +6875,6 @@
 	if (nsArray != NULL)
 	    xmlFree((xmlChar **) nsArray);
 	
-#ifdef IDC_XPATH_SUPPORT
 	if (selector->xpathComp == NULL) {
 	    xmlSchemaPCustomErr(ctxt,
 		/* TODO: Adjust error code? */
@@ -6116,12 +6883,23 @@
 		"The XPath expression '%s' could not be "
 		"compiled", selector->xpath);
 	    return (XML_SCHEMAP_S4S_ATTR_INVALID_VALUE);
-	}		
-#endif  
+	}
     }
     return (0);
 }
 
+#define ADD_ANNOTATION(annot)   \
+    xmlSchemaAnnotPtr cur = item->annot; \
+    if (item->annot == NULL) {  \
+	item->annot = annot;    \
+	return (annot);         \
+    }                           \
+    cur = item->annot;          \
+    if (cur->next != NULL) {    \
+	cur = cur->next;	\
+    }                           \
+    cur->next = annot;
+
 /**
  * xmlSchemaAssignAnnotation:
  * @item: the schema component
@@ -6132,20 +6910,89 @@
  * Returns the given annotaion.
  */
 static xmlSchemaAnnotPtr
-xmlSchemaAssignAnnotation(xmlSchemaBasicItemPtr item,
-			  xmlSchemaAnnotPtr annot)
-{
-    xmlSchemaAnnotPtr cur = item->annot;
-
-    if (item->annot == NULL) {
-	item->annot = annot;
-	return (annot);
+xmlSchemaAddAnnotation(xmlSchemaAnnotItemPtr annItem,
+		       xmlSchemaAnnotPtr annot)
+{   
+    if ((annItem == NULL) || (annot == NULL))
+	return (NULL);
+    switch (annItem->type) {
+	case XML_SCHEMA_TYPE_ELEMENT: {
+		xmlSchemaElementPtr item = (xmlSchemaElementPtr) annItem;
+		ADD_ANNOTATION(annot)
+	    }
+	    break;
+	case XML_SCHEMA_TYPE_ATTRIBUTE: {
+		xmlSchemaAttributePtr item = (xmlSchemaAttributePtr) annItem;
+		ADD_ANNOTATION(annot)
+	    }
+	    break;
+	case XML_SCHEMA_TYPE_ANY_ATTRIBUTE:
+	case XML_SCHEMA_TYPE_ANY: {
+		xmlSchemaWildcardPtr item = (xmlSchemaWildcardPtr) annItem;
+		ADD_ANNOTATION(annot)
+	    }
+	    break;
+	case XML_SCHEMA_TYPE_PARTICLE:
+	case XML_SCHEMA_TYPE_IDC_KEY:
+	case XML_SCHEMA_TYPE_IDC_KEYREF:
+	case XML_SCHEMA_TYPE_IDC_UNIQUE: { 
+		xmlSchemaAnnotItemPtr item = (xmlSchemaAnnotItemPtr) annItem;
+		ADD_ANNOTATION(annot)
+	    }
+	    break;
+	case XML_SCHEMA_TYPE_ATTRIBUTEGROUP: {
+		xmlSchemaAttributeGroupPtr item =
+		    (xmlSchemaAttributeGroupPtr) annItem;
+		ADD_ANNOTATION(annot)
+	    }
+	    break;
+	case XML_SCHEMA_TYPE_NOTATION: {
+		xmlSchemaNotationPtr item = (xmlSchemaNotationPtr) annItem;
+		ADD_ANNOTATION(annot)
+	    }
+	    break;
+	case XML_SCHEMA_FACET_MININCLUSIVE:
+	case XML_SCHEMA_FACET_MINEXCLUSIVE:
+	case XML_SCHEMA_FACET_MAXINCLUSIVE:
+	case XML_SCHEMA_FACET_MAXEXCLUSIVE:
+	case XML_SCHEMA_FACET_TOTALDIGITS:
+	case XML_SCHEMA_FACET_FRACTIONDIGITS:
+	case XML_SCHEMA_FACET_PATTERN:
+	case XML_SCHEMA_FACET_ENUMERATION:
+	case XML_SCHEMA_FACET_WHITESPACE:
+	case XML_SCHEMA_FACET_LENGTH:
+	case XML_SCHEMA_FACET_MAXLENGTH:
+	case XML_SCHEMA_FACET_MINLENGTH: {
+		xmlSchemaFacetPtr item = (xmlSchemaFacetPtr) annItem;
+		ADD_ANNOTATION(annot)
+	    }
+	    break;	
+	case XML_SCHEMA_TYPE_SIMPLE:
+	case XML_SCHEMA_TYPE_COMPLEX: {
+		xmlSchemaTypePtr item = (xmlSchemaTypePtr) annItem;
+		ADD_ANNOTATION(annot)
+	    }
+	    break;
+	case XML_SCHEMA_TYPE_GROUP: {
+		xmlSchemaModelGroupDefPtr item = (xmlSchemaModelGroupDefPtr) annItem;
+		ADD_ANNOTATION(annot)
+	    }
+	    break;
+	case XML_SCHEMA_TYPE_SEQUENCE:
+	case XML_SCHEMA_TYPE_CHOICE:
+	case XML_SCHEMA_TYPE_ALL: {
+		xmlSchemaModelGroupPtr item = (xmlSchemaModelGroupPtr) annItem;
+		ADD_ANNOTATION(annot)
+	    }
+	    break;
+	default:
+	     xmlSchemaPCustomErr(NULL,
+		XML_SCHEMAP_INTERNAL, 
+		NULL, NULL, NULL,
+		"Internal error: xmlSchemaAddAnnotation, "
+		"The item is not a annotated schema component", NULL);
+	     break;
     }
-    cur = item->annot;
-    if (cur->next != NULL) {
-	cur = cur->next;	
-    }
-    cur->next = annot;
     return (annot);
 }
 
@@ -6236,7 +7083,7 @@
 	/*
 	* Add the annotation to the parent IDC.
 	*/
-	xmlSchemaAssignAnnotation((xmlSchemaBasicItemPtr) idc, 
+	xmlSchemaAddAnnotation((xmlSchemaAnnotItemPtr) idc, 
 	    xmlSchemaParseAnnotation(ctxt, schema, child));
 	child = child->next;
     }  		    
@@ -6362,19 +7209,16 @@
 	    /*
 	    * Create a reference item.
 	    */
-	    item->ref = (xmlSchemaItemQNRefPtr) xmlMalloc(
-		sizeof(xmlSchemaItemQNRef));
-	    if (item->ref == NULL) {
-		xmlSchemaPErrMemory(ctxt, 
-		    "allocating a QName reference item", NULL);
+	    item->ref = xmlSchemaNewQNameRef(schema, XML_SCHEMA_TYPE_IDC_KEY,
+		NULL, NULL);		
+	    if (item->ref == NULL)	
 		return (NULL);
-	    }
-	    memset(item->ref, 0, sizeof(xmlSchemaItemQNRef));
 	    xmlSchemaPValAttrNodeQName(ctxt, schema,
 		NULL, NULL, attr, 
 		&(item->ref->targetNamespace), 0, 
 		&(item->ref->name));
-	    xmlSchemaCheckReference(ctxt, schema, node, (xmlSchemaTypePtr) item,
+	    xmlSchemaCheckReference(ctxt, schema, node,
+		(xmlSchemaBasicItemPtr) item,
 		item->ref->targetNamespace);
 	}
     }
@@ -6434,113 +7278,97 @@
 
     return (item);
 }
-#endif
 
 /**
  * xmlSchemaParseElement:
  * @ctxt:  a schema validation context
  * @schema:  the schema being built
  * @node:  a subtree containing XML Schema informations
+ * @topLevel: indicates if this is global declaration
  *
- * parse a XML schema Element declaration
+ * Parses a XML schema element declaration.
  * *WARNING* this interface is highly subject to change
  *
- * Returns the parsed element declaration.
+ * Returns the element declaration or a particle; NULL in case
+ * of an error or if the particle has minOccurs==maxOccurs==0.
  */
-static xmlSchemaElementPtr
+static xmlSchemaBasicItemPtr
 xmlSchemaParseElement(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
                       xmlNodePtr node, int topLevel)
-{
-    const xmlChar *name = NULL;    
-    const xmlChar *attrValue;
-    xmlChar *repName = NULL;
-    xmlSchemaElementPtr ret;
-    xmlNodePtr child = NULL;
-    const xmlChar *oldcontainer;    
-    xmlAttrPtr attr, nameAttr;
-    int minOccurs, maxOccurs;
-    int isRef = 0;
-#ifdef IDC_ENABLED
-    xmlSchemaIDCPtr curIDC = NULL, lastIDC = NULL;
-#endif
+{    
+    xmlSchemaElementPtr decl = NULL;
+    xmlSchemaParticlePtr particle = NULL;    
+    xmlSchemaAnnotPtr annot = NULL;
+    xmlNodePtr child = NULL;    
+    xmlAttrPtr attr, nameAttr;    
+    int min, max, isRef = 0;
+    xmlChar *des = NULL;
 
     /* 3.3.3 Constraints on XML Representations of Element Declarations */
     /* TODO: Complete implementation of 3.3.6 */
    
     if ((ctxt == NULL) || (schema == NULL) || (node == NULL))
-        return (NULL);
-
-    oldcontainer = ctxt->container;
-     
+        return (NULL);    
+    /*
+    * If we get a "ref" attribute on a local <element> we will assume it's
+    * a reference - even if there's a "name" attribute; this seems to be more 
+    * robust.
+    */
     nameAttr = xmlSchemaGetPropNode(node, "name");
     attr = xmlSchemaGetPropNode(node, "ref");   
     if ((topLevel) || (attr == NULL)) {
 	if (nameAttr == NULL) {
 	    xmlSchemaPMissingAttrErr(ctxt,
 		XML_SCHEMAP_S4S_ATTR_MISSING,
-		(xmlChar **) &xmlSchemaElemDesElemDecl, NULL, node,
-		"name", NULL);	    
+		NULL, NULL, node, "name", NULL);
 	    return (NULL);
-	}
-	name = xmlSchemaGetNodeContent(ctxt, (xmlNodePtr) nameAttr);		
-    } else {
+	}		
+    } else
 	isRef = 1;
-	
+
+    xmlSchemaPValAttrID(ctxt, NULL, NULL, node, BAD_CAST "id");    
+    child = node->children;
+    if (IS_SCHEMA(child, "annotation")) {
+	annot = xmlSchemaParseAnnotation(ctxt, schema, child);
+	child = child->next;
     }
-    /* 
-    * ... unless minOccurs=maxOccurs=0, in which case the item corresponds 
-    * to no component at all
-    * TODO: It might be better to validate the element, even if it won't be 
-    * used.
-    */    
-    minOccurs = xmlGetMinOccurs(ctxt, node, 0, -1, 1, "nonNegativeInteger");
-    maxOccurs = xmlGetMaxOccurs(ctxt, node, 0, UNBOUNDED, 1, "(nonNegativeInteger | unbounded)");
-    if ((minOccurs == 0) && (maxOccurs == 0))
-	return (NULL);
     /*
-    * If we get a "ref" attribute on a local <element> we will assume it's
-    * a reference - even if there's a "name" attribute; this seems to be more 
-    * robust.
+    * Skip particle part if a global declaration.
     */
-    if (isRef) {
-	char buf[50];
-	const xmlChar *refNs = NULL, *ref = NULL, *refPrefix;
+    if (topLevel)
+	goto declaration_part;
+    /*
+    * The particle part ==================================================
+    */    
+    min = xmlGetMinOccurs(ctxt, node, 0, -1, 1, "nonNegativeInteger");
+    max = xmlGetMaxOccurs(ctxt, node, 0, UNBOUNDED, 1, "(nonNegativeInteger | unbounded)");
+    xmlSchemaPCheckParticleCorrect_2(ctxt, NULL, node, min, max);        
+    particle = xmlSchemaAddParticle(ctxt, schema, node, min, max);
+    if (particle == NULL)
+	goto return_null;
+	
+    /* ret->flags |= XML_SCHEMAS_ELEM_REF; */
 
+    if (isRef) {	
+	const xmlChar *refNs = NULL, *ref = NULL;
+	xmlSchemaQNameRefPtr refer = NULL;
 	/*
-	* Parse as a particle.
+	* The reference part =============================================
 	*/
 	xmlSchemaPValAttrNodeQName(ctxt, schema,
-	    (xmlChar **) &xmlSchemaElemDesElemRef, 
-	    NULL, attr, &refNs, &refPrefix, &ref);			
-	 
-        snprintf(buf, 49, "#eRef%d", ctxt->counter++ + 1);
-	ret = xmlSchemaAddElement(ctxt, schema, (const xmlChar *) buf, NULL, node, 0);
-	if (ret == NULL) {
-	    if (repName != NULL)
-		xmlFree(repName);
-	    return (NULL);
-	}
-	ret->type = XML_SCHEMA_TYPE_ELEMENT;
-	ret->node = node;     		
-	ret->ref = ref;
-	ret->refNs = refNs;
-	ret->refPrefix = refPrefix;
-	ret->flags |= XML_SCHEMAS_ELEM_REF;
-	xmlSchemaCheckReference(ctxt, schema, node, (xmlSchemaTypePtr) ret, refNs);
+	    NULL, NULL, attr, &refNs, NULL, &ref);
+	xmlSchemaCheckReference(ctxt, schema, node, NULL, refNs);
 	/* 
-	* Check for illegal attributes.
+	* SPEC (3.3.3 : 2.1) "One of ref or name must be present, but not both" 
 	*/
-	/* 
-	* 3.3.3 : 2.1
-	* One of ref or name must be present, but not both 
-	*/
 	if (nameAttr != NULL) {
 	    xmlSchemaPMutualExclAttrErr(ctxt, 
 		XML_SCHEMAP_SRC_ELEMENT_2_1,
-		&repName, (xmlSchemaTypePtr) ret, nameAttr,
-		"ref", "name");
+		NULL, NULL, nameAttr, "ref", "name");
 	}
-	/* 3.3.3 : 2.2 */   
+	/* 
+	* Check for illegal attributes.
+	*/	
 	attr = node->properties;
 	while (attr != NULL) {
 	    if (attr->ns == NULL) {
@@ -6553,9 +7381,10 @@
 		    attr = attr->next;
 		    continue;
 		} else {
+		    /* SPEC (3.3.3 : 2.2) */
 		    xmlSchemaPCustomAttrErr(ctxt, 
 			XML_SCHEMAP_SRC_ELEMENT_2_2,
-			&repName, (xmlSchemaTypePtr) ret, attr, 
+			NULL, NULL, attr,
 			"Only the attributes 'minOccurs', 'maxOccurs' and "
 			"'id' are allowed in addition to 'ref'");
 		    break;
@@ -6563,20 +7392,47 @@
 	    } else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) {
 		xmlSchemaPIllegalAttrErr(ctxt,
 		    XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED,
-		    &repName, (xmlSchemaTypePtr) ret, attr);
+		    NULL, NULL, attr);
 	    }
 	    attr = attr->next;
-	}	      
-    } else {
-	const xmlChar *ns = NULL, *fixed;
-
+	}
 	/*
-	* Parse as an element declaration.
+	* No children except <annotation> expected.
 	*/
-	if (xmlSchemaPValAttrNode(ctxt, 
-	    (xmlChar **) &xmlSchemaElemDesElemDecl, NULL, nameAttr, 
+	if (child != NULL) {
+	    xmlSchemaPContentErr(ctxt, XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED,
+		NULL, NULL, node, child, NULL, "(annotation?)");
+	}
+	if ((min == 0) && (max == 0))
+	    goto return_null;
+	/*
+	* Create the reference item.
+	*/
+	refer = xmlSchemaNewQNameRef(schema, XML_SCHEMA_TYPE_ELEMENT,
+	    ref, refNs);
+	if (refer == NULL)
+	    goto return_null;
+	particle->children = (xmlSchemaTreeItemPtr) refer;
+	particle->annot = annot;
+	/*
+	* Add to assembled items; the reference need to be resolved.
+	*/
+	if (ctxt->assemble != NULL)	
+	    xmlSchemaAddAssembledItem(ctxt, (xmlSchemaTypePtr) particle);
+
+	return ((xmlSchemaBasicItemPtr) particle);
+    }
+    /*
+    * The declaration part ===============================================
+    */
+declaration_part:
+    {
+	const xmlChar *ns = NULL, *fixed, *name, *oldcontainer, *attrValue;
+	xmlSchemaIDCPtr curIDC = NULL, lastIDC = NULL;
+
+	if (xmlSchemaPValAttrNode(ctxt, NULL, NULL, nameAttr,
 	    xmlSchemaGetBuiltInType(XML_SCHEMAS_NCNAME), &name) != 0)
-	    return (NULL);
+	    goto return_null;
 	/* 
 	* Evaluate the target namespace.
 	*/
@@ -6591,22 +7447,20 @@
 		} else if (!xmlStrEqual(attrValue, BAD_CAST "unqualified")) {
 		    xmlSchemaPSimpleTypeErr(ctxt, 
 			XML_SCHEMAP_S4S_ATTR_INVALID_VALUE, 
-			&repName, NULL, (xmlNodePtr) attr, 
+			NULL, NULL, (xmlNodePtr) attr,
 			NULL, "(qualified | unqualified)", 
 			attrValue, NULL, NULL, NULL);			
 		}
 	    } else if (schema->flags & XML_SCHEMAS_QUALIF_ELEM)
 		ns = schema->targetNamespace;		
 	}	
-	ret = xmlSchemaAddElement(ctxt, schema, name, ns, node, topLevel);
-	if (ret == NULL) {
-	    if (repName != NULL)
-		xmlFree(repName);
-	    return (NULL);
+	decl = xmlSchemaAddElement(ctxt, schema, name, ns, node, topLevel);
+	if (decl == NULL) {	
+	    goto return_null;
 	}
-	ret->type = XML_SCHEMA_TYPE_ELEMENT;
-	ret->node = node;
-	ret->targetNamespace = ns;
+	decl->type = XML_SCHEMA_TYPE_ELEMENT;
+	decl->node = node;
+	decl->targetNamespace = ns;
 	/* 
 	* Check for illegal attributes.
 	*/
@@ -6633,16 +7487,15 @@
 				* TODO: This one is redundant, since the S4S does 
 				* prohibit this attribute on local declarations already; 
 				* so why an explicit error code? Weird spec.
-				* TODO: Move this to the proper constraint layer.
-				* TODO: Or better wait for spec 1.1 to come.
+				* TODO: Think about hanling this equal to the other attributes.
 				*/
 				xmlSchemaPIllegalAttrErr(ctxt,
 				    XML_SCHEMAP_E_PROPS_CORRECT_3,
-				    &repName, (xmlSchemaTypePtr) ret, attr);
+				    NULL, (xmlSchemaTypePtr) decl, attr);
 			    } else {
 				xmlSchemaPIllegalAttrErr(ctxt,
 				    XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED,
-				    &repName, (xmlSchemaTypePtr) ret, attr);
+				    NULL, (xmlSchemaTypePtr) decl, attr);
 			    }
 			}
 		    } else if ((!xmlStrEqual(attr->name, BAD_CAST "final")) && 
@@ -6651,14 +7504,14 @@
 
 			xmlSchemaPIllegalAttrErr(ctxt,
 			    XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED,
-			    &repName, (xmlSchemaTypePtr) ret, attr);		    
+			    NULL, (xmlSchemaTypePtr) decl, attr);		    
 		    }
 		}
 	    } else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) {
 		
 		xmlSchemaPIllegalAttrErr(ctxt,
 		    XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED,
-		    &repName, (xmlSchemaTypePtr) ret, attr);
+		    NULL, (xmlSchemaTypePtr) decl, attr);
 	    }
 	    attr = attr->next;
 	}		
@@ -6669,29 +7522,29 @@
 	    /* 
 	    * Process top attributes of global element declarations here.
 	    */
-	    ret->flags |= XML_SCHEMAS_ELEM_GLOBAL;
-	    ret->flags |= XML_SCHEMAS_ELEM_TOPLEVEL;
-	    xmlSchemaPValAttrQName(ctxt, schema, &repName, 
-		(xmlSchemaTypePtr) ret, node, "substitutionGroup", 
-		&(ret->substGroupNs), NULL, &(ret->substGroup));
-	    if (xmlGetBooleanProp(ctxt, &repName, (xmlSchemaTypePtr) ret,  
+	    decl->flags |= XML_SCHEMAS_ELEM_GLOBAL;
+	    decl->flags |= XML_SCHEMAS_ELEM_TOPLEVEL;
+	    xmlSchemaPValAttrQName(ctxt, schema, NULL, 
+		(xmlSchemaTypePtr) decl, node, "substitutionGroup", 
+		&(decl->substGroupNs), NULL, &(decl->substGroup));
+	    if (xmlGetBooleanProp(ctxt, NULL, (xmlSchemaTypePtr) decl,  
 		node, "abstract", 0))
-		ret->flags |= XML_SCHEMAS_ELEM_ABSTRACT; 
+		decl->flags |= XML_SCHEMAS_ELEM_ABSTRACT; 
 	    /*
 	    * Attribute "final".
 	    */
 	    attr = xmlSchemaGetPropNode(node, "final");	    
 	    if (attr == NULL) {
-		ret->flags |= XML_SCHEMAS_ELEM_FINAL_ABSENT;
+		decl->flags |= XML_SCHEMAS_ELEM_FINAL_ABSENT;
 	    } else {
 		attrValue = xmlSchemaGetNodeContent(ctxt, (xmlNodePtr) attr);	    
-		if (xmlSchemaPValAttrBlockFinal(attrValue, &(ret->flags), 
+		if (xmlSchemaPValAttrBlockFinal(attrValue, &(decl->flags), 
 		    -1,
 		    XML_SCHEMAS_ELEM_FINAL_EXTENSION,
 		    XML_SCHEMAS_ELEM_FINAL_RESTRICTION, -1, -1, -1) != 0) {
 		    xmlSchemaPSimpleTypeErr(ctxt, 
 			XML_SCHEMAP_S4S_ATTR_INVALID_VALUE,
-			&repName, (xmlSchemaTypePtr) ret, (xmlNodePtr) attr, 
+			NULL, (xmlSchemaTypePtr) decl, (xmlNodePtr) attr, 
 			NULL, "(#all | List of (extension | restriction))", 
 			attrValue, NULL, NULL, NULL);
 		}
@@ -6702,90 +7555,67 @@
 	*/
 	attr = xmlSchemaGetPropNode(node, "block");	
 	if (attr == NULL) {
-	    ret->flags |= XML_SCHEMAS_ELEM_BLOCK_ABSENT;
+	    decl->flags |= XML_SCHEMAS_ELEM_BLOCK_ABSENT;
 	} else {
 	    attrValue = xmlSchemaGetNodeContent(ctxt, (xmlNodePtr) attr);	    
-	    if (xmlSchemaPValAttrBlockFinal(attrValue, &(ret->flags), 
+	    if (xmlSchemaPValAttrBlockFinal(attrValue, &(decl->flags), 
 		-1,
 		XML_SCHEMAS_ELEM_BLOCK_EXTENSION,
 		XML_SCHEMAS_ELEM_BLOCK_RESTRICTION, 
 		XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION, -1, -1) != 0) {
 		xmlSchemaPSimpleTypeErr(ctxt,
 		    XML_SCHEMAP_S4S_ATTR_INVALID_VALUE,
-		    &repName, (xmlSchemaTypePtr) ret, (xmlNodePtr) attr,
+		    NULL, (xmlSchemaTypePtr) decl, (xmlNodePtr) attr,
 		    NULL, "(#all | List of (extension | "
 		    "restriction | substitution))", attrValue, 
 		    NULL, NULL, NULL);		
 	    }
 	}
-	if (xmlGetBooleanProp(ctxt, &repName, (xmlSchemaTypePtr) ret, 
+	if (xmlGetBooleanProp(ctxt, NULL, (xmlSchemaTypePtr) decl, 
 	    node, "nillable", 0))
-	    ret->flags |= XML_SCHEMAS_ELEM_NILLABLE;	
+	    decl->flags |= XML_SCHEMAS_ELEM_NILLABLE;	
 
 	xmlSchemaPValAttrQName(ctxt, schema, 
-	    &repName, (xmlSchemaTypePtr) ret, node, 
-	    "type", &(ret->namedTypeNs), NULL, &(ret->namedType));
+	    NULL, (xmlSchemaTypePtr) decl, node, 
+	    "type", &(decl->namedTypeNs), NULL, &(decl->namedType));
 
-	ret->value = xmlSchemaGetProp(ctxt, node, "default");    
+	decl->value = xmlSchemaGetProp(ctxt, node, "default");    
 	attr = xmlSchemaGetPropNode(node, "fixed");	
 	if (attr != NULL) {
 	    fixed = xmlSchemaGetNodeContent(ctxt, (xmlNodePtr) attr);
-	    if (ret->value != NULL) {
+	    if (decl->value != NULL) {
 		/* 
 		* 3.3.3 : 1 
 		* default and fixed must not both be present. 
 		*/
 		xmlSchemaPMutualExclAttrErr(ctxt,
 		    XML_SCHEMAP_SRC_ELEMENT_1,
-		    &repName, (xmlSchemaTypePtr) ret, attr,
+		    NULL, (xmlSchemaTypePtr) decl, attr,
 		    "default", "fixed");
 	    } else {
-		ret->flags |= XML_SCHEMAS_ELEM_FIXED;
-		ret->value = fixed;
+		decl->flags |= XML_SCHEMAS_ELEM_FIXED;
+		decl->value = fixed;
 	    }
-	}	
-    }     
-    /*
-    * Extract/validate common attributes.
-    */
-    xmlSchemaPValAttrID(ctxt, NULL, (xmlSchemaTypePtr) ret,
-	node, BAD_CAST "id");
-    ret->minOccurs = minOccurs;
-    ret->maxOccurs = maxOccurs; 
-    if (topLevel != 1)
-	xmlSchemaPCheckParticleCorrect_2(ctxt, (xmlSchemaTypePtr) ret, 
-	    node, minOccurs, maxOccurs);    
-    /*
-    * And now for the children...
-    */
-    ctxt->container = ret->name;
-    child = node->children;
-    if (IS_SCHEMA(child, "annotation")) {
-	ret->annot = xmlSchemaParseAnnotation(ctxt, schema, child);
-	child = child->next;
-    }
-    if (isRef) {
-	if (child != NULL) {
-	    xmlSchemaPContentErr(ctxt,
-		XML_SCHEMAP_SRC_ELEMENT_2_2,
-		&repName, (xmlSchemaTypePtr) ret, node, child, 
-		NULL, "(annotation?)");
 	}
-    } else {			
+	/*
+	* And now for the children...
+	*/
+	oldcontainer = ctxt->container;
+	ctxt->container = decl->name;
 	if (IS_SCHEMA(child, "complexType")) {
 	    /* 
 	    * 3.3.3 : 3 
 	    * "type" and either <simpleType> or <complexType> are mutually
 	    * exclusive 
 	    */
-	    if (ret->namedType != NULL) {
+	    if (decl->namedType != NULL) {
 		xmlSchemaPContentErr(ctxt,
 		    XML_SCHEMAP_SRC_ELEMENT_3,
-		    &repName, (xmlSchemaTypePtr) ret, node, child, 
+		    NULL, (xmlSchemaTypePtr) decl, node, child, 
 		    "The attribute 'type' and the <complexType> child are "
 		    "mutually exclusive", NULL);		
 	    } else
-		ret->subtypes = xmlSchemaParseComplexType(ctxt, schema, child, 0);
+		decl->subtypes = xmlSchemaParseComplexType(ctxt, schema, child, 0);
 	    child = child->next;
 	} else if (IS_SCHEMA(child, "simpleType")) {
 	    /* 
@@ -6793,59 +7623,66 @@
 	    * "type" and either <simpleType> or <complexType> are
 	    * mutually exclusive 
 	    */
-	    if (ret->namedType != NULL) {
+	    if (decl->namedType != NULL) {
 		xmlSchemaPContentErr(ctxt,
 		    XML_SCHEMAP_SRC_ELEMENT_3,
-		    &repName, (xmlSchemaTypePtr) ret, node, child, 
+		    NULL, (xmlSchemaTypePtr) decl, node, child, 
 		    "The attribute 'type' and the <simpleType> child are "
 		    "mutually exclusive", NULL);				
 	    } else
-		ret->subtypes = xmlSchemaParseSimpleType(ctxt, schema, child, 0);
+		decl->subtypes = xmlSchemaParseSimpleType(ctxt, schema, child, 0);
 	    child = child->next;
 	}	
 	while ((IS_SCHEMA(child, "unique")) ||
 	    (IS_SCHEMA(child, "key")) || (IS_SCHEMA(child, "keyref"))) {
-#ifdef IDC_ENABLED
 	    if (IS_SCHEMA(child, "unique")) {
 		curIDC = xmlSchemaParseIDC(ctxt, schema, child, 
-		    XML_SCHEMA_TYPE_IDC_UNIQUE, ret->targetNamespace);
+		    XML_SCHEMA_TYPE_IDC_UNIQUE, decl->targetNamespace);
 	    } else if (IS_SCHEMA(child, "key")) {
 		curIDC = xmlSchemaParseIDC(ctxt, schema, child,
-		    XML_SCHEMA_TYPE_IDC_KEY, ret->targetNamespace);
+		    XML_SCHEMA_TYPE_IDC_KEY, decl->targetNamespace);
 	    } else if (IS_SCHEMA(child, "keyref")) {
 		curIDC = xmlSchemaParseIDC(ctxt, schema, child,
-		    XML_SCHEMA_TYPE_IDC_KEYREF, ret->targetNamespace);
+		    XML_SCHEMA_TYPE_IDC_KEYREF, decl->targetNamespace);
 	    }
 	    if (lastIDC != NULL)
 		lastIDC->next = curIDC;
 	    else
-		ret->idcs = (void *) curIDC;
+		decl->idcs = (void *) curIDC;
 	    lastIDC = curIDC;
-#else
-	    TODO
-#endif
 	    child = child->next;
 	}
 	if (child != NULL) {
 	    xmlSchemaPContentErr(ctxt,
 		XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED,
-		&repName, (xmlSchemaTypePtr) ret, node, child, 
+		NULL, (xmlSchemaTypePtr) decl, node, child, 
 		NULL, "(annotation?, ((simpleType | complexType)?, "
 		"(unique | key | keyref)*))");
-	}		
-
+	}   
+	ctxt->container = oldcontainer;
+	decl->annot = annot;
     }
-    ctxt->container = oldcontainer;
     /*
-    * Cleanup.
-    */
-    if (repName != NULL)
-	xmlFree(repName);    
-    /*
     * NOTE: Element Declaration Representation OK 4. will be checked at a 
     * different layer.
     */
-    return (ret);
+    FREE_AND_NULL(des)
+    if (topLevel)
+	return ((xmlSchemaBasicItemPtr) decl);
+    else {
+	particle->children = (xmlSchemaTreeItemPtr) decl;
+	return ((xmlSchemaBasicItemPtr) particle);
+    }
+
+return_null:
+    FREE_AND_NULL(des)
+    if (annot != NULL)
+	xmlSchemaFreeAnnot(annot);
+    if (particle != NULL)
+	xmlSchemaFreeParticle(particle);
+    if (decl != NULL)
+	xmlSchemaFreeElement(decl);
+    return (NULL);
 }
 
 /**
@@ -6857,28 +7694,27 @@
  * parse a XML schema Union definition
  * *WARNING* this interface is highly subject to change
  *
- * Returns -1 in case of error, 0 if the declaration is improper and
- *         1 in case of success.
+ * Returns -1 in case of internal error, 0 in case of success and a positive
+ * error code otherwise.
  */
-static xmlSchemaTypePtr
+static int
 xmlSchemaParseUnion(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
                     xmlNodePtr node)
 {
-    xmlSchemaTypePtr type, subtype, last = NULL;
+    xmlSchemaTypePtr type;
     xmlNodePtr child = NULL;
-    xmlChar name[30];
     xmlAttrPtr attr;
+    const xmlChar *cur = NULL;
 
     if ((ctxt == NULL) || (schema == NULL) || (node == NULL))
-        return (NULL);
-
-    snprintf((char *) name, 30, "#union%d", ctxt->counter++ + 1);
-    type = xmlSchemaAddType(ctxt, schema, name, NULL, node);
-    if (type == NULL)
-        return (NULL);
-    type->type = XML_SCHEMA_TYPE_UNION;
-    type->node = node;
+        return (-1);
+    /* Not a component, don't create it. */
+    type = ctxt->ctxtType;
     /*
+    * Mark the simple type as being of variety "union".
+    */
+    type->flags |= XML_SCHEMAS_TYPE_VARIETY_UNION;
+    /*
     * Check for illegal attributes.
     */
     attr = node->properties;
@@ -6888,51 +7724,131 @@
 		(!xmlStrEqual(attr->name, BAD_CAST "memberTypes"))) {
 		xmlSchemaPIllegalAttrErr(ctxt, 
 		    XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
-		    NULL, type, attr);		    
+		    NULL, NULL, attr);		    
 	    }
 	} else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) {
 	    xmlSchemaPIllegalAttrErr(ctxt, 
 		XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
-		NULL, type, attr);		
+		NULL, NULL, attr);		
 	}
 	attr = attr->next;
     }	
     xmlSchemaPValAttrID(ctxt, NULL, NULL, node, BAD_CAST "id");
     /*
     * Attribute "memberTypes". This is a list of QNames.
-    * TODO: Validate the QNames.
+    * TODO: Check the value to contain anything.
     */
-    type->base = xmlSchemaGetProp(ctxt, node, "memberTypes");
+    attr = xmlSchemaGetPropNode(node, "memberTypes");    
+    if (attr != NULL) {
+	const xmlChar *end;
+	xmlChar *tmp;
+	const xmlChar *localName, *nsName;
+	xmlSchemaTypeLinkPtr link, lastLink = NULL;
+	xmlSchemaQNameRefPtr ref;
+
+	cur = xmlSchemaGetNodeContent(ctxt, (xmlNodePtr) attr);
+	type->ref = cur;	
+	do {
+	    while (IS_BLANK_CH(*cur))
+		cur++;
+	    end = cur;
+	    while ((*end != 0) && (!(IS_BLANK_CH(*end))))
+		end++;
+	    if (end == cur)
+		break;
+	    tmp = xmlStrndup(cur, end - cur);
+	    if (xmlSchemaPValAttrNodeQNameValue(ctxt, schema, NULL, 
+		NULL, attr, BAD_CAST tmp, &nsName, NULL, &localName) == 0) { 
+		/*
+		* Create the member type link.
+		*/
+		link = (xmlSchemaTypeLinkPtr)
+		    xmlMalloc(sizeof(xmlSchemaTypeLink));
+		if (link == NULL) {
+		    xmlSchemaPErrMemory(ctxt, "xmlSchemaParseUnion, "
+			"allocating a type link", NULL);
+		    return (-1);
+		}
+		link->type = NULL;
+		link->next = NULL;
+		if (lastLink == NULL)
+		    type->memberTypes = link;
+		else 
+		    lastLink->next = link;
+		lastLink = link;
+		/*
+		* Create a reference item.
+		*/
+		ref = xmlSchemaNewQNameRef(schema, XML_SCHEMA_TYPE_SIMPLE,
+		    localName, nsName);
+		if (ref == NULL) {
+		    FREE_AND_NULL(tmp)
+		    return (-1);
+		}
+		/*
+		* Assign the reference to the link, it will be resolved
+		* later during fixup of the union simple type.
+		*/
+		link->type = (xmlSchemaTypePtr) ref;
+	    }
+	    FREE_AND_NULL(tmp)
+	    cur = end;
+	} while (*cur != 0); 
+
+    }    
     /*
     * And now for the children...
     */
     child = node->children;
     if (IS_SCHEMA(child, "annotation")) {
-        type->annot = xmlSchemaParseAnnotation(ctxt, schema, child);
+	/*
+	* Add the annotation to the simple type ancestor.
+	*/
+	xmlSchemaAddAnnotation((xmlSchemaAnnotItemPtr) type,
+	    xmlSchemaParseAnnotation(ctxt, schema, child));
         child = child->next;
     }
-    while (IS_SCHEMA(child, "simpleType")) {	
-        subtype = (xmlSchemaTypePtr)
-            xmlSchemaParseSimpleType(ctxt, schema, child, 0);
-        if (subtype != NULL) {
-            if (last == NULL) {
-                type->subtypes = subtype;
-                last = subtype;
-            } else {
-                last->next = subtype;
-                last = subtype;
-            }
-            last->next = NULL;
-        }
-        child = child->next;
+    if (IS_SCHEMA(child, "simpleType")) {
+	xmlSchemaTypePtr subtype, last = NULL;
+
+	/*
+	* Anchor the member types in the "subtypes" field of the
+	* simple type.
+	*/
+	while (IS_SCHEMA(child, "simpleType")) {	
+	    subtype = (xmlSchemaTypePtr)
+		xmlSchemaParseSimpleType(ctxt, schema, child, 0);
+	    if (subtype != NULL) {
+		if (last == NULL) {
+		    type->subtypes = subtype;
+		    last = subtype;
+		} else {
+		    last->next = subtype;
+		    last = subtype;
+		}
+		last->next = NULL;
+	    }
+	    child = child->next;
+	}
     }
     if (child != NULL) {
-	/* TODO: Think about the error code. */
 	xmlSchemaPContentErr(ctxt,
-	    XML_SCHEMAP_UNKNOWN_UNION_CHILD, 
-	    NULL, type, node, child, NULL, "(annotation?, simpleType*)");
-    }
-    return (type);
+	    XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, 
+	    NULL, NULL, node, child, NULL, "(annotation?, simpleType*)");
+    }   
+    if ((attr == NULL) && (type->subtypes == NULL)) {
+	 /*
+	* src-union-memberTypes-or-simpleTypes
+	* Either the memberTypes [attribute] of the <union> element must 
+	* be non-empty or there must be at least one simpleType [child]. 
+	*/
+	xmlSchemaPCustomErr(ctxt, 
+	    XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES,
+	    NULL, NULL, node,
+	    "Either the attribute 'memberTypes' or "
+	    "at least one <simpleType> child must be present", NULL);
+    } 
+    return (0);
 }
 
 /**
@@ -6951,22 +7867,19 @@
 xmlSchemaParseList(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
                    xmlNodePtr node)
 {
-    xmlSchemaTypePtr type, subtype;
+    xmlSchemaTypePtr type;
     xmlNodePtr child = NULL;
-    xmlChar name[30];
     xmlAttrPtr attr;
 
     if ((ctxt == NULL) || (schema == NULL) || (node == NULL))
         return (NULL);
-
-    snprintf((char *) name, 30, "#list%d", ctxt->counter++ + 1);
-    type = xmlSchemaAddType(ctxt, schema, name, NULL, node);
-    if (type == NULL)
-        return (NULL);
-    type->node = node;
-    type->type = XML_SCHEMA_TYPE_LIST;
-    xmlSchemaPValAttrID(ctxt, NULL, NULL, node, BAD_CAST "id");
+    /* Not a component, don't create it. */
+    type = ctxt->ctxtType;
     /*
+    * Mark the type as being of variety "list".
+    */
+    type->flags |= XML_SCHEMAS_TYPE_VARIETY_LIST;
+    /*
     * Check for illegal attributes.
     */
     attr = node->properties;
@@ -6976,50 +7889,71 @@
 		(!xmlStrEqual(attr->name, BAD_CAST "itemType"))) {
 		xmlSchemaPIllegalAttrErr(ctxt, 
 		    XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
-		    NULL, type, attr);		    
+		    NULL, NULL, attr);		    
 	    }
 	} else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) {
 	    xmlSchemaPIllegalAttrErr(ctxt, 
 		XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
-		NULL, type, attr);		
+		NULL, NULL, attr);		
 	}
 	attr = attr->next;
     }	
+
+    xmlSchemaPValAttrID(ctxt, NULL, NULL, node, BAD_CAST "id");
+
     /*
-    * Attribute "itemType".
+    * Attribute "itemType". NOTE that we will use the "ref" and "refNs"
+    * fields for holding the reference to the itemType.
     */
     xmlSchemaPValAttrQName(ctxt, schema, NULL, NULL,
-	node, "itemType", &(type->baseNs), NULL, &(type->base));
+	node, "itemType", &(type->refNs), NULL, &(type->ref));
     /*
     * And now for the children...
     */
     child = node->children;
     if (IS_SCHEMA(child, "annotation")) {
-        type->annot = xmlSchemaParseAnnotation(ctxt, schema, child);
+	xmlSchemaAddAnnotation((xmlSchemaAnnotItemPtr) type,
+	    xmlSchemaParseAnnotation(ctxt, schema, child));
         child = child->next;
     }    	
-    subtype = NULL;
     if (IS_SCHEMA(child, "simpleType")) {
-	if (type->base != NULL) {
+	/*
+	* src-list-itemType-or-simpleType
+	* Either the itemType [attribute] or the <simpleType> [child] of 
+	* the <list> element must be present, but not both. 
+	*/
+	if (type->ref != NULL) {
 	    xmlSchemaPCustomErr(ctxt, 
 		XML_SCHEMAP_SRC_SIMPLE_TYPE_1,
-		NULL, type, node, 
+		NULL, NULL, node, 
 		"The attribute 'itemType' and the <simpleType> child "
-		"are mutually exclusive", NULL);	    
+		"are mutually exclusive", NULL);
 	} else {	
-	    subtype = (xmlSchemaTypePtr)
-		xmlSchemaParseSimpleType(ctxt, schema, child, 0);
-	    type->subtypes = subtype;
+	    type->subtypes = xmlSchemaParseSimpleType(ctxt, schema, child, 0);
 	}
         child = child->next;        
+    } else if (type->ref == NULL) {
+	xmlSchemaPCustomErr(ctxt, 
+	    XML_SCHEMAP_SRC_SIMPLE_TYPE_1,
+	    NULL, NULL, node, 
+	    "Either the attribute 'itemType' or the <simpleType> child "
+	    "must be present", NULL);
     }
     if (child != NULL) {
-	/* TODO: Think about the error code. */
 	xmlSchemaPContentErr(ctxt,
-	    XML_SCHEMAP_UNKNOWN_LIST_CHILD, 
-	    NULL, type, node, child, NULL, "(annotation?, simpleType?)");
+	    XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, 
+	    NULL, NULL, node, child, NULL, "(annotation?, simpleType?)");
     }
-    return (type);
+    if ((type->ref == NULL) &&
+	(type->subtypes == NULL) &&
+	(xmlSchemaGetPropNode(node, "itemType") == NULL)) {
+	xmlSchemaPCustomErr(ctxt, 
+	    XML_SCHEMAP_SRC_SIMPLE_TYPE_1,
+	    NULL, NULL, node, 
+	    "Either the attribute 'itemType' or the <simpleType> child "
+	    "must be present", NULL);
+    }
+    return (NULL);
 }
 
 /**
@@ -7038,10 +7972,9 @@
 xmlSchemaParseSimpleType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
                          xmlNodePtr node, int topLevel)
 {
-    xmlSchemaTypePtr type, subtype, oldCtxtType, oldParentItem;
+    xmlSchemaTypePtr type, oldCtxtType, oldParentItem;
     xmlNodePtr child = NULL;
     const xmlChar *attrValue = NULL;
-    xmlChar *des = NULL;
     xmlAttrPtr attr;
 
     if ((ctxt == NULL) || (schema == NULL) || (node == NULL))
@@ -7052,11 +7985,11 @@
 	if (attr == NULL) {
 	    xmlSchemaPMissingAttrErr(ctxt, 
 		XML_SCHEMAP_S4S_ATTR_MISSING, 
-		(xmlChar **) &xmlSchemaElemDesST, NULL, node,
+		NULL, NULL, node,
 		"name", NULL);
 	    return (NULL);
 	} else if (xmlSchemaPValAttrNode(ctxt, 
-	    (xmlChar **) &xmlSchemaElemDesST, NULL, attr, 
+	    NULL, NULL, attr, 
 	    xmlSchemaGetBuiltInType(XML_SCHEMAS_NCNAME), &attrValue) != 0) {
 	    return (NULL);
 	}
@@ -7083,12 +8016,12 @@
 		if (!xmlStrEqual(attr->name, BAD_CAST "id")) {
 		    xmlSchemaPIllegalAttrErr(ctxt, 
 			XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
-			&des, type, attr);		    
+			NULL, type, attr);		    
 		}
 	    } else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) {
 		    xmlSchemaPIllegalAttrErr(ctxt, 
 			XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
-			&des, type, attr);	
+			NULL, type, attr);	
 	    }
 	    attr = attr->next;
 	}
@@ -7115,12 +8048,12 @@
 		    (!xmlStrEqual(attr->name, BAD_CAST "final"))) {
 		    xmlSchemaPIllegalAttrErr(ctxt, 
 			XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
-			&des, type, attr);	
+			NULL, type, attr);	
 		}
 	    } else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) {
 		xmlSchemaPIllegalAttrErr(ctxt, 
 		    XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
-		    &des, type, attr);	
+		    NULL, type, attr);	
 	    }
 	    attr = attr->next;
 	}
@@ -7139,7 +8072,7 @@
 
 		xmlSchemaPSimpleTypeErr(ctxt, 
 		    XML_SCHEMAP_S4S_ATTR_INVALID_VALUE,
-		    &des, type, (xmlNodePtr) attr, 
+		    NULL, type, (xmlNodePtr) attr, 
 		    NULL, "(#all | List of (list | union | restriction)", 
 		    attrValue, NULL, NULL, NULL);
 	    }
@@ -7159,285 +8092,222 @@
         type->annot = xmlSchemaParseAnnotation(ctxt, schema, child);
         child = child->next;
     }
-    subtype = NULL;         
-    if (IS_SCHEMA(child, "restriction")) {
-        subtype = (xmlSchemaTypePtr)
-            xmlSchemaParseRestriction(ctxt, schema, child);
+    if (child == NULL) {
+	xmlSchemaPContentErr(ctxt, XML_SCHEMAP_S4S_ELEM_MISSING, 
+	    NULL, type, node, child, NULL, 
+	    "(annotation?, (restriction | list | union))");
+    } else if (IS_SCHEMA(child, "restriction")) {
+        xmlSchemaParseRestriction(ctxt, schema, child,
+		XML_SCHEMA_TYPE_SIMPLE);
         child = child->next;
-    } else if (IS_SCHEMA(child, "list")) {
-        subtype = (xmlSchemaTypePtr)
-            xmlSchemaParseList(ctxt, schema, child);
+    } else if (IS_SCHEMA(child, "list")) {        
+        xmlSchemaParseList(ctxt, schema, child);
         child = child->next;
-    } else if (IS_SCHEMA(child, "union")) {
-        subtype = (xmlSchemaTypePtr)
-            xmlSchemaParseUnion(ctxt, schema, child);
+    } else if (IS_SCHEMA(child, "union")) {        
+        xmlSchemaParseUnion(ctxt, schema, child);
         child = child->next;
     }
-    type->subtypes = subtype;    
-    if ((child != NULL) || (subtype == NULL)) {
+    if (child != NULL) {
 	xmlSchemaPContentErr(ctxt, XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, 
-	    &des, type, node, child, NULL, 
+	    NULL, type, node, child, NULL, 
 	    "(annotation?, (restriction | list | union))");
     }
     ctxt->parentItem = oldParentItem;
     ctxt->ctxtType = oldCtxtType;
-    FREE_AND_NULL(des)
 
     return (type);
 }
 
-
 /**
- * xmlSchemaParseGroup:
+ * xmlSchemaParseModelGroupDefRef:
  * @ctxt:  a schema validation context
  * @schema:  the schema being built
  * @node:  a subtree containing XML Schema informations
  *
- * parse a XML schema Group definition
+ * Parses a XML schema particle (reference to a model group definition).
  * *WARNING* this interface is highly subject to change
  *
  * Returns -1 in case of error, 0 if the declaration is improper and
  *         1 in case of success.
  */
-static xmlSchemaTypePtr
-xmlSchemaParseGroup(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
-                    xmlNodePtr node, int topLevel)
+static xmlSchemaTreeItemPtr
+xmlSchemaParseModelGroupDefRef(xmlSchemaParserCtxtPtr ctxt,
+			       xmlSchemaPtr schema,
+			       xmlNodePtr node)
 {
-    xmlSchemaTypePtr item;
+    xmlSchemaParticlePtr item;
     xmlNodePtr child = NULL;    
     xmlAttrPtr attr;
+    const xmlChar *ref = NULL, *refNs = NULL;
+    int min, max;
 
     if ((ctxt == NULL) || (schema == NULL) || (node == NULL))
-        return (NULL);    
+        return (NULL);        
 
-    if (topLevel) {
-	const xmlChar *name;
-	/*
-	* Parse as model group definition.
-	*/
-	attr = xmlSchemaGetPropNode(node, "name");
-	if (attr == NULL) {
-	    xmlSchemaPMissingAttrErr(ctxt, 
-		XML_SCHEMAP_S4S_ATTR_MISSING, 
-		NULL, NULL, node,
-		"name", NULL);
-	    return (NULL);
-	} else if (xmlSchemaPValAttrNode(ctxt, 
-	    NULL, NULL, attr, 
-	    xmlSchemaGetBuiltInType(XML_SCHEMAS_NCNAME), &name) != 0) {
-	    return (NULL);
-	}
-	item = xmlSchemaAddGroup(ctxt, schema, name,
-	    schema->targetNamespace, node);
-	if (item == NULL)
-	    return (NULL);
-	item->node = node;
-	item->type = XML_SCHEMA_TYPE_GROUP;
-	item->flags |= XML_SCHEMAS_TYPE_GLOBAL;
-	/*
-	* Check for illegal attributes.
-	*/
-	attr = node->properties;
-	while (attr != NULL) {
-	    if (attr->ns == NULL) {
-		if ((!xmlStrEqual(attr->name, BAD_CAST "name")) && 
-		    (!xmlStrEqual(attr->name, BAD_CAST "id"))) {
-		    xmlSchemaPIllegalAttrErr(ctxt, 
-			XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
-			NULL, item, attr);		    
-		}
-	    } else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) {
-		    xmlSchemaPIllegalAttrErr(ctxt, 
-			XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
-			NULL, item, attr);	
+    attr = xmlSchemaGetPropNode(node, "ref");
+    if (attr == NULL) {
+	xmlSchemaPMissingAttrErr(ctxt, 
+	    XML_SCHEMAP_S4S_ATTR_MISSING, 
+	    NULL, NULL, node,
+	    "ref", NULL);
+	return (NULL);
+    } else if (xmlSchemaPValAttrNodeQName(ctxt, schema, NULL, NULL,
+	attr, &refNs, NULL, &ref) != 0) {
+	return (NULL);
+    }    
+    min = xmlGetMinOccurs(ctxt, node, 0, -1, 1, "nonNegativeInteger");
+    max = xmlGetMaxOccurs(ctxt, node, 0, UNBOUNDED, 1,
+	"(nonNegativeInteger | unbounded)");
+    /*
+    * Check for illegal attributes.
+    */
+    attr = node->properties;
+    while (attr != NULL) {
+	if (attr->ns == NULL) {
+	    if ((!xmlStrEqual(attr->name, BAD_CAST "ref")) && 
+		(!xmlStrEqual(attr->name, BAD_CAST "id")) &&
+		(!xmlStrEqual(attr->name, BAD_CAST "minOccurs")) &&
+		(!xmlStrEqual(attr->name, BAD_CAST "maxOccurs"))) {
+		xmlSchemaPIllegalAttrErr(ctxt, 
+		    XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
+		    NULL, NULL, attr);		    
 	    }
-	    attr = attr->next;
+	} else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) {
+	    xmlSchemaPIllegalAttrErr(ctxt, 
+		XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
+		NULL, NULL, attr);	
 	}
-	xmlSchemaPValAttrID(ctxt, NULL, item, node, BAD_CAST "id");
+	attr = attr->next;
+    }
+    xmlSchemaPValAttrID(ctxt, NULL, NULL, node, BAD_CAST "id");    
+    item = xmlSchemaAddParticle(ctxt, schema, node, min, max);
+    if (item == NULL)
+	return (NULL);    
+    /*
+    * Create a reference item as the term; it will be substituted for
+    * the model group after the reference has been resolved.
+    */    
+    item->children = (xmlSchemaTreeItemPtr) 
+	xmlSchemaNewQNameRef(schema, XML_SCHEMA_TYPE_GROUP, ref, refNs);
+    xmlSchemaCheckReference(ctxt, schema, node, (xmlSchemaBasicItemPtr) item, refNs);
+    xmlSchemaPCheckParticleCorrect_2(ctxt, item, node, min, max);
+    /*
+    * And now for the children...
+    */
+    child = node->children;
+    /* TODO: Is annotation even allowed for a model group reference? */
+    if (IS_SCHEMA(child, "annotation")) {
 	/*
-	* And now for the children...
-	*/    
-	child = node->children;
-	if (IS_SCHEMA(child, "annotation")) {
-	    item->annot = xmlSchemaParseAnnotation(ctxt, schema, child);
-	    child = child->next;
-	}
-	if (IS_SCHEMA(child, "all")) {
-	    item->subtypes = (xmlSchemaTypePtr)
-		xmlSchemaParseAll(ctxt, schema, child);
-	    child = child->next;
-	} else if (IS_SCHEMA(child, "choice")) {
-	    item->subtypes = xmlSchemaParseChoice(ctxt, schema, child);
-	    child = child->next;
-	} else if (IS_SCHEMA(child, "sequence")) {
-	    item->subtypes = xmlSchemaParseSequence(ctxt, schema, child);
-	    child = child->next;
-	}
-	if (child != NULL) {
-	    xmlSchemaPContentErr(ctxt,
-		XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, 
-		NULL, item, node, child, NULL, 
-		"(annotation?, (all | choice | sequence)?)");
-	}
-    } else {
-	const xmlChar *ref = NULL, *refNs = NULL, *refPrefix = NULL;
-	int minOccurs, maxOccurs;
-	char buf[40];
-
-	/*
-	* Parse as particle.
+	* TODO: What to do exactly with the annotation? 
 	*/
-	attr = xmlSchemaGetPropNode(node, "ref");
-	if (attr == NULL) {
-	    xmlSchemaPMissingAttrErr(ctxt, 
-		XML_SCHEMAP_S4S_ATTR_MISSING, 
-		NULL, NULL, node,
-		"ref", NULL);
-	    return (NULL);
-	} else if (xmlSchemaPValAttrNodeQName(ctxt, schema, NULL, NULL,
-	    attr, &refNs, &refPrefix, &ref) != 0) {
-	    return (NULL);
-	}
-
-	/*
-	* TODO: Validate the element even if no item is created 
-	* (i.e. min/maxOccurs == 0).
-	*/
-	minOccurs = xmlGetMinOccurs(ctxt, node, 0, -1, 1, "nonNegativeInteger");
-	maxOccurs = xmlGetMaxOccurs(ctxt, node, 0, UNBOUNDED, 1,
-	    "(nonNegativeInteger | unbounded)");
-	if ((minOccurs == 0) && (maxOccurs == 0)) {
-	    return (NULL);
-	}
-
-        snprintf(buf, 39, "#grRef%d", ctxt->counter++ + 1);
-	item = xmlSchemaAddGroup(ctxt, schema, (const xmlChar *)buf, NULL, node);
-	if (item == NULL)
-	    return (NULL);
-	item->node = node;
-	item->type = XML_SCHEMA_TYPE_GROUP;
-	item->ref = ref;
-	item->refNs = refNs;
-	xmlSchemaCheckReference(ctxt, schema, node, item, refNs);
-	item->minOccurs = minOccurs;
-	item->maxOccurs = maxOccurs;
-	xmlSchemaPCheckParticleCorrect_2(ctxt, item,
-	    node, item->minOccurs, item->maxOccurs);
-	/*
-	* Check for illegal attributes.
-	*/
-	attr = node->properties;
-	while (attr != NULL) {
-	    if (attr->ns == NULL) {
-		if ((!xmlStrEqual(attr->name, BAD_CAST "ref")) && 
-		    (!xmlStrEqual(attr->name, BAD_CAST "id")) &&
-		    (!xmlStrEqual(attr->name, BAD_CAST "minOccurs")) &&
-		    (!xmlStrEqual(attr->name, BAD_CAST "maxOccurs"))) {
-		    xmlSchemaPIllegalAttrErr(ctxt, 
-			XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
-			NULL, item, attr);		    
-		}
-	    } else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) {
-		    xmlSchemaPIllegalAttrErr(ctxt, 
-			XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
-			NULL, item, attr);	
-	    }
-	    attr = attr->next;
-	}
-	xmlSchemaPValAttrID(ctxt, NULL, item, node, BAD_CAST "id");
-	/*
-	* And now for the children...
-	*/
-	child = node->children;
-	if (IS_SCHEMA(child, "annotation")) {
-	    item->annot = xmlSchemaParseAnnotation(ctxt, schema, child);
-	    child = child->next;
-	}
-	if (child != NULL) {
-	    xmlSchemaPContentErr(ctxt,
-		XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, 
-		NULL, item, node, child, NULL, 
-		"(annotation?, (all | choice | sequence)?)");
-	}
+	item->annot = xmlSchemaParseAnnotation(ctxt, schema, child);
+	child = child->next;
     }
-    
-    return (item);
+    if (child != NULL) {
+	xmlSchemaPContentErr(ctxt,
+	    XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, 
+	    NULL, NULL, node, child, NULL,
+	    "(annotation?)");
+    }
+    /*
+    * Corresponds to no component at all if minOccurs==maxOccurs==0.
+    */
+    if ((min == 0) && (max == 0))
+	return (NULL);
+    if (ctxt->assemble != NULL)	
+	xmlSchemaAddAssembledItem(ctxt, (xmlSchemaTypePtr) item);
+    return ((xmlSchemaTreeItemPtr) item);
 }
 
 /**
- * xmlSchemaParseAll:
+ * xmlSchemaParseModelGroupDefinition:
  * @ctxt:  a schema validation context
  * @schema:  the schema being built
  * @node:  a subtree containing XML Schema informations
  *
- * parse a XML schema All definition
+ * Parses a XML schema model group definition.
  * *WARNING* this interface is highly subject to change
  *
  * Returns -1 in case of error, 0 if the declaration is improper and
  *         1 in case of success.
  */
-static xmlSchemaTypePtr
-xmlSchemaParseAll(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
-                  xmlNodePtr node)
+static xmlSchemaModelGroupDefPtr
+xmlSchemaParseModelGroupDefinition(xmlSchemaParserCtxtPtr ctxt,
+				   xmlSchemaPtr schema,
+				   xmlNodePtr node)
 {
-    xmlSchemaTypePtr type, subtype, last = NULL;
-    xmlNodePtr child = NULL;
-    xmlChar name[30];
-    const xmlChar *oldcontainer;
+    xmlSchemaModelGroupDefPtr item;
+    xmlNodePtr child = NULL;    
+    xmlAttrPtr attr;
+    const xmlChar *name;
 
     if ((ctxt == NULL) || (schema == NULL) || (node == NULL))
-        return (NULL);
-
-
-    snprintf((char *) name, 30, "#all%d", ctxt->counter++ + 1);
-    type = xmlSchemaAddType(ctxt, schema, name, NULL, node);
-    if (type == NULL)
-        return (NULL);
-    type->node = node;
-    type->type = XML_SCHEMA_TYPE_ALL;
-
+        return (NULL);    
+ 
+    attr = xmlSchemaGetPropNode(node, "name");
+    if (attr == NULL) {
+	xmlSchemaPMissingAttrErr(ctxt, 
+	    XML_SCHEMAP_S4S_ATTR_MISSING, 
+	    NULL, NULL, node,
+	    "name", NULL);
+	return (NULL);
+    } else if (xmlSchemaPValAttrNode(ctxt, 
+	NULL, NULL, attr, 
+	xmlSchemaGetBuiltInType(XML_SCHEMAS_NCNAME), &name) != 0) {
+	return (NULL);
+    }
+    item = xmlSchemaAddGroup(ctxt, schema, name, schema->targetNamespace, node);
+    if (item == NULL)
+	return (NULL);    
+    /*
+    * Check for illegal attributes.
+    */
+    attr = node->properties;
+    while (attr != NULL) {
+	if (attr->ns == NULL) {
+	    if ((!xmlStrEqual(attr->name, BAD_CAST "name")) && 
+		(!xmlStrEqual(attr->name, BAD_CAST "id"))) {
+		xmlSchemaPIllegalAttrErr(ctxt, 
+		    XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
+		    NULL, NULL, attr);		    
+	    }
+	} else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) {
+	    xmlSchemaPIllegalAttrErr(ctxt, 
+		XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
+		NULL, NULL, attr);	
+	}
+	attr = attr->next;
+    }
     xmlSchemaPValAttrID(ctxt, NULL, NULL, node, BAD_CAST "id");
-
-    type->minOccurs = xmlGetMinOccurs(ctxt, node, 0, 1, 1, "(0 | 1)");
-    type->maxOccurs = xmlGetMaxOccurs(ctxt, node, 1, 1, 1, "1");    
-    
-    oldcontainer = ctxt->container;
-    ctxt->container = (const xmlChar *) name;
+    /*
+    * And now for the children...
+    */    
     child = node->children;
     if (IS_SCHEMA(child, "annotation")) {
-        type->annot = xmlSchemaParseAnnotation(ctxt, schema, child);
-        child = child->next;
+	item->annot = xmlSchemaParseAnnotation(ctxt, schema, child);
+	child = child->next;
     }
-    while (IS_SCHEMA(child, "element")) {
-        subtype = (xmlSchemaTypePtr)
-            xmlSchemaParseElement(ctxt, schema, child, 0);
-        if (subtype != NULL) {
-	    if (subtype->minOccurs > 1)
-                xmlSchemaPErr(ctxt, child, XML_SCHEMAP_INVALID_MINOCCURS,
-	             "invalid value for minOccurs (must be 0 or 1).\n",
-		     NULL, NULL);
-	    if (subtype->maxOccurs > 1)
-	        xmlSchemaPErr(ctxt, child, XML_SCHEMAP_INVALID_MAXOCCURS,
-	             "invalid value for maxOccurs (must be 0 or 1).\n",
-		     NULL, NULL);
-            if (last == NULL) {
-                type->subtypes = subtype;
-                last = subtype;
-            } else {
-                last->next = subtype;
-                last = subtype;
-            }
-            last->next = NULL;
-        }
-        child = child->next;
+    if (IS_SCHEMA(child, "all")) {
+	item->children = xmlSchemaParseModelGroup(ctxt, schema, child,
+	    XML_SCHEMA_TYPE_ALL, 0);
+	child = child->next;
+    } else if (IS_SCHEMA(child, "choice")) {
+	item->children = xmlSchemaParseModelGroup(ctxt, schema, child,
+	    XML_SCHEMA_TYPE_CHOICE, 0);
+	child = child->next;
+    } else if (IS_SCHEMA(child, "sequence")) {
+	item->children = xmlSchemaParseModelGroup(ctxt, schema, child,
+	    XML_SCHEMA_TYPE_SEQUENCE, 0);
+	child = child->next;
     }
     if (child != NULL) {
-        xmlSchemaPErr2(ctxt, node, child, XML_SCHEMAP_UNKNOWN_ALL_CHILD,
-                       "<all> has unexpected content.\n", type->name,
-                       NULL);
+	xmlSchemaPContentErr(ctxt,
+	    XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, 
+	    NULL, NULL, node, child, NULL, 
+	    "(annotation?, (all | choice | sequence)?)");
     }
-    ctxt->container = oldcontainer;
-    return (type);
+    
+    return (item);
 }
 
 /**
@@ -7740,7 +8610,7 @@
 	    xmlSchemaParseAttributeGroup(ctxt, schema, child, 1);
 	    child = child->next;
 	} else if (IS_SCHEMA(child, "group")) {
-	    xmlSchemaParseGroup(ctxt, schema, child, 1);
+	    xmlSchemaParseModelGroupDefinition(ctxt, schema, child);
 	    child = child->next;
 	} else if (IS_SCHEMA(child, "notation")) {
 	    xmlSchemaParseNotation(ctxt, schema, child);
@@ -8147,6 +9017,7 @@
     if (IS_SCHEMA(child, "annotation")) {
         /*
          * the annotation here is simply discarded ...
+	 * TODO: really?
          */
         child = child->next;
     }
@@ -8315,6 +9186,7 @@
     while (IS_SCHEMA(child, "annotation")) {
         /*
          * the annotations here are simply discarded ...
+	 * TODO: really?
          */
         child = child->next;
     }
@@ -8350,15 +9222,9 @@
 		*/
 		if (xmlStrEqual(schema->targetNamespace,
 		    include->targetNamespace)) {
-		    fprintf(stderr, "already included chameleon '%s', TNS '%s'\n",
-			include->schemaLocation,
-			include->origTargetNamespace);
 		    goto check_targetNamespace;
 		}
 	    } else {
-		fprintf(stderr, "already included '%s', TNS '%s'\n",
-		    include->schemaLocation,
-		    include->origTargetNamespace);
 		goto check_targetNamespace;
 	    }
 	}
@@ -8497,6 +9363,17 @@
     */
     include->origTargetNamespace = targetNamespace;
     include->targetNamespace = schema->targetNamespace;
+#ifdef DEBUG_INCLUDES
+    if (targetNamespace != schema->targetNamespace) 
+	xmlGenericError(xmlGenericErrorContext,
+	    "INCLUDING CHAMELEON '%s'\n  orig TNS '%s'\n"
+	    "  into TNS '%s'\n", schemaLocation,
+	    targetNamespace, schema->targetNamespace);
+    else
+	xmlGenericError(xmlGenericErrorContext,
+	    "INCLUDING '%s'\n  orig-TNS '%s'\n", schemaLocation,
+	    targetNamespace);
+#endif
     /*
     * Compile the included schema.
     */
@@ -8526,226 +9403,193 @@
 	xmlFreeDoc(doc);
     }
     return (-1);
-
 }
 
 /**
- * xmlSchemaParseChoice:
+ * xmlSchemaParseModelGroup:
  * @ctxt:  a schema validation context
  * @schema:  the schema being built
  * @node:  a subtree containing XML Schema informations
+ * @type: the "compositor" type
+ * @particleNeeded: if a a model group with a particle
  *
- * parse a XML schema Choice definition
+ * parse a XML schema Sequence definition
  * *WARNING* this interface is highly subject to change
  *
  * Returns -1 in case of error, 0 if the declaration is improper and
  *         1 in case of success.
  */
-static xmlSchemaTypePtr
-xmlSchemaParseChoice(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
-                     xmlNodePtr node)
+static xmlSchemaTreeItemPtr
+xmlSchemaParseModelGroup(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
+			 xmlNodePtr node, xmlSchemaTypeType type,
+			 int withParticle)
 {
-    xmlSchemaTypePtr type, subtype, last = NULL;
+    xmlSchemaModelGroupPtr item;
+    xmlSchemaParticlePtr particle = NULL;
     xmlNodePtr child = NULL;
-    xmlChar name[30];
     xmlAttrPtr attr;
-    const xmlChar *oldcontainer;
+    const xmlChar *oldcontainer, *container;
+    int min, max;
 
     if ((ctxt == NULL) || (schema == NULL) || (node == NULL))
-        return (NULL);
+        return (NULL);    
+    /* 
+    * Create a model group with the given compositor.
+    */
+    item = xmlSchemaAddModelGroup(ctxt, schema, type, &container, node);
+    if (item == NULL)
+	return (NULL);
 
-
-    snprintf((char *) name, 30, "#ch%d", ctxt->counter++ + 1);
-    type = xmlSchemaAddType(ctxt, schema, name, NULL, node);
-    if (type == NULL)
-        return (NULL);
-    type->node = node;
-    type->type = XML_SCHEMA_TYPE_CHOICE;
-    /*
-    * Check for illegal attributes.
-    */
-    attr = node->properties;
-    while (attr != NULL) {
-	if (attr->ns == NULL) {
-	    if ((!xmlStrEqual(attr->name, BAD_CAST "id")) &&
-		(!xmlStrEqual(attr->name, BAD_CAST "maxOccurs")) &&
-		(!xmlStrEqual(attr->name, BAD_CAST "minOccurs"))) {
+    if (withParticle) {
+	if (type == XML_SCHEMA_TYPE_ALL) {
+	    min = xmlGetMinOccurs(ctxt, node, 0, 1, 1, "(0 | 1)");
+	    max = xmlGetMaxOccurs(ctxt, node, 1, 1, 1, "1"); 
+	} else {
+	    /* choice + sequence */
+	    min = xmlGetMinOccurs(ctxt, node, 0, -1, 1, "nonNegativeInteger");
+	    max = xmlGetMaxOccurs(ctxt, node, 0, UNBOUNDED, 1, 
+		"(nonNegativeInteger | unbounded)");
+	}    
+	/* 
+	* Create a particle 
+	*/
+	particle = xmlSchemaAddParticle(ctxt, schema, node, min, max);
+	if (particle == NULL)
+	    return (NULL);    
+	particle->children = (xmlSchemaTreeItemPtr) item;
+	/*
+	* Check for illegal attributes.
+	*/
+	attr = node->properties;
+	while (attr != NULL) {
+	    if (attr->ns == NULL) {
+		if ((!xmlStrEqual(attr->name, BAD_CAST "id")) &&
+		    (!xmlStrEqual(attr->name, BAD_CAST "maxOccurs")) &&
+		    (!xmlStrEqual(attr->name, BAD_CAST "minOccurs"))) {
+		    xmlSchemaPIllegalAttrErr(ctxt, 
+			XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
+			NULL, NULL, attr);		    
+		}
+	    } else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) {
 		xmlSchemaPIllegalAttrErr(ctxt, 
 		    XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
-		    NULL, type, attr);		    
+		    NULL, NULL, attr);		
 	    }
-	} else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) {
-	    xmlSchemaPIllegalAttrErr(ctxt, 
-		XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
-		NULL, type, attr);		
+	    attr = attr->next;
 	}
-	attr = attr->next;
+    } else {
+	/*
+	* Check for illegal attributes.
+	*/
+	attr = node->properties;
+	while (attr != NULL) {
+	    if (attr->ns == NULL) {
+		if (!xmlStrEqual(attr->name, BAD_CAST "id")) {
+		    xmlSchemaPIllegalAttrErr(ctxt, 
+			XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
+			NULL, NULL, attr);		    
+		}
+	    } else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) {
+		xmlSchemaPIllegalAttrErr(ctxt, 
+		    XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
+		    NULL, NULL, attr);		
+	    }
+	    attr = attr->next;
+	}
+
     }
+    
     /*
     * Extract and validate attributes.
     */
-    xmlSchemaPValAttrID(ctxt, NULL, NULL, node, BAD_CAST "id");
-    type->minOccurs = xmlGetMinOccurs(ctxt, node, 0, -1, 1, "nonNegativeInteger");
-    type->maxOccurs = xmlGetMaxOccurs(ctxt, node, 0, UNBOUNDED, 1, 
-	"(nonNegativeInteger | unbounded)");
+    xmlSchemaPValAttrID(ctxt, NULL, NULL, node, BAD_CAST "id");    
     /*
     * And now for the children...
     */
-    oldcontainer = ctxt->container;
-    ctxt->container = (const xmlChar *) name;
     child = node->children;
     if (IS_SCHEMA(child, "annotation")) {
-        type->annot = xmlSchemaParseAnnotation(ctxt, schema, child);
+        item->annot = xmlSchemaParseAnnotation(ctxt, schema, child);
         child = child->next;
     }
-    while ((IS_SCHEMA(child, "element")) ||
-           (IS_SCHEMA(child, "group")) ||
-           (IS_SCHEMA(child, "any")) ||
-           (IS_SCHEMA(child, "choice")) ||
-           (IS_SCHEMA(child, "sequence"))) {
-        subtype = NULL;
-        if (IS_SCHEMA(child, "element")) {
-            subtype = (xmlSchemaTypePtr)
-                xmlSchemaParseElement(ctxt, schema, child, 0);
-        } else if (IS_SCHEMA(child, "group")) {
-            subtype = xmlSchemaParseGroup(ctxt, schema, child, 0);
-        } else if (IS_SCHEMA(child, "any")) {
-            subtype = xmlSchemaParseAny(ctxt, schema, child);
-        } else if (IS_SCHEMA(child, "sequence")) {
-            subtype = xmlSchemaParseSequence(ctxt, schema, child);
-        } else if (IS_SCHEMA(child, "choice")) {
-            subtype = xmlSchemaParseChoice(ctxt, schema, child);
-        }
-        if (subtype != NULL) {
-            if (last == NULL) {
-                type->subtypes = subtype;
-                last = subtype;
-            } else {
-                last->next = subtype;
-                last = subtype;
-            }
-            last->next = NULL;
-        }
-        child = child->next;
-    }
-    if (child != NULL) {
-	/* TODO: error code. */
-	xmlSchemaPContentErr(ctxt,
-	    XML_SCHEMAP_UNKNOWN_CHOICE_CHILD,
-	    NULL, type, node, child, NULL,
-	    "(annotation?, (element | group | choice | sequence | any)*)");
-    }
-    ctxt->container = oldcontainer;
-    return (type);
-}
+    oldcontainer = ctxt->container;
+    ctxt->container = container;
+    if (type == XML_SCHEMA_TYPE_ALL) {
+	xmlSchemaParticlePtr part, last = NULL;
 
-/**
- * xmlSchemaParseSequence:
- * @ctxt:  a schema validation context
- * @schema:  the schema being built
- * @node:  a subtree containing XML Schema informations
- *
- * parse a XML schema Sequence definition
- * *WARNING* this interface is highly subject to change
- *
- * Returns -1 in case of error, 0 if the declaration is improper and
- *         1 in case of success.
- */
-static xmlSchemaTypePtr
-xmlSchemaParseSequence(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
-                       xmlNodePtr node)
-{
-    xmlSchemaTypePtr type, subtype, last = NULL;
-    xmlNodePtr child = NULL;
-    xmlChar name[30];
-    xmlAttrPtr attr;
-    const xmlChar *oldcontainer;
+	while (IS_SCHEMA(child, "element")) {	    
+	    part = (xmlSchemaParticlePtr) xmlSchemaParseElement(ctxt,
+		schema, child, 0);
+	    if (part != NULL) {
+		if (part->minOccurs > 1)
+		    xmlSchemaPCustomErr(ctxt, XML_SCHEMAP_INVALID_MINOCCURS,
+			NULL, NULL, child, 
+			"Invalid value for minOccurs (must be 0 or 1)", NULL);
+		if (part->maxOccurs > 1)
+		    xmlSchemaPCustomErr(ctxt, XML_SCHEMAP_INVALID_MAXOCCURS,
+			NULL, NULL, child, 
+			"Invalid value for maxOccurs (must be 0 or 1)",
+			NULL);
+		if (last == NULL)
+		    item->children = (xmlSchemaTreeItemPtr) part;
+		else
+		    last->next = (xmlSchemaTreeItemPtr) part;
+		last = part;
+	    }
+	    child = child->next;
+	}
+	if (child != NULL) {
+	    xmlSchemaPContentErr(ctxt,
+		XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED,
+		NULL, NULL, node, child, NULL,
+		"(annotation?, (annotation?, element*)");
+	}
+    } else {
+	/* choice + sequence */
+	xmlSchemaTreeItemPtr part = NULL, last = NULL;
 
-    if ((ctxt == NULL) || (schema == NULL) || (node == NULL))
-        return (NULL);
+	while ((IS_SCHEMA(child, "element")) ||
+	    (IS_SCHEMA(child, "group")) ||
+	    (IS_SCHEMA(child, "any")) ||
+	    (IS_SCHEMA(child, "choice")) ||
+	    (IS_SCHEMA(child, "sequence"))) {
 
-    oldcontainer = ctxt->container;
-    snprintf((char *) name, 30, "#seq%d", ctxt->counter++ + 1);
-    type = xmlSchemaAddType(ctxt, schema, name, NULL, node);
-    if (type == NULL)
-        return (NULL);
-    type->node = node;
-    type->type = XML_SCHEMA_TYPE_SEQUENCE;
-    /*
-    * Check for illegal attributes.
-    */
-    attr = node->properties;
-    while (attr != NULL) {
-	if (attr->ns == NULL) {
-	    if ((!xmlStrEqual(attr->name, BAD_CAST "id")) &&
-		(!xmlStrEqual(attr->name, BAD_CAST "maxOccurs")) &&
-		(!xmlStrEqual(attr->name, BAD_CAST "minOccurs"))) {
-		xmlSchemaPIllegalAttrErr(ctxt, 
-		    XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
-		    NULL, type, attr);		    
+	    if (IS_SCHEMA(child, "element")) {
+		part = (xmlSchemaTreeItemPtr)
+		    xmlSchemaParseElement(ctxt, schema, child, 0);
+	    } else if (IS_SCHEMA(child, "group")) {
+		part = 
+		    xmlSchemaParseModelGroupDefRef(ctxt, schema, child);
+	    } else if (IS_SCHEMA(child, "any")) {
+		part = (xmlSchemaTreeItemPtr) 
+		    xmlSchemaParseAny(ctxt, schema, child);
+	    } else if (IS_SCHEMA(child, "choice")) {
+		part = xmlSchemaParseModelGroup(ctxt, schema, child,
+		    XML_SCHEMA_TYPE_CHOICE, 1);
+	    } else if (IS_SCHEMA(child, "sequence")) {
+		part = xmlSchemaParseModelGroup(ctxt, schema, child,
+		    XML_SCHEMA_TYPE_SEQUENCE, 1);
 	    }
-	} else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) {
-	    xmlSchemaPIllegalAttrErr(ctxt, 
-		XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
-		NULL, type, attr);		
+	    if (part != NULL) {
+		if (last == NULL)
+		    item->children = part;                
+		else
+		    last->next = part;
+		last = part;
+	    }
+	    child = child->next;
+	}    
+	if (child != NULL) {
+	    xmlSchemaPContentErr(ctxt,
+		XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED,
+		NULL, NULL, node, child, NULL,
+		"(annotation?, (element | group | choice | sequence | any)*)");
 	}
-	attr = attr->next;
     }
-    /*
-    * Extract and validate attributes.
-    */
-    xmlSchemaPValAttrID(ctxt, NULL, NULL, node, BAD_CAST "id");
-    type->minOccurs = xmlGetMinOccurs(ctxt, node, 0, -1, 1, "nonNegativeInteger");
-    type->maxOccurs = xmlGetMaxOccurs(ctxt, node, 0, UNBOUNDED, 1, 
-	"(nonNegativeInteger | unbounded)");
-    /*
-    * And now for the children...
-    */
-    ctxt->container = (const xmlChar *) name;
-    child = node->children;
-    if (IS_SCHEMA(child, "annotation")) {
-        type->annot = xmlSchemaParseAnnotation(ctxt, schema, child);
-        child = child->next;
-    }
-    while ((IS_SCHEMA(child, "element")) ||
-           (IS_SCHEMA(child, "group")) ||
-           (IS_SCHEMA(child, "any")) ||
-           (IS_SCHEMA(child, "choice")) ||
-           (IS_SCHEMA(child, "sequence"))) {
-        subtype = NULL;
-        if (IS_SCHEMA(child, "element")) {
-            subtype = (xmlSchemaTypePtr)
-                xmlSchemaParseElement(ctxt, schema, child, 0);
-        } else if (IS_SCHEMA(child, "group")) {
-            subtype = xmlSchemaParseGroup(ctxt, schema, child, 0);
-        } else if (IS_SCHEMA(child, "any")) {
-            subtype = xmlSchemaParseAny(ctxt, schema, child);
-        } else if (IS_SCHEMA(child, "choice")) {
-            subtype = xmlSchemaParseChoice(ctxt, schema, child);
-        } else if (IS_SCHEMA(child, "sequence")) {
-            subtype = xmlSchemaParseSequence(ctxt, schema, child);
-        }
-        if (subtype != NULL) {
-            if (last == NULL) {
-                type->subtypes = subtype;
-                last = subtype;
-            } else {
-                last->next = subtype;
-                last = subtype;
-            }
-            last->next = NULL;
-        }
-        child = child->next;
-    }
-    if (child != NULL) {
-	xmlSchemaPContentErr(ctxt,
-	    XML_SCHEMAP_UNKNOWN_SEQUENCE_CHILD,
-	    NULL, type, node, child, NULL,
-	    "(annotation?, (element | group | choice | sequence | any)*)");
-    }
     ctxt->container = oldcontainer;
-
-    return (type);
+    if (withParticle)
+	return ((xmlSchemaTreeItemPtr) particle);
+    else
+	return ((xmlSchemaTreeItemPtr) item);
 }
 
 /**
@@ -8761,25 +9605,26 @@
  */
 static xmlSchemaTypePtr
 xmlSchemaParseRestriction(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
-                          xmlNodePtr node)
+                          xmlNodePtr node, xmlSchemaTypeType parentType)
 {
-    xmlSchemaTypePtr type, subtype;    
+    xmlSchemaTypePtr type;
     xmlNodePtr child = NULL;
-    xmlChar name[30];
-    const xmlChar *oldcontainer;
+    char buf[30];
+    const xmlChar *oldcontainer, *container;
     xmlAttrPtr attr;
 
     if ((ctxt == NULL) || (schema == NULL) || (node == NULL))
         return (NULL);
-
-    oldcontainer = ctxt->container;
-
-    snprintf((char *) name, 30, "#restr%d", ctxt->counter++ + 1);
-    type = xmlSchemaAddType(ctxt, schema, name, NULL, node);
-    if (type == NULL)
-        return (NULL);
-    type->type = XML_SCHEMA_TYPE_RESTRICTION;
-    type->node = node;
+    /* Not a component, don't create it. */  
+    type = ctxt->ctxtType;
+    type->flags |= XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION;
+    
+    /* 
+    * TODO: Is the container needed at all? the anonymous
+    * items inside should generate unique names already.
+    */
+    snprintf(buf, 29, "#restr%d", ctxt->counter++ + 1);
+    container = xmlDictLookup(ctxt->dict, BAD_CAST buf, -1);    
     /*
     * Check for illegal attributes.
     */
@@ -8790,12 +9635,12 @@
 		(!xmlStrEqual(attr->name, BAD_CAST "base"))) {
 		xmlSchemaPIllegalAttrErr(ctxt, 
 		    XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
-		    NULL, type, attr);		    
+		    NULL, NULL, attr);		    
 	    }
 	} else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) {
 	    xmlSchemaPIllegalAttrErr(ctxt, 
 		XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
-		NULL, type, attr);		
+		NULL, NULL, attr);		
 	}
 	attr = attr->next;
     }	
@@ -8804,48 +9649,36 @@
     */
     xmlSchemaPValAttrID(ctxt, NULL, NULL, node, BAD_CAST "id");
     /*
-    * Attribute "base".
+    * Attribute "base" - mandatory if inside a complex type.
     */
-    type->base = xmlGetQNameProp(ctxt, node, "base", &(type->baseNs));
-    if ((type->base == NULL) && 
-	(ctxt->ctxtType->type == XML_SCHEMA_TYPE_COMPLEX)) {
-	/* TODO: Think about the error code. */
+    if ((xmlSchemaPValAttrQName(ctxt, schema,
+	NULL, NULL, node, "base",
+	&(type->baseNs), NULL,
+	&(type->base)) == 0) &&
+	(type->base == NULL) &&
+	(type->type == XML_SCHEMA_TYPE_COMPLEX)) {
 	xmlSchemaPMissingAttrErr(ctxt,
-	    XML_SCHEMAP_RESTRICTION_NONAME_NOREF, 
+	    XML_SCHEMAP_S4S_ATTR_MISSING, 
 	    NULL, type, node, "base", NULL);
-    }
+    }    
     /*
     * And now for the children...
-    */
-    ctxt->container = name;
+    */    
     child = node->children;
     if (IS_SCHEMA(child, "annotation")) {
-        type->annot = xmlSchemaParseAnnotation(ctxt, schema, child);
+	/*
+	* Add the annotation to the simple type ancestor.
+	*/
+	xmlSchemaAddAnnotation((xmlSchemaAnnotItemPtr) type,
+	    xmlSchemaParseAnnotation(ctxt, schema, child));
         child = child->next;
     }
-    subtype = NULL;
-    if (ctxt->parentItem->type == XML_SCHEMA_TYPE_COMPLEX_CONTENT) {
-	if (IS_SCHEMA(child, "all")) {
-	    subtype = (xmlSchemaTypePtr)
-		xmlSchemaParseAll(ctxt, schema, child);
-	    child = child->next;
-	    type->subtypes = subtype;
-	} else if (IS_SCHEMA(child, "choice")) {
-	    subtype = xmlSchemaParseChoice(ctxt, schema, child);
-	    child = child->next;
-	    type->subtypes = subtype;
-	} else if (IS_SCHEMA(child, "sequence")) {
-	    subtype = (xmlSchemaTypePtr)
-		xmlSchemaParseSequence(ctxt, schema, child);
-	    child = child->next;
-	    type->subtypes = subtype;
-	} else if (IS_SCHEMA(child, "group")) {
-	    subtype = (xmlSchemaTypePtr)
-		xmlSchemaParseGroup(ctxt, schema, child, 0);
-	    child = child->next;
-	    type->subtypes = subtype;
-	}
-    } else if (ctxt->ctxtType->type == XML_SCHEMA_TYPE_SIMPLE) {
+    oldcontainer = ctxt->container;
+    ctxt->container = container;
+    if (parentType == XML_SCHEMA_TYPE_SIMPLE) {
+	/*
+	* Corresponds to <simpleType><restriction><simpleType>.
+	*/
 	if (IS_SCHEMA(child, "simpleType")) {
 	    if (type->base != NULL) {
 		/* 
@@ -8855,30 +9688,111 @@
 		*/
 		xmlSchemaPContentErr(ctxt, 
 		    XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE,
-		    NULL, NULL, type->node, child,
+		    NULL, NULL, node, child,
 		    "The attribute 'base' and the <simpleType> child are "
 		    "mutually exclusive", NULL);
 	    } else {
-		subtype = (xmlSchemaTypePtr)
+		type->baseType = (xmlSchemaTypePtr)
 		    xmlSchemaParseSimpleType(ctxt, schema, child, 0);
-		type->baseType = subtype;
 	    }	        
 	    child = child->next;
+	} else if (type->base == NULL) {
+	    xmlSchemaPContentErr(ctxt, 
+		XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE,
+		NULL, NULL, node, child,
+		"Either the attribute 'base' or a <simpleType> child "
+		"must be present", NULL);
 	}
-    } else if (ctxt->parentItem->type == XML_SCHEMA_TYPE_SIMPLE_CONTENT) {
+    } else if (parentType == XML_SCHEMA_TYPE_COMPLEX_CONTENT) {
+	/*
+	* Corresponds to <complexType><complexContent><restriction>...
+	* followed by:
+	* 
+	* Model groups <all>, <choice> and <sequence>.
+	*/
+	if (IS_SCHEMA(child, "all")) {
+	    type->subtypes = (xmlSchemaTypePtr)
+		xmlSchemaParseModelGroup(ctxt, schema, child,
+		    XML_SCHEMA_TYPE_ALL, 1);
+	    child = child->next;
+	} else if (IS_SCHEMA(child, "choice")) {
+	    type->subtypes = (xmlSchemaTypePtr)
+		xmlSchemaParseModelGroup(ctxt,
+		    schema, child, XML_SCHEMA_TYPE_CHOICE, 1);
+	    child = child->next;
+	} else if (IS_SCHEMA(child, "sequence")) {
+	    type->subtypes = (xmlSchemaTypePtr)
+		xmlSchemaParseModelGroup(ctxt, schema, child,
+		    XML_SCHEMA_TYPE_SEQUENCE, 1);
+	    child = child->next;
+	/*
+	* Model group reference <group>.
+	*/
+	} else if (IS_SCHEMA(child, "group")) {
+	    type->subtypes = (xmlSchemaTypePtr)
+		xmlSchemaParseModelGroupDefRef(ctxt, schema, child);
+	    child = child->next;
+	}
+    } else if (parentType == XML_SCHEMA_TYPE_SIMPLE_CONTENT) {
+	xmlSchemaTypePtr contType, baseType = NULL;
+	/*
+	* Corresponds to <complexType><simpleContent><restriction>...
+	*
+	* SPEC (content type):
+	* "1 If the type definition ·resolved· to by the ·actual value· of
+	* the base [attribute] is a complex type definition whose own
+	* {content type} is a simple type definition and the <restriction>
+	* alternative is chosen, then starting from either" ...
+	*
+	* "1.1 the simple type definition corresponding to the <simpleType>
+	* among the [children] of <restriction> if there is one;"
+	*/
 	if (IS_SCHEMA(child, "simpleType")) {
-	    subtype = (xmlSchemaTypePtr)
+	    
+	    baseType = (xmlSchemaTypePtr)
 		xmlSchemaParseSimpleType(ctxt, schema, child, 0);
-	    type->subtypes = subtype;
+	    if (baseType == NULL)
+		return (NULL);	    	    
 	    child = child->next;
-	}	        	
+	}
+	/*
+	* SPEC
+	* "... a simple type definition which restricts the simple type
+	* definition identified in clause 1.1 or clause 1.2 with a set
+	* of facet components"
+	*
+	* Create the anonymous simple type, which will be the content type
+	* of the complex type.
+	* Note that we will use the same node as for the <restriction> to
+	* have it somehow anchored in the schema doc.
+	*/
+	snprintf(buf, 29, "#scST%d", ctxt->counter++ + 1);
+	contType = xmlSchemaAddType(ctxt, schema, (const xmlChar *)buf,
+	    container, node);
+	if (contType == NULL)
+	    return (NULL);
+	contType->node = node;
+	contType->type = XML_SCHEMA_TYPE_SIMPLE;
+	contType->baseType = baseType;
+	type->contentTypeDef = contType;			
     }
-    if ((ctxt->ctxtType->type == XML_SCHEMA_TYPE_SIMPLE) ||
-	(ctxt->parentItem->type == XML_SCHEMA_TYPE_SIMPLE_CONTENT)) {
-	xmlSchemaFacetPtr facet, lastfacet = NULL;	
+
+    if ((parentType == XML_SCHEMA_TYPE_SIMPLE) ||
+	(parentType == XML_SCHEMA_TYPE_SIMPLE_CONTENT)) {	
+	xmlSchemaFacetPtr facet, lastfacet = NULL;
+	xmlSchemaTypePtr facetHolder;
+	
+	if (parentType == XML_SCHEMA_TYPE_SIMPLE)
+	    facetHolder = type;
+	else
+	    facetHolder = type->contentTypeDef;
+	/*
+	* Corresponds to <complexType><simpleContent><restriction>...
+	* <simpleType><restriction>... 
+	*/
 		
 	/*
-	* Add the facets to the parent simpleType/complexType.
+	* Add the facets to the simple type ancestor.
 	*/
 	/*
 	* TODO: Datatypes: 4.1.3 Constraints on XML Representation of 
@@ -8900,7 +9814,7 @@
 	    facet = xmlSchemaParseFacet(ctxt, schema, child);
 	    if (facet != NULL) {
 		if (lastfacet == NULL)
-		    ctxt->ctxtType->facets = facet;			
+		    facetHolder->facets = facet;			
 		else
 		    lastfacet->next = facet;
 		lastfacet = facet;
@@ -8911,12 +9825,13 @@
 	/*
 	* Create links for derivation and validation.
 	*/	    
-	if (lastfacet != NULL) {
+	if (facetHolder->facets != NULL) {
 	    xmlSchemaFacetLinkPtr facetLink, lastFacetLink = NULL;
 
-	    facet = ctxt->ctxtType->facets;
+	    facet = facetHolder->facets;
 	    do {		    
-		facetLink = (xmlSchemaFacetLinkPtr) xmlMalloc(sizeof(xmlSchemaFacetLink));
+		facetLink = (xmlSchemaFacetLinkPtr)
+		    xmlMalloc(sizeof(xmlSchemaFacetLink));
 		if (facetLink == NULL) {
 		    xmlSchemaPErrMemory(ctxt, "allocating a facet link", NULL);
 		    xmlFree(facetLink);
@@ -8925,7 +9840,7 @@
 		facetLink->facet = facet;
 		facetLink->next = NULL;
 		if (lastFacetLink == NULL) 
-		    ctxt->ctxtType->facetSet = facetLink;			                                         
+		    facetHolder->facetSet = facetLink;			                                         
 		else
 		    lastFacetLink->next = facetLink;
 		lastFacetLink = facetLink;
@@ -8933,25 +9848,31 @@
 	    } while (facet != NULL);
 	}
     }    
-    if (ctxt->ctxtType->type == XML_SCHEMA_TYPE_COMPLEX) {
+    if (type->type == XML_SCHEMA_TYPE_COMPLEX) {
+	/*
+	* Attribute uses/declarations.
+	*/
 	child = xmlSchemaParseAttrDecls(ctxt, schema, child, type);
+	/*
+	* Attribute wildcard.
+	*/
 	if (IS_SCHEMA(child, "anyAttribute")) {
-	    ctxt->ctxtType->attributeWildcard = xmlSchemaParseAnyAttribute(ctxt, schema, child);
+	    type->attributeWildcard =
+		xmlSchemaParseAnyAttribute(ctxt, schema, child);
 	    child = child->next;
 	}
     }
     if (child != NULL) {
-	/* TODO: Think about the error code. */
-	if (ctxt->parentItem->type == XML_SCHEMA_TYPE_COMPLEX_CONTENT) {	    
+	if (parentType == XML_SCHEMA_TYPE_COMPLEX_CONTENT) {	    
 	    xmlSchemaPContentErr(ctxt, 
-		XML_SCHEMAP_UNKNOWN_RESTRICTION_CHILD, 
-		NULL, type, node, child, NULL,
+		XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, 
+		NULL, NULL, node, child, NULL,
 		"annotation?, (group | all | choice | sequence)?, "
 		"((attribute | attributeGroup)*, anyAttribute?))");
-	} else if (ctxt->parentItem->type == XML_SCHEMA_TYPE_SIMPLE_CONTENT) {
+	} else if (parentType == XML_SCHEMA_TYPE_SIMPLE_CONTENT) {
 	     xmlSchemaPContentErr(ctxt, 
-		XML_SCHEMAP_UNKNOWN_RESTRICTION_CHILD, 
-		NULL, type, node, child, NULL,
+		XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, 
+		NULL, NULL, node, child, NULL,
 		"(annotation?, (simpleType?, (minExclusive | minInclusive | "
 		"maxExclusive | maxInclusive | totalDigits | fractionDigits | "
 		"length | minLength | maxLength | enumeration | whiteSpace | "
@@ -8959,8 +9880,8 @@
 	} else {
 	    /* Simple type */
 	    xmlSchemaPContentErr(ctxt, 
-		XML_SCHEMAP_UNKNOWN_RESTRICTION_CHILD, 
-		NULL, type, node, child, NULL,
+		XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, 
+		NULL, NULL, node, child, NULL,
 		"(annotation?, (simpleType?, (minExclusive | minInclusive | "
 		"maxExclusive | maxInclusive | totalDigits | fractionDigits | "
 		"length | minLength | maxLength | enumeration | whiteSpace | "
@@ -8968,7 +9889,7 @@
 	}
     }       
     ctxt->container = oldcontainer;
-    return (type);
+    return (NULL);
 }
 
 /**
@@ -8977,67 +9898,111 @@
  * @schema:  the schema being built
  * @node:  a subtree containing XML Schema informations
  *
- * parse a XML schema Extension definition
- * *WARNING* this interface is highly subject to change
+ * Parses an <extension>, which is found inside a
+ * <simpleContent> or <complexContent>.
+ * *WARNING* this interface is highly subject to change. 
  *
- * Returns the type definition or NULL in case of error
+ * TODO: Returns the type definition or NULL in case of error
  */
 static xmlSchemaTypePtr
 xmlSchemaParseExtension(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
-                        xmlNodePtr node)
+                        xmlNodePtr node, xmlSchemaTypeType parentType)
 {
-    xmlSchemaTypePtr type, subtype;
+    xmlSchemaTypePtr type;
     xmlNodePtr child = NULL;
-    xmlChar name[30];
-    const xmlChar *oldcontainer;
+    char buf[30];
+    const xmlChar *oldcontainer, *container;
+    xmlAttrPtr attr;
 
     if ((ctxt == NULL) || (schema == NULL) || (node == NULL))
         return (NULL);
+    /* Not a component, don't create it. */    
+    type = ctxt->ctxtType;
+    type->flags |= XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION;
 
-    oldcontainer = ctxt->container;
+    snprintf(buf, 29, "#ext%d", ctxt->counter++ + 1);
+    container = xmlDictLookup(ctxt->dict, BAD_CAST buf, -1);
+    /*
+    * Check for illegal attributes.
+    */
+    attr = node->properties;
+    while (attr != NULL) {
+	if (attr->ns == NULL) {
+	    if ((!xmlStrEqual(attr->name, BAD_CAST "id")) &&
+		(!xmlStrEqual(attr->name, BAD_CAST "base"))) {
+		xmlSchemaPIllegalAttrErr(ctxt, 
+		    XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
+		    NULL, NULL, attr);		    
+	    }
+	} else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) {
+	    xmlSchemaPIllegalAttrErr(ctxt, 
+		XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
+		NULL, NULL, attr);		
+	}
+	attr = attr->next;
+    }	
 
-    snprintf((char *) name, 30, "#ext%d", ctxt->counter++ + 1);
-    type = xmlSchemaAddType(ctxt, schema, name, NULL, node);    
-    if (type == NULL)
-        return (NULL);
-    type->type = XML_SCHEMA_TYPE_EXTENSION;
-    type->node = node;
-
     xmlSchemaPValAttrID(ctxt, NULL, NULL, node, BAD_CAST "id");
-
-    ctxt->container = name;
-
-    type->base = xmlGetQNameProp(ctxt, node, "base", &(type->baseNs));
-    if (type->base == NULL) {
-        xmlSchemaPErr2(ctxt, node, child, XML_SCHEMAP_EXTENSION_NO_BASE,
-	    "<extension>: The attribute \"base\" is missing.\n", 
-	    type->name, NULL);
-    }
+    
+    /*
+    * Attribute "base" - mandatory.
+    */
+    if ((xmlSchemaPValAttrQName(ctxt, schema,
+	NULL, NULL, node, "base", &(type->baseNs), NULL,
+	&(type->base)) == 0) && (type->base == NULL)) {
+	xmlSchemaPMissingAttrErr(ctxt,
+	    XML_SCHEMAP_S4S_ATTR_MISSING, 
+	    NULL, NULL, node, "base", NULL);
+    }  
+    /*
+    * And now for the children...
+    */
     child = node->children;
     if (IS_SCHEMA(child, "annotation")) {
-        type->annot = xmlSchemaParseAnnotation(ctxt, schema, child);
+	/*
+	* Add the annotation to the type ancestor.
+	*/
+	xmlSchemaAddAnnotation((xmlSchemaAnnotItemPtr) type,
+	    xmlSchemaParseAnnotation(ctxt, schema, child));
         child = child->next;
     }
-    subtype = NULL;
-
-    if (IS_SCHEMA(child, "all")) {
-        subtype = xmlSchemaParseAll(ctxt, schema, child);
-        child = child->next;
-    } else if (IS_SCHEMA(child, "choice")) {
-        subtype = xmlSchemaParseChoice(ctxt, schema, child);
-        child = child->next;
-    } else if (IS_SCHEMA(child, "sequence")) {
-        subtype = xmlSchemaParseSequence(ctxt, schema, child);
-        child = child->next;
-    } else if (IS_SCHEMA(child, "group")) {
-        subtype = xmlSchemaParseGroup(ctxt, schema, child, 0);
-        child = child->next;
+    oldcontainer = ctxt->container;
+    ctxt->container = container;
+    if (parentType == XML_SCHEMA_TYPE_COMPLEX_CONTENT) {
+	/*
+	* Corresponds to <complexType><complexContent><extension>... and:
+	*
+	* Model groups <all>, <choice>, <sequence> and <group>.
+	*/
+	if (IS_SCHEMA(child, "all")) {
+	    type->subtypes = (xmlSchemaTypePtr)
+		xmlSchemaParseModelGroup(ctxt, schema,
+		    child, XML_SCHEMA_TYPE_ALL, 1);
+	    child = child->next;
+	} else if (IS_SCHEMA(child, "choice")) {
+	    type->subtypes = (xmlSchemaTypePtr)
+		xmlSchemaParseModelGroup(ctxt, schema,
+		    child, XML_SCHEMA_TYPE_CHOICE, 1);
+	    child = child->next;
+	} else if (IS_SCHEMA(child, "sequence")) {
+	    type->subtypes = (xmlSchemaTypePtr)
+		xmlSchemaParseModelGroup(ctxt, schema,
+		child, XML_SCHEMA_TYPE_SEQUENCE, 1);
+	    child = child->next;
+	} else if (IS_SCHEMA(child, "group")) {
+	    type->subtypes = (xmlSchemaTypePtr)
+		xmlSchemaParseModelGroupDefRef(ctxt, schema, child);
+	    child = child->next;
+	}
     }
-    if (subtype != NULL)
-        type->subtypes = subtype;
-    if ((ctxt->ctxtType != NULL) &&
-	(ctxt->ctxtType->type == XML_SCHEMA_TYPE_COMPLEX)) {
+    if (child != NULL) {
+	/*
+	* Attribute uses/declarations.
+	*/
 	child = xmlSchemaParseAttrDecls(ctxt, schema, child, type);
+	/*
+	* Attribute wildcard.
+	*/
 	if (IS_SCHEMA(child, "anyAttribute")) {	    
 	    ctxt->ctxtType->attributeWildcard = 
 		xmlSchemaParseAnyAttribute(ctxt, schema, child);
@@ -9045,13 +10010,24 @@
 	}
     }
     if (child != NULL) {
-        xmlSchemaPErr2(ctxt, node, child,
-	    XML_SCHEMAP_UNKNOWN_EXTENSION_CHILD,
-	    "<extension> has unexpected content.\n", type->name,
-	    NULL);
+	if (parentType == XML_SCHEMA_TYPE_COMPLEX_CONTENT) {
+	    /* Complex content extension. */
+	    xmlSchemaPContentErr(ctxt, 
+		XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, 
+		NULL, NULL, node, child, NULL,
+		"(annotation?, ((group | all | choice | sequence)?, "
+		"((attribute | attributeGroup)*, anyAttribute?)))");	    	
+	} else {
+	    /* Simple content extension. */
+	    xmlSchemaPContentErr(ctxt, 
+		XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, 
+		NULL, NULL, node, child, NULL,
+		"(annotation?, ((attribute | attributeGroup)*, "
+		"anyAttribute?))");
+	}
     }
     ctxt->container = oldcontainer;
-    return (type);
+    return (NULL);
 }
 
 /**
@@ -9065,52 +10041,68 @@
  *
  * Returns the type definition or NULL in case of error
  */
-static xmlSchemaTypePtr
+static int
 xmlSchemaParseSimpleContent(xmlSchemaParserCtxtPtr ctxt,
                             xmlSchemaPtr schema, xmlNodePtr node)
 {
-    xmlSchemaTypePtr type, subtype, oldParentItem;
+    xmlSchemaTypePtr type;
     xmlNodePtr child = NULL;
-    xmlChar name[30];
+    xmlAttrPtr attr;
 
     if ((ctxt == NULL) || (schema == NULL) || (node == NULL))
-        return (NULL);
+        return (-1);
+    /* Not a component, don't create it. */
+    type = ctxt->ctxtType;
+    type->contentType = XML_SCHEMA_CONTENT_SIMPLE;
+    /*
+    * Check for illegal attributes.
+    */
+    attr = node->properties;
+    while (attr != NULL) {
+	if (attr->ns == NULL) {
+	    if ((!xmlStrEqual(attr->name, BAD_CAST "id"))) {
+		xmlSchemaPIllegalAttrErr(ctxt, 
+		    XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
+		    NULL, NULL, attr);		    
+	    }
+	} else if (xmlStrEqual(attr->ns->href, xmlSchemaNs)) {
+	    xmlSchemaPIllegalAttrErr(ctxt, 
+		XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, 
+		NULL, NULL, attr);		
+	}
+	attr = attr->next;
+    }	
 
-    snprintf((char *) name, 30, "#SC%d", ctxt->counter++ + 1);
-    type = xmlSchemaAddType(ctxt, schema, name, NULL, node);    
-    if (type == NULL)
-        return (NULL);
-    type->type = XML_SCHEMA_TYPE_SIMPLE_CONTENT;
-    type->node = node;
-
     xmlSchemaPValAttrID(ctxt, NULL, NULL, node, BAD_CAST "id");
 
+    /*
+    * And now for the children...
+    */
     child = node->children;
     if (IS_SCHEMA(child, "annotation")) {
-        type->annot = xmlSchemaParseAnnotation(ctxt, schema, child);
+	/*
+	* Add the annotation to the complex type ancestor.
+	*/
+	xmlSchemaAddAnnotation((xmlSchemaAnnotItemPtr) type,
+	    xmlSchemaParseAnnotation(ctxt, schema, child));
         child = child->next;
     }
-    oldParentItem = ctxt->parentItem;
-    ctxt->parentItem = type;
-    subtype = NULL;    
     if (IS_SCHEMA(child, "restriction")) {
-        subtype = (xmlSchemaTypePtr)
-            xmlSchemaParseRestriction(ctxt, schema, child);
+        xmlSchemaParseRestriction(ctxt, schema, child,
+	    XML_SCHEMA_TYPE_SIMPLE_CONTENT);
         child = child->next;
     } else if (IS_SCHEMA(child, "extension")) {
-        subtype = (xmlSchemaTypePtr)
-            xmlSchemaParseExtension(ctxt, schema, child);
+        xmlSchemaParseExtension(ctxt, schema, child,
+	    XML_SCHEMA_TYPE_SIMPLE_CONTENT);
         child = child->next;
     }
-    type->subtypes = subtype;
-    if (child != NULL) {
-        xmlSchemaPErr2(ctxt, node, child,
-	    XML_SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD,
-	    "<simpleContent> has unexpected content.\n",
-	    NULL, NULL);
+    if (child != NULL) {	
+	xmlSchemaPContentErr(ctxt, 
+	    XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, 
+	    NULL, NULL, node, child, NULL,
+	    "(annotation?, (restriction | extension))");
     }
-    ctxt->parentItem = oldParentItem;
-    return (type);
+    return (0);
 }
 
 /**
@@ -9124,24 +10116,18 @@
  *
  * Returns the type definition or NULL in case of error
  */
-static xmlSchemaTypePtr
+static int
 xmlSchemaParseComplexContent(xmlSchemaParserCtxtPtr ctxt,
                              xmlSchemaPtr schema, xmlNodePtr node)
 {
-    xmlSchemaTypePtr type, subtype, oldParentItem;
+    xmlSchemaTypePtr type;
     xmlNodePtr child = NULL;
-    xmlChar name[30];
     xmlAttrPtr attr;
 
     if ((ctxt == NULL) || (schema == NULL) || (node == NULL))
-        return (NULL);
-
-    snprintf((char *) name, 30, "#CC%d", ctxt->counter++ + 1);
-    type = xmlSchemaAddType(ctxt, schema, name, NULL, node);
-    if (type == NULL)
-        return (NULL);
-    type->type = XML_SCHEMA_TYPE_COMPLEX_CONTENT;
-    type->node = node;    
+        return (-1);
+    /* Not a component, don't create it. */
+    type = ctxt->ctxtType;
     /*
     * Check for illegal attributes.
     */
@@ -9166,38 +10152,37 @@
     xmlSchemaPValAttrID(ctxt, NULL, NULL, node, BAD_CAST "id");
 
     /*
-    * Handle attribute 'mixed'.
+    * Set the 'mixed' on the complex type ancestor.
     */
-    if (xmlGetBooleanProp(ctxt, NULL, type, node, "mixed", 0))  {
-	if ((ctxt->ctxtType->flags & XML_SCHEMAS_TYPE_MIXED) == 0)
-	    ctxt->ctxtType->flags |= XML_SCHEMAS_TYPE_MIXED;
+    if (xmlGetBooleanProp(ctxt, NULL, NULL, node, "mixed", 0))  {
+	if ((type->flags & XML_SCHEMAS_TYPE_MIXED) == 0)
+	    type->flags |= XML_SCHEMAS_TYPE_MIXED;
     }
     child = node->children;
     if (IS_SCHEMA(child, "annotation")) {
-        type->annot = xmlSchemaParseAnnotation(ctxt, schema, child);
+	/*
+	* Add the annotation to the complex type ancestor.
+	*/
+	xmlSchemaAddAnnotation((xmlSchemaAnnotItemPtr) type,
+	    xmlSchemaParseAnnotation(ctxt, schema, child));
         child = child->next;
     }
-    oldParentItem = ctxt->parentItem;
-    ctxt->parentItem = type;
-    subtype = NULL;
-    if (IS_SCHEMA(child, "restriction")) {
-        subtype = (xmlSchemaTypePtr)
-            xmlSchemaParseRestriction(ctxt, schema, child);
+    if (IS_SCHEMA(child, "restriction")) {        
+        xmlSchemaParseRestriction(ctxt, schema, child,
+	    XML_SCHEMA_TYPE_COMPLEX_CONTENT);
         child = child->next;
     } else if (IS_SCHEMA(child, "extension")) {
-        subtype = (xmlSchemaTypePtr)
-            xmlSchemaParseExtension(ctxt, schema, child);
+        xmlSchemaParseExtension(ctxt, schema, child,
+	    XML_SCHEMA_TYPE_COMPLEX_CONTENT);
         child = child->next;
     }
-    type->subtypes = subtype;
     if (child != NULL) {
 	xmlSchemaPContentErr(ctxt,
 	    XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED,
 	    NULL, NULL, node, child,
 	    NULL, "(annotation?, (restriction | extension))");
     }
-    ctxt->parentItem = oldParentItem;
-    return (type);
+    return (0);
 }
 
 /**
@@ -9215,10 +10200,9 @@
 xmlSchemaParseComplexType(xmlSchemaParserCtxtPtr ctxt, xmlSchemaPtr schema,
                           xmlNodePtr node, int topLevel)
 {
-    xmlSchemaTypePtr type, subtype, ctxtType;
+    xmlSchemaTypePtr type, ctxtType;
     xmlNodePtr child = NULL;
-    const xmlChar *name = NULL;
-    const xmlChar *oldcontainer;    
+    const xmlChar *oldcontainer, *name = NULL;
     xmlAttrPtr attr;
     const xmlChar *attrValue;
     xmlChar *des = NULL; /* The reported designation. */
@@ -9253,7 +10237,7 @@
 	type = xmlSchemaAddType(ctxt, schema, (const xmlChar *)buf, NULL, node);
 	if (type == NULL)
 	    return (NULL);
-	name = (const xmlChar *) buf;
+	name = type->name;
 	type->node = node;
 	type->type = XML_SCHEMA_TYPE_COMPLEX;
 	/*
@@ -9362,13 +10346,7 @@
 		&des, type, attr);	
 	}
 	attr = attr->next;
-    }       
-    /* 
-    * Set as default for attribute wildcards.
-    * This will be only changed if a complex type
-    * inherits an attribute wildcard from a base type.
-    */
-    type->flags |= XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD;
+    }
     /*
     * And now for the children...
     */
@@ -9388,31 +10366,45 @@
 	*/
 	if (type->flags & XML_SCHEMAS_TYPE_MIXED)
 	    type->flags ^= XML_SCHEMAS_TYPE_MIXED;
-        type->subtypes = xmlSchemaParseSimpleContent(ctxt, schema, child);
+        xmlSchemaParseSimpleContent(ctxt, schema, child);
         child = child->next;
     } else if (IS_SCHEMA(child, "complexContent")) {
-        type->subtypes = xmlSchemaParseComplexContent(ctxt, schema, child);
+	type->contentType = XML_SCHEMA_CONTENT_EMPTY;
+        xmlSchemaParseComplexContent(ctxt, schema, child);
         child = child->next;
     } else {
-        subtype = NULL;
 	/*
+	* SPEC
+	* "...the third alternative (neither <simpleContent> nor
+	* <complexContent>) is chosen. This case is understood as shorthand
+	* for complex content restricting the ·ur-type definition·, and the
+	* details of the mappings should be modified as necessary.
+	*/
+	type->baseType = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYTYPE);
+	type->flags |= XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION;
+	/*
 	* Parse model groups.
 	*/
         if (IS_SCHEMA(child, "all")) {
-            subtype = xmlSchemaParseAll(ctxt, schema, child);
+            type->subtypes = (xmlSchemaTypePtr)
+		xmlSchemaParseModelGroup(ctxt, schema, child,
+		    XML_SCHEMA_TYPE_ALL, 1);
             child = child->next;
         } else if (IS_SCHEMA(child, "choice")) {
-            subtype = xmlSchemaParseChoice(ctxt, schema, child);
+            type->subtypes = (xmlSchemaTypePtr)
+		xmlSchemaParseModelGroup(ctxt, schema, child,
+		    XML_SCHEMA_TYPE_CHOICE, 1);
             child = child->next;
         } else if (IS_SCHEMA(child, "sequence")) {
-            subtype = xmlSchemaParseSequence(ctxt, schema, child);
+            type->subtypes = (xmlSchemaTypePtr)
+		xmlSchemaParseModelGroup(ctxt, schema, child,
+		    XML_SCHEMA_TYPE_SEQUENCE, 1);
             child = child->next;
         } else if (IS_SCHEMA(child, "group")) {
-            subtype = xmlSchemaParseGroup(ctxt, schema, child, 0);
+            type->subtypes = (xmlSchemaTypePtr)
+		xmlSchemaParseModelGroupDefRef(ctxt, schema, child);
             child = child->next;
         }
-        if (subtype != NULL)
-            type->subtypes = subtype;
 	/*
 	* Parse attribute decls/refs.
 	*/
@@ -9775,42 +10767,44 @@
 
 /**
  * xmlSchemaBuildAContentModel:
- * @type:  the schema type definition
  * @ctxt:  the schema parser context
- * @name:  the element name whose content is being built
+ * @particle:  the particle component
+ * @name:  the complex type's name whose content is being built
  *
  * Generate the automata sequence needed for that type
  */
 static void
-xmlSchemaBuildAContentModel(xmlSchemaTypePtr type,
-                            xmlSchemaParserCtxtPtr ctxt,
+xmlSchemaBuildAContentModel(xmlSchemaParserCtxtPtr ctxt,
+			    xmlSchemaParticlePtr particle,                            
                             const xmlChar * name)
 {
-    if (type == NULL) {
-        xmlGenericError(xmlGenericErrorContext,
-                        "Found unexpected type = NULL in %s content model\n",
-                        name);
-        return;
+    if (particle == NULL) {
+	xmlSchemaPErr(ctxt, NULL,
+	    XML_SCHEMAP_INTERNAL,
+	    "Internal error: xmlSchemaBuildAContentModel, "
+	    "particle is NULL.\n", NULL, NULL);
+	return;
     }
-    switch (type->type) {
-	case XML_SCHEMA_TYPE_ANY: {   
+    if (particle->children == NULL) {
+	xmlSchemaPErr(ctxt, GET_NODE(particle),
+	    XML_SCHEMAP_INTERNAL,
+	    "Internal error: xmlSchemaBuildAContentModel, "
+	    "no term on particle.\n", NULL, NULL);
+	return;
+    }
+
+    switch (particle->children->type) {
+	case XML_SCHEMA_TYPE_ANY: {
 	    xmlAutomataStatePtr start, end;
 	    xmlSchemaWildcardPtr wild;	    
 	    xmlSchemaWildcardNsPtr ns;
 
-	    wild = type->attributeWildcard;
-
-	    if (wild == NULL) {
-		xmlSchemaPErr(ctxt, type->node, XML_SCHEMAP_INTERNAL,
-		    "Internal error: xmlSchemaBuildAContentModel, "
-		    "no wildcard on xsd:any.\n", NULL, NULL);
-		return;
-	    }	     
+	    wild = (xmlSchemaWildcardPtr) particle->children;
 	    
 	    start = ctxt->state;
 	    end = xmlAutomataNewState(ctxt->am);
 	    
-	    if (type->maxOccurs == 1) {		
+	    if (particle->maxOccurs == 1) {		
 		if (wild->any == 1) {
 		    /*
 		    * We need to add both transitions:
@@ -9819,14 +10813,14 @@
 		    */		    
 		    ctxt->state = 
 			xmlAutomataNewTransition2(ctxt->am,
-			start, NULL, BAD_CAST "*", BAD_CAST "*", type);
+			start, NULL, BAD_CAST "*", BAD_CAST "*", wild);
 		    xmlAutomataNewEpsilon(ctxt->am, ctxt->state, end);
 		    /*
 		    * 2. the {"*"} for elements in no namespace.
 		    */
 		    ctxt->state = 
 			xmlAutomataNewTransition2(ctxt->am,
-			start, NULL, BAD_CAST "*", NULL, type);
+			start, NULL, BAD_CAST "*", NULL, wild);
 		    xmlAutomataNewEpsilon(ctxt->am, ctxt->state, end);
 
 		} else if (wild->nsSet != NULL) {
@@ -9834,7 +10828,7 @@
 		    do {
 			ctxt->state = start;
 			ctxt->state = xmlAutomataNewTransition2(ctxt->am,
-			    ctxt->state, NULL, BAD_CAST "*", ns->value, type);
+			    ctxt->state, NULL, BAD_CAST "*", ns->value, wild);
 			xmlAutomataNewEpsilon(ctxt->am, ctxt->state, end);
 			ns = ns->next;
 		    } while (ns != NULL);
@@ -9844,36 +10838,36 @@
 
 		    deadEnd = xmlAutomataNewState(ctxt->am);
 		    ctxt->state = xmlAutomataNewTransition2(ctxt->am,
-			start, deadEnd, BAD_CAST "*", wild->negNsSet->value, type);
+			start, deadEnd, BAD_CAST "*", wild->negNsSet->value, wild);
 		    ctxt->state = xmlAutomataNewTransition2(ctxt->am,
-			start, NULL, BAD_CAST "*", BAD_CAST "*", type);
+			start, NULL, BAD_CAST "*", BAD_CAST "*", wild);
 		    xmlAutomataNewEpsilon(ctxt->am, ctxt->state, end);
 		}		
 	    } else {
 		int counter;
 		xmlAutomataStatePtr hop;
 		int maxOccurs = 
-		    type->maxOccurs == UNBOUNDED ? UNBOUNDED : type->maxOccurs - 1;
+		    particle->maxOccurs == UNBOUNDED ? UNBOUNDED : particle->maxOccurs - 1;
 		int minOccurs =
-		    type->minOccurs < 1 ? 0 : type->minOccurs - 1;
+		    particle->minOccurs < 1 ? 0 : particle->minOccurs - 1;
 		
 		counter = xmlAutomataNewCounter(ctxt->am, minOccurs, maxOccurs);
 		hop = xmlAutomataNewState(ctxt->am);		
 		if (wild->any == 1) {		    
 		    ctxt->state =
 			xmlAutomataNewTransition2(ctxt->am,
-			start, NULL, BAD_CAST "*", BAD_CAST "*", type);
+			start, NULL, BAD_CAST "*", BAD_CAST "*", wild);
 		    xmlAutomataNewEpsilon(ctxt->am, ctxt->state, hop);
 		    ctxt->state = 
 			xmlAutomataNewTransition2(ctxt->am,
-			start, NULL, BAD_CAST "*", NULL, type);
+			start, NULL, BAD_CAST "*", NULL, wild);
 		    xmlAutomataNewEpsilon(ctxt->am, ctxt->state, hop);
 		} else if (wild->nsSet != NULL) {		    
 		    ns = wild->nsSet;
 		    do {
 			ctxt->state = 
 			    xmlAutomataNewTransition2(ctxt->am,
-				start, NULL, BAD_CAST "*", ns->value, type);
+				start, NULL, BAD_CAST "*", ns->value, wild);
 			xmlAutomataNewEpsilon(ctxt->am, ctxt->state, hop);
 			ns = ns->next;
 		    } while (ns != NULL);
@@ -9883,15 +10877,15 @@
 
 		    deadEnd = xmlAutomataNewState(ctxt->am);
 		    ctxt->state = xmlAutomataNewTransition2(ctxt->am,
-			start, deadEnd, BAD_CAST "*", wild->negNsSet->value, type);
+			start, deadEnd, BAD_CAST "*", wild->negNsSet->value, wild);
 		    ctxt->state = xmlAutomataNewTransition2(ctxt->am,
-			start, NULL, BAD_CAST "*", BAD_CAST "*", type);
+			start, NULL, BAD_CAST "*", BAD_CAST "*", wild);
 		    xmlAutomataNewEpsilon(ctxt->am, ctxt->state, hop);
 		}	
 		xmlAutomataNewCountedTrans(ctxt->am, hop, start, counter);
 		xmlAutomataNewCounterTrans(ctxt->am, hop, end, counter);
 	    }
-	    if (type->minOccurs == 0) {
+	    if (particle->minOccurs == 0) {
 		xmlAutomataNewEpsilon(ctxt->am, start, end);
 	    }	    	    				            
 	    ctxt->state = end;
@@ -9899,35 +10893,10 @@
 	}
         case XML_SCHEMA_TYPE_ELEMENT:{
 		xmlAutomataStatePtr oldstate;
-                xmlSchemaElementPtr particle, elemDecl;
+                xmlSchemaElementPtr elemDecl;
 
-		/*
-		* IMPORTANT: This puts element declarations
-		* (and never element decl. references) into the
-		* automaton. This is crucial and should not be changed, 
-		* since validating functions rely now on it.
-		*/
-		particle = (xmlSchemaElementPtr) type;
-		if (particle->ref != NULL) {
-		    if (particle->refDecl == NULL) {
-			/*
-			* Skip content model creation if the reference
-			* did not resolve to a declaration.
-			*/
-			break;
-		    } else {
-			/*
-			* Referenced global element declaration.
-			*/
-			elemDecl = particle->refDecl;
-		    }
-		} else {
-		    /*
-		    * Anonymous element declaration.
-		    */
-		    elemDecl = particle;
-		}
-		
+		elemDecl = (xmlSchemaElementPtr) particle->children;		
+
                 oldstate = ctxt->state;
 
                 if (particle->maxOccurs >= UNBOUNDED) {
@@ -10011,41 +10980,39 @@
                 break;
             }
         case XML_SCHEMA_TYPE_SEQUENCE:{
-                xmlSchemaTypePtr subtypes;
+                xmlSchemaTreeItemPtr sub;
 
                 /*
                  * If max and min occurances are default (1) then
-                 * simply iterate over the subtypes
+                 * simply iterate over the particles of the <sequence>.
                  */
-                if ((type->minOccurs == 1) && (type->maxOccurs == 1)) {
-                    subtypes = type->subtypes;
-                    while (subtypes != NULL) {
-                        xmlSchemaBuildAContentModel(subtypes, ctxt, name);
-                        subtypes = subtypes->next;
+                if ((particle->minOccurs == 1) && (particle->maxOccurs == 1)) {
+                    sub = particle->children->children;
+                    while (sub != NULL) {
+                        xmlSchemaBuildAContentModel(ctxt,
+			    (xmlSchemaParticlePtr) sub, name);
+                        sub = sub->next;
                     }
                 } else {
                     xmlAutomataStatePtr oldstate = ctxt->state;
 
-                    if (type->maxOccurs >= UNBOUNDED) {
-                        if (type->minOccurs > 1) {
+                    if (particle->maxOccurs >= UNBOUNDED) {
+                        if (particle->minOccurs > 1) {
                             xmlAutomataStatePtr tmp;
                             int counter;
 
                             ctxt->state = xmlAutomataNewEpsilon(ctxt->am,
-                                                                oldstate,
-                                                                NULL);
+				oldstate, NULL);
                             oldstate = ctxt->state;
 
                             counter = xmlAutomataNewCounter(ctxt->am,
-                                                            type->
-                                                            minOccurs - 1,
-                                                            UNBOUNDED);
+				particle->minOccurs - 1, UNBOUNDED);
 
-                            subtypes = type->subtypes;
-                            while (subtypes != NULL) {
-                                xmlSchemaBuildAContentModel(subtypes, ctxt,
-                                                            name);
-                                subtypes = subtypes->next;
+                            sub = particle->children->children;
+                            while (sub != NULL) {
+                                xmlSchemaBuildAContentModel(ctxt,
+				    (xmlSchemaParticlePtr) sub, name);
+                                sub = sub->next;
                             }
                             tmp = ctxt->state;
                             xmlAutomataNewCountedTrans(ctxt->am, tmp,
@@ -10055,60 +11022,56 @@
                                                            NULL, counter);
 
                         } else {
-                            subtypes = type->subtypes;
-                            while (subtypes != NULL) {
-                                xmlSchemaBuildAContentModel(subtypes, ctxt,
-                                                            name);
-                                subtypes = subtypes->next;
+			    sub = particle->children->children;
+                            while (sub != NULL) {
+                                xmlSchemaBuildAContentModel(ctxt,
+				    (xmlSchemaParticlePtr) sub, name);
+                                sub = sub->next;
                             }
                             xmlAutomataNewEpsilon(ctxt->am, ctxt->state,
                                                   oldstate);
-                            if (type->minOccurs == 0) {
-                                xmlAutomataNewEpsilon(ctxt->am, oldstate,
-                                                      ctxt->state);
+                            if (particle->minOccurs == 0) {
+                                xmlAutomataNewEpsilon(ctxt->am,
+				    oldstate, ctxt->state);
                             }
                         }
-                    } else if ((type->maxOccurs > 1)
-                               || (type->minOccurs > 1)) {
+                    } else if ((particle->maxOccurs > 1)
+                               || (particle->minOccurs > 1)) {
                         xmlAutomataStatePtr tmp;
                         int counter;
 
                         ctxt->state = xmlAutomataNewEpsilon(ctxt->am,
-                                                            oldstate,
-                                                            NULL);
+			    oldstate, NULL);
                         oldstate = ctxt->state;
 
                         counter = xmlAutomataNewCounter(ctxt->am,
-                                                        type->minOccurs -
-                                                        1,
-                                                        type->maxOccurs -
-                                                        1);
+			    particle->minOccurs - 1,
+			    particle->maxOccurs - 1);
 
-                        subtypes = type->subtypes;
-                        while (subtypes != NULL) {
-                            xmlSchemaBuildAContentModel(subtypes, ctxt,
-                                                        name);
-                            subtypes = subtypes->next;
+                        sub = particle->children->children;
+                        while (sub != NULL) {
+                            xmlSchemaBuildAContentModel(ctxt,
+				(xmlSchemaParticlePtr) sub, name);
+                            sub = sub->next;
                         }
                         tmp = ctxt->state;
-                        xmlAutomataNewCountedTrans(ctxt->am, tmp, oldstate,
-                                                   counter);
+                        xmlAutomataNewCountedTrans(ctxt->am,
+			    tmp, oldstate, counter);
                         ctxt->state =
                             xmlAutomataNewCounterTrans(ctxt->am, tmp, NULL,
                                                        counter);
-                        if (type->minOccurs == 0) {
-                            xmlAutomataNewEpsilon(ctxt->am, oldstate,
-                                                  ctxt->state);
+                        if (particle->minOccurs == 0) {
+                            xmlAutomataNewEpsilon(ctxt->am,
+				oldstate, ctxt->state);
                         }
-
                     } else {
-                        subtypes = type->subtypes;
-                        while (subtypes != NULL) {
-                            xmlSchemaBuildAContentModel(subtypes, ctxt,
-                                                        name);
-                            subtypes = subtypes->next;
+                        sub = particle->children->children;
+                        while (sub != NULL) {
+                            xmlSchemaBuildAContentModel(ctxt,
+				(xmlSchemaParticlePtr) sub, name);
+                            sub = sub->next;
                         }
-                        if (type->minOccurs == 0) {
+                        if (particle->minOccurs == 0) {
                             xmlAutomataNewEpsilon(ctxt->am, oldstate,
                                                   ctxt->state);
                         }
@@ -10117,7 +11080,7 @@
                 break;
             }
         case XML_SCHEMA_TYPE_CHOICE:{
-                xmlSchemaTypePtr subtypes;
+                xmlSchemaTreeItemPtr sub;
                 xmlAutomataStatePtr start, end;
 
                 start = ctxt->state;
@@ -10127,21 +11090,22 @@
                  * iterate over the subtypes and remerge the end with an
                  * epsilon transition
                  */
-                if (type->maxOccurs == 1) {
-                    subtypes = type->subtypes;
-                    while (subtypes != NULL) {
+                if (particle->maxOccurs == 1) {
+		    sub = particle->children->children;
+                    while (sub != NULL) {
                         ctxt->state = start;
-                        xmlSchemaBuildAContentModel(subtypes, ctxt, name);
+                        xmlSchemaBuildAContentModel(ctxt,
+			    (xmlSchemaParticlePtr) sub, name);
                         xmlAutomataNewEpsilon(ctxt->am, ctxt->state, end);
-                        subtypes = subtypes->next;
+                        sub = sub->next;
                     }
                 } else {
                     int counter;
                     xmlAutomataStatePtr hop;
-                    int maxOccurs = type->maxOccurs == UNBOUNDED ?
-                        UNBOUNDED : type->maxOccurs - 1;
+                    int maxOccurs = particle->maxOccurs == UNBOUNDED ?
+                        UNBOUNDED : particle->maxOccurs - 1;
                     int minOccurs =
-                        type->minOccurs < 1 ? 0 : type->minOccurs - 1;
+                        particle->minOccurs < 1 ? 0 : particle->minOccurs - 1;
 
                     /*
                      * use a counter to keep track of the number of transtions
@@ -10152,19 +11116,20 @@
                                               maxOccurs);
                     hop = xmlAutomataNewState(ctxt->am);
 
-                    subtypes = type->subtypes;
-                    while (subtypes != NULL) {
+		    sub = particle->children->children;
+                    while (sub != NULL) {
                         ctxt->state = start;
-                        xmlSchemaBuildAContentModel(subtypes, ctxt, name);
+                        xmlSchemaBuildAContentModel(ctxt,
+			    (xmlSchemaParticlePtr) sub, name);
                         xmlAutomataNewEpsilon(ctxt->am, ctxt->state, hop);
-                        subtypes = subtypes->next;
+                        sub = sub->next;
                     }
                     xmlAutomataNewCountedTrans(ctxt->am, hop, start,
                                                counter);
                     xmlAutomataNewCounterTrans(ctxt->am, hop, end,
                                                counter);
                 }
-                if (type->minOccurs == 0) {
+                if (particle->minOccurs == 0) {
                     xmlAutomataNewEpsilon(ctxt->am, start, end);
                 }
                 ctxt->state = end;
@@ -10172,46 +11137,40 @@
             }
         case XML_SCHEMA_TYPE_ALL:{
                 xmlAutomataStatePtr start;
-		xmlSchemaElementPtr elemDecl, particle;
+		xmlSchemaParticlePtr sub;
+		xmlSchemaElementPtr elemDecl;
                 int lax;
-
-                particle = (xmlSchemaElementPtr) type->subtypes;
-                if (particle == NULL)
+                
+		sub = (xmlSchemaParticlePtr) particle->children->children;
+                if (sub == NULL)
                     break;
                 start = ctxt->state;
-                while (particle != NULL) {
+                while (sub != NULL) {
                     ctxt->state = start;
+
+		    elemDecl = (xmlSchemaElementPtr) sub->children;
+		    if (elemDecl == NULL) {
+			xmlSchemaPErr(ctxt, NULL,
+			    XML_SCHEMAP_INTERNAL,
+			    "Internal error: xmlSchemaBuildAContentModel, "
+			    "<element> particle a NULL term.\n", NULL, NULL);
+			return;
+		    };                    		  
 		    /*
-		     * Changed to put the element declaration and
-		     * never the element decl. reference into the
-		     * automaton. This fixes bug 139897 and bug 167754.
-		     */
-		    if (particle->ref != NULL) {
-			if (particle->refDecl == NULL) {
-			    /*
-			    * TODO: Note that we break on missing
-			    * sub-components.
-			    */
-			    break;
-			} else
-			    elemDecl = particle->refDecl;
-		    } else
-			elemDecl = particle;                    		  
-		    /*
 		    * NOTE: The {max occurs} of all the particles in the 
 		    * {particles} of the group must be 0 or 1; this is
 		    * already ensured during the parse of the content of
 		    * <all>.
 		    */                    
-                    if ((particle->minOccurs == 1) &&
-			(particle->maxOccurs == 1)) {
+                    if ((sub->minOccurs == 1) &&
+			(sub->maxOccurs == 1)) {
                         xmlAutomataNewOnceTrans2(ctxt->am, ctxt->state,
                                                 ctxt->state, 
 						elemDecl->name, 
 						elemDecl->targetNamespace,
 						1, 1, elemDecl);
-                    } else if ((particle->minOccurs == 0) &&
-			(particle->maxOccurs == 1)) {
+                    } else if ((sub->minOccurs == 0) &&
+			(sub->maxOccurs == 1)) {
 			
                         xmlAutomataNewCountTrans2(ctxt->am, ctxt->state,
                                                  ctxt->state, 
@@ -10221,125 +11180,42 @@
                                                  1,
                                                  elemDecl);
                     }
-                    particle = (xmlSchemaElementPtr) particle->next;
+                    sub = (xmlSchemaParticlePtr) sub->next;
                 }
-                lax = type->minOccurs == 0;
+                lax = particle->minOccurs == 0;
                 ctxt->state =
-                    xmlAutomataNewAllTrans(ctxt->am, ctxt->state, NULL,
-                                           lax);
+                    xmlAutomataNewAllTrans(ctxt->am, ctxt->state, NULL, lax);
                 break;
             }
-        case XML_SCHEMA_TYPE_RESTRICTION:
-            if (type->subtypes != NULL)
-                xmlSchemaBuildAContentModel(type->subtypes, ctxt, name);
-            break;
-        case XML_SCHEMA_TYPE_EXTENSION:
-            if (type->baseType != NULL) {
-                xmlSchemaTypePtr subtypes;
-		
-		/*
-		* TODO: Circular definitions will be checked at the
-		* constraint level. So remove this when the complex type
-		* constraints are implemented.
-		*/
-		if (type->recurse) { 
-		    /* TODO: Change the error code. */
-		    xmlSchemaPCustomErr(ctxt,
-			    XML_SCHEMAP_UNKNOWN_BASE_TYPE,
-			    NULL, type, type->node,	
-			    "This item is circular", NULL);		     
-		    return; 
-                }
-                type->recurse = 1; 
-                xmlSchemaBuildAContentModel(type->baseType, ctxt, name);
-            	type->recurse = 0;
-                subtypes = type->subtypes;
-                while (subtypes != NULL) {
-                    xmlSchemaBuildAContentModel(subtypes, ctxt, name);
-                    subtypes = subtypes->next;
-                }
-            } else if (type->subtypes != NULL)
-                xmlSchemaBuildAContentModel(type->subtypes, ctxt, name);
-            break;
-        case XML_SCHEMA_TYPE_GROUP:
-	    /*
-	    * Handle model group definition references. 
-	    * NOTE: type->subtypes is the referenced model grop definition;
-	    * and type->subtypes->subtypes is the model group (i.e. <all> or 
-	    * <choice> or <sequence>).
-	    */
-	    if ((type->ref != NULL) && (type->subtypes != NULL) &&
-		(type->subtypes->subtypes != NULL)) {
-		xmlSchemaTypePtr modelGr;
-                xmlAutomataStatePtr start, end;
-
-		modelGr = type->subtypes->subtypes;
-                start = ctxt->state;
-                end = xmlAutomataNewState(ctxt->am);		
-                if (type->maxOccurs == 1) {
-		    ctxt->state = start;
-		    xmlSchemaBuildAContentModel(modelGr, ctxt, name);
-		    xmlAutomataNewEpsilon(ctxt->am, ctxt->state, end);
-                } else {
-                    int counter;
-                    xmlAutomataStatePtr hop;
-                    int maxOccurs = type->maxOccurs == UNBOUNDED ?
-				    UNBOUNDED : type->maxOccurs - 1;
-                    int minOccurs =
-                        type->minOccurs < 1 ? 0 : type->minOccurs - 1;
-		    
-                    counter =
-                        xmlAutomataNewCounter(ctxt->am, minOccurs, maxOccurs);
-                    hop = xmlAutomataNewState(ctxt->am);		                        
-                    ctxt->state = start;
-                    xmlSchemaBuildAContentModel(modelGr, ctxt, name);
-                    xmlAutomataNewEpsilon(ctxt->am, ctxt->state, hop);
-                    xmlAutomataNewCountedTrans(ctxt->am, hop, start,
-			counter);
-                    xmlAutomataNewCounterTrans(ctxt->am, hop, end,
-			counter);
-                }
-                if (type->minOccurs == 0) {
-                    xmlAutomataNewEpsilon(ctxt->am, start, end);
-                }
-                ctxt->state = end;
-                break;
-	    }
-	    break;
-        case XML_SCHEMA_TYPE_COMPLEX:
-        case XML_SCHEMA_TYPE_COMPLEX_CONTENT:
-            if (type->subtypes != NULL)
-                xmlSchemaBuildAContentModel(type->subtypes, ctxt, name);
-            break;
-	case XML_SCHEMA_TYPE_SIMPLE_CONTENT:
-	    break;
         default:
             xmlGenericError(xmlGenericErrorContext,
-                            "Found unexpected type %d in %s content model\n",
-                            type->type, name);
+		"Internal error: xmlSchemaBuildAContentModel, found "
+		"unexpected term of type %d in content model of complex "
+		"type '%s'.\n",
+		particle->children->type, name);
             return;
     }
 }
 
 /**
  * xmlSchemaBuildContentModel:
- * @type:  the type definition (or reference)
  * @ctxt:  the schema parser context
+ * @type:  the complex type definition 
  * @name:  the element name
  *
  * Builds the content model of the complex type.
  */
 static void
 xmlSchemaBuildContentModel(xmlSchemaTypePtr type,
-                           xmlSchemaParserCtxtPtr ctxt,
+			   xmlSchemaParserCtxtPtr ctxt,
                            const xmlChar * name)
 {
     xmlAutomataStatePtr start;
 
-    if ((type->type != XML_SCHEMA_TYPE_COMPLEX) || (type->ref != NULL) ||
-	(type->contentType == XML_SCHEMA_CONTENT_BASIC) ||
-	(type->contentType == XML_SCHEMA_CONTENT_SIMPLE) ||
-	(type->contModel != NULL))
+    if ((type->type != XML_SCHEMA_TYPE_COMPLEX) ||
+	(type->contModel != NULL) ||
+	((type->contentType != XML_SCHEMA_CONTENT_ELEMENTS) &&
+	(type->contentType != XML_SCHEMA_CONTENT_MIXED)))
 	return;
 
 #ifdef DEBUG_CONTENT
@@ -10350,11 +11226,11 @@
     ctxt->am = xmlNewAutomata();
     if (ctxt->am == NULL) {
         xmlGenericError(xmlGenericErrorContext,
-                        "Cannot create automata for complex tpye %s\n", name);
+	    "Cannot create automata for complex type %s\n", name);
         return;
     }
     start = ctxt->state = xmlAutomataGetInitState(ctxt->am);
-    xmlSchemaBuildAContentModel(type, ctxt, name);
+    xmlSchemaBuildAContentModel(ctxt, (xmlSchemaParticlePtr) type->subtypes, name);    
     xmlAutomataSetFinalState(ctxt->am, ctxt->state);
     type->contModel = xmlAutomataCompile(ctxt->am);
     if (type->contModel == NULL) {
@@ -10371,7 +11247,7 @@
     } else {
 #ifdef DEBUG_CONTENT_REGEXP
         xmlGenericError(xmlGenericErrorContext,
-                        "Content model of %s:\n", name);
+                        "Content model of %s:\n", type->name);
         xmlRegexpPrint(stderr, type->contModel);
 #endif
     }
@@ -10381,7 +11257,7 @@
 }
 
 /**
- * xmlSchemaRefFixupCallback:
+ * xmlSchemaElementFixup:
  * @elem:  the schema element context
  * @ctxt:  the schema parser context
  *
@@ -10390,7 +11266,7 @@
  * term. 
  */
 static void
-xmlSchemaRefFixupCallback(xmlSchemaElementPtr elem,
+xmlSchemaElementFixup(xmlSchemaElementPtr elem,
                           xmlSchemaParserCtxtPtr ctxt,
                           const xmlChar * name ATTRIBUTE_UNUSED,
                           const xmlChar * context ATTRIBUTE_UNUSED,
@@ -10400,224 +11276,128 @@
 	((elem != NULL) && (elem->flags & XML_SCHEMAS_ELEM_INTERNAL_RESOLVED)))
         return;
     elem->flags |= XML_SCHEMAS_ELEM_INTERNAL_RESOLVED;
-    if (elem->ref != NULL) {
-        xmlSchemaElementPtr elemDecl;
-
+    
+    if ((elem->subtypes == NULL) && (elem->namedType != NULL)) {
+	xmlSchemaTypePtr type;
+	
+	/* (type definition) ... otherwise the type definition ·resolved· 
+	* to by the ·actual value· of the type [attribute] ...
+	*/	    	    
+	type = xmlSchemaGetType(ctxt->schema, elem->namedType,
+	    elem->namedTypeNs);	    
+	if (type == NULL) {	
+	    xmlSchemaPResCompAttrErr(ctxt,
+		XML_SCHEMAP_SRC_RESOLVE,
+		NULL, (xmlSchemaTypePtr) elem, elem->node,
+		"type", elem->namedType, elem->namedTypeNs,
+		XML_SCHEMA_TYPE_BASIC, "type definition");
+	} else
+	    elem->subtypes = type;
+    }
+    if (elem->substGroup != NULL) {
+	xmlSchemaElementPtr substHead;
+	
 	/*
-	* TODO: Evaluate, what errors could occur if the declaration is not
-	* found. It might be possible that the "typefixup" might crash if
-	* no ref declaration was found.
+	* FIXME TODO: Do we need a new field in _xmlSchemaElement for 
+	* substitutionGroup?
 	*/
-        elemDecl = xmlSchemaGetElem(ctxt->schema, elem->ref, elem->refNs);
-        if (elemDecl == NULL) {	  
+	substHead = xmlSchemaGetElem(ctxt->schema, elem->substGroup, 
+	    elem->substGroupNs);	    
+	if (substHead == NULL) {
 	    xmlSchemaPResCompAttrErr(ctxt,
 		XML_SCHEMAP_SRC_RESOLVE,
-		NULL, (xmlSchemaTypePtr) elem, elem->node,
-		"ref", elem->ref, elem->refNs, 
+		NULL, (xmlSchemaTypePtr) elem, NULL,
+		"substitutionGroup", elem->substGroup, elem->substGroupNs,
 		XML_SCHEMA_TYPE_ELEMENT, NULL);
-        } else
-	    elem->refDecl = elemDecl;	
-    } else {	
-	if ((elem->subtypes == NULL) && (elem->namedType != NULL)) {
-	    xmlSchemaTypePtr type;
-	    
-	    /* (type definition) ... otherwise the type definition ·resolved· 
-	    * to by the ·actual value· of the type [attribute] ...
-	    */	    	    
-	    type = xmlSchemaGetType(ctxt->schema, elem->namedType,
-		elem->namedTypeNs);	    
-	    if (type == NULL) {	
-		xmlSchemaPResCompAttrErr(ctxt,
-		    XML_SCHEMAP_SRC_RESOLVE,
-		    NULL, (xmlSchemaTypePtr) elem, elem->node,
-		    "type", elem->namedType, elem->namedTypeNs,
-		    XML_SCHEMA_TYPE_BASIC, "type definition");
-	    } else
-		elem->subtypes = type;
-	}
-	if (elem->substGroup != NULL) {
-	    xmlSchemaElementPtr substHead;
-	    
+	} else {
+	    xmlSchemaElementFixup(substHead, ctxt, NULL, NULL, NULL);
 	    /*
-	    * FIXME TODO: Do we need a new field in _xmlSchemaElement for 
-	    * substitutionGroup?
+	    * (type definition)...otherwise the {type definition} of the 
+	    * element declaration ·resolved· to by the ·actual value· of 
+	    * the substitutionGroup [attribute], if present
 	    */
-	    substHead = xmlSchemaGetElem(ctxt->schema, elem->substGroup, 
-		elem->substGroupNs);	    
-	    if (substHead == NULL) {
-		xmlSchemaPResCompAttrErr(ctxt,
-		    XML_SCHEMAP_SRC_RESOLVE,
-		    NULL, (xmlSchemaTypePtr) elem, NULL,
-		    "substitutionGroup", elem->substGroup, elem->substGroupNs,
-		    XML_SCHEMA_TYPE_ELEMENT, NULL);
-	    } else {
-		xmlSchemaRefFixupCallback(substHead, ctxt, NULL, NULL, NULL);
-		/*
-		* (type definition)...otherwise the {type definition} of the 
-		* element declaration ·resolved· to by the ·actual value· of 
-		* the substitutionGroup [attribute], if present
-		*/
-		if (elem->subtypes == NULL) 
-		    elem->subtypes = substHead->subtypes;
-	    }
+	    if (elem->subtypes == NULL) 
+		elem->subtypes = substHead->subtypes;
 	}
-	if ((elem->subtypes == NULL) && (elem->namedType == NULL) &&
-	    (elem->substGroup == NULL))
-	    elem->subtypes = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYTYPE);
-    }    
+    }
+    if ((elem->subtypes == NULL) && (elem->namedType == NULL) &&
+	(elem->substGroup == NULL))
+	elem->subtypes = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYTYPE);
 }
 
 /**
- * xmlSchemaParseListRefFixup:
- * @type:  the schema type definition
+ * xmlSchemaResolveUnionMemberTypes:
  * @ctxt:  the schema parser context
+ * @type:  the schema simple type definition
  *
- * Fixup of the itemType reference of the list type.
- */
-static void
-xmlSchemaParseListRefFixup(xmlSchemaTypePtr type, xmlSchemaParserCtxtPtr ctxt)
-{    
-    
-    if (((type->base == NULL) && 
-	 (type->subtypes == NULL)) ||
-	((type->base != NULL) &&
-	 (type->subtypes != NULL))) {	
-	/*
-	* src-list-itemType-or-simpleType
-	* Either the itemType [attribute] or the <simpleType> [child] of 
-	* the <list> element must be present, but not both. 
-	*/
-	/*
-	* TODO: Move this to the parse function.
-	*/
-	xmlSchemaPCustomErr(ctxt,
-	    XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE,
-	    NULL, type, type->node, 
-	    "The attribute 'itemType' and the <simpleType> child "
-	    "are mutually exclusive", NULL);	
-    } else if (type->base!= NULL) {        	
-        type->subtypes = xmlSchemaGetType(ctxt->schema, type->base, type->baseNs);
-        if (type->subtypes == NULL) {
-	    xmlSchemaPResCompAttrErr(ctxt,	    
-		XML_SCHEMAP_SRC_RESOLVE,
-		NULL, type, type->node,
-		"itemType", type->base, type->baseNs,
-		XML_SCHEMA_TYPE_SIMPLE, NULL);
-        }
-    }               
-    if ((type->subtypes != NULL) && 
-	(type->subtypes->contentType == XML_SCHEMA_CONTENT_UNKNOWN))
-	xmlSchemaTypeFixup(type->subtypes, ctxt, NULL);
-}
-
-/**
- * xmlSchemaParseUnionRefCheck:
- * @typeDecl:  the schema type definition
- * @ctxt:  the schema parser context
- *
- * Checks and builds the memberTypes of the union type.
+ * Checks and builds the memberTypes of the union simple type.
  * Returns -1 in case of an internal error, 0 otherwise.
  */
 static int
-xmlSchemaParseUnionRefCheck(xmlSchemaTypePtr type,
-                   xmlSchemaParserCtxtPtr ctxt)
+xmlSchemaResolveUnionMemberTypes(xmlSchemaParserCtxtPtr ctxt,
+				 xmlSchemaTypePtr type)
 {
     
-    xmlSchemaTypeLinkPtr link, lastLink = NULL, prevLink, subLink, newLink;
-    xmlSchemaTypePtr memberType, ctxtType;
+    xmlSchemaTypeLinkPtr link, lastLink, prevLink, subLink, newLink;
+    xmlSchemaTypePtr memberType;
 
     /* 1 If the <union> alternative is chosen, then [Definition:]  
     * define the explicit members as the type definitions ·resolved· 
     * to by the items in the ·actual value· of the memberTypes [attribute], 
     * if any, followed by the type definitions corresponding to the 
     * <simpleType>s among the [children] of <union>, if any. 
-    */   
-
-    if (type->type != XML_SCHEMA_TYPE_UNION)
-        return (-1);
-    if (ctxt->ctxtType == NULL) {
-	xmlSchemaPErr(ctxt, type->node,
-	    XML_SCHEMAP_INTERNAL,
-	    "Internal error: xmlSchemaParseUnionRefCheck, no parent type "
-	    "available", NULL, NULL);
-	return (-1);
-    }
+    */
     /*
-    * src-union-memberTypes-or-simpleTypes
-    * Either the memberTypes [attribute] of the <union> element must 
-    * be non-empty or there must be at least one simpleType [child]. 
+    * Resolve references.
     */
-    if ((type->base == NULL) && 
-	(type->subtypes == NULL)) {
-	xmlSchemaPCustomErr(ctxt, 
-	    XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES,
-	    NULL, NULL, type->node,	
-	    "Either the attribute 'memberTypes' must be non-empty "
-	    "or there must be at least one <simpleType> child", NULL);
-    } 
-	
-    ctxtType = ctxt->ctxtType;
-    if (type->base != NULL) {
-	xmlAttrPtr attr;
-	const xmlChar *cur, *end;
-	xmlChar *tmp;
-	const xmlChar *localName, *uri;
+    link = type->memberTypes; 
+    lastLink = NULL;
+    while (link != NULL) {
+	const xmlChar *name, *nsName;
 
-	attr = xmlSchemaGetPropNode(type->node, "memberTypes");
-	cur = type->base;
-	do {
-	    while (IS_BLANK_CH(*cur))
-		cur++;
-	    end = cur;
-	    while ((*end != 0) && (!(IS_BLANK_CH(*end))))
-		end++;
-	    if (end == cur)
-		break;
-	    tmp = xmlStrndup(cur, end - cur);
-	    xmlSchemaPValAttrNodeQNameValue(ctxt, ctxt->schema, NULL, 
-		NULL, attr, BAD_CAST tmp, &uri, NULL, &localName);	   
-	    memberType = xmlSchemaGetType(ctxt->schema, localName, uri);
-	    if (memberType == NULL) {
-		xmlSchemaPResCompAttrErr(ctxt,
-		    XML_SCHEMAP_UNKNOWN_MEMBER_TYPE,
-		    NULL, NULL, type->node, "memberTypes", localName, uri,
-		    XML_SCHEMA_TYPE_SIMPLE, NULL);
-	    } else {
-		if (memberType->contentType == XML_SCHEMA_CONTENT_UNKNOWN) 
-		    xmlSchemaTypeFixup(memberType, ctxt, NULL);	    
-		link = (xmlSchemaTypeLinkPtr) xmlMalloc(sizeof(xmlSchemaTypeLink));
-		if (link == NULL) {
-		    xmlSchemaPErrMemory(ctxt, "allocating a type link", NULL);
-		    return (-1);
-		}
-		link->type = memberType;
-		link->next = NULL;
-		if (lastLink == NULL)
-		    ctxtType->memberTypes = link;		    
-		else 
-		    lastLink->next = link;
-		lastLink = link;	    
-	    }
-	    xmlFree(tmp);
-	    cur = end;
-	} while (*cur != 0); 
-    }
+	name = ((xmlSchemaQNameRefPtr) link->type)->name;
+	nsName = ((xmlSchemaQNameRefPtr) link->type)->targetNamespace;
+
+	memberType = xmlSchemaGetType(ctxt->schema, name, nsName);
+	if ((memberType == NULL) || (! IS_SIMPLE_TYPE(memberType))) {
+	    xmlSchemaPResCompAttrErr(ctxt, XML_SCHEMAP_SRC_RESOLVE,
+		NULL, type, type->node, "memberTypes",
+		name, nsName, XML_SCHEMA_TYPE_SIMPLE, NULL);
+	    /*
+	    * Remove the member type link.
+	    */
+	    if (lastLink == NULL)
+		type->memberTypes = link->next;
+	    else
+		lastLink->next = link->next;
+	    newLink = link;
+	    link = link->next;
+	    xmlFree(newLink);
+	} else {
+	    link->type = memberType;
+	    if (IS_NOT_TYPEFIXED(memberType))
+		xmlSchemaTypeFixup(memberType, ctxt, NULL);
+	    
+	    lastLink = link;
+	    link = link->next;
+	}		
+    }  
     /*
     * Add local simple types,
     */    
     memberType = type->subtypes;
-    while (memberType != NULL) {
-	if (memberType->contentType == XML_SCHEMA_CONTENT_UNKNOWN)
-	    xmlSchemaTypeFixup(memberType, ctxt, NULL);	    
+    while (memberType != NULL) {	
 	link = (xmlSchemaTypeLinkPtr) xmlMalloc(sizeof(xmlSchemaTypeLink));
 	if (link == NULL) {
 	    xmlSchemaPErrMemory(ctxt, "allocating a type link", NULL);
 	    return (-1);
 	}
+	if (IS_NOT_TYPEFIXED(memberType))
+	    xmlSchemaTypeFixup(memberType, ctxt, NULL);
 	link->type = memberType;
 	link->next = NULL;
 	if (lastLink == NULL)
-	    ctxtType->memberTypes = link;		    
+	    type->memberTypes = link;		    
 	else 
 	    lastLink->next = link;
 	lastLink = link;
@@ -10628,10 +11408,11 @@
     * definition in the ·explicit members· with the members of their 
     * {member type definitions}, in order.
     */
-    link = ctxtType->memberTypes;
+    link = type->memberTypes;
     while (link != NULL) {
+	/* TODO: type-fixup it. */
 	if (link->type->flags & XML_SCHEMAS_TYPE_VARIETY_UNION) {
-	    subLink = link->type->memberTypes;	    
+	    subLink = xmlSchemaGetUnionSimpleTypeMemberTypes(link->type);
 	    if (subLink != NULL) {		
 		link->type = subLink->type;
 		if (subLink->next != NULL) {
@@ -10738,6 +11519,9 @@
 static xmlSchemaTypePtr
 xmlSchemaGetBuiltInTypeAncestor(xmlSchemaTypePtr type)
 {
+    if ((type->flags & XML_SCHEMAS_TYPE_VARIETY_LIST) ||
+	(type->flags & XML_SCHEMAS_TYPE_VARIETY_UNION))
+	return (0);
     while (type != NULL) {
 	if (type->type == XML_SCHEMA_TYPE_BASIC)
 	    return (type);
@@ -10748,7 +11532,6 @@
 }
 #endif
 
-
 /**
  * xmlSchemaBuildAttributeUsesOwned:
  * @ctxt:  the schema parser context
@@ -11417,24 +12200,20 @@
 		if (*completeWild == NULL) {
 		    /*
 		    * Copy the first encountered wildcard as context, except for the annotation.
+		    *
+		    * Although the complete wildcard might not correspond to any
+		    * node in the schema, we will save this context node.
 		    */
-		    *completeWild = xmlSchemaAddWildcard(ctxt);
-		    (*completeWild)->type = XML_SCHEMA_TYPE_ANY_ATTRIBUTE;	   
+		    *completeWild = xmlSchemaAddWildcard(ctxt, ctxt->schema,
+			XML_SCHEMA_TYPE_ANY_ATTRIBUTE,
+			group->attributeWildcard->node);
 		    if (xmlSchemaCloneWildcardNsConstraints(ctxt, 
 			completeWild, group->attributeWildcard) == -1)
 			return (-1);
 		    (*completeWild)->processContents = group->attributeWildcard->processContents;
-		    /*
-		    * Although the complete wildcard might not correspond to any
-		    * node in the schema, we will save this context node.
-		    * TODO: Hmm, is this sane?
-		    */
-		    (*completeWild)->node = group->attributeWildcard->node;  
-		    
-		} else if (xmlSchemaIntersectWildcards(ctxt, *completeWild, group->attributeWildcard) == -1) {
-		    xmlSchemaFreeWildcard(*completeWild);
+		    (*completeWild)->node = group->attributeWildcard->node;
+		} else if (xmlSchemaIntersectWildcards(ctxt, *completeWild, group->attributeWildcard) == -1)
 		    return (-1);
-		}		
 	    }
 	}
 	attrs = attrs->next;
@@ -11624,8 +12403,6 @@
 	    * NOTE: This is the only case where an attribute 
             * wildcard is shared.
             */
-	    if (type->flags & XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD)
-		type->flags ^= XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD;
 	    type->attributeWildcard = baseType->attributeWildcard;
 	}
     }
@@ -11976,7 +12753,7 @@
      */
     if ((baseType != NULL) && (!baseIsAnyType) &&
 	(baseType->type == XML_SCHEMA_TYPE_COMPLEX) &&
-	(baseType->contentType == XML_SCHEMA_CONTENT_UNKNOWN)) {
+	(IS_NOT_TYPEFIXED(baseType))) {
 	xmlSchemaPErr(ctxt, baseType->node, XML_SCHEMAP_INTERNAL,
 	    "Internal error: xmlSchemaBuildAttributeValidation: "
 	    "attribute uses not builded on base type '%s'.\n",
@@ -12038,7 +12815,7 @@
 static xmlSchemaTypeLinkPtr
 xmlSchemaGetUnionSimpleTypeMemberTypes(xmlSchemaTypePtr type)
 {
-    while (type != NULL) {
+    while ((type != NULL) && (type->type == XML_SCHEMA_TYPE_SIMPLE)) {
 	if (type->memberTypes != NULL)
 	    return (type->memberTypes);
 	else
@@ -12065,22 +12842,78 @@
     */
     if (type->type == XML_SCHEMA_TYPE_BASIC) 
 	return (xmlSchemaGetBuiltInListSimpleTypeItemType(type));
-    if (type->subtypes->type == XML_SCHEMA_TYPE_LIST)
-	/* 1 If the <list> alternative is chosen, then the type 
-	* definition ·resolved· to by the ·actual value· of the 
-	* itemType [attribute] of <list>, if present, otherwise 
-	* the type definition corresponding to the <simpleType> 
-	* among the [children] of <list>.
-	*/
-	return (type->subtypes->subtypes);
-    else {
-	/* 2 If the <restriction> option is chosen, then the 
-	* {item type definition} of the {base type definition}.
-	*/    
-	return (xmlSchemaGetListSimpleTypeItemType(type->baseType));
-    }    
+    return (type->subtypes);
 }
 
+
+static int
+xmlSchemaGetParticleTotalRangeMin(xmlSchemaTreeItemPtr particle)
+{
+    if ((particle->children == NULL) ||
+	( ((xmlSchemaParticlePtr) particle)->minOccurs == 0))
+	return (0);
+    if (particle->children->type == XML_SCHEMA_TYPE_CHOICE) {
+	int min = 0, cur;
+	xmlSchemaTreeItemPtr part = particle->children->children;
+
+	if (part == NULL)
+	    return (0);	
+	if ((part->children->type == XML_SCHEMA_TYPE_ELEMENT) ||
+	    (part->children->type == XML_SCHEMA_TYPE_ANY))
+	    min = ((xmlSchemaParticlePtr) part)->minOccurs;
+	else
+	    min = xmlSchemaGetParticleTotalRangeMin(part);
+	if (min == 0)
+	    return (0);
+	part = part->next;
+	while (part != NULL) {
+	    if ((part->children->type == XML_SCHEMA_TYPE_ELEMENT) ||
+		(part->children->type == XML_SCHEMA_TYPE_ANY))
+		cur = ((xmlSchemaParticlePtr) part)->minOccurs;
+	    else
+		cur = xmlSchemaGetParticleTotalRangeMin(part);	    
+	    if (cur == 0)
+		return (0);
+	    if (min > cur)
+		min = cur;
+	    part = part->next;
+	}
+	return (((xmlSchemaParticlePtr) particle)->minOccurs * min);
+    } else {
+	/* <all> and <sequence> */
+	int sum = 0;
+	xmlSchemaTreeItemPtr part = particle->children->children;
+
+	if (part == NULL)
+	    return (0);
+	do {
+	    if ((part->children->type == XML_SCHEMA_TYPE_ELEMENT) ||
+		(part->children->type == XML_SCHEMA_TYPE_ANY))
+		sum += ((xmlSchemaParticlePtr) part)->minOccurs;
+	    else
+		sum += xmlSchemaGetParticleTotalRangeMin(part);
+	    part = part->next;
+	} while (part != NULL);
+	return (((xmlSchemaParticlePtr) particle)->minOccurs * sum);
+    }
+}
+
+
+static int
+xmlSchemaIsParticleEmptiable(xmlSchemaParticlePtr particle)
+{
+    if ((particle == NULL) || (particle->minOccurs == 0) ||
+	(particle->children == NULL))
+	return (1);
+
+    if (IS_MODEL_GROUP(particle->children)) {
+	if (xmlSchemaGetParticleTotalRangeMin(
+	    (xmlSchemaTreeItemPtr) particle) == 0)
+	    return (1);
+    }
+    return (0);
+}
+
 /**
  * xmlSchemaCheckCOSSTDerivedOK:
  * @type:  the derived simple type definition
@@ -12163,8 +12996,72 @@
     return (XML_SCHEMAP_COS_ST_DERIVED_OK_2_2);
 }
 
+/**
+ * xmlSchemaCheckTypeDefCircularInternal:
+ * @pctxt:  the schema parser context
+ * @ctxtType:  the type definition
+ * @ancestor: an ancestor of @ctxtType
+ *
+ * Checks st-props-correct (2) + ct-props-correct (3).
+ * Circular type definitions are not allowed. 
+ *
+ * Returns XML_SCHEMAP_ST_PROPS_CORRECT_2 if the given type is
+ * circular, 0 otherwise.
+ */
+static int
+xmlSchemaCheckTypeDefCircularInternal(xmlSchemaParserCtxtPtr pctxt,
+			   xmlSchemaTypePtr ctxtType,
+			   xmlSchemaTypePtr ancestor)
+{
+    int ret;
 
+    if ((ancestor == NULL) || (ancestor->type == XML_SCHEMA_TYPE_BASIC))
+	return (0);
+
+    if (IS_NOT_TYPEFIXED(ancestor))
+	xmlSchemaTypeFixup(ancestor, pctxt,  NULL);
+    if (ancestor->flags & XML_SCHEMAS_TYPE_MARKED) {
+	/*
+	* Avoid inifinite recursion on circular types not yet checked.
+	*/
+	return (0);
+    }
+    if (ctxtType == ancestor) {
+	xmlSchemaPCustomErr(pctxt,
+	    XML_SCHEMAP_ST_PROPS_CORRECT_2,
+	    NULL, ctxtType, GET_NODE(ctxtType),
+	    "The definition is circular", NULL);
+	return (XML_SCHEMAP_ST_PROPS_CORRECT_2);
+    }
+    ancestor->flags |= XML_SCHEMAS_TYPE_MARKED;
+    ret = xmlSchemaCheckTypeDefCircularInternal(pctxt, ctxtType,
+	ancestor->baseType);
+    ancestor->flags ^= XML_SCHEMAS_TYPE_MARKED;
+    return (ret);
+}
+
 /**
+ * xmlSchemaCheckGroupDefCircular:
+ * @item:  the complex/simple type definition
+ * @ctxt:  the parser context
+ * @name:  the name
+ *
+ * Checks for circular type definitions.
+ */
+static void
+xmlSchemaCheckTypeDefCircular(xmlSchemaTypePtr item,
+			      xmlSchemaParserCtxtPtr ctxt, 
+			      const xmlChar * name ATTRIBUTE_UNUSED)
+{
+    if ((item == NULL) ||
+	((item->type != XML_SCHEMA_TYPE_COMPLEX) &&
+	(item->type != XML_SCHEMA_TYPE_SIMPLE)))
+	return;
+    xmlSchemaCheckTypeDefCircularInternal(ctxt, item, item->baseType);
+
+}
+
+/**
  * xmlSchemaCheckSTPropsCorrect:
  * @ctxt:  the schema parser context
  * @type:  the simple type definition
@@ -12192,41 +13089,42 @@
     */
     anySimpleType = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYSIMPLETYPE);
     anyType = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYTYPE);
-    /* 
-    * TODO: 1 The values of the properties of a simple type definition must be as 
-    * described in the property tableau in Datatype definition, modulo the 
-    * impact of Missing Sub-components (§5.3).
-    */
     /* Base type: If the datatype has been ·derived· by ·restriction· 
     * then the Simple Type Definition component from which it is ·derived·, 
     * otherwise the Simple Type Definition for anySimpleType (§4.1.6). 
     */
     if (baseType == NULL) {
+	/*
+	* TODO: Think about: "modulo the impact of Missing
+	* Sub-components (§5.3)."
+	*/
 	xmlSchemaPCustomErr(ctxt,
 	    XML_SCHEMAP_ST_PROPS_CORRECT_1,
 	    NULL, type, NULL,	
 	    "No base type existent", NULL);
 	return (XML_SCHEMAP_ST_PROPS_CORRECT_1);
+
     }
-    if ((baseType->type != XML_SCHEMA_TYPE_SIMPLE) &&
-	((baseType->type != XML_SCHEMA_TYPE_BASIC) ||
-	 (baseType == anyType))) {
+    if (! IS_SIMPLE_TYPE(baseType)) {
 	xmlSchemaPCustomErr(ctxt,
 	    XML_SCHEMAP_ST_PROPS_CORRECT_1,
 	    NULL, type, NULL,	
-	    "The base type %s is not a simple type", 
-	    xmlSchemaFormatItemForReport(&str, NULL, baseType, NULL, 1));
+	    "The base type '%s' is not a simple type", 
+	    xmlSchemaGetComponentQName(&str, baseType));
 	FREE_AND_NULL(str)	
 	return (XML_SCHEMAP_ST_PROPS_CORRECT_1);
     }
-    if ((baseType != anySimpleType) &&
-	(type->subtypes->type != XML_SCHEMA_TYPE_RESTRICTION)) {
+    if ((baseType->builtInType != XML_SCHEMAS_ANYSIMPLETYPE) &&
+	((type->flags &
+	    XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION) == 0) &&
+	((type->flags & XML_SCHEMAS_TYPE_VARIETY_LIST) ||
+	 (type->flags & XML_SCHEMAS_TYPE_VARIETY_UNION))) {
 	xmlSchemaPCustomErr(ctxt,
 	    XML_SCHEMAP_ST_PROPS_CORRECT_1,
 	    NULL, type, NULL,	
 	    "A type, derived by list or union, must have"
-	    "the simple ur-type definition as base type, not %s",
-	    xmlSchemaFormatItemForReport(&str, NULL, baseType, NULL, 1));
+	    "the simple ur-type definition as base type, not '%s'",
+	    xmlSchemaGetComponentQName(&str, baseType));
 	FREE_AND_NULL(str)
 	return (XML_SCHEMAP_ST_PROPS_CORRECT_1);
     }
@@ -12243,53 +13141,48 @@
 	return (XML_SCHEMAP_ST_PROPS_CORRECT_1);
     }
     /* TODO: Finish this. Hmm, is this finished? */
-
+    
     /*
-    * 2 All simple type definitions must be derived ultimately from the ·simple 
-    * ur-type definition (so· circular definitions are disallowed). That is, it 
-    * must be possible to reach a built-in primitive datatype or the ·simple 
-    * ur-type definition· by repeatedly following the {base type definition}.
-    */    
-    baseType = type->baseType;
-    while ((baseType != NULL) && (baseType->type != XML_SCHEMA_TYPE_BASIC)) {
-	if (baseType->contentType == XML_SCHEMA_CONTENT_UNKNOWN)
-	    xmlSchemaTypeFixup(baseType, ctxt,  NULL);
-	if (baseType == anySimpleType)
-	    break;
-	else if (baseType == type) {
-	    xmlSchemaPCustomErr(ctxt,
-	    XML_SCHEMAP_ST_PROPS_CORRECT_2,
-	    NULL, type, NULL,	
-	    "The definition is circular", NULL);
-	    return (XML_SCHEMAP_ST_PROPS_CORRECT_2);
-	}	   
-	baseType = baseType->baseType;
-    }   
-    /*
     * 3 The {final} of the {base type definition} must not contain restriction.
     */
-    if (xmlSchemaTypeFinalContains(ctxt->schema, baseType, 
+    if (xmlSchemaTypeFinalContains(ctxt->schema, baseType,
 	XML_SCHEMAS_TYPE_FINAL_RESTRICTION)) {
 	xmlSchemaPCustomErr(ctxt,
 	    XML_SCHEMAP_ST_PROPS_CORRECT_3,
 	    NULL, type, NULL,	
-	    "The 'final' of its base type %s must not contain "
+	    "The 'final' of its base type '%s' must not contain "
 	    "'restriction'",
-	    xmlSchemaFormatItemForReport(&str, NULL, baseType, NULL, 1));
+	    xmlSchemaGetComponentQName(&str, baseType));
 	FREE_AND_NULL(str)	
 	return (XML_SCHEMAP_ST_PROPS_CORRECT_3);
     }    
+
+    /*
+    * 2 All simple type definitions must be derived ultimately from the ·simple 
+    * ur-type definition (so· circular definitions are disallowed). That is, it 
+    * must be possible to reach a built-in primitive datatype or the ·simple 
+    * ur-type definition· by repeatedly following the {base type definition}.    
+    *
+    * NOTE: this is done in xmlSchemaCheckTypeDefCircular().
+    */
     return (0);
 }
 
 /**
- * xmlSchemaCheckDerivationValidSimpleRestriction:
+ * xmlSchemaCheckCOSSTRestricts:
  * @ctxt:  the schema parser context
  * @type:  the simple type definition
  *
  * Checks if the given @type (simpleType) is derived 
  * validly by restriction.
+ * STATUS:
+ *   missing:
+ *     (3.3.2.5) facet derivation
+ *     (1.3.2)   facet derivation
+ *     (2.3.2.5)
+ *     (3.3.2.5) facet derivation
  *
+ *
  * Returns -1 on internal errors, 0 if the type is validly derived, 
  * a positive error code otherwise.
  */
@@ -12299,12 +13192,10 @@
 {    
     xmlChar *str = NULL;
 
-    /* STATE: error funcs converted. */
-
     if (type->type != XML_SCHEMA_TYPE_SIMPLE) {
 	xmlSchemaPErr(ctxt, type->node,
 	    XML_ERR_INTERNAL_ERROR,
-	    "xmlSchemaCheckDerivationValidSimpleRestriction: The given "
+	    "xmlSchemaCheckCOSSTRestricts: The given "
 	    "type '%s' is not a user-derived simpleType.\n",
 	    type->name, NULL);
 	return (-1);
@@ -12320,8 +13211,8 @@
 	    xmlSchemaPCustomErr(ctxt,
 		XML_SCHEMAP_COS_ST_RESTRICTS_1_1,
 		NULL, type, NULL,	
-		"The base type %s is not an atomic simple type",
-		xmlSchemaFormatItemForReport(&str, NULL, type->baseType, NULL, 1));
+		"The base type '%s' is not an atomic simple type",
+		xmlSchemaGetComponentQName(&str, type->baseType));
 	    FREE_AND_NULL(str)
 	    return (XML_SCHEMAP_COS_ST_RESTRICTS_1_1);
 	}
@@ -12334,8 +13225,8 @@
 	    xmlSchemaPCustomErr(ctxt,
 		XML_SCHEMAP_COS_ST_RESTRICTS_1_2,
 		NULL, type, NULL,	
-		"The final of its base type %s must not contain 'restriction'",
-		xmlSchemaFormatItemForReport(&str, NULL, type->baseType, NULL, 1));
+		"The final of its base type '%s' must not contain 'restriction'",
+		xmlSchemaGetComponentQName(&str, type->baseType));
 	    FREE_AND_NULL(str)
 	    return (XML_SCHEMAP_COS_ST_RESTRICTS_1_2);
 	}
@@ -12353,7 +13244,7 @@
 	    if (primitive == NULL) {
 		xmlSchemaPErr(ctxt, type->node,
 		    XML_ERR_INTERNAL_ERROR,
-		    "xmlSchemaCheckDerivationValidSimpleRestriction: failed "
+		    "xmlSchemaCheckCOSSTRestricts: failed "
 		    "to get primitive type of type '%s'.\n",
 		    type->name, NULL);
 		return (-1);
@@ -12377,15 +13268,17 @@
     } else if (type->flags & XML_SCHEMAS_TYPE_VARIETY_LIST) {
 	xmlSchemaTypePtr itemType = NULL;
 
-	itemType = xmlSchemaGetListSimpleTypeItemType(type);
-	if (itemType == NULL) {
+	itemType = type->subtypes;
+	if ((itemType == NULL) || (! IS_SIMPLE_TYPE(itemType))) {
 	    xmlSchemaPErr(ctxt, type->node,
 		XML_ERR_INTERNAL_ERROR,
-		"Internal error: xmlSchemaCheckDerivationValidSimpleRestriction: "
+		"Internal error: xmlSchemaCheckCOSSTRestricts: "
 		"failed to evaluate the item type of type '%s'.\n",
 		type->name, NULL);
 	    return (-1);
 	}
+	if (IS_NOT_TYPEFIXED(itemType))
+	    xmlSchemaTypeFixup(itemType, ctxt, NULL);
 	/*
 	* 2.1 The {item type definition} must have a {variety} of atomic or 
 	* union (in which case all the {member type definitions} 
@@ -12396,8 +13289,8 @@
 	    xmlSchemaPCustomErr(ctxt,
 		XML_SCHEMAP_COS_ST_RESTRICTS_2_1,
 		NULL, type, NULL,	
-		"The item type %s must have a variety of atomic or union",
-		xmlSchemaFormatItemForReport(&str, NULL, itemType, NULL, 1));
+		"The item type '%s' does not have a variety of atomic or union",
+		xmlSchemaGetComponentQName(&str, itemType));
 	    FREE_AND_NULL(str)	    
 	    return (XML_SCHEMAP_COS_ST_RESTRICTS_2_1);
 	} else if (itemType->flags & XML_SCHEMAS_TYPE_VARIETY_UNION) {
@@ -12411,8 +13304,8 @@
 			XML_SCHEMAP_COS_ST_RESTRICTS_2_1,
 			NULL, type, NULL,	
 			"The item type is a union type, but the "
-			"member type %s of this item type is not atomic",
-			xmlSchemaFormatItemForReport(&str, NULL, member->type, NULL, 1));
+			"member type '%s' of this item type is not atomic",
+			xmlSchemaGetComponentQName(&str, member->type));
 		    FREE_AND_NULL(str)		    
 		    return (XML_SCHEMAP_COS_ST_RESTRICTS_2_1);
 		}
@@ -12420,7 +13313,7 @@
 	    }
 	}
 	
-	if (type->baseType == xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYSIMPLETYPE)) {
+	if (type->baseType->builtInType == XML_SCHEMAS_ANYSIMPLETYPE) {
 	    xmlSchemaFacetPtr facet;
 	    /*
 	    * This is the case if we have: <simpleType><list ..
@@ -12435,8 +13328,8 @@
 		xmlSchemaPCustomErr(ctxt,
 		    XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_1,
 		    NULL, type, NULL,	
-		    "The final of its item type %s must not contain 'list'",
-		    xmlSchemaFormatItemForReport(&str, NULL, itemType, NULL, 1));
+		    "The final of its item type '%s' must not contain 'list'",
+		    xmlSchemaGetComponentQName(&str, itemType));
 		FREE_AND_NULL(str)			
 		return (XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_1);
 	    }
@@ -12457,7 +13350,7 @@
 		} while (facet != NULL);
 	    }
 	    /*
-	    * TODO: Datatypes states: 
+	    * MABY TODO: (Hmm, not really) Datatypes states: 
 	    * A ·list· datatype can be ·derived· from an ·atomic· datatype 
 	    * whose ·lexical space· allows space (such as string or anyURI)or 
 	    * a ·union· datatype any of whose {member type definitions}'s 
@@ -12466,6 +13359,7 @@
 	} else {
 	    /*
 	    * This is the case if we have: <simpleType><restriction ...
+	    * I.e. the variety of "list" is inherited.
 	    */
 	    /*
 	    * 2.3.2 
@@ -12475,8 +13369,8 @@
 		xmlSchemaPCustomErr(ctxt,
 		    XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_1,
 		    NULL, type, NULL,	
-		    "The base type %s must be a list type",
-		    xmlSchemaFormatItemForReport(&str, NULL, type->baseType, NULL, 1));
+		    "The base type '%s' must be a list type",
+		    xmlSchemaGetComponentQName(&str, type->baseType));
 		FREE_AND_NULL(str)					
 		return (XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_1);
 	    }
@@ -12489,8 +13383,8 @@
 		xmlSchemaPCustomErr(ctxt,
 		    XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_2,
 		    NULL, type, NULL,	
-		    "The final of the base type %s must not contain 'restriction'",
-		    xmlSchemaFormatItemForReport(&str, NULL, type->baseType, NULL, 1));
+		    "The 'final' of the base type '%s' must not contain 'restriction'",
+		    xmlSchemaGetComponentQName(&str, type->baseType));
 		FREE_AND_NULL(str)				
 		return (XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_2);
 	    }
@@ -12502,11 +13396,11 @@
 	    {
 		xmlSchemaTypePtr baseItemType;
 
-		baseItemType = xmlSchemaGetListSimpleTypeItemType(type->baseType);
-		if (baseItemType == NULL) {
+		baseItemType = type->baseType->subtypes;
+		if ((baseItemType == NULL) || (! IS_SIMPLE_TYPE(baseItemType))) {
 		    xmlSchemaPErr(ctxt, type->node,
 			XML_ERR_INTERNAL_ERROR,
-			"xmlSchemaCheckDerivationValidSimpleRestriction: "
+			"Internal error: xmlSchemaCheckCOSSTRestricts, "
 			"List simple type '%s': Failed to "
 			"evaluate the item type of its base type '%s'.\n",
 			type->name, type->baseType->name);
@@ -12519,11 +13413,11 @@
 		    xmlSchemaPCustomErrExt(ctxt,
 			XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_3,
 			NULL, type, NULL,	
-			"The item type %s is not validly derived from the "
-			"item type %s of the base type %s",
-			xmlSchemaFormatItemForReport(&str, NULL, itemType, NULL, 1),
-			xmlSchemaFormatItemForReport(&strBIT, NULL, baseItemType, NULL, 1),
-			xmlSchemaFormatItemForReport(&strBT, NULL, type->baseType, NULL, 1));
+			"The item type '%s' is not validly derived from the "
+			"item type '%s' of the base type '%s'",
+			xmlSchemaGetComponentQName(&str, itemType),
+			xmlSchemaGetComponentQName(&strBIT, baseItemType),
+			xmlSchemaGetComponentQName(&strBT, type->baseType));
 
 		    FREE_AND_NULL(str)
 		    FREE_AND_NULL(strBIT)
@@ -12587,6 +13481,9 @@
 
 	member = type->memberTypes;
 	while (member != NULL) {
+	    if (IS_NOT_TYPEFIXED(member->type))
+		xmlSchemaTypeFixup(member->type, ctxt, NULL);
+
 	    if (((member->type->flags & 
 		XML_SCHEMAS_TYPE_VARIETY_ATOMIC) == 0) && 
 		((member->type->flags & 
@@ -12594,8 +13491,8 @@
 		xmlSchemaPCustomErr(ctxt,
 		    XML_SCHEMAP_COS_ST_RESTRICTS_3_1,
 		    NULL, type, NULL,
-		    "The member type %s is neither an atomic, nor a list type",
-		    xmlSchemaFormatItemForReport(&str, NULL, member->type, NULL, 1));
+		    "The member type '%s' is neither an atomic, nor a list type",
+		    xmlSchemaGetComponentQName(&str, member->type));
 		FREE_AND_NULL(str)
 		return (XML_SCHEMAP_COS_ST_RESTRICTS_3_1);
 	    }
@@ -12605,7 +13502,7 @@
 	* 3.3.1 If the {base type definition} is the ·simple ur-type 
 	* definition· 
 	*/
-	if (type->baseType == xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYSIMPLETYPE)) {
+	if (type->baseType->builtInType == XML_SCHEMAS_ANYSIMPLETYPE) {
 	    /*
 	    * 3.3.1.1 All of the {member type definitions} must have a 
 	    * {final} which does not contain union.
@@ -12617,8 +13514,8 @@
 		    xmlSchemaPCustomErr(ctxt,
 			XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1,
 			NULL, type, NULL,
-			"The final of member type %s contains 'union'",
-			xmlSchemaFormatItemForReport(&str, NULL, member->type, NULL, 1));
+			"The 'final' of member type '%s' contains 'union'",
+			xmlSchemaGetComponentQName(&str, member->type));
 		    FREE_AND_NULL(str)		   
 		    return (XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1);
 		}
@@ -12637,13 +13534,14 @@
 	} else {
 	    /*
 	    * 3.3.2.1 The {base type definition} must have a {variety} of union.
+	    * I.e. the variety of "list" is inherited.
 	    */
 	    if ((type->baseType->flags & XML_SCHEMAS_TYPE_VARIETY_UNION) == 0) {
 		xmlSchemaPCustomErr(ctxt,
 		    XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_1,
 		    NULL, type, NULL,
-		    "The base type %s is not a union type",
-		    xmlSchemaFormatItemForReport(&str, NULL, type->baseType, NULL, 1));
+		    "The base type '%s' is not a union type",
+		    xmlSchemaGetComponentQName(&str, type->baseType));
 		FREE_AND_NULL(str)			
 		return (XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_1);
 	    }
@@ -12655,8 +13553,8 @@
 		xmlSchemaPCustomErr(ctxt,
 		    XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_2,
 		    NULL, type, NULL,
-		    "The final of its base type %s must not contain 'restriction'",
-		    xmlSchemaFormatItemForReport(&str, NULL, type->baseType, NULL, 1));
+		    "The 'final' of its base type '%s' must not contain 'restriction'",
+		    xmlSchemaGetComponentQName(&str, type->baseType));
 		FREE_AND_NULL(str)		
 		return (XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_2);
 	    }
@@ -12687,8 +13585,7 @@
 		    if ((member == NULL) && (baseMember != NULL)) {		   
 			xmlSchemaPErr(ctxt, type->node,
 			    XML_SCHEMAP_INTERNAL,
-			    "Internal error: "
-			    "xmlSchemaCheckDerivationValidSimpleRestriction "
+			    "Internal error: xmlSchemaCheckCOSSTRestricts, "
 			    "(3.3.2.3), union simple type '%s', unequal number "
 			    "of member types in the base type\n",
 			    type->name, NULL);
@@ -12698,7 +13595,7 @@
 			    xmlSchemaPErr(ctxt, type->node,
 				XML_SCHEMAP_INTERNAL,
 				"Internal error: "
-				"xmlSchemaCheckDerivationValidSimpleRestriction "
+				"xmlSchemaCheckCOSSTRestricts "
 				"(3.3.2.3), union simple type '%s', unequal number "
 				"of member types in the base type.\n",
 				type->name, NULL);
@@ -12713,9 +13610,9 @@
 				NULL, type, NULL,
 				"The member type %s is not validly derived from its "
 				"corresponding member type %s of the base type %s",
-				xmlSchemaFormatItemForReport(&str, NULL, member->type, NULL, 1),
-				xmlSchemaFormatItemForReport(&strBMT, NULL, baseMember->type, NULL, 1),
-				xmlSchemaFormatItemForReport(&strBT, NULL, type->baseType, NULL, 1));
+				xmlSchemaGetComponentQName(&str, member->type),
+				xmlSchemaGetComponentQName(&strBMT, baseMember->type),
+				xmlSchemaGetComponentQName(&strBT, type->baseType));
 			    FREE_AND_NULL(str)
 			    FREE_AND_NULL(strBMT)
 			    FREE_AND_NULL(strBT)
@@ -12773,20 +13670,6 @@
 xmlSchemaCheckSRCSimpleType(xmlSchemaParserCtxtPtr ctxt,
 			    xmlSchemaTypePtr type)
 {   
-    /*
-    * NOTE: src-simple-type 2-4 are redundant, since the checks
-    * were are done for the corresponding <restriction>, <list> and <union>
-    * elements, but W3C wants a <simpleType> error as well, so it gets one.
-    * Maby this can be skipped in the future, if we get sure it's not needed.
-    */
-    if (type->subtypes == NULL) {
-	xmlSchemaPErr(ctxt, type->node,
-		XML_SCHEMAP_INTERNAL,
-		"Internal error: xmlSchemaCheckSRCSimpleType, "
-		"no subtype on simple type '%s'.\n",
-		type->name, NULL);
-	return (-1);
-    }
     /* 
     * src-simple-type.1 The corresponding simple type definition, if any,
     * must satisfy the conditions set out in Constraints on Simple Type 
@@ -12809,7 +13692,7 @@
 	return (XML_SCHEMAP_SRC_SIMPLE_TYPE_1);
     }
 
-    if (type->subtypes->type == XML_SCHEMA_TYPE_RESTRICTION) {
+    if (type->flags & XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION) {
 	/*
 	* src-simple-type.2 If the <restriction> alternative is chosen, 
 	* either it must have a base [attribute] or a <simpleType> among its 
@@ -12817,33 +13700,16 @@
 	*/	
 	/*
 	* XML_SCHEMAP_SRC_SIMPLE_TYPE_2
-	* NOTE: This was removed, since this will be already handled
-	* in the parse function for <restriction>. 
+	* NOTE: This is checked in the parse function of <restriction>.
 	*/	
-    } else if (type->subtypes->type == XML_SCHEMA_TYPE_LIST) {
+    } else if (type->flags & XML_SCHEMAS_TYPE_VARIETY_LIST) {
 	/* src-simple-type.3 If the <list> alternative is chosen, either it must have 
 	* an itemType [attribute] or a <simpleType> among its [children], 
 	* but not both.
-	* NOTE: baseType is set to the local simple type definiton,
-	* if existent, at parse time. This is a hack and not nice.
-	*/
-	/*
-	* TODO: Remove this, and add the check to the parse function of <list>.
-	*/
-	if (((type->subtypes->base == NULL) && 
-	     (type->baseType == NULL)) ||	      
-	    ((type->subtypes->base != NULL) &&
-	     (type->subtypes->baseType != NULL))) {
-	    xmlSchemaPCustomErr(ctxt, 
-		XML_SCHEMAP_SRC_SIMPLE_TYPE_3,
-		NULL, type, NULL,
-		"Either the attribute 'itemType' or the <simpleType> child "
-		"must be present on the <list> child ", NULL);	    
-	    return (XML_SCHEMAP_SRC_SIMPLE_TYPE_3);
-	}
-    
-
-    } else if (type->subtypes->type == XML_SCHEMA_TYPE_UNION) {
+	*
+	* REMOVED: This is checked in the parse function of <list>.
+	*/   
+    } else if (type->flags & XML_SCHEMAS_TYPE_VARIETY_UNION) {
 	xmlSchemaTypeLinkPtr member;
 	xmlSchemaTypePtr ancestor, anySimpleType;
 
@@ -12857,26 +13723,25 @@
 	member = type->memberTypes;
 	while (member != NULL) {
 	    ancestor = member->type;
-	    while ((ancestor != NULL) && (ancestor->type != XML_SCHEMA_TYPE_BASIC)) {
-		if (ancestor->contentType == XML_SCHEMA_CONTENT_UNKNOWN)
-		    xmlSchemaTypeFixup(ancestor, ctxt,  NULL);
-		if (ancestor == anySimpleType)
-		    break;
-		else if (ancestor == type) {
+	    while ((ancestor != NULL) && (ancestor->type != XML_SCHEMA_TYPE_BASIC)) {		
+		if (ancestor == type) {
 		    xmlSchemaPCustomErr(ctxt, 
 			XML_SCHEMAP_SRC_SIMPLE_TYPE_4,
 			NULL, type, NULL,
 			"The definition is circular", NULL);
 		    return (XML_SCHEMAP_SRC_SIMPLE_TYPE_4);
-		} else if (ancestor->flags & XML_SCHEMAS_TYPE_VARIETY_LIST) {
+		}
+		if (IS_NOT_TYPEFIXED(ancestor))
+		    xmlSchemaTypeFixup(ancestor, ctxt,  NULL);
+		if (ancestor->flags & XML_SCHEMAS_TYPE_VARIETY_LIST) {
 		    /*
 		    * TODO, FIXME: Although a list simple type must not have a union ST
 		    * type as item type, which in turn has a list ST as member 
 		    * type, we will assume this here as well, since this check 
 		    * was not yet performed.
 		    */
-
 		}
+		
 		ancestor = ancestor->baseType;
 	    }   
 	    member = member->next;
@@ -12886,7 +13751,7 @@
     return (0);
 }
 
-#if 0 /* Not yet used code for CT schema validation */
+#if 0 /* Not yet used code for ST schema validation */
 static int
 xmlSchemaCheckCVCSimpleType(xmlSchemaValidCtxtPtr ctxt,
 			    const xmlChar * value,
@@ -12968,10 +13833,10 @@
 
 /**
  * xmlSchemaCheckCOSValidDefault:
- * @ctxt:  the schema parser context
+ * @pctxt:  the schema parser context
+ * @vctxt:  the temporary schema validation context
  * @type:  the simple type definition
  * @value: the default value
- * @val: the precomputed value to be returned
  * @node: an optional node (the holder of the value)
  *
  * Checks the "cos-valid-default" constraints.
@@ -13073,48 +13938,76 @@
     return (ret);
 }
 
-#if 0 /* Not yet used code for CT schema validation */
 /**
- * xmlSchemaGetSTContentOfCT:
+ * xmlSchemaCheckCTPropsCorrect:
  * @ctxt:  the schema parser context
  * @type:  the complex type definition
  *
+ *.(4.6) Constraints on Complex Type Definition Schema Components
+ * Schema Component Constraint:
+ * Complex Type Definition Properties Correct (ct-props-correct)
+ * STATUS: (seems) complete
  *
- * Returns the corresponding simple type for the content of
- * the complex type.
+ * Returns 0 if the constraints are satisfied, a positive
+ * error code if not and -1 if an internal error occured.
  */
-static xmlSchemaTypePtr
-xmlSchemaGetSTContentOfCT(xmlSchemaParserCtxtPtr ctxt,
-			xmlSchemaTypePtr type)
+static int
+xmlSchemaCheckCTPropsCorrect(xmlSchemaParserCtxtPtr pctxt,
+			     xmlSchemaTypePtr type)
 {
-    xmlSchemaTypePtr orig = type, anyType;
-
-    anyType = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYTYPE);
-    while ((type != NULL) && (type != anyType) && 
-	(type->type == XML_SCHEMA_TYPE_COMPLEX)) {
-	if (type->type == XML_SCHEMA_TYPE_SIMPLE)
-	    return(type);
-	type = type->baseType;
-    }
-    xmlSchemaPCustomErr(ctxt,
-	XML_SCHEMAP_INTERNAL,
-	NULL, orig, NULL,
-	"Internal error: xmlSchemaGetSTContentTypeOfCT, "
-	"no simple type for the content of complex type '%s' could be "
-	"computed", orig->name);
-    return (NULL);
+    /*
+    * TODO: Correct the error code; XML_SCHEMAP_SRC_CT_1 is used temporarily.
+    *
+    * SPEC (1) "The values of the properties of a complex type definition must
+    * be as described in the property tableau in The Complex Type Definition
+    * Schema Component (§3.4.1), modulo the impact of Missing 
+    * Sub-components (§5.3)."
+    */
+    if ((type->baseType != NULL) &&
+	(IS_SIMPLE_TYPE(type->baseType)) &&
+	((type->flags & XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION) == 0)) {
+	/*
+	* SPEC (2) "If the {base type definition} is a simple type definition,
+	* the {derivation method} must be extension."
+	*/
+	xmlSchemaPCustomErr(pctxt,
+	    XML_SCHEMAP_SRC_CT_1,
+	    NULL, type, NULL,
+	    "If the base type is a simple type, the derivation method must be "
+	    "'extension'", NULL);
+	return (XML_SCHEMAP_SRC_CT_1);
+    }	
+    /*
+    * SPEC (3) "Circular definitions are disallowed, except for the ·ur-type
+    * definition·. That is, it must be possible to reach the ·ur-type
+    * definition by repeatedly following the {base type definition}."
+    *
+    * NOTE (3) is done in xmlSchemaCheckTypeDefCircular().
+    *
+    * SPEC (4) "Two distinct attribute declarations in the {attribute uses}
+    * must not have identical {name}s and {target namespace}s."    
+    * SPEC (5) "Two distinct attribute declarations in the {attribute uses}
+    * must not have {type definition}s which are or are derived from ID."
+    *
+    * NOTE (4) and (5) are done in xmlSchemaBuildAttributeValidation().
+    */
+    return (0);
 }
 
-
-
-
 /**
  * xmlSchemaCheckCOSCTExtends:
  * @ctxt:  the schema parser context
  * @type:  the complex type definition
  *
- * Schema Component Constraint: Derivation Valid (Extension)
+ * (3.4.6) Constraints on Complex Type Definition Schema Components
+ * Schema Component Constraint: 
+ * Derivation Valid (Extension) (cos-ct-extends)
  *
+ * STATUS:
+ *   missing:  
+ *     (1.5)
+ *     (1.4.3.2.2.2) "Particle Valid (Extension)", which is not really needed.
+ *
  * Returns 0 if the constraints are satisfied, a positive
  * error code if not and -1 if an internal error occured.
  */
@@ -13122,462 +14015,1082 @@
 xmlSchemaCheckCOSCTExtends(xmlSchemaParserCtxtPtr ctxt,
 			   xmlSchemaTypePtr type)
 {
-    xmlSchemaTypePtr base;
+    xmlSchemaTypePtr base = type->baseType;
+    /*
+    * TODO: Correct the error code; XML_SCHEMAP_COS_CT_EXTENDS_1_1 is used
+    * temporarily only.
+    */
     /* 
-    * 1 If the {base type definition} is a complex type definition, 
-    * then all of the following must be true:
+    * SPEC (1) "If the {base type definition} is a complex type definition, 
+    * then all of the following must be true:"
     */
-    base = type->baseType;
-    if (base == NULL) {
-	xmlSchemaPCustomErr(ctxt,
-	    XML_SCHEMAP_INTERNAL,
-	    NULL, type, NULL,
-	    "Internal error: xmlSchemaCheckCOSCTExtends, "
-	    "the complex type '%s' has no base type", type->name);
-	return (-1);
-    }
     if (base->type == XML_SCHEMA_TYPE_COMPLEX) {
 	/*
-	* 1.1 The {final} of the {base type definition} must not 
-	* contain extension.
+	* SPEC (1.1) "The {final} of the {base type definition} must not 
+	* contain extension."
 	*/
 	if (base->flags & XML_SCHEMAS_TYPE_FINAL_EXTENSION) {
 	    xmlSchemaPCustomErr(ctxt,
 		XML_SCHEMAP_COS_CT_EXTENDS_1_1,
 		NULL, type, NULL,
 		"The 'final' of the base type definition "
-		"contains extension", NULL);
+		"contains 'extension'", NULL);
 	    return (XML_SCHEMAP_COS_CT_EXTENDS_1_1);
 	}
 	/*
-	* 1.2 Its {attribute uses} must be a subset of the {attribute uses} 
+	* SPEC (1.2) "Its {attribute uses} must be a subset of the {attribute
+	* uses} 
 	* of the complex type definition itself, that is, for every attribute 
 	* use in the {attribute uses} of the {base type definition}, there 
 	* must be an attribute use in the {attribute uses} of the complex 
 	* type definition itself whose {attribute declaration} has the same 
 	* {name}, {target namespace} and {type definition} as its attribute 
-	* declaration
+	* declaration"
 	*
-	* NOTE: This will be already satisfied by the way the attribute uses
-	* are extended in xmlSchemaBuildAttributeValidation; thus this check
-	* is not needed.
+	* NOTE (1.2): This will be already satisfied by the way the attribute
+	* uses are extended in xmlSchemaBuildAttributeValidation(); thus this
+	* check is not needed.
 	*/
 
 	/*
-	* 1.3 If it has an {attribute wildcard}, the complex type definition 
-	* must also have one, and the base type definition's {attribute 
-	* wildcard}'s {namespace constraint} must be a subset of the complex 
-	* type definition's {attribute wildcard}'s {namespace constraint}, 
-	* as defined by Wildcard Subset (§3.10.6).
+	* SPEC (1.3) "If it has an {attribute wildcard}, the complex type
+	* definition must also have one, and the base type definition's
+	* {attribute  wildcard}'s {namespace constraint} must be a subset
+	* of the complex  type definition's {attribute wildcard}'s {namespace
+	* constraint}, as defined by Wildcard Subset (§3.10.6)."
 	*
-	* This is already checked in xmlSchemaBuildAttributeValidation; thus 
-	* this check is not needed.
+	* NOTE (1.3) This is already checked in 
+	* xmlSchemaBuildAttributeValidation; thus this check is not needed.
+	*
+	* SPEC (1.4) "One of the following must be true:"
 	*/
-	
+	if ((type->contentTypeDef != NULL) &&
+	    (type->contentTypeDef == base->contentTypeDef)) {
+	    /*
+	    * SPEC (1.4.1) "The {content type} of the {base type definition}
+	    * and the {content type} of the complex type definition itself
+	    * must be the same simple type definition"
+	    * PASS
+	    */
+	} else if ((type->contentType == XML_SCHEMA_CONTENT_EMPTY) &&
+	    (base->contentType == XML_SCHEMA_CONTENT_EMPTY) ) {
+	    /*
+	    * SPEC (1.4.2) "The {content type} of both the {base type
+	    * definition} and the complex type definition itself must
+	    * be empty."
+	    * PASS
+	    */
+	} else {
+	    /*
+	    * SPEC (1.4.3) "All of the following must be true:"
+	    */
+	    if (type->subtypes == NULL) {
+		/*
+		* SPEC 1.4.3.1 The {content type} of the complex type 
+		* definition itself must specify a particle.
+		*/
+		xmlSchemaPCustomErr(ctxt,
+		    XML_SCHEMAP_COS_CT_EXTENDS_1_1,
+		    NULL, type, NULL,
+		    "The content type must specify a particle", NULL);
+		return (XML_SCHEMAP_COS_CT_EXTENDS_1_1);
+	    }
+	    /*
+	    * SPEC (1.4.3.2) "One of the following must be true:"
+	    */
+	    if (base->contentType == XML_SCHEMA_CONTENT_EMPTY) {
+		/*
+		* SPEC (1.4.3.2.1) "The {content type} of the {base type
+		* definition} must be empty.
+		* PASS
+		*/
+	    } else {
+		/*
+		* SPEC (1.4.3.2.2) "All of the following must be true:"
+		*/
+		if ((type->contentType != base->contentType) ||
+		    ((type->contentType != XML_SCHEMA_CONTENT_MIXED) &&
+		    (type->contentType != XML_SCHEMA_CONTENT_ELEMENTS))) {
+		    /*
+		    * SPEC (1.4.3.2.2.1) "Both {content type}s must be mixed
+		    * or both must be element-only."
+		    */
+		    xmlSchemaPCustomErr(ctxt,
+			XML_SCHEMAP_COS_CT_EXTENDS_1_1,
+			NULL, type, NULL,
+			"The content type of both, the type and its base "
+			"type, must either 'mixed' or 'element-only'", NULL);
+		    return (XML_SCHEMAP_COS_CT_EXTENDS_1_1);
+		}		
+		/*
+		* FUTURE TODO SPEC (1.4.3.2.2.2) "The particle of the
+		* complex type definition must be a ·valid extension·
+		* of the {base type definition}'s particle, as defined
+		* in Particle Valid (Extension) (§3.9.6)."
+		*
+		* NOTE that we won't check "Particle Valid (Extension)",
+		* since it is ensured by the derivation process in
+		* xmlSchemaTypeFixup(). We need to implement this when heading
+		* for a construction API
+		*/		    		
+	    }
+	    /*
+	    * TODO (1.5)
+	    */
+	}	
+    } else {
 	/*
-	* 1.4 One of the following must be true:
-	*
-	* 1.4.1 The {content type} of the {base type definition} and the 
-	* {content type} of the complex type definition itself must be the same 
-	* simple type definition
+	* SPEC (2) "If the {base type definition} is a simple type definition, 
+	* then all of the following must be true:"
 	*/
+	if (type->contentTypeDef != base) {
+	    /*
+	    * SPEC (2.1) "The {content type} must be the same simple type
+	    * definition."
+	    */
+	    xmlSchemaPCustomErr(ctxt,
+		XML_SCHEMAP_COS_CT_EXTENDS_1_1,
+		NULL, type, NULL,
+		"The content type must be the simple base type", NULL);
+	    return (XML_SCHEMAP_COS_CT_EXTENDS_1_1);
+	}
+	if (base->flags & XML_SCHEMAS_TYPE_FINAL_EXTENSION) {
+	    /*
+	    * SPEC (2.2) "The {final} of the {base type definition} must not
+	    * contain extension"
+	    * NOTE that this is the same as (1.1).
+	    */
+	    xmlSchemaPCustomErr(ctxt,
+		XML_SCHEMAP_COS_CT_EXTENDS_1_1,
+		NULL, type, NULL,
+		"The 'final' of the base type definition "
+		"contains 'extension'", NULL);
+	    return (XML_SCHEMAP_COS_CT_EXTENDS_1_1);
+	}	
+    }
+    return (0);
+}
 
-
-	
-    } else {
+/**
+ * xmlSchemaCheckDerivationOKRestriction:
+ * @ctxt:  the schema parser context
+ * @type:  the complex type definition
+ *
+ * (3.4.6) Constraints on Complex Type Definition Schema Components
+ * Schema Component Constraint: 
+ * Derivation Valid (Restriction, Complex) (derivation-ok-restriction)
+ *
+ * STATUS:
+ *   missing: 
+ *     (5.4.2), (5.2.2.1)
+ *
+ * Returns 0 if the constraints are satisfied, a positive
+ * error code if not and -1 if an internal error occured.
+ */
+static int
+xmlSchemaCheckDerivationOKRestriction(xmlSchemaParserCtxtPtr ctxt,
+				      xmlSchemaTypePtr type)
+{
+    xmlSchemaTypePtr base;
+    
+    /*
+    * TODO: Correct the error code; XML_SCHEMAP_COS_CT_EXTENDS_1_1 is used
+    * temporarily only.
+    */    
+    base = type->baseType;
+    if (base->flags & XML_SCHEMAS_TYPE_FINAL_RESTRICTION) {
 	/*
-	* 2 If the {base type definition} is a simple type definition, 
-	* then all of the following must be true:
+	* SPEC (1) "The {base type definition} must be a complex type
+	* definition whose {final} does not contain restriction."
 	*/
+	xmlSchemaPCustomErr(ctxt,
+	    XML_SCHEMAP_COS_CT_EXTENDS_1_1,
+	    NULL, type, NULL,
+	    "The 'final' of the base type definition "
+	    "contains 'restriction'", NULL);
+	return (XML_SCHEMAP_COS_CT_EXTENDS_1_1);
+    }
+    /*
+    * NOTE (3) and (4) are done in xmlSchemaBuildAttributeValidation().
+    *
+    * SPEC (5) "One of the following must be true:"
+    */
+    if (base->builtInType == XML_SCHEMAS_ANYTYPE) {
 	/*
-	* 2.1 The {content type} must be the same simple type definition.
+	* SPEC (5.1) "The {base type definition} must be the
+	* ·ur-type definition·."
+	* PASS
 	*/
+    } else if ((type->contentType == XML_SCHEMA_CONTENT_SIMPLE) ||
+	    (type->contentType == XML_SCHEMA_CONTENT_BASIC)) {
 	/*
-	* 2.2 The {final} of the {base type definition} must not contain 
-	* extension
+	* SPEC (5.2.1) "The {content type} of the complex type definition
+	* must be a simple type definition"
+	*
+	* SPEC (5.2.2) "One of the following must be true:"
 	*/
+	if ((base->contentType == XML_SCHEMA_CONTENT_SIMPLE) ||
+	    (base->contentType == XML_SCHEMA_CONTENT_BASIC)) {
+	    /*
+	    * SPEC (5.2.2.1) "The {content type} of the {base type
+	    * definition} must be a simple type definition from which
+	    * the {content type} is validly derived given the empty
+	    * set as defined in Type Derivation OK (Simple) (§3.14.6)."
+	    * URGENT TODO
+	    */	    
+	} else if ((base->contentType == XML_SCHEMA_CONTENT_MIXED) &&
+	    (xmlSchemaIsParticleEmptiable(
+		(xmlSchemaParticlePtr) base->subtypes))) {		
+	    /*
+	    * SPEC (5.2.2.2) "The {base type definition} must be mixed
+	    * and have a particle which is ·emptiable· as defined in
+	    * Particle Emptiable (§3.9.6)."
+	    * PASS
+	    */
+	} else {
+	    xmlSchemaPCustomErr(ctxt,
+		XML_SCHEMAP_COS_CT_EXTENDS_1_1,
+		NULL, type, NULL,
+		"The content type of the base type must be either "
+		"a simple type or 'mixed' and an emptiable particle", NULL);
+	    return (XML_SCHEMAP_COS_CT_EXTENDS_1_1);
+	}
+    } else if (type->contentType == XML_SCHEMA_CONTENT_EMPTY) {
+	/*
+	* SPEC (5.3.1) "The {content type} of the complex type itself must
+	* be empty"
+	*/
+	if (base->contentType == XML_SCHEMA_CONTENT_EMPTY) {
+	    /*
+	    * SPEC (5.3.2.1) "The {content type} of the {base type 
+	    * definition} must also be empty."
+	    * PASS
+	    */
+	} else if (((base->contentType == XML_SCHEMA_CONTENT_ELEMENTS) ||
+	    (base->contentType == XML_SCHEMA_CONTENT_MIXED)) &&
+	    xmlSchemaIsParticleEmptiable(
+		(xmlSchemaParticlePtr) base->subtypes)) {
+	    /*
+	    * SPEC (5.3.2.2) "The {content type} of the {base type
+	    * definition} must be elementOnly or mixed and have a particle
+	    * which is ·emptiable· as defined in Particle Emptiable (§3.9.6)."
+	    * PASS
+	    */
+	} else {
+	    xmlSchemaPCustomErr(ctxt,
+		XML_SCHEMAP_COS_CT_EXTENDS_1_1,
+		NULL, type, NULL,
+		"The content type of the base type must be either "
+		"empty or 'mixed' (or 'elements-only') and an emptiable "
+		"particle", NULL);
+	    return (XML_SCHEMAP_COS_CT_EXTENDS_1_1);
+	}
+    } else if ((type->contentType == XML_SCHEMA_CONTENT_ELEMENTS) ||
+	((type->contentType == XML_SCHEMA_CONTENT_MIXED) &&
+	 (base->contentType == XML_SCHEMA_CONTENT_MIXED))) {
+	/*
+	* SPEC (5.4.1.1) "The {content type} of the complex type definition
+	* itself must be element-only"
+	* SPEC (5.4.1.2) "The {content type} of the complex type definition
+	* itself and of the {base type definition} must be mixed"
+	*/
+	/*
+	* SPEC (5.4.2) "The particle of the complex type definition itself
+	* must be a ·valid restriction· of the particle of the {content
+	* type} of the {base type definition} as defined in Particle Valid
+	* (Restriction) (§3.9.6).
+	* URGENT TODO
+	*/	
+    } else {
+	xmlSchemaPCustomErr(ctxt,
+	    XML_SCHEMAP_COS_CT_EXTENDS_1_1,
+	    NULL, type, NULL,
+	    "The type is not a valid restriction of its base type", NULL);
+	return (XML_SCHEMAP_COS_CT_EXTENDS_1_1);
     }
+    return (0);
+}
 
+/**
+ * xmlSchemaCheckCTPropertiesCorrect:
+ * @ctxt:  the schema parser context
+ * @type:  the complex type definition
+ *
+ * (3.4.6) Constraints on Complex Type Definition Schema Components
+ *
+ * Returns 0 if the constraints are satisfied, a positive
+ * error code if not and -1 if an internal error occured.
+ */
+static int
+xmlSchemaCheckCTComponent(xmlSchemaParserCtxtPtr ctxt,
+			  xmlSchemaTypePtr type)
+{
+    int ret;
+    /*
+    * Complex Type Definition Properties Correct
+    */    
+    ret = xmlSchemaCheckCTPropsCorrect(ctxt, type);
+    if (ret != 0)
+	return (ret);
+    if (type->flags & XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION)
+	ret = xmlSchemaCheckCOSCTExtends(ctxt, type);
+    else
+	ret = xmlSchemaCheckDerivationOKRestriction(ctxt, type);
+    return (ret);
 }
 
+/**
+ * xmlSchemaCheckSRCCT:
+ * @ctxt:  the schema parser context
+ * @type:  the complex type definition
+ *
+ * (3.4.3) Constraints on XML Representations of Complex Type Definitions:
+ * Schema Representation Constraint: 
+ * Complex Type Definition Representation OK (src-ct)
+ *
+ * Returns 0 if the constraints are satisfied, a positive
+ * error code if not and -1 if an internal error occured.
+ */
 static int
 xmlSchemaCheckSRCCT(xmlSchemaParserCtxtPtr ctxt, 
 		    xmlSchemaTypePtr type)
 {
-    xmlSchemaTypePtr base, content;
-    int OK = 0;
+    xmlSchemaTypePtr base;
+    int ret = 0;
 
     /*
     * TODO: Adjust the error codes here, as I used
     * XML_SCHEMAP_SRC_CT_1 only yet.
     */
-    /*
-    * Schema Representation Constraint: 
-    * Complex Type Definition Representation OK
-    */
     base = type->baseType;
-    if (base == NULL) {
-	xmlSchemaPCustomErr(ctxt, XML_SCHEMAP_INTERNAL, NULL, type, NULL,
-	    "Internal error: xmlSchemaCheckSRCCT, '%s', no base type", 
-	    type->name);
-	return (-1);
-    }
-    
-    if (type->subtypes != NULL) {
-	if (type->subtypes->type == XML_SCHEMA_TYPE_COMPLEX_CONTENT) {
-	    if IS_COMPLEX_TYPE(base) {
-		/*
-		* 1 If the <complexContent> alternative is chosen, the type definition
-		* ·resolved· to by the ·actual value· of the base [attribute] 
-		* must be a complex type definition;
+    if (type->contentType != XML_SCHEMA_CONTENT_SIMPLE) {
+	/*
+	* 1 If the <complexContent> alternative is chosen, the type definition
+	* ·resolved· to by the ·actual value· of the base [attribute] 
+	* must be a complex type definition;
+	*/
+	if (! IS_COMPLEX_TYPE(base)) {
+	    xmlChar *str = NULL;
+	    xmlSchemaPCustomErr(ctxt,
+		XML_SCHEMAP_SRC_CT_1,
+		NULL, type, type->node,
+		"If using <complexContent>, the base type is expected to be "
+		"a complex type. The base type '%s' is a simple type",
+		xmlSchemaFormatQName(&str, base->targetNamespace,
+		base->name));
+	    FREE_AND_NULL(str)
+	    return (XML_SCHEMAP_SRC_CT_1);
+	}
+    } else {
+	/*
+	* SPEC
+	* 2 If the <simpleContent> alternative is chosen, all of the
+	* following must be true:
+	* 2.1 The type definition ·resolved· to by the ·actual value· of the
+	* base [attribute] must be one of the following:
+	*/
+	if (IS_SIMPLE_TYPE(base)) {
+	    if ((type->flags & 
+		XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION) == 0) {
+		xmlChar *str = NULL;
+		/* 
+		* 2.1.3 only if the <extension> alternative is also 
+		* chosen, a simple type definition.
 		*/
+		/* TODO: Change error code to ..._SRC_CT_2_1_3. */
 		xmlSchemaPCustomErr(ctxt,
 		    XML_SCHEMAP_SRC_CT_1,
 		    NULL, type, NULL,
-		    "The base type is not a complex type", NULL);
+		    "If using <simpleContent> and <restriction>, the base "
+		    "type must be a complex type. The base type '%s' is "
+		    "a simple type",
+		    xmlSchemaFormatQName(&str, base->targetNamespace,
+			base->name));
+		FREE_AND_NULL(str)
 		return (XML_SCHEMAP_SRC_CT_1);
-	    }
-	} else if (type->subtypes->type == XML_SCHEMA_TYPE_SIMPLE_CONTENT) {
-
-	    if IS_SIMPLE_TYPE(base) {
-		if (type->flags & 
-		    XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION) {
-		    /* 
-		    * 2.1.3 only if the <extension> alternative is also 
-		    * chosen, a simple type definition.
-		    */
-		    /* TODO: Change error code to ..._SRC_CT_2_1_3. */
-		    xmlSchemaPCustomErr(ctxt,
-			XML_SCHEMAP_SRC_CT_1,
+	    }	   
+	} else {
+	    /* Base type is a complex type. */
+	    if ((base->contentType == XML_SCHEMA_CONTENT_SIMPLE) ||
+		(base->contentType == XML_SCHEMA_CONTENT_BASIC)) {
+		/*
+		* 2.1.1 a complex type definition whose {content type} is a 
+		* simple type definition;
+		* PASS
+		*/
+		if (base->contentTypeDef == NULL) {
+		    xmlSchemaPCustomErr(ctxt, XML_SCHEMAP_INTERNAL, 
 			NULL, type, NULL,
-			"A complex type (simple content) cannot restrict "
-			"an other simple type",
-			NULL);
-		    return (XML_SCHEMAP_SRC_CT_1);
+			"Internal error: xmlSchemaCheckSRCCT, "
+			"'%s', base type has no content type", 
+			type->name);
+		    return (-1);
 		}
-		OK = 1;
+	    } else if ((base->contentType == XML_SCHEMA_CONTENT_MIXED) &&
+		(type->flags &
+		    XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION)) {
 
-	    } else { /* if IS_SIMPLE_TYPE(base) */
-		if (base->contentType = XML_SCHEMA_CONTENT_MIXED) {
+		/*
+		* 2.1.2 only if the <restriction> alternative is also 
+		* chosen, a complex type definition whose {content type} 
+		* is mixed and a particle emptiable.
+		*/
+		if (! xmlSchemaIsParticleEmptiable(
+		    (xmlSchemaParticlePtr) base->subtypes)) {
+		    ret = XML_SCHEMAP_SRC_CT_1;
+		} else if ((type->contentTypeDef == NULL) ||
+		    (type->contentTypeDef->baseType == NULL)) {
+		    xmlChar *str = NULL;
 		    /*
-		    * 2.1.2 only if the <restriction> alternative is also 
-		    * chosen, a complex type definition whose {content type} 
-		    * is mixed and a particle emptyable.
-		    */	
-		    /*
-		    * FIXME TODO: Check for *empiable particle* is missing. 
-		    */
-		    if ((type->flags & 
-			XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION) == 0) {
-			xmlSchemaPCustomErr(ctxt,
-			    XML_SCHEMAP_SRC_CT_1,
-			    NULL, type, NULL,
-			    "A complex type (simple content) cannot "
-			    "extend an other complex type which has a "
-			    "content type of: 'mixed' and emptiable particle",
-			    NULL);
-			return (XML_SCHEMAP_SRC_CT_1);
-		    }
-		    /*
-		    * NOTE: This will be fired as well, if the base type
-		    * is *'anyType'*.
-		    * NOTE: type->subtypes->subtypes will be the 
-		    * <restriction> item.
-		    */
-		    if (type->subtypes->subtypes == NULL) {
-			/* Yes, this is paranoid programming. */
-			xmlSchemaPCustomErr(ctxt, XML_SCHEMAP_INTERNAL, 
-			    NULL, type, NULL,
-			    "Internal error: xmlSchemaCheckSRCCT, "
-			    "'%s', <simpleContent> has no <restriction>", 
-			    type->name);
-			return (-1);
-		    }
-		    /*
 		    * 2.2 If clause 2.1.2 above is satisfied, then there 
 		    * must be a <simpleType> among the [children] of 
 		    * <restriction>.
-		    */
-    		    if (type->subtypes->subtypes->type !=
-			XML_SCHEMA_TYPE_SIMPLE) {
-			/* TODO: Change error code to ..._SRC_CT_2_2. */
-			xmlSchemaPCustomErr(ctxt,
-			    XML_SCHEMAP_SRC_CT_1,
-			    NULL, type, NULL,
-			    "A <simpleType> is expected among the children "
-			    "of <restriction>", NULL);
-			return (XML_SCHEMAP_SRC_CT_1);
-		    } 
-		    OK = 1;
-		} else { /* if (base->contentType = XML_SCHEMA_CONTENT_MIXED)*/
-		    /*
-		    * 2.1.1 a complex type definition whose {content type} is a 
-		    * simple type definition;
-		    */
-		    if (base->contentType == XML_SCHEMA_CONTENT_ELEMENTS) {
-			xmlSchemaPCustomErr(ctxt,
-			    XML_SCHEMAP_SRC_CT_1,
-			    NULL, type, NULL,
-			    "A complex type (simple content) cannot "
-			    "be derived from the complex type '%s'", 
-			    base->name);
-			return (XML_SCHEMAP_SRC_CT_1);
-		    }
-		    content = base->contentTypeDef;
-		    if (content == NULL) {
-			xmlSchemaPCustomErr(ctxt, XML_SCHEMAP_INTERNAL, 
-			    NULL, type, NULL,
-			    "Internal error: xmlSchemaCheckSRCCT, "
-			    "'%s', base type has no content type", 
-			    type->name);
-			return (-1);
-		    }
-		    if (content->type != XML_SCHEMA_TYPE_SIMPLE) {
-			xmlSchemaPCustomErr(ctxt,
-			    XML_SCHEMAP_SRC_CT_1,
-			    NULL, type, NULL,
-			    "A complex type (simple content) cannot "
-			    "be derived from the complex type '%s'", 
-			    base->name);
-			return (XML_SCHEMAP_SRC_CT_1);
-		    }
+		    */							
+		    /* TODO: Change error code to ..._SRC_CT_2_2. */
+		    xmlSchemaPCustomErr(ctxt,
+			XML_SCHEMAP_SRC_CT_1,
+			NULL, type, NULL,
+			"A <simpleType> is expected among the children "
+			"of <restriction>, if <simpleContent> is used and "
+			"the base type '%s' is a complex type",
+			xmlSchemaFormatQName(&str, base->targetNamespace,
+			base->name));
+		    FREE_AND_NULL(str)
+		    return (XML_SCHEMAP_SRC_CT_1);
 		}
-	    } 
-	} 	    	
+	    } else {
+		ret = XML_SCHEMAP_SRC_CT_1;		
+	    }	    
+	}
+	if (ret > 0) {
+	    xmlChar *str = NULL;
+	    if (type->flags & XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION) {		
+		xmlSchemaPCustomErr(ctxt,
+		    XML_SCHEMAP_SRC_CT_1,
+		    NULL, type, NULL,
+		    "If <simpleContent> and <restriction> is used, the "
+		    "base type must be a simple type or a complex type with "
+		    "mixed content and particle emptiable. The base type "
+		    "'%s' is none of those",
+		    xmlSchemaFormatQName(&str, base->targetNamespace, 
+		    base->name));
+	    } else {
+		xmlSchemaPCustomErr(ctxt,
+		    XML_SCHEMAP_SRC_CT_1,
+		    NULL, type, NULL,
+		    "If <simpleContent> and <extension> is used, the "
+		    "base type must be a simple type. The base type '%s' "
+		    "is a complex type",
+		    xmlSchemaFormatQName(&str, base->targetNamespace, 
+		    base->name));
+	    }
+	    FREE_AND_NULL(str)
+	}
     }
     /*
-    * TODO: 3 The corresponding complex type definition component must 
+    * SPEC (3) "The corresponding complex type definition component must 
     * satisfy the conditions set out in Constraints on Complex Type 
-    * Definition Schema Components (§3.4.6);
-    *
-    * TODO: 4 If clause 2.2.1 or clause 2.2.2 in the correspondence specification 
+    * Definition Schema Components (§3.4.6);"
+    * NOTE (3) will be done in xmlSchemaTypeFixup().
+    */   
+    /*
+    * SPEC (4) If clause 2.2.1 or clause 2.2.2 in the correspondence specification
     * above for {attribute wildcard} is satisfied, the intensional 
     * intersection must be expressible, as defined in Attribute Wildcard 
     * Intersection (§3.10.6).
+    * NOTE (4) is done in xmlSchemaBuildAttributeValidation().
     */
-
+    return (ret);
 }
-#endif
 
-/**
- * xmlSchemaGroupDefFixup:
- * @typeDecl:  the schema model group definition
- * @ctxt:  the schema parser context
- *
- * Fixes model group definitions.
- */
+#define FACET_RESTR_MUTUAL_ERR(fac1, fac2) \
+    xmlSchemaPCustomErrExt(pctxt,      \
+	XML_SCHEMAP_INVALID_FACET_VALUE, \
+	NULL, (xmlSchemaTypePtr) fac1, fac1->node, \
+	"It is an error for both '%s' and '%s' to be specified on the "\
+	"same type definition", \
+	BAD_CAST xmlSchemaFacetTypeToString(fac1->type), \
+	BAD_CAST xmlSchemaFacetTypeToString(fac2->type), NULL);
+
+#define FACET_RESTR_ERR(fac1, msg) \
+    xmlSchemaPCustomErr(pctxt,      \
+	XML_SCHEMAP_INVALID_FACET_VALUE, \
+	NULL, (xmlSchemaTypePtr) fac1, fac1->node, \
+	msg, NULL); 
+
+#define FACET_RESTR_FIXED_ERR(fac) \
+    xmlSchemaPCustomErr(pctxt, \
+	XML_SCHEMAP_INVALID_FACET_VALUE, \
+	NULL, (xmlSchemaTypePtr) fac, fac->node, \
+	"The base type's facet is 'fixed', thus the value must not " \
+	"differ", NULL); 
+
 static void
-xmlSchemaGroupDefFixup(xmlSchemaTypePtr group,
-		       xmlSchemaParserCtxtPtr ctxt, 
-		       const xmlChar * name ATTRIBUTE_UNUSED)
-{    
-    group->contentType = XML_SCHEMA_CONTENT_ELEMENTS;
-    if ((group->ref != NULL) && (group->subtypes == NULL)) {
-	xmlSchemaTypePtr groupDef;
-	/*
-	* Resolve the reference.
-	*/
-	groupDef = xmlSchemaGetGroup(ctxt->schema, group->ref,
-	    group->refNs);
-	if (groupDef == NULL) {
-	    xmlSchemaPResCompAttrErr(ctxt, 
-		XML_SCHEMAP_SRC_RESOLVE, 
-		NULL, group, NULL,
-		"ref", group->ref, group->refNs, 
-		XML_SCHEMA_TYPE_GROUP, NULL);
-	    return;
-	}
-	group->subtypes = groupDef;
-    }		
+xmlSchemaDeriveFacetErr(xmlSchemaParserCtxtPtr pctxt,
+			xmlSchemaFacetPtr facet1,
+			xmlSchemaFacetPtr facet2,
+			int lessGreater,
+			int orEqual,
+			int ofBase)
+{
+    xmlChar *msg = NULL;
+
+    msg = xmlStrdup(BAD_CAST "'");
+    msg = xmlStrcat(msg, xmlSchemaFacetTypeToString(facet1->type));
+    msg = xmlStrcat(msg, BAD_CAST "' has to be");
+    if (lessGreater == 0)
+	msg = xmlStrcat(msg, BAD_CAST " equal to");
+    if (lessGreater == 1)
+	msg = xmlStrcat(msg, BAD_CAST " greater than");
+    else
+	msg = xmlStrcat(msg, BAD_CAST " less than");
+
+    if (orEqual)
+	msg = xmlStrcat(msg, BAD_CAST " or equal to");
+    msg = xmlStrcat(msg, BAD_CAST " '");
+    msg = xmlStrcat(msg, xmlSchemaFacetTypeToString(facet2->type));
+    if (ofBase)
+	msg = xmlStrcat(msg, BAD_CAST "' of the base type");
+    else
+	msg = xmlStrcat(msg, BAD_CAST "'");
+
+    xmlSchemaPCustomErr(pctxt,
+	XML_SCHEMAP_INVALID_FACET_VALUE,
+	NULL, (xmlSchemaTypePtr) facet1, facet1->node,	
+	(const char *) msg, NULL);
+
+    if (msg != NULL)
+	xmlFree(msg);
 }
 
-#if 0 /* Enable when the content type will be computed. */
 static int
-xmlSchemaComputeContentType(xmlSchemaParserCtxtPtr ctxt,
-			xmlSchemaTypePtr type)
+xmlSchemaDeriveAndValidateFacets(xmlSchemaParserCtxtPtr pctxt,
+				 xmlSchemaTypePtr type)
 {
-    xmlSchemaTypePtr base, res = NULL;
+    xmlSchemaTypePtr base = type->baseType;
+    xmlSchemaFacetLinkPtr link, cur, last = NULL;
+    xmlSchemaFacetPtr facet, bfacet, 
+	flength = NULL, ftotdig = NULL, ffracdig = NULL,
+	fmaxlen = NULL, fminlen = NULL, /* facets of the current type */
+	fmininc = NULL, fmaxinc = NULL,
+	fminexc = NULL, fmaxexc = NULL,
+	bflength = NULL, bftotdig = NULL, bffracdig = NULL,
+	bfmaxlen = NULL, bfminlen = NULL, /* facets of the base type */
+	bfmininc = NULL, bfmaxinc = NULL,
+	bfminexc = NULL, bfmaxexc = NULL;
+    int res, err = 0, fixedErr;
+    /*
+    * 3 The {facets} of R are the union of S and the {facets} 
+    * of B, eliminating duplicates. To eliminate duplicates, 
+    * when a facet of the same kind occurs in both S and the 
+    * {facets} of B, the one in the {facets} of B is not 
+    * included, with the exception of enumeration and pattern 
+    * facets, for which multiple occurrences with distinct values 
+    * are allowed.
+    */
+    if ((type->facetSet == NULL) && (base->facetSet == NULL))
+	return (0);
 
-    base = type->baseType;
-    if (base == NULL) {
-	xmlSchemaPCustomErr(ctxt,
-	    XML_SCHEMAP_INTERNAL,
-	    NULL, type, NULL,
-	    "Internal error: xmlSchemaGetContentType, "
-	    "the complex type '%s' has no base type", type->name);
-	return (-1);
-    }   
-    if (IS_ANYTYPE(base) || (type->subtypes->type == 
-	    XML_SCHEMA_TYPE_COMPLEX_CONTENT)) {
-	xmlSchemaTypePtr start;
+    last = type->facetSet;
+    if (last != NULL)
+	while (last->next != NULL)
+	    last = last->next;
+
+    for (cur = type->facetSet; cur != NULL; cur = cur->next) {
+	facet = cur->facet;
+	switch (facet->type) {
+	    case XML_SCHEMA_FACET_LENGTH:
+		flength = facet; break;
+	    case XML_SCHEMA_FACET_MINLENGTH:
+		fminlen = facet; break;
+	    case XML_SCHEMA_FACET_MININCLUSIVE:
+		fmininc = facet; break;
+	    case XML_SCHEMA_FACET_MINEXCLUSIVE:
+		fminexc = facet; break;
+	    case XML_SCHEMA_FACET_MAXLENGTH:
+		fmaxlen = facet; break;
+	    case XML_SCHEMA_FACET_MAXINCLUSIVE:
+		fmaxinc = facet; break;
+	    case XML_SCHEMA_FACET_MAXEXCLUSIVE:
+		fmaxexc = facet; break;
+	    case XML_SCHEMA_FACET_TOTALDIGITS:
+		ftotdig = facet; break;
+	    case XML_SCHEMA_FACET_FRACTIONDIGITS:
+		ffracdig = facet; break;
+	    default:
+		break;
+	}	
+    }
+    for (cur = base->facetSet; cur != NULL; cur = cur->next) {
+	facet = cur->facet;
+	switch (facet->type) {
+	    case XML_SCHEMA_FACET_LENGTH:
+		bflength = facet; break;
+	    case XML_SCHEMA_FACET_MINLENGTH:
+		bfminlen = facet; break;
+	    case XML_SCHEMA_FACET_MININCLUSIVE:
+		bfmininc = facet; break;
+	    case XML_SCHEMA_FACET_MINEXCLUSIVE:
+		bfminexc = facet; break;
+	    case XML_SCHEMA_FACET_MAXLENGTH:
+		bfmaxlen = facet; break;
+	    case XML_SCHEMA_FACET_MAXINCLUSIVE:
+		bfmaxinc = facet; break;
+	    case XML_SCHEMA_FACET_MAXEXCLUSIVE:
+		bfmaxexc = facet; break;
+	    case XML_SCHEMA_FACET_TOTALDIGITS:
+		bftotdig = facet; break;
+	    case XML_SCHEMA_FACET_FRACTIONDIGITS:
+		bffracdig = facet; break;
+	    default:
+		break;
+	}	
+    }
+    err = 0;
+    /*
+    * length and minLength or maxLength (2.2) + (3.2)
+    */
+    if (flength && (fminlen || fmaxlen)) {
+	FACET_RESTR_ERR(flength, "It is an error for both 'length' and "
+	    "either of 'minLength' or 'maxLength' to be specified on "
+	    "the same type definition")
+    }
+    /*
+    * Mutual exclusions in the same derivation step.
+    */
+    if ((fmaxinc) && (fmaxexc)) {
+	/* 
+	* SCC "maxInclusive and maxExclusive" 
+	*/
+	FACET_RESTR_MUTUAL_ERR(fmaxinc, fmaxexc)
+    }
+    if ((fmininc) && (fminexc)) {
+	/* 
+	* SCC "minInclusive and minExclusive"
+	*/
+	FACET_RESTR_MUTUAL_ERR(fmininc, fminexc)
+    }
+    
+    if (flength && bflength) {
 	/*
-	* Effective 'mixed'.
+	* SCC "length valid restriction" 
+	* The values have to be equal.
 	*/
-	if (type->flags & XML_SCHEMAS_TYPE_MIXED)
-	     type->contentType = XML_SCHEMA_CONTENT_MIXED;
+	res = xmlSchemaCompareValues(flength->val, bflength->val);
+	if (res == -2)
+	    goto internal_error;
 	/*
-	* Effective content.
+	* TODO: Maby a bug in the spec.
 	*/
-	if (IS_ANYTYPE(base)) 
-	    start = type;
-	else
-	    start = type->subtypes;
-	 
-    } else { /* if XML_SCHEMA_TYPE_COMPLEX_CONTENT */
-	xmlSchemaTypePtr baseContentItem;
-
+	if (res != 0)
+	    xmlSchemaDeriveFacetErr(pctxt, flength, bflength, 0, 0, 1);
+	if ((res != 0) && (bflength->fixed)) {
+	    FACET_RESTR_FIXED_ERR(flength)
+	}
+	
+    }
+    if (fminlen && bfminlen) {
 	/*
-	* Complex type with simple content.
+	* SCC "minLength valid restriction"
+	* minLength >= BASE minLength
 	*/
-	if IS_COMPLEX_TYPE(base) {
-	    if (type->flags & XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION) {	
-		/*
-		* Summary: a complex type (simple content) can *restrict*
-		* a complex type with the following content type:
-		* 1. 'mixed' and an emptiable particle
-		* 2. simple type
-		*/
-		if (base->contentType == XML_SCHEMA_CONTENT_MIXED) {
-		    /*
-		    * 2 if the {content type} of the base type is mixed and a 
-		    * particle which is ·emptiable·, 
-		    * [...] 
-		    * then starting from the simple type definition 
-		    * corresponding to the <simpleType> among the [children] 
-		    * of <restriction> (**which must be present**)
-		    *
-		    * FIXME TODO: Handle "emptiable particle".
-		    */
-		    res = type->subtypes->subtypes;
-		    if (res == NULL) {
-			xmlSchemaPCustomErr(ctxt,
-			    XML_SCHEMAP_INTERNAL,
-			    NULL, type, NULL,
-			    "Internal error: xmlSchemaGetContentType, "
-			    "CT '%s' (restricting): <simpleContent> has no "
-			    "<restriction>",
-			    type->name);
-			return (-1);
-		    }
-
-		    res->subtypes;
-		    if (res == NULL) {
-			xmlSchemaPCustomErr(ctxt,
-			    XML_SCHEMAP_INTERNAL,
-			    NULL, type, NULL,
-			    "Internal error: xmlSchemaGetContentType, "
-			    "CT '%s' (restricting): <restriction> has no "
-			    "mandatory <simpleType>",
-			    type->name);
-			return (-1);
-		    }
-		} else {
-		    baseContentItem = base->contentTypeDef;
-		    if (baseContentItem == NULL) {
-			xmlSchemaPCustomErr(ctxt,
-			    XML_SCHEMAP_INTERNAL,
-			    NULL, type, NULL,
-			    "Internal error: xmlSchemaGetContentType, "
-			    "CT '%s' (restricting), the base type has no "
-			    "content type", type->name);
-			return (-1);
-		    }
-		    if IS_SIMPLE_TYPE(baseContentItem) {
+	res = xmlSchemaCompareValues(fminlen->val, bfminlen->val);
+	if (res == -2)
+	    goto internal_error;
+	if (res == -1)
+	    xmlSchemaDeriveFacetErr(pctxt, fminlen, bfminlen, 1, 1, 1);
+	if ((res != 0) && (bfminlen->fixed)) {
+	    FACET_RESTR_FIXED_ERR(fminlen)
+	}	    
+    }
+    if (fmaxlen && bfmaxlen) {
+	/*
+	* SCC "maxLength valid restriction"
+	* maxLength <= BASE minLength
+	*/
+	res = xmlSchemaCompareValues(fmaxlen->val, bfmaxlen->val);
+	if (res == -2)
+	    goto internal_error;
+	if (res == 1)
+	    xmlSchemaDeriveFacetErr(pctxt, fmaxlen, bfmaxlen, -1, 1, 1);
+	if ((res != 0) && (bfmaxlen->fixed)) {
+	    FACET_RESTR_FIXED_ERR(fmaxlen)
+	}	    
+    }
+    /*
+    * SCC "length and minLength or maxLength"
+    */
+    if (! flength)
+	flength = bflength;    
+    if (flength) {
+	if (! fminlen)
+	    flength = bflength;
+	if (fminlen) {
+	    /* (1.1) length >= minLength */
+	    res = xmlSchemaCompareValues(flength->val, fminlen->val);
+	    if (res == -2)
+		goto internal_error;
+	    if (res == -1)
+		xmlSchemaDeriveFacetErr(pctxt, flength, fminlen, 1, 1, 0);
+	}
+	if (! fmaxlen)
+	    fmaxlen = bfmaxlen;
+	if (fmaxlen) {
+	    /* (2.1) length <= maxLength */
+	    res = xmlSchemaCompareValues(flength->val, fmaxlen->val);
+	    if (res == -2)
+		goto internal_error;
+	    if (res == 1)
+		xmlSchemaDeriveFacetErr(pctxt, flength, fmaxlen, -1, 1, 0);
+	}
+    }
+    if (fmaxinc) {
+	/*
+	* "maxInclusive"
+	*/
+	if (fmininc) {
+	    /* SCC "maxInclusive >= minInclusive" */
+	    res = xmlSchemaCompareValues(fmaxinc->val, fmininc->val);
+	    if (res == -2)
+		goto internal_error;
+	    if (res == -1) {
+		xmlSchemaDeriveFacetErr(pctxt, fmaxinc, fmininc, 1, 1, 0);
+	    }
+	}
+	/*
+	* SCC "maxInclusive valid restriction"
+	*/
+	if (bfmaxinc) {
+	    /* maxInclusive <= BASE maxInclusive */
+	    res = xmlSchemaCompareValues(fmaxinc->val, bfmaxinc->val);
+	    if (res == -2)
+		goto internal_error;
+	    if (res == 1)
+		xmlSchemaDeriveFacetErr(pctxt, fmaxinc, bfmaxinc, -1, 1, 1);
+	    if ((res != 0) && (bfmaxinc->fixed)) {
+		FACET_RESTR_FIXED_ERR(fmaxinc)
+	    }
+	}
+	if (bfmaxexc) {
+	    /* maxInclusive < BASE maxExclusive */
+	    res = xmlSchemaCompareValues(fmaxinc->val, bfmaxexc->val);
+	    if (res == -2)
+		goto internal_error;
+	    if (res != -1) {
+		xmlSchemaDeriveFacetErr(pctxt, fmaxinc, bfmaxexc, -1, 0, 1);
+	    }
+	}
+	if (bfmininc) {
+	    /* maxInclusive >= BASE minInclusive */
+	    res = xmlSchemaCompareValues(fmaxinc->val, bfmininc->val);
+	    if (res == -2)
+		goto internal_error;
+	    if (res == -1) {
+		xmlSchemaDeriveFacetErr(pctxt, fmaxinc, bfmininc, 1, 1, 1);
+	    }
+	}
+	if (bfminexc) {
+	    /* maxInclusive > BASE minExclusive */
+	    res = xmlSchemaCompareValues(fmaxinc->val, bfminexc->val);
+	    if (res == -2)
+		goto internal_error;
+	    if (res != 1) {
+		xmlSchemaDeriveFacetErr(pctxt, fmaxinc, bfminexc, 1, 0, 1);
+	    }
+	}	
+    }
+    if (fmaxexc) {
+	/*
+	* "maxExclusive >= minExclusive"
+	*/
+	if (fminexc) {
+	    res = xmlSchemaCompareValues(fmaxexc->val, fminexc->val);
+	    if (res == -2)
+		goto internal_error;
+	    if (res == -1) {
+		xmlSchemaDeriveFacetErr(pctxt, fmaxexc, fminexc, 1, 1, 0);
+	    }
+	}
+	/*
+	* "maxExclusive valid restriction"
+	*/
+	if (bfmaxexc) {
+	    /* maxExclusive <= BASE maxExclusive */
+	    res = xmlSchemaCompareValues(fmaxexc->val, bfmaxexc->val);
+	    if (res == -2)
+		goto internal_error;
+	    if (res == 1) {
+		xmlSchemaDeriveFacetErr(pctxt, fmaxexc, bfmaxexc, -1, 1, 1);
+	    }
+	    if ((res != 0) && (bfmaxexc->fixed)) {
+		FACET_RESTR_FIXED_ERR(fmaxexc)	
+	    }
+	}
+	if (bfmaxinc) {
+	    /* maxExclusive <= BASE maxInclusive */
+	    res = xmlSchemaCompareValues(fmaxexc->val, bfmaxinc->val);
+	    if (res == -2)
+		goto internal_error;
+	    if (res == 1) {
+		xmlSchemaDeriveFacetErr(pctxt, fmaxexc, bfmaxinc, -1, 1, 1);
+	    }
+	}
+	if (bfmininc) {
+	    /* maxExclusive > BASE minInclusive */
+	    res = xmlSchemaCompareValues(fmaxexc->val, bfmininc->val);
+	    if (res == -2)
+		goto internal_error;
+	    if (res != 1) {
+		xmlSchemaDeriveFacetErr(pctxt, fmaxexc, bfmininc, 1, 0, 1);
+	    }
+	}
+	if (bfminexc) {
+	    /* maxExclusive > BASE minExclusive */
+	    res = xmlSchemaCompareValues(fmaxexc->val, bfminexc->val);
+	    if (res == -2)
+		goto internal_error;
+	    if (res != 1) {
+		xmlSchemaDeriveFacetErr(pctxt, fmaxexc, bfminexc, 1, 0, 1);
+	    }
+	}
+    }
+    if (fminexc) {
+	/*
+	* "minExclusive < maxInclusive"
+	*/
+	if (fmaxinc) {
+	    res = xmlSchemaCompareValues(fminexc->val, fmaxinc->val);
+	    if (res == -2)
+		goto internal_error;
+	    if (res != -1) {
+		xmlSchemaDeriveFacetErr(pctxt, fminexc, fmaxinc, -1, 0, 0);
+	    }
+	}
+	/*
+	* "minExclusive valid restriction"
+	*/
+	if (bfminexc) {
+	    /* minExclusive >= BASE minExclusive */
+	    res = xmlSchemaCompareValues(fminexc->val, bfminexc->val);
+	    if (res == -2)
+		goto internal_error;
+	    if (res == -1) {
+		xmlSchemaDeriveFacetErr(pctxt, fminexc, bfminexc, 1, 1, 1);
+	    }
+	    if ((res != 0) && (bfminexc->fixed)) {
+		FACET_RESTR_FIXED_ERR(fminexc)
+	    }
+	}
+	if (bfmaxinc) {
+	    /* minExclusive <= BASE maxInclusive */
+	    res = xmlSchemaCompareValues(fminexc->val, bfmaxinc->val);
+	    if (res == -2)
+		goto internal_error;
+	    if (res == 1) {
+		xmlSchemaDeriveFacetErr(pctxt, fminexc, bfmaxinc, -1, 1, 1);
+	    }
+	}
+	if (bfmininc) {
+	    /* minExclusive >= BASE minInclusive */
+	    res = xmlSchemaCompareValues(fminexc->val, bfmininc->val);
+	    if (res == -2)
+		goto internal_error;
+	    if (res == -1) {
+		xmlSchemaDeriveFacetErr(pctxt, fminexc, bfmininc, 1, 1, 1);
+	    }
+	}
+	if (bfmaxexc) {
+	    /* minExclusive < BASE maxExclusive */
+	    res = xmlSchemaCompareValues(fminexc->val, bfmaxexc->val);
+	    if (res == -2)
+		goto internal_error;
+	    if (res != -1) {
+		xmlSchemaDeriveFacetErr(pctxt, fminexc, bfmaxexc, -1, 0, 1);
+	    }
+	}	
+    }
+    if (fmininc) {
+	/*
+	* "minInclusive < maxExclusive"
+	*/
+	if (fmaxexc) {
+	    res = xmlSchemaCompareValues(fmininc->val, fmaxexc->val);
+	    if (res == -2)
+		goto internal_error;
+	    if (res != -1) {
+		xmlSchemaDeriveFacetErr(pctxt, fmininc, fmaxexc, -1, 0, 0);
+	    }
+	}
+	/*
+	* "minExclusive valid restriction"
+	*/
+	if (bfmininc) {
+	    /* minInclusive >= BASE minInclusive */
+	    res = xmlSchemaCompareValues(fmininc->val, bfmininc->val);
+	    if (res == -2)
+		goto internal_error;
+	    if (res == -1) {
+		xmlSchemaDeriveFacetErr(pctxt, fmininc, bfmininc, 1, 1, 1);
+	    }
+	    if ((res != 0) && (bfmininc->fixed)) {
+		FACET_RESTR_FIXED_ERR(fmininc)	
+	    }
+	}
+	if (bfmaxinc) {
+	    /* minInclusive <= BASE maxInclusive */
+	    res = xmlSchemaCompareValues(fmininc->val, bfmaxinc->val);
+	    if (res == -2)
+		goto internal_error;
+	    if (res == -1) {
+		xmlSchemaDeriveFacetErr(pctxt, fmininc, bfmaxinc, -1, 1, 1);
+	    }
+	}
+	if (bfminexc) {
+	    /* minInclusive > BASE minExclusive */
+	    res = xmlSchemaCompareValues(fmininc->val, bfminexc->val);
+	    if (res == -2)
+		goto internal_error;
+	    if (res != 1)
+		xmlSchemaDeriveFacetErr(pctxt, fmininc, bfminexc, 1, 0, 1);
+	}
+	if (bfmaxexc) {
+	    /* minInclusive < BASE maxExclusive */
+	    res = xmlSchemaCompareValues(fmininc->val, bfmaxexc->val);
+	    if (res == -2)
+		goto internal_error;
+	    if (res != -1)
+		xmlSchemaDeriveFacetErr(pctxt, fmininc, bfmaxexc, -1, 0, 1);
+	}
+    }
+    if (ftotdig && bftotdig) {
+	/*
+	* SCC " totalDigits valid restriction"
+	* totalDigits <= BASE totalDigits
+	*/
+	res = xmlSchemaCompareValues(ftotdig->val, bftotdig->val);
+	if (res == -2)
+	    goto internal_error;
+	if (res == 1)
+	    xmlSchemaDeriveFacetErr(pctxt, ftotdig, bftotdig,
+	    -1, 1, 1);
+	if ((res != 0) && (bftotdig->fixed)) {
+	    FACET_RESTR_FIXED_ERR(ftotdig)
+	}
+    }
+    if (ffracdig && bffracdig) {	
+	/*
+	* SCC  "fractionDigits valid restriction"
+	* fractionDigits <= BASE fractionDigits
+	*/
+	res = xmlSchemaCompareValues(ffracdig->val, bffracdig->val);
+	if (res == -2)
+	    goto internal_error;
+	if (res == 1)
+	    xmlSchemaDeriveFacetErr(pctxt, ffracdig, bffracdig,
+	    -1, 1, 1);
+	if ((res != 0) && (bffracdig->fixed)) {
+	    FACET_RESTR_FIXED_ERR(ffracdig)
+	}
+    }
+    /*
+    * SCC "fractionDigits less than or equal to totalDigits"
+    */
+    if (! ftotdig)
+	ftotdig = bftotdig;
+    if (! ffracdig)
+	ffracdig = bffracdig;
+    if (ftotdig && ffracdig) {
+	res = xmlSchemaCompareValues(ffracdig->val, ftotdig->val);
+	if (res == -2)
+	    goto internal_error;
+	if (res == 1)
+	    xmlSchemaDeriveFacetErr(pctxt, ffracdig, ftotdig,
+		-1, 1, 0);
+    }
+    /* 
+    * *Enumerations* won' be added here, since only the first set
+    * of enumerations in the ancestor-or-self axis is used
+    * for validation, plus we need to use the base type of those
+    * enumerations for whitespace.
+    *
+    * *Patterns*: won't be add here, since they are ORed at
+    * type level and ANDed at ancestor level. This will
+    * happed during validation by walking the base axis
+    * of the type.
+    */		
+    for (cur = base->facetSet; cur != NULL; cur = cur->next) {
+	bfacet = cur->facet;
+	/* 
+	* Special handling of enumerations and patterns.
+	* TODO: hmm, they should not appear in the set, so remove this.
+	*/
+	if ((bfacet->type == XML_SCHEMA_FACET_PATTERN) ||	
+	    (bfacet->type == XML_SCHEMA_FACET_ENUMERATION))
+	    continue;	
+	/*
+	* Search for a duplicate facet in the current type.
+	*/
+	link = type->facetSet;
+	err = 0;
+	fixedErr = 0;
+	while (link != NULL) {
+	    facet = link->facet;
+	    if (facet->type == bfacet->type) {
+		switch (facet->type) {		
+		    case XML_SCHEMA_FACET_WHITESPACE:
 			/*
-			* 1 If the base type is a complex type whose own 
-		    	* {content type} is a simple type and the <restriction> 
-			* alternative is chosen
+			* The whitespace must be stronger.
 			*/
-			/* type->subtypes->subtypes will be the restriction item.*/
-			res = type->subtypes->subtypes;
-			if (res == NULL) {
-			    xmlSchemaPCustomErr(ctxt,
-				XML_SCHEMAP_INTERNAL,
-				NULL, type, NULL,
-				"Internal error: xmlSchemaGetContentType, "
-				"CT '%s' (restricting): <simpleType> has no "
-				"<restriction>", type->name);
-			    return (-1);
+			if (facet->whitespace < bfacet->whitespace) {
+			    FACET_RESTR_ERR(flength,
+				"The 'whitespace' value has to be equal to "
+				"or stronger than the 'whitespace' value of "
+				"the base type")
 			}
-			/*
-			* 1.1 the simple type definition corresponding to the 
-			* <simpleType> among the [children] of <restriction>if 
-			* there is one;
-			*/
-			res = res->subtypes;
-			if (res == NULL) {
-			    /*
-			    * 1.2 otherwise the {content type} 
-			    * of the base type .
-			    */
-			    res = baseContentItem;
+			if ((bfacet->fixed) && 
+			    (facet->whitespace != bfacet->whitespace)) {
+			    FACET_RESTR_FIXED_ERR(facet)
 			}
-		    }
-		}
-		/*
-		* SPECIAL TODO: If *restricting* the spec wants us to 
-		* create an *additional* simple type which restricts the 
-		* located simple type; we won't do this yet, and look how 
-		* far we get with it.
-		*/
-	    } else { /* if XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION */
-		/*
-		* Summary: a complex type (simple content) can *extend*
-		* only a complex base with a simple type as content.
-		*/		
-		/*
-		* 3 If the type definition ·resolved· to by the ·actual 
-		* value· of the base [attribute] is a complex type 
-		* definition (whose own {content type} *must be* a simple 
-		* type definition, see below) and the *<extension>* 
-		* alternative is chosen, then the {content type} of that 
-		* complex type definition;
-		*/
-		res = base->contentTypeDef;
-		if (res == NULL) {
-		    xmlSchemaPCustomErr(ctxt,
-			XML_SCHEMAP_INTERNAL,
-			NULL, type, NULL,
-			"Internal error: xmlSchemaGetContentType, "
-			"CT '%s' (extending), the base type has no content "
-			"type", type->name);
-		    return (-1);
+			break;
+		    default:
+			break;
 		}		
-		if (! IS_SIMPLE_TYPE(res)) {
-		    xmlSchemaPCustomErr(ctxt,
-			XML_SCHEMAP_INTERNAL,
-			NULL, type, NULL,
-			"Internal error: xmlSchemaGetContentType, "
-			"CT '%s' (extending), the content type of the "
-			"base is not a simple type", type->name);
-		    return (-1);
-		}		
-	    }	    	
-	} else /* if IS_COMPLEX_TYPE(base) */
-	    if (type->flags & XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION) {
-	    /*
-	    * 4 otherwise (the type definition ·resolved· to by the 
-	    * ·actual value· of the base [attribute] is a simple type 
-	    * definition and the <extension> alternative is chosen), 
-	    * then that simple type definition.
-	    */
-	    res = base;
-	}	
-	type->contentTypeDef = res;
-	if (res == NULL) {
-	    xmlSchemaPCustomErr(ctxt,
-		XML_SCHEMAP_INTERNAL,
-		NULL, type, NULL,
-		"Internal error: xmlSchemaGetContentType, "
-		"'%s', the content type could not be determined", 
-		type->name);
-	    return (-1);
+		/* Duplicate found. */
+		break;
+	    }
+	    link = link->next;
 	}
+	/*
+	* If no duplicate was found: add the base types's facet
+	* to the set.
+	*/
+	if (link == NULL) {
+	    link = (xmlSchemaFacetLinkPtr) 
+		xmlMalloc(sizeof(xmlSchemaFacetLink));
+	    if (link == NULL) {
+		xmlSchemaPErrMemory(pctxt,
+		    "deriving facets, creating a facet link", NULL);
+		return (-1);
+	    }
+	    link->facet = cur->facet;
+	    link->next = NULL;
+	    if (last == NULL)
+		type->facetSet = link;		    
+	    else 
+		last->next = link;
+	    last = link;
+	}
+	  
+    }
 
-    }
-    
+    return (0);
+internal_error:
+    xmlSchemaPCustomErr(pctxt,
+	XML_SCHEMAP_INVALID_FACET_VALUE,
+	NULL, type, NULL,
+	"Internal error: xmlSchemaDeriveAndValidateFacets", NULL);
+    return (-1);
 }
-#endif
 
 /**
  * xmlSchemaTypeFixup:
@@ -13587,540 +15100,500 @@
  * Fixes the content model of the type.
  */
 static void
-xmlSchemaTypeFixup(xmlSchemaTypePtr item,
+xmlSchemaTypeFixup(xmlSchemaTypePtr type,
                    xmlSchemaParserCtxtPtr ctxt, const xmlChar * name)
 {
-    xmlSchemaTypePtr ctxtType;
-
-    if (item == NULL)
+    if (type == NULL)
         return;
-    /*
-    * Do not fixup built-in types.
-    */
-    if (item->type == XML_SCHEMA_TYPE_BASIC)
+    if ((type->type != XML_SCHEMA_TYPE_COMPLEX) &&
+	(type->type != XML_SCHEMA_TYPE_SIMPLE))
 	return;
-    /*
-    * Do not allow the following types to be typefixed, prior to
-    * the corresponding simple/complex types.
-    */
-    if (ctxt->ctxtType == NULL) {
-	switch (item->type) {
-	    case XML_SCHEMA_TYPE_SIMPLE_CONTENT:
-	    case XML_SCHEMA_TYPE_COMPLEX_CONTENT:
-	    case XML_SCHEMA_TYPE_UNION:
-	    case XML_SCHEMA_TYPE_RESTRICTION:
-	    case XML_SCHEMA_TYPE_EXTENSION:	    
+    if (! IS_NOT_TYPEFIXED(type))
+	return;
+    type->flags |= XML_SCHEMAS_TYPE_INTERNAL_RESOLVED;
+    if (name == NULL)
+        name = type->name;
+    
+    if (type->type == XML_SCHEMA_TYPE_COMPLEX) {
+	xmlSchemaTypePtr baseType;
+
+	/*
+	* Resolve & type-fix the base type.
+	*/
+	baseType = type->baseType;
+	if (baseType == NULL) {
+	    baseType = xmlSchemaGetType(ctxt->schema,
+		type->base, type->baseNs);	    
+	    if (baseType == NULL) {
+		xmlSchemaPResCompAttrErr(ctxt,
+		    XML_SCHEMAP_SRC_RESOLVE,
+		    NULL, type, type->node,
+		    "base", type->base, type->baseNs,
+		    XML_SCHEMA_TYPE_SIMPLE, NULL);
 		return;
-	    default:
-	        break;
+	    }
+	    type->baseType = baseType;
 	}
-    }
-    if (name == NULL)
-        name = item->name;
-    if (item->contentType == XML_SCHEMA_CONTENT_UNKNOWN) {
-        switch (item->type) {
-            case XML_SCHEMA_TYPE_SIMPLE_CONTENT:{		    
-		    if (item->subtypes != NULL) {
-			if (item->subtypes->contentType ==
-			    XML_SCHEMA_CONTENT_UNKNOWN) {
-			    xmlSchemaTypeFixup(item->subtypes, ctxt,
-				NULL);
-			}
-                        item->contentType =
-			    XML_SCHEMA_CONTENT_SIMPLE;
-                            /* item->subtypes->contentType; */
-		    }
-                    break;
-                }
-            case XML_SCHEMA_TYPE_RESTRICTION:{
-		    xmlSchemaTypePtr base = NULL;
-
-		    ctxt->ctxtType->flags |= 
-			XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION;
-		    if (item->baseType != NULL)
-			base = item->baseType;
-                    else if (item->base != NULL) {
-                        base =
-                            xmlSchemaGetType(ctxt->schema, item->base,
-                                             item->baseNs);
-                        if (base == NULL) {
-			    xmlSchemaPResCompAttrErr(ctxt, 
-				XML_SCHEMAP_SRC_RESOLVE, 
-				NULL, NULL, 
-				(xmlNodePtr) xmlSchemaGetPropNode(item->node, "base"),
-				"base", item->base, item->baseNs,
-				XML_SCHEMA_TYPE_BASIC, "type definition");			    
-                        } else if (base->contentType == 
-			    XML_SCHEMA_CONTENT_UNKNOWN) {
-			    xmlSchemaTypeFixup(base, ctxt, NULL);
-                        }			
-                    }	
-		    ctxt->ctxtType->baseType = base;
-		    if (ctxt->ctxtType->type == XML_SCHEMA_TYPE_COMPLEX) {
-			/*
-			* ComplexType restriction.
-			*/			
-			/*
-			* Content type.
-			*/
-			if (item->subtypes == NULL)
-			    /* 1.1.1 */
-			    item->contentType = XML_SCHEMA_CONTENT_EMPTY;
-			else if ((item->subtypes->subtypes == NULL) &&
-			    ((item->subtypes->type ==
-			    XML_SCHEMA_TYPE_ALL)
-			    || (item->subtypes->type ==
-			    XML_SCHEMA_TYPE_SEQUENCE)))
-			    /* 1.1.2 */
-			    item->contentType = XML_SCHEMA_CONTENT_EMPTY;
-			else if ((item->subtypes->type ==
-			    XML_SCHEMA_TYPE_CHOICE)
-			    && (item->subtypes->subtypes == NULL))
-			    /* 1.1.3 */
-			    item->contentType = XML_SCHEMA_CONTENT_EMPTY;
-			else {
-			    /* 1.2 and 2.X are applied at the other layer */
-			    item->contentType =
-				XML_SCHEMA_CONTENT_ELEMENTS;
-			}
-		    } else {	
-			/*
-			* SimpleType restriction.
-			*/
-			/* TODO: Nothing? */
-		    }
-                    break;
-                }
-            case XML_SCHEMA_TYPE_EXTENSION:{
-		    xmlSchemaTypePtr base = NULL;
-		    xmlSchemaContentType explicitContentType;
-		    
+	if (IS_NOT_TYPEFIXED(baseType))
+	    xmlSchemaTypeFixup(baseType, ctxt, NULL);
+	if (baseType->flags & XML_SCHEMAS_TYPE_INTERNAL_INVALID) {
+	    /*
+	    * Skip fixup if the base type is invalid.
+	    * TODO: Generate a warning!
+	    */
+	    return;
+	}
+	/*
+	* This basically checks if the base type can be derived.
+	*/
+	if (xmlSchemaCheckSRCCT(ctxt, type) != 0) {
+	    type->flags |= XML_SCHEMAS_TYPE_INTERNAL_INVALID;
+	    return;
+	}
+	/*
+	* Fixup the content type.
+	*/
+	if (type->contentType == XML_SCHEMA_CONTENT_SIMPLE) {
+	    /*
+	    * Corresponds to <complexType><simpleContent>...
+	    */	    	   
+	    if ((IS_COMPLEX_TYPE(baseType)) &&
+		(baseType->contentTypeDef != NULL) &&
+		(type->flags & XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION)) {
+		 /*
+		* SPEC (1) If <restriction> + base type is <complexType>, 
+		* "whose own {content type} is a simple type..."
+		*
+		* NOTE (1.1) is handled during parsing of <restriction>.
+		*
+		* (1.2) "...otherwise (<restriction> has no <simpleType> among
+		* its [children]), the simple type definition which is the
+		* {content type} of the ... base type."
+		*/
+		if (type->contentTypeDef->baseType == NULL) {
 		    /*
-		    * An extension does exist on a complexType only.
+		    * <simpleContent><restriction> has *no* <simpleType>
+		    * child.
 		    */
-		    ctxt->ctxtType->flags |= 
-			XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION;
-		    if (item->recurse) {
-			/* TODO: The word "recursive" should be changed to "circular" here. */
-			xmlSchemaPCustomErr(ctxt,
-			    XML_SCHEMAP_UNKNOWN_BASE_TYPE,
-			    NULL, item, item->node,	
-			    "This item is circular", NULL);
-                        return;
-		    }
-		    if (item->base != NULL) {                        
-                        base =
-                            xmlSchemaGetType(ctxt->schema, item->base,
-                                             item->baseNs);
-                        if (base == NULL) {
-			    xmlSchemaPResCompAttrErr(ctxt, 
-				XML_SCHEMAP_SRC_RESOLVE, 
-				NULL, item, item->node,
-				"base", item->base, item->baseNs,
-				XML_SCHEMA_TYPE_BASIC, "type definition");				   
-                        } else if (base->contentType == 
-			    XML_SCHEMA_CONTENT_UNKNOWN) {
-			    item->recurse = 1;
-			    xmlSchemaTypeFixup(base, ctxt, NULL);
-			    item->recurse = 0;
-                        }
-			/*
-			* The type definition ·resolved· to by the ·actual 
-			* value· of the base [attribute]
-			*/
-			ctxt->ctxtType->baseType = base;
-			/*
-			* TODO: This one is still needed for computation of
-			* the content model by xmlSchemaBuildAContentModel.
-			* Try to get rid of it.
-			*/
-			item->baseType = base;			
-                    }
-		    if ((item->subtypes != NULL) &&
-			(item->subtypes->contentType == XML_SCHEMA_CONTENT_UNKNOWN))
-                        xmlSchemaTypeFixup(item->subtypes, ctxt, NULL);	    
-		    
-		    explicitContentType = XML_SCHEMA_CONTENT_ELEMENTS;
-		    if (item->subtypes == NULL)
-			/* 1.1.1 */
-			explicitContentType = XML_SCHEMA_CONTENT_EMPTY;
-		    else if ((item->subtypes->subtypes == NULL) &&
-			((item->subtypes->type ==
-			XML_SCHEMA_TYPE_ALL)
-			|| (item->subtypes->type ==
-			XML_SCHEMA_TYPE_SEQUENCE)))
-			/* 1.1.2 */
-			explicitContentType = XML_SCHEMA_CONTENT_EMPTY;
-		    else if ((item->subtypes->type ==
-			XML_SCHEMA_TYPE_CHOICE)
-			&& (item->subtypes->subtypes == NULL))
-			/* 1.1.3 */
-			explicitContentType = XML_SCHEMA_CONTENT_EMPTY;
-		    if (base != NULL) {
-			/* It will be reported later, if the base is missing. */			    
-			if (explicitContentType == XML_SCHEMA_CONTENT_EMPTY) {
-			    /* 2.1 */
-			    item->contentType = base->contentType;
-			} else if (base->contentType ==
-			    XML_SCHEMA_CONTENT_EMPTY) {
-			    /* 2.2 imbitable ! */
-			    item->contentType =
-				XML_SCHEMA_CONTENT_ELEMENTS;
-			} else {
-			    /* 2.3 imbitable pareil ! */
-			    item->contentType =
-				XML_SCHEMA_CONTENT_ELEMENTS;
-			}
-		    }		                
-                    break;
-                }
-            case XML_SCHEMA_TYPE_COMPLEX:{
-		    ctxtType = ctxt->ctxtType;
-		    ctxt->ctxtType = item;
+		    type->contentTypeDef->baseType = 
+			baseType->contentTypeDef;
+		}
+	    } else if ((IS_COMPLEX_TYPE(baseType)) &&
+		(baseType->contentType == XML_SCHEMA_CONTENT_MIXED) &&
+		(type->flags & XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION)) {
+		/*
+		* SPEC (2) If <restriction> + base is a mixed <complexType> with
+		* an emptiable particle, then a simple type definition which
+		* restricts the <restriction>'s <simpleType> child.
+		*/
+		if ((type->contentTypeDef == NULL) || 
+		    (type->contentTypeDef->baseType == NULL)) {
 		    /*
-		    * Start with an empty content-type type.
+		    * TODO: Check if this ever happens.
 		    */
-		    if (item->subtypes == NULL)
-			item->contentType = XML_SCHEMA_CONTENT_EMPTY;
-
-		    if ((item->subtypes == NULL) || 
-			((item->subtypes->type != 
-			XML_SCHEMA_TYPE_SIMPLE_CONTENT) && 
-			(item->subtypes->type != 
-			XML_SCHEMA_TYPE_COMPLEX_CONTENT))) {
-			/* 
-			* This case is understood as shorthand for complex 
-			* content restricting the ur-type definition, and 
-			* the details of the mappings should be modified as 
-			* necessary.
-			*/			
-			item->baseType = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYTYPE);
-			item->flags |= 
-			    XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION;
-			/*
-			* Assume that we inherit the content-type type 
-			* from 'anyType', which is 'mixed' and a particle
-			* emptiable.
-			*/
-			item->contentType = item->baseType->contentType;
-		    }
+		    xmlSchemaPCustomErr(ctxt,
+			XML_SCHEMAP_INTERNAL,
+			NULL, type, NULL,
+			"Internal error: xmlSchemaTypeFixup, "
+			"complex type '%s': the <simpleContent><restriction> "
+			"is missing a <simpleType> child, but was not catched "
+			"by xmlSchemaCheckSRCCT()", type->name);
+		}		
+	    } else if ((IS_COMPLEX_TYPE(baseType)) &&
+		(type->flags & XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION)) {
+		/*
+		* SPEC (3) If <extension> + base is <complexType> with
+		* <simpleType> content, "...then the {content type} of that
+		* complex type definition"
+		*/		
+		if (baseType->contentTypeDef == NULL) {
 		    /*
-		    * Fixup the sub components.
+		    * TODO: Check if this ever happens. xmlSchemaCheckSRCCT
+		    * should have catched this already.
 		    */
-		    if ((item->subtypes != NULL) &&
-			(item->subtypes->contentType ==
-			XML_SCHEMA_CONTENT_UNKNOWN)) {			    
-			xmlSchemaTypeFixup(item->subtypes, ctxt, NULL);
-		    }	
-		    if (item->flags & XML_SCHEMAS_TYPE_MIXED) {
-			item->contentType = XML_SCHEMA_CONTENT_MIXED;			
-		    } else if (item->subtypes != NULL) {
+		    xmlSchemaPCustomErr(ctxt,
+			XML_SCHEMAP_INTERNAL,
+			NULL, type, NULL,
+			"Internal error: xmlSchemaTypeFixup, "
+			"complex type '%s': the <extension>ed base type is "
+			"a complex type with no simple content type",
+			type->name);
+		}
+		type->contentTypeDef = baseType->contentTypeDef;
+	    } else if ((IS_SIMPLE_TYPE(baseType)) &&
+		(type->flags & XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION)) {
+		/*
+		* SPEC (4) <extension> + base is <simpleType> 
+		* "... then that simple type definition"
+		*/
+		type->contentTypeDef = baseType;
+	    } else {
+		/*
+		* TODO: Check if this ever happens.
+		*/
+		xmlSchemaPCustomErr(ctxt,
+		    XML_SCHEMAP_INTERNAL,
+		    NULL, type, NULL,
+		    "Internal error: xmlSchemaTypeFixup, "
+		    "complex type '%s' with <simpleContent>: unhandled "
+		    "derivation case", type->name);
+	    }
+	} else {
+	    int dummySequence = 0;
+	    xmlSchemaParticlePtr particle = 
+		(xmlSchemaParticlePtr) type->subtypes;
+	    /*
+	    * Corresponds to <complexType><complexContent>...
+	    *
+	    * NOTE that the effective mixed was already set during parsing of
+	    * <complexType> and <complexContent>; its flag value is	    
+	    * XML_SCHEMAS_TYPE_MIXED.
+	    *	   
+	    * Compute the "effective content":
+	    * (2.1.1) + (2.1.2) + (2.1.3)
+	    */
+	    if ((particle == NULL) ||
+		((particle->type == XML_SCHEMA_TYPE_PARTICLE) &&
+		 ((particle->children->type == XML_SCHEMA_TYPE_ALL) ||
+		  (particle->children->type == XML_SCHEMA_TYPE_SEQUENCE) ||
+		  ((particle->children->type == XML_SCHEMA_TYPE_CHOICE) &&
+		   (particle->minOccurs == 0))) &&
+		   ( ((xmlSchemaTreeItemPtr) particle->children)->children == NULL))) {
+		if (type->flags & XML_SCHEMAS_TYPE_MIXED) {		    
+		    /*
+		    * SPEC (2.1.4) "If the ·effective mixed· is true, then
+		    * a particle whose properties are as follows:..."
+		    *
+		    * Empty sequence model group with 
+		    * minOccurs/maxOccurs = 1 (i.e. a "particle emptiable").
+		    * NOTE that we sill assign it the <complexType> node to
+		    * somehow anchor it in the doc.
+		    */
+		    if ((particle == NULL) ||
+			(particle->children->type != XML_SCHEMA_TYPE_SEQUENCE)) {			
 			/*
-			* Use the content-type type of the model groups
-			* defined, if 'mixed' is not set. If 'mixed' is set
-			* it will expand the content-type by allowing character
-			* content to appear.
+			* Create the particle.
 			*/
-			item->contentType =
-			    item->subtypes->contentType;
+			particle = xmlSchemaAddParticle(ctxt, ctxt->schema,
+			    type->node, 1, 1);
+			if (particle == NULL)
+			    return;
+			/*
+			* Create the model group.
+			*/
+			particle->children = (xmlSchemaTreeItemPtr)
+			    xmlSchemaAddModelGroup(ctxt, ctxt->schema,
+				XML_SCHEMA_TYPE_SEQUENCE, NULL, type->node);
+			if (particle->children == NULL)
+			    return;
+			
+			type->subtypes = (xmlSchemaTypePtr) particle;
 		    }
-
+		    dummySequence = 1;
+		    type->contentType = XML_SCHEMA_CONTENT_ELEMENTS;
+		} else {
 		    /*
-		    * Some optimization for validation:
-		    * If there are no facets beside the "whitespace" facet,
-		    * then a value needs not to checked against against a
-		    * facet, thus no computed value is needed.
-		    * TODO URGENT: This is just a workaround, we need to
-		    * introduce the correct usage of contentType to store the
-		    * facets in!
+		    * SPEC (2.1.5) "otherwise empty"
 		    */
-		    if ((item->baseType != NULL) &&
-		        (item->baseType->flags &
-			 XML_SCHEMAS_TYPE_FACETSNEEDVALUE))
-			item->flags |= XML_SCHEMAS_TYPE_FACETSNEEDVALUE;
-		    else {
-			xmlSchemaFacetLinkPtr cur;
-
-			for (cur = item->facetSet; cur != NULL;
-			    cur = cur->next) {
-			    if (cur->facet->type != XML_SCHEMA_FACET_WHITESPACE) {
-				item->flags |= XML_SCHEMAS_TYPE_FACETSNEEDVALUE;
-				break;
-			    }
-			}
-		    }	
-
-		    xmlSchemaBuildAttributeValidation(ctxt, item);
-		    xmlSchemaCheckDefaults(item, ctxt, item->name);
-		    ctxt->ctxtType = ctxtType;
-                    break;
-                }
-            case XML_SCHEMA_TYPE_COMPLEX_CONTENT:{
-                    if (item->subtypes == NULL) {
-                        item->contentType = XML_SCHEMA_CONTENT_EMPTY;
-                        if (item->flags & XML_SCHEMAS_TYPE_MIXED)
-                            item->contentType =
-                                XML_SCHEMA_CONTENT_MIXED;
-                    } else {
-                        if (item->flags & XML_SCHEMAS_TYPE_MIXED) {
-                            item->contentType =
-                                XML_SCHEMA_CONTENT_MIXED;
-                        } else {
-                            xmlSchemaTypeFixup(item->subtypes, ctxt,
-                                               NULL);
-                            if (item->subtypes != NULL)
-                                item->contentType =
-                                    item->subtypes->contentType;
-                        }
-			/* 
-			 * Removed due to implementation of the build of attribute uses. 
-			 */
-			/*
-			if (item->attributes == NULL)
-			    item->attributes =
-			        item->subtypes->attributes;
-			*/
-                    }
-                    break;
-                }
-	    case XML_SCHEMA_TYPE_SIMPLE:
+		    type->contentType = XML_SCHEMA_CONTENT_EMPTY;
+		}				
+	    } else {
 		/*
-		* Simple Type Definition Schema Component
-		*
+	 	* SPEC (2.2) "otherwise the particle corresponding to the
+		* <all>, <choice>, <group> or <sequence> among the
+		* [children]."
 		*/
-		ctxtType = ctxt->ctxtType;		
-		item->contentType = XML_SCHEMA_CONTENT_SIMPLE;
-		if (item->subtypes->contentType == 
-		    XML_SCHEMA_CONTENT_UNKNOWN) {
-		    ctxt->ctxtType = item;
-		    xmlSchemaTypeFixup(item->subtypes, ctxt, NULL);
+		type->contentType = XML_SCHEMA_CONTENT_ELEMENTS;
+	    }
+	    /*
+	    * Compute the "content type".
+	    */
+	    if (type->flags & XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION) {
+		/*
+		* SPEC (3.1) "If <restriction>..."
+		* (3.1.1) + (3.1.2) */
+		if (type->contentType != XML_SCHEMA_CONTENT_EMPTY) {
+		    if (type->flags & XML_SCHEMAS_TYPE_MIXED)
+			type->contentType = XML_SCHEMA_CONTENT_MIXED;
 		}
-		/* Fixup base type */		
-		if ((item->baseType != NULL) && 
-		    (item->baseType->contentType ==
-		    XML_SCHEMA_CONTENT_UNKNOWN)) {
-		    /* OPTIMIZE: Actually this one will never by hit, since
-		    * the base type is already type-fixed in <restriction>.
+	    } else {
+		/*
+		* SPEC (3.2) "If <extension>..."		
+		*/
+		if (type->contentType == XML_SCHEMA_CONTENT_EMPTY) {
+		    /*
+		    * SPEC (3.2.1)
 		    */
-		    ctxt->ctxtType = item;
-		    xmlSchemaTypeFixup(item->baseType, ctxt, NULL);
-		}
-		/* Base type: 
-		* 2 If the <list> or <union> alternative is chosen, 
-		* then the ·simple ur-type definition·.
-		*/
-		if (item->subtypes->type ==
-		    XML_SCHEMA_TYPE_LIST) {
-		    item->baseType = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYSIMPLETYPE);
-		    item->flags |= XML_SCHEMAS_TYPE_VARIETY_LIST;		    
-		} else if (item->subtypes->type ==
-		    XML_SCHEMA_TYPE_UNION) {
-		    item->baseType = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYSIMPLETYPE);
-		    item->flags |= XML_SCHEMAS_TYPE_VARIETY_UNION;
-		} else if (item->subtypes->type ==
-		    XML_SCHEMA_TYPE_RESTRICTION) {
-		    xmlSchemaFacetLinkPtr facet, cur, last = NULL;
-		    		    	    		   
-		    /* 
-		    * Variety
-		    * If the <restriction> alternative is chosen, then the 
-		    * {variety} of the {base type definition}.
-		    */	
-		    if (item->baseType != NULL) {
-			if (item->baseType->flags & 
-			    XML_SCHEMAS_TYPE_VARIETY_ATOMIC)
-			    item->flags |= XML_SCHEMAS_TYPE_VARIETY_ATOMIC;
-			else if (item->baseType->flags & 
-			    XML_SCHEMAS_TYPE_VARIETY_LIST)
-			    item->flags |= XML_SCHEMAS_TYPE_VARIETY_LIST;
-			else if (item->baseType->flags & 
-			    XML_SCHEMAS_TYPE_VARIETY_UNION)
-			    item->flags |= XML_SCHEMAS_TYPE_VARIETY_UNION;		    		    		   
+		    type->contentType = baseType->contentType;
+		    type->subtypes = baseType->subtypes;
+		    /*
+		    * NOTE that the effective mixed is ignored here.
+		    */
+		} else if (baseType->contentType == XML_SCHEMA_CONTENT_EMPTY) {
+		    /*
+		    * SPEC (3.2.2)
+		    */
+		    if (type->flags & XML_SCHEMAS_TYPE_MIXED)
+			type->contentType = XML_SCHEMA_CONTENT_MIXED;
+		} else {
+		    /*
+		    * SPEC (3.2.3)
+		    */
+		    if (type->flags & XML_SCHEMAS_TYPE_MIXED)
+			type->contentType = XML_SCHEMA_CONTENT_MIXED;
+		    /*
+		    * "A model group whose {compositor} is sequence and whose 
+		    * {particles} are..."
+		    */
+		    if (! dummySequence) {
+			xmlSchemaTreeItemPtr effectiveContent =
+			    (xmlSchemaTreeItemPtr) type->subtypes;
 			/*
-			* Schema Component Constraint: Simple Type Restriction 
-			* (Facets)
-			* NOTE: Satisfaction of 1 and 2 arise from the fixup 
-			* applied beforehand.
-			*			    
-			* 3 The {facets} of R are the union of S and the {facets} 
-			* of B, eliminating duplicates. To eliminate duplicates, 
-			* when a facet of the same kind occurs in both S and the 
-			* {facets} of B, the one in the {facets} of B is not 
-			* included, with the exception of enumeration and pattern 
-			* facets, for which multiple occurrences with distinct values 
-			* are allowed.
+			* Create the particle.
 			*/
-			if (item->baseType->facetSet != NULL) {
-			    last = item->facetSet;
-			    if (last != NULL)
-				while (last->next != NULL)
-				    last = last->next;
-			    cur = item->baseType->facetSet;
-			    for (; cur != NULL; cur = cur->next) {
-				/* 
-				* Base patterns won't be add here:
-				* they are ORed in a type and
-				* ANDed in derived types. This will
-				* happed at validation level by
-				* walking the base axis of the type.
-				*/
-				if (cur->facet->type == 
-				    XML_SCHEMA_FACET_PATTERN) 
-				    continue;
-				facet = NULL;
-				if ((item->facetSet != NULL) &&
-				    /* REMOVED: a check for
-				    * XML_SCHEMA_FACET_PATTERN was already
-				    * performed above.
-				
-				    * (cur->facet->type != 
-				    * XML_SCHEMA_FACET_PATTERN) &&
-				    */
-				  (cur->facet->type != 
-				  XML_SCHEMA_FACET_ENUMERATION)) {				
-				    facet = item->facetSet;
-				    do {
-					if (cur->facet->type == 
-					    facet->facet->type) 
-					    break;
-					facet = facet->next;
-				    } while (facet != NULL);
-				}
-				if (facet == NULL) {
-				    facet = (xmlSchemaFacetLinkPtr) 
-					xmlMalloc(sizeof(xmlSchemaFacetLink));
-				    if (facet == NULL) {
-					xmlSchemaPErrMemory(ctxt, 
-					    "fixing simpleType", NULL);
-					return;
-				    }
-				    /*
-				    * The facets are not copied but referenced
-				    * via the facet link.
-				    */
-				    facet->facet = cur->facet;
-				    facet->next = NULL;
-				    if (last == NULL)
-					item->facetSet = facet;		    
-				    else 
-					last->next = facet;
-				    last = facet;				
-				}				    
-			    }
-			}
+			particle = xmlSchemaAddParticle(ctxt, ctxt->schema,
+			    type->node, 1, 1);
+			if (particle == NULL)
+			    return;
 			/*
-			* Some optimization for validation:
-			* If there are no facets beside the "whitespace" facet,
-			* then a value needs not to checked against against a
-			* facet, thus no computed value is needed.
+			* Create the "sequence" model group.
 			*/
-			if (item->baseType->flags & XML_SCHEMAS_TYPE_FACETSNEEDVALUE)
-			    item->flags |= XML_SCHEMAS_TYPE_FACETSNEEDVALUE;
-			else {
-			    for (cur = item->facetSet; cur != NULL;
-			    cur = cur->next) {
-				if (cur->facet->type != XML_SCHEMA_FACET_WHITESPACE) {
-				    item->flags |= XML_SCHEMAS_TYPE_FACETSNEEDVALUE;
-				    break;
-				}
-			    }
-			}
+			particle->children = (xmlSchemaTreeItemPtr)
+			    xmlSchemaAddModelGroup(ctxt, ctxt->schema,
+				XML_SCHEMA_TYPE_SEQUENCE, NULL, type->node);
+			if (particle->children == NULL)
+			    return;
+			type->subtypes = (xmlSchemaTypePtr) particle;
+			/*
+			* SPEC "the particle of the {content type} of
+			* the ... base ..."
+			* Create a duplicate of the base type's particle
+			* and assign its "term" to it.
+			*/
+			particle->children->children = 
+			    (xmlSchemaTreeItemPtr) xmlSchemaAddParticle(ctxt,
+				ctxt->schema, type->node,
+				((xmlSchemaParticlePtr) type->subtypes)->minOccurs,
+				((xmlSchemaParticlePtr) type->subtypes)->maxOccurs);				
+			if (particle->children->children == NULL)
+			    return;
+			particle = (xmlSchemaParticlePtr)
+			    particle->children->children;
+			particle->children =			    
+				((xmlSchemaParticlePtr) baseType->subtypes)->children;
+			/*
+			* SPEC "followed by the ·effective content·."
+			*/
+			particle->next = effectiveContent;			
+		    } else {
+			/*
+			* This is the case when there is already an empty
+			* <sequence> with minOccurs==maxOccurs==1.
+			* Just add the base types's content type.
+			* NOTE that, although we miss to add an intermediate
+			* <sequence>, this should produce no difference to
+			* neither the regex compilation of the content model,
+			* nor to the complex type contraints.
+			*/
+			particle->children->children =
+			    (xmlSchemaTreeItemPtr) baseType->subtypes;
 		    }
-		}	
+		}
+	    }
+	}	
+	/*
+	* Apply the complex type component constraints; this will not
+	* check attributes, since this is done in
+	* xmlSchemaBuildAttributeValidation().
+	*/
+	if (xmlSchemaCheckCTComponent(ctxt, type) != 0)
+	    return;	
+	/*
+	* Inherit & check constraints for attributes.
+	*/
+	xmlSchemaBuildAttributeValidation(ctxt, type);
+    } else if (type->type == XML_SCHEMA_TYPE_SIMPLE) {	
+	/*
+	* Simple Type Definition Schema Component
+	*/
+	type->contentType = XML_SCHEMA_CONTENT_SIMPLE;
+	if (type->flags & XML_SCHEMAS_TYPE_VARIETY_LIST) {
+	    /* 
+	    * Corresponds to <simpleType><list>...
+	    * Resolve the itemType.
+	    */
+	    if ((type->subtypes == NULL) && (type->ref != NULL)) {
+		type->subtypes = xmlSchemaGetType(ctxt->schema,
+		    type->ref, type->refNs);
+		if ((type->subtypes == NULL) ||
+		    (! IS_SIMPLE_TYPE(type->subtypes))) {
+		    type->subtypes = NULL;
+		    xmlSchemaPResCompAttrErr(ctxt,	    
+			XML_SCHEMAP_SRC_RESOLVE,
+			NULL, type, type->node,
+			"itemType", type->ref, type->refNs,
+			XML_SCHEMA_TYPE_SIMPLE, NULL);
+		}		
+	    }
+	    if (type->subtypes == NULL) {
 		/*
-		* Check constraints.
+		* This one is really needed, so get out.
 		*/
-		xmlSchemaCheckSRCSimpleType(ctxt, item);
-		xmlSchemaCheckDefaults(item, ctxt, item->name);
-		ctxt->ctxtType = ctxtType;
-		break;
-            case XML_SCHEMA_TYPE_SEQUENCE:            
-            case XML_SCHEMA_TYPE_ALL:
-            case XML_SCHEMA_TYPE_CHOICE:
-                item->contentType = XML_SCHEMA_CONTENT_ELEMENTS;
-                break;
-	    case XML_SCHEMA_TYPE_GROUP:
+		return;
+	    }
+	    if (IS_NOT_TYPEFIXED(type->subtypes))
+		xmlSchemaTypeFixup(type->subtypes, ctxt, NULL);
+	    /* Base type:
+	    * 2 If the <list> or <union> alternative is chosen, 
+	    * then the ·simple ur-type definition·.
+	    */
+	    type->baseType = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYSIMPLETYPE);	    
+	} else if (type->flags & XML_SCHEMAS_TYPE_VARIETY_UNION) {
+	    /*
+	    * Corresponds to <simpleType><union>...
+	    * Resolve the member types.
+	    */
+	    xmlSchemaResolveUnionMemberTypes(ctxt, type);
+	    if (type->memberTypes == NULL) {
 		/*
-		* TODO: Handling was moved to xmlSchemaGroupDefFixup.
+		* This one is really needed, so get out.
 		*/
-		break;
-            case XML_SCHEMA_TYPE_LIST: 
-		xmlSchemaParseListRefFixup(item, ctxt);
-		item->contentType = XML_SCHEMA_CONTENT_SIMPLE;
-		break;
-            case XML_SCHEMA_TYPE_UNION:		
-		xmlSchemaParseUnionRefCheck(item, ctxt);
-		item->contentType = XML_SCHEMA_CONTENT_SIMPLE;
-		break;
-            case XML_SCHEMA_TYPE_BASIC:
-            case XML_SCHEMA_TYPE_ANY:
-            case XML_SCHEMA_TYPE_FACET:
-            case XML_SCHEMA_TYPE_UR:
-            case XML_SCHEMA_TYPE_ELEMENT:
-            case XML_SCHEMA_TYPE_ATTRIBUTE:
-            case XML_SCHEMA_TYPE_ATTRIBUTEGROUP:
-            case XML_SCHEMA_TYPE_ANY_ATTRIBUTE:
-            case XML_SCHEMA_TYPE_NOTATION:
-            case XML_SCHEMA_FACET_MININCLUSIVE:
-            case XML_SCHEMA_FACET_MINEXCLUSIVE:
-            case XML_SCHEMA_FACET_MAXINCLUSIVE:
-            case XML_SCHEMA_FACET_MAXEXCLUSIVE:
-            case XML_SCHEMA_FACET_TOTALDIGITS:
-            case XML_SCHEMA_FACET_FRACTIONDIGITS:
-            case XML_SCHEMA_FACET_PATTERN:
-            case XML_SCHEMA_FACET_ENUMERATION:
-            case XML_SCHEMA_FACET_WHITESPACE:
-            case XML_SCHEMA_FACET_LENGTH:
-            case XML_SCHEMA_FACET_MAXLENGTH:
-            case XML_SCHEMA_FACET_MINLENGTH:
-                item->contentType = XML_SCHEMA_CONTENT_SIMPLE;
-		if (item->subtypes != NULL)
-		    xmlSchemaTypeFixup(item->subtypes, ctxt, NULL);
-                break;
-	    case XML_SCHEMA_TYPE_IDC_UNIQUE:
-	    case XML_SCHEMA_TYPE_IDC_KEY:
-	    case XML_SCHEMA_TYPE_IDC_KEYREF:
-		break;
-        }
+		return;
+	    }
+	    type->baseType = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYSIMPLETYPE);
+	} else {
+	    xmlSchemaTypePtr baseType;
+	    /* 
+	    * Corresponds to <simpleType><restriction>...
+	    *
+	    * Resolve the base type.
+	    */
+	    if ((type->baseType == NULL) && (type->base != NULL)) {
+		baseType = xmlSchemaGetType(ctxt->schema,
+		    type->base, type->baseNs);
+		
+		if (baseType == NULL) {
+		    xmlSchemaPResCompAttrErr(ctxt,	    
+			XML_SCHEMAP_SRC_RESOLVE,
+			NULL, type, type->node,
+			"base", type->base, type->baseNs,
+			XML_SCHEMA_TYPE_SIMPLE, NULL);
+		}
+		type->baseType = baseType;
+	    } else
+		baseType = type->baseType;
+
+	    if (baseType == NULL)
+		return;			
+
+	    if (IS_NOT_TYPEFIXED(baseType))
+		xmlSchemaTypeFixup(baseType, ctxt, NULL);
+	    /* 
+	    * Variety
+	    * If the <restriction> alternative is chosen, then the 
+	    * {variety} of the {base type definition}.
+	    */			    
+	    if (baseType->flags & XML_SCHEMAS_TYPE_VARIETY_ATOMIC)
+		type->flags |= XML_SCHEMAS_TYPE_VARIETY_ATOMIC;
+	    else if (baseType->flags & XML_SCHEMAS_TYPE_VARIETY_LIST) {
+		type->flags |= XML_SCHEMAS_TYPE_VARIETY_LIST;
+		/*
+		* Inherit the itemType.
+		*/
+		type->subtypes = baseType->subtypes;
+	    } else if (baseType->flags & XML_SCHEMAS_TYPE_VARIETY_UNION) {
+		type->flags |= XML_SCHEMAS_TYPE_VARIETY_UNION;
+		/*
+		* NOTE that we won't assign the memberTypes of the base,
+		* since this will make trouble when freeing them; we will
+		* use a lookup function to access them instead.
+		*/		    
+	    }
+	    	    
+	    /*
+	    * Some optimization for validation:
+	    * If there are no facets beside the "whitespace" facet,
+	    * then a value needs not to checked against against a
+	    * facet, thus no computed value is needed.
+	    */
+#if 0
+	    if (baseType->flags & XML_SCHEMAS_TYPE_FACETSNEEDVALUE)
+		type->flags |= XML_SCHEMAS_TYPE_FACETSNEEDVALUE;
+	    else {
+		for (cur = type->facetSet; cur != NULL;
+		cur = cur->next) {
+		    if (cur->facet->type != XML_SCHEMA_FACET_WHITESPACE) {
+			type->flags |= XML_SCHEMAS_TYPE_FACETSNEEDVALUE;
+			break;
+		    }
+		}
+	    }
+#endif
+	}	
+	/*
+	* Check constraints.
+	*
+	* TODO: Split this somehow, we need to know first if we can derive
+	* from the base type at all!
+	*/
+	if (type->baseType != NULL) {
+	    /*
+	    * Schema Component Constraint: Simple Type Restriction 
+	    * (Facets)
+	    * NOTE: Satisfaction of 1 and 2 arise from the fixup 
+	    * applied beforehand.
+	    */
+	    xmlSchemaCheckSRCSimpleType(ctxt, type);
+	    xmlSchemaCheckFacetValues(type, ctxt);
+	    xmlSchemaDeriveAndValidateFacets(ctxt, type);	    
+	}		
     }
+    
 #ifdef DEBUG_TYPE
-    if (item->node != NULL) {
+    if (type->node != NULL) {
         xmlGenericError(xmlGenericErrorContext,
                         "Type of %s : %s:%d :", name,
-                        item->node->doc->URL,
-                        xmlGetLineNo(item->node));
+                        type->node->doc->URL,
+                        xmlGetLineNo(type->node));
     } else {
         xmlGenericError(xmlGenericErrorContext, "Type of %s :", name);
     }
-    switch (item->contentType) {
-        case XML_SCHEMA_CONTENT_SIMPLE:
-            xmlGenericError(xmlGenericErrorContext, "simple\n");
-            break;
-        case XML_SCHEMA_CONTENT_ELEMENTS:
-            xmlGenericError(xmlGenericErrorContext, "elements\n");
-            break;
-        case XML_SCHEMA_CONTENT_UNKNOWN:
-            xmlGenericError(xmlGenericErrorContext, "unknown !!!\n");
-            break;
-        case XML_SCHEMA_CONTENT_EMPTY:
-            xmlGenericError(xmlGenericErrorContext, "empty\n");
-            break;
-        case XML_SCHEMA_CONTENT_MIXED:
-            xmlGenericError(xmlGenericErrorContext, "mixed\n");
-            break;
-	/* Removed, since not used. */
-	/*
-        case XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS:
-            xmlGenericError(xmlGenericErrorContext, "mixed or elems\n");
-            break;
-	*/
-        case XML_SCHEMA_CONTENT_BASIC:
-            xmlGenericError(xmlGenericErrorContext, "basic\n");
-            break;
-        default:
-            xmlGenericError(xmlGenericErrorContext,
-                            "not registered !!!\n");
-            break;
+    if ((IS_SIMPLE_TYPE(type)) || (IS_COMPLEX_TYPE(type))) {
+	switch (type->contentType) {
+	    case XML_SCHEMA_CONTENT_SIMPLE:
+		xmlGenericError(xmlGenericErrorContext, "simple\n");
+		break;
+	    case XML_SCHEMA_CONTENT_ELEMENTS:
+		xmlGenericError(xmlGenericErrorContext, "elements\n");
+		break;
+	    case XML_SCHEMA_CONTENT_UNKNOWN:
+		xmlGenericError(xmlGenericErrorContext, "unknown !!!\n");
+		break;
+	    case XML_SCHEMA_CONTENT_EMPTY:
+		xmlGenericError(xmlGenericErrorContext, "empty\n");
+		break;
+	    case XML_SCHEMA_CONTENT_MIXED:
+		if (xmlSchemaIsParticleEmptiable((xmlSchemaParticlePtr)
+		    type->subtypes)) 
+		    xmlGenericError(xmlGenericErrorContext,
+			"mixed as emptiable particle\n");
+		else
+		    xmlGenericError(xmlGenericErrorContext, "mixed\n");
+		break;
+		/* Removed, since not used. */
+		/*
+		case XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS:
+		xmlGenericError(xmlGenericErrorContext, "mixed or elems\n");
+		break;
+		*/
+	    case XML_SCHEMA_CONTENT_BASIC:
+		xmlGenericError(xmlGenericErrorContext, "basic\n");
+		break;
+	    default:
+		xmlGenericError(xmlGenericErrorContext,
+		    "not registered !!!\n");
+		break;
+	}
     }
 #endif
 }
@@ -14179,8 +15652,9 @@
 		*/
 		/*
 		* This function is intended to deliver a compiled value
-		* on the facet. In XML Schemas the type holding a facet, 
-		* cannot be a built-in type. Thus to ensure that other API
+		* on the facet. In this implementation of XML Schemata the
+		* type holding a facet, won't be a built-in type. 
+		* Thus to ensure that other API
 		* calls (relaxng) do work, if the given type is a built-in 
 		* type, we will assume that the given built-in type *is
 		* already* the base type.		
@@ -14231,21 +15705,23 @@
 		* of the facet.
 		*/
 		ret = xmlSchemaValidateSimpleTypeValue(vctxt, base, 
-		    facet->value, 0, 1, 1, 0);
-		facet->val = vctxt->value;
-		vctxt->value = NULL;		
+		    facet->value, 0, 1, 1, 0);				
                 if (ret > 0) {
                     /* error code */
                     if (ctxt != NULL) {
-                        xmlSchemaPErrExt(ctxt, facet->node,
-			    XML_SCHEMAP_INVALID_FACET, 
-			    NULL, NULL, NULL,
-			    "Type definition '%s': The value '%s' of the "
-			    "facet '%s' is not valid.\n",
-			    name, facet->value, 
-			    xmlSchemaFacetTypeToString(facet->type), 
-			    NULL, NULL);
+			xmlChar *str = NULL;
+
+                        xmlSchemaPCustomErrExt(ctxt,
+			    XML_SCHEMAP_INVALID_FACET_VALUE,
+			    NULL, (xmlSchemaTypePtr) facet, facet->node,
+			    "The value '%s' of the facet does not validate "
+			    "against the base type '%s'",
+			    facet->value, 
+			    xmlSchemaFormatQName(&str, 
+				base->targetNamespace, base->name), NULL);
+			FREE_AND_NULL(str)
                     }
+		    /* xmlSchemaFacetTypeToString(facet->type), */
                     ret = -1;
                 } else if (ret < 0) {
 		    xmlSchemaPErrExt(ctxt, facet->node,
@@ -14258,7 +15734,30 @@
 			xmlSchemaFacetTypeToString(facet->type),
 			base->name, NULL, NULL); 
 		    ret = -1;
-		}   
+		} else {
+		    if (vctxt->value != NULL) {
+			facet->val = vctxt->value;
+			vctxt->value = NULL;
+		    } else {			
+			xmlChar *str;
+			/*
+			* Ensure computed values even for type string.
+			* TODO OPTIMIZE MEMORY: The value will be hold twice,
+			* by the facet->value and by the computed value.
+			*/
+			str = xmlStrdup(facet->value);
+			if (xmlSchemaPostCreateVal(vctxt, typeDecl,
+			    BAD_CAST str, &(facet->val)) == -1) {
+			    FREE_AND_NULL(str)
+			    xmlSchemaPErr(ctxt, typeDecl->node,
+				XML_SCHEMAP_INTERNAL,
+				"Internal error: xmlSchemaCheckFacet, "
+				"post-creating a computed value.\n",
+				NULL, NULL);
+			    /* Note that we don't return a failure yet.*/
+			}
+		    }
+		}		
 		if (reuseValCtxt == 0)
 		    xmlSchemaFreeValidCtxt(vctxt);
                 break;
@@ -14288,14 +15787,11 @@
                 if (tmp != 0) {
                     /* error code */
                     if (ctxt != NULL) {
-                        xmlSchemaPErrExt(ctxt, facet->node,
+                        xmlSchemaPCustomErr(ctxt,
 			    XML_SCHEMAP_INVALID_FACET_VALUE,
-			    NULL, NULL, NULL,
-			    "Type definition '%s': The value '%s' of the "
-			    "facet '%s' is not valid.\n",
-			    name, facet->value, 
-			    xmlSchemaFacetTypeToString(facet->type),
-			    NULL, NULL);
+			    NULL, (xmlSchemaTypePtr)  facet, facet->node,
+			    "The value '%s' of the facet is not a valid "
+			    "nonNegativeInteger", facet->value);
                     }
                     ret = -1;
                 }
@@ -14310,11 +15806,12 @@
                     facet->whitespace = XML_SCHEMAS_FACET_COLLAPSE;
                 } else {
                     if (ctxt != NULL) {
-                        xmlSchemaPErr(ctxt, facet->node,
-			    XML_SCHEMAP_INVALID_WHITE_SPACE,
-			    "Type definition '%s': The value '%s' of the "
-			    "facet 'whiteSpace' is not valid.\n",
-			    name, facet->value);
+			/* error was previously: XML_SCHEMAP_INVALID_WHITE_SPACE */
+			xmlSchemaPCustomErr(ctxt,
+			    XML_SCHEMAP_INVALID_FACET_VALUE,
+			    NULL, (xmlSchemaTypePtr) facet, facet->node,
+			    "The value '%s' of the facet is not a valid",
+			    facet->value);
                     }
                     ret = -1;
                 }
@@ -14326,18 +15823,17 @@
 }
 
 /**
- * xmlSchemaCheckDefaults:
+ * xmlSchemaCheckFacetValues:
  * @typeDecl:  the schema type definition
  * @ctxt:  the schema parser context
  *
  * Checks the default values types, especially for facets 
  */
 static void
-xmlSchemaCheckDefaults(xmlSchemaTypePtr typeDecl,
-                       xmlSchemaParserCtxtPtr ctxt, const xmlChar * name)
+xmlSchemaCheckFacetValues(xmlSchemaTypePtr typeDecl,
+			  xmlSchemaParserCtxtPtr ctxt)
 {
-    if (name == NULL)
-        name = typeDecl->name; 
+    const xmlChar *name = typeDecl->name; 
     /*
     * NOTE: It is intended to use the facets list, instead
     * of facetSet.
@@ -14366,80 +15862,58 @@
 
 /**
  * xmlSchemaGetCircModelGrDefRef:
- * @ctxtGr: the searched model group
- * @list: the list of model groups to be processed
+ * @ctxtMGroup: the searched model group
+ * @selfMGroup: the second searched model group
+ * @particle: the first particle 
  *
  * This one is intended to be used by
  * xmlSchemaCheckGroupDefCircular only.
  *
- * Returns the circular model group definition reference, otherwise NULL.
+ * Returns the particle with the circular model group definition reference,
+ * otherwise NULL.
  */
-static xmlSchemaTypePtr
-xmlSchemaGetCircModelGrDefRef(xmlSchemaTypePtr ctxtGrDef,
-			  xmlSchemaTypePtr gr)
-{    
-    xmlSchemaTypePtr circ = NULL;
-    int marked;
-    /*
-    * We will search for an model group reference which
-    * references the context model group definition.
-    */        
-    while (gr != NULL) {
-	if (((gr->type == XML_SCHEMA_TYPE_GROUP) ||
-	     (gr->type == XML_SCHEMA_TYPE_ALL) ||
-	     (gr->type == XML_SCHEMA_TYPE_SEQUENCE) ||
-	     (gr->type == XML_SCHEMA_TYPE_CHOICE)) &&
-	    (gr->subtypes != NULL)) {		 
-	    marked = 0;
-	    if ((gr->type == XML_SCHEMA_TYPE_GROUP) &&
-		(gr->ref != NULL)) {
-		if (gr->subtypes == ctxtGrDef)
-		    return (gr);
-		else if (gr->subtypes->flags & 
-		    XML_SCHEMAS_TYPE_MARKED) {
-		    gr = gr->next;
-		    continue;
-		} else {
-		    /*
-		    * Mark to avoid infinite recursion on
-		    * circular references not yet examined.
-		    */
-		    gr->subtypes->flags |= XML_SCHEMAS_TYPE_MARKED;
-		    marked = 1;
-		} 
-		if (gr->subtypes->subtypes != NULL)
-		    circ = xmlSchemaGetCircModelGrDefRef(ctxtGrDef, 
-			gr->subtypes->subtypes);
-		    /*
-		    * Unmark the visited model group definition.
-		*/
-		if (marked)
-		    gr->subtypes->flags ^= XML_SCHEMAS_TYPE_MARKED;
-		if (circ != NULL)
-		    return (circ);
-	    } else {
-		circ = xmlSchemaGetCircModelGrDefRef(ctxtGrDef, 
-		    (xmlSchemaTypePtr) gr->subtypes);
-		if (circ != NULL)
-		    return (circ);
-	    }
+static xmlSchemaTreeItemPtr
+xmlSchemaGetCircModelGrDefRef(xmlSchemaTreeItemPtr ctxtMGroup,
+			      xmlSchemaTreeItemPtr selfMGroup,
+			      xmlSchemaTreeItemPtr particle)
+{
+    xmlSchemaTreeItemPtr circ = NULL;
+    xmlSchemaTreeItemPtr term;
 
+    while (particle != NULL) {
+	term = particle->children;
+	if ((term != NULL) &&
+	    ((term->type == XML_SCHEMA_TYPE_SEQUENCE) ||
+	    (term->type == XML_SCHEMA_TYPE_CHOICE) ||
+	    (term->type == XML_SCHEMA_TYPE_ALL))) {
+	    if (term == ctxtMGroup)
+		return (particle);
+	    /*
+	    * Avoid infinite recursion on circular references not yet
+	    * examined.
+	    */
+	    if (term == selfMGroup)
+		return (NULL);
+	    circ = xmlSchemaGetCircModelGrDefRef(ctxtMGroup, term,
+		term->children);
+	    if (circ != NULL)
+		return (circ);
 	}
-	gr = gr->next;
+	particle = particle->next;
     }
     return (NULL);
 }
 
 /**
  * xmlSchemaCheckGroupDefCircular:
- * attrGr:  the model group definition
+ * @item:  the model group definition
  * @ctxt:  the parser context
  * @name:  the name
  *
  * Checks for circular references to model group definitions.
  */
 static void
-xmlSchemaCheckGroupDefCircular(xmlSchemaTypePtr modelGrDef,
+xmlSchemaCheckGroupDefCircular(xmlSchemaModelGroupDefPtr item,
 			    xmlSchemaParserCtxtPtr ctxt, 
 			    const xmlChar * name ATTRIBUTE_UNUSED)
 {    
@@ -14449,32 +15923,36 @@
     * of a group there must not be at any depth a particle whose {term} 
     * is the group itself.
     */
-    /*
-    * NOTE: "gr->subtypes" holds the referenced group.
-    */
-    if ((modelGrDef->type != XML_SCHEMA_TYPE_GROUP) || 
-	((modelGrDef->flags & XML_SCHEMAS_TYPE_GLOBAL) == 0) ||
-	(modelGrDef->subtypes == NULL))
+    if ((item == NULL) ||
+	(item->type != XML_SCHEMA_TYPE_GROUP) ||
+	(item->children == NULL))
 	return;
-    else {
-	xmlSchemaTypePtr circ;
+    {
+	xmlSchemaTreeItemPtr circ;
 
-	circ = xmlSchemaGetCircModelGrDefRef(modelGrDef, modelGrDef->subtypes);
+	circ = xmlSchemaGetCircModelGrDefRef(item->children, NULL,
+	    item->children->children);
 	if (circ != NULL) {
+	    xmlChar *str = NULL;
 	    /*
-	    * TODO: Report the referenced attr group as QName.
+	    * TODO: The error report is not adequate: this constraint
+	    * is defined for model groups but not definitions, but since
+	    * there cannot be any circular model groups without a model group
+	    * definition (if not using a construction API), we check those 
+	    * defintions only.
 	    */
 	    xmlSchemaPCustomErr(ctxt,
 		XML_SCHEMAP_MG_PROPS_CORRECT_2,
-		NULL, NULL, circ->node,
+		NULL, NULL, GET_NODE(circ),
 		"Circular reference to the model group definition '%s' "
-		"defined", modelGrDef->name);
+		"defined", xmlSchemaFormatQName(&str,
+		    item->targetNamespace, item->name));
+	    FREE_AND_NULL(str)
 	    /*
 	    * NOTE: We will cut the reference to avoid further
-	    * confusion of the processor.
-	    * TODO: SPEC: Does the spec define how to process here?
+	    * confusion of the processor. This is a fatal error.
 	    */
-	    circ->subtypes = NULL;
+	    circ->children = NULL;
 	}
     }
 }
@@ -14845,7 +16323,51 @@
     }    
 }
 
+
 /**
+ * xmlSchemaMiscRefFixup:
+ * @item:  an schema component
+ * @ctxt:  a schema parser context
+ * @name:  the internal name of the component
+ *
+ * Resolves references of misc. schema components.
+ */
+static void
+xmlSchemaMiscRefFixup(xmlSchemaTreeItemPtr item,
+                   xmlSchemaParserCtxtPtr ctxt, 
+		   const xmlChar * name ATTRIBUTE_UNUSED)
+{
+    if (item->type == XML_SCHEMA_TYPE_PARTICLE) {
+	if ((item->children != NULL) && 
+	    (item->children->type == XML_SCHEMA_EXTRA_QNAMEREF)) {
+	    xmlSchemaQNameRefPtr ref = (xmlSchemaQNameRefPtr) item->children;
+	    xmlSchemaTreeItemPtr refItem;
+	    /*
+	    * Resolve the reference.
+	    */
+	    item->children = NULL;
+	    refItem = xmlSchemaGetNamedComponent(ctxt->schema,
+		ref->itemType, ref->name, ref->targetNamespace);
+	    if (refItem == NULL) {
+		xmlSchemaPResCompAttrErr(ctxt, XML_SCHEMAP_SRC_RESOLVE,
+		    NULL, NULL, GET_NODE(item), "ref", ref->name,
+		    ref->targetNamespace, ref->itemType, NULL);		
+	    } else {
+		if (refItem->type == XML_SCHEMA_TYPE_GROUP) {
+		    /*
+		    * Assign the model group of the model group definition
+		    * to the particle's "term".
+		    */
+		    item->children = refItem->children;
+		} else
+		    item->children = refItem;
+	    }
+	}
+    }
+}
+
+
+/**
  * xmlSchemaAttrFixup:
  * @item:  an schema attribute declaration/use.
  * @ctxt:  a schema parser context
@@ -15080,6 +16602,21 @@
     ctxt->schema = ret;
     ctxt->ctxtType = NULL;
     ctxt->parentItem = NULL;
+
+
+    if (ret->volatiles != NULL) {
+	xmlSchemaItemListPtr list = (xmlSchemaItemListPtr) ret->volatiles;
+	int i;
+	xmlSchemaTreeItemPtr item;
+
+	for (i = 0; i < list->nbItems; i++) {
+	    item = (xmlSchemaTreeItemPtr) list->items[i];
+	    if (item->type == XML_SCHEMA_TYPE_PARTICLE)
+		xmlSchemaMiscRefFixup(item, ctxt, NULL);
+	    /* xmlHashScan(ret->miscComps,
+	    (xmlHashScanner) xmlSchemaMiscRefFixup, ctxt); */
+	}
+    }
     /*
      * Then fixup all attributes declarations
      */
@@ -15095,23 +16632,28 @@
     * Resolve identity-constraint keyRefs.
     */
     xmlHashScan(ret->idcDef, (xmlHashScanner) xmlSchemaResolveIDCKeyRef, ctxt);
+    /*
+    * Check type defnitions for circular references.
+    */
+    xmlHashScan(ret->typeDecl, (xmlHashScanner) 
+	xmlSchemaCheckTypeDefCircular, ctxt);
+    /*
+    * Check model groups defnitions for circular references.
+    */
+    xmlHashScan(ret->groupDecl, (xmlHashScanner) 
+	xmlSchemaCheckGroupDefCircular, ctxt);
 
     /*
     * Check attribute groups for circular references.
     */
     xmlHashScan(ret->attrgrpDecl, (xmlHashScanner) 
 	xmlSchemaCheckAttributeGroupCircular, ctxt);
-
-    /*
-    * Then fixup all model group definitions.
-    */    
-    xmlHashScan(ret->groupDecl, (xmlHashScanner) xmlSchemaGroupDefFixup, ctxt);
     
     /*
      * Then fix references of element declaration; apply constraints.
      */    
     xmlHashScanFull(ret->elemDecl,
-                    (xmlHashScannerFull) xmlSchemaRefFixupCallback, ctxt);
+                    (xmlHashScannerFull) xmlSchemaElementFixup, ctxt);
 
     /*
     * We will stop here if the schema was not valid to avoid internal errors
@@ -15126,24 +16668,14 @@
      * Then fixup all types properties
      */    
     xmlHashScan(ret->typeDecl, (xmlHashScanner) xmlSchemaTypeFixup, ctxt);
-     /*
-    * Check model groups defnitions for circular references.
-    */
-    xmlHashScan(ret->groupDecl, (xmlHashScanner) 
-	xmlSchemaCheckGroupDefCircular, ctxt);
 
     /*
      * Then build the content model for all complex types
      */
     xmlHashScan(ret->typeDecl,
                 (xmlHashScanner) xmlSchemaBuildContentModel, ctxt);
-
+    
     /*
-     * Then check the defaults part of the type like facets values
-     */
-    /* OLD: xmlHashScan(ret->typeDecl, (xmlHashScanner) xmlSchemaCheckDefaults, ctxt); */
-
-    /*
     * Validate the value constraint of attribute declarations/uses.
     */
     xmlHashScan(ret->attrDecl, (xmlHashScanner) xmlSchemaCheckAttrValConstr, ctxt);
@@ -15301,18 +16833,20 @@
 	    * by ·restriction· from it) the value of whiteSpace is fixed to 
 	    * collapse
 	    */
-	    if ((anc->type == XML_SCHEMA_TYPE_BASIC) &&
-		(anc->builtInType == XML_SCHEMAS_STRING)) {
+	    if ((anc->builtInType == XML_SCHEMAS_STRING) || 
+		(anc->builtInType == XML_SCHEMAS_NORMSTRING)) {
 		
 		lin = type->facetSet;
 		do {
 		    if (lin->facet->type == XML_SCHEMA_FACET_WHITESPACE) {
 			return(lin->facet->whitespace);
-			break;
 		    }
 		    lin = lin->next;
-		} while (lin != NULL);	
-		break;
+		} while (lin != NULL);
+		if (anc->builtInType == XML_SCHEMAS_NORMSTRING)
+		    return (XML_SCHEMAS_FACET_REPLACE);
+		else
+		    return (XML_SCHEMAS_FACET_PRESERVE);
 	    }
 	    anc = anc->baseType;
 	} while (anc != anyST);
@@ -15345,12 +16879,15 @@
 {
     int ret = 0;
     xmlNodePtr node;
-    xmlSchemaTypePtr  biType; /* The build-in type. */
+    xmlSchemaTypePtr biType; /* The build-in type. */
     xmlSchemaTypePtr tmpType;
     xmlSchemaFacetLinkPtr facetLink;
     int retFacet;
     xmlSchemaFacetPtr facet;
     unsigned long len = 0;
+    xmlSchemaWhitespaceValueType ws;
+        
+    ws = (xmlSchemaWhitespaceValueType) xmlSchemaGetWhiteSpaceFacetValue(type);
 
 #ifdef DEBUG_UNION_VALIDATION
     printf("Facets of type: '%s'\n", (const char *) type->name);
@@ -15393,15 +16930,20 @@
 		case XML_SCHEMA_FACET_MAXLENGTH: 
 		    if (type->flags & XML_SCHEMAS_TYPE_VARIETY_LIST) {
 			ret = xmlSchemaValidateListSimpleTypeFacet(facet,
-			    value, length, 0);
+			    value, length, NULL);
 			len = length;
 		    } else
-			ret = xmlSchemaValidateLengthFacet(biType, facet,
-			    value, ctxt->value, &len);
+			ret = xmlSchemaValidateLengthFacetWhtsp(facet,
+			    (xmlSchemaValType) biType->builtInType,
+			    value, ctxt->value, &len, ws);
 		    break;
 		default:
-		    ret = xmlSchemaValidateFacet(biType, facet, value, 
-			ctxt->value);
+		    ret = xmlSchemaValidateFacetWhtsp(facet, ws,
+			biType->builtInType, value, ctxt->value, ws);
+		    /*
+		    * ret = xmlSchemaValidateFacet(biType, facet, value, 
+		    *	ctxt->value);
+		    */
 	    }
 	    if (ret < 0) {
 		xmlSchemaVErr(ctxt, node, XML_SCHEMAV_INTERNAL,
@@ -15416,35 +16958,58 @@
 
 	    facetLink = facetLink->next;
 	}
-	if (ret >= 0) {
+	
+    }    
+		
+    if (ret >= 0) {
+	xmlSchemaWhitespaceValueType fws;
+	int found = 0;
+	/*
+	* Process enumerations. Facet values are in the value space
+	* of the defining type's base type. This seems to be a bug in the
+	* XML Schema 1.0 spec. Use the whitespace type of the base type.
+	* Only the first set of enumerations in the ancestor-or-self axis
+	* is used for validation.
+	*/
+	tmpType = type;	
+	do {
 	    /*
-	    * Process enumerations.
+	    * Use the whitespace type of the base type.
 	    */
+	    fws = (xmlSchemaWhitespaceValueType)
+		xmlSchemaGetWhiteSpaceFacetValue(tmpType->baseType);
 	    retFacet = 0;
-	    facetLink = type->facetSet;
-	    while (facetLink != NULL) {
-		if (facetLink->facet->type == XML_SCHEMA_FACET_ENUMERATION) {
-		    retFacet = xmlSchemaValidateFacet(biType, facetLink->facet, 
-			value, ctxt->value);		
-		    if (retFacet <= 0)
-			break;
+	    for (facet = tmpType->facets; facet != NULL; facet = facet->next) {
+		if (facet->type != XML_SCHEMA_FACET_ENUMERATION)
+		    continue;
+		found = 1;
+		retFacet = xmlSchemaValidateFacetWhtsp(facet, fws,
+		    biType->builtInType, value, ctxt->value, ws);
+		if (retFacet == 0) 
+		    break;
+		else if (retFacet < 0) {
+		    xmlSchemaVErr(ctxt, node, XML_SCHEMAV_INTERNAL,
+			"Internal error: xmlSchemaValidateFacetsInternal, "
+			"validating enumeration facet '%s' of type '%s'.\n",
+			facet->value, tmpType->name);
+		    ret = -1;
+		    break;
 		}
-		facetLink = facetLink->next;
 	    }
-	    if (retFacet > 0) {
-		ret = XML_SCHEMAV_CVC_ENUMERATION_VALID;
-		if (fireErrors)
-		    xmlSchemaVFacetErr(ctxt, ret, node,
-			value, 0, type, NULL, NULL, NULL, NULL, NULL);
-	    } else if (retFacet < 0) {
-		xmlSchemaVErr(ctxt, node, XML_SCHEMAV_INTERNAL,
-		    "Internal error: xmlSchemaValidateFacetsInternal, "
-		    "validating facet of type '%s'.\n",
-		    BAD_CAST "enumeration", NULL);
-		    ret = -1;		
-	    }		
-	}
+	    if (retFacet <= 0)
+		break;
+	    tmpType = tmpType->baseType;
+	} while ((! found) && (tmpType != NULL) &&
+	    (tmpType->type != XML_SCHEMA_TYPE_BASIC));
+	if (retFacet > 0) {
+	    ret = XML_SCHEMAV_CVC_ENUMERATION_VALID;
+	    if (fireErrors) {
+		xmlSchemaVFacetErr(ctxt, ret, node, value, 0, type, NULL, 
+		    NULL, NULL, NULL, NULL);
+	    }
+	}		
     }
+
     if (ret >= 0) {
 	/*
 	* Process patters. Pattern facets are ORed at type level 
@@ -15474,7 +17039,7 @@
 		    facet = facetLink->facet;
 	    }
 	    if (retFacet != 0)
-		break;		    
+		break;
 	    tmpType = tmpType->baseType;
 	} while ((tmpType != NULL) && (tmpType->type != XML_SCHEMA_TYPE_BASIC));
 	if (retFacet > 0) {
@@ -15513,7 +17078,6 @@
 static void xmlSchemaBeginElement(xmlSchemaValidCtxtPtr vctxt);
 static int xmlSchemaEndElement(xmlSchemaValidCtxtPtr vctxt);
 
-#ifdef ELEM_INFO_ENABLED
 /**
  * xmlSchemaGetFreshElemInfo:
  * @vctxt: the schema validation context
@@ -15582,9 +17146,7 @@
   
     return (info);
 }
-#endif /* ELEM_INFO_ENABLED */
 
-
 /**
  * xmlSchemaFreeAttrStates:
  * @state:  a list of attribute states
@@ -15695,15 +17257,15 @@
 		xmlSchemaAttrFixup((xmlSchemaAttributePtr) item, ctxt, NULL);
 		break;
 	    case XML_SCHEMA_TYPE_ELEMENT:
-		xmlSchemaRefFixupCallback((xmlSchemaElementPtr) item, ctxt, 
+		xmlSchemaElementFixup((xmlSchemaElementPtr) item, ctxt, 
 		    NULL, NULL, NULL);
 		break;
 	    case XML_SCHEMA_TYPE_ATTRIBUTEGROUP:
 		xmlSchemaAttrGrpFixup((xmlSchemaAttributeGroupPtr) item, 
 		    ctxt, NULL);
 		break;
-	    case XML_SCHEMA_TYPE_GROUP:
-		xmlSchemaGroupDefFixup(item, ctxt, NULL);            
+	    case XML_SCHEMA_TYPE_PARTICLE:
+		xmlSchemaMiscRefFixup((xmlSchemaTreeItemPtr) item, ctxt, NULL);
 	    default:
 		break;
 	}
@@ -15713,9 +17275,15 @@
     */
     for (i = 0; i < nbItems; i++) {
 	item = items[i];
-	switch (item->type) {	    
+	switch (item->type) {
+	    case XML_SCHEMA_TYPE_COMPLEX:
+	    case XML_SCHEMA_TYPE_SIMPLE:
+		xmlSchemaCheckTypeDefCircular(
+		    (xmlSchemaTypePtr) item, ctxt, NULL);
+		break;
 	    case XML_SCHEMA_TYPE_GROUP:
-		xmlSchemaCheckGroupDefCircular(item, ctxt, NULL);
+		xmlSchemaCheckGroupDefCircular(
+		    (xmlSchemaModelGroupDefPtr) item, ctxt, NULL);
 		break;
 	    case XML_SCHEMA_TYPE_ATTRIBUTEGROUP:
 		xmlSchemaCheckAttributeGroupCircular(
@@ -15726,9 +17294,7 @@
 	}
     }
     /*
-    * Fixup for all other item. 
-    * TODO: Hmm, not sure if starting from complex/simple types,
-    * all subsequent items will be reached.
+    * Fixup for simple/complex types.
     */
     for (i = 0; i < nbItems; i++) {
 	item = items[i];
@@ -15742,24 +17308,6 @@
 	}
     }
     /*
-    * Check facet values. Note that facets are
-    * hold by simple type components only (and
-    * by complex types in the current implementation).
-    */
-    /* OLD: 
-    for (i = 0; i < nbItems; i++) {
-	item = items[i];
-	switch (item->type) {	 
-	    case XML_SCHEMA_TYPE_SIMPLE:
-	    case XML_SCHEMA_TYPE_COMPLEX:
-		xmlSchemaCheckDefaults(item, ctxt, NULL);
-		break;
-	    default:
-		break;
-	}
-    }
-    */
-    /*
     * Build the content model for complex types.
     */
     for (i = 0; i < nbItems; i++) {
@@ -15779,10 +17327,12 @@
 	item = items[i];
 	switch (item->type) {
 	    case XML_SCHEMA_TYPE_ATTRIBUTE:
-		xmlSchemaCheckAttrValConstr((xmlSchemaAttributePtr) item, ctxt, NULL);
+		xmlSchemaCheckAttrValConstr((xmlSchemaAttributePtr) item,
+		    ctxt, NULL);
 		break;
 	    case XML_SCHEMA_TYPE_ELEMENT:
-		xmlSchemaCheckElemValConstr((xmlSchemaElementPtr) item, ctxt, NULL);
+		xmlSchemaCheckElemValConstr((xmlSchemaElementPtr) item,
+		    ctxt, NULL);
 		break;
 	    default:
 		break;
@@ -16036,26 +17586,17 @@
 static void
 xmlSchemaValidateCallback(xmlSchemaValidCtxtPtr ctxt,
                           const xmlChar * name ATTRIBUTE_UNUSED,
-                          xmlSchemaTypePtr type, xmlNodePtr node)
+                          xmlSchemaBasicItemPtr item, xmlNodePtr node)
 {
-    xmlSchemaTypePtr oldtype = ctxt->type;
     xmlNodePtr oldnode = ctxt->node;
 
-#ifdef DEBUG_CONTENT
-    xmlGenericError(xmlGenericErrorContext,
-                    "xmlSchemaValidateCallback: %s, %s, %s\n",
-                    name, type->name, node->name);
-#endif
     /*
     * @type->type will be XML_SCHEMA_TYPE_ANY or XML_SCHEMA_TYPE_ELEMENT.
     */
-    ctxt->type = type;
     ctxt->node = node;    
     ctxt->cur = node->children;
 
-#ifdef ELEM_INFO_ENABLED
     xmlSchemaBeginElement(ctxt);
-#endif
 
     /*
     * Assemble new schemata using xsi.
@@ -16077,43 +17618,32 @@
 	* TODO: But a warning would be nice.
 	*/
     }    
-    switch (type->type) {
+    switch (item->type) {
 	case XML_SCHEMA_TYPE_ELEMENT: {
-	    /*
-	    * NOTE: The build of the content model 
-	    * (xmlSchemaBuildAContentModel) ensures that the element 
-	    * declaration (and not a reference to it) will be given.
-	    */
-	    if (((xmlSchemaElementPtr) ctxt->type)->ref != NULL) {
-		/*
-		* This is paranoid coding ;-)... it should not
-		* happen here any more.
-		*/
-		xmlSchemaVCustomErr(ctxt, 
-		    XML_SCHEMAV_INTERNAL, 
-		    node, NULL,						
-		    "Internal error: xmlSchemaValidateCallback, "
-		    "element declaration 'reference' encountered, "
-		    "but an element declaration was expected", 
-		    NULL);
-		goto leave;
-	    }
+#ifdef DEBUG_CONTENT
+	    xmlGenericError(xmlGenericErrorContext,
+		"xmlSchemaValidateCallback: %s, %s, %s\n",
+		name, ((xmlSchemaElementPtr) item)->name, node->name);
+#endif
 	    xmlSchemaValidateElementByDeclaration(ctxt, 
-		(xmlSchemaElementPtr) type);
+		(xmlSchemaElementPtr) item);
 	    break;
 	}
         case XML_SCHEMA_TYPE_ANY:
-	    xmlSchemaValidateElementByWildcard(ctxt, type);
+#ifdef DEBUG_CONTENT
+	    xmlGenericError(xmlGenericErrorContext,
+		"xmlSchemaValidateCallback: %s, <any>, %s\n",
+		name, node->name);
+#endif	    
+	    xmlSchemaValidateElementByWildcard(ctxt,
+		(xmlSchemaWildcardPtr) item);
             break;
 	default: 
 	    break;
     }
 leave:
 
-#ifdef ELEM_INFO_ENABLED
     xmlSchemaEndElement(ctxt);
-#endif
-    ctxt->type = oldtype;
     ctxt->node = oldnode;
 }  
 
@@ -16179,6 +17709,34 @@
     return (ret);
 }
 
+static xmlSchemaTypePtr
+xmlSchemaGetSimpleContentType(xmlSchemaTypePtr complexType)
+{
+    xmlSchemaTypePtr ret;
+
+    if (complexType->type != XML_SCHEMA_TYPE_COMPLEX)
+	return (NULL);
+    if (complexType->contentTypeDef != NULL)
+	return (complexType->contentTypeDef);
+    /*
+    * TODO: This is only a workaround until the simple content
+    * type is computed for complex types with simple content.
+    */
+    ret = complexType->baseType;
+    while (ret != NULL) {
+	if (IS_SIMPLE_TYPE(ret))
+	    return (ret);
+	if (ret->builtInType == XML_SCHEMAS_ANYTYPE)
+	    return (NULL);
+	if ((ret->type == XML_SCHEMA_TYPE_COMPLEX) &&
+	    (ret->contentTypeDef != NULL))
+	    ret = ret->contentTypeDef;
+	else
+	    ret = ret->baseType;
+    }
+    return (ret);
+}
+
 /**
  * xmlSchemaValidateSimpleTypeValue:
  * @ctxt:  a schema validation context
@@ -16289,18 +17847,20 @@
     }
 
     if (type->type == XML_SCHEMA_TYPE_COMPLEX) {
-	xmlSchemaTypePtr base, anyType;
+	xmlSchemaTypePtr simpType, anyType;
 
 	anyType = xmlSchemaGetBuiltInType(XML_SCHEMAS_ANYTYPE);
 
-	base = type->baseType;
-	while ((base != NULL) && 
-	    (base->type != XML_SCHEMA_TYPE_SIMPLE) &&
-	    (base->type != XML_SCHEMA_TYPE_BASIC) &&
-	    (base != anyType)) {
-	    base = base->baseType;
+	simpType = xmlSchemaGetSimpleContentType(type);
+	if (simpType == NULL) {
+	    xmlSchemaVErr(ctxt, node, XML_SCHEMAV_INTERNAL,
+		"Internal error: xmlSchemaValidateSimpleTypeValue, "
+		"failed to obtain the simple content type of the complex "
+		"type '%s'\n",
+		type->name, NULL);
+	    return (-1);
 	}
-	ret = xmlSchemaValidateSimpleTypeValue(ctxt, base, value, 1, 0, 1, 0);
+	ret = xmlSchemaValidateSimpleTypeValue(ctxt, simpType, value, 1, 0, 1, 0);
 	if (ret < 0) {
 	    xmlSchemaVErr(ctxt, node, XML_SCHEMAV_INTERNAL,
 		"Internal error: xmlSchemaValidateSimpleTypeValue, "
@@ -16309,15 +17869,14 @@
 	} else if ((ret == 0) && (applyFacets) && (type->facetSet != NULL)) {
 	    /* 
 	    * Check facets.
-	    */	    
-	    /*
-	    * This is somehow not nice, since if an error occurs
+	    *
+	    * TODO: This is somehow not nice, since if an error occurs
 	    * the reported type will be the complex type; the spec
 	    * wants a simple type to be created on the complex type
 	    * if it has a simple content. For now we have to live with
 	    * it.
-	    */
-	    ret = xmlSchemaValidateFacetsInternal(ctxt, type, 
+	    */	    
+	    ret = xmlSchemaValidateFacetsInternal(ctxt, type,		
 		value, 0, fireErrors);
 	    if (ret < 0) {
 		xmlSchemaVErr(ctxt, node, XML_SCHEMAV_INTERNAL,
@@ -16363,7 +17922,6 @@
 	    (type->builtInType == XML_SCHEMAS_STRING) &&
 	    (ctxt->nodeInfo != NULL) &&
 	    (ctxt->nodeInfo->flags & XML_SCHEMA_ELEM_INFO_VALUE_NEEDED)) {
-#ifdef IDC_VALUE_SUPPORT
 	    xmlChar *valdup;
 	    /*
 	    * Create a precomputed string value for "string" as well if
@@ -16374,7 +17932,6 @@
 		BAD_CAST valdup);
 	    if ((valdup != NULL) && (ctxt->value == NULL))
 		xmlFree(valdup);
-#endif
 	}
     } else if (type->flags & XML_SCHEMAS_TYPE_VARIETY_ATOMIC) {        
 	/* 1.2.1 if {variety} is ·atomic· then the string must ·match· 
@@ -16393,8 +17950,8 @@
 	} else if ((applyFacets) && (type->facetSet != NULL)) {
 	    /* 
 	    * Check facets.
-	    */	    	    	    
-	    ret = xmlSchemaValidateFacetsInternal(ctxt, type, 
+	    */	    	   	    
+	    ret = xmlSchemaValidateFacetsInternal(ctxt, type,
 		value, 0, fireErrors);
 	    if (ret < 0) {
 		xmlSchemaVErr(ctxt, node, XML_SCHEMAV_INTERNAL,
@@ -16461,7 +18018,7 @@
 		"validating list simple type '%s'\n",
 		type->name, NULL);
 	} else if ((ret == 0) && (applyFacets)) {
-	    ret = xmlSchemaValidateFacetsInternal(ctxt, type, 
+	    ret = xmlSchemaValidateFacetsInternal(ctxt, type,
 		value, len, fireErrors);
 	    if (ret < 0) {
 		xmlSchemaVErr(ctxt, node, XML_SCHEMAV_INTERNAL,
@@ -16555,7 +18112,7 @@
 		    value = (const xmlChar *) normValue;
 	    }
 
-	    ret = xmlSchemaValidateFacetsInternal(ctxt, type, 
+	    ret = xmlSchemaValidateFacetsInternal(ctxt, type,
 		value, 0, fireErrors);
 	    if (ret < 0) {
 		xmlSchemaVErr(ctxt, node, XML_SCHEMAV_INTERNAL,
@@ -16810,8 +18367,6 @@
  * 									*
  ************************************************************************/
 
-#ifdef IDC_ENABLED
-
 /**
  * xmlSchemaAugmentIDC:
  * @idcDef: the IDC definition
@@ -17192,7 +18747,6 @@
     }
 compareValue:
     {	
-#ifdef IDC_VALUE_SUPPORT
 	int ret;
 	int aws, bws;
 
@@ -17213,9 +18767,6 @@
 	    return(-1);
 	} else
 	    return(0);
-#else
-	return (1);
-#endif
     }
 }
 
@@ -17345,8 +18896,6 @@
 	    xmlGenericError(xmlGenericErrorContext, "IDC:   ['%s'] field '%s'\n", 
 		sto->matcher->aidc->def->name, sto->sel->xpath);
 #endif
-
-#ifdef IDC_XPATH_SUPPORT
 	if (nodeType == XML_ELEMENT_NODE)
 	    res = xmlStreamPush((xmlStreamCtxtPtr) sto->xpathCtxt,
 		vctxt->nodeInfo->localName, vctxt->nodeInfo->namespaceName);
@@ -17354,9 +18903,6 @@
 	    res = xmlStreamPushAttr((xmlStreamCtxtPtr) sto->xpathCtxt,
 		vctxt->nodeInfo->localName, vctxt->nodeInfo->namespaceName);
 
-#else
-	res = 0;
-#endif	
 	if (res == -1) {
 	    xmlSchemaVErr(vctxt, vctxt->node,
 		XML_SCHEMAV_INTERNAL,
@@ -17486,12 +19032,10 @@
     * Evaluate the state objects.
     */
     while (sto != NULL) {
-#ifdef IDC_XPATH_SUPPORT
 	xmlStreamPop((xmlStreamCtxtPtr) sto->xpathCtxt);
-	#if DEBUG_IDC
-	    xmlGenericError(xmlGenericErrorContext, "IDC:   stream pop '%s'\n",
-		sto->sel->xpath);
-	#endif
+#if DEBUG_IDC
+	xmlGenericError(xmlGenericErrorContext, "IDC:   stream pop '%s'\n",
+	    sto->sel->xpath);
 #endif
 	if (sto->nbHistory == 0)
 	    goto deregister_check;
@@ -18036,7 +19580,7 @@
     xmlSchemaPSVIIDCNodePtr node, parNode = NULL; /* node-table entries. */
     xmlSchemaPSVIIDCKeyPtr key, parKey; /* keys of in a key-sequence. */
     xmlSchemaIDCAugPtr aidc;
-    int i, j, k, ret = 0, oldNum, newDupls = 0;
+    int i, j, k, ret = 0, oldNum, newDupls;
     int duplTop;
 
     /*
@@ -18078,7 +19622,8 @@
 	aidc = vctxt->aidcs;
 	do {
 	    if (aidc->def == bind->definition) {
-		if (aidc->bubbleDepth >= vctxt->depth) {
+		if ((aidc->bubbleDepth == -1) || 
+		    (aidc->bubbleDepth >= vctxt->depth)) {
 		    bind = bind->next;
 		    goto start_binding;
 		}
@@ -18102,6 +19647,7 @@
 		*/
 		oldNum = parBind->nbNodes; /* Skip newly added items. */
 		duplTop = oldNum + parBind->nbDupls;
+		newDupls = 0;
 
 		for (i = 0; i < bind->nbNodes; i++) {
 		    node = bind->nodeTable[i];
@@ -18200,7 +19746,7 @@
 			*/
 			if (parBind->nodeTable == NULL) {			
 			    parBind->nodeTable = (xmlSchemaPSVIIDCNodePtr *) 
-				xmlMalloc(1 * sizeof(xmlSchemaPSVIIDCNodePtr));
+				xmlMalloc(10 * sizeof(xmlSchemaPSVIIDCNodePtr));
 			    if (parBind->nodeTable == NULL) {
 				xmlSchemaVErrMemory(NULL, 
 				    "allocating IDC list of node-table items", NULL);
@@ -18208,7 +19754,7 @@
 			    }
 			    parBind->sizeNodes = 1;
 			} else if (duplTop >= parBind->sizeNodes) {
-			    parBind->sizeNodes++;
+			    parBind->sizeNodes *= 2;
 			    parBind->nodeTable = (xmlSchemaPSVIIDCNodePtr *) 
 				xmlRealloc(parBind->nodeTable, parBind->sizeNodes * 
 				sizeof(xmlSchemaPSVIIDCNodePtr));
@@ -18251,7 +19797,7 @@
 		lastParBind = parBind;
 	    parBind = parBind->next;
 	}
-	if (parBind == NULL) {
+	if ((parBind == NULL) && (bind->nbNodes != 0)) {
 	    /*
 	    * No binding for the IDC was found: create a new one and
 	    * copy all node-tables.
@@ -18358,9 +19904,7 @@
     }
     return (0);
 }
-#endif /* IDC_ENABLED */
 
-#ifdef ELEM_INFO_ENABLED
 /**
  * xmlSchemaBeginElement:
  * @vctxt: the WXS validation context
@@ -18396,7 +19940,6 @@
 	vctxt->depth--;
 	return (0);
     }
-#ifdef IDC_ENABLED
     /*
     * Evaluate the history of changes of active state objects.
     */
@@ -18416,13 +19959,11 @@
     * Validate IDC keyrefs.
     */
     xmlSchemaCheckCVCIDCKeyRef(vctxt);
-#endif
     
     /*
     * Merge/free the IDC table.
     */
     if (vctxt->nodeInfo->idcTable != NULL) {
-#ifdef IDC_ENABLED
 #ifdef DEBUG_IDC
 	xmlSchemaDebugDumpIDCTable(stdout,
 	    vctxt->nodeInfo->namespaceName,
@@ -18440,19 +19981,16 @@
 	* requested for the PSVI.
 	*/
 	xmlSchemaIDCFreeIDCTable(vctxt->nodeInfo->idcTable);
-#endif
 	vctxt->nodeInfo->idcTable = NULL;
     }
 
     /*
     * Cleanup IDC matchers.
     */
-#ifdef IDC_ENABLED
     if (vctxt->nodeInfo->idcMatchers != NULL) {	
 	xmlSchemaIDCFreeMatcherList(vctxt->nodeInfo->idcMatchers);
 	vctxt->nodeInfo->idcMatchers = NULL;
     }
-#endif
 
     /*
     * Skip further processing if we are on the validation root.
@@ -18465,7 +20003,6 @@
     /*
     * Reset the bubbleDepth if needed.
     */
-#ifdef IDC_ENABLED
     if (vctxt->aidcs != NULL) {
 	xmlSchemaIDCAugPtr aidc = vctxt->aidcs;
 	do {
@@ -18480,7 +20017,6 @@
 	    aidc = aidc->next;
 	} while (aidc != NULL);
     }
-#endif
     vctxt->depth--;
     /*
     * Clear the current elemInfo.
@@ -18495,8 +20031,6 @@
     return (0);
 }
 
-#endif /* ELEM_INFO_ENABLED */
-
 /**
  * xmlSchemaValidateElementByDeclaration:
  * @ctxt:  a schema validation context
@@ -18547,10 +20081,8 @@
 	/* 
 	* Evaluate IDCs even if an error occured.
 	*/
-#ifdef IDC_ENABLED
 	if (xmlSchemaXPathEvaluate(ctxt, XML_ELEMENT_NODE) == -1)
 	    return (-1);
-#endif
         return (ctxt->err);
     }
     /*
@@ -18564,10 +20096,8 @@
 	/* 
 	* Evaluate IDCs even if an error occured.
 	*/
-#ifdef IDC_ENABLED
 	if (xmlSchemaXPathEvaluate(ctxt, XML_ELEMENT_NODE) == -1)
 	    return (-1);
-#endif
         return (ctxt->err);
     }
      
@@ -18723,19 +20253,15 @@
 	/* 
 	* Evaluate IDCs even if an error occured.
 	*/
-#ifdef IDC_ENABLED
 	if (xmlSchemaXPathEvaluate(ctxt, XML_ELEMENT_NODE) == -1)
 	    return (-1);
-#endif
     	return (XML_SCHEMAV_CVC_TYPE_1);
     }
     
     /*
     * Remember the actual-type definition.
     */
-#ifdef ELEM_INFO_ENABLED
     ctxt->nodeInfo->typeDef = actualType;
-#endif
     
     /*
     * TODO: Since this should be already checked by the content model automaton,
@@ -18771,7 +20297,6 @@
     /*
     * IDC: Register identity-constraint XPath matchers.
     */
-#ifdef IDC_ENABLED
     if (elemDecl->idcs != NULL)
 	xmlSchemaIDCRegisterMatchers(ctxt, elemDecl);
     /* 
@@ -18779,7 +20304,6 @@
     */
     if (xmlSchemaXPathEvaluate(ctxt, XML_ELEMENT_NODE) == -1)
 	return (-1);
-#endif
     /*
     * cvc-elt (3.3.4) : 5 
     * The appropriate case among the following must be true:
@@ -18871,12 +20395,10 @@
 	* Consume the computed value for IDCs, ect. Note that default
 	* values are not supported yet.
 	*/
-#ifdef ELEM_INFO_ENABLED
 	if (ctxt->value != NULL) {
 	    ctxt->nodeInfo->value = ctxt->value;
 	    ctxt->value = NULL;
 	}
-#endif
 	ctxt->node = elem;
 	if (ret < 0) {
 	    xmlSchemaVCustomErr(ctxt, 
@@ -19046,10 +20568,9 @@
 	    /* 
 	    * Evaluate IDCs even if a validation error occured.
 	    */
-#ifdef IDC_ENABLED
 	    if (xmlSchemaXPathEvaluate(ctxt,XML_ELEMENT_NODE) == -1)
 		return(-1);
-#endif
+
 	    return (ctxt->err);
 	}
 	/* 
@@ -19058,10 +20579,8 @@
 	* definitely result in an IDC validation error if an IDC field
 	* resolves.
 	*/
-#ifdef IDC_ENABLED
 	if (xmlSchemaXPathEvaluate(ctxt, XML_ELEMENT_NODE) == -1)
 	    return(-1);
-#endif
     }
     if (node->children != NULL) {	   
 	child = node->children;
@@ -19078,10 +20597,10 @@
 			"The namespace of the element is not allowed");
 		    return (ctxt->err);  
 		}
-#ifdef ELEM_INFO_ENABLED
+
 		ctxt->node = child;
 		xmlSchemaBeginElement(ctxt);
-#endif
+
 		/*
 		* Recurse over the children.
 		*/
@@ -19089,10 +20608,10 @@
 		    wild, child);
 		if (ret == -1)
 		    return (-1);
-#ifdef ELEM_INFO_ENABLED
+
 		if (xmlSchemaEndElement(ctxt) == -1)
 		    return (-1);
-#endif
+
 		if (ret != 0)
 		    return (ret);		
 	    }
@@ -19111,9 +20630,10 @@
  */
 static int
 xmlSchemaValidateElementByWildcard(xmlSchemaValidCtxtPtr ctxt, 
-				   xmlSchemaTypePtr type)
+				   xmlSchemaWildcardPtr wild)
 {       
-    if ((type == NULL) || (type->type != XML_SCHEMA_TYPE_ANY) ||
+    
+    if ((wild == NULL) || (wild->type != XML_SCHEMA_TYPE_ANY) ||
 	(ctxt->node == NULL)) {
 	xmlSchemaVCustomErr(ctxt,
 	    XML_SCHEMAV_INTERNAL, ctxt->node, NULL,
@@ -19121,12 +20641,26 @@
 	    "bad arguments", NULL);
 	return (-1);
     }
+    if (wild->negNsSet != NULL) {
+	/*
+	* Workaround for negated namespaces.
+	*/
+	if (ctxt->node->ns != NULL) {
+	    if (xmlSchemaMatchesWildcardNs(wild, ctxt->node->ns->href) == 0) {
+		ctxt->flags |= XML_SCHEMA_VALID_INVALID_NEG_WILDCARD;
+		return (XML_SCHEMAV_ELEMENT_CONTENT);
+	    }
+	} else if (xmlSchemaMatchesWildcardNs(wild, NULL) == 0) {
+	    ctxt->flags |= XML_SCHEMA_VALID_INVALID_NEG_WILDCARD;
+	    return (XML_SCHEMAV_ELEMENT_CONTENT);
+	}
+    }
     return(xmlSchemaValidateElementByWildcardInternal(ctxt, 
-	    type->attributeWildcard, ctxt->node));
+	    wild, ctxt->node));
 }
 
 /**
- * xmlSchemaValidateAnyTypeContent:
+ * xmlSchemaValidateElementByAnyType:
  * @ctxt:  a schema validation context
  * @node: the current element
  *
@@ -19145,7 +20679,7 @@
     xmlSchemaTypePtr oldtype;
     xmlNodePtr top, cur;
     xmlSchemaElementPtr decl;
-    int skipContent, ret;
+    int skipContent, ret, insub = 0;
 
     if ((type == NULL) || (ctxt->node == NULL))
 	return (-1);
@@ -19171,9 +20705,18 @@
 		decl = xmlHashLookup3(ctxt->schema->elemDecl,
 		    cur->name, cur->ns->href, NULL);
 	    else 
-		decl = xmlHashLookup3(ctxt->schema->elemDecl, cur->name, NULL, NULL);	    
-	    if (decl != NULL) {		    
-		ctxt->node = cur;
+		decl = xmlHashLookup3(ctxt->schema->elemDecl, cur->name, NULL, NULL);
+	    ctxt->node = cur;
+
+	    if (insub) { 
+		/*
+		* BEGIN element.
+		*/
+		xmlSchemaBeginElement(ctxt);
+	    } else
+		insub = 1;
+
+	    if (decl != NULL) {		
 		ret = xmlSchemaValidateElementByDeclaration(ctxt, decl);
 		ctxt->node = top;
 		if (ret < 0) {		
@@ -19185,6 +20728,12 @@
 		} else if (ret > 0)
 		    return (ret);
 		skipContent = 1;
+	    } else {
+		/*
+		* IDCs.
+		*/
+		if (xmlSchemaXPathEvaluate(ctxt,XML_ELEMENT_NODE) == -1)
+		    return(-1);
 	    }
 	}   
 	/*
@@ -19196,10 +20745,16 @@
 	} else if ((cur != top) && (cur->next != NULL)) {
 	    /* then siblings */
 	    cur = cur->next;
-	} else if (cur != top) {
+	} else if (cur != top) {	    
 	    /* go up to parents->next if needed */
 	    while (cur != top) {
-	        if (cur->parent != NULL)
+		if (cur->type == XML_ELEMENT_NODE) {
+		    /*
+		    * END element.
+		    */
+		    xmlSchemaEndElement(ctxt);
+		}
+		if (cur->parent != NULL)
 		    cur = cur->parent;
 		if ((cur != top) && (cur->next != NULL)) {
 		    cur = cur->next;
@@ -19297,42 +20852,58 @@
     */              
     switch (type->contentType) {
 	case XML_SCHEMA_CONTENT_EMPTY: {
+		/*
+		* 1 If the {content type} is empty, then the element information 
+		* item has no character or element information item [children].
+		*/
+		/*
+		* TODO: Is the entity stuff correct?
+		*/
+		if (xmlSchemaHasElemOrCharContent(elem) == 1) {	    	    
+		    xmlSchemaVComplexTypeErr(ctxt, 
+			XML_SCHEMAV_CVC_COMPLEX_TYPE_2_1,
+			elem, type, 
+			"Character or element content is not allowed, "
+			"because the content type is empty");
+		}	 
+		break;
+	    }	    
+	case XML_SCHEMA_CONTENT_MIXED:
 	    /*
-	    * 1 If the {content type} is empty, then the element information 
-	    * item has no character or element information item [children].
+	    * Some speedups for anyType or types derived directly from it.
 	    */
-	    /*
-	    * TODO: Is the entity stuff correct?
-	    */
-	    if (xmlSchemaHasElemOrCharContent(elem) == 1) {	    	    
-		xmlSchemaVComplexTypeErr(ctxt, 
-		    XML_SCHEMAV_CVC_COMPLEX_TYPE_2_1,
-		    elem, type, 
-		    "Character or element content is not allowed, "
-		    "because the content type is empty");
-            }	 
-            break;
-	}
-	case XML_SCHEMA_CONTENT_MIXED:
-	    if ((type->subtypes == NULL) && 
-		(type->baseType->builtInType == XML_SCHEMAS_ANYTYPE)) {
+	    if (IS_ANYTYPE(type)) {
 		/*
-		* The type has 'anyType' as its base and no content model
-		* is defined -> use 'anyType' as the type to validate
-		* against.
+		* Corresponds to <element name="foo" [type="xsd:anyType"]/>.
 		*/
+		ret = xmlSchemaValidateElementByAnyType(ctxt, type);
+		/* TODO: Handle -1. */
+		break;
+	    }
+	    if (IS_ANYTYPE(type->baseType) &&
+		(type->flags & XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION) &&
+		(type->subtypes == type->baseType->subtypes)) {
+		/*
+		* Corresponds to an <extension> of anyType.
+		*/
 		ret = xmlSchemaValidateElementByAnyType(ctxt, type->baseType);
 		/* TODO: Handle -1. */
 		break;
 	    }
 	    /* No break on purpose. */
-        case XML_SCHEMA_CONTENT_ELEMENTS:
-        {
+        case XML_SCHEMA_CONTENT_ELEMENTS: {
 	    xmlRegExecCtxtPtr oldregexp = NULL;
 	    xmlChar *values[10];
 	    int terminal, nbval = 10, nbneg;
-	    
 	    /*
+	    * SPEC (2.4) If the {content type} is element-only or mixed,
+	    * then the sequence of the element information item's
+	    * element information item [children], if any, taken in 
+	    * order, is ·valid· with respect to the {content type}'s 
+	    * particle, as defined in Element Sequence Locally Valid 
+	    * (Particle) (§3.9.4).
+	    */
+	    /*
 	    * Content model check initialization.
 	    */
 	    if (type->contModel != NULL) {					
@@ -19355,14 +20926,18 @@
 		    else
 			nsUri = NULL;
 		    ret = xmlRegExecPushString2(ctxt->regexp,
-			child->name, nsUri, child);
+			child->name, nsUri, child);		    
 		    if (ctxt->err == XML_SCHEMAV_INTERNAL)
 			return (-1);
-		    /*
-		    * URGENT TODO: Could we anchor an error report
-		    * here to notify of invalid elements?
-		    * TODO: Perhaps it would be better to report 
-		    * only the first erroneous element and then break.
+		    if (ctxt->flags & XML_SCHEMA_VALID_INVALID_NEG_WILDCARD) {
+			ctxt->flags ^= XML_SCHEMA_VALID_INVALID_NEG_WILDCARD;
+			ret = -1;
+		    }
+			/*
+			* URGENT TODO: Could we anchor an error report
+			* here to notify of invalid elements?
+			* TODO: Perhaps it would be better to report 
+			* only the first erroneous element and then break.
 		    */
 #ifdef DEBUG_AUTOMATA
 		    if (ret < 0)
@@ -19418,33 +20993,31 @@
        	    if (type->contModel != NULL) {
 		if (ret == 0) {
 		    xmlRegExecNextValues(ctxt->regexp, &nbval, &nbneg,
-			&values[0], &terminal);
-		    if (nbval + nbneg != 0) {
-			/*
-			* If a next value still exists, I does not have to
-			* mean that there's an element missing, since it
-			* might be an optional element. So double check it.
-			*/
-			ret = xmlRegExecPushString(ctxt->regexp,
-			    NULL, NULL);
-			if (ret <= 0) {
-			    ret = 1;
-    			    xmlSchemaVComplexTypeElemErr(ctxt,
-				XML_SCHEMAV_ELEMENT_CONTENT,
-				elem, type, "Missing child element(s)",
-				nbval, nbneg, values);			    
-			} else
-			    ret = 0;			
+			&values[0], &terminal);		    
+		    /*
+		    * If a next value still exists, It does not have to
+		    * mean that there's an element missing, since it
+		    * might be an optional element. So double check it.
+		    */
+		    ret = xmlRegExecPushString(ctxt->regexp,
+			NULL, NULL);
+		    if (ret <= 0) {
+			ret = 1;
+			xmlSchemaVComplexTypeElemErr(ctxt,
+			    XML_SCHEMAV_ELEMENT_CONTENT,
+			    elem, type, "Missing child element(s)",
+			    nbval, nbneg, values);			    
+		    } else
+			ret = 0;			
 #ifdef DEBUG_AUTOMATA
-			xmlGenericError(xmlGenericErrorContext,
-			    "====> %s : %d\n", elem->name, ret);
+		    xmlGenericError(xmlGenericErrorContext,
+			"====> %s : %d\n", elem->name, ret);
 #endif
-		    }		    
 #ifdef DEBUG_CONTENT
 		    if (ret == 0)
 			xmlGenericError(xmlGenericErrorContext,
-			    "Element %s content check succeeded\n",
-			    elem->name);
+			"Element %s content check succeeded\n",
+			elem->name);
 #endif
 		}
 		xmlRegFreeExecCtxt(ctxt->regexp);
@@ -19495,81 +21068,45 @@
 	    }	
 	    ctxt->node = elem;
 	    ctxt->cur = elem->children;
-	    if (ret == 0) {
+	    if (ret != 0) {
+		FREE_AND_NULL(value)
+		break;
+	    }
+	    /*
+	    * Validate the character content against a simple type.
+	    */		
+	    if (elem->children == NULL)
+		value = NULL;
+	    else
+		value = xmlNodeGetContent(elem); 
 		/*
-		* Validate the character content against a simple type.
+		* NOTE: This call won't check the correct types of the
+		* content nodes, since this should be done here.
 		*/
+	    ret = xmlSchemaValidateSimpleTypeValue(ctxt,
+		type->contentTypeDef, value, 1, 1, 1, 0);
+	    if (ret > 0) {	
 		/*
-		* STREAM: Children are processed.
+		* NOTE: Although an error will be reported by 
+		* xmlSchemaValidateSimpleTypeValue, the spec wants
+		* a specific complex type error to be reported 
+		* additionally.
 		*/
-		if (elem->children == NULL)
-		    value = NULL;
-		else
-		    value = xmlNodeGetContent(elem); 
-		/*
-		* URGENT TODO: Should facets for the simple type validation be 
-		* disabled, if the derivation of facets for complex types 
-		* is implemented?
-		*/
-		/*
-		* NOTE: This call won't check the correct types of the
-		* content nodes, since this should be done here.
-		*/
-		ret = xmlSchemaValidateSimpleTypeValue(ctxt, type, value, 1, 1, 1, 0);
-		if (ret > 0) {	
-		    /*
-		    * NOTE: Although an error will be reported by 
-		    * xmlSchemaValidateSimpleTypeValue, the spec wants
-		    * a specific complex type error to be reported 
-		    * additionally.
-		    */
-		    xmlSchemaVComplexTypeErr(ctxt, 
-			XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2,
-			elem, type,  
-			"The character content is not valid");
-		    ret = XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2;
-		} else if (ret < 0) {
-		    xmlSchemaVErr(ctxt, elem, XML_SCHEMAV_INTERNAL,
-			"Internal error: xmlSchemaValidateComplexType, "
-			"Element '%s': Error while validating character "
-			"content against complex type '%s'.\n",
-			elem->name, type->name);
-		    if (value != NULL)
-			xmlFree(value); 
-		    ctxt->type = oldtype;
-		    return (-1);
-		}
-	    }	    
-	    if (ret == 0) {
-		/* 
-		* Apply facets of the complexType. Be sure to pass the 
-		* built-in type to xmlSchemaValidateFacetsInternal.
-		*/	    
-		/* URGENT TODO: I don't know yet if the facets of the simple type
-		* are used, or if the facets, defined by this complex type,
-		* are to be used only. This here applies both facet sets.
-		*/	    
-
-		ret = xmlSchemaValidateFacetsInternal(ctxt, 
-		    type, value, 0, 1);
-		if (ret > 0) {
-		    xmlSchemaVComplexTypeErr(ctxt, 
-			XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2,
-			elem, type, 
-			"The character content is not valid");
-		    ret = XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2;
-		} else if (ret < 0) {
-		    xmlSchemaVErr(ctxt, elem, XML_SCHEMAV_INTERNAL,
-			"Internal error: xmlSchemaValidateComplexType, "
-			"Element '%s': Error while validating character "
-			"content against complex type '%s'; failed to "
-			"apply facets.\n",
-			type->name, NULL);
-		    if (value != NULL)
-			xmlFree(value); 
-		    ctxt->type = oldtype;
-		    return (-1);
-		}
+		xmlSchemaVComplexTypeErr(ctxt, 
+		    XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2,
+		    elem, type,  
+		    "The character content is not valid");
+		ret = XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2;
+	    } else if (ret < 0) {
+		xmlSchemaVErr(ctxt, elem, XML_SCHEMAV_INTERNAL,
+		    "Internal error: xmlSchemaValidateComplexType, "
+		    "Element '%s': Error while validating character "
+		    "content against complex type '%s'.\n",
+		    elem->name, type->name);
+		if (value != NULL)
+		    xmlFree(value); 
+		ctxt->type = oldtype;
+		return (-1);
 	    }
 	    if (value != NULL)
 		xmlFree(value);
@@ -19660,13 +21197,14 @@
 
 static int
 xmlSchemaPostCreateVal(xmlSchemaValidCtxtPtr vctxt,
+		       xmlSchemaTypePtr type,
 		       const xmlChar *value,
 		       xmlSchemaValPtr *val)
 {
     xmlSchemaTypePtr prim;
 
     if (val == NULL) {
-	xmlSchemaVErr(vctxt, vctxt->nodeInfo->node, 
+	xmlSchemaVErr(vctxt, NULL, 
 	    XML_SCHEMAV_INTERNAL,
 	    "Internal error: xmlSchemaPostCreateVal, "
 	    "bad arguments", NULL, NULL);
@@ -19675,13 +21213,10 @@
     /*
     * Only string or anySimpleType values are expected to be post-created.
     */
-    prim = xmlSchemaGetPrimitiveType(vctxt->nodeInfo->typeDef);
+    prim = xmlSchemaGetPrimitiveType(type);
     if ((prim->builtInType == XML_SCHEMAS_STRING) || 
 	(prim->builtInType == XML_SCHEMAS_ANYSIMPLETYPE))
     {
-#if 0
-	builtIn = xmlSchemaGetBuiltInTypeAncestor(vctxt->nodeInfo->typeDef);
-#endif
 	if (value == NULL)
 	    /* TODO: Can this happen at all? */
 	    *val = xmlSchemaNewStringValue(XML_SCHEMAS_STRING,
@@ -19689,7 +21224,7 @@
 	else
 	    *val = xmlSchemaNewStringValue(XML_SCHEMAS_STRING, value);
 	if ((*val) == NULL) {
-	    xmlSchemaVErr(vctxt, vctxt->nodeInfo->node, 
+	    xmlSchemaVErr(vctxt, NULL, 
 		XML_SCHEMAV_INTERNAL,
 		"Internal error: xmlSchemaPostCreateVal, "
 		"failed to create the value", NULL, NULL);
@@ -19697,7 +21232,7 @@
 	}
 	return (0);
     }
-    xmlSchemaVErr(vctxt, vctxt->nodeInfo->node, 
+    xmlSchemaVErr(vctxt, NULL, 
 	XML_SCHEMAV_INTERNAL,
 	"Internal error: xmlSchemaPostCreateVal, "
 	"the given type is not supported", NULL, NULL);
@@ -19771,7 +21306,8 @@
 		/*
 		* Post-create the value.
 		*/
-		if (xmlSchemaPostCreateVal(vctxt, value, &(vctxt->value)) == -1) {
+		if (xmlSchemaPostCreateVal(vctxt, vctxt->attrInfo->typeDef,
+		    value, &(vctxt->value)) == -1) {
 		    ret = -1;
 		    goto exit;
 		}
@@ -19787,7 +21323,8 @@
 		    str = xmlStrdup(BAD_CAST "");
 		else
 		    str = xmlStrdup(defValue);
-		if (xmlSchemaPostCreateVal(vctxt, str, &defVal) == -1) {
+		if (xmlSchemaPostCreateVal(vctxt, vctxt->attrInfo->typeDef,
+		    str, &defVal) == -1) {
 		    ret = -1;
 		    FREE_AND_NULL(str)
 		    goto exit;
@@ -19979,15 +21516,12 @@
 		tmp->decl = attrDecl;
 		tmp->value = defValue;
 		tmp->next = NULL;
-		
-		if (defAttrStates == NULL) {
+		if (defAttrStatesTop == NULL)
 		    defAttrStates = tmp;
-		    defAttrStates = tmp;
-		} else {
-		    defAttrStates->next = tmp;
-		    defAttrStatesTop = tmp;
-		}				
-	    }			
+		else
+		    defAttrStatesTop->next = tmp;
+		defAttrStatesTop = tmp;
+	    }
 	}
         attrUse = attrUse->next;
     }
@@ -20128,8 +21662,6 @@
 		    ctxt->attrInfo->localName = curState->attr->name;
 		    
 		    ctxt->nodeInfo = ctxt->attrInfo;
-
-#ifdef IDC_ENABLED  
 		    /*
 		    * Evaluate IDCs.
 		    */
@@ -20140,7 +21672,6 @@
 			    goto fatal_exit;
 		    }
 
-#endif
 		    ret = xmlSchemaCheckAttrLocallyValid(ctxt, curState);
 		    if (ret == -1)
 			goto fatal_exit;
@@ -20150,7 +21681,6 @@
 		    }
 		    /* No break on purpose. */
 		case XML_SCHEMAS_ATTR_CHECKED:
-#ifdef IDC_ENABLED
 		    if (ctxt->xpathStates != NULL) {
 			/*
 			* Evaluate IDCs.
@@ -20163,7 +21693,6 @@
 			    goto fatal_exit;
 		    }
 		    break;
-#endif
 		default:
 		    break;
 	    }
@@ -20240,8 +21769,6 @@
 	    attrDecl = curState->decl;
 	    if (attrDecl->ref != NULL)
 		attrDecl = attrDecl->refDecl;
-
-#ifdef IDC_ENABLED 
 	    /*
 	    * Evaluate IDCs on default attributes.
 	    */
@@ -20296,6 +21823,7 @@
 			xmlChar *str = xmlStrdup(attrDecl->defValue);
 
 			if (xmlSchemaPostCreateVal(ctxt,
+			    ctxt->attrInfo->typeDef,
 			    str,
 			    &(attrDecl->defVal)) == -1) {
 			    FREE_AND_NULL(str)
@@ -20309,7 +21837,6 @@
 		if (xmlSchemaXPathProcessHistory(ctxt, ctxt->depth +1) == -1)
 		    goto fatal_exit;
 	    }
-#endif
 
 	    if (ctxt->options & XML_SCHEMA_VAL_VC_I_CREATE) {
 		/*
@@ -20563,6 +22090,8 @@
     if (vctxt == NULL)
         return;
 
+    vctxt->flags = 0;
+
     vctxt->validationRoot = NULL;
     if (vctxt->attr != NULL) {
         xmlSchemaFreeAttributeStates(vctxt->attr);
@@ -20884,4 +22413,6 @@
     TODO return (0);
 }
 
+#define bottom_xmlschemas
+#include "elfgcchack.h"
 #endif /* LIBXML_SCHEMAS_ENABLED */

Modified: packages/libxml2/branches/upstream/current/xmlschemastypes.c
===================================================================
--- packages/libxml2/branches/upstream/current/xmlschemastypes.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/xmlschemastypes.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -50,6 +50,8 @@
 
 #define IS_WSP_SPACE_CH(c)	((c) == 0x20)
 
+#define IS_WSP_BLANK_CH(c) IS_BLANK_CH(c)
+
 /* Date value */
 typedef struct _xmlSchemaValDate xmlSchemaValDate;
 typedef xmlSchemaValDate *xmlSchemaValDatePtr;
@@ -1761,38 +1763,38 @@
  *
  * Parse an unsigned long into 3 fields.
  *
- * Returns the number of chars parsed or -1 if overflow of the capacity
+ * Returns the number of significant digits in the number or
+ * -1 if overflow of the capacity
  */
 static int
 xmlSchemaParseUInt(const xmlChar **str, unsigned long *llo,
-	           unsigned long *lmi, unsigned long *lhi) {
+                   unsigned long *lmi, unsigned long *lhi) {
     unsigned long lo = 0, mi = 0, hi = 0;
     const xmlChar *tmp, *cur = *str;
     int ret = 0, i = 0;
 
-    while (*cur == '0') {
-	ret++;
-	cur++;
+    while (*cur == '0') {        /* ignore leading zeroes */
+        cur++;
     }
     tmp = cur;
     while ((*tmp != 0) && (*tmp >= '0') && (*tmp <= '9')) {
-	i++;tmp++;ret++;
+        i++;tmp++;ret++;
     }
     if (i > 24) {
-	*str = tmp;
-	return(-1);
+        *str = tmp;
+        return(-1);
     }
     while (i > 16) {
-	hi = hi * 10 + (*cur++ - '0');
-	i--;
+        hi = hi * 10 + (*cur++ - '0');
+        i--;
     }
     while (i > 8) {
-	mi = mi * 10 + (*cur++ - '0');
-	i--;
+        mi = mi * 10 + (*cur++ - '0');
+        i--;
     }
     while (i > 0) {
-	lo = lo * 10 + (*cur++ - '0');
-	i--;
+        lo = lo * 10 + (*cur++ - '0');
+        i--;
     }
 
     *str = cur;
@@ -1930,7 +1932,7 @@
 			/*
 		 	* If a mixed decimal, get rid of trailing zeroes
 		 	*/
-			if (dec) {
+			if (dec != -1) {
 			    while ((cptr > cval) && (*(cptr-1) == '0')) {
 				cptr--;
 				len--;
@@ -2065,9 +2067,14 @@
                     if (type == xmlSchemaTypeFloatDef) {
                         v = xmlSchemaNewValue(XML_SCHEMAS_FLOAT);
                         if (v != NULL) {
+			    /*
+			    * TODO: sscanf seems not to give the correct
+			    * value for extremely high/low values.
+			    * E.g. "1E-149" results in zero.
+			    */
                             if (sscanf((const char *) value, "%f",
                                  &(v->value.f)) == 1) {
-                                *val = v;				
+                                *val = v;
                             } else {
                                 xmlSchemaFreeValue(v);
                                 goto return1;
@@ -2078,6 +2085,10 @@
                     } else {
                         v = xmlSchemaNewValue(XML_SCHEMAS_DOUBLE);
                         if (v != NULL) {
+			    /*
+			    * TODO: sscanf seems not to give the correct
+			    * value for extremely high/low values.
+			    */
                             if (sscanf((const char *) value, "%lf",
                                  &(v->value.d)) == 1) {
                                 *val = v;
@@ -2638,7 +2649,7 @@
                 } else if (*cur == '+')
                     cur++;
                 ret = xmlSchemaParseUInt(&cur, &lo, &mi, &hi);
-                if (ret == 0)
+                if (ret == -1)
                     goto return1;
                 if (*cur != 0)
                     goto return1;
@@ -2661,18 +2672,15 @@
                         ((hi != 0) || (mi != 0) || (lo != 0)))
                         goto return1;
                 }
-                /*
-                 * We can store a value only if no overflow occured
-                 */
-                if ((ret > 0) && (val != NULL)) {
+                if (val != NULL) {
                     v = xmlSchemaNewValue(type->builtInType);
                     if (v != NULL) {
                         v->value.decimal.lo = lo;
-                        v->value.decimal.mi = lo;
-                        v->value.decimal.hi = lo;
+                        v->value.decimal.mi = mi;
+                        v->value.decimal.hi = hi;
                         v->value.decimal.sign = sign;
                         v->value.decimal.frac = 0;
-                        v->value.decimal.total = cur - value;
+                        v->value.decimal.total = ret;
                         *val = v;
                     }
                 }
@@ -2682,9 +2690,8 @@
         case XML_SCHEMAS_BYTE:
         case XML_SCHEMAS_SHORT:
         case XML_SCHEMAS_INT:{
-                const xmlChar *cur = value;
+                 const xmlChar *cur = value;
                 unsigned long lo, mi, hi;
-                int total = 0;
                 int sign = 0;
 
                 if (cur == NULL)
@@ -2695,7 +2702,7 @@
                 } else if (*cur == '+')
                     cur++;
                 ret = xmlSchemaParseUInt(&cur, &lo, &mi, &hi);
-                if (ret <= 0)
+                if (ret < 0)
                     goto return1;
                 if (*cur != 0)
                     goto return1;
@@ -2742,11 +2749,11 @@
                     v = xmlSchemaNewValue(type->builtInType);
                     if (v != NULL) {
                         v->value.decimal.lo = lo;
-                        v->value.decimal.mi = lo;
-                        v->value.decimal.hi = lo;
+                        v->value.decimal.mi = mi;
+                        v->value.decimal.hi = hi;
                         v->value.decimal.sign = sign;
                         v->value.decimal.frac = 0;
-                        v->value.decimal.total = total;
+                        v->value.decimal.total = ret;
                         *val = v;
                     }
                 }
@@ -2758,12 +2765,11 @@
         case XML_SCHEMAS_UBYTE:{
                 const xmlChar *cur = value;
                 unsigned long lo, mi, hi;
-                int total = 0;
 
                 if (cur == NULL)
                     goto return1;
                 ret = xmlSchemaParseUInt(&cur, &lo, &mi, &hi);
-                if (ret <= 0)
+                if (ret < 0)
                     goto return1;
                 if (*cur != 0)
                     goto return1;
@@ -2806,7 +2812,7 @@
                         v->value.decimal.hi = hi;
                         v->value.decimal.sign = 0;
                         v->value.decimal.frac = 0;
-                        v->value.decimal.total = total;
+                        v->value.decimal.total = ret;
                         *val = v;
                     }
                 }
@@ -3697,22 +3703,16 @@
  * case of error
  */
 static int
-xmlSchemaComparePreserveReplaceStrings(xmlSchemaValPtr x, xmlSchemaValPtr y,
+xmlSchemaComparePreserveReplaceStrings(const xmlChar *x,
+				       const xmlChar *y,
 				       int invert)
 {
-    const xmlChar *utf1;
-    const xmlChar *utf2;
     int tmp;
-
-    if ((x == NULL) || (y == NULL))
-	return(-2);
-    utf1 = x->value.str;
-    utf2 = y->value.str;
     
-    while ((*utf1 != 0) && (*utf2 != 0)) {
-	if (IS_WSP_REPLACE_CH(*utf2)) {
-	    if (! IS_WSP_SPACE_CH(*utf1)) {
-		if ((*utf1 - 0x20) < 0) {
+    while ((*x != 0) && (*y != 0)) {
+	if (IS_WSP_REPLACE_CH(*y)) {
+	    if (! IS_WSP_SPACE_CH(*x)) {
+		if ((*x - 0x20) < 0) {
 		    if (invert)
 			return(1);
 		    else
@@ -3725,7 +3725,7 @@
 		}
 	    }	    
 	} else {
-	    tmp = *utf1 - *utf2;
+	    tmp = *x - *y;
 	    if (tmp < 0) {
 		if (invert)
 		    return(1);
@@ -3739,16 +3739,16 @@
 		    return(1);
 	    }
 	}
-	utf1++;
-	utf2++;
+	x++;
+	y++;
     }
-    if (*utf1 != 0) {
+    if (*x != 0) {
 	if (invert)
 	    return(-1);
 	else
 	    return(1);
     }
-    if (*utf2 != 0) {
+    if (*y != 0) {
 	if (invert)
 	    return(1);
 	else
@@ -3771,31 +3771,25 @@
  * case of error
  */
 static int
-xmlSchemaComparePreserveCollapseStrings(xmlSchemaValPtr x, xmlSchemaValPtr y,
+xmlSchemaComparePreserveCollapseStrings(const xmlChar *x,
+				        const xmlChar *y,
 					int invert)
 {
-    const xmlChar *utf1;
-    const xmlChar *utf2;
     int tmp;
 
-    if ((x == NULL) || (y == NULL))
-	return(-2);
-    utf1 = x->value.str;
-    utf2 = y->value.str;
-
     /* 
     * Skip leading blank chars of the collapsed string.
     */
-    while (IS_WSP_SPACE_CH(*utf2) || IS_WSP_REPLACE_CH(*utf2))
-	utf2++;
+    while IS_WSP_BLANK_CH(*y)
+	y++;
 
-    while ((*utf1 != 0) && (*utf2 != 0)) {
-	if (IS_WSP_SPACE_CH(*utf2) || IS_WSP_REPLACE_CH(*utf2)) {
-	    if (! IS_WSP_SPACE_CH(*utf1)) {
+    while ((*x != 0) && (*y != 0)) {
+	if IS_WSP_BLANK_CH(*y) {
+	    if (! IS_WSP_SPACE_CH(*x)) {
 		/*
-		* The utf2 character would have been replaced to 0x20.
+		* The yv character would have been replaced to 0x20.
 		*/
-		if ((*utf1 - 0x20) < 0) {
+		if ((*x - 0x20) < 0) {
 		    if (invert)
 			return(1);
 		    else
@@ -3807,15 +3801,15 @@
 			return(1);
 		}
 	    }
-	    utf1++;
-	    utf2++;
+	    x++;
+	    y++;
 	    /*
 	    * Skip contiguous blank chars of the collapsed string.
 	    */
-	    while (IS_WSP_SPACE_CH(*utf2) || IS_WSP_REPLACE_CH(*utf2))
-		utf2++;
+	    while IS_WSP_BLANK_CH(*y)
+		y++;
 	} else {
-	    tmp = *utf1++ - *utf2++;
+	    tmp = *x++ - *y++;
 	    if (tmp < 0) {
 		if (invert)
 		    return(1);
@@ -3830,19 +3824,19 @@
 	    }
 	}
     }
-    if (*utf1 != 0) {
+    if (*x != 0) {
 	 if (invert)
 	     return(-1);
 	 else
 	     return(1);
     }
-    if (*utf2 != 0) {
+    if (*y != 0) {
 	/*
 	* Skip trailing blank chars of the collapsed string.
 	*/
-	while (IS_WSP_SPACE_CH(*utf2) || IS_WSP_REPLACE_CH(*utf2))
-	    utf2++;
-	if (*utf2 != 0) {
+	while IS_WSP_BLANK_CH(*y)
+	    y++;
+	if (*y != 0) {
 	    if (invert)
 		return(1);
 	    else
@@ -3866,31 +3860,25 @@
  * case of error
  */
 static int
-xmlSchemaCompareReplaceCollapseStrings(xmlSchemaValPtr x, xmlSchemaValPtr y,
+xmlSchemaCompareReplaceCollapseStrings(const xmlChar *x,
+				       const xmlChar *y,
 				       int invert)
 {
-    const xmlChar *utf1;
-    const xmlChar *utf2;
     int tmp;
 
-    if ((x == NULL) || (y == NULL))
-	return(-2);
-    utf1 = x->value.str;
-    utf2 = y->value.str;
-
     /* 
     * Skip leading blank chars of the collapsed string.
     */
-    while (IS_WSP_SPACE_CH(*utf2) || IS_WSP_REPLACE_CH(*utf2))
-	utf2++;
+    while IS_WSP_BLANK_CH(*y)
+	y++;
     
-    while ((*utf1 != 0) && (*utf2 != 0)) {
-	if (IS_WSP_SPACE_CH(*utf2) || IS_WSP_REPLACE_CH(*utf2)) {
-	    if (! (IS_WSP_SPACE_CH(*utf1) || IS_WSP_REPLACE_CH(*utf1))) {
+    while ((*x != 0) && (*y != 0)) {
+	if IS_WSP_BLANK_CH(*y) {
+	    if (! IS_WSP_BLANK_CH(*x)) {
 		/*
-		* The utf2 character would have been replaced to 0x20.
+		* The yv character would have been replaced to 0x20.
 		*/
-		if ((*utf1 - 0x20) < 0) {
+		if ((*x - 0x20) < 0) {
 		    if (invert)
 			return(1);
 		    else
@@ -3902,19 +3890,19 @@
 			return(1);
 		}
 	    }
-	    utf1++;
-	    utf2++;	    
+	    x++;
+	    y++;	    
 	    /* 
 	    * Skip contiguous blank chars of the collapsed string.
 	    */
-	    while (IS_WSP_SPACE_CH(*utf2) || IS_WSP_REPLACE_CH(*utf2))
-		utf2++;
+	    while IS_WSP_BLANK_CH(*y)
+		y++;
 	} else {
-	    if (IS_WSP_SPACE_CH(*utf1) || IS_WSP_REPLACE_CH(*utf1)) {
+	    if IS_WSP_BLANK_CH(*x) {
 		/*
-		* The utf1 character would have been replaced to 0x20.
+		* The xv character would have been replaced to 0x20.
 		*/
-		if ((0x20 - *utf2) < 0) {
+		if ((0x20 - *y) < 0) {
 		    if (invert)
 			return(1);
 		    else
@@ -3926,26 +3914,26 @@
 			return(1);
 		}
 	    }
-	    tmp = *utf1++ - *utf2++;
+	    tmp = *x++ - *y++;
 	    if (tmp < 0)
 		return(-1);
 	    if (tmp > 0)
 		return(1);
 	}
     }
-    if (*utf1 != 0) {
+    if (*x != 0) {
 	 if (invert)
 	     return(-1);
 	 else
 	     return(1);
     }   
-    if (*utf2 != 0) {
+    if (*y != 0) {
 	/*
 	* Skip trailing blank chars of the collapsed string.
 	*/
-	while (IS_WSP_SPACE_CH(*utf2) || IS_WSP_REPLACE_CH(*utf2))
-	    utf2++;
-	if (*utf2 != 0) {
+	while IS_WSP_BLANK_CH(*y)
+	    y++;
+	if (*y != 0) {
 	    if (invert)
 		return(1);
 	    else
@@ -3967,44 +3955,38 @@
  * case of error
  */
 static int
-xmlSchemaCompareReplacedStrings(xmlSchemaValPtr x, xmlSchemaValPtr y)
+xmlSchemaCompareReplacedStrings(const xmlChar *x,
+				const xmlChar *y)
 {
-    const xmlChar *utf1;
-    const xmlChar *utf2;
     int tmp;
-
-    if ((x == NULL) || (y == NULL))
-	return(-2);
-    utf1 = x->value.str;
-    utf2 = y->value.str;
-    
-    while ((*utf1 != 0) && (*utf2 != 0)) {
-	if (IS_WSP_SPACE_CH(*utf2) || IS_WSP_REPLACE_CH(*utf2)) {
-	    if (! (IS_WSP_SPACE_CH(*utf1) || IS_WSP_REPLACE_CH(*utf1))) {
-		if ((*utf1 - 0x20) < 0)
+   
+    while ((*x != 0) && (*y != 0)) {
+	if IS_WSP_BLANK_CH(*y) {
+	    if (! IS_WSP_BLANK_CH(*x)) {
+		if ((*x - 0x20) < 0)
     		    return(-1);
 		else
 		    return(1);
 	    }	    
 	} else {
-	    if (IS_WSP_SPACE_CH(*utf1) || IS_WSP_REPLACE_CH(*utf1)) {
-		if ((0x20 - *utf2) < 0)
+	    if IS_WSP_BLANK_CH(*x) {
+		if ((0x20 - *y) < 0)
     		    return(-1);
 		else
 		    return(1);
 	    }
-	    tmp = *utf1 - *utf2;
+	    tmp = *x - *y;
 	    if (tmp < 0)
     		return(-1);
 	    if (tmp > 0)
     		return(1);
 	}
-	utf1++;
-	utf2++;
+	x++;
+	y++;
     }
-    if (*utf1 != 0)
+    if (*x != 0)
         return(1);
-    if (*utf2 != 0)
+    if (*y != 0)
         return(-1);
     return(0);
 }
@@ -4020,42 +4002,36 @@
  * case of error
  */
 static int
-xmlSchemaCompareNormStrings(xmlSchemaValPtr x, xmlSchemaValPtr y) {
-    const xmlChar *utf1;
-    const xmlChar *utf2;
+xmlSchemaCompareNormStrings(const xmlChar *x,
+			    const xmlChar *y) {
     int tmp;
-
-    if ((x == NULL) || (y == NULL))
-	return(-2);
-    utf1 = x->value.str;
-    utf2 = y->value.str;
     
-    while (IS_BLANK_CH(*utf1)) utf1++;
-    while (IS_BLANK_CH(*utf2)) utf2++;
-    while ((*utf1 != 0) && (*utf2 != 0)) {
-	if (IS_BLANK_CH(*utf1)) {
-	    if (!IS_BLANK_CH(*utf2)) {
-		tmp = *utf1 - *utf2;
+    while (IS_BLANK_CH(*x)) x++;
+    while (IS_BLANK_CH(*y)) y++;
+    while ((*x != 0) && (*y != 0)) {
+	if (IS_BLANK_CH(*x)) {
+	    if (!IS_BLANK_CH(*y)) {
+		tmp = *x - *y;
 		return(tmp);
 	    }
-	    while (IS_BLANK_CH(*utf1)) utf1++;
-	    while (IS_BLANK_CH(*utf2)) utf2++;
+	    while (IS_BLANK_CH(*x)) x++;
+	    while (IS_BLANK_CH(*y)) y++;
 	} else {
-	    tmp = *utf1++ - *utf2++;
+	    tmp = *x++ - *y++;
 	    if (tmp < 0)
 		return(-1);
 	    if (tmp > 0)
 		return(1);
 	}
     }
-    if (*utf1 != 0) {
-	while (IS_BLANK_CH(*utf1)) utf1++;
-	if (*utf1 != 0)
+    if (*x != 0) {
+	while (IS_BLANK_CH(*x)) x++;
+	if (*x != 0)
 	    return(1);
     }
-    if (*utf2 != 0) {
-	while (IS_BLANK_CH(*utf2)) utf2++;
-	if (*utf2 != 0)
+    if (*y != 0) {
+	while (IS_BLANK_CH(*y)) y++;
+	if (*y != 0)
 	    return(-1);
     }
     return(0);
@@ -4137,8 +4113,10 @@
 /**
  * xmlSchemaCompareValues:
  * @x:  a first value
+ * @xvalue: the first value as a string (optional)
  * @xwtsp: the whitespace type
  * @y:  a second value
+ * @xvalue: the second value as a string (optional)
  * @ywtsp: the whitespace type
  *
  * Compare 2 values
@@ -4147,14 +4125,16 @@
  * case of error
  */
 static int
-xmlSchemaCompareValuesInternal(xmlSchemaValPtr x,
+xmlSchemaCompareValuesInternal(xmlSchemaValType xtype,
+			       xmlSchemaValPtr x,
+			       const xmlChar *xvalue,
 			       xmlSchemaWhitespaceValueType xws,
+			       xmlSchemaValType ytype,
 			       xmlSchemaValPtr y,
-			       xmlSchemaWhitespaceValueType yws) {
-    if ((x == NULL) || (y == NULL))
-	return(-2);
-
-    switch (x->type) {
+			       const xmlChar *yvalue,
+			       xmlSchemaWhitespaceValueType yws)
+{
+    switch (xtype) {
 	case XML_SCHEMAS_UNKNOWN:
 	case XML_SCHEMAS_ANYTYPE:
 	    return(-2);
@@ -4172,26 +4152,30 @@
         case XML_SCHEMAS_BYTE:
         case XML_SCHEMAS_UBYTE:
 	case XML_SCHEMAS_DECIMAL:
-	    if (y->type == x->type)
+	    if ((x == NULL) || (y == NULL))
+		return(-2);
+	    if (ytype == xtype)
 		return(xmlSchemaCompareDecimals(x, y));
-	    if ((y->type == XML_SCHEMAS_DECIMAL) ||
-		(y->type == XML_SCHEMAS_INTEGER) ||
-		(y->type == XML_SCHEMAS_NPINTEGER) ||
-		(y->type == XML_SCHEMAS_NINTEGER) ||
-		(y->type == XML_SCHEMAS_NNINTEGER) ||
-		(y->type == XML_SCHEMAS_PINTEGER) ||
-		(y->type == XML_SCHEMAS_INT) ||
-		(y->type == XML_SCHEMAS_UINT) ||
-		(y->type == XML_SCHEMAS_LONG) ||
-		(y->type == XML_SCHEMAS_ULONG) ||
-		(y->type == XML_SCHEMAS_SHORT) ||
-		(y->type == XML_SCHEMAS_USHORT) ||
-		(y->type == XML_SCHEMAS_BYTE) ||
-		(y->type == XML_SCHEMAS_UBYTE))
+	    if ((ytype == XML_SCHEMAS_DECIMAL) ||
+		(ytype == XML_SCHEMAS_INTEGER) ||
+		(ytype == XML_SCHEMAS_NPINTEGER) ||
+		(ytype == XML_SCHEMAS_NINTEGER) ||
+		(ytype == XML_SCHEMAS_NNINTEGER) ||
+		(ytype == XML_SCHEMAS_PINTEGER) ||
+		(ytype == XML_SCHEMAS_INT) ||
+		(ytype == XML_SCHEMAS_UINT) ||
+		(ytype == XML_SCHEMAS_LONG) ||
+		(ytype == XML_SCHEMAS_ULONG) ||
+		(ytype == XML_SCHEMAS_SHORT) ||
+		(ytype == XML_SCHEMAS_USHORT) ||
+		(ytype == XML_SCHEMAS_BYTE) ||
+		(ytype == XML_SCHEMAS_UBYTE))
 		return(xmlSchemaCompareDecimals(x, y));
 	    return(-2);
         case XML_SCHEMAS_DURATION:
-	    if (y->type == XML_SCHEMAS_DURATION)
+	    if ((x == NULL) || (y == NULL))
+		return(-2);
+	    if (ytype == XML_SCHEMAS_DURATION)
                 return(xmlSchemaCompareDurations(x, y));
             return(-2);
         case XML_SCHEMAS_TIME:
@@ -4202,14 +4186,16 @@
         case XML_SCHEMAS_GYEARMONTH:
         case XML_SCHEMAS_DATE:
         case XML_SCHEMAS_DATETIME:
-            if ((y->type == XML_SCHEMAS_DATETIME)  ||
-                (y->type == XML_SCHEMAS_TIME)      ||
-                (y->type == XML_SCHEMAS_GDAY)      ||
-                (y->type == XML_SCHEMAS_GMONTH)    ||
-                (y->type == XML_SCHEMAS_GMONTHDAY) ||
-                (y->type == XML_SCHEMAS_GYEAR)     ||
-                (y->type == XML_SCHEMAS_DATE)      ||
-                (y->type == XML_SCHEMAS_GYEARMONTH))
+	    if ((x == NULL) || (y == NULL))
+		return(-2);
+            if ((ytype == XML_SCHEMAS_DATETIME)  ||
+                (ytype == XML_SCHEMAS_TIME)      ||
+                (ytype == XML_SCHEMAS_GDAY)      ||
+                (ytype == XML_SCHEMAS_GMONTH)    ||
+                (ytype == XML_SCHEMAS_GMONTHDAY) ||
+                (ytype == XML_SCHEMAS_GYEAR)     ||
+                (ytype == XML_SCHEMAS_DATE)      ||
+                (ytype == XML_SCHEMAS_GYEARMONTH))
                 return (xmlSchemaCompareDates(x, y));
             return (-2);
 	/* 
@@ -4229,64 +4215,80 @@
         case XML_SCHEMAS_ENTITY:
         case XML_SCHEMAS_NOTATION:
         case XML_SCHEMAS_ANYURI:
+	{
+	    const xmlChar *xv, *yv;
+
+	    if (x == NULL)
+		xv = xvalue;
+	    else
+		xv = x->value.str;
+	    if (y == NULL)
+		yv = yvalue;
+	    else
+		yv = y->value.str;
 	    /*
 	    * TODO: Compare those against QName.
 	    */
-	    if (y->type == XML_SCHEMAS_QNAME) {
+	    if (ytype == XML_SCHEMAS_QNAME) {		
 		TODO
+		if (y == NULL)
+		    return(-2);    
 		return (-2);
 	    }
-            if ((y->type == XML_SCHEMAS_ANYSIMPLETYPE) ||
-		(y->type == XML_SCHEMAS_STRING) ||
-		(y->type == XML_SCHEMAS_NORMSTRING) ||
-                (y->type == XML_SCHEMAS_TOKEN) ||
-                (y->type == XML_SCHEMAS_LANGUAGE) ||
-                (y->type == XML_SCHEMAS_NMTOKEN) ||
-                (y->type == XML_SCHEMAS_NAME) ||
-                (y->type == XML_SCHEMAS_NCNAME) ||
-                (y->type == XML_SCHEMAS_ID) ||
-                (y->type == XML_SCHEMAS_IDREF) ||
-                (y->type == XML_SCHEMAS_ENTITY) ||
-                (y->type == XML_SCHEMAS_NOTATION) ||
-                (y->type == XML_SCHEMAS_ANYURI)) {
+            if ((ytype == XML_SCHEMAS_ANYSIMPLETYPE) ||
+		(ytype == XML_SCHEMAS_STRING) ||
+		(ytype == XML_SCHEMAS_NORMSTRING) ||
+                (ytype == XML_SCHEMAS_TOKEN) ||
+                (ytype == XML_SCHEMAS_LANGUAGE) ||
+                (ytype == XML_SCHEMAS_NMTOKEN) ||
+                (ytype == XML_SCHEMAS_NAME) ||
+                (ytype == XML_SCHEMAS_NCNAME) ||
+                (ytype == XML_SCHEMAS_ID) ||
+                (ytype == XML_SCHEMAS_IDREF) ||
+                (ytype == XML_SCHEMAS_ENTITY) ||
+                (ytype == XML_SCHEMAS_NOTATION) ||
+                (ytype == XML_SCHEMAS_ANYURI)) {
 
 		if (xws == XML_SCHEMA_WHITESPACE_PRESERVE) {
 
 		    if (yws == XML_SCHEMA_WHITESPACE_PRESERVE) {
 			/* TODO: What about x < y or x > y. */
-			if (xmlStrEqual(x->value.str, y->value.str))
+			if (xmlStrEqual(xv, yv))
 			    return (0);
 			else 
 			    return (2);
 		    } else if (yws == XML_SCHEMA_WHITESPACE_REPLACE)
-			return (xmlSchemaComparePreserveReplaceStrings(x, y, 0));
+			return (xmlSchemaComparePreserveReplaceStrings(xv, yv, 0));
 		    else if (yws == XML_SCHEMA_WHITESPACE_COLLAPSE)
-			return (xmlSchemaComparePreserveCollapseStrings(x, y, 0));
+			return (xmlSchemaComparePreserveCollapseStrings(xv, yv, 0));
 
 		} else if (xws == XML_SCHEMA_WHITESPACE_REPLACE) {
 
 		    if (yws == XML_SCHEMA_WHITESPACE_PRESERVE)
-			return (xmlSchemaComparePreserveReplaceStrings(y, x, 1));
+			return (xmlSchemaComparePreserveReplaceStrings(yv, xv, 1));
 		    if (yws == XML_SCHEMA_WHITESPACE_REPLACE)
-			return (xmlSchemaCompareReplacedStrings(x, y));
+			return (xmlSchemaCompareReplacedStrings(xv, yv));
 		    if (yws == XML_SCHEMA_WHITESPACE_COLLAPSE)
-			return (xmlSchemaCompareReplaceCollapseStrings(x, y, 0));
+			return (xmlSchemaCompareReplaceCollapseStrings(xv, yv, 0));
 
 		} else if (xws == XML_SCHEMA_WHITESPACE_COLLAPSE) {
 
 		    if (yws == XML_SCHEMA_WHITESPACE_PRESERVE)
-			return (xmlSchemaComparePreserveCollapseStrings(y, x, 1));
+			return (xmlSchemaComparePreserveCollapseStrings(yv, xv, 1));
 		    if (yws == XML_SCHEMA_WHITESPACE_REPLACE)
-			return (xmlSchemaCompareReplaceCollapseStrings(y, x, 1));
+			return (xmlSchemaCompareReplaceCollapseStrings(yv, xv, 1));
 		    if (yws == XML_SCHEMA_WHITESPACE_COLLAPSE)
-			return (xmlSchemaCompareNormStrings(x, y));
+			return (xmlSchemaCompareNormStrings(xv, yv));
 		} else
 		    return (-2);
                 
 	    }
             return (-2);
+	}
         case XML_SCHEMAS_QNAME:
-            if (y->type == XML_SCHEMAS_QNAME) {
+	    if ((x == NULL) || (y == NULL))
+		return(-2);
+            if (ytype == XML_SCHEMAS_QNAME) {
 		if ((xmlStrEqual(x->value.qname.name, y->value.qname.name)) &&
 		    (xmlStrEqual(x->value.qname.uri, y->value.qname.uri)))
 		    return(0);
@@ -4295,12 +4297,16 @@
 	    return (-2);
         case XML_SCHEMAS_FLOAT:
         case XML_SCHEMAS_DOUBLE:
-            if ((y->type == XML_SCHEMAS_FLOAT) ||
-                (y->type == XML_SCHEMAS_DOUBLE))
+	    if ((x == NULL) || (y == NULL))
+		return(-2);
+            if ((ytype == XML_SCHEMAS_FLOAT) ||
+                (ytype == XML_SCHEMAS_DOUBLE))
                 return (xmlSchemaCompareFloats(x, y));
             return (-2);
         case XML_SCHEMAS_BOOLEAN:
-            if (y->type == XML_SCHEMAS_BOOLEAN) {
+	    if ((x == NULL) || (y == NULL))
+		return(-2);
+            if (ytype == XML_SCHEMAS_BOOLEAN) {
 		if (x->value.b == y->value.b)
 		    return(0);
 		if (x->value.b == 0)
@@ -4309,7 +4315,9 @@
 	    }
 	    return (-2);
         case XML_SCHEMAS_HEXBINARY:
-            if (y->type == XML_SCHEMAS_HEXBINARY) {
+	    if ((x == NULL) || (y == NULL))
+		return(-2);
+            if (ytype == XML_SCHEMAS_HEXBINARY) {
 	        if (x->value.hex.total == y->value.hex.total) {
 		    int ret = xmlStrcmp(x->value.hex.str, y->value.hex.str);
 		    if (ret > 0)
@@ -4324,7 +4332,9 @@
             }
             return (-2);
         case XML_SCHEMAS_BASE64BINARY:
-            if (y->type == XML_SCHEMAS_BASE64BINARY) {
+	    if ((x == NULL) || (y == NULL))
+		return(-2);
+            if (ytype == XML_SCHEMAS_BASE64BINARY) {
                 if (x->value.base64.total == y->value.base64.total) {
                     int ret = xmlStrcmp(x->value.base64.str,
 		                        y->value.base64.str);
@@ -4378,7 +4388,8 @@
     else
         yws = XML_SCHEMA_WHITESPACE_COLLAPSE;
 
-    return(xmlSchemaCompareValuesInternal(x, xws, y, yws));
+    return(xmlSchemaCompareValuesInternal(x->type, x, NULL, xws, y->type,
+	y, NULL, yws));
 }
 
 /**
@@ -4395,13 +4406,43 @@
  */
 int
 xmlSchemaCompareValuesWhtsp(xmlSchemaValPtr x,
-				 xmlSchemaWhitespaceValueType xws,
-				 xmlSchemaValPtr y,
-				 xmlSchemaWhitespaceValueType yws) {
-    return(xmlSchemaCompareValuesInternal(x, xws, y, yws));
+			    xmlSchemaWhitespaceValueType xws,
+			    xmlSchemaValPtr y,
+			    xmlSchemaWhitespaceValueType yws)
+{
+    if ((x == NULL) || (y == NULL))
+	return(-2);
+    return(xmlSchemaCompareValuesInternal(x->type, x, NULL, xws, y->type,
+	y, NULL, yws));
 }
 
 /**
+ * xmlSchemaCompareValuesWhtspExt:
+ * @x:  a first value
+ * @xws: the whitespace value of x
+ * @y:  a second value
+ * @yws: the whitespace value of y
+ *
+ * Compare 2 values
+ *
+ * Returns -1 if x < y, 0 if x == y, 1 if x > y, 2 if x <> y, and -2 in
+ * case of error
+ */
+static int
+xmlSchemaCompareValuesWhtspExt(xmlSchemaValType xtype,
+			       xmlSchemaValPtr x,
+			       const xmlChar *xvalue,
+			       xmlSchemaWhitespaceValueType xws,
+			       xmlSchemaValType ytype,
+			       xmlSchemaValPtr y,
+			       const xmlChar *yvalue,
+			       xmlSchemaWhitespaceValueType yws)
+{
+    return(xmlSchemaCompareValuesInternal(xtype, x, xvalue, xws, ytype, y,
+	yvalue, yws));
+}
+
+/**
  * xmlSchemaNormLen:
  * @value:  a string
  *
@@ -4492,19 +4533,19 @@
     */
     if (facet->type == XML_SCHEMA_FACET_LENGTH) {
 	if (actualLen != facet->val->value.decimal.lo) {
-	    if (expectedLen != 0)
+	    if (expectedLen != NULL)
 		*expectedLen = facet->val->value.decimal.lo;
 	    return (XML_SCHEMAV_CVC_LENGTH_VALID);
 	}	
     } else if (facet->type == XML_SCHEMA_FACET_MINLENGTH) {
 	if (actualLen < facet->val->value.decimal.lo) {
-	    if (expectedLen != 0)
+	    if (expectedLen != NULL)
 		*expectedLen = facet->val->value.decimal.lo;
 	    return (XML_SCHEMAV_CVC_MINLENGTH_VALID);
 	}
     } else if (facet->type == XML_SCHEMA_FACET_MAXLENGTH) {
 	if (actualLen > facet->val->value.decimal.lo) {
-	    if (expectedLen != 0)
+	    if (expectedLen != NULL)
 		*expectedLen = facet->val->value.decimal.lo;
 	    return (XML_SCHEMAV_CVC_MAXLENGTH_VALID);
 	}
@@ -4524,6 +4565,7 @@
  * @facet:  the facet to check
  * @value:  the lexical repr. of the value to be validated
  * @val:  the precomputed value
+ * @ws: the whitespace type of the value
  * @length: the actual length of the value
  *
  * Checka a value against a "length", "minLength" and "maxLength" 
@@ -4532,16 +4574,17 @@
  * Returns 0 if the value is valid, a positive error code
  * otherwise and -1 in case of an internal or API error.
  */
-int
-xmlSchemaValidateLengthFacet(xmlSchemaTypePtr type, 
-			     xmlSchemaFacetPtr facet,
-			     const xmlChar *value,
-			     xmlSchemaValPtr val,
-			     unsigned long *length)  
+static int
+xmlSchemaValidateLengthFacetInternal(xmlSchemaFacetPtr facet,
+				     xmlSchemaTypeType valType,
+				     const xmlChar *value,
+				     xmlSchemaValPtr val,				     
+				     unsigned long *length,
+				     xmlSchemaWhitespaceValueType ws)  
 {
     unsigned int len = 0;
 
-    if ((length == NULL) || (facet == NULL) || (type == NULL))
+    if ((length == NULL) || (facet == NULL))
         return (-1);
     *length = 0;
     if ((facet->type != XML_SCHEMA_FACET_LENGTH) &&
@@ -4549,6 +4592,10 @@
 	(facet->type != XML_SCHEMA_FACET_MINLENGTH))
 	return (-1);
 	
+    /*
+    * TODO: length, maxLength and minLength must be of type
+    * nonNegativeInteger only. Check if decimal is used somehow.
+    */
     if ((facet->val == NULL) ||
 	((facet->val->type != XML_SCHEMAS_DECIMAL) &&
 	 (facet->val->type != XML_SCHEMAS_NNINTEGER)) ||
@@ -4560,30 +4607,52 @@
     else if ((val != NULL) && (val->type == XML_SCHEMAS_BASE64BINARY))
 	len = val->value.base64.total;
     else {
-	switch (type->builtInType) {
+	switch (valType) {
+	    case XML_SCHEMAS_STRING:
+	    case XML_SCHEMAS_NORMSTRING:
+		if (ws == XML_SCHEMA_WHITESPACE_UNKNOWN) {
+		    /*
+		    * This is to ensure API compatibility with the old
+		    * xmlSchemaValidateLengthFacet(). Anyway, this was and
+		    * is not the correct handling.
+		    * TODO: Get rid of this case somehow.
+		    */
+		    if (valType == XML_SCHEMAS_STRING)
+			len = xmlUTF8Strlen(value);
+		    else
+			len = xmlSchemaNormLen(value);
+		} else if (value != NULL) {
+		    if (ws == XML_SCHEMA_WHITESPACE_COLLAPSE)
+			len = xmlSchemaNormLen(value);
+		    else
+		    /* 
+		    * Should be OK for "preserve" as well.
+		    */
+		    len = xmlUTF8Strlen(value);
+		}
+		break;
 	    case XML_SCHEMAS_IDREF:
-	    case XML_SCHEMAS_NORMSTRING:
 	    case XML_SCHEMAS_TOKEN:
 	    case XML_SCHEMAS_LANGUAGE:
 	    case XML_SCHEMAS_NMTOKEN:
 	    case XML_SCHEMAS_NAME:
 	    case XML_SCHEMAS_NCNAME:
 	    case XML_SCHEMAS_ID:
-		len = xmlSchemaNormLen(value);
-		break;
-	    case XML_SCHEMAS_STRING:
 	    /*
 	    * FIXME: What exactly to do with anyURI?
-	    */
+		*/
 	    case XML_SCHEMAS_ANYURI:
 		if (value != NULL)
-		    len = xmlUTF8Strlen(value);
+		    len = xmlSchemaNormLen(value);
 		break;
 	    default:
 		TODO
 	}
     }
     *length = (unsigned long) len;
+    /*
+    * TODO: Return the whole expected value, i.e. "lo", "mi" and "hi".
+    */
     if (facet->type == XML_SCHEMA_FACET_LENGTH) {
 	if (len != facet->val->value.decimal.lo)
 	    return(XML_SCHEMAV_CVC_LENGTH_VALID);
@@ -4599,74 +4668,128 @@
 }
 
 /**
- * xmlSchemaValidateFacet:
- * @base:  the base type
+ * xmlSchemaValidateLengthFacet:
+ * @type:  the built-in type
  * @facet:  the facet to check
+ * @value:  the lexical repr. of the value to be validated
+ * @val:  the precomputed value
+ * @length: the actual length of the value
+ *
+ * Checka a value against a "length", "minLength" and "maxLength" 
+ * facet; sets @length to the computed length of @value.
+ *
+ * Returns 0 if the value is valid, a positive error code
+ * otherwise and -1 in case of an internal or API error.
+ */
+int
+xmlSchemaValidateLengthFacet(xmlSchemaTypePtr type, 
+			     xmlSchemaFacetPtr facet,
+			     const xmlChar *value,
+			     xmlSchemaValPtr val,
+			     unsigned long *length)  
+{
+    if (type == NULL)
+        return(-1);
+    return (xmlSchemaValidateLengthFacetInternal(facet,
+	type->builtInType, value, val, length,
+	XML_SCHEMA_WHITESPACE_UNKNOWN));
+}
+
+/**
+ * xmlSchemaValidateLengthFacetWhtsp: 
+ * @facet:  the facet to check
+ * @valType:  the built-in type
+ * @value:  the lexical repr. of the value to be validated
+ * @val:  the precomputed value
+ * @ws: the whitespace type of the value
+ * @length: the actual length of the value
+ *
+ * Checka a value against a "length", "minLength" and "maxLength" 
+ * facet; sets @length to the computed length of @value.
+ *
+ * Returns 0 if the value is valid, a positive error code
+ * otherwise and -1 in case of an internal or API error.
+ */
+int
+xmlSchemaValidateLengthFacetWhtsp(xmlSchemaFacetPtr facet,
+				  xmlSchemaValType valType,
+				  const xmlChar *value,
+				  xmlSchemaValPtr val,
+				  unsigned long *length,
+				  xmlSchemaWhitespaceValueType ws)
+{
+    return (xmlSchemaValidateLengthFacetInternal(facet, valType, value, val,
+	length, ws));
+}
+
+/**
+ * xmlSchemaValidateFacetInternal:
+ * @facet:  the facet to check
+ * @fws: the whitespace type of the facet's value
+ * @valType: the built-in type of the value
  * @value:  the lexical repr of the value to validate
  * @val:  the precomputed value
+ * @ws: the whitespace type of the value
  *
  * Check a value against a facet condition
  *
  * Returns 0 if the element is schemas valid, a positive error code
  *     number otherwise and -1 in case of internal or API error.
  */
-int
-xmlSchemaValidateFacet(xmlSchemaTypePtr base ATTRIBUTE_UNUSED,
-	               xmlSchemaFacetPtr facet,
-	               const xmlChar *value, xmlSchemaValPtr val)
+static int
+xmlSchemaValidateFacetInternal(xmlSchemaFacetPtr facet,
+			       xmlSchemaWhitespaceValueType fws,
+			       xmlSchemaValType valType,			       
+			       const xmlChar *value,
+			       xmlSchemaValPtr val,
+			       xmlSchemaWhitespaceValueType ws)
 {
     int ret;
 
-    if ((facet == NULL) || (value == NULL))
-        return(-1);
+    if (facet == NULL)
+	return(-1);
+
     switch (facet->type) {
 	case XML_SCHEMA_FACET_PATTERN:
+	    /* 
+	    * NOTE that for patterns, the @value needs to be the normalized
+	    * value, *not* the lexical initial value or the canonical value.
+	    */
+	    if (value == NULL)
+		return(-1);
 	    ret = xmlRegexpExec(facet->regexp, value);
 	    if (ret == 1)
 		return(0);
-	    if (ret == 0) {
+	    if (ret == 0)
 		return(XML_SCHEMAV_CVC_PATTERN_VALID);
-	    }
 	    return(ret);
 	case XML_SCHEMA_FACET_MAXEXCLUSIVE:
 	    ret = xmlSchemaCompareValues(val, facet->val);
-	    if (ret == -2) {
-		/* TODO error code */
+	    if (ret == -2)
 		return(-1);
-	    }
 	    if (ret == -1)
 		return(0);
-	    /* error code */
 	    return(XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID);
 	case XML_SCHEMA_FACET_MAXINCLUSIVE:
 	    ret = xmlSchemaCompareValues(val, facet->val);
-	    if (ret == -2) {
-		/* TODO error code */
+	    if (ret == -2)
 		return(-1);
-	    }
 	    if ((ret == -1) || (ret == 0))
 		return(0);
-	    /* error code */
 	    return(XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID);
 	case XML_SCHEMA_FACET_MINEXCLUSIVE:
 	    ret = xmlSchemaCompareValues(val, facet->val);
-	    if (ret == -2) {
-		/* TODO error code */
+	    if (ret == -2)
 		return(-1);
-	    }
 	    if (ret == 1)
 		return(0);
-	    /* error code */
 	    return(XML_SCHEMAV_CVC_MINEXCLUSIVE_VALID);
 	case XML_SCHEMA_FACET_MININCLUSIVE:
 	    ret = xmlSchemaCompareValues(val, facet->val);
-	    if (ret == -2) {
-		/* TODO error code */
+	    if (ret == -2)
 		return(-1);
-	    }
 	    if ((ret == 1) || (ret == 0))
 		return(0);
-	    /* error code */
 	    return(XML_SCHEMAV_CVC_MININCLUSIVE_VALID);
 	case XML_SCHEMA_FACET_WHITESPACE:
 	    /* TODO whitespaces */
@@ -4677,15 +4800,42 @@
 	    */
 	    return(0);
 	case  XML_SCHEMA_FACET_ENUMERATION:
-	    if ((facet->value != NULL) &&
-		(xmlStrEqual(facet->value, value)))
-		return(0);
+	    if (ws == XML_SCHEMA_WHITESPACE_UNKNOWN) {
+		/*
+		* This is to ensure API compatibility with the old
+		* xmlSchemaValidateFacet().
+		* TODO: Get rid of this case.
+		*/
+		if ((facet->value != NULL) &&
+		    (xmlStrEqual(facet->value, value)))
+		    return(0);
+	    } else {
+		ret = xmlSchemaCompareValuesWhtspExt(facet->val->type,
+		    facet->val, facet->value, fws, valType, val,
+		    value, ws);
+		if (ret == -2)
+		    return(-1);
+		if (ret == 0)
+		    return(0);
+	    }
 	    return(XML_SCHEMAV_CVC_ENUMERATION_VALID);
 	case XML_SCHEMA_FACET_LENGTH:
+	    /*
+	    * SPEC (1.3) "if {primitive type definition} is QName or NOTATION,
+	    * then any {value} is facet-valid."
+	    */
+	    if ((valType == XML_SCHEMAS_QNAME) ||
+		(valType == XML_SCHEMAS_NOTATION))
+		return (0);
+	    /* No break on purpose. */
 	case XML_SCHEMA_FACET_MAXLENGTH:
 	case XML_SCHEMA_FACET_MINLENGTH: {
 	    unsigned int len = 0;
 
+	    /*
+	    * TODO: length, maxLength and minLength must be of type
+	    * nonNegativeInteger only. Check if decimal is used somehow.
+	    */
 	    if ((facet->val == NULL) ||
 		((facet->val->type != XML_SCHEMAS_DECIMAL) &&
 		 (facet->val->type != XML_SCHEMAS_NNINTEGER)) ||
@@ -4697,25 +4847,41 @@
 	    else if ((val != NULL) && (val->type == XML_SCHEMAS_BASE64BINARY))
 		len = val->value.base64.total;
 	    else {
-		switch (base->builtInType) {
-	    	    case XML_SCHEMAS_IDREF:
-		    case XML_SCHEMAS_NORMSTRING:
+		switch (valType) {
+		    case XML_SCHEMAS_STRING:
+		    case XML_SCHEMAS_NORMSTRING:			
+			if (ws == XML_SCHEMA_WHITESPACE_UNKNOWN) {
+			    /*
+			    * This is to ensure API compatibility with the old
+			    * xmlSchemaValidateFacet(). Anyway, this was and
+			    * is not the correct handling.
+			    * TODO: Get rid of this case somehow.
+			    */
+			    if (valType == XML_SCHEMAS_STRING)
+				len = xmlUTF8Strlen(value);
+			    else
+				len = xmlSchemaNormLen(value);
+			} else if (value != NULL) {
+			    if (ws == XML_SCHEMA_WHITESPACE_COLLAPSE)
+				len = xmlSchemaNormLen(value);
+			    else
+				/* 
+				* Should be OK for "preserve" as well.
+				*/
+				len = xmlUTF8Strlen(value);
+			}
+			break;
+	    	    case XML_SCHEMAS_IDREF:		    
 		    case XML_SCHEMAS_TOKEN:
 		    case XML_SCHEMAS_LANGUAGE:
 		    case XML_SCHEMAS_NMTOKEN:
 		    case XML_SCHEMAS_NAME:
 		    case XML_SCHEMAS_NCNAME:
 		    case XML_SCHEMAS_ID:
-		    	len = xmlSchemaNormLen(value);
-		    	break;
-		    case XML_SCHEMAS_STRING:
-		    /*
-		    * FIXME: What exactly to do with anyURI?
-		    */
 		    case XML_SCHEMAS_ANYURI:
-		        if (value != NULL)
-			    len = xmlUTF8Strlen(value);
-		    	break;
+			if (value != NULL)
+		    	    len = xmlSchemaNormLen(value);
+		    	break;		   
 		    default:
 		        TODO
 	    	}
@@ -4775,15 +4941,80 @@
 }
 
 /**
+ * xmlSchemaValidateFacet:
+ * @base:  the base type
+ * @facet:  the facet to check
+ * @value:  the lexical repr of the value to validate
+ * @val:  the precomputed value
+ *
+ * Check a value against a facet condition
+ *
+ * Returns 0 if the element is schemas valid, a positive error code
+ *     number otherwise and -1 in case of internal or API error.
+ */
+int
+xmlSchemaValidateFacet(xmlSchemaTypePtr base,
+	               xmlSchemaFacetPtr facet,
+	               const xmlChar *value,
+		       xmlSchemaValPtr val)
+{
+    /*
+    * This tries to ensure API compatibility regarding the old
+    * xmlSchemaValidateFacet() and the new xmlSchemaValidateFacetInternal() and
+    * xmlSchemaValidateFacetWhtsp().
+    */
+    if (val != NULL)
+	return(xmlSchemaValidateFacetInternal(facet,
+	    XML_SCHEMA_WHITESPACE_UNKNOWN, val->type, value, val,
+	    XML_SCHEMA_WHITESPACE_UNKNOWN));
+    else if (base != NULL)
+	return(xmlSchemaValidateFacetInternal(facet,
+	    XML_SCHEMA_WHITESPACE_UNKNOWN, base->builtInType, value, val,
+	    XML_SCHEMA_WHITESPACE_UNKNOWN));
+    return(-1);
+}
+
+/**
+ * xmlSchemaValidateFacetWhtsp:
+ * @facet:  the facet to check
+ * @fws: the whitespace type of the facet's value
+ * @valType: the built-in type of the value
+ * @value:  the lexical (or normalized for pattern) repr of the value to validate
+ * @val:  the precomputed value
+ * @ws: the whitespace type of the value
+ *
+ * Check a value against a facet condition. This takes value normalization
+ * according to the specified whitespace types into account.
+ * Note that @value needs to be the *normalized* value if the facet
+ * is of type "pattern".
+ *
+ * Returns 0 if the element is schemas valid, a positive error code
+ *     number otherwise and -1 in case of internal or API error.
+ */
+int
+xmlSchemaValidateFacetWhtsp(xmlSchemaFacetPtr facet,
+			    xmlSchemaWhitespaceValueType fws,
+			    xmlSchemaValType valType,			    
+			    const xmlChar *value,
+			    xmlSchemaValPtr val,
+			    xmlSchemaWhitespaceValueType ws)
+{
+     return(xmlSchemaValidateFacetInternal(facet, fws, valType,
+	 value, val, ws));
+}
+
+/**
  * xmlSchemaGetCanonValue:
  * @val: the precomputed value
  * @retValue: the returned value
  *
- * Get a the cononical representation of the value.
+ * Get a the cononical lexical representation of the value.
  * The caller has to free the returned retValue.
+ * WARNING: Some value types are not supported yet, resulting
+ * in a @retValue of "???".
  *
  * Returns 0 if the value could be built and -1 in case of
- *         API errors or if the value type is not supported yet.
+ *         API errors.
  */
 int
 xmlSchemaGetCanonValue(xmlSchemaValPtr val, const xmlChar **retValue)
@@ -4792,32 +5023,82 @@
 	return (-1);
     *retValue = NULL;
     switch (val->type) {
-	case XML_SCHEMAS_STRING:	
+	case XML_SCHEMAS_STRING:
+	    if (val->value.str == NULL)
+		*retValue = BAD_CAST xmlStrdup(BAD_CAST "");
+	    else
+		*retValue = 
+		    BAD_CAST xmlStrdup((const xmlChar *) val->value.str);
+	    break;
 	case XML_SCHEMAS_NORMSTRING:
-	/*
+	    if (val->value.str == NULL)
+		*retValue = BAD_CAST xmlStrdup(BAD_CAST "");
+	    else {
+		*retValue = xmlSchemaWhiteSpaceReplace(
+		    (const xmlChar *) val->value.str);
+		if ((*retValue) == NULL)
+		    *retValue = BAD_CAST xmlStrdup(
+			(const xmlChar *) val->value.str);
+	    }
+	    break;
 	case XML_SCHEMAS_TOKEN:
 	case XML_SCHEMAS_LANGUAGE:
 	case XML_SCHEMAS_NMTOKEN:
-	case XML_SCHEMAS_NAME:
-	case XML_SCHEMAS_QNAME:
+	case XML_SCHEMAS_NAME:	
 	case XML_SCHEMAS_NCNAME:
 	case XML_SCHEMAS_ID:
 	case XML_SCHEMAS_IDREF:
 	case XML_SCHEMAS_ENTITY:
 	case XML_SCHEMAS_NOTATION:
-	case XML_SCHEMAS_ANYURI:
-	*/
+	case XML_SCHEMAS_ANYURI:	
 	    if (val->value.str == NULL)
-		*retValue = NULL;
-	    else
-		/* TODO: This is not yet correct for non-normalized values. */
+		return (-1);
+	    *retValue = 
+		BAD_CAST xmlSchemaCollapseString(BAD_CAST val->value.str);
+	    if (*retValue == NULL)
 		*retValue = 
 		    BAD_CAST xmlStrdup((const xmlChar *) val->value.str);
-	    return (0);
+	    break;
+	case XML_SCHEMAS_QNAME:
+	    /*
+	    * TODO: What exactly to do with QNames?
+	    */
+	    if (val->value.qname.uri == NULL) {
+		*retValue = BAD_CAST xmlStrdup(BAD_CAST val->value.qname.name);
+		return (0);
+	    } else {
+		*retValue = BAD_CAST xmlStrdup(BAD_CAST "{");
+		*retValue = BAD_CAST xmlStrcat((xmlChar *) (*retValue),
+		    BAD_CAST val->value.qname.uri);
+		*retValue = BAD_CAST xmlStrcat((xmlChar *) (*retValue),
+		    BAD_CAST "}");
+		*retValue = BAD_CAST xmlStrcat((xmlChar *) (*retValue),
+		    BAD_CAST val->value.qname.uri);
+	    }
+	    break;
 	default:
-	    return (-1);
+	    *retValue = BAD_CAST xmlStrdup(BAD_CAST "???");
+	    break;
     }
-    return (-1);
+    return (0);
 }
 
+/**
+ * xmlSchemaGetValType:
+ * @val: a schemas value
+ *
+ * Accessor for the type of a value
+ *
+ * Returns the xmlSchemaValType of the value
+ */
+xmlSchemaValType
+xmlSchemaGetValType(xmlSchemaValPtr val)
+{
+    if (val == NULL)
+        return(XML_SCHEMAS_UNKNOWN);
+    return (val->type);
+}
+
+#define bottom_xmlschemastypes
+#include "elfgcchack.h"
 #endif /* LIBXML_SCHEMAS_ENABLED */

Modified: packages/libxml2/branches/upstream/current/xmlstring.c
===================================================================
--- packages/libxml2/branches/upstream/current/xmlstring.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/xmlstring.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -975,3 +975,6 @@
 
     return(xmlUTF8Strndup(utf, len));
 }
+
+#define bottom_xmlstring
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/xmlunicode.c
===================================================================
--- packages/libxml2/branches/upstream/current/xmlunicode.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/xmlunicode.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -3171,4 +3171,6 @@
 }
 
 
+#define bottom_xmlunicode
+#include "elfgcchack.h"
 #endif /* LIBXML_UNICODE_ENABLED */

Modified: packages/libxml2/branches/upstream/current/xmlwriter.c
===================================================================
--- packages/libxml2/branches/upstream/current/xmlwriter.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/xmlwriter.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -4606,4 +4606,6 @@
     return sum;
 }
 
+#define bottom_xmlwriter
+#include "elfgcchack.h"
 #endif

Modified: packages/libxml2/branches/upstream/current/xpath.c
===================================================================
--- packages/libxml2/branches/upstream/current/xpath.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/xpath.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -11753,3 +11753,5 @@
 }
 
 #endif /* LIBXML_XPATH_ENABLED */
+#define bottom_xpath
+#include "elfgcchack.h"

Modified: packages/libxml2/branches/upstream/current/xpointer.c
===================================================================
--- packages/libxml2/branches/upstream/current/xpointer.c	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/xpointer.c	2005-04-04 18:23:13 UTC (rev 398)
@@ -2997,6 +2997,7 @@
     SKIP_BLANKS;
 }
 
-#else
+#define bottom_xpointer
+#include "elfgcchack.h"
 #endif
 

Modified: packages/libxml2/branches/upstream/current/xstc/Makefile.am
===================================================================
--- packages/libxml2/branches/upstream/current/xstc/Makefile.am	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/xstc/Makefile.am	2005-04-04 18:23:13 UTC (rev 398)
@@ -56,6 +56,13 @@
 	   $(TAR) -xzf $(TARBALL) $(TESTDIRS) ;				\
 	   echo "done" ;						\
 	   fi);
+	-@(if [ -x fixup-tests.py ] ; then				\
+	   chmod -R u+w msxsdtest;					\
+	   echo "## Microsoft tests fixups";				\
+	   PYTHONPATH="../python:../python/.libs:..:../libs:$$PYTHONPATH" ;\
+	   export PYTHONPATH;						\
+	   LD_LIBRARY_PATH="$(top_builddir)/.libs:$$LD_LIBRARY_PATH" ;  \
+	   $(PYTHON) fixup-tests.py ; fi)
 
 #
 # The actual test run if present. PYTHONPATH is updated to make sure

Modified: packages/libxml2/branches/upstream/current/xstc/Makefile.in
===================================================================
--- packages/libxml2/branches/upstream/current/xstc/Makefile.in	2005-04-03 17:48:41 UTC (rev 397)
+++ packages/libxml2/branches/upstream/current/xstc/Makefile.in	2005-04-04 18:23:13 UTC (rev 398)
@@ -471,6 +471,13 @@
 	   $(TAR) -xzf $(TARBALL) $(TESTDIRS) ;				\
 	   echo "done" ;						\
 	   fi);
+	-@(if [ -x fixup-tests.py ] ; then				\
+	   chmod -R u+w msxsdtest;					\
+	   echo "## Microsoft tests fixups";				\
+	   PYTHONPATH="../python:../python/.libs:..:../libs:$$PYTHONPATH" ;\
+	   export PYTHONPATH;						\
+	   LD_LIBRARY_PATH="$(top_builddir)/.libs:$$LD_LIBRARY_PATH" ;  \
+	   $(PYTHON) fixup-tests.py ; fi)
 
 #
 # The actual test run if present. PYTHONPATH is updated to make sure




More information about the debian-xml-sgml-commit mailing list